diff --git a/.codecov.yml b/.codecov.yml index 69fdbb3af1369..039fd352c7bbc 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -43,6 +43,7 @@ component_management: statuses: - type: project # in this case every component that doens't have a status defined will have a project type one target: auto + informational: true # resulting status will pass no matter what the coverage is or what other settings are specified. individual_components: - component_id: component_dumpling # this is an identifier that should not be changed name: dumpling # this is a display name, and can be changed freely @@ -64,8 +65,10 @@ flag_management: statuses: - type: project target: auto + informational: true # resulting status will pass no matter what the coverage is or what other settings are specified. - type: patch - target: 85% + target: auto + informational: true # resulting status will pass no matter what the coverage is or what other settings are specified. ignore: - "LICENSES" @@ -76,15 +79,16 @@ ignore: - "cmd/.*" - "docs/.*" - "vendor/.*" - - "ddl/failtest/.*" - - "ddl/testutil/.*" - - "executor/seqtest/.*" - - "metrics/.*" - - "expression/generator/.*" + - "pkg/ddl/failtest/.*" + - "pkg/ddl/testutil/.*" + - "pkg/executor/seqtest/.*" + - "pkg/metrics/.*" + - "pkg/expression/generator/.*" - "br/pkg/mock/.*" - - "testkit/.*" - - "server/internal/testutil/.*" - - "statistics/handle/cache/internal/testutil/.*" - - "session/testutil.go" - - "store/mockstore/unistore/testutil.go" + - "pkg/testkit/.*" + - "pkg/server/internal/testutil/.*" + - "pkg/statistics/handle/cache/internal/testutil/.*" + - "pkg/session/testutil.go" + - "pkg/store/mockstore/unistore/testutil.go" + - "k8s.io/apimachinery/pkg/*" diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 6ba37f8ef01d6..251b45f4aa5f3 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -13,7 +13,7 @@ PR Title Format: Please create an issue first to describe the problem. -There MUST be one line starting with "Issue Number: " and +There MUST be one line starting with "Issue Number: " and linking the relevant issues via the "close" or "ref". For more info, check https://pingcap.github.io/tidb-dev-guide/contribute-to-tidb/contribute-code.html#referring-to-an-issue. @@ -24,7 +24,7 @@ Issue Number: close #xxx Problem Summary: -### What is changed and how it works? +### What changed and how does it work? ### Check List @@ -35,7 +35,7 @@ Tests - [ ] Manual test (add detailed scripts or steps below) - [ ] No need to test > - [ ] I checked and no code files have been changed. - > + > Side effects diff --git a/DEPS.bzl b/DEPS.bzl index 0acaa787ba55d..98d901e535b3e 100644 --- a/DEPS.bzl +++ b/DEPS.bzl @@ -186,19 +186,6 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/alecthomas/kingpin/v2/com_github_alecthomas_kingpin_v2-v2.3.2.zip", ], ) - go_repository( - name = "com_github_alecthomas_template", - build_file_proto_mode = "disable_global", - importpath = "github.com/alecthomas/template", - sha256 = "86de3337a475e323a0fb54ef03386a4e495682201f42795bd7be646c05298692", - strip_prefix = "github.com/alecthomas/template@v0.0.0-20160405071501-a0175ee3bccc", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/alecthomas/template/com_github_alecthomas_template-v0.0.0-20160405071501-a0175ee3bccc.zip", - "http://ats.apps.svc/gomod/github.com/alecthomas/template/com_github_alecthomas_template-v0.0.0-20160405071501-a0175ee3bccc.zip", - "https://cache.hawkingrei.com/gomod/github.com/alecthomas/template/com_github_alecthomas_template-v0.0.0-20160405071501-a0175ee3bccc.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/alecthomas/template/com_github_alecthomas_template-v0.0.0-20160405071501-a0175ee3bccc.zip", - ], - ) go_repository( name = "com_github_alecthomas_units", build_file_proto_mode = "disable_global", @@ -368,19 +355,6 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/apache/thrift/com_github_apache_thrift-v0.13.1-0.20201008052519-daf620915714.zip", ], ) - go_repository( - name = "com_github_armon_circbuf", - build_file_proto_mode = "disable_global", - importpath = "github.com/armon/circbuf", - sha256 = "3819cde26cd4b25c4043dc9384da7b0c1c29fd06e6e3a38604f4a6933fc017ed", - strip_prefix = "github.com/armon/circbuf@v0.0.0-20150827004946-bbbad097214e", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/armon/circbuf/com_github_armon_circbuf-v0.0.0-20150827004946-bbbad097214e.zip", - "http://ats.apps.svc/gomod/github.com/armon/circbuf/com_github_armon_circbuf-v0.0.0-20150827004946-bbbad097214e.zip", - "https://cache.hawkingrei.com/gomod/github.com/armon/circbuf/com_github_armon_circbuf-v0.0.0-20150827004946-bbbad097214e.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/armon/circbuf/com_github_armon_circbuf-v0.0.0-20150827004946-bbbad097214e.zip", - ], - ) go_repository( name = "com_github_armon_consul_api", build_file_proto_mode = "disable_global", @@ -398,26 +372,13 @@ def go_deps(): name = "com_github_armon_go_metrics", build_file_proto_mode = "disable_global", importpath = "github.com/armon/go-metrics", - sha256 = "247448464a8d219611279cde2540ef86de10828a5b2679477ded835adef351b1", - strip_prefix = "github.com/armon/go-metrics@v0.0.0-20180917152333-f0300d1749da", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/armon/go-metrics/com_github_armon_go_metrics-v0.0.0-20180917152333-f0300d1749da.zip", - "http://ats.apps.svc/gomod/github.com/armon/go-metrics/com_github_armon_go_metrics-v0.0.0-20180917152333-f0300d1749da.zip", - "https://cache.hawkingrei.com/gomod/github.com/armon/go-metrics/com_github_armon_go_metrics-v0.0.0-20180917152333-f0300d1749da.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/armon/go-metrics/com_github_armon_go_metrics-v0.0.0-20180917152333-f0300d1749da.zip", - ], - ) - go_repository( - name = "com_github_armon_go_radix", - build_file_proto_mode = "disable_global", - importpath = "github.com/armon/go-radix", - sha256 = "cb090b2b3c19987353e831ca79b31eb31eaa534b1f46d11b8813b235b1058859", - strip_prefix = "github.com/armon/go-radix@v0.0.0-20180808171621-7fddfc383310", + sha256 = "f1b9155b8635eea48fb8929934b1268bf624cec2d51fcef8b62fa4aa91e05cc9", + strip_prefix = "github.com/armon/go-metrics@v0.4.1", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/armon/go-radix/com_github_armon_go_radix-v0.0.0-20180808171621-7fddfc383310.zip", - "http://ats.apps.svc/gomod/github.com/armon/go-radix/com_github_armon_go_radix-v0.0.0-20180808171621-7fddfc383310.zip", - "https://cache.hawkingrei.com/gomod/github.com/armon/go-radix/com_github_armon_go_radix-v0.0.0-20180808171621-7fddfc383310.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/armon/go-radix/com_github_armon_go_radix-v0.0.0-20180808171621-7fddfc383310.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/armon/go-metrics/com_github_armon_go_metrics-v0.4.1.zip", + "http://ats.apps.svc/gomod/github.com/armon/go-metrics/com_github_armon_go_metrics-v0.4.1.zip", + "https://cache.hawkingrei.com/gomod/github.com/armon/go-metrics/com_github_armon_go_metrics-v0.4.1.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/armon/go-metrics/com_github_armon_go_metrics-v0.4.1.zip", ], ) go_repository( @@ -433,6 +394,19 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/armon/go-socks5/com_github_armon_go_socks5-v0.0.0-20160902184237-e75332964ef5.zip", ], ) + go_repository( + name = "com_github_asaskevich_govalidator", + build_file_proto_mode = "disable_global", + importpath = "github.com/asaskevich/govalidator", + sha256 = "0f8ec67bbc585d29ec115c0885cef6f2431a422cc1cc10008e466ebe8be5dc37", + strip_prefix = "github.com/asaskevich/govalidator@v0.0.0-20230301143203-a9d515a09cc2", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/asaskevich/govalidator/com_github_asaskevich_govalidator-v0.0.0-20230301143203-a9d515a09cc2.zip", + "http://ats.apps.svc/gomod/github.com/asaskevich/govalidator/com_github_asaskevich_govalidator-v0.0.0-20230301143203-a9d515a09cc2.zip", + "https://cache.hawkingrei.com/gomod/github.com/asaskevich/govalidator/com_github_asaskevich_govalidator-v0.0.0-20230301143203-a9d515a09cc2.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/asaskevich/govalidator/com_github_asaskevich_govalidator-v0.0.0-20230301143203-a9d515a09cc2.zip", + ], + ) go_repository( name = "com_github_ashanbrown_forbidigo", build_file_proto_mode = "disable_global", @@ -463,13 +437,13 @@ def go_deps(): name = "com_github_aws_aws_sdk_go", build_file_proto_mode = "disable_global", importpath = "github.com/aws/aws-sdk-go", - sha256 = "8f1bd64c68621278523ecb27db81d4a0f1c1d5539f81f767b3d987778e78abcb", - strip_prefix = "github.com/aws/aws-sdk-go@v1.44.259", + sha256 = "41451d24417630e603c76d88cd9c589c7f6eb05f710dea9ee86ed3c4f1837eee", + strip_prefix = "github.com/aws/aws-sdk-go@v1.45.25", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/aws/aws-sdk-go/com_github_aws_aws_sdk_go-v1.44.259.zip", - "http://ats.apps.svc/gomod/github.com/aws/aws-sdk-go/com_github_aws_aws_sdk_go-v1.44.259.zip", - "https://cache.hawkingrei.com/gomod/github.com/aws/aws-sdk-go/com_github_aws_aws_sdk_go-v1.44.259.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/aws/aws-sdk-go/com_github_aws_aws_sdk_go-v1.44.259.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/aws/aws-sdk-go/com_github_aws_aws_sdk_go-v1.45.25.zip", + "http://ats.apps.svc/gomod/github.com/aws/aws-sdk-go/com_github_aws_aws_sdk_go-v1.45.25.zip", + "https://cache.hawkingrei.com/gomod/github.com/aws/aws-sdk-go/com_github_aws_aws_sdk_go-v1.45.25.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/aws/aws-sdk-go/com_github_aws_aws_sdk_go-v1.45.25.zip", ], ) go_repository( @@ -485,43 +459,30 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/aymerick/raymond/com_github_aymerick_raymond-v2.0.3-0.20180322193309-b565731e1464+incompatible.zip", ], ) - go_repository( - name = "com_github_azure_azure_sdk_for_go", - build_file_proto_mode = "disable_global", - importpath = "github.com/Azure/azure-sdk-for-go", - sha256 = "a607abe933a75124c63e6b03141da5fa9cfb6db23691512f343f6013944c8673", - strip_prefix = "github.com/Azure/azure-sdk-for-go@v23.2.0+incompatible", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/Azure/azure-sdk-for-go/com_github_azure_azure_sdk_for_go-v23.2.0+incompatible.zip", - "http://ats.apps.svc/gomod/github.com/Azure/azure-sdk-for-go/com_github_azure_azure_sdk_for_go-v23.2.0+incompatible.zip", - "https://cache.hawkingrei.com/gomod/github.com/Azure/azure-sdk-for-go/com_github_azure_azure_sdk_for_go-v23.2.0+incompatible.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Azure/azure-sdk-for-go/com_github_azure_azure_sdk_for_go-v23.2.0+incompatible.zip", - ], - ) go_repository( name = "com_github_azure_azure_sdk_for_go_sdk_azcore", build_file_proto_mode = "disable_global", importpath = "github.com/Azure/azure-sdk-for-go/sdk/azcore", - sha256 = "94a9a4cee0462fac76fd5f89f1381f28fac3f1a05d59cea70f09745e55638a0c", - strip_prefix = "github.com/Azure/azure-sdk-for-go/sdk/azcore@v1.6.0", + sha256 = "c309f857e82c604b6efe0e4e05615136a7a757394f51dbe3429272dd22817d9f", + strip_prefix = "github.com/Azure/azure-sdk-for-go/sdk/azcore@v1.8.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/Azure/azure-sdk-for-go/sdk/azcore/com_github_azure_azure_sdk_for_go_sdk_azcore-v1.6.0.zip", - "http://ats.apps.svc/gomod/github.com/Azure/azure-sdk-for-go/sdk/azcore/com_github_azure_azure_sdk_for_go_sdk_azcore-v1.6.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/Azure/azure-sdk-for-go/sdk/azcore/com_github_azure_azure_sdk_for_go_sdk_azcore-v1.6.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Azure/azure-sdk-for-go/sdk/azcore/com_github_azure_azure_sdk_for_go_sdk_azcore-v1.6.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/Azure/azure-sdk-for-go/sdk/azcore/com_github_azure_azure_sdk_for_go_sdk_azcore-v1.8.0.zip", + "http://ats.apps.svc/gomod/github.com/Azure/azure-sdk-for-go/sdk/azcore/com_github_azure_azure_sdk_for_go_sdk_azcore-v1.8.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/Azure/azure-sdk-for-go/sdk/azcore/com_github_azure_azure_sdk_for_go_sdk_azcore-v1.8.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Azure/azure-sdk-for-go/sdk/azcore/com_github_azure_azure_sdk_for_go_sdk_azcore-v1.8.0.zip", ], ) go_repository( name = "com_github_azure_azure_sdk_for_go_sdk_azidentity", build_file_proto_mode = "disable_global", importpath = "github.com/Azure/azure-sdk-for-go/sdk/azidentity", - sha256 = "27947f13cb64475fd59e5d9f8b9c042b3d1e8603f49c54fc42820001c33d5f78", - strip_prefix = "github.com/Azure/azure-sdk-for-go/sdk/azidentity@v1.1.0", + sha256 = "39566249254f05e58d8a8a1324cd44c0545ca4091b34d5d86dfb832062b8302c", + strip_prefix = "github.com/Azure/azure-sdk-for-go/sdk/azidentity@v1.4.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/Azure/azure-sdk-for-go/sdk/azidentity/com_github_azure_azure_sdk_for_go_sdk_azidentity-v1.1.0.zip", - "http://ats.apps.svc/gomod/github.com/Azure/azure-sdk-for-go/sdk/azidentity/com_github_azure_azure_sdk_for_go_sdk_azidentity-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/Azure/azure-sdk-for-go/sdk/azidentity/com_github_azure_azure_sdk_for_go_sdk_azidentity-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Azure/azure-sdk-for-go/sdk/azidentity/com_github_azure_azure_sdk_for_go_sdk_azidentity-v1.1.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/Azure/azure-sdk-for-go/sdk/azidentity/com_github_azure_azure_sdk_for_go_sdk_azidentity-v1.4.0.zip", + "http://ats.apps.svc/gomod/github.com/Azure/azure-sdk-for-go/sdk/azidentity/com_github_azure_azure_sdk_for_go_sdk_azidentity-v1.4.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/Azure/azure-sdk-for-go/sdk/azidentity/com_github_azure_azure_sdk_for_go_sdk_azidentity-v1.4.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Azure/azure-sdk-for-go/sdk/azidentity/com_github_azure_azure_sdk_for_go_sdk_azidentity-v1.4.0.zip", ], ) go_repository( @@ -537,6 +498,45 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Azure/azure-sdk-for-go/sdk/internal/com_github_azure_azure_sdk_for_go_sdk_internal-v1.3.0.zip", ], ) + go_repository( + name = "com_github_azure_azure_sdk_for_go_sdk_resourcemanager_compute_armcompute_v4", + build_file_proto_mode = "disable_global", + importpath = "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v4", + sha256 = "b0c3b75b9e8fc156c488016d93e411f3089b5b97cd8250ac30a4746a558d3b62", + strip_prefix = "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v4@v4.2.1", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v4/com_github_azure_azure_sdk_for_go_sdk_resourcemanager_compute_armcompute_v4-v4.2.1.zip", + "http://ats.apps.svc/gomod/github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v4/com_github_azure_azure_sdk_for_go_sdk_resourcemanager_compute_armcompute_v4-v4.2.1.zip", + "https://cache.hawkingrei.com/gomod/github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v4/com_github_azure_azure_sdk_for_go_sdk_resourcemanager_compute_armcompute_v4-v4.2.1.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v4/com_github_azure_azure_sdk_for_go_sdk_resourcemanager_compute_armcompute_v4-v4.2.1.zip", + ], + ) + go_repository( + name = "com_github_azure_azure_sdk_for_go_sdk_resourcemanager_network_armnetwork", + build_file_proto_mode = "disable_global", + importpath = "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork", + sha256 = "ea444a1c3fcddb0477f7d1df7716c4d9a9edf5d89b12bbd5c92e89c036a1c01b", + strip_prefix = "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork@v1.1.0", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/com_github_azure_azure_sdk_for_go_sdk_resourcemanager_network_armnetwork-v1.1.0.zip", + "http://ats.apps.svc/gomod/github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/com_github_azure_azure_sdk_for_go_sdk_resourcemanager_network_armnetwork-v1.1.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/com_github_azure_azure_sdk_for_go_sdk_resourcemanager_network_armnetwork-v1.1.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/com_github_azure_azure_sdk_for_go_sdk_resourcemanager_network_armnetwork-v1.1.0.zip", + ], + ) + go_repository( + name = "com_github_azure_azure_sdk_for_go_sdk_resourcemanager_network_armnetwork_v2", + build_file_proto_mode = "disable_global", + importpath = "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v2", + sha256 = "4e0253514cf7072a29ddb22adf71cea03a44935a05de3897910a3932ae0034e3", + strip_prefix = "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v2@v2.2.1", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v2/com_github_azure_azure_sdk_for_go_sdk_resourcemanager_network_armnetwork_v2-v2.2.1.zip", + "http://ats.apps.svc/gomod/github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v2/com_github_azure_azure_sdk_for_go_sdk_resourcemanager_network_armnetwork_v2-v2.2.1.zip", + "https://cache.hawkingrei.com/gomod/github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v2/com_github_azure_azure_sdk_for_go_sdk_resourcemanager_network_armnetwork_v2-v2.2.1.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v2/com_github_azure_azure_sdk_for_go_sdk_resourcemanager_network_armnetwork_v2-v2.2.1.zip", + ], + ) go_repository( name = "com_github_azure_azure_sdk_for_go_sdk_storage_azblob", build_file_proto_mode = "disable_global", @@ -550,19 +550,6 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/com_github_azure_azure_sdk_for_go_sdk_storage_azblob-v1.0.0.zip", ], ) - go_repository( - name = "com_github_azure_go_autorest", - build_file_proto_mode = "disable_global", - importpath = "github.com/Azure/go-autorest", - sha256 = "295b69ffc36f1b89b3f58025b4d7d6c06cc3e2f0131a1666d49b5456611a3501", - strip_prefix = "github.com/Azure/go-autorest@v11.2.8+incompatible", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/Azure/go-autorest/com_github_azure_go_autorest-v11.2.8+incompatible.zip", - "http://ats.apps.svc/gomod/github.com/Azure/go-autorest/com_github_azure_go_autorest-v11.2.8+incompatible.zip", - "https://cache.hawkingrei.com/gomod/github.com/Azure/go-autorest/com_github_azure_go_autorest-v11.2.8+incompatible.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Azure/go-autorest/com_github_azure_go_autorest-v11.2.8+incompatible.zip", - ], - ) go_repository( name = "com_github_azure_go_ntlmssp", build_file_proto_mode = "disable_global", @@ -580,13 +567,13 @@ def go_deps(): name = "com_github_azuread_microsoft_authentication_library_for_go", build_file_proto_mode = "disable_global", importpath = "github.com/AzureAD/microsoft-authentication-library-for-go", - sha256 = "303670915e2c0de9e6ed4658360ce5ae07320714c9a8228f0f2d69a12b8ddf5d", - strip_prefix = "github.com/AzureAD/microsoft-authentication-library-for-go@v0.5.1", + sha256 = "6f933f00d5310409c8f3fe25917c3c48abb94fa9c582a9ce6ae35eaafe80d06c", + strip_prefix = "github.com/AzureAD/microsoft-authentication-library-for-go@v1.1.1", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/AzureAD/microsoft-authentication-library-for-go/com_github_azuread_microsoft_authentication_library_for_go-v0.5.1.zip", - "http://ats.apps.svc/gomod/github.com/AzureAD/microsoft-authentication-library-for-go/com_github_azuread_microsoft_authentication_library_for_go-v0.5.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/AzureAD/microsoft-authentication-library-for-go/com_github_azuread_microsoft_authentication_library_for_go-v0.5.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/AzureAD/microsoft-authentication-library-for-go/com_github_azuread_microsoft_authentication_library_for_go-v0.5.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/AzureAD/microsoft-authentication-library-for-go/com_github_azuread_microsoft_authentication_library_for_go-v1.1.1.zip", + "http://ats.apps.svc/gomod/github.com/AzureAD/microsoft-authentication-library-for-go/com_github_azuread_microsoft_authentication_library_for_go-v1.1.1.zip", + "https://cache.hawkingrei.com/gomod/github.com/AzureAD/microsoft-authentication-library-for-go/com_github_azuread_microsoft_authentication_library_for_go-v1.1.1.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/AzureAD/microsoft-authentication-library-for-go/com_github_azuread_microsoft_authentication_library_for_go-v1.1.1.zip", ], ) go_repository( @@ -641,32 +628,6 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/beorn7/perks/com_github_beorn7_perks-v1.0.1.zip", ], ) - go_repository( - name = "com_github_bgentry_speakeasy", - build_file_proto_mode = "disable_global", - importpath = "github.com/bgentry/speakeasy", - sha256 = "d4bfd48b9bf68c87f92c94478ac910bcdab272e15eb909d58f1fb939233f75f0", - strip_prefix = "github.com/bgentry/speakeasy@v0.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/bgentry/speakeasy/com_github_bgentry_speakeasy-v0.1.0.zip", - "http://ats.apps.svc/gomod/github.com/bgentry/speakeasy/com_github_bgentry_speakeasy-v0.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/bgentry/speakeasy/com_github_bgentry_speakeasy-v0.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/bgentry/speakeasy/com_github_bgentry_speakeasy-v0.1.0.zip", - ], - ) - go_repository( - name = "com_github_biogo_store", - build_file_proto_mode = "disable_global", - importpath = "github.com/biogo/store", - sha256 = "26551f8829c5ada84a68ef240732375be6747252aba423cf5c88bc03002c3600", - strip_prefix = "github.com/biogo/store@v0.0.0-20160505134755-913427a1d5e8", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/biogo/store/com_github_biogo_store-v0.0.0-20160505134755-913427a1d5e8.zip", - "http://ats.apps.svc/gomod/github.com/biogo/store/com_github_biogo_store-v0.0.0-20160505134755-913427a1d5e8.zip", - "https://cache.hawkingrei.com/gomod/github.com/biogo/store/com_github_biogo_store-v0.0.0-20160505134755-913427a1d5e8.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/biogo/store/com_github_biogo_store-v0.0.0-20160505134755-913427a1d5e8.zip", - ], - ) go_repository( name = "com_github_bkielbasa_cyclop", build_file_proto_mode = "disable_global", @@ -849,30 +810,17 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ccojocar/zxcvbn-go/com_github_ccojocar_zxcvbn_go-v1.0.1.zip", ], ) - go_repository( - name = "com_github_cenk_backoff", - build_file_proto_mode = "disable_global", - importpath = "github.com/cenk/backoff", - sha256 = "ac042b9692e3f0f8bd3b6a5d17443905e4c02ab84067650a96c0d43e5ea08138", - strip_prefix = "github.com/cenk/backoff@v2.0.0+incompatible", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/cenk/backoff/com_github_cenk_backoff-v2.0.0+incompatible.zip", - "http://ats.apps.svc/gomod/github.com/cenk/backoff/com_github_cenk_backoff-v2.0.0+incompatible.zip", - "https://cache.hawkingrei.com/gomod/github.com/cenk/backoff/com_github_cenk_backoff-v2.0.0+incompatible.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/cenk/backoff/com_github_cenk_backoff-v2.0.0+incompatible.zip", - ], - ) go_repository( name = "com_github_cenkalti_backoff_v4", build_file_proto_mode = "disable_global", importpath = "github.com/cenkalti/backoff/v4", - sha256 = "de69f5db190ee0f2c441e50e4bf607853ab99512a183a5713803888ced502dde", - strip_prefix = "github.com/cenkalti/backoff/v4@v4.1.1", + sha256 = "0b1d9cedebb1b814f4fbc03a47fdd2c2bb91d8cf14dbb1a71d3bc1482600cd2a", + strip_prefix = "github.com/cenkalti/backoff/v4@v4.2.1", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/cenkalti/backoff/v4/com_github_cenkalti_backoff_v4-v4.1.1.zip", - "http://ats.apps.svc/gomod/github.com/cenkalti/backoff/v4/com_github_cenkalti_backoff_v4-v4.1.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/cenkalti/backoff/v4/com_github_cenkalti_backoff_v4-v4.1.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/cenkalti/backoff/v4/com_github_cenkalti_backoff_v4-v4.1.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/cenkalti/backoff/v4/com_github_cenkalti_backoff_v4-v4.2.1.zip", + "http://ats.apps.svc/gomod/github.com/cenkalti/backoff/v4/com_github_cenkalti_backoff_v4-v4.2.1.zip", + "https://cache.hawkingrei.com/gomod/github.com/cenkalti/backoff/v4/com_github_cenkalti_backoff_v4-v4.2.1.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/cenkalti/backoff/v4/com_github_cenkalti_backoff_v4-v4.2.1.zip", ], ) go_repository( @@ -888,32 +836,6 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/census-instrumentation/opencensus-proto/com_github_census_instrumentation_opencensus_proto-v0.4.1.zip", ], ) - go_repository( - name = "com_github_certifi_gocertifi", - build_file_proto_mode = "disable_global", - importpath = "github.com/certifi/gocertifi", - sha256 = "e007c669f49757301c34b7c5bc4a37f0fbe3707ed123995728cb814217fae2f7", - strip_prefix = "github.com/certifi/gocertifi@v0.0.0-20180905225744-ee1a9a0726d2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/certifi/gocertifi/com_github_certifi_gocertifi-v0.0.0-20180905225744-ee1a9a0726d2.zip", - "http://ats.apps.svc/gomod/github.com/certifi/gocertifi/com_github_certifi_gocertifi-v0.0.0-20180905225744-ee1a9a0726d2.zip", - "https://cache.hawkingrei.com/gomod/github.com/certifi/gocertifi/com_github_certifi_gocertifi-v0.0.0-20180905225744-ee1a9a0726d2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/certifi/gocertifi/com_github_certifi_gocertifi-v0.0.0-20180905225744-ee1a9a0726d2.zip", - ], - ) - go_repository( - name = "com_github_cespare_xxhash", - build_file_proto_mode = "disable_global", - importpath = "github.com/cespare/xxhash", - sha256 = "fe98c56670b21631f7fd3305a29a3b17e86a6cce3876a2119460717a18538e2e", - strip_prefix = "github.com/cespare/xxhash@v1.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/cespare/xxhash/com_github_cespare_xxhash-v1.1.0.zip", - "http://ats.apps.svc/gomod/github.com/cespare/xxhash/com_github_cespare_xxhash-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/cespare/xxhash/com_github_cespare_xxhash-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/cespare/xxhash/com_github_cespare_xxhash-v1.1.0.zip", - ], - ) go_repository( name = "com_github_cespare_xxhash_v2", build_file_proto_mode = "disable_global", @@ -979,6 +901,45 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/cheynewallace/tabby/com_github_cheynewallace_tabby-v1.1.1.zip", ], ) + go_repository( + name = "com_github_chromedp_cdproto", + build_file_proto_mode = "disable_global", + importpath = "github.com/chromedp/cdproto", + sha256 = "23440cb9922bc66da55e23455aaf53799b4e838516dfca92202f29d21f9f4ad3", + strip_prefix = "github.com/chromedp/cdproto@v0.0.0-20230802225258-3cf4e6d46a89", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/chromedp/cdproto/com_github_chromedp_cdproto-v0.0.0-20230802225258-3cf4e6d46a89.zip", + "http://ats.apps.svc/gomod/github.com/chromedp/cdproto/com_github_chromedp_cdproto-v0.0.0-20230802225258-3cf4e6d46a89.zip", + "https://cache.hawkingrei.com/gomod/github.com/chromedp/cdproto/com_github_chromedp_cdproto-v0.0.0-20230802225258-3cf4e6d46a89.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/chromedp/cdproto/com_github_chromedp_cdproto-v0.0.0-20230802225258-3cf4e6d46a89.zip", + ], + ) + go_repository( + name = "com_github_chromedp_chromedp", + build_file_proto_mode = "disable_global", + importpath = "github.com/chromedp/chromedp", + sha256 = "f141d0c242b87bafe550404588cd86ba1e6ba05d9d1774ce96d4d097455b51d6", + strip_prefix = "github.com/chromedp/chromedp@v0.9.2", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/chromedp/chromedp/com_github_chromedp_chromedp-v0.9.2.zip", + "http://ats.apps.svc/gomod/github.com/chromedp/chromedp/com_github_chromedp_chromedp-v0.9.2.zip", + "https://cache.hawkingrei.com/gomod/github.com/chromedp/chromedp/com_github_chromedp_chromedp-v0.9.2.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/chromedp/chromedp/com_github_chromedp_chromedp-v0.9.2.zip", + ], + ) + go_repository( + name = "com_github_chromedp_sysutil", + build_file_proto_mode = "disable_global", + importpath = "github.com/chromedp/sysutil", + sha256 = "0d2f5cf0478bef0a8ee71e8b60a9279fd55b07cbfc66dbcfbf5a5f4ccb905c62", + strip_prefix = "github.com/chromedp/sysutil@v1.0.0", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/chromedp/sysutil/com_github_chromedp_sysutil-v1.0.0.zip", + "http://ats.apps.svc/gomod/github.com/chromedp/sysutil/com_github_chromedp_sysutil-v1.0.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/chromedp/sysutil/com_github_chromedp_sysutil-v1.0.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/chromedp/sysutil/com_github_chromedp_sysutil-v1.0.0.zip", + ], + ) go_repository( name = "com_github_chzyer_logex", build_file_proto_mode = "disable_global", @@ -996,13 +957,13 @@ def go_deps(): name = "com_github_chzyer_readline", build_file_proto_mode = "disable_global", importpath = "github.com/chzyer/readline", - sha256 = "3dc842677887278fb33d25078d375ae6a7a94bb77a8d205ee2230b581b6947a6", - strip_prefix = "github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", + sha256 = "ce25854a8beae5c20bdde840d5142e6fbd1f86f0e58442705b8fb21dfce48501", + strip_prefix = "github.com/chzyer/readline@v1.5.1", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/chzyer/readline/com_github_chzyer_readline-v0.0.0-20180603132655-2972be24d48e.zip", - "http://ats.apps.svc/gomod/github.com/chzyer/readline/com_github_chzyer_readline-v0.0.0-20180603132655-2972be24d48e.zip", - "https://cache.hawkingrei.com/gomod/github.com/chzyer/readline/com_github_chzyer_readline-v0.0.0-20180603132655-2972be24d48e.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/chzyer/readline/com_github_chzyer_readline-v0.0.0-20180603132655-2972be24d48e.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/chzyer/readline/com_github_chzyer_readline-v1.5.1.zip", + "http://ats.apps.svc/gomod/github.com/chzyer/readline/com_github_chzyer_readline-v1.5.1.zip", + "https://cache.hawkingrei.com/gomod/github.com/chzyer/readline/com_github_chzyer_readline-v1.5.1.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/chzyer/readline/com_github_chzyer_readline-v1.5.1.zip", ], ) go_repository( @@ -1096,58 +1057,6 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/cncf/xds/go/com_github_cncf_xds_go-v0.0.0-20230607035331-e9ce68804cb4.zip", ], ) - go_repository( - name = "com_github_cockroachdb_apd", - build_file_proto_mode = "disable_global", - importpath = "github.com/cockroachdb/apd", - sha256 = "fef7ec2fae220f84bfacb17fbfc1b04a666ab7f6fc04f3ff6d2b1e05c380777d", - strip_prefix = "github.com/cockroachdb/apd@v1.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/cockroachdb/apd/com_github_cockroachdb_apd-v1.1.0.zip", - "http://ats.apps.svc/gomod/github.com/cockroachdb/apd/com_github_cockroachdb_apd-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/cockroachdb/apd/com_github_cockroachdb_apd-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/cockroachdb/apd/com_github_cockroachdb_apd-v1.1.0.zip", - ], - ) - go_repository( - name = "com_github_cockroachdb_cmux", - build_file_proto_mode = "disable_global", - importpath = "github.com/cockroachdb/cmux", - sha256 = "88f6f9cf33eb535658540b46f6222f029398e590a3ff9cc873d7d561ac6debf0", - strip_prefix = "github.com/cockroachdb/cmux@v0.0.0-20170110192607-30d10be49292", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/cockroachdb/cmux/com_github_cockroachdb_cmux-v0.0.0-20170110192607-30d10be49292.zip", - "http://ats.apps.svc/gomod/github.com/cockroachdb/cmux/com_github_cockroachdb_cmux-v0.0.0-20170110192607-30d10be49292.zip", - "https://cache.hawkingrei.com/gomod/github.com/cockroachdb/cmux/com_github_cockroachdb_cmux-v0.0.0-20170110192607-30d10be49292.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/cockroachdb/cmux/com_github_cockroachdb_cmux-v0.0.0-20170110192607-30d10be49292.zip", - ], - ) - go_repository( - name = "com_github_cockroachdb_cockroach", - build_file_proto_mode = "disable_global", - importpath = "github.com/cockroachdb/cockroach", - sha256 = "0c0590292ad16788da3ebe10bd407e2441a201391a24a681838c2aa26f01b991", - strip_prefix = "github.com/cockroachdb/cockroach@v0.0.0-20170608034007-84bc9597164f", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/cockroachdb/cockroach/com_github_cockroachdb_cockroach-v0.0.0-20170608034007-84bc9597164f.zip", - "http://ats.apps.svc/gomod/github.com/cockroachdb/cockroach/com_github_cockroachdb_cockroach-v0.0.0-20170608034007-84bc9597164f.zip", - "https://cache.hawkingrei.com/gomod/github.com/cockroachdb/cockroach/com_github_cockroachdb_cockroach-v0.0.0-20170608034007-84bc9597164f.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/cockroachdb/cockroach/com_github_cockroachdb_cockroach-v0.0.0-20170608034007-84bc9597164f.zip", - ], - ) - go_repository( - name = "com_github_cockroachdb_cockroach_go", - build_file_proto_mode = "disable_global", - importpath = "github.com/cockroachdb/cockroach-go", - sha256 = "cbc7e32c0af7ddd88afe6ef57b45481495322cb4c973f4928bc753c8be05f1a6", - strip_prefix = "github.com/cockroachdb/cockroach-go@v0.0.0-20181001143604-e0a95dfd547c", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/cockroachdb/cockroach-go/com_github_cockroachdb_cockroach_go-v0.0.0-20181001143604-e0a95dfd547c.zip", - "http://ats.apps.svc/gomod/github.com/cockroachdb/cockroach-go/com_github_cockroachdb_cockroach_go-v0.0.0-20181001143604-e0a95dfd547c.zip", - "https://cache.hawkingrei.com/gomod/github.com/cockroachdb/cockroach-go/com_github_cockroachdb_cockroach_go-v0.0.0-20181001143604-e0a95dfd547c.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/cockroachdb/cockroach-go/com_github_cockroachdb_cockroach_go-v0.0.0-20181001143604-e0a95dfd547c.zip", - ], - ) go_repository( name = "com_github_cockroachdb_datadriven", build_file_proto_mode = "disable_global", @@ -1308,13 +1217,13 @@ def go_deps(): name = "com_github_coreos_etcd", build_file_proto_mode = "disable_global", importpath = "github.com/coreos/etcd", - sha256 = "5848e1797f8d426f4aa4b61b15611456fb0183f974cbf9e64a8a11e740883367", - strip_prefix = "github.com/coreos/etcd@v3.3.12+incompatible", + sha256 = "6d4f268491a5e80078b3f80a94a8780c3c04bad50efb371ef10bbc80652ec122", + strip_prefix = "github.com/coreos/etcd@v3.3.10+incompatible", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/coreos/etcd/com_github_coreos_etcd-v3.3.12+incompatible.zip", - "http://ats.apps.svc/gomod/github.com/coreos/etcd/com_github_coreos_etcd-v3.3.12+incompatible.zip", - "https://cache.hawkingrei.com/gomod/github.com/coreos/etcd/com_github_coreos_etcd-v3.3.12+incompatible.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/coreos/etcd/com_github_coreos_etcd-v3.3.12+incompatible.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/coreos/etcd/com_github_coreos_etcd-v3.3.10+incompatible.zip", + "http://ats.apps.svc/gomod/github.com/coreos/etcd/com_github_coreos_etcd-v3.3.10+incompatible.zip", + "https://cache.hawkingrei.com/gomod/github.com/coreos/etcd/com_github_coreos_etcd-v3.3.10+incompatible.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/coreos/etcd/com_github_coreos_etcd-v3.3.10+incompatible.zip", ], ) go_repository( @@ -1503,13 +1412,13 @@ def go_deps(): name = "com_github_davecgh_go_spew", build_file_proto_mode = "disable_global", importpath = "github.com/davecgh/go-spew", - sha256 = "6b44a843951f371b7010c754ecc3cabefe815d5ced1c5b9409fb2d697e8a890d", - strip_prefix = "github.com/davecgh/go-spew@v1.1.1", + sha256 = "b4d0923b169b194f0016ec46f3df1ab0c68e27999743e43fe2de59ecb2484128", + strip_prefix = "github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/davecgh/go-spew/com_github_davecgh_go_spew-v1.1.1.zip", - "http://ats.apps.svc/gomod/github.com/davecgh/go-spew/com_github_davecgh_go_spew-v1.1.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/davecgh/go-spew/com_github_davecgh_go_spew-v1.1.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/davecgh/go-spew/com_github_davecgh_go_spew-v1.1.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/davecgh/go-spew/com_github_davecgh_go_spew-v1.1.2-0.20180830191138-d8f796af33cc.zip", + "http://ats.apps.svc/gomod/github.com/davecgh/go-spew/com_github_davecgh_go_spew-v1.1.2-0.20180830191138-d8f796af33cc.zip", + "https://cache.hawkingrei.com/gomod/github.com/davecgh/go-spew/com_github_davecgh_go_spew-v1.1.2-0.20180830191138-d8f796af33cc.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/davecgh/go-spew/com_github_davecgh_go_spew-v1.1.2-0.20180830191138-d8f796af33cc.zip", ], ) go_repository( @@ -1551,6 +1460,19 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/denis-tingaikin/go-header/com_github_denis_tingaikin_go_header-v0.4.3.zip", ], ) + go_repository( + name = "com_github_dennwc_varint", + build_file_proto_mode = "disable_global", + importpath = "github.com/dennwc/varint", + sha256 = "2918e66c0fb5a82dbfc8cca1ed34cb8ccff8188e876c0ca25f85b8247e53626f", + strip_prefix = "github.com/dennwc/varint@v1.0.0", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/dennwc/varint/com_github_dennwc_varint-v1.0.0.zip", + "http://ats.apps.svc/gomod/github.com/dennwc/varint/com_github_dennwc_varint-v1.0.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/dennwc/varint/com_github_dennwc_varint-v1.0.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/dennwc/varint/com_github_dennwc_varint-v1.0.0.zip", + ], + ) go_repository( name = "com_github_dgraph_io_badger", build_file_proto_mode = "disable_global", @@ -1604,16 +1526,16 @@ def go_deps(): ], ) go_repository( - name = "com_github_dgryski_go_sip13", + name = "com_github_digitalocean_godo", build_file_proto_mode = "disable_global", - importpath = "github.com/dgryski/go-sip13", - sha256 = "aa6f56ab1d40952c536786beb834d9e361ef796bd7aefb7d6997e1753d4058eb", - strip_prefix = "github.com/dgryski/go-sip13@v0.0.0-20181026042036-e10d5fee7954", + importpath = "github.com/digitalocean/godo", + sha256 = "6185166897277ede2d4cba00ccca94bb4386da928c2719ffd0c50cb83b7282f6", + strip_prefix = "github.com/digitalocean/godo@v1.104.1", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/dgryski/go-sip13/com_github_dgryski_go_sip13-v0.0.0-20181026042036-e10d5fee7954.zip", - "http://ats.apps.svc/gomod/github.com/dgryski/go-sip13/com_github_dgryski_go_sip13-v0.0.0-20181026042036-e10d5fee7954.zip", - "https://cache.hawkingrei.com/gomod/github.com/dgryski/go-sip13/com_github_dgryski_go_sip13-v0.0.0-20181026042036-e10d5fee7954.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/dgryski/go-sip13/com_github_dgryski_go_sip13-v0.0.0-20181026042036-e10d5fee7954.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/digitalocean/godo/com_github_digitalocean_godo-v1.104.1.zip", + "http://ats.apps.svc/gomod/github.com/digitalocean/godo/com_github_digitalocean_godo-v1.104.1.zip", + "https://cache.hawkingrei.com/gomod/github.com/digitalocean/godo/com_github_digitalocean_godo-v1.104.1.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/digitalocean/godo/com_github_digitalocean_godo-v1.104.1.zip", ], ) go_repository( @@ -1633,26 +1555,65 @@ def go_deps(): name = "com_github_dnaeon_go_vcr", build_file_proto_mode = "disable_global", importpath = "github.com/dnaeon/go-vcr", - sha256 = "d6d94a1c8471809db30c2979add32bac647120bc577ea30f7e8fcc06436483f0", - strip_prefix = "github.com/dnaeon/go-vcr@v1.1.0", + sha256 = "6d34b7e17c158d51ffc34f6ac64df05ab736b2ae50c0db07be4a9556dac10c52", + strip_prefix = "github.com/dnaeon/go-vcr@v1.2.0", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/dnaeon/go-vcr/com_github_dnaeon_go_vcr-v1.2.0.zip", + "http://ats.apps.svc/gomod/github.com/dnaeon/go-vcr/com_github_dnaeon_go_vcr-v1.2.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/dnaeon/go-vcr/com_github_dnaeon_go_vcr-v1.2.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/dnaeon/go-vcr/com_github_dnaeon_go_vcr-v1.2.0.zip", + ], + ) + go_repository( + name = "com_github_docker_distribution", + build_file_proto_mode = "disable_global", + importpath = "github.com/docker/distribution", + sha256 = "9e0a17bbcaa1419232cd44e3a79209be26d9ccfa079e32e0e9999c81c0991477", + strip_prefix = "github.com/docker/distribution@v2.8.2+incompatible", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/docker/distribution/com_github_docker_distribution-v2.8.2+incompatible.zip", + "http://ats.apps.svc/gomod/github.com/docker/distribution/com_github_docker_distribution-v2.8.2+incompatible.zip", + "https://cache.hawkingrei.com/gomod/github.com/docker/distribution/com_github_docker_distribution-v2.8.2+incompatible.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/docker/distribution/com_github_docker_distribution-v2.8.2+incompatible.zip", + ], + ) + go_repository( + name = "com_github_docker_docker", + build_file_proto_mode = "disable_global", + importpath = "github.com/docker/docker", + sha256 = "a2042099c93f698ea6a418a850ab2e15214173d0b1f27ad20683afa4d4653cb1", + strip_prefix = "github.com/docker/docker@v24.0.6+incompatible", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/dnaeon/go-vcr/com_github_dnaeon_go_vcr-v1.1.0.zip", - "http://ats.apps.svc/gomod/github.com/dnaeon/go-vcr/com_github_dnaeon_go_vcr-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/dnaeon/go-vcr/com_github_dnaeon_go_vcr-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/dnaeon/go-vcr/com_github_dnaeon_go_vcr-v1.1.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/docker/docker/com_github_docker_docker-v24.0.6+incompatible.zip", + "http://ats.apps.svc/gomod/github.com/docker/docker/com_github_docker_docker-v24.0.6+incompatible.zip", + "https://cache.hawkingrei.com/gomod/github.com/docker/docker/com_github_docker_docker-v24.0.6+incompatible.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/docker/docker/com_github_docker_docker-v24.0.6+incompatible.zip", + ], + ) + go_repository( + name = "com_github_docker_go_connections", + build_file_proto_mode = "disable_global", + importpath = "github.com/docker/go-connections", + sha256 = "570ebcee7e6fd844e00c89eeab2b1922081d6969df76078dfe4ffacd3db56ada", + strip_prefix = "github.com/docker/go-connections@v0.4.0", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/docker/go-connections/com_github_docker_go_connections-v0.4.0.zip", + "http://ats.apps.svc/gomod/github.com/docker/go-connections/com_github_docker_go_connections-v0.4.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/docker/go-connections/com_github_docker_go_connections-v0.4.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/docker/go-connections/com_github_docker_go_connections-v0.4.0.zip", ], ) go_repository( name = "com_github_docker_go_units", build_file_proto_mode = "disable_global", importpath = "github.com/docker/go-units", - sha256 = "0f2be7dce7b1a0ba6a4a786eb144a3398e9a61afc0eec5799a1520d9906fc58c", - strip_prefix = "github.com/docker/go-units@v0.4.0", + sha256 = "039d53ebe64af1aefa0be94ce42c621a17a3052c58ad15e5b3f357529beeaff6", + strip_prefix = "github.com/docker/go-units@v0.5.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/docker/go-units/com_github_docker_go_units-v0.4.0.zip", - "http://ats.apps.svc/gomod/github.com/docker/go-units/com_github_docker_go_units-v0.4.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/docker/go-units/com_github_docker_go_units-v0.4.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/docker/go-units/com_github_docker_go_units-v0.4.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/docker/go-units/com_github_docker_go_units-v0.5.0.zip", + "http://ats.apps.svc/gomod/github.com/docker/go-units/com_github_docker_go_units-v0.5.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/docker/go-units/com_github_docker_go_units-v0.5.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/docker/go-units/com_github_docker_go_units-v0.5.0.zip", ], ) go_repository( @@ -1733,6 +1694,19 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/eapache/queue/com_github_eapache_queue-v1.1.0.zip", ], ) + go_repository( + name = "com_github_edsrzf_mmap_go", + build_file_proto_mode = "disable_global", + importpath = "github.com/edsrzf/mmap-go", + sha256 = "1c2fa2b55d253fb95d4b253ec39348deba3d46a184bc0a4393a355807b8e5df7", + strip_prefix = "github.com/edsrzf/mmap-go@v1.1.0", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/edsrzf/mmap-go/com_github_edsrzf_mmap_go-v1.1.0.zip", + "http://ats.apps.svc/gomod/github.com/edsrzf/mmap-go/com_github_edsrzf_mmap_go-v1.1.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/edsrzf/mmap-go/com_github_edsrzf_mmap_go-v1.1.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/edsrzf/mmap-go/com_github_edsrzf_mmap_go-v1.1.0.zip", + ], + ) go_repository( name = "com_github_eknkc_amber", build_file_proto_mode = "disable_global", @@ -1747,29 +1721,16 @@ def go_deps(): ], ) go_repository( - name = "com_github_elastic_gosigar", + name = "com_github_emicklei_go_restful_v3", build_file_proto_mode = "disable_global", - importpath = "github.com/elastic/gosigar", - sha256 = "21ddafe5b9912113983e4210aa48f12a87d3a88a0a6946601e65725b736ca852", - strip_prefix = "github.com/elastic/gosigar@v0.9.0", + importpath = "github.com/emicklei/go-restful/v3", + sha256 = "42f1f1e5d986212ba6c7d96f6e76ba2a28b1d17fad9a40b0c45d1505d39bda26", + strip_prefix = "github.com/emicklei/go-restful/v3@v3.10.2", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/elastic/gosigar/com_github_elastic_gosigar-v0.9.0.zip", - "http://ats.apps.svc/gomod/github.com/elastic/gosigar/com_github_elastic_gosigar-v0.9.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/elastic/gosigar/com_github_elastic_gosigar-v0.9.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/elastic/gosigar/com_github_elastic_gosigar-v0.9.0.zip", - ], - ) - go_repository( - name = "com_github_elazarl_go_bindata_assetfs", - build_file_proto_mode = "disable_global", - importpath = "github.com/elazarl/go-bindata-assetfs", - sha256 = "3aa225ae5ae4a8059a671fa656d8567f09861f88b88dbef9e06a291efd90013a", - strip_prefix = "github.com/elazarl/go-bindata-assetfs@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/elazarl/go-bindata-assetfs/com_github_elazarl_go_bindata_assetfs-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/elazarl/go-bindata-assetfs/com_github_elazarl_go_bindata_assetfs-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/elazarl/go-bindata-assetfs/com_github_elazarl_go_bindata_assetfs-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/elazarl/go-bindata-assetfs/com_github_elazarl_go_bindata_assetfs-v1.0.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/emicklei/go-restful/v3/com_github_emicklei_go_restful_v3-v3.10.2.zip", + "http://ats.apps.svc/gomod/github.com/emicklei/go-restful/v3/com_github_emicklei_go_restful_v3-v3.10.2.zip", + "https://cache.hawkingrei.com/gomod/github.com/emicklei/go-restful/v3/com_github_emicklei_go_restful_v3-v3.10.2.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/emicklei/go-restful/v3/com_github_emicklei_go_restful_v3-v3.10.2.zip", ], ) go_repository( @@ -1867,26 +1828,13 @@ def go_deps(): name = "com_github_evanphx_json_patch", build_file_proto_mode = "disable_global", importpath = "github.com/evanphx/json-patch", - sha256 = "dd873b8aea0a9546ae2adf65dd112882ddc06f6c28a9a9eea3512db7dfea3496", - strip_prefix = "github.com/evanphx/json-patch@v4.12.0+incompatible", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/evanphx/json-patch/com_github_evanphx_json_patch-v4.12.0+incompatible.zip", - "http://ats.apps.svc/gomod/github.com/evanphx/json-patch/com_github_evanphx_json_patch-v4.12.0+incompatible.zip", - "https://cache.hawkingrei.com/gomod/github.com/evanphx/json-patch/com_github_evanphx_json_patch-v4.12.0+incompatible.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/evanphx/json-patch/com_github_evanphx_json_patch-v4.12.0+incompatible.zip", - ], - ) - go_repository( - name = "com_github_facebookgo_clock", - build_file_proto_mode = "disable_global", - importpath = "github.com/facebookgo/clock", - sha256 = "5d6b671bd5afef8459fb7561d19bcf7c7f378da9943722d36676735b3c6272fa", - strip_prefix = "github.com/facebookgo/clock@v0.0.0-20150410010913-600d898af40a", + sha256 = "1105c2dc020fe36fa8ac02ad52f64c64291d9639c7108b6fc3da77299efd13f3", + strip_prefix = "github.com/evanphx/json-patch@v5.6.0+incompatible", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/facebookgo/clock/com_github_facebookgo_clock-v0.0.0-20150410010913-600d898af40a.zip", - "http://ats.apps.svc/gomod/github.com/facebookgo/clock/com_github_facebookgo_clock-v0.0.0-20150410010913-600d898af40a.zip", - "https://cache.hawkingrei.com/gomod/github.com/facebookgo/clock/com_github_facebookgo_clock-v0.0.0-20150410010913-600d898af40a.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/facebookgo/clock/com_github_facebookgo_clock-v0.0.0-20150410010913-600d898af40a.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/evanphx/json-patch/com_github_evanphx_json_patch-v5.6.0+incompatible.zip", + "http://ats.apps.svc/gomod/github.com/evanphx/json-patch/com_github_evanphx_json_patch-v5.6.0+incompatible.zip", + "https://cache.hawkingrei.com/gomod/github.com/evanphx/json-patch/com_github_evanphx_json_patch-v5.6.0+incompatible.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/evanphx/json-patch/com_github_evanphx_json_patch-v5.6.0+incompatible.zip", ], ) go_repository( @@ -1958,13 +1906,13 @@ def go_deps(): name = "com_github_felixge_httpsnoop", build_file_proto_mode = "disable_global", importpath = "github.com/felixge/httpsnoop", - sha256 = "b345e22aa5ff8c496e6c5b8aed355ac47eb3ce631361782065e0cfdcab1b54ac", - strip_prefix = "github.com/felixge/httpsnoop@v1.0.2", + sha256 = "e4b47cd34715551d36b72db0810a4bed78495a58360499c78de9e22b2c9db9e9", + strip_prefix = "github.com/felixge/httpsnoop@v1.0.3", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/felixge/httpsnoop/com_github_felixge_httpsnoop-v1.0.2.zip", - "http://ats.apps.svc/gomod/github.com/felixge/httpsnoop/com_github_felixge_httpsnoop-v1.0.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/felixge/httpsnoop/com_github_felixge_httpsnoop-v1.0.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/felixge/httpsnoop/com_github_felixge_httpsnoop-v1.0.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/felixge/httpsnoop/com_github_felixge_httpsnoop-v1.0.3.zip", + "http://ats.apps.svc/gomod/github.com/felixge/httpsnoop/com_github_felixge_httpsnoop-v1.0.3.zip", + "https://cache.hawkingrei.com/gomod/github.com/felixge/httpsnoop/com_github_felixge_httpsnoop-v1.0.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/felixge/httpsnoop/com_github_felixge_httpsnoop-v1.0.3.zip", ], ) go_repository( @@ -2097,19 +2045,6 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/gavv/httpexpect/com_github_gavv_httpexpect-v2.0.0+incompatible.zip", ], ) - go_repository( - name = "com_github_getsentry_raven_go", - build_file_proto_mode = "disable_global", - importpath = "github.com/getsentry/raven-go", - sha256 = "99cba0dce93b1c0ca86b44787bb7a61e31da95a11773dfa197a67f4a92f75b71", - strip_prefix = "github.com/getsentry/raven-go@v0.1.2", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/getsentry/raven-go/com_github_getsentry_raven_go-v0.1.2.zip", - "http://ats.apps.svc/gomod/github.com/getsentry/raven-go/com_github_getsentry_raven_go-v0.1.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/getsentry/raven-go/com_github_getsentry_raven_go-v0.1.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/getsentry/raven-go/com_github_getsentry_raven_go-v0.1.2.zip", - ], - ) go_repository( name = "com_github_ghemawat_stream", build_file_proto_mode = "disable_global", @@ -2253,30 +2188,17 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-gl/glfw/v3.3/glfw/com_github_go_gl_glfw_v3_3_glfw-v0.0.0-20200222043503-6f7a984d4dc4.zip", ], ) - go_repository( - name = "com_github_go_ini_ini", - build_file_proto_mode = "disable_global", - importpath = "github.com/go-ini/ini", - sha256 = "2ec52de9f1c96133e9f81b8250fdc99ca0729c0d429e318d7c8836b7a6ba5f60", - strip_prefix = "github.com/go-ini/ini@v1.25.4", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-ini/ini/com_github_go_ini_ini-v1.25.4.zip", - "http://ats.apps.svc/gomod/github.com/go-ini/ini/com_github_go_ini_ini-v1.25.4.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-ini/ini/com_github_go_ini_ini-v1.25.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-ini/ini/com_github_go_ini_ini-v1.25.4.zip", - ], - ) go_repository( name = "com_github_go_kit_kit", build_file_proto_mode = "disable_global", importpath = "github.com/go-kit/kit", - sha256 = "f3da9b35b100dd32e7b10c37a0630af60d54afa37c61291e7df94bc0ac31ed03", - strip_prefix = "github.com/go-kit/kit@v0.9.0", + sha256 = "2006e7fbfba4273d29042661e2c13749105ac430d85f06175359b520371e6c5a", + strip_prefix = "github.com/go-kit/kit@v0.12.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-kit/kit/com_github_go_kit_kit-v0.9.0.zip", - "http://ats.apps.svc/gomod/github.com/go-kit/kit/com_github_go_kit_kit-v0.9.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-kit/kit/com_github_go_kit_kit-v0.9.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-kit/kit/com_github_go_kit_kit-v0.9.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-kit/kit/com_github_go_kit_kit-v0.12.0.zip", + "http://ats.apps.svc/gomod/github.com/go-kit/kit/com_github_go_kit_kit-v0.12.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/go-kit/kit/com_github_go_kit_kit-v0.12.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-kit/kit/com_github_go_kit_kit-v0.12.0.zip", ], ) go_repository( @@ -2309,26 +2231,39 @@ def go_deps(): name = "com_github_go_logfmt_logfmt", build_file_proto_mode = "disable_global", importpath = "github.com/go-logfmt/logfmt", - sha256 = "9e030cd09b584e59a2f5baaa24cf600520757d732af0f8993cc412dd3086703a", - strip_prefix = "github.com/go-logfmt/logfmt@v0.5.1", + sha256 = "a49c00cff30c02d9c09a4974ce91215bfe37f528a74f129576697869a1b8c630", + strip_prefix = "github.com/go-logfmt/logfmt@v0.6.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-logfmt/logfmt/com_github_go_logfmt_logfmt-v0.5.1.zip", - "http://ats.apps.svc/gomod/github.com/go-logfmt/logfmt/com_github_go_logfmt_logfmt-v0.5.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-logfmt/logfmt/com_github_go_logfmt_logfmt-v0.5.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-logfmt/logfmt/com_github_go_logfmt_logfmt-v0.5.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-logfmt/logfmt/com_github_go_logfmt_logfmt-v0.6.0.zip", + "http://ats.apps.svc/gomod/github.com/go-logfmt/logfmt/com_github_go_logfmt_logfmt-v0.6.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/go-logfmt/logfmt/com_github_go_logfmt_logfmt-v0.6.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-logfmt/logfmt/com_github_go_logfmt_logfmt-v0.6.0.zip", ], ) go_repository( name = "com_github_go_logr_logr", build_file_proto_mode = "disable_global", importpath = "github.com/go-logr/logr", - sha256 = "4b4b79b5863ab1d35c329d34a9cbba2a58a9b83b4a33c426facd2aa73b132f04", - strip_prefix = "github.com/go-logr/logr@v1.2.3", + sha256 = "9f2fe2600670561e7ea60903e736f3e38c304bfd217d0b06194daa1cf04a904f", + strip_prefix = "github.com/go-logr/logr@v1.3.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-logr/logr/com_github_go_logr_logr-v1.2.3.zip", - "http://ats.apps.svc/gomod/github.com/go-logr/logr/com_github_go_logr_logr-v1.2.3.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-logr/logr/com_github_go_logr_logr-v1.2.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-logr/logr/com_github_go_logr_logr-v1.2.3.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-logr/logr/com_github_go_logr_logr-v1.3.0.zip", + "http://ats.apps.svc/gomod/github.com/go-logr/logr/com_github_go_logr_logr-v1.3.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/go-logr/logr/com_github_go_logr_logr-v1.3.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-logr/logr/com_github_go_logr_logr-v1.3.0.zip", + ], + ) + go_repository( + name = "com_github_go_logr_stdr", + build_file_proto_mode = "disable_global", + importpath = "github.com/go-logr/stdr", + sha256 = "9dd6893bf700198485ae699640b49bc1efbc6c73b37cb5792a0476e1fd8f7fef", + strip_prefix = "github.com/go-logr/stdr@v1.2.2", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-logr/stdr/com_github_go_logr_stdr-v1.2.2.zip", + "http://ats.apps.svc/gomod/github.com/go-logr/stdr/com_github_go_logr_stdr-v1.2.2.zip", + "https://cache.hawkingrei.com/gomod/github.com/go-logr/stdr/com_github_go_logr_stdr-v1.2.2.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-logr/stdr/com_github_go_logr_stdr-v1.2.2.zip", ], ) go_repository( @@ -2348,52 +2283,143 @@ def go_deps(): name = "com_github_go_ole_go_ole", build_file_proto_mode = "disable_global", importpath = "github.com/go-ole/go-ole", - sha256 = "95b192df81ca16f0fb7d2d98ff6596d70256d73e49e899c55fabd511fd6768ef", - strip_prefix = "github.com/go-ole/go-ole@v1.2.6", + sha256 = "bbf5b3bfa227a5daa06eb16ecdecccc0b20e08749bf103afb523fd72764e727a", + strip_prefix = "github.com/go-ole/go-ole@v1.3.0", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-ole/go-ole/com_github_go_ole_go_ole-v1.3.0.zip", + "http://ats.apps.svc/gomod/github.com/go-ole/go-ole/com_github_go_ole_go_ole-v1.3.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/go-ole/go-ole/com_github_go_ole_go_ole-v1.3.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-ole/go-ole/com_github_go_ole_go_ole-v1.3.0.zip", + ], + ) + go_repository( + name = "com_github_go_openapi_analysis", + build_file_proto_mode = "disable_global", + importpath = "github.com/go-openapi/analysis", + sha256 = "c38edc10742e5592847d0608ba13b1372a4a7ce1309fc521ea58842a0eb99d16", + strip_prefix = "github.com/go-openapi/analysis@v0.21.4", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-openapi/analysis/com_github_go_openapi_analysis-v0.21.4.zip", + "http://ats.apps.svc/gomod/github.com/go-openapi/analysis/com_github_go_openapi_analysis-v0.21.4.zip", + "https://cache.hawkingrei.com/gomod/github.com/go-openapi/analysis/com_github_go_openapi_analysis-v0.21.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-openapi/analysis/com_github_go_openapi_analysis-v0.21.4.zip", + ], + ) + go_repository( + name = "com_github_go_openapi_errors", + build_file_proto_mode = "disable_global", + importpath = "github.com/go-openapi/errors", + sha256 = "40b1b8d380b340602f760e050ca81fe3abfdd88d4e671ab5b9ca6d0361038eee", + strip_prefix = "github.com/go-openapi/errors@v0.20.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-ole/go-ole/com_github_go_ole_go_ole-v1.2.6.zip", - "http://ats.apps.svc/gomod/github.com/go-ole/go-ole/com_github_go_ole_go_ole-v1.2.6.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-ole/go-ole/com_github_go_ole_go_ole-v1.2.6.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-ole/go-ole/com_github_go_ole_go_ole-v1.2.6.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-openapi/errors/com_github_go_openapi_errors-v0.20.4.zip", + "http://ats.apps.svc/gomod/github.com/go-openapi/errors/com_github_go_openapi_errors-v0.20.4.zip", + "https://cache.hawkingrei.com/gomod/github.com/go-openapi/errors/com_github_go_openapi_errors-v0.20.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-openapi/errors/com_github_go_openapi_errors-v0.20.4.zip", ], ) go_repository( name = "com_github_go_openapi_jsonpointer", build_file_proto_mode = "disable_global", importpath = "github.com/go-openapi/jsonpointer", - sha256 = "13184359227db1ba359382af560d5c32c8b08c0aabfb13cfcb332700a7f01913", - strip_prefix = "github.com/go-openapi/jsonpointer@v0.19.6", + sha256 = "ff51a1ccbf148289e755c55f756fde4aa9626d5b6a79065f7592be868fc0ed74", + strip_prefix = "github.com/go-openapi/jsonpointer@v0.20.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-openapi/jsonpointer/com_github_go_openapi_jsonpointer-v0.19.6.zip", - "http://ats.apps.svc/gomod/github.com/go-openapi/jsonpointer/com_github_go_openapi_jsonpointer-v0.19.6.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-openapi/jsonpointer/com_github_go_openapi_jsonpointer-v0.19.6.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-openapi/jsonpointer/com_github_go_openapi_jsonpointer-v0.19.6.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-openapi/jsonpointer/com_github_go_openapi_jsonpointer-v0.20.0.zip", + "http://ats.apps.svc/gomod/github.com/go-openapi/jsonpointer/com_github_go_openapi_jsonpointer-v0.20.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/go-openapi/jsonpointer/com_github_go_openapi_jsonpointer-v0.20.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-openapi/jsonpointer/com_github_go_openapi_jsonpointer-v0.20.0.zip", ], ) go_repository( name = "com_github_go_openapi_jsonreference", build_file_proto_mode = "disable_global", importpath = "github.com/go-openapi/jsonreference", - sha256 = "9bd65d3ea1d52937248fa19dabdf3619f2017328cfd758818668d9694985b32f", - strip_prefix = "github.com/go-openapi/jsonreference@v0.20.1", + sha256 = "27afd0bef56453e463eba6093afb04dc08d97b5ad0e15b2266cac867d062ae1b", + strip_prefix = "github.com/go-openapi/jsonreference@v0.20.2", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-openapi/jsonreference/com_github_go_openapi_jsonreference-v0.20.2.zip", + "http://ats.apps.svc/gomod/github.com/go-openapi/jsonreference/com_github_go_openapi_jsonreference-v0.20.2.zip", + "https://cache.hawkingrei.com/gomod/github.com/go-openapi/jsonreference/com_github_go_openapi_jsonreference-v0.20.2.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-openapi/jsonreference/com_github_go_openapi_jsonreference-v0.20.2.zip", + ], + ) + go_repository( + name = "com_github_go_openapi_loads", + build_file_proto_mode = "disable_global", + importpath = "github.com/go-openapi/loads", + sha256 = "a97ae476c31ad269ad3429186fab2fe08f38eeb5d4167215004194b19da9d1de", + strip_prefix = "github.com/go-openapi/loads@v0.21.2", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-openapi/loads/com_github_go_openapi_loads-v0.21.2.zip", + "http://ats.apps.svc/gomod/github.com/go-openapi/loads/com_github_go_openapi_loads-v0.21.2.zip", + "https://cache.hawkingrei.com/gomod/github.com/go-openapi/loads/com_github_go_openapi_loads-v0.21.2.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-openapi/loads/com_github_go_openapi_loads-v0.21.2.zip", + ], + ) + go_repository( + name = "com_github_go_openapi_spec", + build_file_proto_mode = "disable_global", + importpath = "github.com/go-openapi/spec", + sha256 = "06c843a4617b262b06f232c6fa380e732dea80cf77b9a80a09c0d1c83a0a8665", + strip_prefix = "github.com/go-openapi/spec@v0.20.9", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-openapi/jsonreference/com_github_go_openapi_jsonreference-v0.20.1.zip", - "http://ats.apps.svc/gomod/github.com/go-openapi/jsonreference/com_github_go_openapi_jsonreference-v0.20.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-openapi/jsonreference/com_github_go_openapi_jsonreference-v0.20.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-openapi/jsonreference/com_github_go_openapi_jsonreference-v0.20.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-openapi/spec/com_github_go_openapi_spec-v0.20.9.zip", + "http://ats.apps.svc/gomod/github.com/go-openapi/spec/com_github_go_openapi_spec-v0.20.9.zip", + "https://cache.hawkingrei.com/gomod/github.com/go-openapi/spec/com_github_go_openapi_spec-v0.20.9.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-openapi/spec/com_github_go_openapi_spec-v0.20.9.zip", + ], + ) + go_repository( + name = "com_github_go_openapi_strfmt", + build_file_proto_mode = "disable_global", + importpath = "github.com/go-openapi/strfmt", + sha256 = "cec92176d987eef51b7564b8209657d915ef0722d3f63832925cc3fd097a36c4", + strip_prefix = "github.com/go-openapi/strfmt@v0.21.7", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-openapi/strfmt/com_github_go_openapi_strfmt-v0.21.7.zip", + "http://ats.apps.svc/gomod/github.com/go-openapi/strfmt/com_github_go_openapi_strfmt-v0.21.7.zip", + "https://cache.hawkingrei.com/gomod/github.com/go-openapi/strfmt/com_github_go_openapi_strfmt-v0.21.7.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-openapi/strfmt/com_github_go_openapi_strfmt-v0.21.7.zip", ], ) go_repository( name = "com_github_go_openapi_swag", build_file_proto_mode = "disable_global", importpath = "github.com/go-openapi/swag", - sha256 = "200aad3e5eed2c395172b822650575d994b84345a2bbc7789e336545634cac09", - strip_prefix = "github.com/go-openapi/swag@v0.22.3", + sha256 = "ce8e7f82205e5c1949c99710f7d74be65d9a1353f38afe85338e9e4ba5981cb9", + strip_prefix = "github.com/go-openapi/swag@v0.22.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-openapi/swag/com_github_go_openapi_swag-v0.22.3.zip", - "http://ats.apps.svc/gomod/github.com/go-openapi/swag/com_github_go_openapi_swag-v0.22.3.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-openapi/swag/com_github_go_openapi_swag-v0.22.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-openapi/swag/com_github_go_openapi_swag-v0.22.3.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-openapi/swag/com_github_go_openapi_swag-v0.22.4.zip", + "http://ats.apps.svc/gomod/github.com/go-openapi/swag/com_github_go_openapi_swag-v0.22.4.zip", + "https://cache.hawkingrei.com/gomod/github.com/go-openapi/swag/com_github_go_openapi_swag-v0.22.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-openapi/swag/com_github_go_openapi_swag-v0.22.4.zip", + ], + ) + go_repository( + name = "com_github_go_openapi_validate", + build_file_proto_mode = "disable_global", + importpath = "github.com/go-openapi/validate", + sha256 = "7d528b3b728df6a721977532d838cec9a6699baf49959e195aa775e32909d0b2", + strip_prefix = "github.com/go-openapi/validate@v0.22.1", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-openapi/validate/com_github_go_openapi_validate-v0.22.1.zip", + "http://ats.apps.svc/gomod/github.com/go-openapi/validate/com_github_go_openapi_validate-v0.22.1.zip", + "https://cache.hawkingrei.com/gomod/github.com/go-openapi/validate/com_github_go_openapi_validate-v0.22.1.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-openapi/validate/com_github_go_openapi_validate-v0.22.1.zip", + ], + ) + go_repository( + name = "com_github_go_resty_resty_v2", + build_file_proto_mode = "disable_global", + importpath = "github.com/go-resty/resty/v2", + sha256 = "8df732287dbe0ec992fe89c720c7803f1fd31708573ccda8d2a6814c6e847c4e", + strip_prefix = "github.com/go-resty/resty/v2@v2.7.0", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-resty/resty/v2/com_github_go_resty_resty_v2-v2.7.0.zip", + "http://ats.apps.svc/gomod/github.com/go-resty/resty/v2/com_github_go_resty_resty_v2-v2.7.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/go-resty/resty/v2/com_github_go_resty_resty_v2-v2.7.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-resty/resty/v2/com_github_go_resty_resty_v2-v2.7.0.zip", ], ) go_repository( @@ -2426,13 +2452,13 @@ def go_deps(): name = "com_github_go_task_slim_sprig", build_file_proto_mode = "disable_global", importpath = "github.com/go-task/slim-sprig", - sha256 = "a0bb8b3e4aa7c75e47a3fe505f39aa6b57d339c1adf00149c0193a25f1cc5703", - strip_prefix = "github.com/go-task/slim-sprig@v0.0.0-20210107165309-348f09dbbbc0", + sha256 = "25a036dc8eb9f6227c2df818916f76db93eebbac88cc24bad5c960b0c60d7a08", + strip_prefix = "github.com/go-task/slim-sprig@v0.0.0-20230315185526-52ccab3ef572", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-task/slim-sprig/com_github_go_task_slim_sprig-v0.0.0-20210107165309-348f09dbbbc0.zip", - "http://ats.apps.svc/gomod/github.com/go-task/slim-sprig/com_github_go_task_slim_sprig-v0.0.0-20210107165309-348f09dbbbc0.zip", - "https://cache.hawkingrei.com/gomod/github.com/go-task/slim-sprig/com_github_go_task_slim_sprig-v0.0.0-20210107165309-348f09dbbbc0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-task/slim-sprig/com_github_go_task_slim_sprig-v0.0.0-20210107165309-348f09dbbbc0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-task/slim-sprig/com_github_go_task_slim_sprig-v0.0.0-20230315185526-52ccab3ef572.zip", + "http://ats.apps.svc/gomod/github.com/go-task/slim-sprig/com_github_go_task_slim_sprig-v0.0.0-20230315185526-52ccab3ef572.zip", + "https://cache.hawkingrei.com/gomod/github.com/go-task/slim-sprig/com_github_go_task_slim_sprig-v0.0.0-20230315185526-52ccab3ef572.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-task/slim-sprig/com_github_go_task_slim_sprig-v0.0.0-20230315185526-52ccab3ef572.zip", ], ) go_repository( @@ -2539,6 +2565,19 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-xmlfmt/xmlfmt/com_github_go_xmlfmt_xmlfmt-v1.1.2.zip", ], ) + go_repository( + name = "com_github_go_zookeeper_zk", + build_file_proto_mode = "disable_global", + importpath = "github.com/go-zookeeper/zk", + sha256 = "5577b9e7924ff73c19e2c62fb6fddb9621d05f0720d0994ce8dc4be625399ca3", + strip_prefix = "github.com/go-zookeeper/zk@v1.0.3", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-zookeeper/zk/com_github_go_zookeeper_zk-v1.0.3.zip", + "http://ats.apps.svc/gomod/github.com/go-zookeeper/zk/com_github_go_zookeeper_zk-v1.0.3.zip", + "https://cache.hawkingrei.com/gomod/github.com/go-zookeeper/zk/com_github_go_zookeeper_zk-v1.0.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-zookeeper/zk/com_github_go_zookeeper_zk-v1.0.3.zip", + ], + ) go_repository( name = "com_github_gobwas_glob", build_file_proto_mode = "disable_global", @@ -2556,39 +2595,39 @@ def go_deps(): name = "com_github_gobwas_httphead", build_file_proto_mode = "disable_global", importpath = "github.com/gobwas/httphead", - sha256 = "5a43ed4a7cd2b063b634f0df5311c0dfa6576683bfc1339f2c5b1b1127fc392b", - strip_prefix = "github.com/gobwas/httphead@v0.0.0-20180130184737-2c6c146eadee", + sha256 = "a4646f1d12786fee639c489219e7c667b10f7dc19578a4e7222bd17c5d9bdf8a", + strip_prefix = "github.com/gobwas/httphead@v0.1.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/gobwas/httphead/com_github_gobwas_httphead-v0.0.0-20180130184737-2c6c146eadee.zip", - "http://ats.apps.svc/gomod/github.com/gobwas/httphead/com_github_gobwas_httphead-v0.0.0-20180130184737-2c6c146eadee.zip", - "https://cache.hawkingrei.com/gomod/github.com/gobwas/httphead/com_github_gobwas_httphead-v0.0.0-20180130184737-2c6c146eadee.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/gobwas/httphead/com_github_gobwas_httphead-v0.0.0-20180130184737-2c6c146eadee.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/gobwas/httphead/com_github_gobwas_httphead-v0.1.0.zip", + "http://ats.apps.svc/gomod/github.com/gobwas/httphead/com_github_gobwas_httphead-v0.1.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/gobwas/httphead/com_github_gobwas_httphead-v0.1.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/gobwas/httphead/com_github_gobwas_httphead-v0.1.0.zip", ], ) go_repository( name = "com_github_gobwas_pool", build_file_proto_mode = "disable_global", importpath = "github.com/gobwas/pool", - sha256 = "52604b1456b92bb310461167a3e6515562f0f4214f01ed6440e3105f78be188f", - strip_prefix = "github.com/gobwas/pool@v0.2.0", + sha256 = "79b505a9f42b141affca1eedd2edc87ae922482d052e16e3b6e5e3c9dcec89e1", + strip_prefix = "github.com/gobwas/pool@v0.2.1", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/gobwas/pool/com_github_gobwas_pool-v0.2.0.zip", - "http://ats.apps.svc/gomod/github.com/gobwas/pool/com_github_gobwas_pool-v0.2.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/gobwas/pool/com_github_gobwas_pool-v0.2.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/gobwas/pool/com_github_gobwas_pool-v0.2.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/gobwas/pool/com_github_gobwas_pool-v0.2.1.zip", + "http://ats.apps.svc/gomod/github.com/gobwas/pool/com_github_gobwas_pool-v0.2.1.zip", + "https://cache.hawkingrei.com/gomod/github.com/gobwas/pool/com_github_gobwas_pool-v0.2.1.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/gobwas/pool/com_github_gobwas_pool-v0.2.1.zip", ], ) go_repository( name = "com_github_gobwas_ws", build_file_proto_mode = "disable_global", importpath = "github.com/gobwas/ws", - sha256 = "f9e5c26e83278f19958c68be7b76ad6711c806b6dae766fad7692d2af867bedd", - strip_prefix = "github.com/gobwas/ws@v1.0.2", + sha256 = "423d7d8b1364e1d9b0c4418905f7dfc29c092dc2db4c80fb66b695d4a002daca", + strip_prefix = "github.com/gobwas/ws@v1.2.1", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/gobwas/ws/com_github_gobwas_ws-v1.0.2.zip", - "http://ats.apps.svc/gomod/github.com/gobwas/ws/com_github_gobwas_ws-v1.0.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/gobwas/ws/com_github_gobwas_ws-v1.0.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/gobwas/ws/com_github_gobwas_ws-v1.0.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/gobwas/ws/com_github_gobwas_ws-v1.2.1.zip", + "http://ats.apps.svc/gomod/github.com/gobwas/ws/com_github_gobwas_ws-v1.2.1.zip", + "https://cache.hawkingrei.com/gomod/github.com/gobwas/ws/com_github_gobwas_ws-v1.2.1.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/gobwas/ws/com_github_gobwas_ws-v1.2.1.zip", ], ) go_repository( @@ -2747,6 +2786,19 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/golang-jwt/jwt/v4/com_github_golang_jwt_jwt_v4-v4.4.2.zip", ], ) + go_repository( + name = "com_github_golang_jwt_jwt_v5", + build_file_proto_mode = "disable_global", + importpath = "github.com/golang-jwt/jwt/v5", + sha256 = "d7d763fe73d36361b7a005a3fa3e7bc908ac395c490e1b5b0fdbc4a65272f0b8", + strip_prefix = "github.com/golang-jwt/jwt/v5@v5.0.0", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/golang-jwt/jwt/v5/com_github_golang_jwt_jwt_v5-v5.0.0.zip", + "http://ats.apps.svc/gomod/github.com/golang-jwt/jwt/v5/com_github_golang_jwt_jwt_v5-v5.0.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/golang-jwt/jwt/v5/com_github_golang_jwt_jwt_v5-v5.0.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/golang-jwt/jwt/v5/com_github_golang_jwt_jwt_v5-v5.0.0.zip", + ], + ) go_repository( name = "com_github_golang_mock", build_file_proto_mode = "disable_global", @@ -2973,16 +3025,16 @@ def go_deps(): ], ) go_repository( - name = "com_github_google_gnostic", + name = "com_github_google_gnostic_models", build_file_proto_mode = "disable_global", - importpath = "github.com/google/gnostic", - sha256 = "34d7aa522313f30b48196821dab8a9ec788349d7be9c8d3167d4b9b328cd8ec8", - strip_prefix = "github.com/google/gnostic@v0.5.7-v3refs", + importpath = "github.com/google/gnostic-models", + sha256 = "5276180bd184f64676867fc2f64a583175968c507d404be6b7f1261ead229484", + strip_prefix = "github.com/google/gnostic-models@v0.6.8", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/google/gnostic/com_github_google_gnostic-v0.5.7-v3refs.zip", - "http://ats.apps.svc/gomod/github.com/google/gnostic/com_github_google_gnostic-v0.5.7-v3refs.zip", - "https://cache.hawkingrei.com/gomod/github.com/google/gnostic/com_github_google_gnostic-v0.5.7-v3refs.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/google/gnostic/com_github_google_gnostic-v0.5.7-v3refs.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/google/gnostic-models/com_github_google_gnostic_models-v0.6.8.zip", + "http://ats.apps.svc/gomod/github.com/google/gnostic-models/com_github_google_gnostic_models-v0.6.8.zip", + "https://cache.hawkingrei.com/gomod/github.com/google/gnostic-models/com_github_google_gnostic_models-v0.6.8.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/google/gnostic-models/com_github_google_gnostic_models-v0.6.8.zip", ], ) go_repository( @@ -3011,6 +3063,19 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/google/go-github/v33/com_github_google_go_github_v33-v33.0.0.zip", ], ) + go_repository( + name = "com_github_google_go_pkcs11", + build_file_proto_mode = "disable_global", + importpath = "github.com/google/go-pkcs11", + sha256 = "b9bf12c2450efa77c8b27134d5f206633057fcf0c324883797d7fde5bc3a4887", + strip_prefix = "github.com/google/go-pkcs11@v0.2.1-0.20230907215043-c6f79328ddf9", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/google/go-pkcs11/com_github_google_go_pkcs11-v0.2.1-0.20230907215043-c6f79328ddf9.zip", + "http://ats.apps.svc/gomod/github.com/google/go-pkcs11/com_github_google_go_pkcs11-v0.2.1-0.20230907215043-c6f79328ddf9.zip", + "https://cache.hawkingrei.com/gomod/github.com/google/go-pkcs11/com_github_google_go_pkcs11-v0.2.1-0.20230907215043-c6f79328ddf9.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/google/go-pkcs11/com_github_google_go_pkcs11-v0.2.1-0.20230907215043-c6f79328ddf9.zip", + ], + ) go_repository( name = "com_github_google_go_querystring", build_file_proto_mode = "disable_global", @@ -3028,13 +3093,13 @@ def go_deps(): name = "com_github_google_gofuzz", build_file_proto_mode = "disable_global", importpath = "github.com/google/gofuzz", - sha256 = "5c41453c0e2df199e899097e95d75f19fdda591e977233f47fab15b84e352b04", - strip_prefix = "github.com/google/gofuzz@v1.1.0", + sha256 = "5948f40af1923d8f98dc1d4191311030e40e0057fb255df19ebc0360f2faac16", + strip_prefix = "github.com/google/gofuzz@v1.2.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/google/gofuzz/com_github_google_gofuzz-v1.1.0.zip", - "http://ats.apps.svc/gomod/github.com/google/gofuzz/com_github_google_gofuzz-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/google/gofuzz/com_github_google_gofuzz-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/google/gofuzz/com_github_google_gofuzz-v1.1.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/google/gofuzz/com_github_google_gofuzz-v1.2.0.zip", + "http://ats.apps.svc/gomod/github.com/google/gofuzz/com_github_google_gofuzz-v1.2.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/google/gofuzz/com_github_google_gofuzz-v1.2.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/google/gofuzz/com_github_google_gofuzz-v1.2.0.zip", ], ) go_repository( @@ -3080,13 +3145,13 @@ def go_deps(): name = "com_github_google_pprof", build_file_proto_mode = "disable_global", importpath = "github.com/google/pprof", - sha256 = "8638c11ff6cfa719453d52f3ccc4159a6749548469b59fff7f6f46b81d4ea434", - strip_prefix = "github.com/google/pprof@v0.0.0-20211122183932-1daafda22083", + sha256 = "60f026eec86d52690ca1ee088f62bceafc25a93073ab62994434542ff9d708d6", + strip_prefix = "github.com/google/pprof@v0.0.0-20230926050212-f7f687d19a98", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/google/pprof/com_github_google_pprof-v0.0.0-20211122183932-1daafda22083.zip", - "http://ats.apps.svc/gomod/github.com/google/pprof/com_github_google_pprof-v0.0.0-20211122183932-1daafda22083.zip", - "https://cache.hawkingrei.com/gomod/github.com/google/pprof/com_github_google_pprof-v0.0.0-20211122183932-1daafda22083.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/google/pprof/com_github_google_pprof-v0.0.0-20211122183932-1daafda22083.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/google/pprof/com_github_google_pprof-v0.0.0-20230926050212-f7f687d19a98.zip", + "http://ats.apps.svc/gomod/github.com/google/pprof/com_github_google_pprof-v0.0.0-20230926050212-f7f687d19a98.zip", + "https://cache.hawkingrei.com/gomod/github.com/google/pprof/com_github_google_pprof-v0.0.0-20230926050212-f7f687d19a98.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/google/pprof/com_github_google_pprof-v0.0.0-20230926050212-f7f687d19a98.zip", ], ) go_repository( @@ -3119,13 +3184,13 @@ def go_deps(): name = "com_github_google_s2a_go", build_file_proto_mode = "disable_global", importpath = "github.com/google/s2a-go", - sha256 = "b01ff39fc8c27f944da1c3f78106d57e165f234d98115c344f448b603ae24ff3", - strip_prefix = "github.com/google/s2a-go@v0.1.4", + sha256 = "4392e675b6f0ff0b90f970c0280d63e34b32d077e1f8c0abd1006ad0dbeb2f2e", + strip_prefix = "github.com/google/s2a-go@v0.1.7", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/google/s2a-go/com_github_google_s2a_go-v0.1.4.zip", - "http://ats.apps.svc/gomod/github.com/google/s2a-go/com_github_google_s2a_go-v0.1.4.zip", - "https://cache.hawkingrei.com/gomod/github.com/google/s2a-go/com_github_google_s2a_go-v0.1.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/google/s2a-go/com_github_google_s2a_go-v0.1.4.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/google/s2a-go/com_github_google_s2a_go-v0.1.7.zip", + "http://ats.apps.svc/gomod/github.com/google/s2a-go/com_github_google_s2a_go-v0.1.7.zip", + "https://cache.hawkingrei.com/gomod/github.com/google/s2a-go/com_github_google_s2a_go-v0.1.7.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/google/s2a-go/com_github_google_s2a_go-v0.1.7.zip", ], ) go_repository( @@ -3145,26 +3210,26 @@ def go_deps(): name = "com_github_google_uuid", build_file_proto_mode = "disable_global", importpath = "github.com/google/uuid", - sha256 = "9d9d6cfb28ce6dbe4b518c42c6bccd67bb531a106859808f36e82a5c3fb8c64d", - strip_prefix = "github.com/google/uuid@v1.3.1", + sha256 = "15ff3397648edf4999d37359b3fc041212d49bcd6b457327c0f8dff19f594050", + strip_prefix = "github.com/google/uuid@v1.4.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/google/uuid/com_github_google_uuid-v1.3.1.zip", - "http://ats.apps.svc/gomod/github.com/google/uuid/com_github_google_uuid-v1.3.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/google/uuid/com_github_google_uuid-v1.3.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/google/uuid/com_github_google_uuid-v1.3.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/google/uuid/com_github_google_uuid-v1.4.0.zip", + "http://ats.apps.svc/gomod/github.com/google/uuid/com_github_google_uuid-v1.4.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/google/uuid/com_github_google_uuid-v1.4.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/google/uuid/com_github_google_uuid-v1.4.0.zip", ], ) go_repository( name = "com_github_googleapis_enterprise_certificate_proxy", build_file_proto_mode = "disable_global", importpath = "github.com/googleapis/enterprise-certificate-proxy", - sha256 = "f0642434f18b33f21c5b2a908907f4c3ae24223791c1c4b92d13d351bfa7ed7e", - strip_prefix = "github.com/googleapis/enterprise-certificate-proxy@v0.2.4", + sha256 = "56127cb8bea94f438c4e867f9217bdfc55865282953e54c74eee019575c1020e", + strip_prefix = "github.com/googleapis/enterprise-certificate-proxy@v0.3.2", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/googleapis/enterprise-certificate-proxy/com_github_googleapis_enterprise_certificate_proxy-v0.2.4.zip", - "http://ats.apps.svc/gomod/github.com/googleapis/enterprise-certificate-proxy/com_github_googleapis_enterprise_certificate_proxy-v0.2.4.zip", - "https://cache.hawkingrei.com/gomod/github.com/googleapis/enterprise-certificate-proxy/com_github_googleapis_enterprise_certificate_proxy-v0.2.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/googleapis/enterprise-certificate-proxy/com_github_googleapis_enterprise_certificate_proxy-v0.2.4.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/googleapis/enterprise-certificate-proxy/com_github_googleapis_enterprise_certificate_proxy-v0.3.2.zip", + "http://ats.apps.svc/gomod/github.com/googleapis/enterprise-certificate-proxy/com_github_googleapis_enterprise_certificate_proxy-v0.3.2.zip", + "https://cache.hawkingrei.com/gomod/github.com/googleapis/enterprise-certificate-proxy/com_github_googleapis_enterprise_certificate_proxy-v0.3.2.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/googleapis/enterprise-certificate-proxy/com_github_googleapis_enterprise_certificate_proxy-v0.3.2.zip", ], ) go_repository( @@ -3180,30 +3245,17 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/googleapis/gax-go/v2/com_github_googleapis_gax_go_v2-v2.12.0.zip", ], ) - go_repository( - name = "com_github_googleapis_gnostic", - build_file_proto_mode = "disable_global", - importpath = "github.com/googleapis/gnostic", - sha256 = "6a594aca0b27b1618faa8cfe5f2c7b8385258831d409276ee6024ba7a7f70b42", - strip_prefix = "github.com/googleapis/gnostic@v0.2.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/googleapis/gnostic/com_github_googleapis_gnostic-v0.2.0.zip", - "http://ats.apps.svc/gomod/github.com/googleapis/gnostic/com_github_googleapis_gnostic-v0.2.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/googleapis/gnostic/com_github_googleapis_gnostic-v0.2.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/googleapis/gnostic/com_github_googleapis_gnostic-v0.2.0.zip", - ], - ) go_repository( name = "com_github_gophercloud_gophercloud", build_file_proto_mode = "disable_global", importpath = "github.com/gophercloud/gophercloud", - sha256 = "34a191cae40881f94769d10990921db8092af81a123214969f668e9c8a79ecd7", - strip_prefix = "github.com/gophercloud/gophercloud@v0.0.0-20190301152420-fca40860790e", + sha256 = "4d420d960690f5dcde091c02fa3131ba1263ba49e57fe8fb52582fdb382ed176", + strip_prefix = "github.com/gophercloud/gophercloud@v1.7.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/gophercloud/gophercloud/com_github_gophercloud_gophercloud-v0.0.0-20190301152420-fca40860790e.zip", - "http://ats.apps.svc/gomod/github.com/gophercloud/gophercloud/com_github_gophercloud_gophercloud-v0.0.0-20190301152420-fca40860790e.zip", - "https://cache.hawkingrei.com/gomod/github.com/gophercloud/gophercloud/com_github_gophercloud_gophercloud-v0.0.0-20190301152420-fca40860790e.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/gophercloud/gophercloud/com_github_gophercloud_gophercloud-v0.0.0-20190301152420-fca40860790e.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/gophercloud/gophercloud/com_github_gophercloud_gophercloud-v1.7.0.zip", + "http://ats.apps.svc/gomod/github.com/gophercloud/gophercloud/com_github_gophercloud_gophercloud-v1.7.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/gophercloud/gophercloud/com_github_gophercloud_gophercloud-v1.7.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/gophercloud/gophercloud/com_github_gophercloud_gophercloud-v1.7.0.zip", ], ) go_repository( @@ -3232,19 +3284,6 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/gordonklaus/ineffassign/com_github_gordonklaus_ineffassign-v0.0.0-20230610083614-0e73809eb601.zip", ], ) - go_repository( - name = "com_github_gorilla_context", - build_file_proto_mode = "disable_global", - importpath = "github.com/gorilla/context", - sha256 = "4ec8e01fe741a931edeebdee9348ffb49b5cc565ca245551d0d20b67062e6f0b", - strip_prefix = "github.com/gorilla/context@v1.1.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/gorilla/context/com_github_gorilla_context-v1.1.1.zip", - "http://ats.apps.svc/gomod/github.com/gorilla/context/com_github_gorilla_context-v1.1.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/gorilla/context/com_github_gorilla_context-v1.1.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/gorilla/context/com_github_gorilla_context-v1.1.1.zip", - ], - ) go_repository( name = "com_github_gorilla_handlers", build_file_proto_mode = "disable_global", @@ -3301,13 +3340,13 @@ def go_deps(): name = "com_github_gorilla_websocket", build_file_proto_mode = "disable_global", importpath = "github.com/gorilla/websocket", - sha256 = "d0d1728deaa06dac190bf4964c9c6395923403eae337cb3305d6dda18ef07337", - strip_prefix = "github.com/gorilla/websocket@v1.4.2", + sha256 = "690ea4d1ffe00ab5fcb6d63e2ec3783fc5a58e9d0f1789ea5dc9b6663deee6d5", + strip_prefix = "github.com/gorilla/websocket@v1.5.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/gorilla/websocket/com_github_gorilla_websocket-v1.4.2.zip", - "http://ats.apps.svc/gomod/github.com/gorilla/websocket/com_github_gorilla_websocket-v1.4.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/gorilla/websocket/com_github_gorilla_websocket-v1.4.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/gorilla/websocket/com_github_gorilla_websocket-v1.4.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/gorilla/websocket/com_github_gorilla_websocket-v1.5.0.zip", + "http://ats.apps.svc/gomod/github.com/gorilla/websocket/com_github_gorilla_websocket-v1.5.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/gorilla/websocket/com_github_gorilla_websocket-v1.5.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/gorilla/websocket/com_github_gorilla_websocket-v1.5.0.zip", ], ) go_repository( @@ -3375,6 +3414,19 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/gostaticanalysis/testutil/com_github_gostaticanalysis_testutil-v0.4.0.zip", ], ) + go_repository( + name = "com_github_grafana_regexp", + build_file_proto_mode = "disable_global", + importpath = "github.com/grafana/regexp", + sha256 = "32777ad2e39bac06b359b0d93460530a41a1e0cb7cfd92faac82feb364ce8c91", + strip_prefix = "github.com/grafana/regexp@v0.0.0-20221122212121-6b5c0a4cb7fd", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/grafana/regexp/com_github_grafana_regexp-v0.0.0-20221122212121-6b5c0a4cb7fd.zip", + "http://ats.apps.svc/gomod/github.com/grafana/regexp/com_github_grafana_regexp-v0.0.0-20221122212121-6b5c0a4cb7fd.zip", + "https://cache.hawkingrei.com/gomod/github.com/grafana/regexp/com_github_grafana_regexp-v0.0.0-20221122212121-6b5c0a4cb7fd.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/grafana/regexp/com_github_grafana_regexp-v0.0.0-20221122212121-6b5c0a4cb7fd.zip", + ], + ) go_repository( name = "com_github_grpc_ecosystem_go_grpc_middleware", build_file_proto_mode = "disable_global", @@ -3420,94 +3472,98 @@ def go_deps(): ], ) go_repository( - name = "com_github_grpc_ecosystem_grpc_opentracing", + name = "com_github_grpc_ecosystem_grpc_gateway_v2", build_file_proto_mode = "disable_global", - importpath = "github.com/grpc-ecosystem/grpc-opentracing", - sha256 = "0606bde24e978e9cd91ae45ca9e5222ce695c21a07ae02e77546496bf23b1c62", - strip_prefix = "github.com/grpc-ecosystem/grpc-opentracing@v0.0.0-20180507213350-8e809c8a8645", + importpath = "github.com/grpc-ecosystem/grpc-gateway/v2", + patch_args = ["-p1"], + patches = [ + "//build/patches:com_github_grpc_ecosystem_grpc_gateway_v2.patch", + ], + sha256 = "12995bc9a8d7a18ff3fb7fe3575dd2d9b7447d2f2749f0dbd99ef2efbaf9a6e2", + strip_prefix = "github.com/grpc-ecosystem/grpc-gateway/v2@v2.16.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/grpc-ecosystem/grpc-opentracing/com_github_grpc_ecosystem_grpc_opentracing-v0.0.0-20180507213350-8e809c8a8645.zip", - "http://ats.apps.svc/gomod/github.com/grpc-ecosystem/grpc-opentracing/com_github_grpc_ecosystem_grpc_opentracing-v0.0.0-20180507213350-8e809c8a8645.zip", - "https://cache.hawkingrei.com/gomod/github.com/grpc-ecosystem/grpc-opentracing/com_github_grpc_ecosystem_grpc_opentracing-v0.0.0-20180507213350-8e809c8a8645.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/grpc-ecosystem/grpc-opentracing/com_github_grpc_ecosystem_grpc_opentracing-v0.0.0-20180507213350-8e809c8a8645.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/grpc-ecosystem/grpc-gateway/v2/com_github_grpc_ecosystem_grpc_gateway_v2-v2.16.0.zip", + "http://ats.apps.svc/gomod/github.com/grpc-ecosystem/grpc-gateway/v2/com_github_grpc_ecosystem_grpc_gateway_v2-v2.16.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/grpc-ecosystem/grpc-gateway/v2/com_github_grpc_ecosystem_grpc_gateway_v2-v2.16.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/grpc-ecosystem/grpc-gateway/v2/com_github_grpc_ecosystem_grpc_gateway_v2-v2.16.0.zip", ], ) go_repository( name = "com_github_hashicorp_consul_api", build_file_proto_mode = "disable_global", importpath = "github.com/hashicorp/consul/api", - sha256 = "3971a179e700f1a839efe3b5a61d782d07124f7a4d2ad290ad37eaa888907a19", - strip_prefix = "github.com/hashicorp/consul/api@v1.1.0", + sha256 = "8b2511a1f51609c6ead859a847f071cf03c93bf7a9dc7dcd95727b65c0647c3d", + strip_prefix = "github.com/hashicorp/consul/api@v1.25.1", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/consul/api/com_github_hashicorp_consul_api-v1.1.0.zip", - "http://ats.apps.svc/gomod/github.com/hashicorp/consul/api/com_github_hashicorp_consul_api-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/hashicorp/consul/api/com_github_hashicorp_consul_api-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/consul/api/com_github_hashicorp_consul_api-v1.1.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/consul/api/com_github_hashicorp_consul_api-v1.25.1.zip", + "http://ats.apps.svc/gomod/github.com/hashicorp/consul/api/com_github_hashicorp_consul_api-v1.25.1.zip", + "https://cache.hawkingrei.com/gomod/github.com/hashicorp/consul/api/com_github_hashicorp_consul_api-v1.25.1.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/consul/api/com_github_hashicorp_consul_api-v1.25.1.zip", ], ) go_repository( - name = "com_github_hashicorp_consul_sdk", + name = "com_github_hashicorp_cronexpr", build_file_proto_mode = "disable_global", - importpath = "github.com/hashicorp/consul/sdk", - sha256 = "85188b2110551574646fcce5aa0a72dbde588596f3ebcf14964a3c4ce9c354ea", - strip_prefix = "github.com/hashicorp/consul/sdk@v0.1.1", + importpath = "github.com/hashicorp/cronexpr", + sha256 = "d4a26ea051d2e1c3518ae9bae405db83f91b4b3bf2cb9fec903aff10e447cfa7", + strip_prefix = "github.com/hashicorp/cronexpr@v1.1.2", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/consul/sdk/com_github_hashicorp_consul_sdk-v0.1.1.zip", - "http://ats.apps.svc/gomod/github.com/hashicorp/consul/sdk/com_github_hashicorp_consul_sdk-v0.1.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/hashicorp/consul/sdk/com_github_hashicorp_consul_sdk-v0.1.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/consul/sdk/com_github_hashicorp_consul_sdk-v0.1.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/cronexpr/com_github_hashicorp_cronexpr-v1.1.2.zip", + "http://ats.apps.svc/gomod/github.com/hashicorp/cronexpr/com_github_hashicorp_cronexpr-v1.1.2.zip", + "https://cache.hawkingrei.com/gomod/github.com/hashicorp/cronexpr/com_github_hashicorp_cronexpr-v1.1.2.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/cronexpr/com_github_hashicorp_cronexpr-v1.1.2.zip", ], ) go_repository( name = "com_github_hashicorp_errwrap", build_file_proto_mode = "disable_global", importpath = "github.com/hashicorp/errwrap", - sha256 = "ccdf4c90f894d8a5fde4e79d5828c5d27a13e9f7ce3006dd72ce76e6e17cdeb2", - strip_prefix = "github.com/hashicorp/errwrap@v1.0.0", + sha256 = "209ae99bc039443e28e4d6bb66517d1756d9468b7578d31f1b63a28103d8e18c", + strip_prefix = "github.com/hashicorp/errwrap@v1.1.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/errwrap/com_github_hashicorp_errwrap-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/hashicorp/errwrap/com_github_hashicorp_errwrap-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/hashicorp/errwrap/com_github_hashicorp_errwrap-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/errwrap/com_github_hashicorp_errwrap-v1.0.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/errwrap/com_github_hashicorp_errwrap-v1.1.0.zip", + "http://ats.apps.svc/gomod/github.com/hashicorp/errwrap/com_github_hashicorp_errwrap-v1.1.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/hashicorp/errwrap/com_github_hashicorp_errwrap-v1.1.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/errwrap/com_github_hashicorp_errwrap-v1.1.0.zip", ], ) go_repository( name = "com_github_hashicorp_go_cleanhttp", build_file_proto_mode = "disable_global", importpath = "github.com/hashicorp/go-cleanhttp", - sha256 = "e3cc9964b0bc80c6156d6fb064abcb62ff8c00df8be8009b6f6d3aefc2776a23", - strip_prefix = "github.com/hashicorp/go-cleanhttp@v0.5.1", + sha256 = "e9f3dcfcb33172ba499b4f8e888169252d7f1e072082182124a6e2053523f7df", + strip_prefix = "github.com/hashicorp/go-cleanhttp@v0.5.2", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/go-cleanhttp/com_github_hashicorp_go_cleanhttp-v0.5.1.zip", - "http://ats.apps.svc/gomod/github.com/hashicorp/go-cleanhttp/com_github_hashicorp_go_cleanhttp-v0.5.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/hashicorp/go-cleanhttp/com_github_hashicorp_go_cleanhttp-v0.5.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/go-cleanhttp/com_github_hashicorp_go_cleanhttp-v0.5.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/go-cleanhttp/com_github_hashicorp_go_cleanhttp-v0.5.2.zip", + "http://ats.apps.svc/gomod/github.com/hashicorp/go-cleanhttp/com_github_hashicorp_go_cleanhttp-v0.5.2.zip", + "https://cache.hawkingrei.com/gomod/github.com/hashicorp/go-cleanhttp/com_github_hashicorp_go_cleanhttp-v0.5.2.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/go-cleanhttp/com_github_hashicorp_go_cleanhttp-v0.5.2.zip", ], ) go_repository( - name = "com_github_hashicorp_go_immutable_radix", + name = "com_github_hashicorp_go_hclog", build_file_proto_mode = "disable_global", - importpath = "github.com/hashicorp/go-immutable-radix", - sha256 = "ab5d08582870e7177a74ba2c84c327aece8655cbd94653f801a0551156bb8a9c", - strip_prefix = "github.com/hashicorp/go-immutable-radix@v1.0.0", + importpath = "github.com/hashicorp/go-hclog", + sha256 = "37eae99309c542b32aa7e28bcd0236e1ded8acce4aadc25d8e5a8ab03066482d", + strip_prefix = "github.com/hashicorp/go-hclog@v1.5.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/go-immutable-radix/com_github_hashicorp_go_immutable_radix-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/hashicorp/go-immutable-radix/com_github_hashicorp_go_immutable_radix-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/hashicorp/go-immutable-radix/com_github_hashicorp_go_immutable_radix-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/go-immutable-radix/com_github_hashicorp_go_immutable_radix-v1.0.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/go-hclog/com_github_hashicorp_go_hclog-v1.5.0.zip", + "http://ats.apps.svc/gomod/github.com/hashicorp/go-hclog/com_github_hashicorp_go_hclog-v1.5.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/hashicorp/go-hclog/com_github_hashicorp_go_hclog-v1.5.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/go-hclog/com_github_hashicorp_go_hclog-v1.5.0.zip", ], ) go_repository( - name = "com_github_hashicorp_go_msgpack", + name = "com_github_hashicorp_go_immutable_radix", build_file_proto_mode = "disable_global", - importpath = "github.com/hashicorp/go-msgpack", - sha256 = "24cb41ed887c67c361bfa7b87f79eff4d07152196a015d29ae2e1e51c14066d7", - strip_prefix = "github.com/hashicorp/go-msgpack@v0.5.4", + importpath = "github.com/hashicorp/go-immutable-radix", + sha256 = "47f3d79b57082d5db3f966547ad4de2a00544dfb362790fbf2cef1a161b4de3f", + strip_prefix = "github.com/hashicorp/go-immutable-radix@v1.3.1", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/go-msgpack/com_github_hashicorp_go_msgpack-v0.5.4.zip", - "http://ats.apps.svc/gomod/github.com/hashicorp/go-msgpack/com_github_hashicorp_go_msgpack-v0.5.4.zip", - "https://cache.hawkingrei.com/gomod/github.com/hashicorp/go-msgpack/com_github_hashicorp_go_msgpack-v0.5.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/go-msgpack/com_github_hashicorp_go_msgpack-v0.5.4.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/go-immutable-radix/com_github_hashicorp_go_immutable_radix-v1.3.1.zip", + "http://ats.apps.svc/gomod/github.com/hashicorp/go-immutable-radix/com_github_hashicorp_go_immutable_radix-v1.3.1.zip", + "https://cache.hawkingrei.com/gomod/github.com/hashicorp/go-immutable-radix/com_github_hashicorp_go_immutable_radix-v1.3.1.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/go-immutable-radix/com_github_hashicorp_go_immutable_radix-v1.3.1.zip", ], ) go_repository( @@ -3524,55 +3580,29 @@ def go_deps(): ], ) go_repository( - name = "com_github_hashicorp_go_net", + name = "com_github_hashicorp_go_retryablehttp", build_file_proto_mode = "disable_global", - importpath = "github.com/hashicorp/go.net", - sha256 = "71564aa3cb6e2820ee31e4d9e264e4ed889c7916f958b2f54c6f3004d4fcd8d2", - strip_prefix = "github.com/hashicorp/go.net@v0.0.1", + importpath = "github.com/hashicorp/go-retryablehttp", + sha256 = "00f6d85c5c8b327f56d49ad48ef1d2df94affea340ca46ce827415ba75db4712", + strip_prefix = "github.com/hashicorp/go-retryablehttp@v0.7.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/go.net/com_github_hashicorp_go_net-v0.0.1.zip", - "http://ats.apps.svc/gomod/github.com/hashicorp/go.net/com_github_hashicorp_go_net-v0.0.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/hashicorp/go.net/com_github_hashicorp_go_net-v0.0.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/go.net/com_github_hashicorp_go_net-v0.0.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/go-retryablehttp/com_github_hashicorp_go_retryablehttp-v0.7.4.zip", + "http://ats.apps.svc/gomod/github.com/hashicorp/go-retryablehttp/com_github_hashicorp_go_retryablehttp-v0.7.4.zip", + "https://cache.hawkingrei.com/gomod/github.com/hashicorp/go-retryablehttp/com_github_hashicorp_go_retryablehttp-v0.7.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/go-retryablehttp/com_github_hashicorp_go_retryablehttp-v0.7.4.zip", ], ) go_repository( name = "com_github_hashicorp_go_rootcerts", build_file_proto_mode = "disable_global", importpath = "github.com/hashicorp/go-rootcerts", - sha256 = "4393b0b9cd741e00de5624d5124cf054bf50c57231d4b1caff84c8a4d16c6a47", - strip_prefix = "github.com/hashicorp/go-rootcerts@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/go-rootcerts/com_github_hashicorp_go_rootcerts-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/hashicorp/go-rootcerts/com_github_hashicorp_go_rootcerts-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/hashicorp/go-rootcerts/com_github_hashicorp_go_rootcerts-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/go-rootcerts/com_github_hashicorp_go_rootcerts-v1.0.0.zip", - ], - ) - go_repository( - name = "com_github_hashicorp_go_sockaddr", - build_file_proto_mode = "disable_global", - importpath = "github.com/hashicorp/go-sockaddr", - sha256 = "50c1b60863b0cd31d03b26d3975f76cab55466666c067cd1823481a61f19af33", - strip_prefix = "github.com/hashicorp/go-sockaddr@v1.0.2", + sha256 = "864a48e642e87a273fb5ef60bb3575bd74a7090510f93143163fa6700be31948", + strip_prefix = "github.com/hashicorp/go-rootcerts@v1.0.2", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/go-sockaddr/com_github_hashicorp_go_sockaddr-v1.0.2.zip", - "http://ats.apps.svc/gomod/github.com/hashicorp/go-sockaddr/com_github_hashicorp_go_sockaddr-v1.0.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/hashicorp/go-sockaddr/com_github_hashicorp_go_sockaddr-v1.0.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/go-sockaddr/com_github_hashicorp_go_sockaddr-v1.0.2.zip", - ], - ) - go_repository( - name = "com_github_hashicorp_go_syslog", - build_file_proto_mode = "disable_global", - importpath = "github.com/hashicorp/go-syslog", - sha256 = "a0ca8b61ea365e9ecdca513b94f200aef3ff68b4c95d9dabc88ca25fcb33bce6", - strip_prefix = "github.com/hashicorp/go-syslog@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/go-syslog/com_github_hashicorp_go_syslog-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/hashicorp/go-syslog/com_github_hashicorp_go_syslog-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/hashicorp/go-syslog/com_github_hashicorp_go_syslog-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/go-syslog/com_github_hashicorp_go_syslog-v1.0.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/go-rootcerts/com_github_hashicorp_go_rootcerts-v1.0.2.zip", + "http://ats.apps.svc/gomod/github.com/hashicorp/go-rootcerts/com_github_hashicorp_go_rootcerts-v1.0.2.zip", + "https://cache.hawkingrei.com/gomod/github.com/hashicorp/go-rootcerts/com_github_hashicorp_go_rootcerts-v1.0.2.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/go-rootcerts/com_github_hashicorp_go_rootcerts-v1.0.2.zip", ], ) go_repository( @@ -3605,13 +3635,13 @@ def go_deps(): name = "com_github_hashicorp_golang_lru", build_file_proto_mode = "disable_global", importpath = "github.com/hashicorp/golang-lru", - sha256 = "0f8aaf311e48fba046920d38b999c066da69997b479f4eca126fe968899717da", - strip_prefix = "github.com/hashicorp/golang-lru@v0.5.1", + sha256 = "75a21bee633745563dc3161386b2245fc126f882d2e5d2d97c0c6899511a5faf", + strip_prefix = "github.com/hashicorp/golang-lru@v0.6.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/golang-lru/com_github_hashicorp_golang_lru-v0.5.1.zip", - "http://ats.apps.svc/gomod/github.com/hashicorp/golang-lru/com_github_hashicorp_golang_lru-v0.5.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/hashicorp/golang-lru/com_github_hashicorp_golang_lru-v0.5.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/golang-lru/com_github_hashicorp_golang_lru-v0.5.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/golang-lru/com_github_hashicorp_golang_lru-v0.6.0.zip", + "http://ats.apps.svc/gomod/github.com/hashicorp/golang-lru/com_github_hashicorp_golang_lru-v0.6.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/hashicorp/golang-lru/com_github_hashicorp_golang_lru-v0.6.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/golang-lru/com_github_hashicorp_golang_lru-v0.6.0.zip", ], ) go_repository( @@ -3628,55 +3658,29 @@ def go_deps(): ], ) go_repository( - name = "com_github_hashicorp_logutils", + name = "com_github_hashicorp_nomad_api", build_file_proto_mode = "disable_global", - importpath = "github.com/hashicorp/logutils", - sha256 = "0e88424578d1d6b7793b63d30c180a353ce8041701d25dc7c3bcd9841c36db5b", - strip_prefix = "github.com/hashicorp/logutils@v1.0.0", + importpath = "github.com/hashicorp/nomad/api", + sha256 = "84f0a19132b5bc9b3694d113d0bd551a605717728f6b13a474db9bfbec502bc6", + strip_prefix = "github.com/hashicorp/nomad/api@v0.0.0-20230721134942-515895c7690c", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/logutils/com_github_hashicorp_logutils-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/hashicorp/logutils/com_github_hashicorp_logutils-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/hashicorp/logutils/com_github_hashicorp_logutils-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/logutils/com_github_hashicorp_logutils-v1.0.0.zip", - ], - ) - go_repository( - name = "com_github_hashicorp_mdns", - build_file_proto_mode = "disable_global", - importpath = "github.com/hashicorp/mdns", - sha256 = "a1e1440d9c4189636b6cd30ec7592beab68139a4d87e580f5a1fed029778bdc9", - strip_prefix = "github.com/hashicorp/mdns@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/mdns/com_github_hashicorp_mdns-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/hashicorp/mdns/com_github_hashicorp_mdns-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/hashicorp/mdns/com_github_hashicorp_mdns-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/mdns/com_github_hashicorp_mdns-v1.0.0.zip", - ], - ) - go_repository( - name = "com_github_hashicorp_memberlist", - build_file_proto_mode = "disable_global", - importpath = "github.com/hashicorp/memberlist", - sha256 = "9f83e052b0a5d96f6d8144a40c297aea37137bef7f58aa496bc5eab4e0c54e0b", - strip_prefix = "github.com/hashicorp/memberlist@v0.1.3", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/memberlist/com_github_hashicorp_memberlist-v0.1.3.zip", - "http://ats.apps.svc/gomod/github.com/hashicorp/memberlist/com_github_hashicorp_memberlist-v0.1.3.zip", - "https://cache.hawkingrei.com/gomod/github.com/hashicorp/memberlist/com_github_hashicorp_memberlist-v0.1.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/memberlist/com_github_hashicorp_memberlist-v0.1.3.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/nomad/api/com_github_hashicorp_nomad_api-v0.0.0-20230721134942-515895c7690c.zip", + "http://ats.apps.svc/gomod/github.com/hashicorp/nomad/api/com_github_hashicorp_nomad_api-v0.0.0-20230721134942-515895c7690c.zip", + "https://cache.hawkingrei.com/gomod/github.com/hashicorp/nomad/api/com_github_hashicorp_nomad_api-v0.0.0-20230721134942-515895c7690c.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/nomad/api/com_github_hashicorp_nomad_api-v0.0.0-20230721134942-515895c7690c.zip", ], ) go_repository( name = "com_github_hashicorp_serf", build_file_proto_mode = "disable_global", importpath = "github.com/hashicorp/serf", - sha256 = "0f431658e69625f61defd36073e893ce21f04fe5a96484b812d47e32d4154be0", - strip_prefix = "github.com/hashicorp/serf@v0.8.2", + sha256 = "661b6ad5df497dcda0f581607b003e40646ef9f3ca09d12bdeec7cb3d16ad370", + strip_prefix = "github.com/hashicorp/serf@v0.10.1", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/serf/com_github_hashicorp_serf-v0.8.2.zip", - "http://ats.apps.svc/gomod/github.com/hashicorp/serf/com_github_hashicorp_serf-v0.8.2.zip", - "https://cache.hawkingrei.com/gomod/github.com/hashicorp/serf/com_github_hashicorp_serf-v0.8.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/serf/com_github_hashicorp_serf-v0.8.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/hashicorp/serf/com_github_hashicorp_serf-v0.10.1.zip", + "http://ats.apps.svc/gomod/github.com/hashicorp/serf/com_github_hashicorp_serf-v0.10.1.zip", + "https://cache.hawkingrei.com/gomod/github.com/hashicorp/serf/com_github_hashicorp_serf-v0.10.1.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hashicorp/serf/com_github_hashicorp_serf-v0.10.1.zip", ], ) go_repository( @@ -3692,6 +3696,19 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/HdrHistogram/hdrhistogram-go/com_github_hdrhistogram_hdrhistogram_go-v1.1.2.zip", ], ) + go_repository( + name = "com_github_hetznercloud_hcloud_go_v2", + build_file_proto_mode = "disable_global", + importpath = "github.com/hetznercloud/hcloud-go/v2", + sha256 = "71e2f7c3acd1b9b8838ce91b16baf302bb39684b03af90f1f710d4917d754ca2", + strip_prefix = "github.com/hetznercloud/hcloud-go/v2@v2.4.0", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/hetznercloud/hcloud-go/v2/com_github_hetznercloud_hcloud_go_v2-v2.4.0.zip", + "http://ats.apps.svc/gomod/github.com/hetznercloud/hcloud-go/v2/com_github_hetznercloud_hcloud_go_v2-v2.4.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/hetznercloud/hcloud-go/v2/com_github_hetznercloud_hcloud_go_v2-v2.4.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/hetznercloud/hcloud-go/v2/com_github_hetznercloud_hcloud_go_v2-v2.4.0.zip", + ], + ) go_repository( name = "com_github_hexops_gotextdiff", build_file_proto_mode = "disable_global", @@ -3761,26 +3778,26 @@ def go_deps(): name = "com_github_ianlancetaylor_demangle", build_file_proto_mode = "disable_global", importpath = "github.com/ianlancetaylor/demangle", - sha256 = "5bbddd83cb4b8a42d741fb6a2b50826ebbee800c51b7a9e75dfd2bdc373278a1", - strip_prefix = "github.com/ianlancetaylor/demangle@v0.0.0-20210905161508-09a460cdf81d", + sha256 = "b6426a32f7d0525c6a6012a5be7b14ba57a59810d949fadb3bfec22f66604cac", + strip_prefix = "github.com/ianlancetaylor/demangle@v0.0.0-20230524184225-eabc099b10ab", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/ianlancetaylor/demangle/com_github_ianlancetaylor_demangle-v0.0.0-20210905161508-09a460cdf81d.zip", - "http://ats.apps.svc/gomod/github.com/ianlancetaylor/demangle/com_github_ianlancetaylor_demangle-v0.0.0-20210905161508-09a460cdf81d.zip", - "https://cache.hawkingrei.com/gomod/github.com/ianlancetaylor/demangle/com_github_ianlancetaylor_demangle-v0.0.0-20210905161508-09a460cdf81d.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ianlancetaylor/demangle/com_github_ianlancetaylor_demangle-v0.0.0-20210905161508-09a460cdf81d.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/ianlancetaylor/demangle/com_github_ianlancetaylor_demangle-v0.0.0-20230524184225-eabc099b10ab.zip", + "http://ats.apps.svc/gomod/github.com/ianlancetaylor/demangle/com_github_ianlancetaylor_demangle-v0.0.0-20230524184225-eabc099b10ab.zip", + "https://cache.hawkingrei.com/gomod/github.com/ianlancetaylor/demangle/com_github_ianlancetaylor_demangle-v0.0.0-20230524184225-eabc099b10ab.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ianlancetaylor/demangle/com_github_ianlancetaylor_demangle-v0.0.0-20230524184225-eabc099b10ab.zip", ], ) go_repository( name = "com_github_imdario_mergo", build_file_proto_mode = "disable_global", importpath = "github.com/imdario/mergo", - sha256 = "47332eb559e993749cc31292807b3a639a470032ec603fd3c15fbe46f82192f6", - strip_prefix = "github.com/imdario/mergo@v0.3.11", + sha256 = "536b0b87ec2b9f02d759a3a01604043b538e15e62924a29e34cfc2b16a1cf580", + strip_prefix = "github.com/imdario/mergo@v0.3.16", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/imdario/mergo/com_github_imdario_mergo-v0.3.11.zip", - "http://ats.apps.svc/gomod/github.com/imdario/mergo/com_github_imdario_mergo-v0.3.11.zip", - "https://cache.hawkingrei.com/gomod/github.com/imdario/mergo/com_github_imdario_mergo-v0.3.11.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/imdario/mergo/com_github_imdario_mergo-v0.3.11.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/imdario/mergo/com_github_imdario_mergo-v0.3.16.zip", + "http://ats.apps.svc/gomod/github.com/imdario/mergo/com_github_imdario_mergo-v0.3.16.zip", + "https://cache.hawkingrei.com/gomod/github.com/imdario/mergo/com_github_imdario_mergo-v0.3.16.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/imdario/mergo/com_github_imdario_mergo-v0.3.16.zip", ], ) go_repository( @@ -3809,19 +3826,6 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/inconshreveable/mousetrap/com_github_inconshreveable_mousetrap-v1.1.0.zip", ], ) - go_repository( - name = "com_github_influxdata_influxdb", - build_file_proto_mode = "disable_global", - importpath = "github.com/influxdata/influxdb", - sha256 = "a59a6a42828346f125f7d97be36639cda093ce1c311e1e3fd292680b4474ced6", - strip_prefix = "github.com/influxdata/influxdb@v0.0.0-20170331210902-15e594fc09f1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/influxdata/influxdb/com_github_influxdata_influxdb-v0.0.0-20170331210902-15e594fc09f1.zip", - "http://ats.apps.svc/gomod/github.com/influxdata/influxdb/com_github_influxdata_influxdb-v0.0.0-20170331210902-15e594fc09f1.zip", - "https://cache.hawkingrei.com/gomod/github.com/influxdata/influxdb/com_github_influxdata_influxdb-v0.0.0-20170331210902-15e594fc09f1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/influxdata/influxdb/com_github_influxdata_influxdb-v0.0.0-20170331210902-15e594fc09f1.zip", - ], - ) go_repository( name = "com_github_influxdata_tdigest", build_file_proto_mode = "disable_global", @@ -3835,6 +3839,19 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/influxdata/tdigest/com_github_influxdata_tdigest-v0.0.1.zip", ], ) + go_repository( + name = "com_github_ionos_cloud_sdk_go_v6", + build_file_proto_mode = "disable_global", + importpath = "github.com/ionos-cloud/sdk-go/v6", + sha256 = "2eca0d2a3075d7c9ebfd17258656eb5a9e8819a4c09a91dcb3fd0199945d014d", + strip_prefix = "github.com/ionos-cloud/sdk-go/v6@v6.1.9", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/ionos-cloud/sdk-go/v6/com_github_ionos_cloud_sdk_go_v6-v6.1.9.zip", + "http://ats.apps.svc/gomod/github.com/ionos-cloud/sdk-go/v6/com_github_ionos_cloud_sdk_go_v6-v6.1.9.zip", + "https://cache.hawkingrei.com/gomod/github.com/ionos-cloud/sdk-go/v6/com_github_ionos_cloud_sdk_go_v6-v6.1.9.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ionos-cloud/sdk-go/v6/com_github_ionos_cloud_sdk_go_v6-v6.1.9.zip", + ], + ) go_repository( name = "com_github_iris_contrib_blackfriday", build_file_proto_mode = "disable_global", @@ -3887,32 +3904,6 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/iris-contrib/schema/com_github_iris_contrib_schema-v0.0.1.zip", ], ) - go_repository( - name = "com_github_jackc_fake", - build_file_proto_mode = "disable_global", - importpath = "github.com/jackc/fake", - sha256 = "bf8b5b51ae03f572a70a0582dc663c5733bba9aca785d39bb0367797148e6d64", - strip_prefix = "github.com/jackc/fake@v0.0.0-20150926172116-812a484cc733", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/jackc/fake/com_github_jackc_fake-v0.0.0-20150926172116-812a484cc733.zip", - "http://ats.apps.svc/gomod/github.com/jackc/fake/com_github_jackc_fake-v0.0.0-20150926172116-812a484cc733.zip", - "https://cache.hawkingrei.com/gomod/github.com/jackc/fake/com_github_jackc_fake-v0.0.0-20150926172116-812a484cc733.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/jackc/fake/com_github_jackc_fake-v0.0.0-20150926172116-812a484cc733.zip", - ], - ) - go_repository( - name = "com_github_jackc_pgx", - build_file_proto_mode = "disable_global", - importpath = "github.com/jackc/pgx", - sha256 = "e158f1752893bc638d66e31c0a928cbb96119df8d459d36fcef52b4b31a6d24d", - strip_prefix = "github.com/jackc/pgx@v3.2.0+incompatible", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/jackc/pgx/com_github_jackc_pgx-v3.2.0+incompatible.zip", - "http://ats.apps.svc/gomod/github.com/jackc/pgx/com_github_jackc_pgx-v3.2.0+incompatible.zip", - "https://cache.hawkingrei.com/gomod/github.com/jackc/pgx/com_github_jackc_pgx-v3.2.0+incompatible.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/jackc/pgx/com_github_jackc_pgx-v3.2.0+incompatible.zip", - ], - ) go_repository( name = "com_github_jcmturner_aescts_v2", build_file_proto_mode = "disable_global", @@ -4490,16 +4481,16 @@ def go_deps(): ], ) go_repository( - name = "com_github_knz_strtime", + name = "com_github_kolo_xmlrpc", build_file_proto_mode = "disable_global", - importpath = "github.com/knz/strtime", - sha256 = "bd562758fa61a744b3b7c5fd3616dece50c6b92bfa11511ed1e1ab8c43831eb8", - strip_prefix = "github.com/knz/strtime@v0.0.0-20181018220328-af2256ee352c", + importpath = "github.com/kolo/xmlrpc", + sha256 = "310742360a864798a1bfce6db8604263574c0be502670c8bfedeab8fcbe9d191", + strip_prefix = "github.com/kolo/xmlrpc@v0.0.0-20220921171641-a4b6fa1dd06b", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/knz/strtime/com_github_knz_strtime-v0.0.0-20181018220328-af2256ee352c.zip", - "http://ats.apps.svc/gomod/github.com/knz/strtime/com_github_knz_strtime-v0.0.0-20181018220328-af2256ee352c.zip", - "https://cache.hawkingrei.com/gomod/github.com/knz/strtime/com_github_knz_strtime-v0.0.0-20181018220328-af2256ee352c.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/knz/strtime/com_github_knz_strtime-v0.0.0-20181018220328-af2256ee352c.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/kolo/xmlrpc/com_github_kolo_xmlrpc-v0.0.0-20220921171641-a4b6fa1dd06b.zip", + "http://ats.apps.svc/gomod/github.com/kolo/xmlrpc/com_github_kolo_xmlrpc-v0.0.0-20220921171641-a4b6fa1dd06b.zip", + "https://cache.hawkingrei.com/gomod/github.com/kolo/xmlrpc/com_github_kolo_xmlrpc-v0.0.0-20220921171641-a4b6fa1dd06b.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/kolo/xmlrpc/com_github_kolo_xmlrpc-v0.0.0-20220921171641-a4b6fa1dd06b.zip", ], ) go_repository( @@ -4776,29 +4767,16 @@ def go_deps(): ], ) go_repository( - name = "com_github_lib_pq", + name = "com_github_linode_linodego", build_file_proto_mode = "disable_global", - importpath = "github.com/lib/pq", - sha256 = "8aa4a8870dbd30c8b143fe70f121c3ea917b6483251d1384da1b01fc6c6f6c30", - strip_prefix = "github.com/lib/pq@v1.0.0", + importpath = "github.com/linode/linodego", + sha256 = "3e39d39b24cf0504cae3528c9d956c7e7823adaafc0dee315e781e256e0db85c", + strip_prefix = "github.com/linode/linodego@v1.23.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/lib/pq/com_github_lib_pq-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/lib/pq/com_github_lib_pq-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/lib/pq/com_github_lib_pq-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/lib/pq/com_github_lib_pq-v1.0.0.zip", - ], - ) - go_repository( - name = "com_github_lightstep_lightstep_tracer_go", - build_file_proto_mode = "disable_global", - importpath = "github.com/lightstep/lightstep-tracer-go", - sha256 = "426bdb6f7cd88747dceddf20745314abb3c568e782fa811faf2f3433c4cfabaa", - strip_prefix = "github.com/lightstep/lightstep-tracer-go@v0.15.6", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/lightstep/lightstep-tracer-go/com_github_lightstep_lightstep_tracer_go-v0.15.6.zip", - "http://ats.apps.svc/gomod/github.com/lightstep/lightstep-tracer-go/com_github_lightstep_lightstep_tracer_go-v0.15.6.zip", - "https://cache.hawkingrei.com/gomod/github.com/lightstep/lightstep-tracer-go/com_github_lightstep_lightstep_tracer_go-v0.15.6.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/lightstep/lightstep-tracer-go/com_github_lightstep_lightstep_tracer_go-v0.15.6.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/linode/linodego/com_github_linode_linodego-v1.23.0.zip", + "http://ats.apps.svc/gomod/github.com/linode/linodego/com_github_linode_linodego-v1.23.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/linode/linodego/com_github_linode_linodego-v1.23.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/linode/linodego/com_github_linode_linodego-v1.23.0.zip", ], ) go_repository( @@ -4974,13 +4952,13 @@ def go_deps(): name = "com_github_mattn_go_isatty", build_file_proto_mode = "disable_global", importpath = "github.com/mattn/go-isatty", - sha256 = "5484892c645beb53b7120549baa8ca3297b5cd2fd57158603441e71ea7c3d511", - strip_prefix = "github.com/mattn/go-isatty@v0.0.18", + sha256 = "ba8bc1b864325972dc436089351b9dea6262e7fabffdc88e96afb7130ce63da3", + strip_prefix = "github.com/mattn/go-isatty@v0.0.19", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/mattn/go-isatty/com_github_mattn_go_isatty-v0.0.18.zip", - "http://ats.apps.svc/gomod/github.com/mattn/go-isatty/com_github_mattn_go_isatty-v0.0.18.zip", - "https://cache.hawkingrei.com/gomod/github.com/mattn/go-isatty/com_github_mattn_go_isatty-v0.0.18.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/mattn/go-isatty/com_github_mattn_go_isatty-v0.0.18.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/mattn/go-isatty/com_github_mattn_go_isatty-v0.0.19.zip", + "http://ats.apps.svc/gomod/github.com/mattn/go-isatty/com_github_mattn_go_isatty-v0.0.19.zip", + "https://cache.hawkingrei.com/gomod/github.com/mattn/go-isatty/com_github_mattn_go_isatty-v0.0.19.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/mattn/go-isatty/com_github_mattn_go_isatty-v0.0.19.zip", ], ) go_repository( @@ -5114,29 +5092,29 @@ def go_deps(): ], ) go_repository( - name = "com_github_miekg_dns", + name = "com_github_microsoft_go_winio", build_file_proto_mode = "disable_global", - importpath = "github.com/miekg/dns", - sha256 = "32fd332c8cea149f29ffb603020548a48773bc44c974465898c938a58ca0c03a", - strip_prefix = "github.com/miekg/dns@v1.1.10", + importpath = "github.com/Microsoft/go-winio", + sha256 = "fdfec88b9eb61895ab39ed3a6181d99d78366638f86a609170d76417ba018f53", + strip_prefix = "github.com/Microsoft/go-winio@v0.6.1", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/miekg/dns/com_github_miekg_dns-v1.1.10.zip", - "http://ats.apps.svc/gomod/github.com/miekg/dns/com_github_miekg_dns-v1.1.10.zip", - "https://cache.hawkingrei.com/gomod/github.com/miekg/dns/com_github_miekg_dns-v1.1.10.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/miekg/dns/com_github_miekg_dns-v1.1.10.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/Microsoft/go-winio/com_github_microsoft_go_winio-v0.6.1.zip", + "http://ats.apps.svc/gomod/github.com/Microsoft/go-winio/com_github_microsoft_go_winio-v0.6.1.zip", + "https://cache.hawkingrei.com/gomod/github.com/Microsoft/go-winio/com_github_microsoft_go_winio-v0.6.1.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Microsoft/go-winio/com_github_microsoft_go_winio-v0.6.1.zip", ], ) go_repository( - name = "com_github_mitchellh_cli", + name = "com_github_miekg_dns", build_file_proto_mode = "disable_global", - importpath = "github.com/mitchellh/cli", - sha256 = "74199f2c2e1735a45e9f5c2ca049d352b0cc73d945823540e54ca9975ce35752", - strip_prefix = "github.com/mitchellh/cli@v1.0.0", + importpath = "github.com/miekg/dns", + sha256 = "cf99e395ed590f3668a514646d058e17484d63066bcad4226e4c4ae2b9b65938", + strip_prefix = "github.com/miekg/dns@v1.1.56", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/mitchellh/cli/com_github_mitchellh_cli-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/mitchellh/cli/com_github_mitchellh_cli-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/mitchellh/cli/com_github_mitchellh_cli-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/mitchellh/cli/com_github_mitchellh_cli-v1.0.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/miekg/dns/com_github_miekg_dns-v1.1.56.zip", + "http://ats.apps.svc/gomod/github.com/miekg/dns/com_github_miekg_dns-v1.1.56.zip", + "https://cache.hawkingrei.com/gomod/github.com/miekg/dns/com_github_miekg_dns-v1.1.56.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/miekg/dns/com_github_miekg_dns-v1.1.56.zip", ], ) go_repository( @@ -5178,58 +5156,6 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/mitchellh/go-ps/com_github_mitchellh_go_ps-v1.0.0.zip", ], ) - go_repository( - name = "com_github_mitchellh_go_testing_interface", - build_file_proto_mode = "disable_global", - importpath = "github.com/mitchellh/go-testing-interface", - sha256 = "255871a399420cd3513b12f50738d290e251637deb23e21a4332192584ecf9c7", - strip_prefix = "github.com/mitchellh/go-testing-interface@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/mitchellh/go-testing-interface/com_github_mitchellh_go_testing_interface-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/mitchellh/go-testing-interface/com_github_mitchellh_go_testing_interface-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/mitchellh/go-testing-interface/com_github_mitchellh_go_testing_interface-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/mitchellh/go-testing-interface/com_github_mitchellh_go_testing_interface-v1.0.0.zip", - ], - ) - go_repository( - name = "com_github_mitchellh_go_wordwrap", - build_file_proto_mode = "disable_global", - importpath = "github.com/mitchellh/go-wordwrap", - sha256 = "9ea185f97dfe616da351b63b229a5a212b14ac0e23bd3f943e39590eadb38031", - strip_prefix = "github.com/mitchellh/go-wordwrap@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/mitchellh/go-wordwrap/com_github_mitchellh_go_wordwrap-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/mitchellh/go-wordwrap/com_github_mitchellh_go_wordwrap-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/mitchellh/go-wordwrap/com_github_mitchellh_go_wordwrap-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/mitchellh/go-wordwrap/com_github_mitchellh_go_wordwrap-v1.0.0.zip", - ], - ) - go_repository( - name = "com_github_mitchellh_gox", - build_file_proto_mode = "disable_global", - importpath = "github.com/mitchellh/gox", - sha256 = "70c976edc82b069d55c4b05409be9e91d85c20238a5e38c60fbb0b03b43c9550", - strip_prefix = "github.com/mitchellh/gox@v0.4.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/mitchellh/gox/com_github_mitchellh_gox-v0.4.0.zip", - "http://ats.apps.svc/gomod/github.com/mitchellh/gox/com_github_mitchellh_gox-v0.4.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/mitchellh/gox/com_github_mitchellh_gox-v0.4.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/mitchellh/gox/com_github_mitchellh_gox-v0.4.0.zip", - ], - ) - go_repository( - name = "com_github_mitchellh_iochan", - build_file_proto_mode = "disable_global", - importpath = "github.com/mitchellh/iochan", - sha256 = "f3eede01adb24c22945bf71b4f84ae25e3744a12b9d8bd7c016705adc0d778b8", - strip_prefix = "github.com/mitchellh/iochan@v1.0.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/mitchellh/iochan/com_github_mitchellh_iochan-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/mitchellh/iochan/com_github_mitchellh_iochan-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/mitchellh/iochan/com_github_mitchellh_iochan-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/mitchellh/iochan/com_github_mitchellh_iochan-v1.0.0.zip", - ], - ) go_repository( name = "com_github_mitchellh_mapstructure", build_file_proto_mode = "disable_global", @@ -5269,6 +5195,19 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/moby/spdystream/com_github_moby_spdystream-v0.2.0.zip", ], ) + go_repository( + name = "com_github_moby_term", + build_file_proto_mode = "disable_global", + importpath = "github.com/moby/term", + sha256 = "0d2e2ce8280f803a14d9c2af23a79cf854e06d47f2e6b7d455291ffd47c11e2f", + strip_prefix = "github.com/moby/term@v0.0.0-20210619224110-3f7ff695adc6", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/moby/term/com_github_moby_term-v0.0.0-20210619224110-3f7ff695adc6.zip", + "http://ats.apps.svc/gomod/github.com/moby/term/com_github_moby_term-v0.0.0-20210619224110-3f7ff695adc6.zip", + "https://cache.hawkingrei.com/gomod/github.com/moby/term/com_github_moby_term-v0.0.0-20210619224110-3f7ff695adc6.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/moby/term/com_github_moby_term-v0.0.0-20210619224110-3f7ff695adc6.zip", + ], + ) go_repository( name = "com_github_modern_go_concurrent", build_file_proto_mode = "disable_global", @@ -5299,13 +5238,13 @@ def go_deps(): name = "com_github_montanaflynn_stats", build_file_proto_mode = "disable_global", importpath = "github.com/montanaflynn/stats", - sha256 = "fac4308cc66d568256e7aafe694ae58603ddeb9bb39965caa550dbe3fbd77ddc", - strip_prefix = "github.com/montanaflynn/stats@v0.6.6", + sha256 = "661546beb7c49f92a2c798709323f5cb175251bc359c061e5933071679f9b2ef", + strip_prefix = "github.com/montanaflynn/stats@v0.7.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/montanaflynn/stats/com_github_montanaflynn_stats-v0.6.6.zip", - "http://ats.apps.svc/gomod/github.com/montanaflynn/stats/com_github_montanaflynn_stats-v0.6.6.zip", - "https://cache.hawkingrei.com/gomod/github.com/montanaflynn/stats/com_github_montanaflynn_stats-v0.6.6.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/montanaflynn/stats/com_github_montanaflynn_stats-v0.6.6.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/montanaflynn/stats/com_github_montanaflynn_stats-v0.7.0.zip", + "http://ats.apps.svc/gomod/github.com/montanaflynn/stats/com_github_montanaflynn_stats-v0.7.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/montanaflynn/stats/com_github_montanaflynn_stats-v0.7.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/montanaflynn/stats/com_github_montanaflynn_stats-v0.7.0.zip", ], ) go_repository( @@ -5321,6 +5260,19 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/moricho/tparallel/com_github_moricho_tparallel-v0.3.1.zip", ], ) + go_repository( + name = "com_github_morikuni_aec", + build_file_proto_mode = "disable_global", + importpath = "github.com/morikuni/aec", + sha256 = "c14eeff6945b854edd8b91a83ac760fbd95068f33dc17d102c18f2e8e86bcced", + strip_prefix = "github.com/morikuni/aec@v1.0.0", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/morikuni/aec/com_github_morikuni_aec-v1.0.0.zip", + "http://ats.apps.svc/gomod/github.com/morikuni/aec/com_github_morikuni_aec-v1.0.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/morikuni/aec/com_github_morikuni_aec-v1.0.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/morikuni/aec/com_github_morikuni_aec-v1.0.0.zip", + ], + ) go_repository( name = "com_github_moul_http2curl", build_file_proto_mode = "disable_global", @@ -5334,6 +5286,19 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/moul/http2curl/com_github_moul_http2curl-v1.0.0.zip", ], ) + go_repository( + name = "com_github_munnerz_goautoneg", + build_file_proto_mode = "disable_global", + importpath = "github.com/munnerz/goautoneg", + sha256 = "3d7ce17916779890be02ea6b3dd6345c3c30c1df502ad9d8b5b9b310e636afd9", + strip_prefix = "github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/munnerz/goautoneg/com_github_munnerz_goautoneg-v0.0.0-20191010083416-a7dc8b61c822.zip", + "http://ats.apps.svc/gomod/github.com/munnerz/goautoneg/com_github_munnerz_goautoneg-v0.0.0-20191010083416-a7dc8b61c822.zip", + "https://cache.hawkingrei.com/gomod/github.com/munnerz/goautoneg/com_github_munnerz_goautoneg-v0.0.0-20191010083416-a7dc8b61c822.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/munnerz/goautoneg/com_github_munnerz_goautoneg-v0.0.0-20191010083416-a7dc8b61c822.zip", + ], + ) go_repository( name = "com_github_mwitkow_go_conntrack", build_file_proto_mode = "disable_global", @@ -5533,13 +5498,13 @@ def go_deps(): name = "com_github_oklog_run", build_file_proto_mode = "disable_global", importpath = "github.com/oklog/run", - sha256 = "108d409b7d235d61b82cfb6e1df139501123fcd8fa68fe94ddb024b53335cb48", - strip_prefix = "github.com/oklog/run@v1.0.0", + sha256 = "d6f69fc71aa155043f926c2a98fc1e5b3a8ebab422f2f36d785cfba38a7ebee4", + strip_prefix = "github.com/oklog/run@v1.1.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/oklog/run/com_github_oklog_run-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/oklog/run/com_github_oklog_run-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/oklog/run/com_github_oklog_run-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/oklog/run/com_github_oklog_run-v1.0.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/oklog/run/com_github_oklog_run-v1.1.0.zip", + "http://ats.apps.svc/gomod/github.com/oklog/run/com_github_oklog_run-v1.1.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/oklog/run/com_github_oklog_run-v1.1.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/oklog/run/com_github_oklog_run-v1.1.0.zip", ], ) go_repository( @@ -5568,19 +5533,6 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/olekukonko/tablewriter/com_github_olekukonko_tablewriter-v0.0.5.zip", ], ) - go_repository( - name = "com_github_oneofone_xxhash", - build_file_proto_mode = "disable_global", - importpath = "github.com/OneOfOne/xxhash", - sha256 = "7ab3c6a0e7c16c987a589e50a9a353e8877cfffea02bf9e04e370fd26a0c85e1", - strip_prefix = "github.com/OneOfOne/xxhash@v1.2.5", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/OneOfOne/xxhash/com_github_oneofone_xxhash-v1.2.5.zip", - "http://ats.apps.svc/gomod/github.com/OneOfOne/xxhash/com_github_oneofone_xxhash-v1.2.5.zip", - "https://cache.hawkingrei.com/gomod/github.com/OneOfOne/xxhash/com_github_oneofone_xxhash-v1.2.5.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/OneOfOne/xxhash/com_github_oneofone_xxhash-v1.2.5.zip", - ], - ) go_repository( name = "com_github_onsi_ginkgo", build_file_proto_mode = "disable_global", @@ -5598,26 +5550,52 @@ def go_deps(): name = "com_github_onsi_ginkgo_v2", build_file_proto_mode = "disable_global", importpath = "github.com/onsi/ginkgo/v2", - sha256 = "c5cdb980ec4d450f3df8a471718494fd9192a5751cbeff14b9025fa9c0c86b16", - strip_prefix = "github.com/onsi/ginkgo/v2@v2.9.1", + sha256 = "f41e92baa52ec53d482603e4585c0906ca0c02e05004dca78a62bf1de88833ad", + strip_prefix = "github.com/onsi/ginkgo/v2@v2.9.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/onsi/ginkgo/v2/com_github_onsi_ginkgo_v2-v2.9.1.zip", - "http://ats.apps.svc/gomod/github.com/onsi/ginkgo/v2/com_github_onsi_ginkgo_v2-v2.9.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/onsi/ginkgo/v2/com_github_onsi_ginkgo_v2-v2.9.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/onsi/ginkgo/v2/com_github_onsi_ginkgo_v2-v2.9.1.zip", + "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", ], ) go_repository( name = "com_github_onsi_gomega", build_file_proto_mode = "disable_global", importpath = "github.com/onsi/gomega", - sha256 = "c7c39c6aa6a544939044a2a51ff86cd4d911a3801358d83ee48278fdbe5fe42c", - strip_prefix = "github.com/onsi/gomega@v1.27.4", + sha256 = "ea2b22782cc15569645dfdfc066a651e1335626677ad92d7ba4358a0885bf369", + strip_prefix = "github.com/onsi/gomega@v1.20.1", + 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", + ], + ) + go_repository( + name = "com_github_opencontainers_go_digest", + build_file_proto_mode = "disable_global", + importpath = "github.com/opencontainers/go-digest", + sha256 = "615efb31ff6cd71035b8aa38c3659d8b4da46f3cd92ac807cb50449adfe37c86", + strip_prefix = "github.com/opencontainers/go-digest@v1.0.0", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/opencontainers/go-digest/com_github_opencontainers_go_digest-v1.0.0.zip", + "http://ats.apps.svc/gomod/github.com/opencontainers/go-digest/com_github_opencontainers_go_digest-v1.0.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/opencontainers/go-digest/com_github_opencontainers_go_digest-v1.0.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/opencontainers/go-digest/com_github_opencontainers_go_digest-v1.0.0.zip", + ], + ) + go_repository( + name = "com_github_opencontainers_image_spec", + build_file_proto_mode = "disable_global", + importpath = "github.com/opencontainers/image-spec", + sha256 = "d842127b6038c1a74c2bb609d75bdde0ac9c7cde5c354ac82c4f953ce08d0c08", + strip_prefix = "github.com/opencontainers/image-spec@v1.0.2", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/onsi/gomega/com_github_onsi_gomega-v1.27.4.zip", - "http://ats.apps.svc/gomod/github.com/onsi/gomega/com_github_onsi_gomega-v1.27.4.zip", - "https://cache.hawkingrei.com/gomod/github.com/onsi/gomega/com_github_onsi_gomega-v1.27.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/onsi/gomega/com_github_onsi_gomega-v1.27.4.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/opencontainers/image-spec/com_github_opencontainers_image_spec-v1.0.2.zip", + "http://ats.apps.svc/gomod/github.com/opencontainers/image-spec/com_github_opencontainers_image_spec-v1.0.2.zip", + "https://cache.hawkingrei.com/gomod/github.com/opencontainers/image-spec/com_github_opencontainers_image_spec-v1.0.2.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/opencontainers/image-spec/com_github_opencontainers_image_spec-v1.0.2.zip", ], ) go_repository( @@ -5646,19 +5624,6 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/opentracing/basictracer-go/com_github_opentracing_basictracer_go-v1.0.0.zip", ], ) - go_repository( - name = "com_github_opentracing_contrib_go_stdlib", - build_file_proto_mode = "disable_global", - importpath = "github.com/opentracing-contrib/go-stdlib", - sha256 = "b12d4649ede78423ab6d147161dfe160daaeb02a77dca0b488b7ffad51cc49c1", - strip_prefix = "github.com/opentracing-contrib/go-stdlib@v0.0.0-20170113013457-1de4cc2120e7", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/opentracing-contrib/go-stdlib/com_github_opentracing_contrib_go_stdlib-v0.0.0-20170113013457-1de4cc2120e7.zip", - "http://ats.apps.svc/gomod/github.com/opentracing-contrib/go-stdlib/com_github_opentracing_contrib_go_stdlib-v0.0.0-20170113013457-1de4cc2120e7.zip", - "https://cache.hawkingrei.com/gomod/github.com/opentracing-contrib/go-stdlib/com_github_opentracing_contrib_go_stdlib-v0.0.0-20170113013457-1de4cc2120e7.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/opentracing-contrib/go-stdlib/com_github_opentracing_contrib_go_stdlib-v0.0.0-20170113013457-1de4cc2120e7.zip", - ], - ) go_repository( name = "com_github_opentracing_opentracing_go", build_file_proto_mode = "disable_global", @@ -5672,19 +5637,6 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/opentracing/opentracing-go/com_github_opentracing_opentracing_go-v1.2.0.zip", ], ) - go_repository( - name = "com_github_openzipkin_zipkin_go", - build_file_proto_mode = "disable_global", - importpath = "github.com/openzipkin/zipkin-go", - sha256 = "36fd67db687108f4dc2b2a8607c3ad6ca226228a7a307897105d7d3f3ea28ccb", - strip_prefix = "github.com/openzipkin/zipkin-go@v0.1.6", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/openzipkin/zipkin-go/com_github_openzipkin_zipkin_go-v0.1.6.zip", - "http://ats.apps.svc/gomod/github.com/openzipkin/zipkin-go/com_github_openzipkin_zipkin_go-v0.1.6.zip", - "https://cache.hawkingrei.com/gomod/github.com/openzipkin/zipkin-go/com_github_openzipkin_zipkin_go-v0.1.6.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/openzipkin/zipkin-go/com_github_openzipkin_zipkin_go-v0.1.6.zip", - ], - ) go_repository( name = "com_github_otiai10_copy", build_file_proto_mode = "disable_global", @@ -5725,16 +5677,16 @@ def go_deps(): ], ) go_repository( - name = "com_github_pascaldekloe_goe", + name = "com_github_ovh_go_ovh", build_file_proto_mode = "disable_global", - importpath = "github.com/pascaldekloe/goe", - sha256 = "fa1b653a2e460194150393e186af967c8b1d24811252aac12f9ab4474beefdc6", - strip_prefix = "github.com/pascaldekloe/goe@v0.0.0-20180627143212-57f6aae5913c", + importpath = "github.com/ovh/go-ovh", + sha256 = "011dc40423f453de4570f9ad737ff4185e0205aa11d294e1bd606fb70f07177b", + strip_prefix = "github.com/ovh/go-ovh@v1.4.3", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/pascaldekloe/goe/com_github_pascaldekloe_goe-v0.0.0-20180627143212-57f6aae5913c.zip", - "http://ats.apps.svc/gomod/github.com/pascaldekloe/goe/com_github_pascaldekloe_goe-v0.0.0-20180627143212-57f6aae5913c.zip", - "https://cache.hawkingrei.com/gomod/github.com/pascaldekloe/goe/com_github_pascaldekloe_goe-v0.0.0-20180627143212-57f6aae5913c.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pascaldekloe/goe/com_github_pascaldekloe_goe-v0.0.0-20180627143212-57f6aae5913c.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/ovh/go-ovh/com_github_ovh_go_ovh-v1.4.3.zip", + "http://ats.apps.svc/gomod/github.com/ovh/go-ovh/com_github_ovh_go_ovh-v1.4.3.zip", + "https://cache.hawkingrei.com/gomod/github.com/ovh/go-ovh/com_github_ovh_go_ovh-v1.4.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ovh/go-ovh/com_github_ovh_go_ovh-v1.4.3.zip", ], ) go_repository( @@ -5776,19 +5728,6 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pelletier/go-toml/v2/com_github_pelletier_go_toml_v2-v2.0.5.zip", ], ) - go_repository( - name = "com_github_peterbourgon_g2s", - build_file_proto_mode = "disable_global", - importpath = "github.com/peterbourgon/g2s", - sha256 = "41526f42b4fe3019581ab3745afea18271d7f037eb55a6e9fb3e32fd09ff9b8d", - strip_prefix = "github.com/peterbourgon/g2s@v0.0.0-20170223122336-d4e7ad98afea", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/peterbourgon/g2s/com_github_peterbourgon_g2s-v0.0.0-20170223122336-d4e7ad98afea.zip", - "http://ats.apps.svc/gomod/github.com/peterbourgon/g2s/com_github_peterbourgon_g2s-v0.0.0-20170223122336-d4e7ad98afea.zip", - "https://cache.hawkingrei.com/gomod/github.com/peterbourgon/g2s/com_github_peterbourgon_g2s-v0.0.0-20170223122336-d4e7ad98afea.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/peterbourgon/g2s/com_github_peterbourgon_g2s-v0.0.0-20170223122336-d4e7ad98afea.zip", - ], - ) go_repository( name = "com_github_petermattis_goid", build_file_proto_mode = "disable_global", @@ -5897,13 +5836,13 @@ def go_deps(): name = "com_github_pingcap_kvproto", build_file_proto_mode = "disable_global", importpath = "github.com/pingcap/kvproto", - sha256 = "f4b1d302bbbb5075222ff4ed7d5f7f8807d920aad1a5a7d4c31fdf2233d8568c", - strip_prefix = "github.com/pingcap/kvproto@v0.0.0-20230925123611-87bebcc0d071", + sha256 = "457e1273f6c608e8276f6904d7db6c25d8480621e00814a4c911edaffb9041fe", + strip_prefix = "github.com/pingcap/kvproto@v0.0.0-20231122054644-fb0f5c2a0a10", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/pingcap/kvproto/com_github_pingcap_kvproto-v0.0.0-20230925123611-87bebcc0d071.zip", - "http://ats.apps.svc/gomod/github.com/pingcap/kvproto/com_github_pingcap_kvproto-v0.0.0-20230925123611-87bebcc0d071.zip", - "https://cache.hawkingrei.com/gomod/github.com/pingcap/kvproto/com_github_pingcap_kvproto-v0.0.0-20230925123611-87bebcc0d071.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pingcap/kvproto/com_github_pingcap_kvproto-v0.0.0-20230925123611-87bebcc0d071.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/pingcap/kvproto/com_github_pingcap_kvproto-v0.0.0-20231122054644-fb0f5c2a0a10.zip", + "http://ats.apps.svc/gomod/github.com/pingcap/kvproto/com_github_pingcap_kvproto-v0.0.0-20231122054644-fb0f5c2a0a10.zip", + "https://cache.hawkingrei.com/gomod/github.com/pingcap/kvproto/com_github_pingcap_kvproto-v0.0.0-20231122054644-fb0f5c2a0a10.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pingcap/kvproto/com_github_pingcap_kvproto-v0.0.0-20231122054644-fb0f5c2a0a10.zip", ], ) go_repository( @@ -5949,13 +5888,13 @@ def go_deps(): name = "com_github_pkg_browser", build_file_proto_mode = "disable_global", importpath = "github.com/pkg/browser", - sha256 = "84db38d8db553ccc34c75f867396126eac07774b979c470f97a20854d3a3af6d", - strip_prefix = "github.com/pkg/browser@v0.0.0-20210115035449-ce105d075bb4", + sha256 = "415b8b7d7e47074cf3f6c2269d8712efa8a8433cba7bfce7eed22ca7f0b447a4", + strip_prefix = "github.com/pkg/browser@v0.0.0-20210911075715-681adbf594b8", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/pkg/browser/com_github_pkg_browser-v0.0.0-20210115035449-ce105d075bb4.zip", - "http://ats.apps.svc/gomod/github.com/pkg/browser/com_github_pkg_browser-v0.0.0-20210115035449-ce105d075bb4.zip", - "https://cache.hawkingrei.com/gomod/github.com/pkg/browser/com_github_pkg_browser-v0.0.0-20210115035449-ce105d075bb4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pkg/browser/com_github_pkg_browser-v0.0.0-20210115035449-ce105d075bb4.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/pkg/browser/com_github_pkg_browser-v0.0.0-20210911075715-681adbf594b8.zip", + "http://ats.apps.svc/gomod/github.com/pkg/browser/com_github_pkg_browser-v0.0.0-20210911075715-681adbf594b8.zip", + "https://cache.hawkingrei.com/gomod/github.com/pkg/browser/com_github_pkg_browser-v0.0.0-20210911075715-681adbf594b8.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pkg/browser/com_github_pkg_browser-v0.0.0-20210911075715-681adbf594b8.zip", ], ) go_repository( @@ -6014,13 +5953,13 @@ def go_deps(): name = "com_github_pmezard_go_difflib", build_file_proto_mode = "disable_global", importpath = "github.com/pmezard/go-difflib", - sha256 = "de04cecc1a4b8d53e4357051026794bcbc54f2e6a260cfac508ce69d5d6457a0", - strip_prefix = "github.com/pmezard/go-difflib@v1.0.0", + sha256 = "24ff45e356f638a53bd0c89fff961fbeaecfdb0dc5e482ceed0a2230e0e5f3b7", + strip_prefix = "github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/pmezard/go-difflib/com_github_pmezard_go_difflib-v1.0.0.zip", - "http://ats.apps.svc/gomod/github.com/pmezard/go-difflib/com_github_pmezard_go_difflib-v1.0.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/pmezard/go-difflib/com_github_pmezard_go_difflib-v1.0.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pmezard/go-difflib/com_github_pmezard_go_difflib-v1.0.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/pmezard/go-difflib/com_github_pmezard_go_difflib-v1.0.1-0.20181226105442-5d4384ee4fb2.zip", + "http://ats.apps.svc/gomod/github.com/pmezard/go-difflib/com_github_pmezard_go_difflib-v1.0.1-0.20181226105442-5d4384ee4fb2.zip", + "https://cache.hawkingrei.com/gomod/github.com/pmezard/go-difflib/com_github_pmezard_go_difflib-v1.0.1-0.20181226105442-5d4384ee4fb2.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pmezard/go-difflib/com_github_pmezard_go_difflib-v1.0.1-0.20181226105442-5d4384ee4fb2.zip", ], ) go_repository( @@ -6036,19 +5975,6 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/polyfloyd/go-errorlint/com_github_polyfloyd_go_errorlint-v1.4.5.zip", ], ) - go_repository( - name = "com_github_posener_complete", - build_file_proto_mode = "disable_global", - importpath = "github.com/posener/complete", - sha256 = "828ec8cd2a7a4f57b238d7475bce89dcccf8f5dc9f55008fdc435bceeb83d927", - strip_prefix = "github.com/posener/complete@v1.1.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/posener/complete/com_github_posener_complete-v1.1.1.zip", - "http://ats.apps.svc/gomod/github.com/posener/complete/com_github_posener_complete-v1.1.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/posener/complete/com_github_posener_complete-v1.1.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/posener/complete/com_github_posener_complete-v1.1.1.zip", - ], - ) go_repository( name = "com_github_power_devops_perfstat", build_file_proto_mode = "disable_global", @@ -6075,6 +6001,19 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/prashantv/gostub/com_github_prashantv_gostub-v1.1.0.zip", ], ) + go_repository( + name = "com_github_prometheus_alertmanager", + build_file_proto_mode = "disable_global", + importpath = "github.com/prometheus/alertmanager", + sha256 = "7666007c7ccec339fd09aaeec1d15c5b8c26cb01d387c9a9f7273f904db825b0", + strip_prefix = "github.com/prometheus/alertmanager@v0.26.0", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/prometheus/alertmanager/com_github_prometheus_alertmanager-v0.26.0.zip", + "http://ats.apps.svc/gomod/github.com/prometheus/alertmanager/com_github_prometheus_alertmanager-v0.26.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/prometheus/alertmanager/com_github_prometheus_alertmanager-v0.26.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/prometheus/alertmanager/com_github_prometheus_alertmanager-v0.26.0.zip", + ], + ) go_repository( name = "com_github_prometheus_client_golang", build_file_proto_mode = "disable_global", @@ -6114,6 +6053,45 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/prometheus/common/com_github_prometheus_common-v0.45.0.zip", ], ) + go_repository( + name = "com_github_prometheus_common_assets", + build_file_proto_mode = "disable_global", + importpath = "github.com/prometheus/common/assets", + sha256 = "e8bcf444eb69d4dc41764f84401d57a181d282250e4c97b3c2bb31edc93e984b", + strip_prefix = "github.com/prometheus/common/assets@v0.2.0", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/prometheus/common/assets/com_github_prometheus_common_assets-v0.2.0.zip", + "http://ats.apps.svc/gomod/github.com/prometheus/common/assets/com_github_prometheus_common_assets-v0.2.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/prometheus/common/assets/com_github_prometheus_common_assets-v0.2.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/prometheus/common/assets/com_github_prometheus_common_assets-v0.2.0.zip", + ], + ) + go_repository( + name = "com_github_prometheus_common_sigv4", + build_file_proto_mode = "disable_global", + importpath = "github.com/prometheus/common/sigv4", + sha256 = "e76ec796837158dc2624343f88da4ba3c5d9d4b45e66b359358eba5db39846dd", + strip_prefix = "github.com/prometheus/common/sigv4@v0.1.0", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/prometheus/common/sigv4/com_github_prometheus_common_sigv4-v0.1.0.zip", + "http://ats.apps.svc/gomod/github.com/prometheus/common/sigv4/com_github_prometheus_common_sigv4-v0.1.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/prometheus/common/sigv4/com_github_prometheus_common_sigv4-v0.1.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/prometheus/common/sigv4/com_github_prometheus_common_sigv4-v0.1.0.zip", + ], + ) + go_repository( + name = "com_github_prometheus_exporter_toolkit", + build_file_proto_mode = "disable_global", + importpath = "github.com/prometheus/exporter-toolkit", + sha256 = "d6d1eee3a082bd82744db81a52b01e4923932b498f92411ca57390e7489cf34b", + strip_prefix = "github.com/prometheus/exporter-toolkit@v0.10.0", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/prometheus/exporter-toolkit/com_github_prometheus_exporter_toolkit-v0.10.0.zip", + "http://ats.apps.svc/gomod/github.com/prometheus/exporter-toolkit/com_github_prometheus_exporter_toolkit-v0.10.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/prometheus/exporter-toolkit/com_github_prometheus_exporter_toolkit-v0.10.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/prometheus/exporter-toolkit/com_github_prometheus_exporter_toolkit-v0.10.0.zip", + ], + ) go_repository( name = "com_github_prometheus_procfs", build_file_proto_mode = "disable_global", @@ -6131,26 +6109,13 @@ def go_deps(): name = "com_github_prometheus_prometheus", build_file_proto_mode = "disable_global", importpath = "github.com/prometheus/prometheus", - sha256 = "de87fe7382f3fcea38548f0e8b636faffa4104264c41d7cbcb4ec243d54a898d", - strip_prefix = "github.com/prometheus/prometheus@v0.0.0-20190525122359-d20e84d0fb64", + sha256 = "57ac0b06c05da5d42f831e52250f3bc63d2fc6785cd9f21ca79534f1900aeb19", + strip_prefix = "github.com/prometheus/prometheus@v0.48.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/prometheus/prometheus/com_github_prometheus_prometheus-v0.0.0-20190525122359-d20e84d0fb64.zip", - "http://ats.apps.svc/gomod/github.com/prometheus/prometheus/com_github_prometheus_prometheus-v0.0.0-20190525122359-d20e84d0fb64.zip", - "https://cache.hawkingrei.com/gomod/github.com/prometheus/prometheus/com_github_prometheus_prometheus-v0.0.0-20190525122359-d20e84d0fb64.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/prometheus/prometheus/com_github_prometheus_prometheus-v0.0.0-20190525122359-d20e84d0fb64.zip", - ], - ) - go_repository( - name = "com_github_prometheus_tsdb", - build_file_proto_mode = "disable_global", - importpath = "github.com/prometheus/tsdb", - sha256 = "34e98f0e9ba55e7290774ee40569737745b395e32811e5940d2ed124a20f927c", - strip_prefix = "github.com/prometheus/tsdb@v0.10.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/prometheus/tsdb/com_github_prometheus_tsdb-v0.10.0.zip", - "http://ats.apps.svc/gomod/github.com/prometheus/tsdb/com_github_prometheus_tsdb-v0.10.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/prometheus/tsdb/com_github_prometheus_tsdb-v0.10.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/prometheus/tsdb/com_github_prometheus_tsdb-v0.10.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/prometheus/prometheus/com_github_prometheus_prometheus-v0.48.0.zip", + "http://ats.apps.svc/gomod/github.com/prometheus/prometheus/com_github_prometheus_prometheus-v0.48.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/prometheus/prometheus/com_github_prometheus_prometheus-v0.48.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/prometheus/prometheus/com_github_prometheus_prometheus-v0.48.0.zip", ], ) go_repository( @@ -6257,19 +6222,6 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/rivo/uniseg/com_github_rivo_uniseg-v0.4.4.zip", ], ) - go_repository( - name = "com_github_rlmcpherson_s3gof3r", - build_file_proto_mode = "disable_global", - importpath = "github.com/rlmcpherson/s3gof3r", - sha256 = "570e59b69f0b3a33b0c382e19c6674fc17d981dc7d2c41db2fe42510131f1423", - strip_prefix = "github.com/rlmcpherson/s3gof3r@v0.5.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/rlmcpherson/s3gof3r/com_github_rlmcpherson_s3gof3r-v0.5.0.zip", - "http://ats.apps.svc/gomod/github.com/rlmcpherson/s3gof3r/com_github_rlmcpherson_s3gof3r-v0.5.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/rlmcpherson/s3gof3r/com_github_rlmcpherson_s3gof3r-v0.5.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/rlmcpherson/s3gof3r/com_github_rlmcpherson_s3gof3r-v0.5.0.zip", - ], - ) go_repository( name = "com_github_robfig_cron_v3", build_file_proto_mode = "disable_global", @@ -6309,19 +6261,6 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/rogpeppe/go-internal/com_github_rogpeppe_go_internal-v1.11.0.zip", ], ) - go_repository( - name = "com_github_rubyist_circuitbreaker", - build_file_proto_mode = "disable_global", - importpath = "github.com/rubyist/circuitbreaker", - sha256 = "fc1125d9260a471d349c94a251340c437f98743b42324706482596f303c28b11", - strip_prefix = "github.com/rubyist/circuitbreaker@v2.2.1+incompatible", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/rubyist/circuitbreaker/com_github_rubyist_circuitbreaker-v2.2.1+incompatible.zip", - "http://ats.apps.svc/gomod/github.com/rubyist/circuitbreaker/com_github_rubyist_circuitbreaker-v2.2.1+incompatible.zip", - "https://cache.hawkingrei.com/gomod/github.com/rubyist/circuitbreaker/com_github_rubyist_circuitbreaker-v2.2.1+incompatible.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/rubyist/circuitbreaker/com_github_rubyist_circuitbreaker-v2.2.1+incompatible.zip", - ], - ) go_repository( name = "com_github_russross_blackfriday", build_file_proto_mode = "disable_global", @@ -6400,19 +6339,6 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ryszard/goskiplist/com_github_ryszard_goskiplist-v0.0.0-20150312221310-2dfbae5fcf46.zip", ], ) - go_repository( - name = "com_github_samuel_go_zookeeper", - build_file_proto_mode = "disable_global", - importpath = "github.com/samuel/go-zookeeper", - sha256 = "229ebba6824b318d379a00d4cbaff13143ea1b93f916bf36d11054da36f39239", - strip_prefix = "github.com/samuel/go-zookeeper@v0.0.0-20161028232340-1d7be4effb13", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/samuel/go-zookeeper/com_github_samuel_go_zookeeper-v0.0.0-20161028232340-1d7be4effb13.zip", - "http://ats.apps.svc/gomod/github.com/samuel/go-zookeeper/com_github_samuel_go_zookeeper-v0.0.0-20161028232340-1d7be4effb13.zip", - "https://cache.hawkingrei.com/gomod/github.com/samuel/go-zookeeper/com_github_samuel_go_zookeeper-v0.0.0-20161028232340-1d7be4effb13.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/samuel/go-zookeeper/com_github_samuel_go_zookeeper-v0.0.0-20161028232340-1d7be4effb13.zip", - ], - ) go_repository( name = "com_github_sanposhiho_wastedassign_v2", build_file_proto_mode = "disable_global", @@ -6466,16 +6392,16 @@ def go_deps(): ], ) go_repository( - name = "com_github_satori_go_uuid", + name = "com_github_scaleway_scaleway_sdk_go", build_file_proto_mode = "disable_global", - importpath = "github.com/satori/go.uuid", - sha256 = "4f741306a0cbe97581e34a638531bcafe3c2848150539a2ec2ba12c5e3e6cbdd", - strip_prefix = "github.com/satori/go.uuid@v1.2.0", + importpath = "github.com/scaleway/scaleway-sdk-go", + sha256 = "c1c638a823b55c10a89bf55a501c55dc91ee2aced5e677d66748363923d34108", + strip_prefix = "github.com/scaleway/scaleway-sdk-go@v1.0.0-beta.21", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/satori/go.uuid/com_github_satori_go_uuid-v1.2.0.zip", - "http://ats.apps.svc/gomod/github.com/satori/go.uuid/com_github_satori_go_uuid-v1.2.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/satori/go.uuid/com_github_satori_go_uuid-v1.2.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/satori/go.uuid/com_github_satori_go_uuid-v1.2.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/scaleway/scaleway-sdk-go/com_github_scaleway_scaleway_sdk_go-v1.0.0-beta.21.zip", + "http://ats.apps.svc/gomod/github.com/scaleway/scaleway-sdk-go/com_github_scaleway_scaleway_sdk_go-v1.0.0-beta.21.zip", + "https://cache.hawkingrei.com/gomod/github.com/scaleway/scaleway-sdk-go/com_github_scaleway_scaleway_sdk_go-v1.0.0-beta.21.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/scaleway/scaleway-sdk-go/com_github_scaleway_scaleway_sdk_go-v1.0.0-beta.21.zip", ], ) go_repository( @@ -6491,19 +6417,6 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/sclevine/agouti/com_github_sclevine_agouti-v3.0.0+incompatible.zip", ], ) - go_repository( - name = "com_github_sean__seed", - build_file_proto_mode = "disable_global", - importpath = "github.com/sean-/seed", - sha256 = "0bc8e6e0a07e554674b0bb92ef4eb7de1650056b50878eed8d5d631aec9b6362", - strip_prefix = "github.com/sean-/seed@v0.0.0-20170313163322-e2103e2c3529", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/sean-/seed/com_github_sean__seed-v0.0.0-20170313163322-e2103e2c3529.zip", - "http://ats.apps.svc/gomod/github.com/sean-/seed/com_github_sean__seed-v0.0.0-20170313163322-e2103e2c3529.zip", - "https://cache.hawkingrei.com/gomod/github.com/sean-/seed/com_github_sean__seed-v0.0.0-20170313163322-e2103e2c3529.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/sean-/seed/com_github_sean__seed-v0.0.0-20170313163322-e2103e2c3529.zip", - ], - ) go_repository( name = "com_github_securego_gosec_v2", build_file_proto_mode = "disable_global", @@ -6664,13 +6577,13 @@ def go_deps(): name = "com_github_shurcool_httpfs", build_file_proto_mode = "disable_global", importpath = "github.com/shurcooL/httpfs", - sha256 = "a2079dbd8c236262ecbb22312467265fbbddd9b5ee789531c5f7f24fbdda174b", - strip_prefix = "github.com/shurcooL/httpfs@v0.0.0-20190707220628-8d4bc4ba7749", + sha256 = "4b3bea8ded4d221b448bf34d21cfe0b84d60faa71aa21ac2664c67009365d7f6", + strip_prefix = "github.com/shurcooL/httpfs@v0.0.0-20230704072500-f1e31cf0ba5c", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/shurcooL/httpfs/com_github_shurcool_httpfs-v0.0.0-20190707220628-8d4bc4ba7749.zip", - "http://ats.apps.svc/gomod/github.com/shurcooL/httpfs/com_github_shurcool_httpfs-v0.0.0-20190707220628-8d4bc4ba7749.zip", - "https://cache.hawkingrei.com/gomod/github.com/shurcooL/httpfs/com_github_shurcool_httpfs-v0.0.0-20190707220628-8d4bc4ba7749.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/shurcooL/httpfs/com_github_shurcool_httpfs-v0.0.0-20190707220628-8d4bc4ba7749.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/shurcooL/httpfs/com_github_shurcool_httpfs-v0.0.0-20230704072500-f1e31cf0ba5c.zip", + "http://ats.apps.svc/gomod/github.com/shurcooL/httpfs/com_github_shurcool_httpfs-v0.0.0-20230704072500-f1e31cf0ba5c.zip", + "https://cache.hawkingrei.com/gomod/github.com/shurcooL/httpfs/com_github_shurcool_httpfs-v0.0.0-20230704072500-f1e31cf0ba5c.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/shurcooL/httpfs/com_github_shurcool_httpfs-v0.0.0-20230704072500-f1e31cf0ba5c.zip", ], ) go_repository( @@ -6829,19 +6742,6 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/sourcegraph/go-diff/com_github_sourcegraph_go_diff-v0.7.0.zip", ], ) - go_repository( - name = "com_github_spaolacci_murmur3", - build_file_proto_mode = "disable_global", - importpath = "github.com/spaolacci/murmur3", - sha256 = "60bd43ada88cc70823b31fd678a8b906d48631b47145300544d45219ee6a17bc", - strip_prefix = "github.com/spaolacci/murmur3@v1.1.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/spaolacci/murmur3/com_github_spaolacci_murmur3-v1.1.0.zip", - "http://ats.apps.svc/gomod/github.com/spaolacci/murmur3/com_github_spaolacci_murmur3-v1.1.0.zip", - "https://cache.hawkingrei.com/gomod/github.com/spaolacci/murmur3/com_github_spaolacci_murmur3-v1.1.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/spaolacci/murmur3/com_github_spaolacci_murmur3-v1.1.0.zip", - ], - ) go_repository( name = "com_github_spf13_afero", build_file_proto_mode = "disable_global", @@ -6946,19 +6846,6 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/ssgreg/nlreturn/v2/com_github_ssgreg_nlreturn_v2-v2.2.1.zip", ], ) - go_repository( - name = "com_github_stackexchange_wmi", - build_file_proto_mode = "disable_global", - importpath = "github.com/StackExchange/wmi", - sha256 = "78bee244eb43b1114204ae736f28c45fade2a60dd5c84e20117939787e3cb14b", - strip_prefix = "github.com/StackExchange/wmi@v0.0.0-20180725035823-b12b22c5341f", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/StackExchange/wmi/com_github_stackexchange_wmi-v0.0.0-20180725035823-b12b22c5341f.zip", - "http://ats.apps.svc/gomod/github.com/StackExchange/wmi/com_github_stackexchange_wmi-v0.0.0-20180725035823-b12b22c5341f.zip", - "https://cache.hawkingrei.com/gomod/github.com/StackExchange/wmi/com_github_stackexchange_wmi-v0.0.0-20180725035823-b12b22c5341f.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/StackExchange/wmi/com_github_stackexchange_wmi-v0.0.0-20180725035823-b12b22c5341f.zip", - ], - ) go_repository( name = "com_github_stathat_consistent", build_file_proto_mode = "disable_global", @@ -7119,26 +7006,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 = "b689432454a504f8ba1ad166ebf901584155edc64eed4119a30c07ab52e3af8f", - strip_prefix = "github.com/tikv/client-go/v2@v2.0.8-0.20231030120815-1362f1e87566", + sha256 = "548df2ca5c27559e3318b97b4cb91703d5c253410e7f9fa0eb926e2d3aa28b59", + strip_prefix = "github.com/tikv/client-go/v2@v2.0.8-0.20231116051730-1c2351c28173", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/tikv/client-go/v2/com_github_tikv_client_go_v2-v2.0.8-0.20231030120815-1362f1e87566.zip", - "http://ats.apps.svc/gomod/github.com/tikv/client-go/v2/com_github_tikv_client_go_v2-v2.0.8-0.20231030120815-1362f1e87566.zip", - "https://cache.hawkingrei.com/gomod/github.com/tikv/client-go/v2/com_github_tikv_client_go_v2-v2.0.8-0.20231030120815-1362f1e87566.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/tikv/client-go/v2/com_github_tikv_client_go_v2-v2.0.8-0.20231030120815-1362f1e87566.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/tikv/client-go/v2/com_github_tikv_client_go_v2-v2.0.8-0.20231116051730-1c2351c28173.zip", + "http://ats.apps.svc/gomod/github.com/tikv/client-go/v2/com_github_tikv_client_go_v2-v2.0.8-0.20231116051730-1c2351c28173.zip", + "https://cache.hawkingrei.com/gomod/github.com/tikv/client-go/v2/com_github_tikv_client_go_v2-v2.0.8-0.20231116051730-1c2351c28173.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/tikv/client-go/v2/com_github_tikv_client_go_v2-v2.0.8-0.20231116051730-1c2351c28173.zip", ], ) go_repository( name = "com_github_tikv_pd_client", build_file_proto_mode = "disable_global", importpath = "github.com/tikv/pd/client", - sha256 = "79a51a978de81c8a893e2b33c279ac84e3f95ccdf70cb7f62fef9a76472cd92b", - strip_prefix = "github.com/tikv/pd/client@v0.0.0-20230912103610-2f57a9f050eb", + sha256 = "5232ba0bba677a6d4614ae2cc102554d59cd00d473d9138739508d6f25169f02", + strip_prefix = "github.com/tikv/pd/client@v0.0.0-20231127075044-9f4803d8bd05", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/tikv/pd/client/com_github_tikv_pd_client-v0.0.0-20230912103610-2f57a9f050eb.zip", - "http://ats.apps.svc/gomod/github.com/tikv/pd/client/com_github_tikv_pd_client-v0.0.0-20230912103610-2f57a9f050eb.zip", - "https://cache.hawkingrei.com/gomod/github.com/tikv/pd/client/com_github_tikv_pd_client-v0.0.0-20230912103610-2f57a9f050eb.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/tikv/pd/client/com_github_tikv_pd_client-v0.0.0-20230912103610-2f57a9f050eb.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/tikv/pd/client/com_github_tikv_pd_client-v0.0.0-20231127075044-9f4803d8bd05.zip", + "http://ats.apps.svc/gomod/github.com/tikv/pd/client/com_github_tikv_pd_client-v0.0.0-20231127075044-9f4803d8bd05.zip", + "https://cache.hawkingrei.com/gomod/github.com/tikv/pd/client/com_github_tikv_pd_client-v0.0.0-20231127075044-9f4803d8bd05.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/tikv/pd/client/com_github_tikv_pd_client-v0.0.0-20231127075044-9f4803d8bd05.zip", ], ) go_repository( @@ -7440,6 +7327,19 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/VividCortex/ewma/com_github_vividcortex_ewma-v1.2.0.zip", ], ) + go_repository( + name = "com_github_vultr_govultr_v2", + build_file_proto_mode = "disable_global", + importpath = "github.com/vultr/govultr/v2", + sha256 = "3c8f94575d509164614b364a75529b1dab895c228a5b5516b7b6334c96e5094a", + strip_prefix = "github.com/vultr/govultr/v2@v2.17.2", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/vultr/govultr/v2/com_github_vultr_govultr_v2-v2.17.2.zip", + "http://ats.apps.svc/gomod/github.com/vultr/govultr/v2/com_github_vultr_govultr_v2-v2.17.2.zip", + "https://cache.hawkingrei.com/gomod/github.com/vultr/govultr/v2/com_github_vultr_govultr_v2-v2.17.2.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/vultr/govultr/v2/com_github_vultr_govultr_v2-v2.17.2.zip", + ], + ) go_repository( name = "com_github_wangjohn_quickselect", build_file_proto_mode = "disable_global", @@ -7730,338 +7630,338 @@ def go_deps(): name = "com_google_cloud_go", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go", - sha256 = "3d0ed6092ddd6ffdc4ec4f39e627a706c8d71e09330768c8174428db289d21a4", - strip_prefix = "cloud.google.com/go@v0.110.8", + sha256 = "65e6a32b316f200d6b3cf58f2a160dc6f68a85f073dca24c0513f74f30c78471", + strip_prefix = "cloud.google.com/go@v0.110.10", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/com_google_cloud_go-v0.110.8.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/com_google_cloud_go-v0.110.8.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/com_google_cloud_go-v0.110.8.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/com_google_cloud_go-v0.110.8.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/com_google_cloud_go-v0.110.10.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/com_google_cloud_go-v0.110.10.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/com_google_cloud_go-v0.110.10.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/com_google_cloud_go-v0.110.10.zip", ], ) go_repository( name = "com_google_cloud_go_accessapproval", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/accessapproval", - sha256 = "e81216a40f4ed1779d4fd2a031ba6df523c9dc4cbe459ed8e746b6044c865248", - strip_prefix = "cloud.google.com/go/accessapproval@v1.7.2", + sha256 = "1e41e9d3de183c5a7f18e92e7fb8f8225b0875bf1aea89ab5d4744fddcbe64e3", + strip_prefix = "cloud.google.com/go/accessapproval@v1.7.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/accessapproval/com_google_cloud_go_accessapproval-v1.7.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/accessapproval/com_google_cloud_go_accessapproval-v1.7.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/accessapproval/com_google_cloud_go_accessapproval-v1.7.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/accessapproval/com_google_cloud_go_accessapproval-v1.7.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/accessapproval/com_google_cloud_go_accessapproval-v1.7.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/accessapproval/com_google_cloud_go_accessapproval-v1.7.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/accessapproval/com_google_cloud_go_accessapproval-v1.7.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/accessapproval/com_google_cloud_go_accessapproval-v1.7.4.zip", ], ) go_repository( name = "com_google_cloud_go_accesscontextmanager", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/accesscontextmanager", - sha256 = "4010c95bbdceab4050e4b931bdbe978f50e83de78034c9671a23c414bdb97dc3", - strip_prefix = "cloud.google.com/go/accesscontextmanager@v1.8.2", + sha256 = "19144f658a09ae2e8414ea683e1a40eac484e66177ca80224c77b622d18f7304", + strip_prefix = "cloud.google.com/go/accesscontextmanager@v1.8.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/accesscontextmanager/com_google_cloud_go_accesscontextmanager-v1.8.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/accesscontextmanager/com_google_cloud_go_accesscontextmanager-v1.8.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/accesscontextmanager/com_google_cloud_go_accesscontextmanager-v1.8.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/accesscontextmanager/com_google_cloud_go_accesscontextmanager-v1.8.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/accesscontextmanager/com_google_cloud_go_accesscontextmanager-v1.8.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/accesscontextmanager/com_google_cloud_go_accesscontextmanager-v1.8.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/accesscontextmanager/com_google_cloud_go_accesscontextmanager-v1.8.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/accesscontextmanager/com_google_cloud_go_accesscontextmanager-v1.8.4.zip", ], ) go_repository( name = "com_google_cloud_go_aiplatform", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/aiplatform", - sha256 = "9f49dbeaf81d8bf076b2a23f3d2c822f4d60ab41997ca8e9db081ad2e0945e42", - strip_prefix = "cloud.google.com/go/aiplatform@v1.51.1", + sha256 = "ac9a8ef2af71031070a4601a8c617b2d87f7fc6d1a3372be8c3c43ef66c98fb6", + strip_prefix = "cloud.google.com/go/aiplatform@v1.52.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/aiplatform/com_google_cloud_go_aiplatform-v1.51.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/aiplatform/com_google_cloud_go_aiplatform-v1.51.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/aiplatform/com_google_cloud_go_aiplatform-v1.51.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/aiplatform/com_google_cloud_go_aiplatform-v1.51.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/aiplatform/com_google_cloud_go_aiplatform-v1.52.0.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/aiplatform/com_google_cloud_go_aiplatform-v1.52.0.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/aiplatform/com_google_cloud_go_aiplatform-v1.52.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/aiplatform/com_google_cloud_go_aiplatform-v1.52.0.zip", ], ) go_repository( name = "com_google_cloud_go_analytics", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/analytics", - sha256 = "1f0b79e19aa45178c06545ac0eb1ec067583f7742520c933d25722ebdb8d1c2c", - strip_prefix = "cloud.google.com/go/analytics@v0.21.4", + sha256 = "4bc313552680c60feb0171f8e940913a8a61fc3830cb8973833613019528d96b", + strip_prefix = "cloud.google.com/go/analytics@v0.21.6", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/analytics/com_google_cloud_go_analytics-v0.21.4.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/analytics/com_google_cloud_go_analytics-v0.21.4.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/analytics/com_google_cloud_go_analytics-v0.21.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/analytics/com_google_cloud_go_analytics-v0.21.4.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/analytics/com_google_cloud_go_analytics-v0.21.6.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/analytics/com_google_cloud_go_analytics-v0.21.6.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/analytics/com_google_cloud_go_analytics-v0.21.6.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/analytics/com_google_cloud_go_analytics-v0.21.6.zip", ], ) go_repository( name = "com_google_cloud_go_apigateway", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/apigateway", - sha256 = "d3a522706734344ff09513c72b05a8e39bbfe093f9cbab07c3c081698306b014", - strip_prefix = "cloud.google.com/go/apigateway@v1.6.2", + sha256 = "32d4450fb4849b0aae790de816ec13d85f58bb53d295ffa685767fa196ec0069", + strip_prefix = "cloud.google.com/go/apigateway@v1.6.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/apigateway/com_google_cloud_go_apigateway-v1.6.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/apigateway/com_google_cloud_go_apigateway-v1.6.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/apigateway/com_google_cloud_go_apigateway-v1.6.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/apigateway/com_google_cloud_go_apigateway-v1.6.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/apigateway/com_google_cloud_go_apigateway-v1.6.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/apigateway/com_google_cloud_go_apigateway-v1.6.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/apigateway/com_google_cloud_go_apigateway-v1.6.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/apigateway/com_google_cloud_go_apigateway-v1.6.4.zip", ], ) go_repository( name = "com_google_cloud_go_apigeeconnect", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/apigeeconnect", - sha256 = "5d6c4ab3a4a0e921c26b073f7c29ad7dcaff23eef07bd510f2d42fc2a4bb9fc9", - strip_prefix = "cloud.google.com/go/apigeeconnect@v1.6.2", + sha256 = "d26fb32c3e2e3b47d16031bad1c28dd7f277860c5f74d67286a02599fcc3a32c", + strip_prefix = "cloud.google.com/go/apigeeconnect@v1.6.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/apigeeconnect/com_google_cloud_go_apigeeconnect-v1.6.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/apigeeconnect/com_google_cloud_go_apigeeconnect-v1.6.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/apigeeconnect/com_google_cloud_go_apigeeconnect-v1.6.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/apigeeconnect/com_google_cloud_go_apigeeconnect-v1.6.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/apigeeconnect/com_google_cloud_go_apigeeconnect-v1.6.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/apigeeconnect/com_google_cloud_go_apigeeconnect-v1.6.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/apigeeconnect/com_google_cloud_go_apigeeconnect-v1.6.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/apigeeconnect/com_google_cloud_go_apigeeconnect-v1.6.4.zip", ], ) go_repository( name = "com_google_cloud_go_apigeeregistry", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/apigeeregistry", - sha256 = "949009434d483756469a40a091e20b979fde2811df9a7f9d5955e1cceecb9b65", - strip_prefix = "cloud.google.com/go/apigeeregistry@v0.7.2", + sha256 = "79691228fa1d9d9ab252bcd702401e20a4cad8965909c9cffdfef7686be57a74", + strip_prefix = "cloud.google.com/go/apigeeregistry@v0.8.2", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/apigeeregistry/com_google_cloud_go_apigeeregistry-v0.7.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/apigeeregistry/com_google_cloud_go_apigeeregistry-v0.7.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/apigeeregistry/com_google_cloud_go_apigeeregistry-v0.7.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/apigeeregistry/com_google_cloud_go_apigeeregistry-v0.7.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/apigeeregistry/com_google_cloud_go_apigeeregistry-v0.8.2.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/apigeeregistry/com_google_cloud_go_apigeeregistry-v0.8.2.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/apigeeregistry/com_google_cloud_go_apigeeregistry-v0.8.2.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/apigeeregistry/com_google_cloud_go_apigeeregistry-v0.8.2.zip", ], ) go_repository( name = "com_google_cloud_go_appengine", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/appengine", - sha256 = "ef8ebfc267080d470ebe4bcebef59e8bae90a1418b3f03b27f334e2058d4517e", - strip_prefix = "cloud.google.com/go/appengine@v1.8.2", + sha256 = "5179d561ca87d19aec04a7b495c1f48093b317491463093a00fc0b2842cbdbfd", + strip_prefix = "cloud.google.com/go/appengine@v1.8.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/appengine/com_google_cloud_go_appengine-v1.8.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/appengine/com_google_cloud_go_appengine-v1.8.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/appengine/com_google_cloud_go_appengine-v1.8.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/appengine/com_google_cloud_go_appengine-v1.8.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/appengine/com_google_cloud_go_appengine-v1.8.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/appengine/com_google_cloud_go_appengine-v1.8.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/appengine/com_google_cloud_go_appengine-v1.8.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/appengine/com_google_cloud_go_appengine-v1.8.4.zip", ], ) go_repository( name = "com_google_cloud_go_area120", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/area120", - sha256 = "04c79c0f28dce15cc4c3ff476995e9691431417b85293b8b202923ea85c2bab5", - strip_prefix = "cloud.google.com/go/area120@v0.8.2", + sha256 = "89798c53eae268b748c706963ca24d6513dcbb2b321ba4294c3c65c7df931db3", + strip_prefix = "cloud.google.com/go/area120@v0.8.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/area120/com_google_cloud_go_area120-v0.8.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/area120/com_google_cloud_go_area120-v0.8.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/area120/com_google_cloud_go_area120-v0.8.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/area120/com_google_cloud_go_area120-v0.8.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/area120/com_google_cloud_go_area120-v0.8.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/area120/com_google_cloud_go_area120-v0.8.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/area120/com_google_cloud_go_area120-v0.8.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/area120/com_google_cloud_go_area120-v0.8.4.zip", ], ) go_repository( name = "com_google_cloud_go_artifactregistry", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/artifactregistry", - sha256 = "121b1aba80e678166214cdcf45093fdface59a86ff7a930f3a44381e9c3c2f43", - strip_prefix = "cloud.google.com/go/artifactregistry@v1.14.3", + sha256 = "5514a73eefd4a0f7a3120d2d932272e982e31c13be07e234f9d6e76e3436bf7c", + strip_prefix = "cloud.google.com/go/artifactregistry@v1.14.6", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/artifactregistry/com_google_cloud_go_artifactregistry-v1.14.3.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/artifactregistry/com_google_cloud_go_artifactregistry-v1.14.3.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/artifactregistry/com_google_cloud_go_artifactregistry-v1.14.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/artifactregistry/com_google_cloud_go_artifactregistry-v1.14.3.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/artifactregistry/com_google_cloud_go_artifactregistry-v1.14.6.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/artifactregistry/com_google_cloud_go_artifactregistry-v1.14.6.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/artifactregistry/com_google_cloud_go_artifactregistry-v1.14.6.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/artifactregistry/com_google_cloud_go_artifactregistry-v1.14.6.zip", ], ) go_repository( name = "com_google_cloud_go_asset", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/asset", - sha256 = "8c99032799a39f65d87c1ed91bbaebe5ed2b84675231933106b0a8b48997214a", - strip_prefix = "cloud.google.com/go/asset@v1.15.1", + sha256 = "98a53c57e877c9917eb8ef5427f31127fefa99ec4f2e2695f83479f1673c55a2", + strip_prefix = "cloud.google.com/go/asset@v1.15.3", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/asset/com_google_cloud_go_asset-v1.15.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/asset/com_google_cloud_go_asset-v1.15.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/asset/com_google_cloud_go_asset-v1.15.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/asset/com_google_cloud_go_asset-v1.15.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/asset/com_google_cloud_go_asset-v1.15.3.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/asset/com_google_cloud_go_asset-v1.15.3.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/asset/com_google_cloud_go_asset-v1.15.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/asset/com_google_cloud_go_asset-v1.15.3.zip", ], ) go_repository( name = "com_google_cloud_go_assuredworkloads", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/assuredworkloads", - sha256 = "31788ef9db908faea41ecbd7f8d49246d47e77897029f153df641759f9456e78", - strip_prefix = "cloud.google.com/go/assuredworkloads@v1.11.2", + sha256 = "65cc222f6804acb22126ab3b0233eb397b49b54a6005547041ead1ec333cf173", + strip_prefix = "cloud.google.com/go/assuredworkloads@v1.11.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/assuredworkloads/com_google_cloud_go_assuredworkloads-v1.11.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/assuredworkloads/com_google_cloud_go_assuredworkloads-v1.11.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/assuredworkloads/com_google_cloud_go_assuredworkloads-v1.11.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/assuredworkloads/com_google_cloud_go_assuredworkloads-v1.11.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/assuredworkloads/com_google_cloud_go_assuredworkloads-v1.11.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/assuredworkloads/com_google_cloud_go_assuredworkloads-v1.11.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/assuredworkloads/com_google_cloud_go_assuredworkloads-v1.11.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/assuredworkloads/com_google_cloud_go_assuredworkloads-v1.11.4.zip", ], ) go_repository( name = "com_google_cloud_go_automl", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/automl", - sha256 = "2d4aea70974f6409654bad3125ae1d80b810a1cb1777aee622c8502dd52c6693", - strip_prefix = "cloud.google.com/go/automl@v1.13.2", + sha256 = "9bfb0e21231d251103bb04d5334cb64951c17d8e4c55ff191472a7c3ce758f94", + strip_prefix = "cloud.google.com/go/automl@v1.13.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/automl/com_google_cloud_go_automl-v1.13.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/automl/com_google_cloud_go_automl-v1.13.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/automl/com_google_cloud_go_automl-v1.13.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/automl/com_google_cloud_go_automl-v1.13.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/automl/com_google_cloud_go_automl-v1.13.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/automl/com_google_cloud_go_automl-v1.13.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/automl/com_google_cloud_go_automl-v1.13.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/automl/com_google_cloud_go_automl-v1.13.4.zip", ], ) go_repository( name = "com_google_cloud_go_baremetalsolution", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/baremetalsolution", - sha256 = "79a2af9446dad6522ffaf60e3da8f564813b6a3ec7d71f43080f86e49bf90460", - strip_prefix = "cloud.google.com/go/baremetalsolution@v1.2.1", + sha256 = "44292fd306af8a1997d7fafcbe1b5bb85afdd1ed5d924a6b3030c3fd49c3bc88", + strip_prefix = "cloud.google.com/go/baremetalsolution@v1.2.3", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/baremetalsolution/com_google_cloud_go_baremetalsolution-v1.2.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/baremetalsolution/com_google_cloud_go_baremetalsolution-v1.2.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/baremetalsolution/com_google_cloud_go_baremetalsolution-v1.2.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/baremetalsolution/com_google_cloud_go_baremetalsolution-v1.2.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/baremetalsolution/com_google_cloud_go_baremetalsolution-v1.2.3.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/baremetalsolution/com_google_cloud_go_baremetalsolution-v1.2.3.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/baremetalsolution/com_google_cloud_go_baremetalsolution-v1.2.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/baremetalsolution/com_google_cloud_go_baremetalsolution-v1.2.3.zip", ], ) go_repository( name = "com_google_cloud_go_batch", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/batch", - sha256 = "d06b057177356f5d91140f59c2015a295f98f040f81d54b25f0d0bff230e3b2a", - strip_prefix = "cloud.google.com/go/batch@v1.5.1", + sha256 = "d7f09a5da02b32c3e00759974de19b562b33869c43de1dbfa65a7b3e8c916ac4", + strip_prefix = "cloud.google.com/go/batch@v1.6.3", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/batch/com_google_cloud_go_batch-v1.5.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/batch/com_google_cloud_go_batch-v1.5.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/batch/com_google_cloud_go_batch-v1.5.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/batch/com_google_cloud_go_batch-v1.5.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/batch/com_google_cloud_go_batch-v1.6.3.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/batch/com_google_cloud_go_batch-v1.6.3.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/batch/com_google_cloud_go_batch-v1.6.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/batch/com_google_cloud_go_batch-v1.6.3.zip", ], ) go_repository( name = "com_google_cloud_go_beyondcorp", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/beyondcorp", - sha256 = "e7497be44bc10e4c468a3b100f65ae8e3d351034544c2feb1447f54300659bfd", - strip_prefix = "cloud.google.com/go/beyondcorp@v1.0.1", + sha256 = "bf9fe334b6f6ce1896e0339eaea1a6e39405cb37cee0dddbea4f1f0545af267a", + strip_prefix = "cloud.google.com/go/beyondcorp@v1.0.3", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/beyondcorp/com_google_cloud_go_beyondcorp-v1.0.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/beyondcorp/com_google_cloud_go_beyondcorp-v1.0.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/beyondcorp/com_google_cloud_go_beyondcorp-v1.0.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/beyondcorp/com_google_cloud_go_beyondcorp-v1.0.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/beyondcorp/com_google_cloud_go_beyondcorp-v1.0.3.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/beyondcorp/com_google_cloud_go_beyondcorp-v1.0.3.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/beyondcorp/com_google_cloud_go_beyondcorp-v1.0.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/beyondcorp/com_google_cloud_go_beyondcorp-v1.0.3.zip", ], ) go_repository( name = "com_google_cloud_go_bigquery", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/bigquery", - sha256 = "e876ce8407d288df3075f142c19c429540a7a917b1fdd6dd68b3438ad8349412", - strip_prefix = "cloud.google.com/go/bigquery@v1.56.0", + sha256 = "fdf3bd1f87405dfdd1942182302c0954fdb09f05268ff632cf6ce686fec68444", + strip_prefix = "cloud.google.com/go/bigquery@v1.57.1", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/bigquery/com_google_cloud_go_bigquery-v1.56.0.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/bigquery/com_google_cloud_go_bigquery-v1.56.0.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/bigquery/com_google_cloud_go_bigquery-v1.56.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/bigquery/com_google_cloud_go_bigquery-v1.56.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/bigquery/com_google_cloud_go_bigquery-v1.57.1.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/bigquery/com_google_cloud_go_bigquery-v1.57.1.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/bigquery/com_google_cloud_go_bigquery-v1.57.1.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/bigquery/com_google_cloud_go_bigquery-v1.57.1.zip", ], ) go_repository( name = "com_google_cloud_go_billing", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/billing", - sha256 = "fecfc00cf9ea70a1109ec8e1a190e328fb1cc2f0159b1d4b10111cd5651b2bae", - strip_prefix = "cloud.google.com/go/billing@v1.17.2", + sha256 = "5df058fed01cf1fb5a2a5e924e8e1aba7c790a63fb8c7c0d6d60237fa1917b44", + strip_prefix = "cloud.google.com/go/billing@v1.17.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/billing/com_google_cloud_go_billing-v1.17.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/billing/com_google_cloud_go_billing-v1.17.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/billing/com_google_cloud_go_billing-v1.17.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/billing/com_google_cloud_go_billing-v1.17.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/billing/com_google_cloud_go_billing-v1.17.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/billing/com_google_cloud_go_billing-v1.17.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/billing/com_google_cloud_go_billing-v1.17.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/billing/com_google_cloud_go_billing-v1.17.4.zip", ], ) go_repository( name = "com_google_cloud_go_binaryauthorization", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/binaryauthorization", - sha256 = "afb102bcbd2836c1371d9e6a179da9109cdaa5c41a286d73ee6c93d3ae775736", - strip_prefix = "cloud.google.com/go/binaryauthorization@v1.7.1", + sha256 = "689b3c95ee0449009ba3bf2b3ebddb750ac56ff6b4524f0786bb8ad85cebca39", + strip_prefix = "cloud.google.com/go/binaryauthorization@v1.7.3", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/binaryauthorization/com_google_cloud_go_binaryauthorization-v1.7.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/binaryauthorization/com_google_cloud_go_binaryauthorization-v1.7.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/binaryauthorization/com_google_cloud_go_binaryauthorization-v1.7.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/binaryauthorization/com_google_cloud_go_binaryauthorization-v1.7.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/binaryauthorization/com_google_cloud_go_binaryauthorization-v1.7.3.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/binaryauthorization/com_google_cloud_go_binaryauthorization-v1.7.3.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/binaryauthorization/com_google_cloud_go_binaryauthorization-v1.7.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/binaryauthorization/com_google_cloud_go_binaryauthorization-v1.7.3.zip", ], ) go_repository( name = "com_google_cloud_go_certificatemanager", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/certificatemanager", - sha256 = "877ddd1a5c8e2efa94f0055b5371306eb07cf4cd52d5a70c15e0c38d6f6d8e32", - strip_prefix = "cloud.google.com/go/certificatemanager@v1.7.2", + sha256 = "afc6bab867cbab53582d921d726378daf46938e4f24fdf9a05373b0664ad78d2", + strip_prefix = "cloud.google.com/go/certificatemanager@v1.7.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/certificatemanager/com_google_cloud_go_certificatemanager-v1.7.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/certificatemanager/com_google_cloud_go_certificatemanager-v1.7.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/certificatemanager/com_google_cloud_go_certificatemanager-v1.7.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/certificatemanager/com_google_cloud_go_certificatemanager-v1.7.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/certificatemanager/com_google_cloud_go_certificatemanager-v1.7.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/certificatemanager/com_google_cloud_go_certificatemanager-v1.7.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/certificatemanager/com_google_cloud_go_certificatemanager-v1.7.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/certificatemanager/com_google_cloud_go_certificatemanager-v1.7.4.zip", ], ) go_repository( name = "com_google_cloud_go_channel", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/channel", - sha256 = "fd6990eda15ff2f698c8f09db37f5ba11d3a39b89fae50b6231c9ae2eae4a768", - strip_prefix = "cloud.google.com/go/channel@v1.17.1", + sha256 = "3d69ec1b2b1fd69def2d60e7798430bfc74408f223db4e0afe7eb07db188a0d6", + strip_prefix = "cloud.google.com/go/channel@v1.17.3", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/channel/com_google_cloud_go_channel-v1.17.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/channel/com_google_cloud_go_channel-v1.17.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/channel/com_google_cloud_go_channel-v1.17.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/channel/com_google_cloud_go_channel-v1.17.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/channel/com_google_cloud_go_channel-v1.17.3.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/channel/com_google_cloud_go_channel-v1.17.3.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/channel/com_google_cloud_go_channel-v1.17.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/channel/com_google_cloud_go_channel-v1.17.3.zip", ], ) go_repository( name = "com_google_cloud_go_cloudbuild", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/cloudbuild", - sha256 = "f3e6b2f036308af4749695e059c274459a89a3329785a7a68492e85ecb5a5a22", - strip_prefix = "cloud.google.com/go/cloudbuild@v1.14.1", + sha256 = "f1ef849f9d6fed0cb77f9dcc7122d857863044850df8007e5155ba8487209965", + strip_prefix = "cloud.google.com/go/cloudbuild@v1.14.3", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/cloudbuild/com_google_cloud_go_cloudbuild-v1.14.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/cloudbuild/com_google_cloud_go_cloudbuild-v1.14.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/cloudbuild/com_google_cloud_go_cloudbuild-v1.14.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/cloudbuild/com_google_cloud_go_cloudbuild-v1.14.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/cloudbuild/com_google_cloud_go_cloudbuild-v1.14.3.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/cloudbuild/com_google_cloud_go_cloudbuild-v1.14.3.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/cloudbuild/com_google_cloud_go_cloudbuild-v1.14.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/cloudbuild/com_google_cloud_go_cloudbuild-v1.14.3.zip", ], ) go_repository( name = "com_google_cloud_go_clouddms", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/clouddms", - sha256 = "bbdc27660a1a25cbe7f5c8d2ef3b87fc97910178f43a2ba037f7735b5939b186", - strip_prefix = "cloud.google.com/go/clouddms@v1.7.1", + sha256 = "49ea23b98c66c920e6326e516937d10a09f171751b53f9d6eab59150394e0550", + strip_prefix = "cloud.google.com/go/clouddms@v1.7.3", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/clouddms/com_google_cloud_go_clouddms-v1.7.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/clouddms/com_google_cloud_go_clouddms-v1.7.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/clouddms/com_google_cloud_go_clouddms-v1.7.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/clouddms/com_google_cloud_go_clouddms-v1.7.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/clouddms/com_google_cloud_go_clouddms-v1.7.3.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/clouddms/com_google_cloud_go_clouddms-v1.7.3.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/clouddms/com_google_cloud_go_clouddms-v1.7.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/clouddms/com_google_cloud_go_clouddms-v1.7.3.zip", ], ) go_repository( name = "com_google_cloud_go_cloudtasks", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/cloudtasks", - sha256 = "4a4c78416add083ce1b7a8e82138f08f5940c132a1a8705c97e4523f5fbd91e9", - strip_prefix = "cloud.google.com/go/cloudtasks@v1.12.2", + sha256 = "149863d6b4f1f5b937be07a8c3253500f6238a7818f3e8446140be09c0b6c304", + strip_prefix = "cloud.google.com/go/cloudtasks@v1.12.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/cloudtasks/com_google_cloud_go_cloudtasks-v1.12.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/cloudtasks/com_google_cloud_go_cloudtasks-v1.12.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/cloudtasks/com_google_cloud_go_cloudtasks-v1.12.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/cloudtasks/com_google_cloud_go_cloudtasks-v1.12.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/cloudtasks/com_google_cloud_go_cloudtasks-v1.12.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/cloudtasks/com_google_cloud_go_cloudtasks-v1.12.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/cloudtasks/com_google_cloud_go_cloudtasks-v1.12.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/cloudtasks/com_google_cloud_go_cloudtasks-v1.12.4.zip", ], ) go_repository( name = "com_google_cloud_go_compute", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/compute", - sha256 = "cde4afb8f4c63ff4b1b17feb0a9ae75abbd0fbfdd9e94ffa0eaaf300e803dce7", - strip_prefix = "cloud.google.com/go/compute@v1.23.1", + sha256 = "9214cf85837ea8b96bd61e56e297f06d3008b9d1fc81841e79aaad2940f3ed56", + strip_prefix = "cloud.google.com/go/compute@v1.23.3", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/compute/com_google_cloud_go_compute-v1.23.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/compute/com_google_cloud_go_compute-v1.23.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/compute/com_google_cloud_go_compute-v1.23.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/compute/com_google_cloud_go_compute-v1.23.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/compute/com_google_cloud_go_compute-v1.23.3.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/compute/com_google_cloud_go_compute-v1.23.3.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/compute/com_google_cloud_go_compute-v1.23.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/compute/com_google_cloud_go_compute-v1.23.3.zip", ], ) go_repository( @@ -8081,143 +7981,143 @@ def go_deps(): name = "com_google_cloud_go_contactcenterinsights", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/contactcenterinsights", - sha256 = "9e08c7acf5ffb2fcff937872cad37d7e1a2dc1b7d0d70aa450beb7cb21c61b1c", - strip_prefix = "cloud.google.com/go/contactcenterinsights@v1.11.1", + sha256 = "d26b376d57b67a99e35f1dbb68b6396dfcc59552eb6346dae9c1fd54fc0ef6a5", + strip_prefix = "cloud.google.com/go/contactcenterinsights@v1.11.3", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/contactcenterinsights/com_google_cloud_go_contactcenterinsights-v1.11.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/contactcenterinsights/com_google_cloud_go_contactcenterinsights-v1.11.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/contactcenterinsights/com_google_cloud_go_contactcenterinsights-v1.11.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/contactcenterinsights/com_google_cloud_go_contactcenterinsights-v1.11.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/contactcenterinsights/com_google_cloud_go_contactcenterinsights-v1.11.3.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/contactcenterinsights/com_google_cloud_go_contactcenterinsights-v1.11.3.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/contactcenterinsights/com_google_cloud_go_contactcenterinsights-v1.11.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/contactcenterinsights/com_google_cloud_go_contactcenterinsights-v1.11.3.zip", ], ) go_repository( name = "com_google_cloud_go_container", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/container", - sha256 = "f93f3636acb226560294d803e2f0b563e5ea5a0383707343ddd40c3287e53f43", - strip_prefix = "cloud.google.com/go/container@v1.26.1", + sha256 = "0185d0ab299a3468d8e96f6d96ab680c96cb9e0718b6e017151ee2d4de681e44", + strip_prefix = "cloud.google.com/go/container@v1.27.1", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/container/com_google_cloud_go_container-v1.26.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/container/com_google_cloud_go_container-v1.26.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/container/com_google_cloud_go_container-v1.26.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/container/com_google_cloud_go_container-v1.26.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/container/com_google_cloud_go_container-v1.27.1.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/container/com_google_cloud_go_container-v1.27.1.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/container/com_google_cloud_go_container-v1.27.1.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/container/com_google_cloud_go_container-v1.27.1.zip", ], ) go_repository( name = "com_google_cloud_go_containeranalysis", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/containeranalysis", - sha256 = "afe6c1616e50df702c99867da30e415b6fcaa6212175b4552c8fba41b171e803", - strip_prefix = "cloud.google.com/go/containeranalysis@v0.11.1", + sha256 = "d5920157486da69e257434e94e072952f6596084f262291a18ea1b0018295ef6", + strip_prefix = "cloud.google.com/go/containeranalysis@v0.11.3", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/containeranalysis/com_google_cloud_go_containeranalysis-v0.11.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/containeranalysis/com_google_cloud_go_containeranalysis-v0.11.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/containeranalysis/com_google_cloud_go_containeranalysis-v0.11.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/containeranalysis/com_google_cloud_go_containeranalysis-v0.11.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/containeranalysis/com_google_cloud_go_containeranalysis-v0.11.3.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/containeranalysis/com_google_cloud_go_containeranalysis-v0.11.3.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/containeranalysis/com_google_cloud_go_containeranalysis-v0.11.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/containeranalysis/com_google_cloud_go_containeranalysis-v0.11.3.zip", ], ) go_repository( name = "com_google_cloud_go_datacatalog", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/datacatalog", - sha256 = "92d8c36abbd4a2224889e077ca5cfdf25ec9eecbbfd08e3c77817bbdfa414947", - strip_prefix = "cloud.google.com/go/datacatalog@v1.18.1", + sha256 = "b553802a86e5c851719265f2ead1e9b5a82e385f71be94d72871cc09d9f64473", + strip_prefix = "cloud.google.com/go/datacatalog@v1.18.3", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/datacatalog/com_google_cloud_go_datacatalog-v1.18.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/datacatalog/com_google_cloud_go_datacatalog-v1.18.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/datacatalog/com_google_cloud_go_datacatalog-v1.18.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/datacatalog/com_google_cloud_go_datacatalog-v1.18.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/datacatalog/com_google_cloud_go_datacatalog-v1.18.3.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/datacatalog/com_google_cloud_go_datacatalog-v1.18.3.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/datacatalog/com_google_cloud_go_datacatalog-v1.18.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/datacatalog/com_google_cloud_go_datacatalog-v1.18.3.zip", ], ) go_repository( name = "com_google_cloud_go_dataflow", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/dataflow", - sha256 = "1b26af290f0f57e70e5ddf886e44c4e6e1d4c209819c3dcc698c199ff51ef00d", - strip_prefix = "cloud.google.com/go/dataflow@v0.9.2", + sha256 = "0f71665b59fcf45966f5aa3ea2c96a21134d8134965ad707a567b8a49e893294", + strip_prefix = "cloud.google.com/go/dataflow@v0.9.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/dataflow/com_google_cloud_go_dataflow-v0.9.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/dataflow/com_google_cloud_go_dataflow-v0.9.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/dataflow/com_google_cloud_go_dataflow-v0.9.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/dataflow/com_google_cloud_go_dataflow-v0.9.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/dataflow/com_google_cloud_go_dataflow-v0.9.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/dataflow/com_google_cloud_go_dataflow-v0.9.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/dataflow/com_google_cloud_go_dataflow-v0.9.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/dataflow/com_google_cloud_go_dataflow-v0.9.4.zip", ], ) go_repository( name = "com_google_cloud_go_dataform", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/dataform", - sha256 = "da816fdd03b9c9240c1a62adeb2aed112e3bf68f775e45944791c8a912c4a69e", - strip_prefix = "cloud.google.com/go/dataform@v0.8.2", + sha256 = "cfc3c35c07e83a83a01af2eb90d2cbdc2ee1c3d0ce2be81fbf74ec7796fbcbbb", + strip_prefix = "cloud.google.com/go/dataform@v0.9.1", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/dataform/com_google_cloud_go_dataform-v0.8.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/dataform/com_google_cloud_go_dataform-v0.8.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/dataform/com_google_cloud_go_dataform-v0.8.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/dataform/com_google_cloud_go_dataform-v0.8.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/dataform/com_google_cloud_go_dataform-v0.9.1.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/dataform/com_google_cloud_go_dataform-v0.9.1.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/dataform/com_google_cloud_go_dataform-v0.9.1.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/dataform/com_google_cloud_go_dataform-v0.9.1.zip", ], ) go_repository( name = "com_google_cloud_go_datafusion", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/datafusion", - sha256 = "ea3e48d218c57cbfb2e2bbdab083d4218f918da3864c723fa36cd36af8dacf7e", - strip_prefix = "cloud.google.com/go/datafusion@v1.7.2", + sha256 = "6128703042c84c3d685b784d76db2ecae1efc3eea722303e7de13d91b6fbbd2f", + strip_prefix = "cloud.google.com/go/datafusion@v1.7.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/datafusion/com_google_cloud_go_datafusion-v1.7.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/datafusion/com_google_cloud_go_datafusion-v1.7.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/datafusion/com_google_cloud_go_datafusion-v1.7.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/datafusion/com_google_cloud_go_datafusion-v1.7.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/datafusion/com_google_cloud_go_datafusion-v1.7.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/datafusion/com_google_cloud_go_datafusion-v1.7.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/datafusion/com_google_cloud_go_datafusion-v1.7.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/datafusion/com_google_cloud_go_datafusion-v1.7.4.zip", ], ) go_repository( name = "com_google_cloud_go_datalabeling", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/datalabeling", - sha256 = "51e5e5eb727485adc627c9ef3031b27747600804a7a2ae42275f2c4475dfab64", - strip_prefix = "cloud.google.com/go/datalabeling@v0.8.2", + sha256 = "667688171b5b6b5996cc1fc1b29f7e622ee1ff9c3da365f5fba67af1f795da94", + strip_prefix = "cloud.google.com/go/datalabeling@v0.8.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/datalabeling/com_google_cloud_go_datalabeling-v0.8.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/datalabeling/com_google_cloud_go_datalabeling-v0.8.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/datalabeling/com_google_cloud_go_datalabeling-v0.8.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/datalabeling/com_google_cloud_go_datalabeling-v0.8.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/datalabeling/com_google_cloud_go_datalabeling-v0.8.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/datalabeling/com_google_cloud_go_datalabeling-v0.8.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/datalabeling/com_google_cloud_go_datalabeling-v0.8.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/datalabeling/com_google_cloud_go_datalabeling-v0.8.4.zip", ], ) go_repository( name = "com_google_cloud_go_dataplex", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/dataplex", - sha256 = "a2bcf17307e944d70a8745586df8e57f8a46feb464607715b2d916d69ea3431d", - strip_prefix = "cloud.google.com/go/dataplex@v1.10.1", + sha256 = "b5b04335e6d5ca695c41e795219c4a140c46e3175b8802bb5faf3a7d0fcbe5b5", + strip_prefix = "cloud.google.com/go/dataplex@v1.11.1", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/dataplex/com_google_cloud_go_dataplex-v1.10.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/dataplex/com_google_cloud_go_dataplex-v1.10.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/dataplex/com_google_cloud_go_dataplex-v1.10.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/dataplex/com_google_cloud_go_dataplex-v1.10.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/dataplex/com_google_cloud_go_dataplex-v1.11.1.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/dataplex/com_google_cloud_go_dataplex-v1.11.1.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/dataplex/com_google_cloud_go_dataplex-v1.11.1.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/dataplex/com_google_cloud_go_dataplex-v1.11.1.zip", ], ) go_repository( name = "com_google_cloud_go_dataproc_v2", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/dataproc/v2", - sha256 = "9f170a095d8a5b7976ce660a31414882a8f38d4443c3cf05d70fe28ceab1e985", - strip_prefix = "cloud.google.com/go/dataproc/v2@v2.2.1", + sha256 = "b521fdfdbc339546d214b318d7f918888a16abff55f4761d22c4bd7002cdd494", + strip_prefix = "cloud.google.com/go/dataproc/v2@v2.2.3", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/dataproc/v2/com_google_cloud_go_dataproc_v2-v2.2.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/dataproc/v2/com_google_cloud_go_dataproc_v2-v2.2.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/dataproc/v2/com_google_cloud_go_dataproc_v2-v2.2.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/dataproc/v2/com_google_cloud_go_dataproc_v2-v2.2.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/dataproc/v2/com_google_cloud_go_dataproc_v2-v2.2.3.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/dataproc/v2/com_google_cloud_go_dataproc_v2-v2.2.3.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/dataproc/v2/com_google_cloud_go_dataproc_v2-v2.2.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/dataproc/v2/com_google_cloud_go_dataproc_v2-v2.2.3.zip", ], ) go_repository( name = "com_google_cloud_go_dataqna", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/dataqna", - sha256 = "69fcb32f4dc8b37e5a1a9e6fd3c33e64953ea06cb91fcfbcf59cafa31dfa8d86", - strip_prefix = "cloud.google.com/go/dataqna@v0.8.2", + sha256 = "59a30948890053cd9753d08670f73dd7caf58baa3f96f40eeb631dbc912d274c", + strip_prefix = "cloud.google.com/go/dataqna@v0.8.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/dataqna/com_google_cloud_go_dataqna-v0.8.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/dataqna/com_google_cloud_go_dataqna-v0.8.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/dataqna/com_google_cloud_go_dataqna-v0.8.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/dataqna/com_google_cloud_go_dataqna-v0.8.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/dataqna/com_google_cloud_go_dataqna-v0.8.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/dataqna/com_google_cloud_go_dataqna-v0.8.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/dataqna/com_google_cloud_go_dataqna-v0.8.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/dataqna/com_google_cloud_go_dataqna-v0.8.4.zip", ], ) go_repository( @@ -8237,91 +8137,91 @@ def go_deps(): name = "com_google_cloud_go_datastream", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/datastream", - sha256 = "29df6dde384fe4c964970ef77462fd939b8c45d49ff7cb82fbc39596f8e34893", - strip_prefix = "cloud.google.com/go/datastream@v1.10.1", + sha256 = "869245a4d245b607df6b5e2735c563523c6a7d305d2ba4a5bb2916dfcb3ee153", + strip_prefix = "cloud.google.com/go/datastream@v1.10.3", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/datastream/com_google_cloud_go_datastream-v1.10.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/datastream/com_google_cloud_go_datastream-v1.10.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/datastream/com_google_cloud_go_datastream-v1.10.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/datastream/com_google_cloud_go_datastream-v1.10.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/datastream/com_google_cloud_go_datastream-v1.10.3.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/datastream/com_google_cloud_go_datastream-v1.10.3.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/datastream/com_google_cloud_go_datastream-v1.10.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/datastream/com_google_cloud_go_datastream-v1.10.3.zip", ], ) go_repository( name = "com_google_cloud_go_deploy", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/deploy", - sha256 = "f7555f1cd13f36ae70982f4729531176cf322a75c6b9dde6c72f8a843d525481", - strip_prefix = "cloud.google.com/go/deploy@v1.13.1", + sha256 = "ebb8d298df020747a043567258f4bd7dbea45392ebe63b0fdf2791992586e539", + strip_prefix = "cloud.google.com/go/deploy@v1.14.2", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/deploy/com_google_cloud_go_deploy-v1.13.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/deploy/com_google_cloud_go_deploy-v1.13.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/deploy/com_google_cloud_go_deploy-v1.13.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/deploy/com_google_cloud_go_deploy-v1.13.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/deploy/com_google_cloud_go_deploy-v1.14.2.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/deploy/com_google_cloud_go_deploy-v1.14.2.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/deploy/com_google_cloud_go_deploy-v1.14.2.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/deploy/com_google_cloud_go_deploy-v1.14.2.zip", ], ) go_repository( name = "com_google_cloud_go_dialogflow", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/dialogflow", - sha256 = "9a17b92cec11b7877f38b7d31bb42928710b87f55b54c703b0858a86bf26421f", - strip_prefix = "cloud.google.com/go/dialogflow@v1.44.1", + sha256 = "085bda58ebc4499d6b4c178d9c1c09ddb574716817ef3f3d3881469d710ab34c", + strip_prefix = "cloud.google.com/go/dialogflow@v1.44.3", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/dialogflow/com_google_cloud_go_dialogflow-v1.44.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/dialogflow/com_google_cloud_go_dialogflow-v1.44.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/dialogflow/com_google_cloud_go_dialogflow-v1.44.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/dialogflow/com_google_cloud_go_dialogflow-v1.44.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/dialogflow/com_google_cloud_go_dialogflow-v1.44.3.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/dialogflow/com_google_cloud_go_dialogflow-v1.44.3.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/dialogflow/com_google_cloud_go_dialogflow-v1.44.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/dialogflow/com_google_cloud_go_dialogflow-v1.44.3.zip", ], ) go_repository( name = "com_google_cloud_go_dlp", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/dlp", - sha256 = "787fb0c860a5a6df47080feb59dc34bb26fc23fed5a98d8fc7b42636bc81b5ac", - strip_prefix = "cloud.google.com/go/dlp@v1.10.2", + sha256 = "76d5b843509ca2acf293bbf1296b3468a4d93ac107bdc87f84dbff7e8ede9f1d", + strip_prefix = "cloud.google.com/go/dlp@v1.11.1", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/dlp/com_google_cloud_go_dlp-v1.10.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/dlp/com_google_cloud_go_dlp-v1.10.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/dlp/com_google_cloud_go_dlp-v1.10.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/dlp/com_google_cloud_go_dlp-v1.10.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/dlp/com_google_cloud_go_dlp-v1.11.1.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/dlp/com_google_cloud_go_dlp-v1.11.1.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/dlp/com_google_cloud_go_dlp-v1.11.1.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/dlp/com_google_cloud_go_dlp-v1.11.1.zip", ], ) go_repository( name = "com_google_cloud_go_documentai", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/documentai", - sha256 = "d306b29ea9ed00003eb4a72de10527a9898b32a67a5d9b1c028845db6ee977e6", - strip_prefix = "cloud.google.com/go/documentai@v1.23.2", + sha256 = "908e696281ff4bddd73363cceabdeff568a3dc4f781b3c8ffebd2c337481755a", + strip_prefix = "cloud.google.com/go/documentai@v1.23.5", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/documentai/com_google_cloud_go_documentai-v1.23.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/documentai/com_google_cloud_go_documentai-v1.23.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/documentai/com_google_cloud_go_documentai-v1.23.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/documentai/com_google_cloud_go_documentai-v1.23.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/documentai/com_google_cloud_go_documentai-v1.23.5.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/documentai/com_google_cloud_go_documentai-v1.23.5.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/documentai/com_google_cloud_go_documentai-v1.23.5.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/documentai/com_google_cloud_go_documentai-v1.23.5.zip", ], ) go_repository( name = "com_google_cloud_go_domains", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/domains", - sha256 = "541b361f96b0f849324e794b2b24f53aa73e30dbb1ba02f12e94b5dd38759db7", - strip_prefix = "cloud.google.com/go/domains@v0.9.2", + sha256 = "c2b2502a12b12fb176edcf6f8d1c6051b9a32879aa172cfcb8e46a0db60d2d28", + strip_prefix = "cloud.google.com/go/domains@v0.9.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/domains/com_google_cloud_go_domains-v0.9.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/domains/com_google_cloud_go_domains-v0.9.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/domains/com_google_cloud_go_domains-v0.9.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/domains/com_google_cloud_go_domains-v0.9.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/domains/com_google_cloud_go_domains-v0.9.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/domains/com_google_cloud_go_domains-v0.9.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/domains/com_google_cloud_go_domains-v0.9.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/domains/com_google_cloud_go_domains-v0.9.4.zip", ], ) go_repository( name = "com_google_cloud_go_edgecontainer", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/edgecontainer", - sha256 = "6671ed73144587cd1f5d20982d395a8628ad130ffea7d064d790e2c92274b3b3", - strip_prefix = "cloud.google.com/go/edgecontainer@v1.1.2", + sha256 = "aff88494c5b7882cc57985afa9f4da589cceb4eb8e8e7948747ffcde24a8c860", + strip_prefix = "cloud.google.com/go/edgecontainer@v1.1.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/edgecontainer/com_google_cloud_go_edgecontainer-v1.1.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/edgecontainer/com_google_cloud_go_edgecontainer-v1.1.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/edgecontainer/com_google_cloud_go_edgecontainer-v1.1.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/edgecontainer/com_google_cloud_go_edgecontainer-v1.1.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/edgecontainer/com_google_cloud_go_edgecontainer-v1.1.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/edgecontainer/com_google_cloud_go_edgecontainer-v1.1.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/edgecontainer/com_google_cloud_go_edgecontainer-v1.1.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/edgecontainer/com_google_cloud_go_edgecontainer-v1.1.4.zip", ], ) go_repository( @@ -8341,221 +8241,221 @@ def go_deps(): name = "com_google_cloud_go_essentialcontacts", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/essentialcontacts", - sha256 = "100839140d920ea39df237c99782dae60aa6827be723a8f17dcd77f29ff71eca", - strip_prefix = "cloud.google.com/go/essentialcontacts@v1.6.3", + sha256 = "b94201d1b97c96abf58f5ad57cce9cc8eb55d591f794c20564bf2a1bf2dd4898", + strip_prefix = "cloud.google.com/go/essentialcontacts@v1.6.5", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/essentialcontacts/com_google_cloud_go_essentialcontacts-v1.6.3.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/essentialcontacts/com_google_cloud_go_essentialcontacts-v1.6.3.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/essentialcontacts/com_google_cloud_go_essentialcontacts-v1.6.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/essentialcontacts/com_google_cloud_go_essentialcontacts-v1.6.3.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/essentialcontacts/com_google_cloud_go_essentialcontacts-v1.6.5.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/essentialcontacts/com_google_cloud_go_essentialcontacts-v1.6.5.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/essentialcontacts/com_google_cloud_go_essentialcontacts-v1.6.5.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/essentialcontacts/com_google_cloud_go_essentialcontacts-v1.6.5.zip", ], ) go_repository( name = "com_google_cloud_go_eventarc", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/eventarc", - sha256 = "c1abc76d8cdebcf2fbff6a5f5c289479749713033ba188853f6156b1f3a2c575", - strip_prefix = "cloud.google.com/go/eventarc@v1.13.1", + sha256 = "8a76bfffb3adf0ae07cf0d1b9017272748c0fb5da4e1ccc54bee96bf37510d94", + strip_prefix = "cloud.google.com/go/eventarc@v1.13.3", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/eventarc/com_google_cloud_go_eventarc-v1.13.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/eventarc/com_google_cloud_go_eventarc-v1.13.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/eventarc/com_google_cloud_go_eventarc-v1.13.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/eventarc/com_google_cloud_go_eventarc-v1.13.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/eventarc/com_google_cloud_go_eventarc-v1.13.3.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/eventarc/com_google_cloud_go_eventarc-v1.13.3.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/eventarc/com_google_cloud_go_eventarc-v1.13.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/eventarc/com_google_cloud_go_eventarc-v1.13.3.zip", ], ) go_repository( name = "com_google_cloud_go_filestore", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/filestore", - sha256 = "ddfc413e66b4e18263d250a7bc7d2d723b4007729107f4a33efc90fafb7149ea", - strip_prefix = "cloud.google.com/go/filestore@v1.7.2", + sha256 = "5e264d7e910ad767c88a4e4236ea1b26d52f5b56e18a5d6dcdb989a5020ceefb", + strip_prefix = "cloud.google.com/go/filestore@v1.7.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/filestore/com_google_cloud_go_filestore-v1.7.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/filestore/com_google_cloud_go_filestore-v1.7.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/filestore/com_google_cloud_go_filestore-v1.7.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/filestore/com_google_cloud_go_filestore-v1.7.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/filestore/com_google_cloud_go_filestore-v1.7.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/filestore/com_google_cloud_go_filestore-v1.7.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/filestore/com_google_cloud_go_filestore-v1.7.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/filestore/com_google_cloud_go_filestore-v1.7.4.zip", ], ) go_repository( name = "com_google_cloud_go_firestore", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/firestore", - sha256 = "4e14ba924858cda4925eccd288c8fb4ad377f227252138fe1681c0e9391ad3e0", - strip_prefix = "cloud.google.com/go/firestore@v1.13.0", + sha256 = "426e3589567d5b7bea9f7936863b4fe9fc7172029afc2b03cded5f69bcf3baf2", + strip_prefix = "cloud.google.com/go/firestore@v1.14.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/firestore/com_google_cloud_go_firestore-v1.13.0.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/firestore/com_google_cloud_go_firestore-v1.13.0.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/firestore/com_google_cloud_go_firestore-v1.13.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/firestore/com_google_cloud_go_firestore-v1.13.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/firestore/com_google_cloud_go_firestore-v1.14.0.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/firestore/com_google_cloud_go_firestore-v1.14.0.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/firestore/com_google_cloud_go_firestore-v1.14.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/firestore/com_google_cloud_go_firestore-v1.14.0.zip", ], ) go_repository( name = "com_google_cloud_go_functions", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/functions", - sha256 = "34232aa309d00ffef25ac784e2e1a702c8aaf5b921152c257772f59dbe4234ee", - strip_prefix = "cloud.google.com/go/functions@v1.15.2", + sha256 = "6d40befb2ebbb0e4cdeff7f54a21aa2c9df428e374608e7c6c940d8982f5301c", + strip_prefix = "cloud.google.com/go/functions@v1.15.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/functions/com_google_cloud_go_functions-v1.15.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/functions/com_google_cloud_go_functions-v1.15.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/functions/com_google_cloud_go_functions-v1.15.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/functions/com_google_cloud_go_functions-v1.15.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/functions/com_google_cloud_go_functions-v1.15.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/functions/com_google_cloud_go_functions-v1.15.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/functions/com_google_cloud_go_functions-v1.15.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/functions/com_google_cloud_go_functions-v1.15.4.zip", ], ) go_repository( name = "com_google_cloud_go_gkebackup", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/gkebackup", - sha256 = "f1617ab86d537328e3f3c36790da6d432caf00df1c60d7f7c59e49b3552296bf", - strip_prefix = "cloud.google.com/go/gkebackup@v1.3.2", + sha256 = "d9be77b8e0e5924d48a135848bddd27ea0a08174083de2981cbe7ababd432d13", + strip_prefix = "cloud.google.com/go/gkebackup@v1.3.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/gkebackup/com_google_cloud_go_gkebackup-v1.3.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/gkebackup/com_google_cloud_go_gkebackup-v1.3.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/gkebackup/com_google_cloud_go_gkebackup-v1.3.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/gkebackup/com_google_cloud_go_gkebackup-v1.3.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/gkebackup/com_google_cloud_go_gkebackup-v1.3.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/gkebackup/com_google_cloud_go_gkebackup-v1.3.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/gkebackup/com_google_cloud_go_gkebackup-v1.3.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/gkebackup/com_google_cloud_go_gkebackup-v1.3.4.zip", ], ) go_repository( name = "com_google_cloud_go_gkeconnect", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/gkeconnect", - sha256 = "009e1bb490e0091744f0d5ff7b3b7cbe5085a7795b775204fe45e80535f452ce", - strip_prefix = "cloud.google.com/go/gkeconnect@v0.8.2", + sha256 = "22d47713695fb99181e4dd67f6e705e67a261caab3f2ca75cee39e2d42ca7b7d", + strip_prefix = "cloud.google.com/go/gkeconnect@v0.8.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/gkeconnect/com_google_cloud_go_gkeconnect-v0.8.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/gkeconnect/com_google_cloud_go_gkeconnect-v0.8.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/gkeconnect/com_google_cloud_go_gkeconnect-v0.8.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/gkeconnect/com_google_cloud_go_gkeconnect-v0.8.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/gkeconnect/com_google_cloud_go_gkeconnect-v0.8.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/gkeconnect/com_google_cloud_go_gkeconnect-v0.8.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/gkeconnect/com_google_cloud_go_gkeconnect-v0.8.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/gkeconnect/com_google_cloud_go_gkeconnect-v0.8.4.zip", ], ) go_repository( name = "com_google_cloud_go_gkehub", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/gkehub", - sha256 = "acef02e283a877fae6242895bea73e00c655a239b6a34e6c4f26dde75214e897", - strip_prefix = "cloud.google.com/go/gkehub@v0.14.2", + sha256 = "6bff0481ab77aa7b1cf47d1f14aa9f10713aae9615ad1ed2a6d004b3378bb0b5", + strip_prefix = "cloud.google.com/go/gkehub@v0.14.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/gkehub/com_google_cloud_go_gkehub-v0.14.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/gkehub/com_google_cloud_go_gkehub-v0.14.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/gkehub/com_google_cloud_go_gkehub-v0.14.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/gkehub/com_google_cloud_go_gkehub-v0.14.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/gkehub/com_google_cloud_go_gkehub-v0.14.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/gkehub/com_google_cloud_go_gkehub-v0.14.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/gkehub/com_google_cloud_go_gkehub-v0.14.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/gkehub/com_google_cloud_go_gkehub-v0.14.4.zip", ], ) go_repository( name = "com_google_cloud_go_gkemulticloud", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/gkemulticloud", - sha256 = "ad4f2be30a3e031aaec680b8f4548876b024e02a835a51b4418f04c1a0d45437", - strip_prefix = "cloud.google.com/go/gkemulticloud@v1.0.1", + sha256 = "ec3d60fcb963da75d5bf6108161567acd79f7887e4b9cfb2e4a5e53e3f69857d", + strip_prefix = "cloud.google.com/go/gkemulticloud@v1.0.3", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/gkemulticloud/com_google_cloud_go_gkemulticloud-v1.0.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/gkemulticloud/com_google_cloud_go_gkemulticloud-v1.0.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/gkemulticloud/com_google_cloud_go_gkemulticloud-v1.0.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/gkemulticloud/com_google_cloud_go_gkemulticloud-v1.0.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/gkemulticloud/com_google_cloud_go_gkemulticloud-v1.0.3.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/gkemulticloud/com_google_cloud_go_gkemulticloud-v1.0.3.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/gkemulticloud/com_google_cloud_go_gkemulticloud-v1.0.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/gkemulticloud/com_google_cloud_go_gkemulticloud-v1.0.3.zip", ], ) go_repository( name = "com_google_cloud_go_gsuiteaddons", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/gsuiteaddons", - sha256 = "c31266cc003017a841473f2eaa162d0d4a58302ac6085153c8961b8673af1b6a", - strip_prefix = "cloud.google.com/go/gsuiteaddons@v1.6.2", + sha256 = "9edba07949bf3749625469fecab250d227de45a50766d31c0a32a688b43f8686", + strip_prefix = "cloud.google.com/go/gsuiteaddons@v1.6.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/gsuiteaddons/com_google_cloud_go_gsuiteaddons-v1.6.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/gsuiteaddons/com_google_cloud_go_gsuiteaddons-v1.6.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/gsuiteaddons/com_google_cloud_go_gsuiteaddons-v1.6.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/gsuiteaddons/com_google_cloud_go_gsuiteaddons-v1.6.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/gsuiteaddons/com_google_cloud_go_gsuiteaddons-v1.6.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/gsuiteaddons/com_google_cloud_go_gsuiteaddons-v1.6.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/gsuiteaddons/com_google_cloud_go_gsuiteaddons-v1.6.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/gsuiteaddons/com_google_cloud_go_gsuiteaddons-v1.6.4.zip", ], ) go_repository( name = "com_google_cloud_go_iam", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/iam", - sha256 = "56e6aba936af03c61fc21eb58f562596cadd6bacc30a07a7fb2a2516c28764bb", - strip_prefix = "cloud.google.com/go/iam@v1.1.3", + sha256 = "7d218318eef5255587d6db35f2aa9952125881c640f6e04fe76d521c14d5d7f3", + strip_prefix = "cloud.google.com/go/iam@v1.1.5", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/iam/com_google_cloud_go_iam-v1.1.3.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/iam/com_google_cloud_go_iam-v1.1.3.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/iam/com_google_cloud_go_iam-v1.1.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/iam/com_google_cloud_go_iam-v1.1.3.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/iam/com_google_cloud_go_iam-v1.1.5.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/iam/com_google_cloud_go_iam-v1.1.5.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/iam/com_google_cloud_go_iam-v1.1.5.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/iam/com_google_cloud_go_iam-v1.1.5.zip", ], ) go_repository( name = "com_google_cloud_go_iap", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/iap", - sha256 = "70dd5562de160017ea166cbd5a959eda628b025bc6dc93a269fc183d96eec8cf", - strip_prefix = "cloud.google.com/go/iap@v1.9.1", + sha256 = "622b8ebcb2d06aee0397e1362f29b571ed9a40b2810dda7140ce607eda9147dc", + strip_prefix = "cloud.google.com/go/iap@v1.9.3", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/iap/com_google_cloud_go_iap-v1.9.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/iap/com_google_cloud_go_iap-v1.9.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/iap/com_google_cloud_go_iap-v1.9.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/iap/com_google_cloud_go_iap-v1.9.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/iap/com_google_cloud_go_iap-v1.9.3.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/iap/com_google_cloud_go_iap-v1.9.3.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/iap/com_google_cloud_go_iap-v1.9.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/iap/com_google_cloud_go_iap-v1.9.3.zip", ], ) go_repository( name = "com_google_cloud_go_ids", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/ids", - sha256 = "5774a1cf5f3e09af43d38f37163c3ead590bb06119d4256e1a2670d40190094d", - strip_prefix = "cloud.google.com/go/ids@v1.4.2", + sha256 = "31f2675e6254fe0c42fff191d07c85c22ba89def513b6a7a0c67bcb9d0659cb8", + strip_prefix = "cloud.google.com/go/ids@v1.4.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/ids/com_google_cloud_go_ids-v1.4.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/ids/com_google_cloud_go_ids-v1.4.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/ids/com_google_cloud_go_ids-v1.4.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/ids/com_google_cloud_go_ids-v1.4.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/ids/com_google_cloud_go_ids-v1.4.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/ids/com_google_cloud_go_ids-v1.4.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/ids/com_google_cloud_go_ids-v1.4.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/ids/com_google_cloud_go_ids-v1.4.4.zip", ], ) go_repository( name = "com_google_cloud_go_iot", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/iot", - sha256 = "4dbe9fdf18ecd066a3986acd9a98680adac6a1cf50bbac6c04432e3059570fea", - strip_prefix = "cloud.google.com/go/iot@v1.7.2", + sha256 = "2366dffa5bc629cfb7a29c36e03089d8f5edc59017fc9c4911013ccda25e8ff2", + strip_prefix = "cloud.google.com/go/iot@v1.7.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/iot/com_google_cloud_go_iot-v1.7.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/iot/com_google_cloud_go_iot-v1.7.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/iot/com_google_cloud_go_iot-v1.7.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/iot/com_google_cloud_go_iot-v1.7.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/iot/com_google_cloud_go_iot-v1.7.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/iot/com_google_cloud_go_iot-v1.7.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/iot/com_google_cloud_go_iot-v1.7.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/iot/com_google_cloud_go_iot-v1.7.4.zip", ], ) go_repository( name = "com_google_cloud_go_kms", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/kms", - sha256 = "89ef8ac2bde3827d875928c8911c3ac874b7f0f6d1396ba3f6f17b51448738c4", - strip_prefix = "cloud.google.com/go/kms@v1.15.3", + sha256 = "4647fc192826a8ebcfc08ad8381bdde27689754ccab38a55b128fdf91b0dec4f", + strip_prefix = "cloud.google.com/go/kms@v1.15.5", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/kms/com_google_cloud_go_kms-v1.15.3.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/kms/com_google_cloud_go_kms-v1.15.3.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/kms/com_google_cloud_go_kms-v1.15.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/kms/com_google_cloud_go_kms-v1.15.3.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/kms/com_google_cloud_go_kms-v1.15.5.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/kms/com_google_cloud_go_kms-v1.15.5.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/kms/com_google_cloud_go_kms-v1.15.5.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/kms/com_google_cloud_go_kms-v1.15.5.zip", ], ) go_repository( name = "com_google_cloud_go_language", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/language", - sha256 = "353e525423b6547a806aea28f63f401759fd090855a1544c1228f48337470201", - strip_prefix = "cloud.google.com/go/language@v1.11.1", + sha256 = "cc8d49db7853a9dee0bc9f28af2992f62a1700a425089de1c6364bed22a8d9a1", + strip_prefix = "cloud.google.com/go/language@v1.12.2", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/language/com_google_cloud_go_language-v1.11.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/language/com_google_cloud_go_language-v1.11.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/language/com_google_cloud_go_language-v1.11.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/language/com_google_cloud_go_language-v1.11.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/language/com_google_cloud_go_language-v1.12.2.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/language/com_google_cloud_go_language-v1.12.2.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/language/com_google_cloud_go_language-v1.12.2.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/language/com_google_cloud_go_language-v1.12.2.zip", ], ) go_repository( name = "com_google_cloud_go_lifesciences", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/lifesciences", - sha256 = "32e38b08fcef1d06b7512261d1116fbac7e5e331942e4512a26d73f62625e5d6", - strip_prefix = "cloud.google.com/go/lifesciences@v0.9.2", + sha256 = "a18a1221135b5c60a38041bc1aea12f2129d847402fe88f4abf47ea109459b3a", + strip_prefix = "cloud.google.com/go/lifesciences@v0.9.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/lifesciences/com_google_cloud_go_lifesciences-v0.9.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/lifesciences/com_google_cloud_go_lifesciences-v0.9.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/lifesciences/com_google_cloud_go_lifesciences-v0.9.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/lifesciences/com_google_cloud_go_lifesciences-v0.9.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/lifesciences/com_google_cloud_go_lifesciences-v0.9.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/lifesciences/com_google_cloud_go_lifesciences-v0.9.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/lifesciences/com_google_cloud_go_lifesciences-v0.9.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/lifesciences/com_google_cloud_go_lifesciences-v0.9.4.zip", ], ) go_repository( @@ -8575,247 +8475,247 @@ def go_deps(): name = "com_google_cloud_go_longrunning", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/longrunning", - sha256 = "ba7fd6475a3e6f6335461d5a707232ccf8336397802e83c5401c2308906ee76b", - strip_prefix = "cloud.google.com/go/longrunning@v0.5.2", + sha256 = "a3eb14ee47bfdbca7df05c0011bcd9a86997ae8ef0a12c3a44a340c7e9ce2c0f", + strip_prefix = "cloud.google.com/go/longrunning@v0.5.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/longrunning/com_google_cloud_go_longrunning-v0.5.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/longrunning/com_google_cloud_go_longrunning-v0.5.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/longrunning/com_google_cloud_go_longrunning-v0.5.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/longrunning/com_google_cloud_go_longrunning-v0.5.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/longrunning/com_google_cloud_go_longrunning-v0.5.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/longrunning/com_google_cloud_go_longrunning-v0.5.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/longrunning/com_google_cloud_go_longrunning-v0.5.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/longrunning/com_google_cloud_go_longrunning-v0.5.4.zip", ], ) go_repository( name = "com_google_cloud_go_managedidentities", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/managedidentities", - sha256 = "d81fe6c82e62b737a430b640c698220c61722b122b6ac9722e7b365eecd4e074", - strip_prefix = "cloud.google.com/go/managedidentities@v1.6.2", + sha256 = "859ac519d11387f148109348509d4239a165a7b8acc0d208b2c53c667dcd7fb0", + strip_prefix = "cloud.google.com/go/managedidentities@v1.6.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/managedidentities/com_google_cloud_go_managedidentities-v1.6.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/managedidentities/com_google_cloud_go_managedidentities-v1.6.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/managedidentities/com_google_cloud_go_managedidentities-v1.6.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/managedidentities/com_google_cloud_go_managedidentities-v1.6.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/managedidentities/com_google_cloud_go_managedidentities-v1.6.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/managedidentities/com_google_cloud_go_managedidentities-v1.6.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/managedidentities/com_google_cloud_go_managedidentities-v1.6.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/managedidentities/com_google_cloud_go_managedidentities-v1.6.4.zip", ], ) go_repository( name = "com_google_cloud_go_maps", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/maps", - sha256 = "c9cb6250a7ff92586fb2e212fc3b36437c9baa74e9b373461a0b33e40d359909", - strip_prefix = "cloud.google.com/go/maps@v1.4.1", + sha256 = "c05c26dd3bcafd9d6f617cc9d2291760cc83d1946b5cb3de00e29e210147404d", + strip_prefix = "cloud.google.com/go/maps@v1.6.1", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/maps/com_google_cloud_go_maps-v1.4.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/maps/com_google_cloud_go_maps-v1.4.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/maps/com_google_cloud_go_maps-v1.4.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/maps/com_google_cloud_go_maps-v1.4.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/maps/com_google_cloud_go_maps-v1.6.1.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/maps/com_google_cloud_go_maps-v1.6.1.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/maps/com_google_cloud_go_maps-v1.6.1.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/maps/com_google_cloud_go_maps-v1.6.1.zip", ], ) go_repository( name = "com_google_cloud_go_mediatranslation", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/mediatranslation", - sha256 = "6805e80cc3a6615eb086c1efdbc57bd378779962d134e22509af1ef77db1eb7f", - strip_prefix = "cloud.google.com/go/mediatranslation@v0.8.2", + sha256 = "808f50d13611936320d1547257f697d1d1f736c01001aad32a1538a8b62cf3fc", + strip_prefix = "cloud.google.com/go/mediatranslation@v0.8.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/mediatranslation/com_google_cloud_go_mediatranslation-v0.8.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/mediatranslation/com_google_cloud_go_mediatranslation-v0.8.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/mediatranslation/com_google_cloud_go_mediatranslation-v0.8.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/mediatranslation/com_google_cloud_go_mediatranslation-v0.8.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/mediatranslation/com_google_cloud_go_mediatranslation-v0.8.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/mediatranslation/com_google_cloud_go_mediatranslation-v0.8.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/mediatranslation/com_google_cloud_go_mediatranslation-v0.8.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/mediatranslation/com_google_cloud_go_mediatranslation-v0.8.4.zip", ], ) go_repository( name = "com_google_cloud_go_memcache", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/memcache", - sha256 = "80d1544a452cdb9a051cdd577a2dc018b56a9250c54ca5df194c65855a6cf7b5", - strip_prefix = "cloud.google.com/go/memcache@v1.10.2", + sha256 = "d75fc4d67a4b5999301fbc9c90d230b943ae26855b703e30015d367aa8261bce", + strip_prefix = "cloud.google.com/go/memcache@v1.10.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/memcache/com_google_cloud_go_memcache-v1.10.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/memcache/com_google_cloud_go_memcache-v1.10.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/memcache/com_google_cloud_go_memcache-v1.10.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/memcache/com_google_cloud_go_memcache-v1.10.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/memcache/com_google_cloud_go_memcache-v1.10.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/memcache/com_google_cloud_go_memcache-v1.10.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/memcache/com_google_cloud_go_memcache-v1.10.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/memcache/com_google_cloud_go_memcache-v1.10.4.zip", ], ) go_repository( name = "com_google_cloud_go_metastore", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/metastore", - sha256 = "fe4aa0aa4abd1bd6c1cb3c6d506c3acfb58e9851cdbe91b017360e4ce6533ff9", - strip_prefix = "cloud.google.com/go/metastore@v1.13.1", + sha256 = "844a54ec039a5e6c531924b7de9007a82a5eb9f4e90f4f4bbf4d4da4460fd54f", + strip_prefix = "cloud.google.com/go/metastore@v1.13.3", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/metastore/com_google_cloud_go_metastore-v1.13.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/metastore/com_google_cloud_go_metastore-v1.13.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/metastore/com_google_cloud_go_metastore-v1.13.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/metastore/com_google_cloud_go_metastore-v1.13.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/metastore/com_google_cloud_go_metastore-v1.13.3.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/metastore/com_google_cloud_go_metastore-v1.13.3.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/metastore/com_google_cloud_go_metastore-v1.13.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/metastore/com_google_cloud_go_metastore-v1.13.3.zip", ], ) go_repository( name = "com_google_cloud_go_monitoring", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/monitoring", - sha256 = "545af97f19cde57c99d37c8741d45f110a472f62e348313cef2054f8623661cd", - strip_prefix = "cloud.google.com/go/monitoring@v1.16.1", + sha256 = "3efde7106653d6791f116cfd445dcfdd51f6b732226688b5ad5feae69fa42924", + strip_prefix = "cloud.google.com/go/monitoring@v1.16.3", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/monitoring/com_google_cloud_go_monitoring-v1.16.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/monitoring/com_google_cloud_go_monitoring-v1.16.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/monitoring/com_google_cloud_go_monitoring-v1.16.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/monitoring/com_google_cloud_go_monitoring-v1.16.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/monitoring/com_google_cloud_go_monitoring-v1.16.3.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/monitoring/com_google_cloud_go_monitoring-v1.16.3.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/monitoring/com_google_cloud_go_monitoring-v1.16.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/monitoring/com_google_cloud_go_monitoring-v1.16.3.zip", ], ) go_repository( name = "com_google_cloud_go_networkconnectivity", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/networkconnectivity", - sha256 = "fa63079ab0dfcd34b074145057487d18d95e6b380b2b19c4a9a2113303333fdb", - strip_prefix = "cloud.google.com/go/networkconnectivity@v1.14.1", + sha256 = "677e203c626f430e1486beca3644a1d0ee8ef4e5323468ae7f587afba5e59b10", + strip_prefix = "cloud.google.com/go/networkconnectivity@v1.14.3", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/networkconnectivity/com_google_cloud_go_networkconnectivity-v1.14.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/networkconnectivity/com_google_cloud_go_networkconnectivity-v1.14.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/networkconnectivity/com_google_cloud_go_networkconnectivity-v1.14.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/networkconnectivity/com_google_cloud_go_networkconnectivity-v1.14.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/networkconnectivity/com_google_cloud_go_networkconnectivity-v1.14.3.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/networkconnectivity/com_google_cloud_go_networkconnectivity-v1.14.3.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/networkconnectivity/com_google_cloud_go_networkconnectivity-v1.14.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/networkconnectivity/com_google_cloud_go_networkconnectivity-v1.14.3.zip", ], ) go_repository( name = "com_google_cloud_go_networkmanagement", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/networkmanagement", - sha256 = "bed1460ce979230c94121f814c62aee524f223568bfcf00962e8683379016c49", - strip_prefix = "cloud.google.com/go/networkmanagement@v1.9.1", + sha256 = "8813a77f3851bc9663b4b6fd575980eec7c662ff2132b69b84256a4fb35171e7", + strip_prefix = "cloud.google.com/go/networkmanagement@v1.9.3", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/networkmanagement/com_google_cloud_go_networkmanagement-v1.9.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/networkmanagement/com_google_cloud_go_networkmanagement-v1.9.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/networkmanagement/com_google_cloud_go_networkmanagement-v1.9.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/networkmanagement/com_google_cloud_go_networkmanagement-v1.9.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/networkmanagement/com_google_cloud_go_networkmanagement-v1.9.3.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/networkmanagement/com_google_cloud_go_networkmanagement-v1.9.3.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/networkmanagement/com_google_cloud_go_networkmanagement-v1.9.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/networkmanagement/com_google_cloud_go_networkmanagement-v1.9.3.zip", ], ) go_repository( name = "com_google_cloud_go_networksecurity", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/networksecurity", - sha256 = "b4e959bd1d9c97e7267c529ee023fa55a7bbcd7b5f2964b6c99f0fb51006dbcb", - strip_prefix = "cloud.google.com/go/networksecurity@v0.9.2", + sha256 = "26a8c4573bc86d8bfcd411c72deb2f26b6778028d88246bdbb8f65fe72e6e541", + strip_prefix = "cloud.google.com/go/networksecurity@v0.9.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/networksecurity/com_google_cloud_go_networksecurity-v0.9.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/networksecurity/com_google_cloud_go_networksecurity-v0.9.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/networksecurity/com_google_cloud_go_networksecurity-v0.9.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/networksecurity/com_google_cloud_go_networksecurity-v0.9.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/networksecurity/com_google_cloud_go_networksecurity-v0.9.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/networksecurity/com_google_cloud_go_networksecurity-v0.9.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/networksecurity/com_google_cloud_go_networksecurity-v0.9.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/networksecurity/com_google_cloud_go_networksecurity-v0.9.4.zip", ], ) go_repository( name = "com_google_cloud_go_notebooks", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/notebooks", - sha256 = "9f33be59f75e363bd6a90a465ada18ad8cc549b82facbb9541b81ae9b3ba7937", - strip_prefix = "cloud.google.com/go/notebooks@v1.10.1", + sha256 = "0f7d6e082b6c5d1baa059ce8021d7fb80d91ff6719ac6f6cdd527cd6268262bd", + strip_prefix = "cloud.google.com/go/notebooks@v1.11.2", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/notebooks/com_google_cloud_go_notebooks-v1.10.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/notebooks/com_google_cloud_go_notebooks-v1.10.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/notebooks/com_google_cloud_go_notebooks-v1.10.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/notebooks/com_google_cloud_go_notebooks-v1.10.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/notebooks/com_google_cloud_go_notebooks-v1.11.2.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/notebooks/com_google_cloud_go_notebooks-v1.11.2.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/notebooks/com_google_cloud_go_notebooks-v1.11.2.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/notebooks/com_google_cloud_go_notebooks-v1.11.2.zip", ], ) go_repository( name = "com_google_cloud_go_optimization", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/optimization", - sha256 = "feb9d564067168d48be5e2bde7f19032a7c27a779beefc09d3aa19f0c2b9eaf2", - strip_prefix = "cloud.google.com/go/optimization@v1.5.1", + sha256 = "554a95c20b6343708d5713ecba3ac5dc0c11ba287e455021b1832cfcf293cbe2", + strip_prefix = "cloud.google.com/go/optimization@v1.6.2", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/optimization/com_google_cloud_go_optimization-v1.5.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/optimization/com_google_cloud_go_optimization-v1.5.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/optimization/com_google_cloud_go_optimization-v1.5.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/optimization/com_google_cloud_go_optimization-v1.5.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/optimization/com_google_cloud_go_optimization-v1.6.2.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/optimization/com_google_cloud_go_optimization-v1.6.2.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/optimization/com_google_cloud_go_optimization-v1.6.2.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/optimization/com_google_cloud_go_optimization-v1.6.2.zip", ], ) go_repository( name = "com_google_cloud_go_orchestration", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/orchestration", - sha256 = "81f752cb325e335254f9c33be9d7bacdf0fbc8ef929828a0496e35b2787dc2df", - strip_prefix = "cloud.google.com/go/orchestration@v1.8.2", + sha256 = "a378359d0f2d657c05e7b474a0a527952a5541d9d9798f5184e96e8c73c25cee", + strip_prefix = "cloud.google.com/go/orchestration@v1.8.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/orchestration/com_google_cloud_go_orchestration-v1.8.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/orchestration/com_google_cloud_go_orchestration-v1.8.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/orchestration/com_google_cloud_go_orchestration-v1.8.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/orchestration/com_google_cloud_go_orchestration-v1.8.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/orchestration/com_google_cloud_go_orchestration-v1.8.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/orchestration/com_google_cloud_go_orchestration-v1.8.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/orchestration/com_google_cloud_go_orchestration-v1.8.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/orchestration/com_google_cloud_go_orchestration-v1.8.4.zip", ], ) go_repository( name = "com_google_cloud_go_orgpolicy", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/orgpolicy", - sha256 = "2a4f68b17cf411c15e384e0bb1a7d5c823e9212129535075588cbd4c3e3da73d", - strip_prefix = "cloud.google.com/go/orgpolicy@v1.11.2", + sha256 = "97839eca96155da1a5d4e9ed13491c1a7afd8e57fe98efa8c590fad77f935dcd", + strip_prefix = "cloud.google.com/go/orgpolicy@v1.11.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/orgpolicy/com_google_cloud_go_orgpolicy-v1.11.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/orgpolicy/com_google_cloud_go_orgpolicy-v1.11.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/orgpolicy/com_google_cloud_go_orgpolicy-v1.11.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/orgpolicy/com_google_cloud_go_orgpolicy-v1.11.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/orgpolicy/com_google_cloud_go_orgpolicy-v1.11.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/orgpolicy/com_google_cloud_go_orgpolicy-v1.11.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/orgpolicy/com_google_cloud_go_orgpolicy-v1.11.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/orgpolicy/com_google_cloud_go_orgpolicy-v1.11.4.zip", ], ) go_repository( name = "com_google_cloud_go_osconfig", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/osconfig", - sha256 = "275f62c21ecf8371b55e778ab87e9ef588ced27cc63a9e985ab5029eddcdb843", - strip_prefix = "cloud.google.com/go/osconfig@v1.12.2", + sha256 = "b84d51954b532b8bc4b0133b4332c8640bf6b49c37beabf272832dfbaff60dab", + strip_prefix = "cloud.google.com/go/osconfig@v1.12.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/osconfig/com_google_cloud_go_osconfig-v1.12.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/osconfig/com_google_cloud_go_osconfig-v1.12.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/osconfig/com_google_cloud_go_osconfig-v1.12.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/osconfig/com_google_cloud_go_osconfig-v1.12.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/osconfig/com_google_cloud_go_osconfig-v1.12.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/osconfig/com_google_cloud_go_osconfig-v1.12.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/osconfig/com_google_cloud_go_osconfig-v1.12.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/osconfig/com_google_cloud_go_osconfig-v1.12.4.zip", ], ) go_repository( name = "com_google_cloud_go_oslogin", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/oslogin", - sha256 = "29ef72254fe0efd3778f6cc8fbc3df9c33f7ce7b6045d0f6d96eb876044b2237", - strip_prefix = "cloud.google.com/go/oslogin@v1.11.1", + sha256 = "bc959a271e1af25265b8e45debbf32170cf1999a5b8e201235d2a6c115f3416d", + strip_prefix = "cloud.google.com/go/oslogin@v1.12.2", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/oslogin/com_google_cloud_go_oslogin-v1.11.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/oslogin/com_google_cloud_go_oslogin-v1.11.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/oslogin/com_google_cloud_go_oslogin-v1.11.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/oslogin/com_google_cloud_go_oslogin-v1.11.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/oslogin/com_google_cloud_go_oslogin-v1.12.2.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/oslogin/com_google_cloud_go_oslogin-v1.12.2.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/oslogin/com_google_cloud_go_oslogin-v1.12.2.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/oslogin/com_google_cloud_go_oslogin-v1.12.2.zip", ], ) go_repository( name = "com_google_cloud_go_phishingprotection", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/phishingprotection", - sha256 = "6244bb1f396e3cb42e513ddc934923f0e14ab55f40b828f16c90be57a4b94a84", - strip_prefix = "cloud.google.com/go/phishingprotection@v0.8.2", + sha256 = "2bce1ef758b382998dfa041a85139a89511969fdc8596bd7f912381904235605", + strip_prefix = "cloud.google.com/go/phishingprotection@v0.8.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/phishingprotection/com_google_cloud_go_phishingprotection-v0.8.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/phishingprotection/com_google_cloud_go_phishingprotection-v0.8.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/phishingprotection/com_google_cloud_go_phishingprotection-v0.8.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/phishingprotection/com_google_cloud_go_phishingprotection-v0.8.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/phishingprotection/com_google_cloud_go_phishingprotection-v0.8.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/phishingprotection/com_google_cloud_go_phishingprotection-v0.8.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/phishingprotection/com_google_cloud_go_phishingprotection-v0.8.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/phishingprotection/com_google_cloud_go_phishingprotection-v0.8.4.zip", ], ) go_repository( name = "com_google_cloud_go_policytroubleshooter", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/policytroubleshooter", - sha256 = "b46e74184e6b8ed9943f474b976fb6bedd6a4d0700ac696012300886922f9d98", - strip_prefix = "cloud.google.com/go/policytroubleshooter@v1.9.1", + sha256 = "a9976677e157f786b43c82e682dcb5e3257e330d4940ddb2aea025fac70bdabc", + strip_prefix = "cloud.google.com/go/policytroubleshooter@v1.10.2", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/policytroubleshooter/com_google_cloud_go_policytroubleshooter-v1.9.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/policytroubleshooter/com_google_cloud_go_policytroubleshooter-v1.9.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/policytroubleshooter/com_google_cloud_go_policytroubleshooter-v1.9.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/policytroubleshooter/com_google_cloud_go_policytroubleshooter-v1.9.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/policytroubleshooter/com_google_cloud_go_policytroubleshooter-v1.10.2.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/policytroubleshooter/com_google_cloud_go_policytroubleshooter-v1.10.2.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/policytroubleshooter/com_google_cloud_go_policytroubleshooter-v1.10.2.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/policytroubleshooter/com_google_cloud_go_policytroubleshooter-v1.10.2.zip", ], ) go_repository( name = "com_google_cloud_go_privatecatalog", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/privatecatalog", - sha256 = "a43190e1dfba2ed7fcb63e5571937bdfc2ed97594fa9b2b7bd119678e977b0f4", - strip_prefix = "cloud.google.com/go/privatecatalog@v0.9.2", + sha256 = "49e1f68b1405978933b1cb43c94928f11873d69ebe9623ceccf3968a78da2183", + strip_prefix = "cloud.google.com/go/privatecatalog@v0.9.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/privatecatalog/com_google_cloud_go_privatecatalog-v0.9.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/privatecatalog/com_google_cloud_go_privatecatalog-v0.9.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/privatecatalog/com_google_cloud_go_privatecatalog-v0.9.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/privatecatalog/com_google_cloud_go_privatecatalog-v0.9.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/privatecatalog/com_google_cloud_go_privatecatalog-v0.9.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/privatecatalog/com_google_cloud_go_privatecatalog-v0.9.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/privatecatalog/com_google_cloud_go_privatecatalog-v0.9.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/privatecatalog/com_google_cloud_go_privatecatalog-v0.9.4.zip", ], ) go_repository( @@ -8848,208 +8748,208 @@ def go_deps(): name = "com_google_cloud_go_recaptchaenterprise_v2", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/recaptchaenterprise/v2", - sha256 = "8151e658e29acc0617fa5bc36f7d6f06a61e8b97558f79fd6137429538ad903f", - strip_prefix = "cloud.google.com/go/recaptchaenterprise/v2@v2.8.1", + sha256 = "7f00c16714a2ae8caad220cc9f91188024a2dd46495fb410f44fc9872d3734c5", + strip_prefix = "cloud.google.com/go/recaptchaenterprise/v2@v2.8.3", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/recaptchaenterprise/v2/com_google_cloud_go_recaptchaenterprise_v2-v2.8.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/recaptchaenterprise/v2/com_google_cloud_go_recaptchaenterprise_v2-v2.8.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/recaptchaenterprise/v2/com_google_cloud_go_recaptchaenterprise_v2-v2.8.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/recaptchaenterprise/v2/com_google_cloud_go_recaptchaenterprise_v2-v2.8.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/recaptchaenterprise/v2/com_google_cloud_go_recaptchaenterprise_v2-v2.8.3.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/recaptchaenterprise/v2/com_google_cloud_go_recaptchaenterprise_v2-v2.8.3.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/recaptchaenterprise/v2/com_google_cloud_go_recaptchaenterprise_v2-v2.8.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/recaptchaenterprise/v2/com_google_cloud_go_recaptchaenterprise_v2-v2.8.3.zip", ], ) go_repository( name = "com_google_cloud_go_recommendationengine", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/recommendationengine", - sha256 = "a2636073ab9bd418361f38332b4e922fcfe5ca6bc10aca96f6fcbdab7a37456d", - strip_prefix = "cloud.google.com/go/recommendationengine@v0.8.2", + sha256 = "2c6528549fb5dbddc6c225376e4b222e08ba2cc3d7c826c4720220cab8ef22cb", + strip_prefix = "cloud.google.com/go/recommendationengine@v0.8.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/recommendationengine/com_google_cloud_go_recommendationengine-v0.8.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/recommendationengine/com_google_cloud_go_recommendationengine-v0.8.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/recommendationengine/com_google_cloud_go_recommendationengine-v0.8.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/recommendationengine/com_google_cloud_go_recommendationengine-v0.8.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/recommendationengine/com_google_cloud_go_recommendationengine-v0.8.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/recommendationengine/com_google_cloud_go_recommendationengine-v0.8.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/recommendationengine/com_google_cloud_go_recommendationengine-v0.8.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/recommendationengine/com_google_cloud_go_recommendationengine-v0.8.4.zip", ], ) go_repository( name = "com_google_cloud_go_recommender", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/recommender", - sha256 = "1f0585da517bd4163b8482c6810cf1c119c0ad5a4d038bdcaa6491a5b3d1417b", - strip_prefix = "cloud.google.com/go/recommender@v1.11.1", + sha256 = "91d47908960d25962b698dfa918db6fe8ce7f7c997b8c70243f2522019cdce92", + strip_prefix = "cloud.google.com/go/recommender@v1.11.3", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/recommender/com_google_cloud_go_recommender-v1.11.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/recommender/com_google_cloud_go_recommender-v1.11.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/recommender/com_google_cloud_go_recommender-v1.11.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/recommender/com_google_cloud_go_recommender-v1.11.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/recommender/com_google_cloud_go_recommender-v1.11.3.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/recommender/com_google_cloud_go_recommender-v1.11.3.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/recommender/com_google_cloud_go_recommender-v1.11.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/recommender/com_google_cloud_go_recommender-v1.11.3.zip", ], ) go_repository( name = "com_google_cloud_go_redis", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/redis", - sha256 = "53e5bd33b17517627ce13404b784a7c8b2b8c65719e8f70977616b061834ee87", - strip_prefix = "cloud.google.com/go/redis@v1.13.2", + sha256 = "eb4875557eb8116a4247a1bcc796f6e3402e930259d7b7874cba4edb040c0002", + strip_prefix = "cloud.google.com/go/redis@v1.14.1", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/redis/com_google_cloud_go_redis-v1.13.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/redis/com_google_cloud_go_redis-v1.13.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/redis/com_google_cloud_go_redis-v1.13.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/redis/com_google_cloud_go_redis-v1.13.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/redis/com_google_cloud_go_redis-v1.14.1.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/redis/com_google_cloud_go_redis-v1.14.1.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/redis/com_google_cloud_go_redis-v1.14.1.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/redis/com_google_cloud_go_redis-v1.14.1.zip", ], ) go_repository( name = "com_google_cloud_go_resourcemanager", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/resourcemanager", - sha256 = "bb51f46e5a6a219191c258f1b395a1129fc96d4ea940eff412191522c0dbd043", - strip_prefix = "cloud.google.com/go/resourcemanager@v1.9.2", + sha256 = "e09c544224dbcde4c3241bb8c3f1246a0a89c00bb4b5419660009cfa3208b03a", + strip_prefix = "cloud.google.com/go/resourcemanager@v1.9.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/resourcemanager/com_google_cloud_go_resourcemanager-v1.9.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/resourcemanager/com_google_cloud_go_resourcemanager-v1.9.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/resourcemanager/com_google_cloud_go_resourcemanager-v1.9.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/resourcemanager/com_google_cloud_go_resourcemanager-v1.9.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/resourcemanager/com_google_cloud_go_resourcemanager-v1.9.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/resourcemanager/com_google_cloud_go_resourcemanager-v1.9.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/resourcemanager/com_google_cloud_go_resourcemanager-v1.9.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/resourcemanager/com_google_cloud_go_resourcemanager-v1.9.4.zip", ], ) go_repository( name = "com_google_cloud_go_resourcesettings", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/resourcesettings", - sha256 = "f2327ef037487c9f183e3a52e6456c087f8dc8325311bc6dcb77e5a8c030e360", - strip_prefix = "cloud.google.com/go/resourcesettings@v1.6.2", + sha256 = "44b8bdbf1e73ceda14c4a09134fd1094e1d8cbd0c1790eb769bd9aff53cf49a0", + strip_prefix = "cloud.google.com/go/resourcesettings@v1.6.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/resourcesettings/com_google_cloud_go_resourcesettings-v1.6.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/resourcesettings/com_google_cloud_go_resourcesettings-v1.6.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/resourcesettings/com_google_cloud_go_resourcesettings-v1.6.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/resourcesettings/com_google_cloud_go_resourcesettings-v1.6.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/resourcesettings/com_google_cloud_go_resourcesettings-v1.6.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/resourcesettings/com_google_cloud_go_resourcesettings-v1.6.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/resourcesettings/com_google_cloud_go_resourcesettings-v1.6.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/resourcesettings/com_google_cloud_go_resourcesettings-v1.6.4.zip", ], ) go_repository( name = "com_google_cloud_go_retail", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/retail", - sha256 = "85c1df965d36c1449655ae20ff44c18eab4177babbc2a851764941073b623862", - strip_prefix = "cloud.google.com/go/retail@v1.14.2", + sha256 = "4085ecd37e6bf1e34cd99f499a69a559bcad3782b124989a84f62db0c43717de", + strip_prefix = "cloud.google.com/go/retail@v1.14.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/retail/com_google_cloud_go_retail-v1.14.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/retail/com_google_cloud_go_retail-v1.14.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/retail/com_google_cloud_go_retail-v1.14.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/retail/com_google_cloud_go_retail-v1.14.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/retail/com_google_cloud_go_retail-v1.14.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/retail/com_google_cloud_go_retail-v1.14.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/retail/com_google_cloud_go_retail-v1.14.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/retail/com_google_cloud_go_retail-v1.14.4.zip", ], ) go_repository( name = "com_google_cloud_go_run", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/run", - sha256 = "5382527d044acc067f77f94001d094b1bd990fe91e68dd6de38d86b8eed9bc04", - strip_prefix = "cloud.google.com/go/run@v1.3.1", + sha256 = "fa7447cad93791127df03fa82f00c4dac3ac11de5a936f1da376930d372be1d3", + strip_prefix = "cloud.google.com/go/run@v1.3.3", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/run/com_google_cloud_go_run-v1.3.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/run/com_google_cloud_go_run-v1.3.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/run/com_google_cloud_go_run-v1.3.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/run/com_google_cloud_go_run-v1.3.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/run/com_google_cloud_go_run-v1.3.3.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/run/com_google_cloud_go_run-v1.3.3.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/run/com_google_cloud_go_run-v1.3.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/run/com_google_cloud_go_run-v1.3.3.zip", ], ) go_repository( name = "com_google_cloud_go_scheduler", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/scheduler", - sha256 = "171f330ba8477da1ab647cc6707f963300fec30750a37e5dd7935d2387c2116d", - strip_prefix = "cloud.google.com/go/scheduler@v1.10.2", + sha256 = "eb4159cd7e874e6382b8e6aa828956bd3e3d01b26baf7c98ce25f80c67d19955", + strip_prefix = "cloud.google.com/go/scheduler@v1.10.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/scheduler/com_google_cloud_go_scheduler-v1.10.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/scheduler/com_google_cloud_go_scheduler-v1.10.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/scheduler/com_google_cloud_go_scheduler-v1.10.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/scheduler/com_google_cloud_go_scheduler-v1.10.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/scheduler/com_google_cloud_go_scheduler-v1.10.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/scheduler/com_google_cloud_go_scheduler-v1.10.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/scheduler/com_google_cloud_go_scheduler-v1.10.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/scheduler/com_google_cloud_go_scheduler-v1.10.4.zip", ], ) go_repository( name = "com_google_cloud_go_secretmanager", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/secretmanager", - sha256 = "4dc8dc1f3dc60a6aa5038ccc7ac988e53af136a544021391a82af303cf811e5a", - strip_prefix = "cloud.google.com/go/secretmanager@v1.11.2", + sha256 = "0639d29ee3e59ca7fe54cd07ece668bf1faaa973179b18c903dfda285e11d005", + strip_prefix = "cloud.google.com/go/secretmanager@v1.11.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/secretmanager/com_google_cloud_go_secretmanager-v1.11.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/secretmanager/com_google_cloud_go_secretmanager-v1.11.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/secretmanager/com_google_cloud_go_secretmanager-v1.11.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/secretmanager/com_google_cloud_go_secretmanager-v1.11.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/secretmanager/com_google_cloud_go_secretmanager-v1.11.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/secretmanager/com_google_cloud_go_secretmanager-v1.11.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/secretmanager/com_google_cloud_go_secretmanager-v1.11.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/secretmanager/com_google_cloud_go_secretmanager-v1.11.4.zip", ], ) go_repository( name = "com_google_cloud_go_security", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/security", - sha256 = "8c32c5308500ac6dad8bf4ab42d84c18e5d19bcbfbdb1879a349a6a62d428a61", - strip_prefix = "cloud.google.com/go/security@v1.15.2", + sha256 = "0b42a54801d9321fab57ab3811befcf071a13426ca49f2c498ffd429ce4057b3", + strip_prefix = "cloud.google.com/go/security@v1.15.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/security/com_google_cloud_go_security-v1.15.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/security/com_google_cloud_go_security-v1.15.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/security/com_google_cloud_go_security-v1.15.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/security/com_google_cloud_go_security-v1.15.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/security/com_google_cloud_go_security-v1.15.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/security/com_google_cloud_go_security-v1.15.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/security/com_google_cloud_go_security-v1.15.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/security/com_google_cloud_go_security-v1.15.4.zip", ], ) go_repository( name = "com_google_cloud_go_securitycenter", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/securitycenter", - sha256 = "ed0594a9ed6c492d125c67f490e3a94c135e870a98342e9216df12162fa6911e", - strip_prefix = "cloud.google.com/go/securitycenter@v1.23.1", + sha256 = "9f8495ac103e255ec42d0b1de9f93ebe7308b6614f705cbce1e13f02d260781d", + strip_prefix = "cloud.google.com/go/securitycenter@v1.24.2", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/securitycenter/com_google_cloud_go_securitycenter-v1.23.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/securitycenter/com_google_cloud_go_securitycenter-v1.23.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/securitycenter/com_google_cloud_go_securitycenter-v1.23.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/securitycenter/com_google_cloud_go_securitycenter-v1.23.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/securitycenter/com_google_cloud_go_securitycenter-v1.24.2.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/securitycenter/com_google_cloud_go_securitycenter-v1.24.2.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/securitycenter/com_google_cloud_go_securitycenter-v1.24.2.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/securitycenter/com_google_cloud_go_securitycenter-v1.24.2.zip", ], ) go_repository( name = "com_google_cloud_go_servicedirectory", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/servicedirectory", - sha256 = "266651c6851b26c8047bec746633d5773d80463352f8e708da3cf2cd7fdfbe40", - strip_prefix = "cloud.google.com/go/servicedirectory@v1.11.1", + sha256 = "b491da281b94e6e585d8062f97f9a845dfeb47ec8333705597295929e21937be", + strip_prefix = "cloud.google.com/go/servicedirectory@v1.11.3", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/servicedirectory/com_google_cloud_go_servicedirectory-v1.11.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/servicedirectory/com_google_cloud_go_servicedirectory-v1.11.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/servicedirectory/com_google_cloud_go_servicedirectory-v1.11.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/servicedirectory/com_google_cloud_go_servicedirectory-v1.11.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/servicedirectory/com_google_cloud_go_servicedirectory-v1.11.3.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/servicedirectory/com_google_cloud_go_servicedirectory-v1.11.3.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/servicedirectory/com_google_cloud_go_servicedirectory-v1.11.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/servicedirectory/com_google_cloud_go_servicedirectory-v1.11.3.zip", ], ) go_repository( name = "com_google_cloud_go_shell", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/shell", - sha256 = "f50cd0726dd7109c75b9775b6750b3316acb1f764d608ff02278e98cff327ecd", - strip_prefix = "cloud.google.com/go/shell@v1.7.2", + sha256 = "2e56de8da5669fc04e19ebc2af5581bea7778d39aaf0b13676fce72f41eb5302", + strip_prefix = "cloud.google.com/go/shell@v1.7.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/shell/com_google_cloud_go_shell-v1.7.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/shell/com_google_cloud_go_shell-v1.7.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/shell/com_google_cloud_go_shell-v1.7.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/shell/com_google_cloud_go_shell-v1.7.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/shell/com_google_cloud_go_shell-v1.7.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/shell/com_google_cloud_go_shell-v1.7.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/shell/com_google_cloud_go_shell-v1.7.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/shell/com_google_cloud_go_shell-v1.7.4.zip", ], ) go_repository( name = "com_google_cloud_go_spanner", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/spanner", - sha256 = "eb0dd423ec976db7be0e6a709cab5d7ad2b9e20ca53cf9cd9663475bf896531a", - strip_prefix = "cloud.google.com/go/spanner@v1.50.0", + sha256 = "4d60c2d98601cd8d11e332bb821ce5ee3c06ca8b4e58989d5efb18e135893f85", + strip_prefix = "cloud.google.com/go/spanner@v1.51.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/spanner/com_google_cloud_go_spanner-v1.50.0.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/spanner/com_google_cloud_go_spanner-v1.50.0.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/spanner/com_google_cloud_go_spanner-v1.50.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/spanner/com_google_cloud_go_spanner-v1.50.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/spanner/com_google_cloud_go_spanner-v1.51.0.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/spanner/com_google_cloud_go_spanner-v1.51.0.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/spanner/com_google_cloud_go_spanner-v1.51.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/spanner/com_google_cloud_go_spanner-v1.51.0.zip", ], ) go_repository( name = "com_google_cloud_go_speech", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/speech", - sha256 = "1c184b4698eea3072656dc4e4a0279befdd6d2fa31989f5006b0e46ee7ea5ceb", - strip_prefix = "cloud.google.com/go/speech@v1.19.1", + sha256 = "814ff4b2392758a14b7c4ec91e028564c984920ccecfaac5b817f086dcf295b6", + strip_prefix = "cloud.google.com/go/speech@v1.20.1", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/speech/com_google_cloud_go_speech-v1.19.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/speech/com_google_cloud_go_speech-v1.19.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/speech/com_google_cloud_go_speech-v1.19.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/speech/com_google_cloud_go_speech-v1.19.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/speech/com_google_cloud_go_speech-v1.20.1.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/speech/com_google_cloud_go_speech-v1.20.1.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/speech/com_google_cloud_go_speech-v1.20.1.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/speech/com_google_cloud_go_speech-v1.20.1.zip", ], ) go_repository( @@ -9069,195 +8969,195 @@ def go_deps(): name = "com_google_cloud_go_storagetransfer", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/storagetransfer", - sha256 = "e5c5f002aa7c05a4702d1bb4568b0d63a3384e095402517afaae4147fd6169e8", - strip_prefix = "cloud.google.com/go/storagetransfer@v1.10.1", + sha256 = "9e17ac17ad4986a5af3f36aec52b5e4befaa745050e3c46b4007a90933de8be0", + strip_prefix = "cloud.google.com/go/storagetransfer@v1.10.3", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/storagetransfer/com_google_cloud_go_storagetransfer-v1.10.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/storagetransfer/com_google_cloud_go_storagetransfer-v1.10.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/storagetransfer/com_google_cloud_go_storagetransfer-v1.10.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/storagetransfer/com_google_cloud_go_storagetransfer-v1.10.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/storagetransfer/com_google_cloud_go_storagetransfer-v1.10.3.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/storagetransfer/com_google_cloud_go_storagetransfer-v1.10.3.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/storagetransfer/com_google_cloud_go_storagetransfer-v1.10.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/storagetransfer/com_google_cloud_go_storagetransfer-v1.10.3.zip", ], ) go_repository( name = "com_google_cloud_go_talent", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/talent", - sha256 = "b797a2106e3aca18898ea51144e2308574f49f840fe51fe06f03d1dea56646e1", - strip_prefix = "cloud.google.com/go/talent@v1.6.3", + sha256 = "bd6065c07fb20189b4faa5ea4c06c0a508348257362c7802345f355441eee44b", + strip_prefix = "cloud.google.com/go/talent@v1.6.5", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/talent/com_google_cloud_go_talent-v1.6.3.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/talent/com_google_cloud_go_talent-v1.6.3.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/talent/com_google_cloud_go_talent-v1.6.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/talent/com_google_cloud_go_talent-v1.6.3.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/talent/com_google_cloud_go_talent-v1.6.5.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/talent/com_google_cloud_go_talent-v1.6.5.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/talent/com_google_cloud_go_talent-v1.6.5.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/talent/com_google_cloud_go_talent-v1.6.5.zip", ], ) go_repository( name = "com_google_cloud_go_texttospeech", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/texttospeech", - sha256 = "4a897af8724879bf479f715a57d0894f6fa3b52706e35870c385bcaa799aef2f", - strip_prefix = "cloud.google.com/go/texttospeech@v1.7.2", + sha256 = "c71d33c6ca31ff097331951ea52478e16caa73472e78d14758d6de9f64d10a06", + strip_prefix = "cloud.google.com/go/texttospeech@v1.7.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/texttospeech/com_google_cloud_go_texttospeech-v1.7.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/texttospeech/com_google_cloud_go_texttospeech-v1.7.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/texttospeech/com_google_cloud_go_texttospeech-v1.7.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/texttospeech/com_google_cloud_go_texttospeech-v1.7.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/texttospeech/com_google_cloud_go_texttospeech-v1.7.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/texttospeech/com_google_cloud_go_texttospeech-v1.7.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/texttospeech/com_google_cloud_go_texttospeech-v1.7.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/texttospeech/com_google_cloud_go_texttospeech-v1.7.4.zip", ], ) go_repository( name = "com_google_cloud_go_tpu", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/tpu", - sha256 = "48e359c9edd853357bb8f157a4ead1601d9c926b1c539fde86b5531139f60647", - strip_prefix = "cloud.google.com/go/tpu@v1.6.2", + sha256 = "96f561cae8d5fd1126c67b24eb25d3f601f88d79599cd251819802dc6531e4e7", + strip_prefix = "cloud.google.com/go/tpu@v1.6.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/tpu/com_google_cloud_go_tpu-v1.6.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/tpu/com_google_cloud_go_tpu-v1.6.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/tpu/com_google_cloud_go_tpu-v1.6.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/tpu/com_google_cloud_go_tpu-v1.6.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/tpu/com_google_cloud_go_tpu-v1.6.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/tpu/com_google_cloud_go_tpu-v1.6.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/tpu/com_google_cloud_go_tpu-v1.6.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/tpu/com_google_cloud_go_tpu-v1.6.4.zip", ], ) go_repository( name = "com_google_cloud_go_trace", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/trace", - sha256 = "40dd16a13c80f021b31ee309e80f6ee21323b67b2d3aac8473717ac3b3efce08", - strip_prefix = "cloud.google.com/go/trace@v1.10.2", + sha256 = "77dca06e712fe4fda0d79b8ff57f118ce038bf0cadec22657f5abc385a01a720", + strip_prefix = "cloud.google.com/go/trace@v1.10.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/trace/com_google_cloud_go_trace-v1.10.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/trace/com_google_cloud_go_trace-v1.10.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/trace/com_google_cloud_go_trace-v1.10.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/trace/com_google_cloud_go_trace-v1.10.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/trace/com_google_cloud_go_trace-v1.10.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/trace/com_google_cloud_go_trace-v1.10.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/trace/com_google_cloud_go_trace-v1.10.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/trace/com_google_cloud_go_trace-v1.10.4.zip", ], ) go_repository( name = "com_google_cloud_go_translate", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/translate", - sha256 = "1776353be213f41195b9da35ae6f39cff060f9c163a0213711d7cb11e4f067ff", - strip_prefix = "cloud.google.com/go/translate@v1.9.1", + sha256 = "c7130da1e8941ea8db679b62e0e94d8b01441a13fe780d8c2c18bc2132385197", + strip_prefix = "cloud.google.com/go/translate@v1.9.3", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/translate/com_google_cloud_go_translate-v1.9.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/translate/com_google_cloud_go_translate-v1.9.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/translate/com_google_cloud_go_translate-v1.9.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/translate/com_google_cloud_go_translate-v1.9.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/translate/com_google_cloud_go_translate-v1.9.3.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/translate/com_google_cloud_go_translate-v1.9.3.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/translate/com_google_cloud_go_translate-v1.9.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/translate/com_google_cloud_go_translate-v1.9.3.zip", ], ) go_repository( name = "com_google_cloud_go_video", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/video", - sha256 = "758131934c35db8aa8d39efa5ce411785da78dd55d82edbb7a9fcb8e9518d2a9", - strip_prefix = "cloud.google.com/go/video@v1.20.1", + sha256 = "863e12dae253753daebb1e5e9af15f68a1321adf177f3e7e9732bacf369def63", + strip_prefix = "cloud.google.com/go/video@v1.20.3", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/video/com_google_cloud_go_video-v1.20.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/video/com_google_cloud_go_video-v1.20.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/video/com_google_cloud_go_video-v1.20.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/video/com_google_cloud_go_video-v1.20.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/video/com_google_cloud_go_video-v1.20.3.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/video/com_google_cloud_go_video-v1.20.3.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/video/com_google_cloud_go_video-v1.20.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/video/com_google_cloud_go_video-v1.20.3.zip", ], ) go_repository( name = "com_google_cloud_go_videointelligence", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/videointelligence", - sha256 = "0ca9d8c68825f07c208157bf24503f4a64aec960efe3ea2ff8c1ce2dac92b351", - strip_prefix = "cloud.google.com/go/videointelligence@v1.11.2", + sha256 = "d37362c58b1cc6ff875fc308eabc7d82f88b900432fe84f1984775217778fef8", + strip_prefix = "cloud.google.com/go/videointelligence@v1.11.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/videointelligence/com_google_cloud_go_videointelligence-v1.11.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/videointelligence/com_google_cloud_go_videointelligence-v1.11.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/videointelligence/com_google_cloud_go_videointelligence-v1.11.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/videointelligence/com_google_cloud_go_videointelligence-v1.11.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/videointelligence/com_google_cloud_go_videointelligence-v1.11.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/videointelligence/com_google_cloud_go_videointelligence-v1.11.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/videointelligence/com_google_cloud_go_videointelligence-v1.11.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/videointelligence/com_google_cloud_go_videointelligence-v1.11.4.zip", ], ) go_repository( name = "com_google_cloud_go_vision_v2", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/vision/v2", - sha256 = "89b8e20f0db42816208b1d9c5a6cb1abd276fee95fbdd563e750da588d110464", - strip_prefix = "cloud.google.com/go/vision/v2@v2.7.3", + sha256 = "76b71582199e7a74a0277f7f421f4ecf9d858b5be3e34334479454091a5223d2", + strip_prefix = "cloud.google.com/go/vision/v2@v2.7.5", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/vision/v2/com_google_cloud_go_vision_v2-v2.7.3.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/vision/v2/com_google_cloud_go_vision_v2-v2.7.3.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/vision/v2/com_google_cloud_go_vision_v2-v2.7.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/vision/v2/com_google_cloud_go_vision_v2-v2.7.3.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/vision/v2/com_google_cloud_go_vision_v2-v2.7.5.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/vision/v2/com_google_cloud_go_vision_v2-v2.7.5.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/vision/v2/com_google_cloud_go_vision_v2-v2.7.5.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/vision/v2/com_google_cloud_go_vision_v2-v2.7.5.zip", ], ) go_repository( name = "com_google_cloud_go_vmmigration", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/vmmigration", - sha256 = "8ef0ba7a5fa6b436593782de63111e4274cb61267008bff10c9dc90285405dce", - strip_prefix = "cloud.google.com/go/vmmigration@v1.7.2", + sha256 = "bc850873b55bf103ccbe803b13c1406fa2931beed8bec5216c5428ed2b526312", + strip_prefix = "cloud.google.com/go/vmmigration@v1.7.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/vmmigration/com_google_cloud_go_vmmigration-v1.7.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/vmmigration/com_google_cloud_go_vmmigration-v1.7.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/vmmigration/com_google_cloud_go_vmmigration-v1.7.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/vmmigration/com_google_cloud_go_vmmigration-v1.7.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/vmmigration/com_google_cloud_go_vmmigration-v1.7.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/vmmigration/com_google_cloud_go_vmmigration-v1.7.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/vmmigration/com_google_cloud_go_vmmigration-v1.7.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/vmmigration/com_google_cloud_go_vmmigration-v1.7.4.zip", ], ) go_repository( name = "com_google_cloud_go_vmwareengine", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/vmwareengine", - sha256 = "906ad046857c81df8a0e8f30d09f3db9d2c13021a3374587d3acd2a734c60a13", - strip_prefix = "cloud.google.com/go/vmwareengine@v1.0.1", + sha256 = "ada0386900ac32eae7098d2c6a8647017ee476dffa5bb8731ec276086670fdb5", + strip_prefix = "cloud.google.com/go/vmwareengine@v1.0.3", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/vmwareengine/com_google_cloud_go_vmwareengine-v1.0.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/vmwareengine/com_google_cloud_go_vmwareengine-v1.0.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/vmwareengine/com_google_cloud_go_vmwareengine-v1.0.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/vmwareengine/com_google_cloud_go_vmwareengine-v1.0.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/vmwareengine/com_google_cloud_go_vmwareengine-v1.0.3.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/vmwareengine/com_google_cloud_go_vmwareengine-v1.0.3.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/vmwareengine/com_google_cloud_go_vmwareengine-v1.0.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/vmwareengine/com_google_cloud_go_vmwareengine-v1.0.3.zip", ], ) go_repository( name = "com_google_cloud_go_vpcaccess", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/vpcaccess", - sha256 = "80207274d8a780413505c4efdd881c5798d988ade2bc647ac803d18831a42250", - strip_prefix = "cloud.google.com/go/vpcaccess@v1.7.2", + sha256 = "aa17c93acf6059410989fd94086a632705e63844bee25d250488f3c6690da2a1", + strip_prefix = "cloud.google.com/go/vpcaccess@v1.7.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/vpcaccess/com_google_cloud_go_vpcaccess-v1.7.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/vpcaccess/com_google_cloud_go_vpcaccess-v1.7.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/vpcaccess/com_google_cloud_go_vpcaccess-v1.7.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/vpcaccess/com_google_cloud_go_vpcaccess-v1.7.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/vpcaccess/com_google_cloud_go_vpcaccess-v1.7.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/vpcaccess/com_google_cloud_go_vpcaccess-v1.7.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/vpcaccess/com_google_cloud_go_vpcaccess-v1.7.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/vpcaccess/com_google_cloud_go_vpcaccess-v1.7.4.zip", ], ) go_repository( name = "com_google_cloud_go_webrisk", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/webrisk", - sha256 = "f1b45df15670274eae77a62a7ae243b5eafb4e10f8f04c852ca73a026b9d03f7", - strip_prefix = "cloud.google.com/go/webrisk@v1.9.2", + sha256 = "25624aeb1e1984ea65d435ce16d12ec6e1a154d589a2d69d0d8e14a59de693a7", + strip_prefix = "cloud.google.com/go/webrisk@v1.9.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/webrisk/com_google_cloud_go_webrisk-v1.9.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/webrisk/com_google_cloud_go_webrisk-v1.9.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/webrisk/com_google_cloud_go_webrisk-v1.9.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/webrisk/com_google_cloud_go_webrisk-v1.9.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/webrisk/com_google_cloud_go_webrisk-v1.9.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/webrisk/com_google_cloud_go_webrisk-v1.9.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/webrisk/com_google_cloud_go_webrisk-v1.9.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/webrisk/com_google_cloud_go_webrisk-v1.9.4.zip", ], ) go_repository( name = "com_google_cloud_go_websecurityscanner", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/websecurityscanner", - sha256 = "ce37d83c1998f0dde1ca5b8e107a8654466271fda7c9b35614672da9d8a33144", - strip_prefix = "cloud.google.com/go/websecurityscanner@v1.6.2", + sha256 = "4fe6d2490392c4f85aff40f9609565c75531e02ecd48ac06b135dc71cef2dc15", + strip_prefix = "cloud.google.com/go/websecurityscanner@v1.6.4", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/websecurityscanner/com_google_cloud_go_websecurityscanner-v1.6.2.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/websecurityscanner/com_google_cloud_go_websecurityscanner-v1.6.2.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/websecurityscanner/com_google_cloud_go_websecurityscanner-v1.6.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/websecurityscanner/com_google_cloud_go_websecurityscanner-v1.6.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/websecurityscanner/com_google_cloud_go_websecurityscanner-v1.6.4.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/websecurityscanner/com_google_cloud_go_websecurityscanner-v1.6.4.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/websecurityscanner/com_google_cloud_go_websecurityscanner-v1.6.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/websecurityscanner/com_google_cloud_go_websecurityscanner-v1.6.4.zip", ], ) go_repository( name = "com_google_cloud_go_workflows", build_file_proto_mode = "disable_global", importpath = "cloud.google.com/go/workflows", - sha256 = "b8de38a09b26fc4a98a10a8370f4780361c27a13cc84244fcf8840c2ca0f402a", - strip_prefix = "cloud.google.com/go/workflows@v1.12.1", + sha256 = "5b3f1383cfc87ebba495ffb4f0d60aa68869b4ec61d63775095b84974bdcfb2d", + strip_prefix = "cloud.google.com/go/workflows@v1.12.3", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/workflows/com_google_cloud_go_workflows-v1.12.1.zip", - "http://ats.apps.svc/gomod/cloud.google.com/go/workflows/com_google_cloud_go_workflows-v1.12.1.zip", - "https://cache.hawkingrei.com/gomod/cloud.google.com/go/workflows/com_google_cloud_go_workflows-v1.12.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/workflows/com_google_cloud_go_workflows-v1.12.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/cloud.google.com/go/workflows/com_google_cloud_go_workflows-v1.12.3.zip", + "http://ats.apps.svc/gomod/cloud.google.com/go/workflows/com_google_cloud_go_workflows-v1.12.3.zip", + "https://cache.hawkingrei.com/gomod/cloud.google.com/go/workflows/com_google_cloud_go_workflows-v1.12.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/cloud.google.com/go/workflows/com_google_cloud_go_workflows-v1.12.3.zip", ], ) go_repository( @@ -9325,19 +9225,6 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/go.tmz.dev/musttag/dev_tmz_go_musttag-v0.7.2.zip", ], ) - go_repository( - name = "in_gopkg_alecthomas_kingpin_v2", - build_file_proto_mode = "disable_global", - importpath = "gopkg.in/alecthomas/kingpin.v2", - sha256 = "638080591aefe7d2642f2575b627d534c692606f02ea54ba89f42db112ba8839", - strip_prefix = "gopkg.in/alecthomas/kingpin.v2@v2.2.6", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/gopkg.in/alecthomas/kingpin.v2/in_gopkg_alecthomas_kingpin_v2-v2.2.6.zip", - "http://ats.apps.svc/gomod/gopkg.in/alecthomas/kingpin.v2/in_gopkg_alecthomas_kingpin_v2-v2.2.6.zip", - "https://cache.hawkingrei.com/gomod/gopkg.in/alecthomas/kingpin.v2/in_gopkg_alecthomas_kingpin_v2-v2.2.6.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/gopkg.in/alecthomas/kingpin.v2/in_gopkg_alecthomas_kingpin_v2-v2.2.6.zip", - ], - ) go_repository( name = "in_gopkg_check_v1", build_file_proto_mode = "disable_global", @@ -9364,19 +9251,6 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/gopkg.in/errgo.v2/in_gopkg_errgo_v2-v2.1.0.zip", ], ) - go_repository( - name = "in_gopkg_fsnotify_fsnotify_v1", - build_file_proto_mode = "disable_global", - importpath = "gopkg.in/fsnotify/fsnotify.v1", - sha256 = "d24b0fa77291be6c99ad3f75dfde626112e018ce8d28cc2e0d68b6c8f2c29521", - strip_prefix = "gopkg.in/fsnotify/fsnotify.v1@v1.3.1", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/gopkg.in/fsnotify/fsnotify.v1/in_gopkg_fsnotify_fsnotify_v1-v1.3.1.zip", - "http://ats.apps.svc/gomod/gopkg.in/fsnotify/fsnotify.v1/in_gopkg_fsnotify_fsnotify_v1-v1.3.1.zip", - "https://cache.hawkingrei.com/gomod/gopkg.in/fsnotify/fsnotify.v1/in_gopkg_fsnotify_fsnotify_v1-v1.3.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/gopkg.in/fsnotify/fsnotify.v1/in_gopkg_fsnotify_fsnotify_v1-v1.3.1.zip", - ], - ) go_repository( name = "in_gopkg_fsnotify_v1", build_file_proto_mode = "disable_global", @@ -9533,19 +9407,6 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/gopkg.in/natefinch/lumberjack.v2/in_gopkg_natefinch_lumberjack_v2-v2.2.1.zip", ], ) - go_repository( - name = "in_gopkg_resty_v1", - build_file_proto_mode = "disable_global", - importpath = "gopkg.in/resty.v1", - sha256 = "43487bb0bb40626d16502b1fe9e719cf751e7a5b4e4233276971873e7863d3cf", - strip_prefix = "gopkg.in/resty.v1@v1.12.0", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/gopkg.in/resty.v1/in_gopkg_resty_v1-v1.12.0.zip", - "http://ats.apps.svc/gomod/gopkg.in/resty.v1/in_gopkg_resty_v1-v1.12.0.zip", - "https://cache.hawkingrei.com/gomod/gopkg.in/resty.v1/in_gopkg_resty_v1-v1.12.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/gopkg.in/resty.v1/in_gopkg_resty_v1-v1.12.0.zip", - ], - ) go_repository( name = "in_gopkg_tomb_v1", build_file_proto_mode = "disable_global", @@ -9736,78 +9597,78 @@ def go_deps(): name = "io_k8s_api", build_file_proto_mode = "disable_global", importpath = "k8s.io/api", - sha256 = "417e394e3510035a617292da245c07d606d9a4c0674361719f6a08dc0bf67b68", - strip_prefix = "k8s.io/api@v0.27.2", + sha256 = "a1c52127e7ea4b782c171300588502580b0b2779186791c330f673c365a12332", + strip_prefix = "k8s.io/api@v0.28.2", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/k8s.io/api/io_k8s_api-v0.27.2.zip", - "http://ats.apps.svc/gomod/k8s.io/api/io_k8s_api-v0.27.2.zip", - "https://cache.hawkingrei.com/gomod/k8s.io/api/io_k8s_api-v0.27.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/k8s.io/api/io_k8s_api-v0.27.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/k8s.io/api/io_k8s_api-v0.28.2.zip", + "http://ats.apps.svc/gomod/k8s.io/api/io_k8s_api-v0.28.2.zip", + "https://cache.hawkingrei.com/gomod/k8s.io/api/io_k8s_api-v0.28.2.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/k8s.io/api/io_k8s_api-v0.28.2.zip", ], ) go_repository( name = "io_k8s_apimachinery", build_file_proto_mode = "disable_global", importpath = "k8s.io/apimachinery", - sha256 = "1f2f04041166fcddead7f31f03149f33ee6fdc08db1093ddbc027191204c2f86", - strip_prefix = "k8s.io/apimachinery@v0.27.2", + sha256 = "e006533970f892c51b7a378fb9e884a00ee19c3b8600e7f6473ee02281515df9", + strip_prefix = "k8s.io/apimachinery@v0.28.2", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/k8s.io/apimachinery/io_k8s_apimachinery-v0.27.2.zip", - "http://ats.apps.svc/gomod/k8s.io/apimachinery/io_k8s_apimachinery-v0.27.2.zip", - "https://cache.hawkingrei.com/gomod/k8s.io/apimachinery/io_k8s_apimachinery-v0.27.2.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/k8s.io/apimachinery/io_k8s_apimachinery-v0.27.2.zip", + "http://bazel-cache.pingcap.net:8080/gomod/k8s.io/apimachinery/io_k8s_apimachinery-v0.28.2.zip", + "http://ats.apps.svc/gomod/k8s.io/apimachinery/io_k8s_apimachinery-v0.28.2.zip", + "https://cache.hawkingrei.com/gomod/k8s.io/apimachinery/io_k8s_apimachinery-v0.28.2.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/k8s.io/apimachinery/io_k8s_apimachinery-v0.28.2.zip", ], ) go_repository( name = "io_k8s_client_go", build_file_proto_mode = "disable_global", importpath = "k8s.io/client-go", - sha256 = "27e135d4d9663f42f5e6b75830a9e795db9752d6da9cc5f595a1b75233efd817", - strip_prefix = "k8s.io/client-go@v11.0.1-0.20190409021438-1a26190bd76a+incompatible", + sha256 = "435692d0b6b435260c49fde6caf1852cdd8d5d69714db147d7d07a3684cdd65e", + strip_prefix = "k8s.io/client-go@v0.28.2", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/k8s.io/client-go/io_k8s_client_go-v11.0.1-0.20190409021438-1a26190bd76a+incompatible.zip", - "http://ats.apps.svc/gomod/k8s.io/client-go/io_k8s_client_go-v11.0.1-0.20190409021438-1a26190bd76a+incompatible.zip", - "https://cache.hawkingrei.com/gomod/k8s.io/client-go/io_k8s_client_go-v11.0.1-0.20190409021438-1a26190bd76a+incompatible.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/k8s.io/client-go/io_k8s_client_go-v11.0.1-0.20190409021438-1a26190bd76a+incompatible.zip", + "http://bazel-cache.pingcap.net:8080/gomod/k8s.io/client-go/io_k8s_client_go-v0.28.2.zip", + "http://ats.apps.svc/gomod/k8s.io/client-go/io_k8s_client_go-v0.28.2.zip", + "https://cache.hawkingrei.com/gomod/k8s.io/client-go/io_k8s_client_go-v0.28.2.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/k8s.io/client-go/io_k8s_client_go-v0.28.2.zip", ], ) go_repository( name = "io_k8s_klog", build_file_proto_mode = "disable_global", importpath = "k8s.io/klog", - sha256 = "520558eccd4b172aa20cd0b3ee1f60d15a8d5894ace059304c19f83afd4df36a", - strip_prefix = "k8s.io/klog@v0.3.0", + sha256 = "a564b06078ddf014c5b793a7d36643d6fda31fc131e36b95cdea94ff838b99be", + strip_prefix = "k8s.io/klog@v1.0.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/k8s.io/klog/io_k8s_klog-v0.3.0.zip", - "http://ats.apps.svc/gomod/k8s.io/klog/io_k8s_klog-v0.3.0.zip", - "https://cache.hawkingrei.com/gomod/k8s.io/klog/io_k8s_klog-v0.3.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/k8s.io/klog/io_k8s_klog-v0.3.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/k8s.io/klog/io_k8s_klog-v1.0.0.zip", + "http://ats.apps.svc/gomod/k8s.io/klog/io_k8s_klog-v1.0.0.zip", + "https://cache.hawkingrei.com/gomod/k8s.io/klog/io_k8s_klog-v1.0.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/k8s.io/klog/io_k8s_klog-v1.0.0.zip", ], ) go_repository( name = "io_k8s_klog_v2", build_file_proto_mode = "disable_global", importpath = "k8s.io/klog/v2", - sha256 = "73f9da873c79b331e5b9d70a56ca89bda33f42b04564bf8f848807f60e3232e5", - strip_prefix = "k8s.io/klog/v2@v2.90.1", + sha256 = "753a27de9f28b54d76937797e1a6c9a197c92ff97dd17330d2800b8de2a06241", + strip_prefix = "k8s.io/klog/v2@v2.100.1", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/k8s.io/klog/v2/io_k8s_klog_v2-v2.90.1.zip", - "http://ats.apps.svc/gomod/k8s.io/klog/v2/io_k8s_klog_v2-v2.90.1.zip", - "https://cache.hawkingrei.com/gomod/k8s.io/klog/v2/io_k8s_klog_v2-v2.90.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/k8s.io/klog/v2/io_k8s_klog_v2-v2.90.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/k8s.io/klog/v2/io_k8s_klog_v2-v2.100.1.zip", + "http://ats.apps.svc/gomod/k8s.io/klog/v2/io_k8s_klog_v2-v2.100.1.zip", + "https://cache.hawkingrei.com/gomod/k8s.io/klog/v2/io_k8s_klog_v2-v2.100.1.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/k8s.io/klog/v2/io_k8s_klog_v2-v2.100.1.zip", ], ) go_repository( name = "io_k8s_kube_openapi", build_file_proto_mode = "disable_global", importpath = "k8s.io/kube-openapi", - sha256 = "2738e6254f17109e5cf8c0ac5b902bcfe014ad065a9520b8dadad5a7a7d166d5", - strip_prefix = "k8s.io/kube-openapi@v0.0.0-20230501164219-8b0f38b5fd1f", + sha256 = "1439fcbc0a04bbf7edf72712288e1cc4d2497fd28279c76a01a366910b65d6c7", + strip_prefix = "k8s.io/kube-openapi@v0.0.0-20230717233707-2695361300d9", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/k8s.io/kube-openapi/io_k8s_kube_openapi-v0.0.0-20230501164219-8b0f38b5fd1f.zip", - "http://ats.apps.svc/gomod/k8s.io/kube-openapi/io_k8s_kube_openapi-v0.0.0-20230501164219-8b0f38b5fd1f.zip", - "https://cache.hawkingrei.com/gomod/k8s.io/kube-openapi/io_k8s_kube_openapi-v0.0.0-20230501164219-8b0f38b5fd1f.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/k8s.io/kube-openapi/io_k8s_kube_openapi-v0.0.0-20230501164219-8b0f38b5fd1f.zip", + "http://bazel-cache.pingcap.net:8080/gomod/k8s.io/kube-openapi/io_k8s_kube_openapi-v0.0.0-20230717233707-2695361300d9.zip", + "http://ats.apps.svc/gomod/k8s.io/kube-openapi/io_k8s_kube_openapi-v0.0.0-20230717233707-2695361300d9.zip", + "https://cache.hawkingrei.com/gomod/k8s.io/kube-openapi/io_k8s_kube_openapi-v0.0.0-20230717233707-2695361300d9.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/k8s.io/kube-openapi/io_k8s_kube_openapi-v0.0.0-20230717233707-2695361300d9.zip", ], ) go_repository( @@ -9827,13 +9688,13 @@ def go_deps(): name = "io_k8s_sigs_structured_merge_diff_v4", build_file_proto_mode = "disable_global", importpath = "sigs.k8s.io/structured-merge-diff/v4", - sha256 = "81c147c247afbc71fa135b2f4209c0641e141267be5c6a956a0f8bf851e74e31", - strip_prefix = "sigs.k8s.io/structured-merge-diff/v4@v4.2.3", + sha256 = "0a5107d9269d3fc45d3abb9a1fc0c3c4788b82d848679416cb4c2bc49cad89de", + strip_prefix = "sigs.k8s.io/structured-merge-diff/v4@v4.3.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/sigs.k8s.io/structured-merge-diff/v4/io_k8s_sigs_structured_merge_diff_v4-v4.2.3.zip", - "http://ats.apps.svc/gomod/sigs.k8s.io/structured-merge-diff/v4/io_k8s_sigs_structured_merge_diff_v4-v4.2.3.zip", - "https://cache.hawkingrei.com/gomod/sigs.k8s.io/structured-merge-diff/v4/io_k8s_sigs_structured_merge_diff_v4-v4.2.3.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/sigs.k8s.io/structured-merge-diff/v4/io_k8s_sigs_structured_merge_diff_v4-v4.2.3.zip", + "http://bazel-cache.pingcap.net:8080/gomod/sigs.k8s.io/structured-merge-diff/v4/io_k8s_sigs_structured_merge_diff_v4-v4.3.0.zip", + "http://ats.apps.svc/gomod/sigs.k8s.io/structured-merge-diff/v4/io_k8s_sigs_structured_merge_diff_v4-v4.3.0.zip", + "https://cache.hawkingrei.com/gomod/sigs.k8s.io/structured-merge-diff/v4/io_k8s_sigs_structured_merge_diff_v4-v4.3.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/sigs.k8s.io/structured-merge-diff/v4/io_k8s_sigs_structured_merge_diff_v4-v4.3.0.zip", ], ) go_repository( @@ -9853,13 +9714,13 @@ def go_deps(): name = "io_k8s_utils", build_file_proto_mode = "disable_global", importpath = "k8s.io/utils", - sha256 = "29b4ceb51420d6f5c6482e9cc0884b369dc44647b4b4cc09886acd5091817026", - strip_prefix = "k8s.io/utils@v0.0.0-20230209194617-a36077c30491", + sha256 = "755df44d714f0c28df51b94f096c1ff5af7625a00c92ca03b5914217a759b391", + strip_prefix = "k8s.io/utils@v0.0.0-20230711102312-30195339c3c7", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/k8s.io/utils/io_k8s_utils-v0.0.0-20230209194617-a36077c30491.zip", - "http://ats.apps.svc/gomod/k8s.io/utils/io_k8s_utils-v0.0.0-20230209194617-a36077c30491.zip", - "https://cache.hawkingrei.com/gomod/k8s.io/utils/io_k8s_utils-v0.0.0-20230209194617-a36077c30491.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/k8s.io/utils/io_k8s_utils-v0.0.0-20230209194617-a36077c30491.zip", + "http://bazel-cache.pingcap.net:8080/gomod/k8s.io/utils/io_k8s_utils-v0.0.0-20230711102312-30195339c3c7.zip", + "http://ats.apps.svc/gomod/k8s.io/utils/io_k8s_utils-v0.0.0-20230711102312-30195339c3c7.zip", + "https://cache.hawkingrei.com/gomod/k8s.io/utils/io_k8s_utils-v0.0.0-20230711102312-30195339c3c7.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/k8s.io/utils/io_k8s_utils-v0.0.0-20230711102312-30195339c3c7.zip", ], ) go_repository( @@ -9876,107 +9737,159 @@ def go_deps(): ], ) go_repository( - name = "io_opencensus_go_contrib_exporter_ocagent", + name = "io_opentelemetry_go_collector_pdata", build_file_proto_mode = "disable_global", - importpath = "contrib.go.opencensus.io/exporter/ocagent", - sha256 = "a06ce658c281fe830953bf2548047de8c43776c87d0eac63db37206538928e51", - strip_prefix = "contrib.go.opencensus.io/exporter/ocagent@v0.4.12", + importpath = "go.opentelemetry.io/collector/pdata", + sha256 = "737f1976ed7d5028a19f72834d429f2fa31f803e16591bb79aa0779a2d52ea2c", + strip_prefix = "go.opentelemetry.io/collector/pdata@v1.0.0-rcv0016", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/contrib.go.opencensus.io/exporter/ocagent/io_opencensus_go_contrib_exporter_ocagent-v0.4.12.zip", - "http://ats.apps.svc/gomod/contrib.go.opencensus.io/exporter/ocagent/io_opencensus_go_contrib_exporter_ocagent-v0.4.12.zip", - "https://cache.hawkingrei.com/gomod/contrib.go.opencensus.io/exporter/ocagent/io_opencensus_go_contrib_exporter_ocagent-v0.4.12.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/contrib.go.opencensus.io/exporter/ocagent/io_opencensus_go_contrib_exporter_ocagent-v0.4.12.zip", + "http://bazel-cache.pingcap.net:8080/gomod/go.opentelemetry.io/collector/pdata/io_opentelemetry_go_collector_pdata-v1.0.0-rcv0016.zip", + "http://ats.apps.svc/gomod/go.opentelemetry.io/collector/pdata/io_opentelemetry_go_collector_pdata-v1.0.0-rcv0016.zip", + "https://cache.hawkingrei.com/gomod/go.opentelemetry.io/collector/pdata/io_opentelemetry_go_collector_pdata-v1.0.0-rcv0016.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/go.opentelemetry.io/collector/pdata/io_opentelemetry_go_collector_pdata-v1.0.0-rcv0016.zip", + ], + ) + go_repository( + name = "io_opentelemetry_go_collector_semconv", + build_file_proto_mode = "disable_global", + importpath = "go.opentelemetry.io/collector/semconv", + sha256 = "a07e0233a84e7c50b911a49c7c740a312643184e2a4b6f1c185cc9e5c306399b", + strip_prefix = "go.opentelemetry.io/collector/semconv@v0.87.0", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/go.opentelemetry.io/collector/semconv/io_opentelemetry_go_collector_semconv-v0.87.0.zip", + "http://ats.apps.svc/gomod/go.opentelemetry.io/collector/semconv/io_opentelemetry_go_collector_semconv-v0.87.0.zip", + "https://cache.hawkingrei.com/gomod/go.opentelemetry.io/collector/semconv/io_opentelemetry_go_collector_semconv-v0.87.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/go.opentelemetry.io/collector/semconv/io_opentelemetry_go_collector_semconv-v0.87.0.zip", ], ) go_repository( name = "io_opentelemetry_go_contrib_instrumentation_google_golang_org_grpc_otelgrpc", build_file_proto_mode = "disable_global", importpath = "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc", - sha256 = "f7abd5e3fe79b49a398912f67f79d853e329bb4f653b98804a961d5178dadc5e", - strip_prefix = "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc@v0.25.0", + sha256 = "77a1264ef9fbcbf742ac4df5eebfb6f3b46e5b34c222aa81391b5c24ac1acc5c", + strip_prefix = "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc@v0.46.1", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/io_opentelemetry_go_contrib_instrumentation_google_golang_org_grpc_otelgrpc-v0.46.1.zip", + "http://ats.apps.svc/gomod/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/io_opentelemetry_go_contrib_instrumentation_google_golang_org_grpc_otelgrpc-v0.46.1.zip", + "https://cache.hawkingrei.com/gomod/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/io_opentelemetry_go_contrib_instrumentation_google_golang_org_grpc_otelgrpc-v0.46.1.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/io_opentelemetry_go_contrib_instrumentation_google_golang_org_grpc_otelgrpc-v0.46.1.zip", + ], + ) + go_repository( + name = "io_opentelemetry_go_contrib_instrumentation_net_http_otelhttp", + build_file_proto_mode = "disable_global", + importpath = "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp", + sha256 = "38a7f95a534f15d366c6ec12b0715b3d4a60b12ff510a0908381a5b09a16314b", + strip_prefix = "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.45.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/io_opentelemetry_go_contrib_instrumentation_google_golang_org_grpc_otelgrpc-v0.25.0.zip", - "http://ats.apps.svc/gomod/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/io_opentelemetry_go_contrib_instrumentation_google_golang_org_grpc_otelgrpc-v0.25.0.zip", - "https://cache.hawkingrei.com/gomod/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/io_opentelemetry_go_contrib_instrumentation_google_golang_org_grpc_otelgrpc-v0.25.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/io_opentelemetry_go_contrib_instrumentation_google_golang_org_grpc_otelgrpc-v0.25.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/io_opentelemetry_go_contrib_instrumentation_net_http_otelhttp-v0.45.0.zip", + "http://ats.apps.svc/gomod/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/io_opentelemetry_go_contrib_instrumentation_net_http_otelhttp-v0.45.0.zip", + "https://cache.hawkingrei.com/gomod/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/io_opentelemetry_go_contrib_instrumentation_net_http_otelhttp-v0.45.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/io_opentelemetry_go_contrib_instrumentation_net_http_otelhttp-v0.45.0.zip", ], ) go_repository( name = "io_opentelemetry_go_otel", build_file_proto_mode = "disable_global", importpath = "go.opentelemetry.io/otel", - sha256 = "e8c4d785d6a230d5c954d7afbbb0df5c8a2ffb59aeb07bc4f7c731c6f55e0626", - strip_prefix = "go.opentelemetry.io/otel@v1.0.1", + sha256 = "4c633a67b2c5fd2db8a67ccf95edfea244188ebbefaf114b659679f02d33e9e1", + strip_prefix = "go.opentelemetry.io/otel@v1.21.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.opentelemetry.io/otel/io_opentelemetry_go_otel-v1.0.1.zip", - "http://ats.apps.svc/gomod/go.opentelemetry.io/otel/io_opentelemetry_go_otel-v1.0.1.zip", - "https://cache.hawkingrei.com/gomod/go.opentelemetry.io/otel/io_opentelemetry_go_otel-v1.0.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.opentelemetry.io/otel/io_opentelemetry_go_otel-v1.0.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/go.opentelemetry.io/otel/io_opentelemetry_go_otel-v1.21.0.zip", + "http://ats.apps.svc/gomod/go.opentelemetry.io/otel/io_opentelemetry_go_otel-v1.21.0.zip", + "https://cache.hawkingrei.com/gomod/go.opentelemetry.io/otel/io_opentelemetry_go_otel-v1.21.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/go.opentelemetry.io/otel/io_opentelemetry_go_otel-v1.21.0.zip", ], ) go_repository( name = "io_opentelemetry_go_otel_exporters_otlp_otlptrace", build_file_proto_mode = "disable_global", importpath = "go.opentelemetry.io/otel/exporters/otlp/otlptrace", - sha256 = "c0b373451618d70053fcfad5acbdc243cbad8b6b9252e0a30303171b0b065499", - strip_prefix = "go.opentelemetry.io/otel/exporters/otlp/otlptrace@v1.0.1", + sha256 = "6b0338c4e65c7d642ca44c4e0fc177c92cdc85c20de255f2feffa845c0312039", + strip_prefix = "go.opentelemetry.io/otel/exporters/otlp/otlptrace@v1.19.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/io_opentelemetry_go_otel_exporters_otlp_otlptrace-v1.0.1.zip", - "http://ats.apps.svc/gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/io_opentelemetry_go_otel_exporters_otlp_otlptrace-v1.0.1.zip", - "https://cache.hawkingrei.com/gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/io_opentelemetry_go_otel_exporters_otlp_otlptrace-v1.0.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/io_opentelemetry_go_otel_exporters_otlp_otlptrace-v1.0.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/io_opentelemetry_go_otel_exporters_otlp_otlptrace-v1.19.0.zip", + "http://ats.apps.svc/gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/io_opentelemetry_go_otel_exporters_otlp_otlptrace-v1.19.0.zip", + "https://cache.hawkingrei.com/gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/io_opentelemetry_go_otel_exporters_otlp_otlptrace-v1.19.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/io_opentelemetry_go_otel_exporters_otlp_otlptrace-v1.19.0.zip", ], ) go_repository( name = "io_opentelemetry_go_otel_exporters_otlp_otlptrace_otlptracegrpc", build_file_proto_mode = "disable_global", importpath = "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc", - sha256 = "7e99951c02fdc104a08bff9244de6f9129171ccde70761c61c9f4255ce81dc5d", - strip_prefix = "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc@v1.0.1", + sha256 = "a410831cce2fbc295d2d94fc0ca302f1b56791d152896718be36d6bb17699216", + strip_prefix = "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc@v1.19.0", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/io_opentelemetry_go_otel_exporters_otlp_otlptrace_otlptracegrpc-v1.19.0.zip", + "http://ats.apps.svc/gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/io_opentelemetry_go_otel_exporters_otlp_otlptrace_otlptracegrpc-v1.19.0.zip", + "https://cache.hawkingrei.com/gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/io_opentelemetry_go_otel_exporters_otlp_otlptrace_otlptracegrpc-v1.19.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/io_opentelemetry_go_otel_exporters_otlp_otlptrace_otlptracegrpc-v1.19.0.zip", + ], + ) + go_repository( + name = "io_opentelemetry_go_otel_exporters_otlp_otlptrace_otlptracehttp", + build_file_proto_mode = "disable_global", + importpath = "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp", + sha256 = "fedab3fc44536278ce213e81a044d6b048dda8969f9defc936fcaf3272765e92", + strip_prefix = "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp@v1.19.0", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/io_opentelemetry_go_otel_exporters_otlp_otlptrace_otlptracehttp-v1.19.0.zip", + "http://ats.apps.svc/gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/io_opentelemetry_go_otel_exporters_otlp_otlptrace_otlptracehttp-v1.19.0.zip", + "https://cache.hawkingrei.com/gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/io_opentelemetry_go_otel_exporters_otlp_otlptrace_otlptracehttp-v1.19.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/io_opentelemetry_go_otel_exporters_otlp_otlptrace_otlptracehttp-v1.19.0.zip", + ], + ) + go_repository( + name = "io_opentelemetry_go_otel_metric", + build_file_proto_mode = "disable_global", + importpath = "go.opentelemetry.io/otel/metric", + sha256 = "f1f0370f589bc0daa18b5a6b7a8b56f2c7c1d652da0e2541491b69ec31ac9303", + strip_prefix = "go.opentelemetry.io/otel/metric@v1.21.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/io_opentelemetry_go_otel_exporters_otlp_otlptrace_otlptracegrpc-v1.0.1.zip", - "http://ats.apps.svc/gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/io_opentelemetry_go_otel_exporters_otlp_otlptrace_otlptracegrpc-v1.0.1.zip", - "https://cache.hawkingrei.com/gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/io_opentelemetry_go_otel_exporters_otlp_otlptrace_otlptracegrpc-v1.0.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/io_opentelemetry_go_otel_exporters_otlp_otlptrace_otlptracegrpc-v1.0.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/go.opentelemetry.io/otel/metric/io_opentelemetry_go_otel_metric-v1.21.0.zip", + "http://ats.apps.svc/gomod/go.opentelemetry.io/otel/metric/io_opentelemetry_go_otel_metric-v1.21.0.zip", + "https://cache.hawkingrei.com/gomod/go.opentelemetry.io/otel/metric/io_opentelemetry_go_otel_metric-v1.21.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/go.opentelemetry.io/otel/metric/io_opentelemetry_go_otel_metric-v1.21.0.zip", ], ) go_repository( name = "io_opentelemetry_go_otel_sdk", build_file_proto_mode = "disable_global", importpath = "go.opentelemetry.io/otel/sdk", - sha256 = "760e9297c941b22cd3a5a2b217de46f8f2411cc7ef8dc1bab8ed02d75e10217d", - strip_prefix = "go.opentelemetry.io/otel/sdk@v1.0.1", + sha256 = "1c3f3d971627ae2c9c6102fe62c6bd68149feebba06b4a17cf0367c7d97c912d", + strip_prefix = "go.opentelemetry.io/otel/sdk@v1.21.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.opentelemetry.io/otel/sdk/io_opentelemetry_go_otel_sdk-v1.0.1.zip", - "http://ats.apps.svc/gomod/go.opentelemetry.io/otel/sdk/io_opentelemetry_go_otel_sdk-v1.0.1.zip", - "https://cache.hawkingrei.com/gomod/go.opentelemetry.io/otel/sdk/io_opentelemetry_go_otel_sdk-v1.0.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.opentelemetry.io/otel/sdk/io_opentelemetry_go_otel_sdk-v1.0.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/go.opentelemetry.io/otel/sdk/io_opentelemetry_go_otel_sdk-v1.21.0.zip", + "http://ats.apps.svc/gomod/go.opentelemetry.io/otel/sdk/io_opentelemetry_go_otel_sdk-v1.21.0.zip", + "https://cache.hawkingrei.com/gomod/go.opentelemetry.io/otel/sdk/io_opentelemetry_go_otel_sdk-v1.21.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/go.opentelemetry.io/otel/sdk/io_opentelemetry_go_otel_sdk-v1.21.0.zip", ], ) go_repository( name = "io_opentelemetry_go_otel_trace", build_file_proto_mode = "disable_global", importpath = "go.opentelemetry.io/otel/trace", - sha256 = "d7f303c3e1a9d844121309c132fab5f99dc68e9ac6518ef1d9c44f92ae9e97ea", - strip_prefix = "go.opentelemetry.io/otel/trace@v1.0.1", + sha256 = "4fc5d58e527a30baf406a702c1fff18c44739c39f6d63f1c648a93751a788ba5", + strip_prefix = "go.opentelemetry.io/otel/trace@v1.21.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.opentelemetry.io/otel/trace/io_opentelemetry_go_otel_trace-v1.0.1.zip", - "http://ats.apps.svc/gomod/go.opentelemetry.io/otel/trace/io_opentelemetry_go_otel_trace-v1.0.1.zip", - "https://cache.hawkingrei.com/gomod/go.opentelemetry.io/otel/trace/io_opentelemetry_go_otel_trace-v1.0.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.opentelemetry.io/otel/trace/io_opentelemetry_go_otel_trace-v1.0.1.zip", + "http://bazel-cache.pingcap.net:8080/gomod/go.opentelemetry.io/otel/trace/io_opentelemetry_go_otel_trace-v1.21.0.zip", + "http://ats.apps.svc/gomod/go.opentelemetry.io/otel/trace/io_opentelemetry_go_otel_trace-v1.21.0.zip", + "https://cache.hawkingrei.com/gomod/go.opentelemetry.io/otel/trace/io_opentelemetry_go_otel_trace-v1.21.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/go.opentelemetry.io/otel/trace/io_opentelemetry_go_otel_trace-v1.21.0.zip", ], ) go_repository( name = "io_opentelemetry_go_proto_otlp", build_file_proto_mode = "disable_global", importpath = "go.opentelemetry.io/proto/otlp", - sha256 = "1a91376c923da07bee23439e8430c32736f6330532df85d3bd1ada90305097d7", - strip_prefix = "go.opentelemetry.io/proto/otlp@v0.9.0", + sha256 = "264e0db82a8c572ebc52fbe3da3f4a2a60d7e5fcf81238d1389390f66e2da246", + strip_prefix = "go.opentelemetry.io/proto/otlp@v1.0.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/go.opentelemetry.io/proto/otlp/io_opentelemetry_go_proto_otlp-v0.9.0.zip", - "http://ats.apps.svc/gomod/go.opentelemetry.io/proto/otlp/io_opentelemetry_go_proto_otlp-v0.9.0.zip", - "https://cache.hawkingrei.com/gomod/go.opentelemetry.io/proto/otlp/io_opentelemetry_go_proto_otlp-v0.9.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/go.opentelemetry.io/proto/otlp/io_opentelemetry_go_proto_otlp-v0.9.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/go.opentelemetry.io/proto/otlp/io_opentelemetry_go_proto_otlp-v1.0.0.zip", + "http://ats.apps.svc/gomod/go.opentelemetry.io/proto/otlp/io_opentelemetry_go_proto_otlp-v1.0.0.zip", + "https://cache.hawkingrei.com/gomod/go.opentelemetry.io/proto/otlp/io_opentelemetry_go_proto_otlp-v1.0.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/go.opentelemetry.io/proto/otlp/io_opentelemetry_go_proto_otlp-v1.0.0.zip", ], ) go_repository( @@ -10061,13 +9974,13 @@ def go_deps(): name = "org_golang_google_api", build_file_proto_mode = "disable_global", importpath = "google.golang.org/api", - sha256 = "1c7547012d828329aa90dc77bfa7d826184b14229cc72c93eeca50cb9882158d", - strip_prefix = "google.golang.org/api@v0.128.0", + sha256 = "72ad7e7194310ac3eaae621dda412787b35382478edcdde4f12df9cad2f393c9", + strip_prefix = "google.golang.org/api@v0.149.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/google.golang.org/api/org_golang_google_api-v0.128.0.zip", - "http://ats.apps.svc/gomod/google.golang.org/api/org_golang_google_api-v0.128.0.zip", - "https://cache.hawkingrei.com/gomod/google.golang.org/api/org_golang_google_api-v0.128.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/google.golang.org/api/org_golang_google_api-v0.128.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/google.golang.org/api/org_golang_google_api-v0.149.0.zip", + "http://ats.apps.svc/gomod/google.golang.org/api/org_golang_google_api-v0.149.0.zip", + "https://cache.hawkingrei.com/gomod/google.golang.org/api/org_golang_google_api-v0.149.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/google.golang.org/api/org_golang_google_api-v0.149.0.zip", ], ) go_repository( @@ -10087,52 +10000,52 @@ def go_deps(): name = "org_golang_google_genproto", build_file_proto_mode = "disable_global", importpath = "google.golang.org/genproto", - sha256 = "11c4f5d4c24c25c9dec4fb2d4e723dead4c558bea81ab3b2deb3b1f5f98f278a", - strip_prefix = "google.golang.org/genproto@v0.0.0-20231016165738-49dd2c1f3d0b", + sha256 = "2d1407c2ce93329ed8348a11126eeccf88a96353a49540463f55bd26f7a342fb", + strip_prefix = "google.golang.org/genproto@v0.0.0-20231106174013-bbf56f31fb17", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/google.golang.org/genproto/org_golang_google_genproto-v0.0.0-20231016165738-49dd2c1f3d0b.zip", - "http://ats.apps.svc/gomod/google.golang.org/genproto/org_golang_google_genproto-v0.0.0-20231016165738-49dd2c1f3d0b.zip", - "https://cache.hawkingrei.com/gomod/google.golang.org/genproto/org_golang_google_genproto-v0.0.0-20231016165738-49dd2c1f3d0b.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/google.golang.org/genproto/org_golang_google_genproto-v0.0.0-20231016165738-49dd2c1f3d0b.zip", + "http://bazel-cache.pingcap.net:8080/gomod/google.golang.org/genproto/org_golang_google_genproto-v0.0.0-20231106174013-bbf56f31fb17.zip", + "http://ats.apps.svc/gomod/google.golang.org/genproto/org_golang_google_genproto-v0.0.0-20231106174013-bbf56f31fb17.zip", + "https://cache.hawkingrei.com/gomod/google.golang.org/genproto/org_golang_google_genproto-v0.0.0-20231106174013-bbf56f31fb17.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/google.golang.org/genproto/org_golang_google_genproto-v0.0.0-20231106174013-bbf56f31fb17.zip", ], ) go_repository( name = "org_golang_google_genproto_googleapis_api", build_file_proto_mode = "disable_global", importpath = "google.golang.org/genproto/googleapis/api", - sha256 = "26f62026bcd267b4fbde3bd16aa9334568af09e623fd64a8e7cd8ec99c0dbf5d", - strip_prefix = "google.golang.org/genproto/googleapis/api@v0.0.0-20231016165738-49dd2c1f3d0b", + sha256 = "521565d08641a65c1425b74db6bfff04ca2ee5cfde35aa784c1d647f418b6108", + strip_prefix = "google.golang.org/genproto/googleapis/api@v0.0.0-20231030173426-d783a09b4405", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/google.golang.org/genproto/googleapis/api/org_golang_google_genproto_googleapis_api-v0.0.0-20231016165738-49dd2c1f3d0b.zip", - "http://ats.apps.svc/gomod/google.golang.org/genproto/googleapis/api/org_golang_google_genproto_googleapis_api-v0.0.0-20231016165738-49dd2c1f3d0b.zip", - "https://cache.hawkingrei.com/gomod/google.golang.org/genproto/googleapis/api/org_golang_google_genproto_googleapis_api-v0.0.0-20231016165738-49dd2c1f3d0b.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/google.golang.org/genproto/googleapis/api/org_golang_google_genproto_googleapis_api-v0.0.0-20231016165738-49dd2c1f3d0b.zip", + "http://bazel-cache.pingcap.net:8080/gomod/google.golang.org/genproto/googleapis/api/org_golang_google_genproto_googleapis_api-v0.0.0-20231030173426-d783a09b4405.zip", + "http://ats.apps.svc/gomod/google.golang.org/genproto/googleapis/api/org_golang_google_genproto_googleapis_api-v0.0.0-20231030173426-d783a09b4405.zip", + "https://cache.hawkingrei.com/gomod/google.golang.org/genproto/googleapis/api/org_golang_google_genproto_googleapis_api-v0.0.0-20231030173426-d783a09b4405.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/google.golang.org/genproto/googleapis/api/org_golang_google_genproto_googleapis_api-v0.0.0-20231030173426-d783a09b4405.zip", ], ) go_repository( name = "org_golang_google_genproto_googleapis_bytestream", build_file_proto_mode = "disable_global", importpath = "google.golang.org/genproto/googleapis/bytestream", - sha256 = "cab1c8c198b4c5a226590e8b5b1b847e505a7aaf10a0145ce8c29951eca86b6a", - strip_prefix = "google.golang.org/genproto/googleapis/bytestream@v0.0.0-20230530153820-e85fd2cbaebc", + sha256 = "dfc6aba2d6c8a069e582efa17f6e00569ce90c2be98edd7a38283deeb69c493a", + strip_prefix = "google.golang.org/genproto/googleapis/bytestream@v0.0.0-20231030173426-d783a09b4405", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/google.golang.org/genproto/googleapis/bytestream/org_golang_google_genproto_googleapis_bytestream-v0.0.0-20230530153820-e85fd2cbaebc.zip", - "http://ats.apps.svc/gomod/google.golang.org/genproto/googleapis/bytestream/org_golang_google_genproto_googleapis_bytestream-v0.0.0-20230530153820-e85fd2cbaebc.zip", - "https://cache.hawkingrei.com/gomod/google.golang.org/genproto/googleapis/bytestream/org_golang_google_genproto_googleapis_bytestream-v0.0.0-20230530153820-e85fd2cbaebc.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/google.golang.org/genproto/googleapis/bytestream/org_golang_google_genproto_googleapis_bytestream-v0.0.0-20230530153820-e85fd2cbaebc.zip", + "http://bazel-cache.pingcap.net:8080/gomod/google.golang.org/genproto/googleapis/bytestream/org_golang_google_genproto_googleapis_bytestream-v0.0.0-20231030173426-d783a09b4405.zip", + "http://ats.apps.svc/gomod/google.golang.org/genproto/googleapis/bytestream/org_golang_google_genproto_googleapis_bytestream-v0.0.0-20231030173426-d783a09b4405.zip", + "https://cache.hawkingrei.com/gomod/google.golang.org/genproto/googleapis/bytestream/org_golang_google_genproto_googleapis_bytestream-v0.0.0-20231030173426-d783a09b4405.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/google.golang.org/genproto/googleapis/bytestream/org_golang_google_genproto_googleapis_bytestream-v0.0.0-20231030173426-d783a09b4405.zip", ], ) go_repository( name = "org_golang_google_genproto_googleapis_rpc", build_file_proto_mode = "disable_global", importpath = "google.golang.org/genproto/googleapis/rpc", - sha256 = "b35528074783811faaaec1d36c8f42d88b30878e509c5f407c53cb83ec02af78", - strip_prefix = "google.golang.org/genproto/googleapis/rpc@v0.0.0-20231016165738-49dd2c1f3d0b", + sha256 = "b351b49112507e61aeca7718b51570799d615ee5e5564f3e25124a9e01a85835", + strip_prefix = "google.golang.org/genproto/googleapis/rpc@v0.0.0-20231120223509-83a465c0220f", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/google.golang.org/genproto/googleapis/rpc/org_golang_google_genproto_googleapis_rpc-v0.0.0-20231016165738-49dd2c1f3d0b.zip", - "http://ats.apps.svc/gomod/google.golang.org/genproto/googleapis/rpc/org_golang_google_genproto_googleapis_rpc-v0.0.0-20231016165738-49dd2c1f3d0b.zip", - "https://cache.hawkingrei.com/gomod/google.golang.org/genproto/googleapis/rpc/org_golang_google_genproto_googleapis_rpc-v0.0.0-20231016165738-49dd2c1f3d0b.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/google.golang.org/genproto/googleapis/rpc/org_golang_google_genproto_googleapis_rpc-v0.0.0-20231016165738-49dd2c1f3d0b.zip", + "http://bazel-cache.pingcap.net:8080/gomod/google.golang.org/genproto/googleapis/rpc/org_golang_google_genproto_googleapis_rpc-v0.0.0-20231120223509-83a465c0220f.zip", + "http://ats.apps.svc/gomod/google.golang.org/genproto/googleapis/rpc/org_golang_google_genproto_googleapis_rpc-v0.0.0-20231120223509-83a465c0220f.zip", + "https://cache.hawkingrei.com/gomod/google.golang.org/genproto/googleapis/rpc/org_golang_google_genproto_googleapis_rpc-v0.0.0-20231120223509-83a465c0220f.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/google.golang.org/genproto/googleapis/rpc/org_golang_google_genproto_googleapis_rpc-v0.0.0-20231120223509-83a465c0220f.zip", ], ) go_repository( @@ -10165,13 +10078,13 @@ def go_deps(): name = "org_golang_x_crypto", build_file_proto_mode = "disable_global", importpath = "golang.org/x/crypto", - sha256 = "a72c57e71d0fbd460d8493c958fb2841357e3babbb32d7fe2cd533564b1d66b7", - strip_prefix = "golang.org/x/crypto@v0.14.0", + sha256 = "6a363fb982d3bb85bcad009cbece9ba82d3ea64c949f31133c9a8265a05b956e", + strip_prefix = "golang.org/x/crypto@v0.15.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/crypto/org_golang_x_crypto-v0.14.0.zip", - "http://ats.apps.svc/gomod/golang.org/x/crypto/org_golang_x_crypto-v0.14.0.zip", - "https://cache.hawkingrei.com/gomod/golang.org/x/crypto/org_golang_x_crypto-v0.14.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/crypto/org_golang_x_crypto-v0.14.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/crypto/org_golang_x_crypto-v0.15.0.zip", + "http://ats.apps.svc/gomod/golang.org/x/crypto/org_golang_x_crypto-v0.15.0.zip", + "https://cache.hawkingrei.com/gomod/golang.org/x/crypto/org_golang_x_crypto-v0.15.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/crypto/org_golang_x_crypto-v0.15.0.zip", ], ) go_repository( @@ -10256,39 +10169,39 @@ def go_deps(): name = "org_golang_x_net", build_file_proto_mode = "disable_global", importpath = "golang.org/x/net", - sha256 = "d99428e95af6fd8fdc23285d69b8f6e7c52c964c990295e45183718e33ebeb5a", - strip_prefix = "golang.org/x/net@v0.17.0", + sha256 = "4cab2282ffbcfc8cceed657567a5fcf11e735312d1865f953fae62bbf1307a7a", + strip_prefix = "golang.org/x/net@v0.18.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/net/org_golang_x_net-v0.17.0.zip", - "http://ats.apps.svc/gomod/golang.org/x/net/org_golang_x_net-v0.17.0.zip", - "https://cache.hawkingrei.com/gomod/golang.org/x/net/org_golang_x_net-v0.17.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/net/org_golang_x_net-v0.17.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/net/org_golang_x_net-v0.18.0.zip", + "http://ats.apps.svc/gomod/golang.org/x/net/org_golang_x_net-v0.18.0.zip", + "https://cache.hawkingrei.com/gomod/golang.org/x/net/org_golang_x_net-v0.18.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/net/org_golang_x_net-v0.18.0.zip", ], ) go_repository( name = "org_golang_x_oauth2", build_file_proto_mode = "disable_global", importpath = "golang.org/x/oauth2", - sha256 = "b23a51ee021e3118e132019a94ffec5138a24a4bd40e48e3dd335e4a24ea97ca", - strip_prefix = "golang.org/x/oauth2@v0.12.0", + sha256 = "21e3fa05a7c13202e9446bccb7e20d6579310eafd1d8c25331e6ef0d1721a5d5", + strip_prefix = "golang.org/x/oauth2@v0.14.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/oauth2/org_golang_x_oauth2-v0.12.0.zip", - "http://ats.apps.svc/gomod/golang.org/x/oauth2/org_golang_x_oauth2-v0.12.0.zip", - "https://cache.hawkingrei.com/gomod/golang.org/x/oauth2/org_golang_x_oauth2-v0.12.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/oauth2/org_golang_x_oauth2-v0.12.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/oauth2/org_golang_x_oauth2-v0.14.0.zip", + "http://ats.apps.svc/gomod/golang.org/x/oauth2/org_golang_x_oauth2-v0.14.0.zip", + "https://cache.hawkingrei.com/gomod/golang.org/x/oauth2/org_golang_x_oauth2-v0.14.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/oauth2/org_golang_x_oauth2-v0.14.0.zip", ], ) go_repository( name = "org_golang_x_sync", build_file_proto_mode = "disable_global", importpath = "golang.org/x/sync", - sha256 = "77c5d9c48ba1c440060c87d9a1b67f2ef5216994228e14ad3fcfe2dd9b3f2134", - strip_prefix = "golang.org/x/sync@v0.4.0", + sha256 = "9e094c65b153881437ce230b2d2492719d063c8924009631c9025add13056922", + strip_prefix = "golang.org/x/sync@v0.5.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/sync/org_golang_x_sync-v0.4.0.zip", - "http://ats.apps.svc/gomod/golang.org/x/sync/org_golang_x_sync-v0.4.0.zip", - "https://cache.hawkingrei.com/gomod/golang.org/x/sync/org_golang_x_sync-v0.4.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/sync/org_golang_x_sync-v0.4.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/sync/org_golang_x_sync-v0.5.0.zip", + "http://ats.apps.svc/gomod/golang.org/x/sync/org_golang_x_sync-v0.5.0.zip", + "https://cache.hawkingrei.com/gomod/golang.org/x/sync/org_golang_x_sync-v0.5.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/sync/org_golang_x_sync-v0.5.0.zip", ], ) go_repository( @@ -10321,13 +10234,13 @@ def go_deps(): name = "org_golang_x_text", build_file_proto_mode = "disable_global", importpath = "golang.org/x/text", - sha256 = "ed544fb017e967c053892df7b068612fce707ba32b57f35824cb041e31c6ae0f", - strip_prefix = "golang.org/x/text@v0.13.0", + sha256 = "b9814897e0e09cd576a7a013f066c7db537a3d538d2e0f60f0caee9bc1b3f4af", + strip_prefix = "golang.org/x/text@v0.14.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/text/org_golang_x_text-v0.13.0.zip", - "http://ats.apps.svc/gomod/golang.org/x/text/org_golang_x_text-v0.13.0.zip", - "https://cache.hawkingrei.com/gomod/golang.org/x/text/org_golang_x_text-v0.13.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/text/org_golang_x_text-v0.13.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/text/org_golang_x_text-v0.14.0.zip", + "http://ats.apps.svc/gomod/golang.org/x/text/org_golang_x_text-v0.14.0.zip", + "https://cache.hawkingrei.com/gomod/golang.org/x/text/org_golang_x_text-v0.14.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/text/org_golang_x_text-v0.14.0.zip", ], ) go_repository( @@ -10347,13 +10260,13 @@ def go_deps(): name = "org_golang_x_tools", build_file_proto_mode = "disable_global", importpath = "golang.org/x/tools", - sha256 = "1e4ec8fbe5395eae1923e29b734224108b933086bb4d46d03bab6d5479c54242", - strip_prefix = "golang.org/x/tools@v0.14.0", + sha256 = "5cdd3e8b6d805e11c63e8a0262050cd6eac9b0c51bd9b35cd82d5f309d290c70", + strip_prefix = "golang.org/x/tools@v0.15.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/tools/org_golang_x_tools-v0.14.0.zip", - "http://ats.apps.svc/gomod/golang.org/x/tools/org_golang_x_tools-v0.14.0.zip", - "https://cache.hawkingrei.com/gomod/golang.org/x/tools/org_golang_x_tools-v0.14.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/tools/org_golang_x_tools-v0.14.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/tools/org_golang_x_tools-v0.15.0.zip", + "http://ats.apps.svc/gomod/golang.org/x/tools/org_golang_x_tools-v0.15.0.zip", + "https://cache.hawkingrei.com/gomod/golang.org/x/tools/org_golang_x_tools-v0.15.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/tools/org_golang_x_tools-v0.15.0.zip", ], ) go_repository( @@ -10486,6 +10399,19 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/modernc.org/y/org_modernc_y-v1.0.9.zip", ], ) + go_repository( + name = "org_mongodb_go_mongo_driver", + build_file_proto_mode = "disable_global", + importpath = "go.mongodb.org/mongo-driver", + sha256 = "6807fb7b9bff4ca90bcffc5eab1952c5f52304f2983c3fec1ff88679b10e40f9", + strip_prefix = "go.mongodb.org/mongo-driver@v1.12.0", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/go.mongodb.org/mongo-driver/org_mongodb_go_mongo_driver-v1.12.0.zip", + "http://ats.apps.svc/gomod/go.mongodb.org/mongo-driver/org_mongodb_go_mongo_driver-v1.12.0.zip", + "https://cache.hawkingrei.com/gomod/go.mongodb.org/mongo-driver/org_mongodb_go_mongo_driver-v1.12.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/go.mongodb.org/mongo-driver/org_mongodb_go_mongo_driver-v1.12.0.zip", + ], + ) go_repository( name = "org_uber_go_atomic", build_file_proto_mode = "disable_global", @@ -10577,3 +10503,16 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/go.uber.org/zap/org_uber_go_zap-v1.26.0.zip", ], ) + go_repository( + name = "tools_gotest_v3", + build_file_proto_mode = "disable_global", + importpath = "gotest.tools/v3", + sha256 = "9c1e4b8a1477c52441aafc2025a4b4e8bc300a9817c5549c0dc7fffef34bdaef", + strip_prefix = "gotest.tools/v3@v3.0.3", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/gotest.tools/v3/tools_gotest_v3-v3.0.3.zip", + "http://ats.apps.svc/gomod/gotest.tools/v3/tools_gotest_v3-v3.0.3.zip", + "https://cache.hawkingrei.com/gomod/gotest.tools/v3/tools_gotest_v3-v3.0.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/gotest.tools/v3/tools_gotest_v3-v3.0.3.zip", + ], + ) diff --git a/Makefile b/Makefile index fafa1ec44f669..c1d786c83475f 100644 --- a/Makefile +++ b/Makefile @@ -301,6 +301,7 @@ bench-daily: go test -tags intest github.com/pingcap/tidb/pkg/util/rowcodec -run TestBenchDaily -bench Ignore --outfile bench_daily.json go test -tags intest github.com/pingcap/tidb/pkg/util/codec -run TestBenchDaily -bench Ignore --outfile bench_daily.json go test -tags intest github.com/pingcap/tidb/pkg/distsql -run TestBenchDaily -bench Ignore --outfile bench_daily.json + go test -tags intest github.com/pingcap/tidb/pkg/statistics -run TestBenchDaily -bench Ignore --outfile bench_daily.json go test -tags intest github.com/pingcap/tidb/pkg/util/benchdaily -run TestBenchDaily -bench Ignore \ -date `git log -n1 --date=unix --pretty=format:%cd` \ -commit `git log -n1 --pretty=format:%h` \ @@ -312,16 +313,16 @@ br_web: @cd br/web && npm install && npm run build build_br: - CGO_ENABLED=1 $(GOBUILD) $(RACE_FLAG) -ldflags '$(LDFLAGS) $(CHECK_FLAG)' -o $(BR_BIN) br/cmd/br/*.go + CGO_ENABLED=1 $(GOBUILD) $(RACE_FLAG) -ldflags '$(LDFLAGS) $(CHECK_FLAG)' -o $(BR_BIN) ./br/cmd/br build_lightning_for_web: CGO_ENABLED=1 $(GOBUILD) -tags dev $(RACE_FLAG) -ldflags '$(LDFLAGS) $(CHECK_FLAG)' -o $(LIGHTNING_BIN) br/cmd/tidb-lightning/main.go build_lightning: - CGO_ENABLED=1 $(GOBUILD) $(RACE_FLAG) -ldflags '$(LDFLAGS) $(CHECK_FLAG)' -o $(LIGHTNING_BIN) br/cmd/tidb-lightning/main.go + CGO_ENABLED=1 $(GOBUILD) $(RACE_FLAG) -ldflags '$(LDFLAGS) $(CHECK_FLAG)' -o $(LIGHTNING_BIN) ./br/cmd/tidb-lightning build_lightning-ctl: - CGO_ENABLED=1 $(GOBUILD) $(RACE_FLAG) -ldflags '$(LDFLAGS) $(CHECK_FLAG)' -o $(LIGHTNING_CTL_BIN) br/cmd/tidb-lightning-ctl/main.go + CGO_ENABLED=1 $(GOBUILD) $(RACE_FLAG) -ldflags '$(LDFLAGS) $(CHECK_FLAG)' -o $(LIGHTNING_CTL_BIN) ./br/cmd/tidb-lightning-ctl build_for_br_integration_test: @make failpoint-enable @@ -533,89 +534,89 @@ bazel_golangcilinter: -- run $$($(PACKAGE_DIRECTORIES)) --config ./.golangci.yaml bazel_brietest: failpoint-enable bazel_ci_simple_prepare - bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) --test_arg=-with-real-tikv --define gotags=deadlock,intest \ + bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) --instrumentation_filter=//pkg/...,//br/...,//dumpling/... --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 bazel_pessimistictest: failpoint-enable bazel_ci_simple_prepare - bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) --test_arg=-with-real-tikv --define gotags=deadlock,intest \ + bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) --instrumentation_filter=//pkg/...,//br/...,//dumpling/... --test_arg=-with-real-tikv --define gotags=deadlock,intest \ --@io_bazel_rules_go//go/config:cover_format=go_cover \ -- //tests/realtikvtest/pessimistictest/... ./build/jenkins_collect_coverage.sh bazel_sessiontest: failpoint-enable bazel_ci_simple_prepare - bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) --test_arg=-with-real-tikv --define gotags=deadlock,intest \ + bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) --instrumentation_filter=//pkg/...,//br/...,//dumpling/... --test_arg=-with-real-tikv --define gotags=deadlock,intest \ --@io_bazel_rules_go//go/config:cover_format=go_cover \ -- //tests/realtikvtest/sessiontest/... ./build/jenkins_collect_coverage.sh bazel_statisticstest: failpoint-enable bazel_ci_simple_prepare - bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) --test_arg=-with-real-tikv --define gotags=deadlock,intest \ + bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) --instrumentation_filter=//pkg/...,//br/...,//dumpling/... --test_arg=-with-real-tikv --define gotags=deadlock,intest \ --@io_bazel_rules_go//go/config:cover_format=go_cover \ -- //tests/realtikvtest/statisticstest/... ./build/jenkins_collect_coverage.sh bazel_txntest: failpoint-enable bazel_ci_simple_prepare - bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) --test_arg=-with-real-tikv --define gotags=deadlock,intest \ + bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) --instrumentation_filter=//pkg/...,//br/...,//dumpling/... --test_arg=-with-real-tikv --define gotags=deadlock,intest \ --@io_bazel_rules_go//go/config:cover_format=go_cover \ -- //tests/realtikvtest/txntest/... ./build/jenkins_collect_coverage.sh bazel_addindextest: failpoint-enable bazel_ci_simple_prepare - bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) --test_arg=-with-real-tikv --define gotags=deadlock,intest \ + bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) --instrumentation_filter=//pkg/...,//br/...,//dumpling/... --test_arg=-with-real-tikv --define gotags=deadlock,intest \ --@io_bazel_rules_go//go/config:cover_format=go_cover \ -- //tests/realtikvtest/addindextest/... ./build/jenkins_collect_coverage.sh bazel_addindextest1: failpoint-enable bazel_ci_simple_prepare - bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) --test_arg=-with-real-tikv --define gotags=deadlock,intest \ + bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) --instrumentation_filter=//pkg/...,//br/...,//dumpling/... --test_arg=-with-real-tikv --define gotags=deadlock,intest \ --@io_bazel_rules_go//go/config:cover_format=go_cover \ -- //tests/realtikvtest/addindextest1/... ./build/jenkins_collect_coverage.sh bazel_addindextest2: failpoint-enable bazel_ci_simple_prepare - bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) --test_arg=-with-real-tikv --define gotags=deadlock,intest \ + bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) --instrumentation_filter=//pkg/...,//br/...,//dumpling/... --test_arg=-with-real-tikv --define gotags=deadlock,intest \ --@io_bazel_rules_go//go/config:cover_format=go_cover \ -- //tests/realtikvtest/addindextest2/... ./build/jenkins_collect_coverage.sh bazel_addindextest3: failpoint-enable bazel_ci_simple_prepare - bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) --test_arg=-with-real-tikv --define gotags=deadlock,intest \ + bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) --instrumentation_filter=//pkg/...,//br/...,//dumpling/... --test_arg=-with-real-tikv --define gotags=deadlock,intest \ --@io_bazel_rules_go//go/config:cover_format=go_cover \ -- //tests/realtikvtest/addindextest3/... ./build/jenkins_collect_coverage.sh bazel_addindextest4: failpoint-enable bazel_ci_simple_prepare - bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) --test_arg=-with-real-tikv --define gotags=deadlock,intest \ + bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) --instrumentation_filter=//pkg/...,//br/...,//dumpling/... --test_arg=-with-real-tikv --define gotags=deadlock,intest \ --@io_bazel_rules_go//go/config:cover_format=go_cover \ -- //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 bazel_importintotest: failpoint-enable bazel_ci_simple_prepare - bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) --test_output=all --test_arg=-with-real-tikv --define gotags=deadlock,intest \ + bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) --instrumentation_filter=//pkg/...,//br/...,//dumpling/... --test_output=all --test_arg=-with-real-tikv --define gotags=deadlock,intest \ --@io_bazel_rules_go//go/config:cover_format=go_cover \ -- //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 bazel_importintotest2: failpoint-enable bazel_ci_simple_prepare - bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) --test_output=all --test_arg=-with-real-tikv --define gotags=deadlock,intest \ + bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) --instrumentation_filter=//pkg/...,//br/...,//dumpling/... --test_output=all --test_arg=-with-real-tikv --define gotags=deadlock,intest \ --@io_bazel_rules_go//go/config:cover_format=go_cover \ -- //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 bazel_importintotest3: failpoint-enable bazel_ci_simple_prepare - bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) --test_output=all --test_arg=-with-real-tikv --define gotags=deadlock,intest \ + bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) --instrumentation_filter=//pkg/...,//br/...,//dumpling/... --test_output=all --test_arg=-with-real-tikv --define gotags=deadlock,intest \ --@io_bazel_rules_go//go/config:cover_format=go_cover \ -- //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 bazel_importintotest4: failpoint-enable bazel_ci_simple_prepare - bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) --test_output=all --test_arg=-with-real-tikv --define gotags=deadlock,intest \ + bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) --instrumentation_filter=//pkg/...,//br/...,//dumpling/... --test_output=all --test_arg=-with-real-tikv --define gotags=deadlock,intest \ --@io_bazel_rules_go//go/config:cover_format=go_cover \ -- //tests/realtikvtest/importintotest4/... ./build/jenkins_collect_coverage.sh diff --git a/Makefile.common b/Makefile.common index b3139c8e4a6ad..a2ba71009105f 100644 --- a/Makefile.common +++ b/Makefile.common @@ -27,7 +27,13 @@ path_to_add := $(addsuffix /bin,$(subst :,/bin:,$(GOPATH))):$(PWD)/tools/bin export PATH := $(path_to_add):$(PATH) GO := GO111MODULE=on go -GOBUILD := $(GO) build $(BUILD_FLAG) -tags codes +BUILD_FLAG := -tags codes +GOEXPERIMENT= +ifeq ("${ENABLE_FIPS}", "1") + BUILD_FLAG = -tags codes,boringcrypto + GOEXPERIMENT = GOEXPERIMENT=boringcrypto +endif +GOBUILD := $(GOEXPERIMENT) $(GO) build $(BUILD_FLAG) GOBUILDCOVERAGE := GOPATH=$(GOPATH) cd tidb-server; $(GO) test -coverpkg="../..." -c . GOTEST := $(GO) test -p $(P) OVERALLS := GO111MODULE=on overalls diff --git a/OWNERS_ALIASES b/OWNERS_ALIASES index dce8bff5562d3..c679c70f9c91d 100644 --- a/OWNERS_ALIASES +++ b/OWNERS_ALIASES @@ -1,3 +1,4 @@ +# Sort the member alphabetically. aliases: sig-critical-approvers-tidb-server: - yudongusa @@ -89,6 +90,11 @@ aliases: - wjhuang2016 - ywqzzy - zimulala + sig-approvers-parser: # approvers for `parser` module. + - bb7133 + - BornChanger + - D3Hunter + - tangenta sig-approvers-resourcemanager: # approvers for resourcemanager pkg - Benjamin2037 - D3Hunter diff --git a/WORKSPACE b/WORKSPACE index fd1ef1fedb502..f0eaf4460c355 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -16,12 +16,12 @@ versions.check(minimum_bazel_version = "6.0.0") http_archive( name = "io_bazel_rules_go", - sha256 = "eff2811014f8b26d91fadda335000cbfce145674368bcd732fbf782adb53a778", - strip_prefix = "rules_go-df20c987afcbbc721518c79f9c6489d87d73582c", + sha256 = "d6ab6b57e48c09523e93050f13698f708428cfd5e619252e369d377af6597707", urls = [ - "http://bazel-cache.pingcap.net:8080/bazelbuild/rules_go/archive/df20c987afcbbc721518c79f9c6489d87d73582c.zip", - "http://ats.apps.svc/bazelbuild/rules_go/archive/df20c987afcbbc721518c79f9c6489d87d73582c.zip", - "https://github.com/bazelbuild/rules_go/archive/df20c987afcbbc721518c79f9c6489d87d73582c.zip", + "http://bazel-cache.pingcap.net:8080/bazelbuild/rules_go/releases/download/v0.43.0/rules_go-v0.43.0.zip", + "http://ats.apps.svc/bazelbuild/rules_go/releases/download/v0.43.0/rules_go-v0.43.0.zip", + "https://github.com/bazelbuild/rules_go/releases/download/v0.43.0/rules_go-v0.43.0.zip", + "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.43.0/rules_go-v0.43.0.zip", ], ) diff --git a/pkg/executor/internal/testkit.go b/br/cmd/br/fips.go similarity index 57% rename from pkg/executor/internal/testkit.go rename to br/cmd/br/fips.go index 96c1ecdbfa8bc..6d5e181a04022 100644 --- a/pkg/executor/internal/testkit.go +++ b/br/cmd/br/fips.go @@ -12,20 +12,17 @@ // See the License for the specific language governing permissions and // limitations under the License. -package internal +//go:build boringcrypto +// +build boringcrypto + +package main import ( - "fmt" + _ "crypto/tls/fipsonly" - "github.com/pingcap/tidb/pkg/testkit" + "github.com/pingcap/tidb/br/pkg/version/build" ) -// FillData fill data into table -func FillData(tk *testkit.TestKit, table string) { - tk.MustExec("use test") - tk.MustExec(fmt.Sprintf("create table %s(id int not null default 1, name varchar(255), PRIMARY KEY(id));", table)) - - // insert data - tk.MustExec(fmt.Sprintf("insert INTO %s VALUES (1, \"hello\");", table)) - tk.MustExec(fmt.Sprintf("insert into %s values (2, \"hello\");", table)) +func init() { + build.ReleaseVersion += "-fips" } diff --git a/br/cmd/tidb-lightning-ctl/fips.go b/br/cmd/tidb-lightning-ctl/fips.go new file mode 100644 index 0000000000000..6d5e181a04022 --- /dev/null +++ b/br/cmd/tidb-lightning-ctl/fips.go @@ -0,0 +1,28 @@ +// Copyright 2023 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build boringcrypto +// +build boringcrypto + +package main + +import ( + _ "crypto/tls/fipsonly" + + "github.com/pingcap/tidb/br/pkg/version/build" +) + +func init() { + build.ReleaseVersion += "-fips" +} diff --git a/br/cmd/tidb-lightning/fips.go b/br/cmd/tidb-lightning/fips.go new file mode 100644 index 0000000000000..6d5e181a04022 --- /dev/null +++ b/br/cmd/tidb-lightning/fips.go @@ -0,0 +1,28 @@ +// Copyright 2023 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build boringcrypto +// +build boringcrypto + +package main + +import ( + _ "crypto/tls/fipsonly" + + "github.com/pingcap/tidb/br/pkg/version/build" +) + +func init() { + build.ReleaseVersion += "-fips" +} diff --git a/br/pkg/aws/BUILD.bazel b/br/pkg/aws/BUILD.bazel index 2b70183655569..3290cdb864759 100644 --- a/br/pkg/aws/BUILD.bazel +++ b/br/pkg/aws/BUILD.bazel @@ -12,6 +12,7 @@ go_library( "@com_github_aws_aws_sdk_go//aws", "@com_github_aws_aws_sdk_go//aws/awserr", "@com_github_aws_aws_sdk_go//aws/session", + "@com_github_aws_aws_sdk_go//service/cloudwatch", "@com_github_aws_aws_sdk_go//service/ec2", "@com_github_aws_aws_sdk_go//service/ec2/ec2iface", "@com_github_pingcap_errors//:errors", diff --git a/br/pkg/aws/ebs.go b/br/pkg/aws/ebs.go index b53248cb41c01..18f4f5b484a1b 100644 --- a/br/pkg/aws/ebs.go +++ b/br/pkg/aws/ebs.go @@ -12,6 +12,7 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/awserr" "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go/service/cloudwatch" "github.com/aws/aws-sdk-go/service/ec2" "github.com/aws/aws-sdk-go/service/ec2/ec2iface" "github.com/pingcap/errors" @@ -31,7 +32,8 @@ const ( ) type EC2Session struct { - ec2 ec2iface.EC2API + ec2 ec2iface.EC2API + cloudwatchClient *cloudwatch.CloudWatch // aws operation concurrency concurrency uint } @@ -51,7 +53,8 @@ func NewEC2Session(concurrency uint, region string) (*EC2Session, error) { return nil, errors.Trace(err) } ec2Session := ec2.New(sess) - return &EC2Session{ec2: ec2Session, concurrency: concurrency}, nil + cloudwatchClient := cloudwatch.New(sess) + return &EC2Session{ec2: ec2Session, cloudwatchClient: cloudwatchClient, concurrency: concurrency}, nil } // CreateSnapshots is the mainly steps to control the data volume snapshots. @@ -324,8 +327,63 @@ func (e *EC2Session) EnableDataFSR(meta *config.EBSBasedBRMeta, targetAZ string) return snapshotsIDsMap, eg.Wait() } -// waitDataFSREnabled waits FSR for data volume snapshots are all enabled +// waitDataFSREnabled waits FSR for data volume snapshots are all enabled and also have enough credit balance func (e *EC2Session) waitDataFSREnabled(snapShotIDs []*string, targetAZ string) error { + // Record current time + start := time.Now() + + // get the maximum size of volumes, in GiB + var maxVolumeSize int64 = 0 + resp, err := e.ec2.DescribeSnapshots(&ec2.DescribeSnapshotsInput{SnapshotIds: snapShotIDs}) + if err != nil { + return errors.Trace(err) + } + if len(resp.Snapshots) <= 0 { + return errors.Errorf("specified snapshot [%s] is not found", *snapShotIDs[0]) + } + + for _, s := range resp.Snapshots { + if *s.VolumeSize > maxVolumeSize { + maxVolumeSize = *s.VolumeSize + } + } + + // Calculate the time in minutes to fill 1.0 credit according to + // https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-fast-snapshot-restore.html#volume-creation-credits + // 5 minutes more is just for safe + fillElapsedTime := 60.0/(min(10, 1024.0/(float64)(maxVolumeSize))) + 5 + + // We have to sleep for at least fillElapsedTime minutes in order to make credits are filled to 1.0 + // Let's heartbeat every 5 minutes + for time.Since(start) <= time.Duration(fillElapsedTime)*time.Minute { + log.Info("FSR enablement is ongoing, going to sleep for 5 minutes...") + time.Sleep(5 * time.Minute) + } + + // Wait that all snapshot has enough fsr credit balance, it's very likely true since we have wait for long enough + log.Info("Start check and wait all snapshots have enough fsr credit balance") + + startIdx := 0 + retryCount := 0 + for startIdx < len(snapShotIDs) { + creditBalance, _ := e.getFSRCreditBalance(snapShotIDs[startIdx], targetAZ) + if creditBalance != nil && *creditBalance >= 1.0 { + startIdx++ + retryCount = 0 + } else { + if creditBalance == nil { + // For invalid calling, retry 3 times + if retryCount >= 3 { + return errors.Errorf("cloudwatch metrics for %s operation failed after retrying", *snapShotIDs[startIdx]) + } + retryCount++ + } + // Retry for both invalid calling and not enough fsr credit + // Cloudwatch by default flushes every 5 seconds. So, 20 seconds wait should be enough + time.Sleep(20 * time.Second) + } + } + // Create a map to store the strings as keys pendingSnapshots := make(map[string]struct{}) @@ -378,6 +436,51 @@ func (e *EC2Session) waitDataFSREnabled(snapShotIDs []*string, targetAZ string) } } +// getFSRCreditBalance is used to get maximum fsr credit balance of snapshot for last 5 minutes +func (e *EC2Session) getFSRCreditBalance(snapshotID *string, targetAZ string) (*float64, error) { + // Set the time range to query for metrics + startTime := time.Now().Add(-5 * time.Minute) + endTime := time.Now() + + // Prepare the input for the GetMetricStatisticsWithContext API call + input := &cloudwatch.GetMetricStatisticsInput{ + StartTime: aws.Time(startTime), + EndTime: aws.Time(endTime), + Namespace: aws.String("AWS/EBS"), + MetricName: aws.String("FastSnapshotRestoreCreditsBalance"), + Dimensions: []*cloudwatch.Dimension{ + { + Name: aws.String("SnapshotId"), + Value: snapshotID, + }, + { + Name: aws.String("AvailabilityZone"), + Value: aws.String(targetAZ), + }, + }, + Period: aws.Int64(300), + Statistics: []*string{aws.String("Maximum")}, + } + + log.Info("metrics input", zap.Any("input", input)) + + // Call cloudwatchClient API to retrieve the FastSnapshotRestoreCreditsBalance metric data + resp, err := e.cloudwatchClient.GetMetricStatisticsWithContext(context.Background(), input) + if err != nil { + log.Error("GetMetricStatisticsWithContext failed", zap.Error(err)) + return nil, errors.Trace(err) + } + + // parse the response + if len(resp.Datapoints) == 0 { + log.Warn("No result for metric FastSnapshotRestoreCreditsBalance returned", zap.Stringp("snapshot", snapshotID)) + return nil, nil + } + result := resp.Datapoints[0] + log.Info("credit balance", zap.Stringp("snapshot", snapshotID), zap.Float64p("credit", result.Maximum)) + return result.Maximum, nil +} + // DisableDataFSR disables FSR for data volume snapshots func (e *EC2Session) DisableDataFSR(snapshotsIDsMap map[string][]*string) error { if len(snapshotsIDsMap) == 0 { @@ -447,7 +550,7 @@ func fetchTargetSnapshots(meta *config.EBSBasedBRMeta, specifiedAZ string) map[s // CreateVolumes create volumes from snapshots // if err happens in the middle, return half-done result // returned map: store id -> old volume id -> new volume id -func (e *EC2Session) CreateVolumes(meta *config.EBSBasedBRMeta, volumeType string, iops, throughput int64, targetAZ string) (map[string]string, error) { +func (e *EC2Session) CreateVolumes(meta *config.EBSBasedBRMeta, volumeType string, iops, throughput int64, encrypted bool, targetAZ string) (map[string]string, error) { template := ec2.CreateVolumeInput{ VolumeType: &volumeType, } @@ -457,6 +560,7 @@ func (e *EC2Session) CreateVolumes(meta *config.EBSBasedBRMeta, volumeType strin if throughput > 0 { template.SetThroughput(throughput) } + template.Encrypted = &encrypted newVolumeIDMap := make(map[string]string) var mutex sync.Mutex @@ -528,7 +632,7 @@ func (e *EC2Session) CreateVolumes(meta *config.EBSBasedBRMeta, volumeType strin return newVolumeIDMap, eg.Wait() } -func (e *EC2Session) WaitVolumesCreated(volumeIDMap map[string]string, progress glue.Progress) (int64, error) { +func (e *EC2Session) WaitVolumesCreated(volumeIDMap map[string]string, progress glue.Progress, fsrEnabledRequired bool) (int64, error) { pendingVolumes := make([]*string, 0, len(volumeIDMap)) for oldVolID := range volumeIDMap { newVolumeID := volumeIDMap[oldVolID] @@ -548,7 +652,11 @@ func (e *EC2Session) WaitVolumesCreated(volumeIDMap map[string]string, progress return 0, errors.Trace(err) } - createdVolumeSize, unfinishedVolumes := e.HandleDescribeVolumesResponse(resp) + createdVolumeSize, unfinishedVolumes, err := e.HandleDescribeVolumesResponse(resp, fsrEnabledRequired) + if err != nil { + return 0, errors.Trace(err) + } + progress.IncBy(int64(len(pendingVolumes) - len(unfinishedVolumes))) totalVolumeSize += createdVolumeSize pendingVolumes = unfinishedVolumes @@ -591,12 +699,16 @@ func ec2Tag(key, val string) *ec2.Tag { return &ec2.Tag{Key: &key, Value: &val} } -func (e *EC2Session) HandleDescribeVolumesResponse(resp *ec2.DescribeVolumesOutput) (int64, []*string) { +func (e *EC2Session) HandleDescribeVolumesResponse(resp *ec2.DescribeVolumesOutput, fsrEnabledRequired bool) (int64, []*string, error) { totalVolumeSize := int64(0) var unfinishedVolumes []*string for _, volume := range resp.Volumes { if *volume.State == ec2.VolumeStateAvailable { + if fsrEnabledRequired && volume.FastRestored != nil && !*volume.FastRestored { + log.Error("snapshot fsr is not enabled for the volume", zap.String("volume", *volume.SnapshotId)) + return 0, nil, errors.Errorf("Snapshot [%s] of volume [%s] is not fsr enabled", *volume.SnapshotId, *volume.VolumeId) + } log.Info("volume is available", zap.String("id", *volume.VolumeId)) totalVolumeSize += *volume.Size } else { @@ -605,5 +717,5 @@ func (e *EC2Session) HandleDescribeVolumesResponse(resp *ec2.DescribeVolumesOutp } } - return totalVolumeSize, unfinishedVolumes + return totalVolumeSize, unfinishedVolumes, nil } diff --git a/br/pkg/aws/ebs_test.go b/br/pkg/aws/ebs_test.go index d7f3be2a4a4a1..e55ea68c86e04 100644 --- a/br/pkg/aws/ebs_test.go +++ b/br/pkg/aws/ebs_test.go @@ -72,7 +72,7 @@ func TestHandleDescribeVolumesResponse(t *testing.T) { } e := &EC2Session{} - createdVolumeSize, unfinishedVolumes := e.HandleDescribeVolumesResponse(curentVolumesStates) + createdVolumeSize, unfinishedVolumes, _ := e.HandleDescribeVolumesResponse(curentVolumesStates, false) require.Equal(t, int64(4), createdVolumeSize) require.Equal(t, 1, len(unfinishedVolumes)) } diff --git a/br/pkg/backup/client_test.go b/br/pkg/backup/client_test.go index ec97584c139cd..53f0fa7c37ae0 100644 --- a/br/pkg/backup/client_test.go +++ b/br/pkg/backup/client_test.go @@ -176,9 +176,9 @@ func TestBuildTableRangeCommonHandle(t *testing.T) { ids []int64 trs []kv.KeyRange } - low, err_l := codec.EncodeKey(nil, nil, []types.Datum{types.MinNotNullDatum()}...) + low, err_l := codec.EncodeKey(time.UTC, nil, []types.Datum{types.MinNotNullDatum()}...) require.NoError(t, err_l) - high, err_h := codec.EncodeKey(nil, nil, []types.Datum{types.MaxValueDatum()}...) + high, err_h := codec.EncodeKey(time.UTC, nil, []types.Datum{types.MaxValueDatum()}...) require.NoError(t, err_h) high = kv.Key(high).PrefixNext() cases := []Case{ diff --git a/br/pkg/gluetidb/BUILD.bazel b/br/pkg/gluetidb/BUILD.bazel index 979f05b4e5b48..6ff71aa916e86 100644 --- a/br/pkg/gluetidb/BUILD.bazel +++ b/br/pkg/gluetidb/BUILD.bazel @@ -18,6 +18,7 @@ go_library( "//pkg/parser/model", "//pkg/parser/mysql", "//pkg/session", + "//pkg/session/types", "//pkg/sessionctx", "@com_github_pingcap_errors//:errors", "@com_github_pingcap_log//:log", diff --git a/br/pkg/gluetidb/glue.go b/br/pkg/gluetidb/glue.go index da42b1b1d9b71..c618281b4b2b3 100644 --- a/br/pkg/gluetidb/glue.go +++ b/br/pkg/gluetidb/glue.go @@ -22,6 +22,7 @@ import ( "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/session" + sessiontypes "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/sessionctx" pd "github.com/tikv/pd/client" "go.uber.org/zap" @@ -58,7 +59,7 @@ type Glue struct { } type tidbSession struct { - se session.Session + se sessiontypes.Session } // GetDomain implements glue.Glue. @@ -358,7 +359,7 @@ func (gs *tidbSession) showCreatePlacementPolicy(policy *model.PolicyInfo) strin // mockSession is used for test. type mockSession struct { - se session.Session + se sessiontypes.Session globalVars map[string]string } @@ -434,11 +435,11 @@ func (s *mockSession) GetGlobalVariable(name string) (string, error) { // MockGlue only used for test type MockGlue struct { - se session.Session + se sessiontypes.Session GlobalVars map[string]string } -func (m *MockGlue) SetSession(se session.Session) { +func (m *MockGlue) SetSession(se sessiontypes.Session) { m.se = se } diff --git a/br/pkg/lightning/backend/external/BUILD.bazel b/br/pkg/lightning/backend/external/BUILD.bazel index 9657aa404099e..7761221e3add8 100644 --- a/br/pkg/lightning/backend/external/BUILD.bazel +++ b/br/pkg/lightning/backend/external/BUILD.bazel @@ -9,9 +9,9 @@ go_library( "engine.go", "file.go", "iter.go", - "kv_buf.go", "kv_reader.go", "merge.go", + "onefile_writer.go", "split.go", "stat_reader.go", "util.go", @@ -50,21 +50,22 @@ go_test( name = "external_test", timeout = "short", srcs = [ + "bench_test.go", "byte_reader_test.go", "codec_test.go", "concurrent_reader_test.go", "engine_test.go", "file_test.go", "iter_test.go", - "kv_buf_test.go", "merge_test.go", + "onefile_writer_test.go", "split_test.go", "util_test.go", "writer_test.go", ], embed = [":external"], flaky = True, - shard_count = 44, + shard_count = 47, deps = [ "//br/pkg/lightning/backend/kv", "//br/pkg/lightning/common", @@ -72,6 +73,7 @@ go_test( "//br/pkg/storage", "//pkg/kv", "//pkg/util/codec", + "//pkg/util/intest", "//pkg/util/logutil", "//pkg/util/size", "@com_github_aws_aws_sdk_go//aws", @@ -87,6 +89,7 @@ go_test( "@com_github_pingcap_kvproto//pkg/brpb", "@com_github_stretchr_testify//require", "@org_golang_x_exp//rand", + "@org_golang_x_sync//errgroup", "@org_uber_go_atomic//:atomic", ], ) diff --git a/br/pkg/lightning/backend/external/bench_test.go b/br/pkg/lightning/backend/external/bench_test.go new file mode 100644 index 0000000000000..26e3dbd2e7d6c --- /dev/null +++ b/br/pkg/lightning/backend/external/bench_test.go @@ -0,0 +1,465 @@ +// Copyright 2023 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 external + +import ( + "context" + "flag" + "fmt" + "io" + "os" + "runtime/pprof" + "sync" + "testing" + "time" + + "github.com/pingcap/tidb/br/pkg/storage" + "github.com/pingcap/tidb/pkg/kv" + "github.com/pingcap/tidb/pkg/util/intest" + "golang.org/x/sync/errgroup" +) + +var testingStorageURI = flag.String("testing-storage-uri", "", "the URI of the storage used for testing") + +func openTestingStorage(t *testing.T) storage.ExternalStorage { + if *testingStorageURI == "" { + t.Skip("testingStorageURI is not set") + } + s, err := storage.NewFromURL(context.Background(), *testingStorageURI, nil) + intest.AssertNoError(err) + return s +} + +type kvSource interface { + next() (key, value []byte, handle kv.Handle) + outputSize() int +} + +type ascendingKeySource struct { + keySize, valueSize int + count int + kvChan chan [2][]byte + curKey []byte + totalSize int +} + +func newAscendingKeySource(keySize, valueSize, count int) *ascendingKeySource { + s := &ascendingKeySource{keySize: keySize, valueSize: valueSize, count: count} + s.curKey = make([]byte, keySize) + s.kvChan = make(chan [2][]byte, 100) + s.run() + return s +} + +func (s *ascendingKeySource) run() { + go func() { + defer close(s.kvChan) + for i := 0; i < s.count; i++ { + for j := len(s.curKey) - 1; j >= 0; j-- { + s.curKey[j]++ + if s.curKey[j] != 0 { + break + } + } + key := make([]byte, s.keySize) + copy(key, s.curKey) + value := make([]byte, s.valueSize) + s.kvChan <- [2][]byte{key, value} + s.totalSize += len(key) + len(value) + } + }() +} + +func (s *ascendingKeySource) next() (key, value []byte, handle kv.Handle) { + pair, ok := <-s.kvChan + if !ok { + return nil, nil, nil + } + return pair[0], pair[1], nil +} + +func (s *ascendingKeySource) outputSize() int { + return s.totalSize +} + +type writeTestSuite struct { + store storage.ExternalStorage + source kvSource + memoryLimit int + beforeCreateWriter func() + beforeWriterClose func() + afterWriterClose func() +} + +func writePlainFile(s *writeTestSuite) { + ctx := context.Background() + buf := make([]byte, s.memoryLimit) + offset := 0 + flush := func(w storage.ExternalFileWriter) { + n, err := w.Write(ctx, buf[:offset]) + intest.AssertNoError(err) + intest.Assert(offset == n) + offset = 0 + } + + if s.beforeCreateWriter != nil { + s.beforeCreateWriter() + } + writer, err := s.store.Create(ctx, "test/plain_file", nil) + intest.AssertNoError(err) + key, val, _ := s.source.next() + for key != nil { + if offset+len(key)+len(val) > len(buf) { + flush(writer) + } + offset += copy(buf[offset:], key) + offset += copy(buf[offset:], val) + key, val, _ = s.source.next() + } + flush(writer) + if s.beforeWriterClose != nil { + s.beforeWriterClose() + } + err = writer.Close(ctx) + intest.AssertNoError(err) + if s.afterWriterClose != nil { + s.afterWriterClose() + } +} + +func writeExternalFile(s *writeTestSuite) { + ctx := context.Background() + builder := NewWriterBuilder(). + SetMemorySizeLimit(uint64(s.memoryLimit)) + + if s.beforeCreateWriter != nil { + s.beforeCreateWriter() + } + writer := builder.Build(s.store, "test/external", "writerID") + key, val, h := s.source.next() + for key != nil { + err := writer.WriteRow(ctx, key, val, h) + intest.AssertNoError(err) + key, val, h = s.source.next() + } + if s.beforeWriterClose != nil { + s.beforeWriterClose() + } + err := writer.Close(ctx) + intest.AssertNoError(err) + if s.afterWriterClose != nil { + s.afterWriterClose() + } +} + +func writeExternalOneFile(s *writeTestSuite) { + ctx := context.Background() + builder := NewWriterBuilder(). + SetMemorySizeLimit(uint64(s.memoryLimit)) + + if s.beforeCreateWriter != nil { + s.beforeCreateWriter() + } + writer := builder.BuildOneFile( + s.store, "test/external", "writerID") + _ = writer.Init(ctx, 20*1024*1024) + key, val, _ := s.source.next() + for key != nil { + err := writer.WriteRow(ctx, key, val) + intest.AssertNoError(err) + key, val, _ = s.source.next() + } + if s.beforeWriterClose != nil { + s.beforeWriterClose() + } + err := writer.Close(ctx) + intest.AssertNoError(err) + if s.afterWriterClose != nil { + s.afterWriterClose() + } +} + +func TestCompareWriter(t *testing.T) { + store := openTestingStorage(t) + sourceKVNum := 10000000 + source := newAscendingKeySource(20, 100, sourceKVNum) + memoryLimit := 64 * 1024 * 1024 + fileIdx := 0 + var ( + now time.Time + elapsed time.Duration + file *os.File + err error + ) + beforeTest := func() { + fileIdx++ + file, err = os.Create(fmt.Sprintf("cpu-profile-%d.prof", fileIdx)) + intest.AssertNoError(err) + err = pprof.StartCPUProfile(file) + intest.AssertNoError(err) + now = time.Now() + } + beforeClose := func() { + file, err = os.Create(fmt.Sprintf("heap-profile-%d.prof", fileIdx)) + intest.AssertNoError(err) + // check heap profile to see the memory usage is expected + err = pprof.WriteHeapProfile(file) + intest.AssertNoError(err) + } + afterClose := func() { + elapsed = time.Since(now) + pprof.StopCPUProfile() + } + + suite := &writeTestSuite{ + store: store, + source: source, + memoryLimit: memoryLimit, + beforeCreateWriter: beforeTest, + beforeWriterClose: beforeClose, + afterWriterClose: afterClose, + } + + writePlainFile(suite) + baseSpeed := float64(source.outputSize()) / elapsed.Seconds() / 1024 / 1024 + t.Logf("base speed for %d bytes: %.2f MB/s", source.outputSize(), baseSpeed) + + suite.source = newAscendingKeySource(20, 100, sourceKVNum) + writeExternalFile(suite) + writerSpeed := float64(source.outputSize()) / elapsed.Seconds() / 1024 / 1024 + t.Logf("writer speed for %d bytes: %.2f MB/s", source.outputSize(), writerSpeed) + + suite.source = newAscendingKeySource(20, 100, sourceKVNum) + writeExternalOneFile(suite) + writerSpeed = float64(source.outputSize()) / elapsed.Seconds() / 1024 / 1024 + t.Logf("one file writer speed for %d bytes: %.2f MB/s", source.outputSize(), writerSpeed) +} + +type readTestSuite struct { + store storage.ExternalStorage + totalKVCnt int + concurrency int + memoryLimit int + beforeCreateReader func() + beforeReaderClose func() + afterReaderClose func() +} + +func readFileSequential(s *readTestSuite) { + ctx := context.Background() + files, _, err := GetAllFileNames(ctx, s.store, "/evenly_distributed") + intest.AssertNoError(err) + + buf := make([]byte, s.memoryLimit) + if s.beforeCreateReader != nil { + s.beforeCreateReader() + } + for i, file := range files { + reader, err := s.store.Open(ctx, file, nil) + intest.AssertNoError(err) + _, err = reader.Read(buf) + for err == nil { + _, err = reader.Read(buf) + } + intest.Assert(err == io.EOF) + if i == len(files)-1 { + if s.beforeReaderClose != nil { + s.beforeReaderClose() + } + } + err = reader.Close() + intest.AssertNoError(err) + } + if s.afterReaderClose != nil { + s.afterReaderClose() + } +} + +func readFileConcurrently(s *readTestSuite) { + ctx := context.Background() + files, _, err := GetAllFileNames(ctx, s.store, "/evenly_distributed") + intest.AssertNoError(err) + + conc := min(s.concurrency, len(files)) + var eg errgroup.Group + eg.SetLimit(conc) + var once sync.Once + + if s.beforeCreateReader != nil { + s.beforeCreateReader() + } + for _, file := range files { + eg.Go(func() error { + buf := make([]byte, s.memoryLimit/conc) + reader, err := s.store.Open(ctx, file, nil) + intest.AssertNoError(err) + _, err = reader.Read(buf) + for err == nil { + _, err = reader.Read(buf) + } + intest.Assert(err == io.EOF) + once.Do(func() { + if s.beforeReaderClose != nil { + s.beforeReaderClose() + } + }) + err = reader.Close() + intest.AssertNoError(err) + return nil + }) + } + err = eg.Wait() + intest.AssertNoError(err) + if s.afterReaderClose != nil { + s.afterReaderClose() + } +} + +func createEvenlyDistributedFiles( + t *testing.T, + fileSize, fileCount int, +) (storage.ExternalStorage, int) { + store := openTestingStorage(t) + ctx := context.Background() + + files, statFiles, err := GetAllFileNames(ctx, store, "/evenly_distributed") + intest.AssertNoError(err) + err = store.DeleteFiles(ctx, files) + intest.AssertNoError(err) + err = store.DeleteFiles(ctx, statFiles) + intest.AssertNoError(err) + + value := make([]byte, 100) + kvCnt := 0 + for i := 0; i < fileCount; i++ { + builder := NewWriterBuilder(). + SetBlockSize(10 * 1024 * 1024). + SetMemorySizeLimit(uint64(float64(fileSize) * 1.1)) + writer := builder.Build( + store, + "/evenly_distributed", + fmt.Sprintf("%d", i), + ) + + keyIdx := i + totalSize := 0 + for totalSize < fileSize { + key := fmt.Sprintf("key_%09d", keyIdx) + err := writer.WriteRow(ctx, []byte(key), value, nil) + intest.AssertNoError(err) + keyIdx += fileCount + totalSize += len(key) + len(value) + kvCnt++ + } + err := writer.Close(ctx) + intest.AssertNoError(err) + } + return store, kvCnt +} + +func readMergeIter(s *readTestSuite) { + ctx := context.Background() + files, _, err := GetAllFileNames(ctx, s.store, "/evenly_distributed") + intest.AssertNoError(err) + + if s.beforeCreateReader != nil { + s.beforeCreateReader() + } + + readBufSize := s.memoryLimit / len(files) + zeroOffsets := make([]uint64, len(files)) + iter, err := NewMergeKVIter(ctx, files, zeroOffsets, s.store, readBufSize, false) + intest.AssertNoError(err) + + kvCnt := 0 + for iter.Next() { + kvCnt++ + if kvCnt == s.totalKVCnt/2 { + if s.beforeReaderClose != nil { + s.beforeReaderClose() + } + } + } + intest.Assert(kvCnt == s.totalKVCnt) + err = iter.Close() + intest.AssertNoError(err) + if s.afterReaderClose != nil { + s.afterReaderClose() + } +} + +func TestCompareReader(t *testing.T) { + fileSize := 50 * 1024 * 1024 + fileCnt := 24 + store, kvCnt := createEvenlyDistributedFiles(t, fileSize, fileCnt) + memoryLimit := 64 * 1024 * 1024 + fileIdx := 0 + var ( + now time.Time + elapsed time.Duration + file *os.File + err error + ) + beforeTest := func() { + fileIdx++ + file, err = os.Create(fmt.Sprintf("cpu-profile-%d.prof", fileIdx)) + intest.AssertNoError(err) + err = pprof.StartCPUProfile(file) + intest.AssertNoError(err) + now = time.Now() + } + beforeClose := func() { + file, err = os.Create(fmt.Sprintf("heap-profile-%d.prof", fileIdx)) + intest.AssertNoError(err) + // check heap profile to see the memory usage is expected + err = pprof.WriteHeapProfile(file) + intest.AssertNoError(err) + } + afterClose := func() { + elapsed = time.Since(now) + pprof.StopCPUProfile() + } + + suite := &readTestSuite{ + store: store, + totalKVCnt: kvCnt, + concurrency: 100, + memoryLimit: memoryLimit, + beforeCreateReader: beforeTest, + beforeReaderClose: beforeClose, + afterReaderClose: afterClose, + } + + readMergeIter(suite) + t.Logf( + "merge iter read speed for %d bytes: %.2f MB/s", + fileSize*fileCnt, + float64(fileSize*fileCnt)/elapsed.Seconds()/1024/1024, + ) + + readFileSequential(suite) + t.Logf( + "sequential read speed for %d bytes: %.2f MB/s", + fileSize*fileCnt, + float64(fileSize*fileCnt)/elapsed.Seconds()/1024/1024, + ) + + readFileConcurrently(suite) + t.Logf( + "concurrent read speed for %d bytes: %.2f MB/s", + fileSize*fileCnt, + float64(fileSize*fileCnt)/elapsed.Seconds()/1024/1024, + ) +} diff --git a/br/pkg/lightning/backend/external/byte_reader.go b/br/pkg/lightning/backend/external/byte_reader.go index bed2661f50764..ce87741640f55 100644 --- a/br/pkg/lightning/backend/external/byte_reader.go +++ b/br/pkg/lightning/backend/external/byte_reader.go @@ -18,16 +18,18 @@ import ( "context" "io" + "github.com/pingcap/errors" "github.com/pingcap/tidb/br/pkg/membuf" "github.com/pingcap/tidb/br/pkg/storage" "github.com/pingcap/tidb/pkg/util/logutil" + "github.com/pingcap/tidb/pkg/util/size" "go.uber.org/zap" ) var ( // ConcurrentReaderBufferSizePerConc is the buffer size for concurrent reader per // concurrency. - ConcurrentReaderBufferSizePerConc = 4 * 1024 * 1024 + ConcurrentReaderBufferSizePerConc = int(4 * size.MB) // ConcurrentReaderConcurrency is the concurrency for concurrent reader. ConcurrentReaderConcurrency = 8 ) @@ -44,8 +46,6 @@ type byteReader struct { curBufOffset int smallBuf []byte - retPointers []*[]byte - concurrentReader struct { largeBufferPool *membuf.Buffer store storage.ExternalStorage @@ -68,8 +68,9 @@ func openStoreReaderAndSeek( store storage.ExternalStorage, name string, initFileOffset uint64, + prefetchSize int, ) (storage.ExternalFileReader, error) { - storageReader, err := store.Open(ctx, name, nil) + storageReader, err := store.Open(ctx, name, &storage.ReaderOption{PrefetchSize: prefetchSize}) if err != nil { return nil, err } @@ -192,24 +193,23 @@ func (r *byteReader) switchToConcurrentReader() error { return nil } -// readNBytes reads the next n bytes from the reader and returns a buffer slice containing those bytes. -// The returned slice (pointer) can not be used after r.reset. In the same interval of r.reset, -// byteReader guarantees that the returned slice (pointer) will point to the same content -// though the slice may be changed. -func (r *byteReader) readNBytes(n int) (*[]byte, error) { +// readNBytes reads the next n bytes from the reader and returns a buffer slice +// containing those bytes. The content of returned slice may be changed after +// next call. +func (r *byteReader) readNBytes(n int) ([]byte, error) { b := r.next(n) readLen := len(b) if readLen == n { - ret := &b - r.retPointers = append(r.retPointers, ret) - return ret, nil + return b, nil } // If the reader has fewer than n bytes remaining in current buffer, // `auxBuf` is used as a container instead. + if n > int(size.GB) { + return nil, errors.Errorf("read %d bytes from external storage, exceed max limit %d", n, size.GB) + } auxBuf := make([]byte, n) copy(auxBuf, b) for readLen < n { - r.cloneSlices() err := r.reload() switch err { case nil: @@ -225,24 +225,7 @@ func (r *byteReader) readNBytes(n int) (*[]byte, error) { copy(auxBuf[readLen:], b) readLen += len(b) } - return &auxBuf, nil -} - -func (r *byteReader) reset() { - for i := range r.retPointers { - r.retPointers[i] = nil - } - r.retPointers = r.retPointers[:0] -} - -func (r *byteReader) cloneSlices() { - for i := range r.retPointers { - copied := make([]byte, len(*r.retPointers[i])) - copy(copied, *r.retPointers[i]) - *r.retPointers[i] = copied - r.retPointers[i] = nil - } - r.retPointers = r.retPointers[:0] + return auxBuf, nil } func (r *byteReader) next(n int) []byte { diff --git a/br/pkg/lightning/backend/external/byte_reader_test.go b/br/pkg/lightning/backend/external/byte_reader_test.go index 71d281ec13f3b..b5ef2457073a4 100644 --- a/br/pkg/lightning/backend/external/byte_reader_test.go +++ b/br/pkg/lightning/backend/external/byte_reader_test.go @@ -63,11 +63,6 @@ func (s *mockExtStore) GetFileSize() (int64, error) { } func TestByteReader(t *testing.T) { - testByteReaderNormal(t, false) - testByteReaderNormal(t, true) -} - -func testByteReaderNormal(t *testing.T, useConcurrency bool) { st, clean := NewS3WithBucketAndPrefix(t, "test", "testprefix") defer clean() @@ -96,9 +91,8 @@ func testByteReaderNormal(t *testing.T, useConcurrency bool) { // Test basic readNBytes() usage. br, err = newByteReader(context.Background(), newRsc(), 3) require.NoError(t, err) - y, err := br.readNBytes(2) + x, err = br.readNBytes(2) require.NoError(t, err) - x = *y require.Equal(t, 2, len(x)) require.Equal(t, byte('a'), x[0]) require.Equal(t, byte('b'), x[1]) @@ -106,9 +100,8 @@ func testByteReaderNormal(t *testing.T, useConcurrency bool) { br, err = newByteReader(context.Background(), newRsc(), 3) require.NoError(t, err) - y, err = br.readNBytes(5) // Read all the data. + x, err = br.readNBytes(5) // Read all the data. require.NoError(t, err) - x = *y require.Equal(t, 5, len(x)) require.Equal(t, byte('e'), x[4]) require.NoError(t, br.Close()) @@ -124,11 +117,10 @@ func testByteReaderNormal(t *testing.T, useConcurrency bool) { ms := &mockExtStore{src: []byte("abcdef")} br, err = newByteReader(context.Background(), ms, 2) require.NoError(t, err) - y, err = br.readNBytes(3) + x, err = br.readNBytes(3) require.NoError(t, err) // Pollute mockExtStore to verify if the slice is not affected. - copy(ms.src, []byte("xyz")) - x = *y + copy(ms.src, "xyz") require.Equal(t, 3, len(x)) require.Equal(t, byte('c'), x[2]) require.NoError(t, br.Close()) @@ -136,57 +128,12 @@ func testByteReaderNormal(t *testing.T, useConcurrency bool) { ms = &mockExtStore{src: []byte("abcdef")} br, err = newByteReader(context.Background(), ms, 2) require.NoError(t, err) - y, err = br.readNBytes(2) + x, err = br.readNBytes(2) require.NoError(t, err) // Pollute mockExtStore to verify if the slice is not affected. - copy(ms.src, []byte("xyz")) - x = *y + copy(ms.src, "xyz") require.Equal(t, 2, len(x)) require.Equal(t, byte('b'), x[1]) - br.reset() - require.NoError(t, br.Close()) -} - -func TestByteReaderClone(t *testing.T) { - ms := &mockExtStore{src: []byte("0123456789")} - br, err := newByteReader(context.Background(), ms, 4) - require.NoError(t, err) - y1, err := br.readNBytes(2) - require.NoError(t, err) - y2, err := br.readNBytes(1) - require.NoError(t, err) - x1, x2 := *y1, *y2 - require.Len(t, x1, 2) - require.Len(t, x2, 1) - require.Equal(t, byte('0'), x1[0]) - require.Equal(t, byte('2'), x2[0]) - require.NoError(t, br.reload()) // Perform a read to overwrite buffer. - x1, x2 = *y1, *y2 - require.Len(t, x1, 2) - require.Len(t, x2, 1) - require.Equal(t, byte('4'), x1[0]) // Verify if the buffer is overwritten. - require.Equal(t, byte('6'), x2[0]) - require.NoError(t, br.Close()) - - ms = &mockExtStore{src: []byte("0123456789")} - br, err = newByteReader(context.Background(), ms, 4) - require.NoError(t, err) - y1, err = br.readNBytes(2) - require.NoError(t, err) - y2, err = br.readNBytes(1) - require.NoError(t, err) - x1, x2 = *y1, *y2 - require.Len(t, x1, 2) - require.Len(t, x2, 1) - require.Equal(t, byte('0'), x1[0]) - require.Equal(t, byte('2'), x2[0]) - br.cloneSlices() - require.NoError(t, br.reload()) // Perform a read to overwrite buffer. - x1, x2 = *y1, *y2 - require.Len(t, x1, 2) - require.Len(t, x2, 1) - require.Equal(t, byte('0'), x1[0]) // Verify if the buffer is NOT overwritten. - require.Equal(t, byte('2'), x2[0]) require.NoError(t, br.Close()) } @@ -196,78 +143,17 @@ func TestByteReaderAuxBuf(t *testing.T) { require.NoError(t, err) y1, err := br.readNBytes(1) require.NoError(t, err) + require.Equal(t, []byte("0"), y1) y2, err := br.readNBytes(2) require.NoError(t, err) - require.Equal(t, []byte("0"), *y1) - require.Equal(t, []byte("12"), *y2) + require.Equal(t, []byte("12"), y2) y3, err := br.readNBytes(1) require.NoError(t, err) + require.Equal(t, []byte("3"), y3) y4, err := br.readNBytes(2) require.NoError(t, err) - require.Equal(t, []byte("3"), *y3) - require.Equal(t, []byte("45"), *y4) - require.Equal(t, []byte("0"), *y1) - require.Equal(t, []byte("12"), *y2) -} - -func TestReset(t *testing.T) { - testReset(t, false) - testReset(t, true) -} - -func testReset(t *testing.T, useConcurrency bool) { - st, clean := NewS3WithBucketAndPrefix(t, "test", "testprefix") - defer func() { - clean() - }() - - seed := time.Now().Unix() - rand.Seed(uint64(seed)) - t.Logf("seed: %d", seed) - src := make([]byte, 256) - for i := range src { - src[i] = byte(i) - } - // Prepare - err := st.WriteFile(context.Background(), "testfile", src) - require.NoError(t, err) - - newRsc := func() storage.ExternalFileReader { - rsc, err := st.Open(context.Background(), "testfile", nil) - require.NoError(t, err) - return rsc - } - bufSize := rand.Intn(256) - br, err := newByteReader(context.Background(), newRsc(), bufSize) - require.NoError(t, err) - end := 0 - toCheck := make([]*[]byte, 0, 10) - for end < len(src) { - n := rand.Intn(len(src) - end) - if n == 0 { - n = 1 - } - y, err := br.readNBytes(n) - require.NoError(t, err) - toCheck = append(toCheck, y) - end += n - - l := end - r := end - for i := len(toCheck) - 1; i >= 0; i-- { - l -= len(*toCheck[i]) - require.Equal(t, src[l:r], *toCheck[i]) - r = l - } - - if rand.Intn(2) == 0 { - br.reset() - toCheck = toCheck[:0] - } - } - _, err = br.readNBytes(1) - require.Equal(t, io.EOF, err) + require.Equal(t, []byte("45"), y4) } func TestUnexpectedEOF(t *testing.T) { @@ -366,7 +252,7 @@ func TestSwitchMode(t *testing.T) { break } require.NoError(t, err) - totalCnt += len(*y) + totalCnt += len(y) } require.Equal(t, fileSize, totalCnt) diff --git a/br/pkg/lightning/backend/external/engine.go b/br/pkg/lightning/backend/external/engine.go index 4bf5a5bd14d06..1b60434287b47 100644 --- a/br/pkg/lightning/backend/external/engine.go +++ b/br/pkg/lightning/backend/external/engine.go @@ -143,10 +143,10 @@ func split[T any](in []T, groupNum int) [][]T { func (e *Engine) getAdjustedConcurrency() int { if e.checkHotspot { - // estimate we will open at most 1000 files, so if e.dataFiles is small we can + // estimate we will open at most 8000 files, so if e.dataFiles is small we can // try to concurrently process ranges. adjusted := maxCloudStorageConnections / len(e.dataFiles) - return min(adjusted, 8) + return min(adjusted, 16) } adjusted := min(e.workerConcurrency, maxCloudStorageConnections/len(e.dataFiles)) return max(adjusted, 1) @@ -168,7 +168,8 @@ func (e *Engine) LoadIngestData( zap.Int("concurrency", concurrency), zap.Int("ranges", len(regionRanges)), zap.Int("range-groups", len(rangeGroups)), - zap.Int("data-files", len(e.dataFiles)), + zap.Int("num-data-files", len(e.dataFiles)), + zap.Int("num-stat-files", len(e.statsFiles)), zap.Bool("check-hotspot", e.checkHotspot), ) eg, egCtx := util.NewErrorGroupWithRecoverWithCtx(ctx) @@ -379,7 +380,22 @@ func (e *Engine) SplitRanges( } // Close implements common.Engine. -func (e *Engine) Close() error { return nil } +func (e *Engine) Close() error { + if e.bufPool != nil { + e.bufPool.Destroy() + e.bufPool = nil + } + return nil +} + +// Reset resets the memory buffer pool. +func (e *Engine) Reset() error { + if e.bufPool != nil { + e.bufPool.Destroy() + e.bufPool = membuf.NewPool() + } + return nil +} // MemoryIngestData is the in-memory implementation of IngestData. type MemoryIngestData struct { @@ -494,11 +510,15 @@ func (m *memoryDataIter) Error() error { return nil } +// ReleaseBuf implements ForwardIter. +func (m *memoryDataIter) ReleaseBuf() {} + type memoryDataDupDetectIter struct { iter *memoryDataIter dupDetector *common.DupDetector err error curKey, curVal []byte + buf *membuf.Buffer } // First implements ForwardIter. @@ -534,16 +554,17 @@ func (m *memoryDataDupDetectIter) Next() bool { // Key implements ForwardIter. func (m *memoryDataDupDetectIter) Key() []byte { - return m.curKey + return m.buf.AddBytes(m.curKey) } // Value implements ForwardIter. func (m *memoryDataDupDetectIter) Value() []byte { - return m.curVal + return m.buf.AddBytes(m.curVal) } // Close implements ForwardIter. func (m *memoryDataDupDetectIter) Close() error { + m.buf.Destroy() return m.dupDetector.Close() } @@ -552,8 +573,17 @@ func (m *memoryDataDupDetectIter) Error() error { return m.err } +// ReleaseBuf implements ForwardIter. +func (m *memoryDataDupDetectIter) ReleaseBuf() { + m.buf.Reset() +} + // NewIter implements IngestData.NewIter. -func (m *MemoryIngestData) NewIter(ctx context.Context, lowerBound, upperBound []byte) common.ForwardIter { +func (m *MemoryIngestData) NewIter( + ctx context.Context, + lowerBound, upperBound []byte, + bufPool *membuf.Pool, +) common.ForwardIter { firstKeyIdx, lastKeyIdx := m.firstAndLastKeyIndex(lowerBound, upperBound) iter := &memoryDataIter{ keys: m.keys, @@ -569,6 +599,7 @@ func (m *MemoryIngestData) NewIter(ctx context.Context, lowerBound, upperBound [ return &memoryDataDupDetectIter{ iter: iter, dupDetector: detector, + buf: bufPool.NewBuffer(), } } diff --git a/br/pkg/lightning/backend/external/engine_test.go b/br/pkg/lightning/backend/external/engine_test.go index 8592de4c5e21a..156b6807897bb 100644 --- a/br/pkg/lightning/backend/external/engine_test.go +++ b/br/pkg/lightning/backend/external/engine_test.go @@ -26,6 +26,7 @@ import ( "github.com/cockroachdb/pebble" "github.com/pingcap/tidb/br/pkg/lightning/common" + "github.com/pingcap/tidb/br/pkg/membuf" "github.com/pingcap/tidb/br/pkg/storage" "github.com/pingcap/tidb/pkg/util/codec" "github.com/stretchr/testify/require" @@ -131,20 +132,17 @@ func testNewIter( data common.IngestData, lowerBound, upperBound []byte, expectedKeys, expectedValues [][]byte, + bufPool *membuf.Pool, ) { ctx := context.Background() - iter := data.NewIter(ctx, lowerBound, upperBound) + iter := data.NewIter(ctx, lowerBound, upperBound, bufPool) var ( keys, values [][]byte ) for iter.First(); iter.Valid(); iter.Next() { require.NoError(t, iter.Error()) - key := make([]byte, len(iter.Key())) - copy(key, iter.Key()) - keys = append(keys, key) - value := make([]byte, len(iter.Value())) - copy(value, iter.Value()) - values = append(values, value) + keys = append(keys, iter.Key()) + values = append(values, iter.Value()) } require.NoError(t, iter.Error()) require.NoError(t, iter.Close()) @@ -203,13 +201,14 @@ func TestMemoryIngestData(t *testing.T) { testGetFirstAndLastKey(t, data, []byte("key0"), []byte("key1"), nil, nil) testGetFirstAndLastKey(t, data, []byte("key6"), []byte("key9"), nil, nil) - testNewIter(t, data, nil, nil, keys, values) - testNewIter(t, data, []byte("key1"), []byte("key6"), keys, values) - testNewIter(t, data, []byte("key2"), []byte("key5"), keys[1:4], values[1:4]) - testNewIter(t, data, []byte("key25"), []byte("key35"), keys[2:3], values[2:3]) - testNewIter(t, data, []byte("key25"), []byte("key26"), nil, nil) - testNewIter(t, data, []byte("key0"), []byte("key1"), nil, nil) - testNewIter(t, data, []byte("key6"), []byte("key9"), nil, nil) + // MemoryIngestData without duplicate detection feature does not need pool + testNewIter(t, data, nil, nil, keys, values, nil) + testNewIter(t, data, []byte("key1"), []byte("key6"), keys, values, nil) + testNewIter(t, data, []byte("key2"), []byte("key5"), keys[1:4], values[1:4], nil) + testNewIter(t, data, []byte("key25"), []byte("key35"), keys[2:3], values[2:3], nil) + testNewIter(t, data, []byte("key25"), []byte("key26"), nil, nil, nil) + testNewIter(t, data, []byte("key0"), []byte("key1"), nil, nil, nil) + testNewIter(t, data, []byte("key6"), []byte("key9"), nil, nil, nil) dir := t.TempDir() db, err := pebble.Open(path.Join(dir, "duplicate"), nil) @@ -261,21 +260,23 @@ func TestMemoryIngestData(t *testing.T) { testGetFirstAndLastKey(t, data, []byte("key0"), []byte("key1"), nil, nil) testGetFirstAndLastKey(t, data, []byte("key6"), []byte("key9"), nil, nil) - testNewIter(t, data, nil, nil, keys, values) + pool := membuf.NewPool() + defer pool.Destroy() + testNewIter(t, data, nil, nil, keys, values, pool) checkDupDB(t, db, duplicatedKeys, duplicatedValues) - testNewIter(t, data, []byte("key1"), []byte("key6"), keys, values) + testNewIter(t, data, []byte("key1"), []byte("key6"), keys, values, pool) checkDupDB(t, db, duplicatedKeys, duplicatedValues) - testNewIter(t, data, []byte("key1"), []byte("key3"), keys[:2], values[:2]) + testNewIter(t, data, []byte("key1"), []byte("key3"), keys[:2], values[:2], pool) checkDupDB(t, db, duplicatedKeys[:2], duplicatedValues[:2]) - testNewIter(t, data, []byte("key2"), []byte("key5"), keys[1:4], values[1:4]) + testNewIter(t, data, []byte("key2"), []byte("key5"), keys[1:4], values[1:4], pool) checkDupDB(t, db, duplicatedKeys, duplicatedValues) - testNewIter(t, data, []byte("key25"), []byte("key35"), keys[2:3], values[2:3]) + testNewIter(t, data, []byte("key25"), []byte("key35"), keys[2:3], values[2:3], pool) checkDupDB(t, db, nil, nil) - testNewIter(t, data, []byte("key25"), []byte("key26"), nil, nil) + testNewIter(t, data, []byte("key25"), []byte("key26"), nil, nil, pool) checkDupDB(t, db, nil, nil) - testNewIter(t, data, []byte("key0"), []byte("key1"), nil, nil) + testNewIter(t, data, []byte("key0"), []byte("key1"), nil, nil, pool) checkDupDB(t, db, nil, nil) - testNewIter(t, data, []byte("key6"), []byte("key9"), nil, nil) + testNewIter(t, data, []byte("key6"), []byte("key9"), nil, nil, pool) checkDupDB(t, db, nil, nil) } @@ -336,7 +337,7 @@ func TestGetAdjustedConcurrency(t *testing.T) { workerConcurrency: 32, dataFiles: genFiles(100), } - require.Equal(t, 8, e.getAdjustedConcurrency()) + require.Equal(t, 16, e.getAdjustedConcurrency()) e.dataFiles = genFiles(8000) require.Equal(t, 1, e.getAdjustedConcurrency()) diff --git a/br/pkg/lightning/backend/external/file.go b/br/pkg/lightning/backend/external/file.go index fd66938a03a0a..a625248e61f31 100644 --- a/br/pkg/lightning/backend/external/file.go +++ b/br/pkg/lightning/backend/external/file.go @@ -50,25 +50,26 @@ func NewKeyValueStore( } // addEncodedData saves encoded key-value pairs to the KeyValueStore. -// data layout: keyLen + key + valueLen + value. If the accumulated +// data layout: keyLen + valueLen + key + value. If the accumulated // size or key count exceeds the given distance, a new range property will be // appended to the rangePropertiesCollector with current status. // `key` must be in strictly ascending order for invocations of a KeyValueStore. -func (s *KeyValueStore) addEncodedData(val []byte) error { - _, err := s.dataWriter.Write(s.ctx, val) +func (s *KeyValueStore) addEncodedData(data []byte) error { + _, err := s.dataWriter.Write(s.ctx, data) if err != nil { return err } - keyLen := binary.BigEndian.Uint64(val) - key := val[lengthBytes : lengthBytes+keyLen] + keyLen := binary.BigEndian.Uint64(data) + key := data[2*lengthBytes : 2*lengthBytes+keyLen] + if len(s.rc.currProp.firstKey) == 0 { s.rc.currProp.firstKey = key } s.rc.currProp.lastKey = key - s.offset += uint64(len(val)) - s.rc.currProp.size += uint64(len(val) - lengthBytes*2) + s.offset += uint64(len(data)) + s.rc.currProp.size += uint64(len(data) - 2*lengthBytes) s.rc.currProp.keys++ if s.rc.currProp.size >= s.rc.propSizeDist || diff --git a/br/pkg/lightning/backend/external/file_test.go b/br/pkg/lightning/backend/external/file_test.go index 65ab999b17476..f58be194c0988 100644 --- a/br/pkg/lightning/backend/external/file_test.go +++ b/br/pkg/lightning/backend/external/file_test.go @@ -16,6 +16,7 @@ package external import ( "context" + "encoding/binary" "io" "testing" "time" @@ -25,6 +26,15 @@ import ( "golang.org/x/exp/rand" ) +func getEncodedData(key, value []byte) []byte { + buf := make([]byte, 8*2+len(key)+len(value)) + binary.BigEndian.PutUint64(buf, uint64(len(key))) + binary.BigEndian.PutUint64(buf[8:], uint64(len(value))) + copy(buf[8*2:], key) + copy(buf[8*2+len(key):], value) + return buf +} + func TestAddKeyValueMaintainRangeProperty(t *testing.T) { ctx := context.Background() memStore := storage.NewMemStorage() @@ -71,9 +81,9 @@ func TestAddKeyValueMaintainRangeProperty(t *testing.T) { require.NoError(t, err) require.Len(t, rc.props, 1) + kvStore.Close() err = writer.Close(ctx) require.NoError(t, err) - kvStore.Close() expected = &rangeProperty{ firstKey: k3, lastKey: k3, @@ -152,6 +162,7 @@ func TestKVReadWrite(t *testing.T) { err = kvStore.addEncodedData(getEncodedData(keys[i], values[i])) require.NoError(t, err) } + kvStore.Close() err = writer.Close(ctx) require.NoError(t, err) diff --git a/br/pkg/lightning/backend/external/iter.go b/br/pkg/lightning/backend/external/iter.go index 768f7bd979a92..0847e7bad1f98 100644 --- a/br/pkg/lightning/backend/external/iter.go +++ b/br/pkg/lightning/backend/external/iter.go @@ -230,8 +230,6 @@ func (i *mergeIter[T, R]) currElem() T { // next forwards the iterator to the next element. It returns false if there is // no available element. func (i *mergeIter[T, R]) next() bool { - var zeroT T - i.curr = zeroT if i.lastReaderIdx >= 0 { if i.checkHotspot { i.hotspotMap[i.lastReaderIdx] = i.hotspotMap[i.lastReaderIdx] + 1 @@ -292,6 +290,9 @@ func (i *mergeIter[T, R]) next() bool { i.readers[i.lastReaderIdx] = nil delete(i.hotspotMap, i.lastReaderIdx) default: + i.logger.Error("failed to read next element", + zap.String("path", rd.path()), + zap.Error(err)) i.err = err return false } @@ -368,7 +369,7 @@ func NewMergeKVIter( readerOpeners := make([]readerOpenerFn[*kvPair, kvReaderProxy], 0, len(paths)) largeBufSize := ConcurrentReaderBufferSizePerConc * ConcurrentReaderConcurrency memPool := membuf.NewPool( - membuf.WithPoolSize(1), // currently only one reader will become hotspot + membuf.WithBlockNum(1), // currently only one reader will become hotspot membuf.WithBlockSize(largeBufSize), membuf.WithLargeAllocThreshold(largeBufSize), ) diff --git a/br/pkg/lightning/backend/external/iter_test.go b/br/pkg/lightning/backend/external/iter_test.go index e9b27f3793b6e..3a1db464ba827 100644 --- a/br/pkg/lightning/backend/external/iter_test.go +++ b/br/pkg/lightning/backend/external/iter_test.go @@ -60,15 +60,6 @@ func (r *trackOpenFileReader) Close() error { return nil } -func getEncodedData(key, value []byte) []byte { - buf := make([]byte, 8*2+len(key)+len(value)) - binary.BigEndian.PutUint64(buf, uint64(len(key))) - copy(buf[8:], key) - binary.BigEndian.PutUint64(buf[8+len(key):], uint64(len(value))) - copy(buf[8*2+len(key):], value) - return buf -} - func TestMergeKVIter(t *testing.T) { ctx := context.Background() memStore := storage.NewMemStorage() @@ -92,6 +83,7 @@ func TestMergeKVIter(t *testing.T) { err = kvStore.addEncodedData(getEncodedData([]byte(kv[0]), []byte(kv[1]))) require.NoError(t, err) } + kvStore.Close() err = writer.Close(ctx) require.NoError(t, err) } @@ -144,6 +136,7 @@ func TestOneUpstream(t *testing.T) { err = kvStore.addEncodedData(getEncodedData([]byte(kv[0]), []byte(kv[1]))) require.NoError(t, err) } + kvStore.Close() err = writer.Close(ctx) require.NoError(t, err) } @@ -222,6 +215,7 @@ func TestCorruptContent(t *testing.T) { err = kvStore.addEncodedData(getEncodedData([]byte(kv[0]), []byte(kv[1]))) require.NoError(t, err) } + kvStore.Close() if i == 0 { _, err = writer.Write(ctx, []byte("corrupt")) require.NoError(t, err) @@ -390,6 +384,7 @@ func TestHotspot(t *testing.T) { err = kvStore.addEncodedData(getEncodedData([]byte(k), value)) require.NoError(t, err) } + kvStore.Close() err = writer.Close(ctx) require.NoError(t, err) } diff --git a/br/pkg/lightning/backend/external/kv_buf.go b/br/pkg/lightning/backend/external/kv_buf.go deleted file mode 100644 index 5079c3f475b41..0000000000000 --- a/br/pkg/lightning/backend/external/kv_buf.go +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright 2023 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 external - -import "github.com/docker/go-units" - -// DefaultBlockSize is the default block size for preAllocKVBuf. -const DefaultBlockSize = 16 * units.MiB - -// preAllocKVBuf pre allocates a large buffer of limit memLimit to reduce memory -// allocation, all space in this buffer will be reused when reset. -type preAllocKVBuf struct { - blocks [][]byte - blockSize int - curBlock []byte - curBlockIdx int - curIdx int -} - -func newPreAllocKVBuf(memLimit uint64, blockSize int) *preAllocKVBuf { - blockCount := (memLimit + uint64(blockSize) - 1) / uint64(blockSize) - b := &preAllocKVBuf{ - blocks: make([][]byte, 0, blockCount), - blockSize: blockSize, - } - for i := 0; i < int(blockCount); i++ { - b.blocks = append(b.blocks, make([]byte, blockSize)) - } - b.reset() - return b -} - -func (b *preAllocKVBuf) Alloc(s int) (blockIdx int32, res []byte, offset int32, allocated bool) { - if s > b.blockSize { - return - } - if b.blockSize-b.curIdx < s { - if b.curBlockIdx+1 >= len(b.blocks) { - return - } - b.curBlockIdx++ - b.curBlock = b.blocks[b.curBlockIdx] - b.curIdx = 0 - } - blockIdx = int32(b.curBlockIdx) - res = b.curBlock[b.curIdx : b.curIdx+s] - offset = int32(b.curIdx) - allocated = true - - b.curIdx += s - return -} - -func (b *preAllocKVBuf) reset() { - b.curBlockIdx = 0 - b.curBlock = b.blocks[0] - b.curIdx = 0 -} - -func (b *preAllocKVBuf) destroy() { - b.blocks = nil - b.curBlock = nil -} diff --git a/br/pkg/lightning/backend/external/kv_buf_test.go b/br/pkg/lightning/backend/external/kv_buf_test.go deleted file mode 100644 index fddb3230b417d..0000000000000 --- a/br/pkg/lightning/backend/external/kv_buf_test.go +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2023 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 external - -import ( - "testing" - - "github.com/stretchr/testify/require" -) - -func TestNewPreAllocKVBuf(t *testing.T) { - cases := []struct { - memLimit uint64 - expectBlocks int - }{ - {1, 1}, - {15, 1}, - {16, 1}, - {17, 2}, - {31, 2}, - {32, 2}, - } - for _, c := range cases { - buf := newPreAllocKVBuf(c.memLimit, 16) - require.Equal(t, c.expectBlocks, len(buf.blocks)) - require.Equal(t, 16, buf.blockSize) - require.Equal(t, buf.blocks[0], buf.curBlock) - require.Equal(t, 0, buf.curBlockIdx) - require.Equal(t, 0, buf.curIdx) - } - - buf := newPreAllocKVBuf(16, 8) - // alloc larger than block size. - _, _, _, allocated := buf.Alloc(9) - require.False(t, allocated) - blockIdx, res, offset, allocated := buf.Alloc(8) - require.Equal(t, int32(0), blockIdx) - require.Equal(t, int32(0), offset) - require.True(t, allocated) - copy(res, "12345678") - blockIdx, res, offset, allocated = buf.Alloc(4) - require.Equal(t, int32(1), blockIdx) - require.Equal(t, int32(0), offset) - require.True(t, allocated) - copy(res, "aaaa") - blockIdx, res, offset, allocated = buf.Alloc(4) - require.Equal(t, int32(1), blockIdx) - require.Equal(t, int32(4), offset) - require.True(t, allocated) - copy(res, "bbbb") - _, _, _, allocated = buf.Alloc(4) - require.False(t, allocated) - - require.Equal(t, "12345678", string(buf.blocks[0])) - require.Equal(t, "aaaabbbb", string(buf.blocks[1])) - - buf.reset() - require.Equal(t, buf.blocks[0], buf.curBlock) - require.Equal(t, 0, buf.curBlockIdx) - require.Equal(t, 0, buf.curIdx) - - buf.destroy() - require.Nil(t, buf.blocks) - require.Nil(t, buf.curBlock) -} diff --git a/br/pkg/lightning/backend/external/kv_reader.go b/br/pkg/lightning/backend/external/kv_reader.go index 7659ecd6bb4f6..def354b18f884 100644 --- a/br/pkg/lightning/backend/external/kv_reader.go +++ b/br/pkg/lightning/backend/external/kv_reader.go @@ -36,11 +36,12 @@ func newKVReader( initFileOffset uint64, bufSize int, ) (*kvReader, error) { - sr, err := openStoreReaderAndSeek(ctx, store, name, initFileOffset) + oneThird := bufSize / 3 + sr, err := openStoreReaderAndSeek(ctx, store, name, initFileOffset, oneThird*2) if err != nil { return nil, err } - br, err := newByteReader(ctx, sr, bufSize) + br, err := newByteReader(ctx, sr, oneThird) if err != nil { return nil, err } @@ -50,26 +51,21 @@ func newKVReader( } func (r *kvReader) nextKV() (key, val []byte, err error) { - r.byteReader.reset() lenBytes, err := r.byteReader.readNBytes(8) if err != nil { return nil, nil, err } - keyLen := int(binary.BigEndian.Uint64(*lenBytes)) - keyPtr, err := r.byteReader.readNBytes(keyLen) - if err != nil { - return nil, nil, noEOF(err) - } + keyLen := int(binary.BigEndian.Uint64(lenBytes)) lenBytes, err = r.byteReader.readNBytes(8) if err != nil { return nil, nil, noEOF(err) } - valLen := int(binary.BigEndian.Uint64(*lenBytes)) - valPtr, err := r.byteReader.readNBytes(valLen) + valLen := int(binary.BigEndian.Uint64(lenBytes)) + keyAndValue, err := r.byteReader.readNBytes(keyLen + valLen) if err != nil { return nil, nil, noEOF(err) } - return *keyPtr, *valPtr, nil + return keyAndValue[:keyLen], keyAndValue[keyLen:], nil } // noEOF converts the EOF error to io.ErrUnexpectedEOF. diff --git a/br/pkg/lightning/backend/external/merge.go b/br/pkg/lightning/backend/external/merge.go index dce4b4aa2959d..a2eb92c924733 100644 --- a/br/pkg/lightning/backend/external/merge.go +++ b/br/pkg/lightning/backend/external/merge.go @@ -2,20 +2,22 @@ package external import ( "context" + "errors" "github.com/google/uuid" - "github.com/pingcap/errors" "github.com/pingcap/failpoint" "github.com/pingcap/tidb/br/pkg/lightning/log" "github.com/pingcap/tidb/br/pkg/storage" + tidbkv "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/util/logutil" + "github.com/pingcap/tidb/pkg/util/size" "go.uber.org/zap" "golang.org/x/sync/errgroup" ) // MergeOverlappingFiles reads from given files whose key range may overlap // and writes to new sorted, nonoverlapping files. -func MergeOverlappingFiles(ctx context.Context, paths []string, store storage.ExternalStorage, readBufferSize int, +func MergeOverlappingFiles(ctx context.Context, paths []string, store storage.ExternalStorage, partSize int64, readBufferSize int, newFilePrefix string, blockSize int, writeBatchCount uint64, propSizeDist uint64, propKeysDist uint64, onClose OnCloseFunc, concurrency int, checkHotspot bool) error { var dataFilesSlice [][]string @@ -37,13 +39,15 @@ func MergeOverlappingFiles(ctx context.Context, paths []string, store storage.Ex zap.Int("concurrency", concurrency)) eg, egCtx := errgroup.WithContext(ctx) eg.SetLimit(concurrency) + partSize = max(int64(5*size.MB), partSize+int64(1*size.MB)) for _, files := range dataFilesSlice { files := files eg.Go(func() error { - return mergeOverlappingFilesImpl( + return MergeOverlappingFilesV2( egCtx, files, store, + partSize, readBufferSize, newFilePrefix, uuid.New().String(), @@ -60,6 +64,7 @@ func MergeOverlappingFiles(ctx context.Context, paths []string, store storage.Ex return eg.Wait() } +// unused for now. func mergeOverlappingFilesImpl(ctx context.Context, paths []string, store storage.ExternalStorage, @@ -81,6 +86,69 @@ func mergeOverlappingFilesImpl(ctx context.Context, defer func() { task.End(zap.ErrorLevel, err) }() + + zeroOffsets := make([]uint64, len(paths)) + iter, err := NewMergeKVIter(ctx, paths, zeroOffsets, store, readBufferSize, checkHotspot) + if err != nil { + return err + } + defer func() { + err := iter.Close() + if err != nil { + logutil.Logger(ctx).Warn("close iterator failed", zap.Error(err)) + } + }() + + writer := NewWriterBuilder(). + SetMemorySizeLimit(memSizeLimit). + SetBlockSize(blockSize). + SetOnCloseFunc(onClose). + SetWriterBatchCount(writeBatchCount). + SetPropSizeDistance(propSizeDist). + SetPropKeysDistance(propKeysDist). + Build(store, newFilePrefix, writerID) + + // currently use same goroutine to do read and write. The main advantage is + // there's no KV copy and iter can reuse the buffer. + for iter.Next() { + err = writer.WriteRow(ctx, iter.Key(), iter.Value(), nil) + if err != nil { + return err + } + } + err = iter.Error() + if err != nil { + return err + } + return writer.Close(ctx) +} + +// MergeOverlappingFilesV2 reads from given files whose key range may overlap +// and writes to one new sorted, nonoverlapping files. +func MergeOverlappingFilesV2( + ctx context.Context, + paths []string, + store storage.ExternalStorage, + partSize int64, + readBufferSize int, + newFilePrefix string, + writerID string, + memSizeLimit uint64, + blockSize int, + writeBatchCount uint64, + propSizeDist uint64, + propKeysDist uint64, + onClose OnCloseFunc, + checkHotspot bool, +) (err error) { + task := log.BeginTask(logutil.Logger(ctx).With( + zap.String("writer-id", writerID), + zap.Int("file-count", len(paths)), + ), "merge overlapping files") + defer func() { + task.End(zap.ErrorLevel, err) + }() + failpoint.Inject("mergeOverlappingFilesImpl", func(val failpoint.Value) { if val.(string) == paths[0] { failpoint.Return(errors.New("injected error")) @@ -107,16 +175,24 @@ func mergeOverlappingFilesImpl(ctx context.Context, writer := NewWriterBuilder(). SetMemorySizeLimit(memSizeLimit). SetBlockSize(blockSize). - SetOnCloseFunc(onClose). SetWriterBatchCount(writeBatchCount). - SetPropSizeDistance(propSizeDist). SetPropKeysDistance(propKeysDist). - Build(store, newFilePrefix, writerID) + SetPropSizeDistance(propSizeDist). + SetOnCloseFunc(onClose). + BuildOneFile(store, newFilePrefix, writerID) + err = writer.Init(ctx, partSize) + if err != nil { + return nil + } + var minKey, maxKey tidbkv.Key // currently use same goroutine to do read and write. The main advantage is // there's no KV copy and iter can reuse the buffer. for iter.Next() { - err = writer.WriteRow(ctx, iter.Key(), iter.Value(), nil) + if len(minKey) == 0 { + minKey = tidbkv.Key(iter.Key()).Clone() + } + err = writer.WriteRow(ctx, iter.Key(), iter.Value()) if err != nil { return err } @@ -125,5 +201,26 @@ func mergeOverlappingFilesImpl(ctx context.Context, if err != nil { return err } - return writer.Close(ctx) + maxKey = tidbkv.Key(iter.Key()).Clone() + + var stat MultipleFilesStat + stat.Filenames = append(stat.Filenames, + [2]string{writer.dataFile, writer.statFile}) + stat.build([]tidbkv.Key{minKey}, []tidbkv.Key{maxKey}) + if onClose != nil { + onClose(&WriterSummary{ + WriterID: writer.writerID, + Seq: 0, + Min: minKey, + Max: maxKey, + TotalSize: writer.totalSize, + MultipleFilesStats: []MultipleFilesStat{stat}, + }) + } + + err = writer.Close(ctx) + if err != nil { + return err + } + return nil } diff --git a/br/pkg/lightning/backend/external/merge_test.go b/br/pkg/lightning/backend/external/merge_test.go index 42078e75ce97b..799121c4fc7fb 100644 --- a/br/pkg/lightning/backend/external/merge_test.go +++ b/br/pkg/lightning/backend/external/merge_test.go @@ -32,6 +32,7 @@ func TestMergeOverlappingFiles(t *testing.T) { []string{"a", "b", "c", "d", "e"}, nil, 1, + 1, "", 1, 1, diff --git a/br/pkg/lightning/backend/external/onefile_writer.go b/br/pkg/lightning/backend/external/onefile_writer.go new file mode 100644 index 0000000000000..996f336909fbc --- /dev/null +++ b/br/pkg/lightning/backend/external/onefile_writer.go @@ -0,0 +1,161 @@ +// Copyright 2023 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 external + +import ( + "context" + "encoding/binary" + "path/filepath" + + "github.com/pingcap/errors" + "github.com/pingcap/tidb/br/pkg/membuf" + "github.com/pingcap/tidb/br/pkg/storage" + "github.com/pingcap/tidb/pkg/util/logutil" + "github.com/pingcap/tidb/pkg/util/size" + "go.uber.org/zap" +) + +// OneFileWriter is used to write data into external storage +// with only one file for data and stat. +type OneFileWriter struct { + // storage related. + store storage.ExternalStorage + kvStore *KeyValueStore + kvBuffer *membuf.Buffer + + // Statistic information per writer. + totalSize uint64 + rc *rangePropertiesCollector + + // file information. + writerID string + filenamePrefix string + dataFile string + statFile string + dataWriter storage.ExternalFileWriter + statWriter storage.ExternalFileWriter + + onClose OnCloseFunc + closed bool + + logger *zap.Logger +} + +// initWriter inits the underlying dataFile/statFile path, dataWriter/statWriter for OneFileWriter. +func (w *OneFileWriter) initWriter(ctx context.Context, partSize int64) ( + err error, +) { + w.dataFile = filepath.Join(w.filenamePrefix, "one-file") + w.dataWriter, err = w.store.Create(ctx, w.dataFile, &storage.WriterOption{Concurrency: 20, PartSize: partSize}) + if err != nil { + return err + } + w.statFile = filepath.Join(w.filenamePrefix+statSuffix, "one-file") + w.statWriter, err = w.store.Create(ctx, w.statFile, &storage.WriterOption{Concurrency: 20, PartSize: int64(5 * size.MB)}) + if err != nil { + _ = w.dataWriter.Close(ctx) + return err + } + w.logger.Info("one file writer", zap.String("data-file", w.dataFile), zap.String("stat-file", w.statFile)) + return nil +} + +// Init inits the OneFileWriter and its underlying KeyValueStore. +func (w *OneFileWriter) Init(ctx context.Context, partSize int64) (err error) { + w.logger = logutil.Logger(ctx) + err = w.initWriter(ctx, partSize) + if err != nil { + return err + } + w.kvStore, err = NewKeyValueStore(ctx, w.dataWriter, w.rc) + return err +} + +// WriteRow implements ingest.Writer. +func (w *OneFileWriter) WriteRow(ctx context.Context, idxKey, idxVal []byte) error { + // 1. encode data and write to kvStore. + keyLen := len(idxKey) + length := len(idxKey) + len(idxVal) + lengthBytes*2 + buf, _ := w.kvBuffer.AllocBytesWithSliceLocation(length) + if buf == nil { + w.kvBuffer.Reset() + buf, _ = w.kvBuffer.AllocBytesWithSliceLocation(length) + // we now don't support KV larger than blockSize + if buf == nil { + return errors.Errorf("failed to allocate kv buffer: %d", length) + } + // 2. write statistics if one kvBuffer is used. + w.kvStore.Close() + encodedStat := w.rc.encode() + _, err := w.statWriter.Write(ctx, encodedStat) + if err != nil { + return err + } + w.rc.reset() + } + binary.BigEndian.AppendUint64(buf[:0], uint64(keyLen)) + binary.BigEndian.AppendUint64(buf[lengthBytes:lengthBytes], uint64(len(idxVal))) + copy(buf[lengthBytes*2:], idxKey) + copy(buf[lengthBytes*2+keyLen:], idxVal) + err := w.kvStore.addEncodedData(buf[:length]) + if err != nil { + return err + } + w.totalSize += uint64(keyLen + len(idxVal)) + return nil +} + +// Close closes the writer. +func (w *OneFileWriter) Close(ctx context.Context) error { + if w.closed { + return errors.Errorf("writer %s has been closed", w.writerID) + } + err := w.closeImpl(ctx) + if err != nil { + return err + } + w.logger.Info("close one file writer", + zap.String("writerID", w.writerID)) + + w.totalSize = 0 + w.closed = true + return nil +} + +func (w *OneFileWriter) closeImpl(ctx context.Context) (err error) { + // 1. write remaining statistic. + w.kvStore.Close() + encodedStat := w.rc.encode() + _, err = w.statWriter.Write(ctx, encodedStat) + if err != nil { + return err + } + w.rc.reset() + // 2. close data writer. + err1 := w.dataWriter.Close(ctx) + if err1 != nil { + w.logger.Error("Close data writer failed", zap.Error(err)) + err = err1 + return + } + // 4. close stat writer. + err2 := w.statWriter.Close(ctx) + if err2 != nil { + w.logger.Error("Close stat writer failed", zap.Error(err)) + err = err2 + return + } + return nil +} diff --git a/br/pkg/lightning/backend/external/onefile_writer_test.go b/br/pkg/lightning/backend/external/onefile_writer_test.go new file mode 100644 index 0000000000000..be1bb8a717ad6 --- /dev/null +++ b/br/pkg/lightning/backend/external/onefile_writer_test.go @@ -0,0 +1,359 @@ +// Copyright 2023 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 external + +import ( + "bytes" + "context" + "fmt" + "io" + "path" + "slices" + "strconv" + "testing" + "time" + + "github.com/cockroachdb/pebble" + "github.com/pingcap/tidb/br/pkg/lightning/common" + "github.com/pingcap/tidb/br/pkg/membuf" + "github.com/pingcap/tidb/br/pkg/storage" + dbkv "github.com/pingcap/tidb/pkg/kv" + "github.com/pingcap/tidb/pkg/util/size" + "github.com/stretchr/testify/require" + "golang.org/x/exp/rand" +) + +func TestOnefileWriterBasic(t *testing.T) { + seed := time.Now().Unix() + rand.Seed(uint64(seed)) + t.Logf("seed: %d", seed) + ctx := context.Background() + memStore := storage.NewMemStorage() + + // 1. write into one file. + // 2. read kv file and check result. + // 3. read stat file and check result. + writer := NewWriterBuilder(). + SetPropSizeDistance(100). + SetPropKeysDistance(2). + BuildOneFile(memStore, "/test", "0") + + err := writer.Init(ctx, 5*1024*1024) + require.NoError(t, err) + + kvCnt := 100 + kvs := make([]common.KvPair, kvCnt) + for i := 0; i < kvCnt; i++ { + randLen := rand.Intn(10) + 1 + kvs[i].Key = make([]byte, randLen) + _, err := rand.Read(kvs[i].Key) + require.NoError(t, err) + randLen = rand.Intn(10) + 1 + kvs[i].Val = make([]byte, randLen) + _, err = rand.Read(kvs[i].Val) + require.NoError(t, err) + } + + for _, item := range kvs { + err := writer.WriteRow(ctx, item.Key, item.Val) + require.NoError(t, err) + } + + err = writer.Close(ctx) + require.NoError(t, err) + + bufSize := rand.Intn(100) + 1 + kvReader, err := newKVReader(ctx, "/test/0/one-file", memStore, 0, bufSize) + require.NoError(t, err) + for i := 0; i < kvCnt; i++ { + key, value, err := kvReader.nextKV() + require.NoError(t, err) + require.Equal(t, kvs[i].Key, key) + require.Equal(t, kvs[i].Val, value) + } + _, _, err = kvReader.nextKV() + require.Equal(t, io.EOF, err) + require.NoError(t, kvReader.Close()) + + statReader, err := newStatsReader(ctx, memStore, "/test/0_stat/one-file", bufSize) + require.NoError(t, err) + + var keyCnt uint64 = 0 + for { + p, err := statReader.nextProp() + if err == io.EOF { + break + } + require.NoError(t, err) + keyCnt += p.keys + } + require.Equal(t, uint64(kvCnt), keyCnt) + require.NoError(t, statReader.Close()) +} + +func TestOnefileWriterStat(t *testing.T) { + distanceCntArr := []uint64{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} + kvCntArr := []int{10, 100, 200, 1000} // won't large than DefaultMemSizeLimit. + // 1. write into one file. + // 2. read kv file and check result. + // 3. read stat file and check result. + for _, kvCnt := range kvCntArr { + for _, distance := range distanceCntArr { + checkOneFileWriterStatWithDistance(t, kvCnt, distance, DefaultMemSizeLimit, "test"+strconv.Itoa(int(distance))) + } + } +} + +func checkOneFileWriterStatWithDistance(t *testing.T, kvCnt int, keysDistance uint64, memSizeLimit uint64, prefix string) { + ctx := context.Background() + memStore := storage.NewMemStorage() + writer := NewWriterBuilder(). + SetPropSizeDistance(100). + SetPropKeysDistance(keysDistance). + BuildOneFile(memStore, "/"+prefix, "0") + + err := writer.Init(ctx, 5*1024*1024) + require.NoError(t, err) + kvs := make([]common.KvPair, 0, kvCnt) + for i := 0; i < kvCnt; i++ { + kvs = append(kvs, common.KvPair{ + Key: []byte(fmt.Sprintf("key%02d", i)), + Val: []byte("56789"), + }) + } + for _, item := range kvs { + err := writer.WriteRow(ctx, item.Key, item.Val) + require.NoError(t, err) + } + err = writer.Close(ctx) + require.NoError(t, err) + + bufSize := rand.Intn(100) + 1 + kvReader, err := newKVReader(ctx, "/"+prefix+"/0/one-file", memStore, 0, bufSize) + require.NoError(t, err) + for i := 0; i < kvCnt; i++ { + key, value, err := kvReader.nextKV() + require.NoError(t, err) + require.Equal(t, kvs[i].Key, key) + require.Equal(t, kvs[i].Val, value) + } + _, _, err = kvReader.nextKV() + require.Equal(t, io.EOF, err) + require.NoError(t, kvReader.Close()) + + statReader, err := newStatsReader(ctx, memStore, "/"+prefix+"/0_stat/one-file", bufSize) + require.NoError(t, err) + + var keyCnt uint64 = 0 + idx := 0 + for { + p, err := statReader.nextProp() + if err == io.EOF { + break + } + require.NoError(t, err) + keyCnt += p.keys + require.Equal(t, kvs[idx].Key, p.firstKey) + lastIdx := idx + int(keysDistance) - 1 + if lastIdx >= len(kvs) { + lastIdx = len(kvs) - 1 + } + require.Equal(t, kvs[lastIdx].Key, p.lastKey) + idx += int(keysDistance) + } + require.Equal(t, uint64(kvCnt), keyCnt) + require.NoError(t, statReader.Close()) +} + +func TestMergeOverlappingFilesV2(t *testing.T) { + // 1. Write to 5 files. + // 2. merge 5 files into one file. + // 3. read one file and check result. + // 4. check duplicate key. + ctx := context.Background() + memStore := storage.NewMemStorage() + writer := NewWriterBuilder(). + SetPropKeysDistance(2). + SetMemorySizeLimit(1000). + SetKeyDuplicationEncoding(true). + Build(memStore, "/test", "0") + + kvCount := 2000000 + for i := 0; i < kvCount; i++ { + v := i + if v == kvCount/2 { + v-- // insert a duplicate key. + } + key, val := []byte{byte(v)}, []byte{byte(v)} + err := writer.WriteRow(ctx, key, val, dbkv.IntHandle(i)) + require.NoError(t, err) + } + err := writer.Close(ctx) + require.NoError(t, err) + + err = MergeOverlappingFilesV2( + ctx, + []string{"/test/0/0", "/test/0/1", "/test/0/2", "/test/0/3", "/test/0/4"}, + memStore, + int64(5*size.MB), + 100, + "/test2", + "mergeID", + 1000, + 1000, + 8*1024, + 1*size.MB, + 2, + nil, + true, + ) + require.NoError(t, err) + + keys := make([][]byte, 0, kvCount) + values := make([][]byte, 0, kvCount) + + kvReader, err := newKVReader(ctx, "/test2/mergeID/one-file", memStore, 0, 100) + require.NoError(t, err) + for i := 0; i < kvCount; i++ { + key, value, err := kvReader.nextKV() + require.NoError(t, err) + clonedKey := make([]byte, len(key)) + copy(clonedKey, key) + clonedVal := make([]byte, len(value)) + copy(clonedVal, value) + keys = append(keys, clonedKey) + values = append(values, clonedVal) + } + _, _, err = kvReader.nextKV() + require.Equal(t, io.EOF, err) + require.NoError(t, kvReader.Close()) + + dir := t.TempDir() + db, err := pebble.Open(path.Join(dir, "duplicate"), nil) + require.NoError(t, err) + keyAdapter := common.DupDetectKeyAdapter{} + data := &MemoryIngestData{ + keyAdapter: keyAdapter, + duplicateDetection: true, + duplicateDB: db, + dupDetectOpt: common.DupDetectOpt{ReportErrOnDup: true}, + keys: keys, + values: values, + ts: 123, + } + pool := membuf.NewPool() + defer pool.Destroy() + iter := data.NewIter(ctx, nil, nil, pool) + + for iter.First(); iter.Valid(); iter.Next() { + } + err = iter.Error() + require.Error(t, err) + require.Contains(t, err.Error(), "found duplicate key") +} + +func TestOnefileWriterManyRows(t *testing.T) { + // 1. write into one file with sorted order. + // 2. merge one file. + // 3. read kv file and check the result. + // 4. check the writeSummary. + ctx := context.Background() + memStore := storage.NewMemStorage() + writer := NewWriterBuilder(). + SetPropKeysDistance(2). + SetMemorySizeLimit(1000). + BuildOneFile(memStore, "/test", "0") + + err := writer.Init(ctx, 5*1024*1024) + require.NoError(t, err) + + kvCnt := 100000 + expectedTotalSize := 0 + kvs := make([]common.KvPair, kvCnt) + for i := 0; i < kvCnt; i++ { + randLen := rand.Intn(10) + 1 + kvs[i].Key = make([]byte, randLen) + _, err := rand.Read(kvs[i].Key) + expectedTotalSize += randLen + + require.NoError(t, err) + randLen = rand.Intn(10) + 1 + kvs[i].Val = make([]byte, randLen) + _, err = rand.Read(kvs[i].Val) + require.NoError(t, err) + expectedTotalSize += randLen + } + + slices.SortFunc(kvs, func(i, j common.KvPair) int { + return bytes.Compare(i.Key, j.Key) + }) + + for _, item := range kvs { + err := writer.WriteRow(ctx, item.Key, item.Val) + require.NoError(t, err) + } + err = writer.Close(ctx) + require.NoError(t, err) + + var resSummary *WriterSummary + onClose := func(summary *WriterSummary) { + resSummary = summary + } + err = MergeOverlappingFilesV2( + ctx, + []string{"/test/0/one-file"}, + memStore, + int64(5*size.MB), + 100, + "/test2", + "mergeID", + 1000, + 1000, + 8*1024, + 1*size.MB, + 2, + onClose, + true, + ) + require.NoError(t, err) + + bufSize := rand.Intn(100) + 1 + kvReader, err := newKVReader(ctx, "/test2/mergeID/one-file", memStore, 0, bufSize) + require.NoError(t, err) + for i := 0; i < kvCnt; i++ { + key, value, err := kvReader.nextKV() + require.NoError(t, err) + require.Equal(t, kvs[i].Key, key) + require.Equal(t, kvs[i].Val, value) + } + _, _, err = kvReader.nextKV() + require.Equal(t, io.EOF, err) + require.NoError(t, kvReader.Close()) + + // check writerSummary. + expected := MultipleFilesStat{ + MinKey: kvs[0].Key, + MaxKey: kvs[len(kvs)-1].Key, + Filenames: [][2]string{ + {"/test2/mergeID/one-file", "/test2/mergeID_stat/one-file"}, + }, + MaxOverlappingNum: 1, + } + require.EqualValues(t, expected.MinKey, resSummary.Min) + require.EqualValues(t, expected.MaxKey, resSummary.Max) + require.Equal(t, expected.Filenames, resSummary.MultipleFilesStats[0].Filenames) + require.Equal(t, expected.MaxOverlappingNum, resSummary.MultipleFilesStats[0].MaxOverlappingNum) + require.EqualValues(t, expectedTotalSize, resSummary.TotalSize) +} diff --git a/br/pkg/lightning/backend/external/split_test.go b/br/pkg/lightning/backend/external/split_test.go index a49f697b46116..738e0a021ec9f 100644 --- a/br/pkg/lightning/backend/external/split_test.go +++ b/br/pkg/lightning/backend/external/split_test.go @@ -102,13 +102,15 @@ func TestOnlyOneGroup(t *testing.T) { subDir := "/mock-test" writer := NewWriterBuilder(). - SetMemorySizeLimit(15). + SetMemorySizeLimit(20). SetPropSizeDistance(1). SetPropKeysDistance(1). Build(memStore, subDir, "5") dataFiles, statFiles, err := MockExternalEngineWithWriter(memStore, writer, subDir, [][]byte{{1}, {2}}, [][]byte{{1}, {2}}) require.NoError(t, err) + require.Len(t, dataFiles, 1) + require.Len(t, statFiles, 1) splitter, err := NewRangeSplitter( ctx, dataFiles, statFiles, memStore, 1000, 30, 1000, 10, true, diff --git a/br/pkg/lightning/backend/external/stat_reader.go b/br/pkg/lightning/backend/external/stat_reader.go index 512dd8df5f37c..5aaea5988973e 100644 --- a/br/pkg/lightning/backend/external/stat_reader.go +++ b/br/pkg/lightning/backend/external/stat_reader.go @@ -26,7 +26,7 @@ type statsReader struct { } func newStatsReader(ctx context.Context, store storage.ExternalStorage, name string, bufSize int) (*statsReader, error) { - sr, err := openStoreReaderAndSeek(ctx, store, name, 0) + sr, err := openStoreReaderAndSeek(ctx, store, name, 0, 0) if err != nil { return nil, err } @@ -40,17 +40,16 @@ func newStatsReader(ctx context.Context, store storage.ExternalStorage, name str } func (r *statsReader) nextProp() (*rangeProperty, error) { - r.byteReader.reset() lenBytes, err := r.byteReader.readNBytes(4) if err != nil { return nil, err } - propLen := int(binary.BigEndian.Uint32(*lenBytes)) + propLen := int(binary.BigEndian.Uint32(lenBytes)) propBytes, err := r.byteReader.readNBytes(propLen) if err != nil { return nil, noEOF(err) } - return decodeProp(*propBytes), nil + return decodeProp(propBytes), nil } func (r *statsReader) Close() error { diff --git a/br/pkg/lightning/backend/external/util.go b/br/pkg/lightning/backend/external/util.go index e1c4494b89f1b..a9597e42b9883 100644 --- a/br/pkg/lightning/backend/external/util.go +++ b/br/pkg/lightning/backend/external/util.go @@ -20,8 +20,10 @@ import ( "fmt" "slices" "sort" + "strconv" "strings" + "github.com/docker/go-units" "github.com/pingcap/tidb/br/pkg/lightning/log" "github.com/pingcap/tidb/br/pkg/storage" "github.com/pingcap/tidb/pkg/kv" @@ -62,9 +64,10 @@ func seekPropsOffsets( propKey := kv.Key(p.firstKey) if propKey.Cmp(start) > 0 { if !moved { - return nil, fmt.Errorf("start key %s is too small for stat files %v", + return nil, fmt.Errorf("start key %s is too small for stat files %v, propKey %s", start.String(), paths, + propKey.String(), ) } return offsets, nil @@ -292,3 +295,13 @@ func BytesMax(a, b []byte) []byte { } return b } + +func getSpeed(n uint64, dur float64, isBytes bool) string { + if dur == 0 { + return "-" + } + if isBytes { + return units.BytesSize(float64(n) / dur) + } + return strconv.FormatFloat(float64(n)/dur, 'f', 4, 64) +} diff --git a/br/pkg/lightning/backend/external/writer.go b/br/pkg/lightning/backend/external/writer.go index cb3ad887114e1..6468e1413a8dd 100644 --- a/br/pkg/lightning/backend/external/writer.go +++ b/br/pkg/lightning/backend/external/writer.go @@ -30,6 +30,7 @@ import ( "github.com/pingcap/tidb/br/pkg/lightning/backend/encode" "github.com/pingcap/tidb/br/pkg/lightning/backend/kv" "github.com/pingcap/tidb/br/pkg/lightning/common" + "github.com/pingcap/tidb/br/pkg/membuf" "github.com/pingcap/tidb/br/pkg/storage" tidbkv "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/metrics" @@ -51,6 +52,8 @@ var ( const ( // DefaultMemSizeLimit is the default memory size limit for writer. DefaultMemSizeLimit = 256 * size.MB + // DefaultBlockSize is the default block size for writer. + DefaultBlockSize = 16 * units.MiB ) // rangePropertiesCollector collects range properties for each range. The zero @@ -119,6 +122,7 @@ func NewWriterBuilder() *WriterBuilder { // SetMemorySizeLimit sets the memory size limit of the writer. When accumulated // data size exceeds this limit, the writer will flush data as a file to external // storage. +// When the writer is OneFileWriter SetMemorySizeLimit sets the preAllocated memory buffer size. func (b *WriterBuilder) SetMemorySizeLimit(size uint64) *WriterBuilder { b.memSizeLimit = size return b @@ -175,6 +179,7 @@ func (b *WriterBuilder) Build( if b.keyDupeEncoding { keyAdapter = common.DupDetectKeyAdapter{} } + p := membuf.NewPool(membuf.WithBlockNum(0), membuf.WithBlockSize(b.blockSize)) ret := &Writer{ rc: &rangePropertiesCollector{ props: make([]*rangeProperty, 0, 1024), @@ -184,7 +189,7 @@ func (b *WriterBuilder) Build( }, memSizeLimit: b.memSizeLimit, store: store, - kvBuffer: newPreAllocKVBuf(b.memSizeLimit, b.blockSize), + kvBuffer: p.NewBuffer(membuf.WithMemoryLimit(b.memSizeLimit)), currentSeq: 0, filenamePrefix: filenamePrefix, keyAdapter: keyAdapter, @@ -197,6 +202,35 @@ func (b *WriterBuilder) Build( fileMaxKeys: make([]tidbkv.Key, 0, multiFileStatNum), } ret.multiFileStats[0].Filenames = make([][2]string, 0, multiFileStatNum) + + return ret +} + +// BuildOneFile builds a new one file Writer. The writer will create only one file under the prefix +// of "{prefix}/{writerID}". +func (b *WriterBuilder) BuildOneFile( + store storage.ExternalStorage, + prefix string, + writerID string, +) *OneFileWriter { + filenamePrefix := filepath.Join(prefix, writerID) + p := membuf.NewPool(membuf.WithBlockNum(0), membuf.WithBlockSize(b.blockSize)) + + ret := &OneFileWriter{ + rc: &rangePropertiesCollector{ + props: make([]*rangeProperty, 0, 1024), + currProp: &rangeProperty{}, + propSizeDist: b.propSizeDist, + propKeysDist: b.propKeysDist, + }, + kvBuffer: p.NewBuffer(membuf.WithMemoryLimit(b.memSizeLimit)), + store: store, + filenamePrefix: filenamePrefix, + writerID: writerID, + kvStore: nil, + onClose: b.onClose, + closed: false, + } return ret } @@ -249,12 +283,6 @@ func GetMaxOverlappingTotal(stats []MultipleFilesStat) int64 { return GetMaxOverlapping(points) } -type kvLocation struct { - blockIdx int32 - offset int32 - length int32 -} - // Writer is used to write data into external storage. type Writer struct { store storage.ExternalStorage @@ -268,8 +296,8 @@ type Writer struct { memSizeLimit uint64 - kvBuffer *preAllocKVBuf - kvLocations []kvLocation + kvBuffer *membuf.Buffer + kvLocations []membuf.SliceLocation kvSize int64 onClose OnCloseFunc @@ -299,27 +327,23 @@ func (w *Writer) WriteRow(ctx context.Context, idxKey, idxVal []byte, handle tid } encodedKeyLen := keyAdapter.EncodedLen(idxKey, rowID) length := encodedKeyLen + len(idxVal) + lengthBytes*2 - blockIdx, dataBuf, off, allocated := w.kvBuffer.Alloc(length) - if !allocated { + dataBuf, loc := w.kvBuffer.AllocBytesWithSliceLocation(length) + if dataBuf == nil { if err := w.flushKVs(ctx, false); err != nil { return err } - blockIdx, dataBuf, off, allocated = w.kvBuffer.Alloc(length) + dataBuf, loc = w.kvBuffer.AllocBytesWithSliceLocation(length) // we now don't support KV larger than blockSize - if !allocated { + if dataBuf == nil { return errors.Errorf("failed to allocate kv buffer: %d", length) } } binary.BigEndian.AppendUint64(dataBuf[:0], uint64(encodedKeyLen)) - keyAdapter.Encode(dataBuf[lengthBytes:lengthBytes:lengthBytes+encodedKeyLen], idxKey, rowID) - binary.BigEndian.AppendUint64(dataBuf[lengthBytes+encodedKeyLen:lengthBytes+encodedKeyLen], uint64(len(idxVal))) - copy(dataBuf[lengthBytes*2+encodedKeyLen:], idxVal) - - w.kvLocations = append(w.kvLocations, kvLocation{ - blockIdx: blockIdx, - offset: off, - length: int32(length)}, - ) + binary.BigEndian.AppendUint64(dataBuf[:lengthBytes], uint64(len(idxVal))) + keyAdapter.Encode(dataBuf[2*lengthBytes:2*lengthBytes:2*lengthBytes+encodedKeyLen], idxKey, rowID) + copy(dataBuf[2*lengthBytes+encodedKeyLen:], idxVal) + + w.kvLocations = append(w.kvLocations, loc) w.kvSize += int64(encodedKeyLen + len(idxVal)) w.batchSize += uint64(length) return nil @@ -338,7 +362,7 @@ func (w *Writer) Close(ctx context.Context) error { return errors.Errorf("writer %s has been closed", w.writerID) } w.closed = true - defer w.kvBuffer.destroy() + defer w.kvBuffer.Destroy() err := w.flushKVs(ctx, true) if err != nil { return err @@ -353,7 +377,6 @@ func (w *Writer) Close(ctx context.Context) error { zap.String("maxKey", hex.EncodeToString(w.maxKey))) w.kvLocations = nil - w.onClose(&WriterSummary{ WriterID: w.writerID, Seq: w.currentSeq, @@ -395,15 +418,6 @@ func (w *Writer) flushKVs(ctx context.Context, fromClose bool) (err error) { savedBytes = w.batchSize startTs := time.Now() - getSpeed := func(n uint64, dur float64, isBytes bool) string { - if dur == 0 { - return "-" - } - if isBytes { - return units.BytesSize(float64(n) / dur) - } - return units.HumanSize(float64(n) / dur) - } kvCnt := len(w.kvLocations) defer func() { w.currentSeq++ @@ -439,7 +453,7 @@ func (w *Writer) flushKVs(ctx context.Context, fromClose bool) (err error) { }() sortStart := time.Now() - slices.SortFunc(w.kvLocations, func(i, j kvLocation) int { + slices.SortFunc(w.kvLocations, func(i, j membuf.SliceLocation) int { return bytes.Compare(w.getKeyByLoc(i), w.getKeyByLoc(j)) }) sortDuration = time.Since(sortStart) @@ -453,7 +467,7 @@ func (w *Writer) flushKVs(ctx context.Context, fromClose bool) (err error) { } for _, pair := range w.kvLocations { - err = w.kvStore.addEncodedData(w.getEncodedKVData(pair)) + err = w.kvStore.addEncodedData(w.kvBuffer.GetSlice(pair)) if err != nil { return err } @@ -489,21 +503,16 @@ func (w *Writer) flushKVs(ctx context.Context, fromClose bool) (err error) { w.kvLocations = w.kvLocations[:0] w.kvSize = 0 - w.kvBuffer.reset() + w.kvBuffer.Reset() w.rc.reset() w.batchSize = 0 return nil } -func (w *Writer) getEncodedKVData(pos kvLocation) []byte { - block := w.kvBuffer.blocks[pos.blockIdx] - return block[pos.offset : pos.offset+pos.length] -} - -func (w *Writer) getKeyByLoc(pos kvLocation) []byte { - block := w.kvBuffer.blocks[pos.blockIdx] - keyLen := binary.BigEndian.Uint64(block[pos.offset : pos.offset+lengthBytes]) - return block[pos.offset+lengthBytes : uint64(pos.offset)+lengthBytes+keyLen] +func (w *Writer) getKeyByLoc(loc membuf.SliceLocation) []byte { + block := w.kvBuffer.GetSlice(loc) + keyLen := binary.BigEndian.Uint64(block[:lengthBytes]) + return block[2*lengthBytes : 2*lengthBytes+keyLen] } func (w *Writer) createStorageWriter(ctx context.Context) ( @@ -512,12 +521,12 @@ func (w *Writer) createStorageWriter(ctx context.Context) ( err error, ) { dataPath := filepath.Join(w.filenamePrefix, strconv.Itoa(w.currentSeq)) - dataWriter, err := w.store.Create(ctx, dataPath, &storage.WriterOption{Concurrency: 20}) + dataWriter, err := w.store.Create(ctx, dataPath, &storage.WriterOption{Concurrency: 20, PartSize: (int64)(5 * size.MB)}) if err != nil { return "", "", nil, nil, err } statPath := filepath.Join(w.filenamePrefix+statSuffix, strconv.Itoa(w.currentSeq)) - statsWriter, err := w.store.Create(ctx, statPath, &storage.WriterOption{Concurrency: 20}) + statsWriter, err := w.store.Create(ctx, statPath, &storage.WriterOption{Concurrency: 20, PartSize: (int64)(5 * size.MB)}) if err != nil { _ = dataWriter.Close(ctx) return "", "", nil, nil, err diff --git a/br/pkg/lightning/backend/external/writer_test.go b/br/pkg/lightning/backend/external/writer_test.go index 716c10067901b..7bc853f63dc1c 100644 --- a/br/pkg/lightning/backend/external/writer_test.go +++ b/br/pkg/lightning/backend/external/writer_test.go @@ -30,6 +30,7 @@ import ( "github.com/jfcg/sorty/v2" "github.com/pingcap/tidb/br/pkg/lightning/backend/kv" "github.com/pingcap/tidb/br/pkg/lightning/common" + "github.com/pingcap/tidb/br/pkg/membuf" "github.com/pingcap/tidb/br/pkg/storage" dbkv "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/util/size" @@ -114,7 +115,6 @@ func TestWriterFlushMultiFileNames(t *testing.T) { SetBlockSize(3*(lengthBytes*2+20)). Build(memStore, "/test", "0") - require.Equal(t, 3*(lengthBytes*2+20), writer.kvBuffer.blockSize) // 200 bytes key values. kvCnt := 10 kvs := make([]common.KvPair, kvCnt) @@ -224,7 +224,9 @@ func TestWriterDuplicateDetect(t *testing.T) { values: values, ts: 123, } - iter := data.NewIter(ctx, nil, nil) + pool := membuf.NewPool() + defer pool.Destroy() + iter := data.NewIter(ctx, nil, nil, pool) for iter.First(); iter.Valid(); iter.Next() { } diff --git a/br/pkg/lightning/backend/kv/base.go b/br/pkg/lightning/backend/kv/base.go index ab4c24f53ccb5..b4cfeb1d318f5 100644 --- a/br/pkg/lightning/backend/kv/base.go +++ b/br/pkg/lightning/backend/kv/base.go @@ -353,7 +353,7 @@ func evalGeneratedColumns(se *Session, record []types.Datum, cols []*table.Colum mutRow := chunk.MutRowFromDatums(record) for _, gc := range genCols { col := cols[gc.Index].ToInfo() - evaluated, err := gc.Expr.Eval(mutRow.ToRow()) + evaluated, err := gc.Expr.Eval(se, mutRow.ToRow()) if err != nil { return col, err } diff --git a/br/pkg/lightning/backend/kv/sql2kv.go b/br/pkg/lightning/backend/kv/sql2kv.go index 489bb6e30d824..1d3ef8b1d2038 100644 --- a/br/pkg/lightning/backend/kv/sql2kv.go +++ b/br/pkg/lightning/backend/kv/sql2kv.go @@ -115,7 +115,7 @@ func CollectGeneratedColumns(se *Session, meta *model.TableInfo, cols []*table.C var genCols []GeneratedCol for i, col := range cols { if col.GeneratedExpr != nil { - expr, err := expression.RewriteAstExpr(se, col.GeneratedExpr, schema, names, true) + expr, err := expression.RewriteAstExpr(se, col.GeneratedExpr.Internal(), schema, names, true) if err != nil { return nil, err } diff --git a/br/pkg/lightning/backend/local/engine.go b/br/pkg/lightning/backend/local/engine.go index 61ae643793c03..d577258142711 100644 --- a/br/pkg/lightning/backend/local/engine.go +++ b/br/pkg/lightning/backend/local/engine.go @@ -975,20 +975,28 @@ func (e *Engine) loadEngineMeta() error { return nil } -func (e *Engine) newKVIter(ctx context.Context, opts *pebble.IterOptions) Iter { +func (e *Engine) newKVIter(ctx context.Context, opts *pebble.IterOptions, buf *membuf.Buffer) IngestLocalEngineIter { if bytes.Compare(opts.LowerBound, normalIterStartKey) < 0 { newOpts := *opts newOpts.LowerBound = normalIterStartKey opts = &newOpts } if !e.duplicateDetection { - return pebbleIter{Iterator: e.getDB().NewIter(opts)} + return &pebbleIter{Iterator: e.getDB().NewIter(opts), buf: buf} } logger := log.FromContext(ctx).With( zap.String("table", common.UniqueTable(e.tableInfo.DB, e.tableInfo.Name)), zap.Int64("tableID", e.tableInfo.ID), zap.Stringer("engineUUID", e.UUID)) - return newDupDetectIter(e.getDB(), e.keyAdapter, opts, e.duplicateDB, logger, e.dupDetectOpt) + return newDupDetectIter( + e.getDB(), + e.keyAdapter, + opts, + e.duplicateDB, + logger, + e.dupDetectOpt, + buf, + ) } var _ common.IngestData = (*Engine)(nil) @@ -1009,7 +1017,7 @@ func (e *Engine) GetFirstAndLastKey(lowerBound, upperBound []byte) ([]byte, []by failpoint.Return(lowerBound, upperBound, nil) }) - iter := e.newKVIter(context.Background(), opt) + iter := e.newKVIter(context.Background(), opt, nil) //nolint: errcheck defer iter.Close() // Needs seek to first because NewIter returns an iterator that is unpositioned @@ -1030,8 +1038,16 @@ func (e *Engine) GetFirstAndLastKey(lowerBound, upperBound []byte) ([]byte, []by } // NewIter implements IngestData interface. -func (e *Engine) NewIter(ctx context.Context, lowerBound, upperBound []byte) common.ForwardIter { - return e.newKVIter(ctx, &pebble.IterOptions{LowerBound: lowerBound, UpperBound: upperBound}) +func (e *Engine) NewIter( + ctx context.Context, + lowerBound, upperBound []byte, + bufPool *membuf.Pool, +) common.ForwardIter { + return e.newKVIter( + ctx, + &pebble.IterOptions{LowerBound: lowerBound, UpperBound: upperBound}, + bufPool.NewBuffer(), + ) } // GetTS implements IngestData interface. diff --git a/br/pkg/lightning/backend/local/engine_test.go b/br/pkg/lightning/backend/local/engine_test.go index 08829dd2161f1..ec676d13b5616 100644 --- a/br/pkg/lightning/backend/local/engine_test.go +++ b/br/pkg/lightning/backend/local/engine_test.go @@ -30,6 +30,7 @@ import ( "github.com/pingcap/tidb/br/pkg/lightning/backend" "github.com/pingcap/tidb/br/pkg/lightning/common" "github.com/pingcap/tidb/br/pkg/lightning/log" + "github.com/pingcap/tidb/br/pkg/membuf" "github.com/stretchr/testify/require" ) @@ -168,3 +169,59 @@ func TestGetFirstAndLastKey(t *testing.T) { require.Equal(t, []byte("e"), first) require.Equal(t, []byte("e"), last) } + +func TestIterOutputHasUniqueMemorySpace(t *testing.T) { + db, tmpPath := makePebbleDB(t, nil) + f := &Engine{ + sstDir: tmpPath, + } + f.db.Store(db) + err := db.Set([]byte("a"), []byte("a"), nil) + require.NoError(t, err) + err = db.Set([]byte("c"), []byte("c"), nil) + require.NoError(t, err) + err = db.Set([]byte("e"), []byte("e"), nil) + require.NoError(t, err) + err = db.Set([]byte("g"), []byte("g"), nil) + require.NoError(t, err) + + pool := membuf.NewPool() + ctx := context.Background() + iter := f.NewIter(ctx, nil, nil, pool) + keys := make([][]byte, 0, 2) + values := make([][]byte, 0, 2) + require.True(t, iter.First()) + keys = append(keys, iter.Key()) + values = append(values, iter.Value()) + require.True(t, iter.Next()) + keys = append(keys, iter.Key()) + values = append(values, iter.Value()) + expectKeys := [][]byte{[]byte("a"), []byte("c")} + expectValues := [][]byte{[]byte("a"), []byte("c")} + require.Equal(t, expectKeys, keys) + require.Equal(t, expectValues, values) + + iter.ReleaseBuf() + + keys2 := make([][]byte, 0, 2) + values2 := make([][]byte, 0, 2) + require.True(t, iter.Next()) + keys2 = append(keys2, iter.Key()) + values2 = append(values2, iter.Value()) + require.True(t, iter.Next()) + keys2 = append(keys2, iter.Key()) + values2 = append(values2, iter.Value()) + expectKeys2 := [][]byte{[]byte("e"), []byte("g")} + expectValues2 := [][]byte{[]byte("e"), []byte("g")} + require.Equal(t, expectKeys2, keys2) + require.Equal(t, expectValues2, values2) + require.False(t, iter.Next()) + + // just to reveal that after iter.ReleaseBuf() keys and values are not valid anymore + require.Equal(t, keys2, keys) + + require.Equal(t, int64(0), pool.TotalSize()) + require.NoError(t, iter.Close()) + // after iter closed, the memory buffer of iter goes to pool + require.Greater(t, pool.TotalSize(), int64(0)) +} diff --git a/br/pkg/lightning/backend/local/iterator.go b/br/pkg/lightning/backend/local/iterator.go index 78dcafd994558..b0abf72f4663c 100644 --- a/br/pkg/lightning/backend/local/iterator.go +++ b/br/pkg/lightning/backend/local/iterator.go @@ -16,39 +16,49 @@ package local import ( "github.com/cockroachdb/pebble" - sst "github.com/pingcap/kvproto/pkg/import_sstpb" "github.com/pingcap/tidb/br/pkg/lightning/common" "github.com/pingcap/tidb/br/pkg/lightning/log" + "github.com/pingcap/tidb/br/pkg/membuf" "go.uber.org/multierr" ) -// Iter abstract iterator method for Ingester. -type Iter interface { +// IngestLocalEngineIter abstract iterator method for iterator. +type IngestLocalEngineIter interface { common.ForwardIter - // Seek seek to specify position. - // if key not found, seeks next key position in iter. - Seek(key []byte) bool // Last moves this iter to the last key. Last() bool - // OpType represents operations of pair. currently we have two types. - // 1. Put - // 2. Delete - OpType() sst.Pair_OP } type pebbleIter struct { *pebble.Iterator + buf *membuf.Buffer +} + +func (p *pebbleIter) ReleaseBuf() { + p.buf.Reset() +} + +func (p *pebbleIter) Close() error { + // only happens for GetFirstAndLastKey + if p.buf != nil { + p.buf.Destroy() + } + return p.Iterator.Close() } -func (p pebbleIter) Seek(key []byte) bool { - return p.SeekGE(key) +func (p *pebbleIter) Key() []byte { + // only happens for GetFirstAndLastKey + if p.buf == nil { + return p.Iterator.Key() + } + return p.buf.AddBytes(p.Iterator.Key()) } -func (pebbleIter) OpType() sst.Pair_OP { - return sst.Pair_Put +func (p *pebbleIter) Value() []byte { + return p.buf.AddBytes(p.Iterator.Value()) } -var _ Iter = pebbleIter{} +var _ IngestLocalEngineIter = &pebbleIter{} type dupDetectIter struct { keyAdapter common.KeyAdapter @@ -57,18 +67,10 @@ type dupDetectIter struct { err error curKey, curVal []byte + buf *membuf.Buffer logger log.Logger } -func (d *dupDetectIter) Seek(key []byte) bool { - rawKey := d.keyAdapter.Encode(nil, key, common.ZeroRowID) - if d.err != nil || !d.iter.SeekGE(rawKey) { - return false - } - d.fill() - return d.err == nil -} - func (d *dupDetectIter) First() bool { if d.err != nil || !d.iter.First() { return false @@ -106,11 +108,15 @@ func (d *dupDetectIter) Next() bool { } func (d *dupDetectIter) Key() []byte { - return d.curKey + // only happens for GetFirstAndLastKey + if d.buf == nil { + return d.curKey + } + return d.buf.AddBytes(d.curKey) } func (d *dupDetectIter) Value() []byte { - return d.curVal + return d.buf.AddBytes(d.curVal) } func (d *dupDetectIter) Valid() bool { @@ -122,6 +128,10 @@ func (d *dupDetectIter) Error() error { } func (d *dupDetectIter) Close() error { + // only happens for GetFirstAndLastKey + if d.buf != nil { + d.buf.Destroy() + } firstErr := d.dupDetector.Close() err := d.iter.Close() if firstErr != nil { @@ -130,11 +140,11 @@ func (d *dupDetectIter) Close() error { return err } -func (*dupDetectIter) OpType() sst.Pair_OP { - return sst.Pair_Put +func (d *dupDetectIter) ReleaseBuf() { + d.buf.Reset() } -var _ Iter = &dupDetectIter{} +var _ IngestLocalEngineIter = &dupDetectIter{} func newDupDetectIter( db *pebble.DB, @@ -143,6 +153,7 @@ func newDupDetectIter( dupDB *pebble.DB, logger log.Logger, dupOpt common.DupDetectOpt, + buf *membuf.Buffer, ) *dupDetectIter { newOpts := &pebble.IterOptions{TableFilter: opts.TableFilter} if len(opts.LowerBound) > 0 { @@ -156,6 +167,7 @@ func newDupDetectIter( return &dupDetectIter{ keyAdapter: keyAdapter, iter: db.NewIter(newOpts), + buf: buf, dupDetector: detector, logger: logger, } @@ -224,8 +236,23 @@ func (d *dupDBIter) Close() error { return d.iter.Close() } -func (*dupDBIter) OpType() sst.Pair_OP { - return sst.Pair_Put +// Iter describes an iterator. +type Iter interface { + // Valid check this iter reach the end. + Valid() bool + // Next moves this iter forward. + Next() bool + // Key returns current position pair's key. The key is accessible after more + // Next() or Key() invocations but is invalidated by Close() or ReleaseBuf(). + Key() []byte + // Value returns current position pair's Value. The value is accessible after + // more Next() or Value() invocations but is invalidated by Close() or + // ReleaseBuf(). + Value() []byte + // Close close this iter. + Close() error + // Error return current error on this iter. + Error() error } var _ Iter = &dupDBIter{} diff --git a/br/pkg/lightning/backend/local/iterator_test.go b/br/pkg/lightning/backend/local/iterator_test.go index a82b9d164846e..181ab8082e016 100644 --- a/br/pkg/lightning/backend/local/iterator_test.go +++ b/br/pkg/lightning/backend/local/iterator_test.go @@ -27,6 +27,7 @@ import ( "github.com/cockroachdb/pebble" "github.com/pingcap/tidb/br/pkg/lightning/common" "github.com/pingcap/tidb/br/pkg/lightning/log" + "github.com/pingcap/tidb/br/pkg/membuf" "github.com/stretchr/testify/require" ) @@ -128,8 +129,9 @@ func TestDupDetectIterator(t *testing.T) { dupDB, err := pebble.Open(filepath.Join(storeDir, "duplicates"), &pebble.Options{}) require.NoError(t, err) - var iter Iter - iter = newDupDetectIter(db, keyAdapter, &pebble.IterOptions{}, dupDB, log.L(), common.DupDetectOpt{}) + pool := membuf.NewPool() + defer pool.Destroy() + iter := newDupDetectIter(db, keyAdapter, &pebble.IterOptions{}, dupDB, log.L(), common.DupDetectOpt{}, pool.NewBuffer()) sort.Slice(pairs, func(i, j int) bool { key1 := keyAdapter.Encode(nil, pairs[i].Key, pairs[i].RowID) key2 := keyAdapter.Encode(nil, pairs[j].Key, pairs[j].RowID) @@ -159,16 +161,16 @@ func TestDupDetectIterator(t *testing.T) { require.NoError(t, db.Close()) // Check duplicates detected by dupDetectIter. - iter = newDupDBIter(dupDB, keyAdapter, &pebble.IterOptions{}) + iter2 := newDupDBIter(dupDB, keyAdapter, &pebble.IterOptions{}) var detectedPairs []common.KvPair - for iter.First(); iter.Valid(); iter.Next() { + for iter2.First(); iter2.Valid(); iter2.Next() { detectedPairs = append(detectedPairs, common.KvPair{ - Key: append([]byte{}, iter.Key()...), - Val: append([]byte{}, iter.Value()...), + Key: append([]byte{}, iter2.Key()...), + Val: append([]byte{}, iter2.Value()...), }) } - require.NoError(t, iter.Error()) - require.NoError(t, iter.Close()) + require.NoError(t, iter2.Error()) + require.NoError(t, iter2.Close()) require.NoError(t, dupDB.Close()) require.Equal(t, len(dupPairs), len(detectedPairs)) @@ -186,55 +188,6 @@ func TestDupDetectIterator(t *testing.T) { } } -func TestDupDetectIterSeek(t *testing.T) { - pairs := []common.KvPair{ - { - Key: []byte{1, 2, 3, 0}, - Val: randBytes(128), - RowID: common.EncodeIntRowID(1), - }, - { - Key: []byte{1, 2, 3, 1}, - Val: randBytes(128), - RowID: common.EncodeIntRowID(2), - }, - { - Key: []byte{1, 2, 3, 1}, - Val: randBytes(128), - RowID: common.EncodeIntRowID(3), - }, - { - Key: []byte{1, 2, 3, 2}, - Val: randBytes(128), - RowID: common.EncodeIntRowID(4), - }, - } - - storeDir := t.TempDir() - db, err := pebble.Open(filepath.Join(storeDir, "kv"), &pebble.Options{}) - require.NoError(t, err) - - keyAdapter := common.DupDetectKeyAdapter{} - wb := db.NewBatch() - for _, p := range pairs { - key := keyAdapter.Encode(nil, p.Key, p.RowID) - require.NoError(t, wb.Set(key, p.Val, nil)) - } - require.NoError(t, wb.Commit(pebble.Sync)) - - dupDB, err := pebble.Open(filepath.Join(storeDir, "duplicates"), &pebble.Options{}) - require.NoError(t, err) - iter := newDupDetectIter(db, keyAdapter, &pebble.IterOptions{}, dupDB, log.L(), common.DupDetectOpt{}) - - require.True(t, iter.Seek([]byte{1, 2, 3, 1})) - require.Equal(t, pairs[1].Val, iter.Value()) - require.True(t, iter.Next()) - require.Equal(t, pairs[3].Val, iter.Value()) - require.NoError(t, iter.Close()) - require.NoError(t, db.Close()) - require.NoError(t, dupDB.Close()) -} - func TestKeyAdapterEncoding(t *testing.T) { keyAdapter := common.DupDetectKeyAdapter{} srcKey := []byte{1, 2, 3} @@ -267,13 +220,23 @@ func BenchmarkDupDetectIter(b *testing.B) { } wb.Commit(pebble.Sync) + pool := membuf.NewPool() dupDB, _ := pebble.Open(filepath.Join(b.TempDir(), "dup"), &pebble.Options{}) b.ResetTimer() for i := 0; i < b.N; i++ { - iter := newDupDetectIter(db, keyAdapter, &pebble.IterOptions{}, dupDB, log.L(), common.DupDetectOpt{}) + iter := newDupDetectIter( + db, + keyAdapter, + &pebble.IterOptions{}, + dupDB, + log.L(), + common.DupDetectOpt{}, + pool.NewBuffer(), + ) keyCnt := 0 for iter.First(); iter.Valid(); iter.Next() { keyCnt++ } + iter.Close() } } diff --git a/br/pkg/lightning/backend/local/local.go b/br/pkg/lightning/backend/local/local.go index 099404c48479c..c526188bf55fd 100644 --- a/br/pkg/lightning/backend/local/local.go +++ b/br/pkg/lightning/backend/local/local.go @@ -1734,6 +1734,11 @@ func (local *Backend) ResetEngine(ctx context.Context, engineUUID uuid.UUID) err // the only way to reset the engine + reclaim the space is to delete and reopen it 🤷 localEngine := local.lockEngine(engineUUID, importMutexStateClose) if localEngine == nil { + if engineI, ok := local.externalEngine[engineUUID]; ok { + extEngine := engineI.(*external.Engine) + return extEngine.Reset() + } + log.FromContext(ctx).Warn("could not find engine in cleanupEngine", zap.Stringer("uuid", engineUUID)) return nil } @@ -1756,6 +1761,12 @@ func (local *Backend) ResetEngine(ctx context.Context, engineUUID uuid.UUID) err if err = local.allocateTSIfNotExists(ctx, localEngine); err != nil { return errors.Trace(err) } + failpoint.Inject("mockAllocateTSErr", func() { + // mock generate timestamp error when reset engine. + localEngine.TS = 0 + mockGRPCErr, _ := status.FromError(errors.Errorf("mock generate timestamp error")) + failpoint.Return(errors.Trace(mockGRPCErr.Err())) + }) } localEngine.pendingFileSize.Store(0) @@ -1767,6 +1778,11 @@ func (local *Backend) CleanupEngine(ctx context.Context, engineUUID uuid.UUID) e localEngine := local.lockEngine(engineUUID, importMutexStateClose) // release this engine after import success if localEngine == nil { + if extEngine, ok := local.externalEngine[engineUUID]; ok { + retErr := extEngine.Close() + delete(local.externalEngine, engineUUID) + return retErr + } log.FromContext(ctx).Warn("could not find engine in cleanupEngine", zap.Stringer("uuid", engineUUID)) return nil } diff --git a/br/pkg/lightning/backend/local/local_test.go b/br/pkg/lightning/backend/local/local_test.go index 93afa912de596..70796cc7d7a9f 100644 --- a/br/pkg/lightning/backend/local/local_test.go +++ b/br/pkg/lightning/backend/local/local_test.go @@ -110,12 +110,12 @@ func TestNextKey(t *testing.T) { stmtCtx := stmtctx.NewStmtCtx() for _, datums := range testDatums { - keyBytes, err := codec.EncodeKey(stmtCtx, nil, types.NewIntDatum(123), datums[0]) + keyBytes, err := codec.EncodeKey(stmtCtx.TimeZone(), nil, types.NewIntDatum(123), datums[0]) require.NoError(t, err) h, err := tidbkv.NewCommonHandle(keyBytes) require.NoError(t, err) key := tablecodec.EncodeRowKeyWithHandle(1, h) - nextKeyBytes, err := codec.EncodeKey(stmtCtx, nil, types.NewIntDatum(123), datums[1]) + nextKeyBytes, err := codec.EncodeKey(stmtCtx.TimeZone(), nil, types.NewIntDatum(123), datums[1]) require.NoError(t, err) nextHdl, err := tidbkv.NewCommonHandle(nextKeyBytes) require.NoError(t, err) @@ -125,7 +125,7 @@ func TestNextKey(t *testing.T) { } // a special case that when len(string datum) % 8 == 7, nextKey twice should not panic. - keyBytes, err := codec.EncodeKey(stmtCtx, nil, types.NewStringDatum("1234567")) + keyBytes, err := codec.EncodeKey(stmtCtx.TimeZone(), nil, types.NewStringDatum("1234567")) require.NoError(t, err) h, err := tidbkv.NewCommonHandle(keyBytes) require.NoError(t, err) @@ -1200,7 +1200,9 @@ func (m *mockIngestIter) Close() error { return nil } func (m *mockIngestIter) Error() error { return nil } -func (m mockIngestData) NewIter(ctx context.Context, lowerBound, upperBound []byte) common.ForwardIter { +func (m *mockIngestIter) ReleaseBuf() {} + +func (m mockIngestData) NewIter(_ context.Context, lowerBound, upperBound []byte, _ *membuf.Pool) common.ForwardIter { i, j := m.getFirstAndLastKeyIdx(lowerBound, upperBound) return &mockIngestIter{data: m, startIdx: i, endIdx: j, curIdx: i} } @@ -2358,7 +2360,7 @@ func TestExternalEngine(t *testing.T) { kvIdx := 0 for i, job := range jobs { require.Equal(t, expectedKeyRanges[i], job.keyRange) - iter := job.ingestData.NewIter(ctx, job.keyRange.Start, job.keyRange.End) + iter := job.ingestData.NewIter(ctx, job.keyRange.Start, job.keyRange.End, nil) for iter.First(); iter.Valid(); iter.Next() { require.Equal(t, keys[kvIdx], iter.Key()) require.Equal(t, values[kvIdx], iter.Value()) diff --git a/br/pkg/lightning/backend/local/localhelper_test.go b/br/pkg/lightning/backend/local/localhelper_test.go index 0ee5f9b9a6fca..29ff06b5481a3 100644 --- a/br/pkg/lightning/backend/local/localhelper_test.go +++ b/br/pkg/lightning/backend/local/localhelper_test.go @@ -796,7 +796,7 @@ func doTestBatchSplitByRangesWithClusteredIndex(t *testing.T, hook clientHook) { keys := [][]byte{[]byte(""), tableStartKey} // pre split 2 regions for i := int64(0); i < 2; i++ { - keyBytes, err := codec.EncodeKey(stmtCtx, nil, types.NewIntDatum(i)) + keyBytes, err := codec.EncodeKey(stmtCtx.TimeZone(), nil, types.NewIntDatum(i)) require.NoError(t, err) h, err := kv.NewCommonHandle(keyBytes) require.NoError(t, err) @@ -818,7 +818,7 @@ func doTestBatchSplitByRangesWithClusteredIndex(t *testing.T, hook clientHook) { rangeKeys := make([][]byte, 0, 20+1) for i := int64(0); i < 2; i++ { for j := int64(0); j < 10; j++ { - keyBytes, err := codec.EncodeKey(stmtCtx, nil, types.NewIntDatum(i), types.NewIntDatum(j*10000)) + keyBytes, err := codec.EncodeKey(stmtCtx.TimeZone(), nil, types.NewIntDatum(i), types.NewIntDatum(j*10000)) require.NoError(t, err) h, err := kv.NewCommonHandle(keyBytes) require.NoError(t, err) diff --git a/br/pkg/lightning/backend/local/region_job.go b/br/pkg/lightning/backend/local/region_job.go index b7104a6cfba7c..1c25434974c55 100644 --- a/br/pkg/lightning/backend/local/region_job.go +++ b/br/pkg/lightning/backend/local/region_job.go @@ -318,14 +318,13 @@ func (local *Backend) doWrite(ctx context.Context, j *regionJob) error { clients = append(clients, wstream) allPeers = append(allPeers, peer) } + dataCommitTS := j.ingestData.GetTS() req.Chunk = &sst.WriteRequest_Batch{ Batch: &sst.WriteBatch{ - CommitTs: j.ingestData.GetTS(), + CommitTs: dataCommitTS, }, } - bytesBuf := bufferPool.NewBuffer() - defer bytesBuf.Destroy() pairs := make([]*sst.Pair, 0, defaultKVBatchCount) count := 0 size := int64(0) @@ -366,21 +365,22 @@ func (local *Backend) doWrite(ctx context.Context, j *regionJob) error { return nil } - iter := j.ingestData.NewIter(ctx, j.keyRange.Start, j.keyRange.End) + iter := j.ingestData.NewIter(ctx, j.keyRange.Start, j.keyRange.End, bufferPool) //nolint: errcheck defer iter.Close() var remainingStartKey []byte for iter.First(); iter.Valid(); iter.Next() { - kvSize := int64(len(iter.Key()) + len(iter.Value())) + k, v := iter.Key(), iter.Value() + kvSize := int64(len(k) + len(v)) // here we reuse the `*sst.Pair`s to optimize object allocation if count < len(pairs) { - pairs[count].Key = bytesBuf.AddBytes(iter.Key()) - pairs[count].Value = bytesBuf.AddBytes(iter.Value()) + pairs[count].Key = k + pairs[count].Value = v } else { pair := &sst.Pair{ - Key: bytesBuf.AddBytes(iter.Key()), - Value: bytesBuf.AddBytes(iter.Value()), + Key: k, + Value: v, } pairs = append(pairs, pair) } @@ -395,7 +395,7 @@ func (local *Backend) doWrite(ctx context.Context, j *regionJob) error { } count = 0 size = 0 - bytesBuf.Reset() + iter.ReleaseBuf() } if totalSize >= regionMaxSize || totalCount >= j.regionSplitKeys { // we will shrink the key range of this job to real written range @@ -408,7 +408,8 @@ func (local *Backend) doWrite(ctx context.Context, j *regionJob) error { logutil.Key("endKey", j.keyRange.End), logutil.Key("remainStart", remainingStartKey), logutil.Region(region), - logutil.Leader(j.region.Leader)) + logutil.Leader(j.region.Leader), + zap.Uint64("commitTS", dataCommitTS)) } break } @@ -424,7 +425,7 @@ func (local *Backend) doWrite(ctx context.Context, j *regionJob) error { } count = 0 size = 0 - bytesBuf.Reset() + iter.ReleaseBuf() } var leaderPeerMetas []*sst.SSTMeta @@ -461,7 +462,6 @@ func (local *Backend) doWrite(ctx context.Context, j *regionJob) error { log.FromContext(ctx).Debug("write to kv", zap.Reflect("region", j.region), zap.Uint64("leader", leaderID), zap.Reflect("meta", meta), zap.Reflect("return metas", leaderPeerMetas), zap.Int64("kv_pairs", totalCount), zap.Int64("total_bytes", totalSize), - zap.Int64("buf_size", bytesBuf.TotalSize()), zap.Stringer("takeTime", takeTime)) if m, ok := metric.FromContext(ctx); ok { m.SSTSecondsHistogram.WithLabelValues(metric.SSTProcessWrite).Observe(takeTime.Seconds()) diff --git a/br/pkg/lightning/common/BUILD.bazel b/br/pkg/lightning/common/BUILD.bazel index 8174dba42b872..6fdc16688a869 100644 --- a/br/pkg/lightning/common/BUILD.bazel +++ b/br/pkg/lightning/common/BUILD.bazel @@ -26,6 +26,7 @@ go_library( "//br/pkg/httputil", "//br/pkg/lightning/log", "//br/pkg/logutil", + "//br/pkg/membuf", "//br/pkg/utils", "//pkg/errno", "//pkg/meta/autoid", @@ -128,14 +129,13 @@ go_test( "//pkg/testkit/testsetup", "//pkg/util/dbutil", "//pkg/util/mock", - "//pkg/util/pdapi", "@com_github_data_dog_go_sqlmock//:go-sqlmock", "@com_github_go_sql_driver_mysql//:mysql", "@com_github_pingcap_errors//:errors", "@com_github_pingcap_failpoint//:failpoint", "@com_github_stretchr_testify//assert", "@com_github_stretchr_testify//require", - "@io_etcd_go_etcd_client_v3//:client", + "@com_github_tikv_pd_client//http", "@org_golang_google_grpc//codes", "@org_golang_google_grpc//status", "@org_uber_go_goleak//:goleak", diff --git a/br/pkg/lightning/common/common_test.go b/br/pkg/lightning/common/common_test.go index 419768f3c42d7..22d274fcec976 100644 --- a/br/pkg/lightning/common/common_test.go +++ b/br/pkg/lightning/common/common_test.go @@ -30,7 +30,6 @@ import ( "github.com/pingcap/tidb/pkg/store/mockstore" tmock "github.com/pingcap/tidb/pkg/util/mock" "github.com/stretchr/testify/require" - clientv3 "go.etcd.io/etcd/client/v3" ) func newTableInfo(t *testing.T, @@ -169,7 +168,7 @@ func (r mockRequirement) Store() kv.Storage { return r.Storage } -func (r mockRequirement) GetEtcdClient() *clientv3.Client { +func (r mockRequirement) AutoIDClient() *autoid.ClientDiscover { return nil } diff --git a/br/pkg/lightning/common/ingest_data.go b/br/pkg/lightning/common/ingest_data.go index 33fc4f434b3c4..d9a360be47861 100644 --- a/br/pkg/lightning/common/ingest_data.go +++ b/br/pkg/lightning/common/ingest_data.go @@ -14,7 +14,11 @@ package common -import "context" +import ( + "context" + + "github.com/pingcap/tidb/br/pkg/membuf" +) // IngestData describes a common interface that is needed by TiKV write + // ingest RPC. @@ -24,7 +28,12 @@ type IngestData interface { // lowerBound must be less than upperBound. // when there is no data in the range, it should return nil, nil, nil GetFirstAndLastKey(lowerBound, upperBound []byte) ([]byte, []byte, error) - NewIter(ctx context.Context, lowerBound, upperBound []byte) ForwardIter + // NewIter creates an iterator. The only expected usage of the iterator is read + // batches of key-value pairs by caller. Due to the implementation of IngestData, + // the iterator may need to allocate memories to retain the key-value pair batch, + // these memories will be allocated from given bufPool and be released when the + // iterator is closed or ForwardIter.ReleaseBuf is called. + NewIter(ctx context.Context, lowerBound, upperBound []byte, bufPool *membuf.Pool) ForwardIter // GetTS will be used as the start/commit TS of the data. GetTS() uint64 // IncRef should be called every time when IngestData is referred by regionJob. @@ -47,14 +56,21 @@ type ForwardIter interface { Valid() bool // Next moves this iter forward. Next() bool - // Key represents current position pair's key. + // Key returns current position pair's key. The key is accessible after more + // Next() or Key() invocations but is invalidated by Close() or ReleaseBuf(). Key() []byte - // Value represents current position pair's Value. + // Value returns current position pair's Value. The value is accessible after + // more Next() or Value() invocations but is invalidated by Close() or + // ReleaseBuf(). Value() []byte // Close close this iter. Close() error // Error return current error on this iter. Error() error + // ReleaseBuf release the memory that saves the previously returned keys and + // values. These previously returned keys and values should not be accessed + // again. + ReleaseBuf() } // DataAndRange is a pair of IngestData and Range. diff --git a/br/pkg/lightning/common/security_test.go b/br/pkg/lightning/common/security_test.go index 4b4e86c54006d..e9f415e927464 100644 --- a/br/pkg/lightning/common/security_test.go +++ b/br/pkg/lightning/common/security_test.go @@ -26,8 +26,8 @@ import ( "testing" "github.com/pingcap/tidb/br/pkg/lightning/common" - "github.com/pingcap/tidb/pkg/util/pdapi" "github.com/stretchr/testify/require" + pd "github.com/tikv/pd/client/http" ) func respondPathHandler(w http.ResponseWriter, req *http.Request) { @@ -94,8 +94,8 @@ func TestWithHost(t *testing.T) { false, }, { - fmt.Sprintf("http://127.0.0.1:2379%s", pdapi.Stores), - fmt.Sprintf("127.0.0.1:2379%s", pdapi.Stores), + fmt.Sprintf("http://127.0.0.1:2379%s", pd.Stores), + fmt.Sprintf("127.0.0.1:2379%s", pd.Stores), false, }, { diff --git a/br/pkg/lightning/config/bytesize_test.go b/br/pkg/lightning/config/bytesize_test.go index 46968777056e5..bb76cd11b25a7 100644 --- a/br/pkg/lightning/config/bytesize_test.go +++ b/br/pkg/lightning/config/bytesize_test.go @@ -61,7 +61,7 @@ func TestByteSizeTOMLDecode(t *testing.T) { }, { input: "x = 'invalid value'", - err: "invalid size: 'invalid value'", + err: "strconv.ParseFloat: parsing \"invalid\": invalid syntax", }, { input: "x = true", @@ -85,7 +85,7 @@ func TestByteSizeTOMLDecode(t *testing.T) { }, { input: "x = 2020-01-01T00:00:00Z", - err: "invalid size: '2020-01-01T00:00:00Z'", + err: "strconv.ParseFloat: parsing \"2020-01-01T00:00:00\": invalid syntax", }, { input: "x = ['100000']", diff --git a/br/pkg/lightning/errormanager/BUILD.bazel b/br/pkg/lightning/errormanager/BUILD.bazel index 05d8cb8f6e1f6..291befefb1a8b 100644 --- a/br/pkg/lightning/errormanager/BUILD.bazel +++ b/br/pkg/lightning/errormanager/BUILD.bazel @@ -34,22 +34,31 @@ go_library( go_test( name = "errormanager_test", timeout = "short", - srcs = ["errormanager_test.go"], + srcs = [ + "errormanager_test.go", + "resolveconflict_test.go", + ], embed = [":errormanager"], flaky = True, - shard_count = 6, + shard_count = 10, deps = [ "//br/pkg/lightning/backend/encode", "//br/pkg/lightning/backend/kv", "//br/pkg/lightning/config", "//br/pkg/lightning/log", "//br/pkg/utils", + "//pkg/ddl", + "//pkg/parser", + "//pkg/parser/ast", "//pkg/parser/model", "//pkg/parser/mysql", + "//pkg/sessionctx/variable", "//pkg/table/tables", "//pkg/types", + "//pkg/util/mock", "@com_github_data_dog_go_sqlmock//:go-sqlmock", "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//error", "@org_uber_go_atomic//:atomic", ], ) diff --git a/br/pkg/lightning/errormanager/resolveconflict_test.go b/br/pkg/lightning/errormanager/resolveconflict_test.go new file mode 100644 index 0000000000000..d7e7581deb335 --- /dev/null +++ b/br/pkg/lightning/errormanager/resolveconflict_test.go @@ -0,0 +1,794 @@ +// Copyright 2021 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 errormanager_test + +import ( + "bytes" + "context" + "database/sql/driver" + "fmt" + "testing" + + "github.com/DATA-DOG/go-sqlmock" + "github.com/pingcap/tidb/br/pkg/lightning/backend/encode" + tidbkv "github.com/pingcap/tidb/br/pkg/lightning/backend/kv" + "github.com/pingcap/tidb/br/pkg/lightning/config" + "github.com/pingcap/tidb/br/pkg/lightning/errormanager" + "github.com/pingcap/tidb/br/pkg/lightning/log" + "github.com/pingcap/tidb/br/pkg/utils" + "github.com/pingcap/tidb/pkg/ddl" + "github.com/pingcap/tidb/pkg/parser" + "github.com/pingcap/tidb/pkg/parser/ast" + "github.com/pingcap/tidb/pkg/parser/model" + "github.com/pingcap/tidb/pkg/parser/mysql" + "github.com/pingcap/tidb/pkg/sessionctx/variable" + "github.com/pingcap/tidb/pkg/table/tables" + "github.com/pingcap/tidb/pkg/types" + "github.com/pingcap/tidb/pkg/util/mock" + "github.com/stretchr/testify/require" + tikverr "github.com/tikv/client-go/v2/error" + "go.uber.org/atomic" +) + +func TestReplaceConflictMultipleKeysNonclusteredPk(t *testing.T) { + p := parser.New() + node, _, err := p.ParseSQL("create table a (a int primary key nonclustered, b int not null, c int not null, d text, key key_b(b), key key_c(c));") + require.NoError(t, err) + mockSctx := mock.NewContext() + mockSctx.GetSessionVars().EnableClusteredIndex = variable.ClusteredIndexDefModeOff + info, err := ddl.MockTableInfo(mockSctx, node[0].(*ast.CreateTableStmt), 108) + require.NoError(t, err) + info.State = model.StatePublic + require.False(t, info.PKIsHandle) + tbl, err := tables.TableFromMeta(tidbkv.NewPanickingAllocators(0), info) + require.NoError(t, err) + require.False(t, tbl.Meta().HasClusteredIndex()) + + sessionOpts := encode.SessionOptions{ + SQLMode: mysql.ModeStrictAllTables, + Timestamp: 1234567890, + } + + encoder, err := tidbkv.NewBaseKVEncoder(&encode.EncodingConfig{ + Table: tbl, + SessionOptions: sessionOpts, + Logger: log.L(), + }) + require.NoError(t, err) + encoder.SessionCtx.GetSessionVars().RowEncoder.Enable = true + + data1 := []types.Datum{ + types.NewIntDatum(1), + types.NewIntDatum(1), + types.NewIntDatum(1), + types.NewStringDatum("1.csv"), + types.NewIntDatum(1), + } + data2 := []types.Datum{ + types.NewIntDatum(1), + types.NewIntDatum(1), + types.NewIntDatum(2), + types.NewStringDatum("2.csv"), + types.NewIntDatum(2), + } + data3 := []types.Datum{ + types.NewIntDatum(2), + types.NewIntDatum(2), + types.NewIntDatum(3), + types.NewStringDatum("3.csv"), + types.NewIntDatum(3), + } + data4 := []types.Datum{ + types.NewIntDatum(3), + types.NewIntDatum(3), + types.NewIntDatum(3), + types.NewStringDatum("3.csv"), + types.NewIntDatum(4), + } + data5 := []types.Datum{ + types.NewIntDatum(3), + types.NewIntDatum(3), + types.NewIntDatum(3), + types.NewStringDatum("4.csv"), + types.NewIntDatum(5), + } + data6 := []types.Datum{ + types.NewIntDatum(4), + types.NewIntDatum(4), + types.NewIntDatum(4), + types.NewStringDatum("4.csv"), + types.NewIntDatum(6), + } + data7 := []types.Datum{ + types.NewIntDatum(5), + types.NewIntDatum(4), + types.NewIntDatum(5), + types.NewStringDatum("5.csv"), + types.NewIntDatum(7), + } + _, err = encoder.Table.AddRecord(encoder.SessionCtx, data1) + require.NoError(t, err) + _, err = encoder.Table.AddRecord(encoder.SessionCtx, data2) + require.NoError(t, err) + _, err = encoder.Table.AddRecord(encoder.SessionCtx, data3) + require.NoError(t, err) + _, err = encoder.Table.AddRecord(encoder.SessionCtx, data4) + require.NoError(t, err) + _, err = encoder.Table.AddRecord(encoder.SessionCtx, data5) + require.NoError(t, err) + _, err = encoder.Table.AddRecord(encoder.SessionCtx, data6) + require.NoError(t, err) + _, err = encoder.Table.AddRecord(encoder.SessionCtx, data7) + require.NoError(t, err) + kvPairs := encoder.SessionCtx.TakeKvPairs() + + data2IndexKey := kvPairs.Pairs[5].Key + data2IndexValue := kvPairs.Pairs[5].Val + data6IndexKey := kvPairs.Pairs[17].Key + + data1RowKey := kvPairs.Pairs[0].Key + data2RowKey := kvPairs.Pairs[3].Key + data2RowValue := kvPairs.Pairs[3].Val + data3RowKey := kvPairs.Pairs[6].Key + data3RowValue := kvPairs.Pairs[6].Val + data5RowKey := kvPairs.Pairs[12].Key + data6RowKey := kvPairs.Pairs[15].Key + data6RowValue := kvPairs.Pairs[15].Val + data7RowKey := kvPairs.Pairs[18].Key + data7RowValue := kvPairs.Pairs[18].Val + + data2NonclusteredKey := kvPairs.Pairs[4].Key + data2NonclusteredValue := kvPairs.Pairs[4].Val + data3NonclusteredValue := kvPairs.Pairs[7].Val + data6NonclusteredKey := kvPairs.Pairs[16].Key + data6NonclusteredValue := kvPairs.Pairs[16].Val + data7NonclusteredValue := kvPairs.Pairs[19].Val + + db, mockDB, err := sqlmock.New() + require.NoError(t, err) + defer func() { + _ = db.Close() + }() + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + 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_v2.*"). + WillReturnResult(sqlmock.NewResult(2, 1)) + mockDB.ExpectQuery("\\QSELECT raw_key, index_name, raw_value, raw_handle FROM `lightning_task_info`.conflict_error_v2 WHERE table_name = ? AND is_data_kv = 0 ORDER BY raw_key\\E"). + WillReturnRows(sqlmock.NewRows([]string{"raw_key", "index_name", "raw_value", "raw_handle"}). + AddRow(data2RowKey, "PRIMARY", data2RowValue, data1RowKey). + AddRow(data2RowKey, "PRIMARY", data3NonclusteredValue, data2NonclusteredKey). + AddRow(data6RowKey, "PRIMARY", data6RowValue, data5RowKey). + AddRow(data6RowKey, "PRIMARY", data7NonclusteredValue, data6NonclusteredKey)) + mockDB.ExpectBegin() + mockDB.ExpectExec("INSERT INTO `lightning_task_info`\\.conflict_error_v2.*"). + WithArgs(0, "a", nil, nil, data2NonclusteredKey, data2NonclusteredValue, 1). + WillReturnResult(driver.ResultNoRows) + mockDB.ExpectCommit() + mockDB.ExpectBegin() + mockDB.ExpectExec("INSERT INTO `lightning_task_info`\\.conflict_error_v2.*"). + WithArgs(0, "a", nil, nil, data6NonclusteredKey, data6NonclusteredValue, 1). + WillReturnResult(driver.ResultNoRows) + mockDB.ExpectCommit() + mockDB.ExpectQuery("\\QSELECT raw_key, raw_value FROM `lightning_task_info`.conflict_error_v2 WHERE table_name = ? AND is_data_kv = 1 ORDER BY raw_key\\E"). + WillReturnRows(sqlmock.NewRows([]string{"raw_key", "raw_value"}). + AddRow(data2NonclusteredKey, data2NonclusteredValue). + AddRow(data6NonclusteredKey, data6NonclusteredValue)) + + cfg := config.NewConfig() + cfg.TikvImporter.DuplicateResolution = config.DupeResAlgReplace + cfg.App.TaskInfoSchemaName = "lightning_task_info" + em := errormanager.New(db, cfg, log.L()) + err = em.Init(ctx) + require.NoError(t, err) + + fnGetLatestCount := atomic.NewInt32(0) + fnDeleteKeyCount := atomic.NewInt32(0) + pool := utils.NewWorkerPool(16, "resolve duplicate rows by replace") + err = em.ReplaceConflictKeys( + ctx, tbl, "a", pool, + func(ctx context.Context, key []byte) ([]byte, error) { + fnGetLatestCount.Add(1) + switch { + case bytes.Equal(key, data2RowKey): + return data2RowValue, nil + case bytes.Equal(key, data2NonclusteredKey): + if fnGetLatestCount.String() == "3" { + return data2NonclusteredValue, nil + } else { + return nil, tikverr.ErrNotExist + } + case bytes.Equal(key, data6RowKey): + return data6RowValue, nil + case bytes.Equal(key, data6NonclusteredKey): + if fnGetLatestCount.String() == "6" { + return data6NonclusteredValue, nil + } else { + return nil, tikverr.ErrNotExist + } + case bytes.Equal(key, data2IndexKey): + return data2IndexValue, nil + case bytes.Equal(key, data3RowKey): + return data3RowValue, nil + case bytes.Equal(key, data6IndexKey): + return data3RowValue, nil + case bytes.Equal(key, data7RowKey): + return data7RowValue, nil + default: + return nil, fmt.Errorf("key %v is not expected", key) + } + }, + func(ctx context.Context, key []byte) error { + fnDeleteKeyCount.Add(1) + if !bytes.Equal(key, data2NonclusteredKey) && !bytes.Equal(key, data6NonclusteredKey) && !bytes.Equal(key, data2IndexKey) && !bytes.Equal(key, data3RowKey) && !bytes.Equal(key, data6IndexKey) && !bytes.Equal(key, data7RowKey) { + return fmt.Errorf("key %v is not expected", key) + } + return nil + }, + ) + require.NoError(t, err) + require.Equal(t, int32(16), fnGetLatestCount.Load()) + require.Equal(t, int32(6), fnDeleteKeyCount.Load()) + err = mockDB.ExpectationsWereMet() + require.NoError(t, err) +} + +func TestReplaceConflictOneKeyNonclusteredPk(t *testing.T) { + p := parser.New() + node, _, err := p.ParseSQL("create table a (a int primary key nonclustered, b int not null, c text, key key_b(b));") + require.NoError(t, err) + mockSctx := mock.NewContext() + mockSctx.GetSessionVars().EnableClusteredIndex = variable.ClusteredIndexDefModeOff + info, err := ddl.MockTableInfo(mockSctx, node[0].(*ast.CreateTableStmt), 108) + require.NoError(t, err) + info.State = model.StatePublic + require.False(t, info.PKIsHandle) + tbl, err := tables.TableFromMeta(tidbkv.NewPanickingAllocators(0), info) + require.NoError(t, err) + require.False(t, tbl.Meta().HasClusteredIndex()) + + sessionOpts := encode.SessionOptions{ + SQLMode: mysql.ModeStrictAllTables, + Timestamp: 1234567890, + } + + encoder, err := tidbkv.NewBaseKVEncoder(&encode.EncodingConfig{ + Table: tbl, + SessionOptions: sessionOpts, + Logger: log.L(), + }) + require.NoError(t, err) + encoder.SessionCtx.GetSessionVars().RowEncoder.Enable = true + + data1 := []types.Datum{ + types.NewIntDatum(1), + types.NewIntDatum(6), + types.NewStringDatum("1.csv"), + types.NewIntDatum(1), + } + data2 := []types.Datum{ + types.NewIntDatum(2), + types.NewIntDatum(6), + types.NewStringDatum("2.csv"), + types.NewIntDatum(2), + } + data3 := []types.Datum{ + types.NewIntDatum(3), + types.NewIntDatum(3), + types.NewStringDatum("3.csv"), + types.NewIntDatum(3), + } + data4 := []types.Datum{ + types.NewIntDatum(3), + types.NewIntDatum(4), + types.NewStringDatum("4.csv"), + types.NewIntDatum(4), + } + data5 := []types.Datum{ + types.NewIntDatum(5), + types.NewIntDatum(4), + types.NewStringDatum("5.csv"), + types.NewIntDatum(5), + } + _, err = encoder.Table.AddRecord(encoder.SessionCtx, data1) + require.NoError(t, err) + _, err = encoder.Table.AddRecord(encoder.SessionCtx, data2) + require.NoError(t, err) + _, err = encoder.Table.AddRecord(encoder.SessionCtx, data3) + require.NoError(t, err) + _, err = encoder.Table.AddRecord(encoder.SessionCtx, data4) + require.NoError(t, err) + _, err = encoder.Table.AddRecord(encoder.SessionCtx, data5) + require.NoError(t, err) + kvPairs := encoder.SessionCtx.TakeKvPairs() + + data3IndexKey := kvPairs.Pairs[8].Key + data3IndexValue := kvPairs.Pairs[8].Val + data4IndexValue := kvPairs.Pairs[11].Val + data3RowKey := kvPairs.Pairs[6].Key + data4RowKey := kvPairs.Pairs[9].Key + data4RowValue := kvPairs.Pairs[9].Val + data4NonclusteredKey := kvPairs.Pairs[10].Key + data4NonclusteredValue := kvPairs.Pairs[10].Val + + db, mockDB, err := sqlmock.New() + require.NoError(t, err) + defer func() { + _ = db.Close() + }() + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + 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_v2.*"). + WillReturnResult(sqlmock.NewResult(2, 1)) + mockDB.ExpectQuery("\\QSELECT raw_key, index_name, raw_value, raw_handle FROM `lightning_task_info`.conflict_error_v2 WHERE table_name = ? AND is_data_kv = 0 ORDER BY raw_key\\E"). + WillReturnRows(sqlmock.NewRows([]string{"raw_key", "index_name", "raw_value", "raw_handle"}). + AddRow(data3IndexKey, "PRIMARY", data3IndexValue, data3RowKey). + AddRow(data3IndexKey, "PRIMARY", data4IndexValue, data4RowKey)) + mockDB.ExpectBegin() + mockDB.ExpectExec("INSERT INTO `lightning_task_info`\\.conflict_error_v2.*"). + WithArgs(0, "a", nil, nil, data4RowKey, data4RowValue, 1). + WillReturnResult(driver.ResultNoRows) + mockDB.ExpectCommit() + mockDB.ExpectQuery("\\QSELECT raw_key, raw_value FROM `lightning_task_info`.conflict_error_v2 WHERE table_name = ? AND is_data_kv = 1 ORDER BY raw_key\\E"). + WillReturnRows(sqlmock.NewRows([]string{"raw_key", "raw_value"}). + AddRow(data4RowKey, data4RowValue)) + + cfg := config.NewConfig() + cfg.TikvImporter.DuplicateResolution = config.DupeResAlgReplace + cfg.App.TaskInfoSchemaName = "lightning_task_info" + em := errormanager.New(db, cfg, log.L()) + err = em.Init(ctx) + require.NoError(t, err) + + fnGetLatestCount := atomic.NewInt32(0) + fnDeleteKeyCount := atomic.NewInt32(0) + pool := utils.NewWorkerPool(16, "resolve duplicate rows by replace") + err = em.ReplaceConflictKeys( + ctx, tbl, "a", pool, + func(ctx context.Context, key []byte) ([]byte, error) { + fnGetLatestCount.Add(1) + switch { + case bytes.Equal(key, data3IndexKey): + return data3IndexValue, nil + case bytes.Equal(key, data4RowKey): + if fnGetLatestCount.String() == "3" { + return data4RowValue, nil + } else { + return nil, tikverr.ErrNotExist + } + case bytes.Equal(key, data4NonclusteredKey): + return data4NonclusteredValue, nil + default: + return nil, fmt.Errorf("key %v is not expected", key) + } + }, + func(ctx context.Context, key []byte) error { + fnDeleteKeyCount.Add(1) + if !bytes.Equal(key, data4RowKey) && !bytes.Equal(key, data4NonclusteredKey) { + return fmt.Errorf("key %v is not expected", key) + } + return nil + }, + ) + require.NoError(t, err) + require.Equal(t, int32(7), fnGetLatestCount.Load()) + require.Equal(t, int32(2), fnDeleteKeyCount.Load()) + err = mockDB.ExpectationsWereMet() + require.NoError(t, err) +} + +func TestReplaceConflictOneUniqueKeyNonclusteredPk(t *testing.T) { + p := parser.New() + node, _, err := p.ParseSQL("create table a (a int primary key nonclustered, b int not null, c text, unique key uni_b(b));") + require.NoError(t, err) + mockSctx := mock.NewContext() + mockSctx.GetSessionVars().EnableClusteredIndex = variable.ClusteredIndexDefModeOff + info, err := ddl.MockTableInfo(mockSctx, node[0].(*ast.CreateTableStmt), 108) + require.NoError(t, err) + info.State = model.StatePublic + require.False(t, info.PKIsHandle) + tbl, err := tables.TableFromMeta(tidbkv.NewPanickingAllocators(0), info) + require.NoError(t, err) + require.False(t, tbl.Meta().HasClusteredIndex()) + + sessionOpts := encode.SessionOptions{ + SQLMode: mysql.ModeStrictAllTables, + Timestamp: 1234567890, + } + + encoder, err := tidbkv.NewBaseKVEncoder(&encode.EncodingConfig{ + Table: tbl, + SessionOptions: sessionOpts, + Logger: log.L(), + }) + require.NoError(t, err) + encoder.SessionCtx.GetSessionVars().RowEncoder.Enable = true + + data1 := []types.Datum{ + types.NewIntDatum(1), + types.NewIntDatum(6), + types.NewStringDatum("1.csv"), + types.NewIntDatum(1), + } + data2 := []types.Datum{ + types.NewIntDatum(2), + types.NewIntDatum(6), + types.NewStringDatum("2.csv"), + types.NewIntDatum(2), + } + data3 := []types.Datum{ + types.NewIntDatum(3), + types.NewIntDatum(3), + types.NewStringDatum("3.csv"), + types.NewIntDatum(3), + } + data4 := []types.Datum{ + types.NewIntDatum(3), + types.NewIntDatum(4), + types.NewStringDatum("4.csv"), + types.NewIntDatum(4), + } + data5 := []types.Datum{ + types.NewIntDatum(5), + types.NewIntDatum(4), + types.NewStringDatum("5.csv"), + types.NewIntDatum(5), + } + _, err = encoder.Table.AddRecord(encoder.SessionCtx, data1) + require.NoError(t, err) + _, err = encoder.Table.AddRecord(encoder.SessionCtx, data2) + require.NoError(t, err) + _, err = encoder.Table.AddRecord(encoder.SessionCtx, data3) + require.NoError(t, err) + _, err = encoder.Table.AddRecord(encoder.SessionCtx, data4) + require.NoError(t, err) + _, err = encoder.Table.AddRecord(encoder.SessionCtx, data5) + require.NoError(t, err) + kvPairs := encoder.SessionCtx.TakeKvPairs() + + data1RowKey := kvPairs.Pairs[0].Key + data2RowKey := kvPairs.Pairs[3].Key + data2RowValue := kvPairs.Pairs[3].Val + data3RowKey := kvPairs.Pairs[6].Key + data4RowKey := kvPairs.Pairs[9].Key + data4RowValue := kvPairs.Pairs[9].Val + data5RowKey := kvPairs.Pairs[12].Key + data5RowValue := kvPairs.Pairs[12].Val + + data2IndexKey := kvPairs.Pairs[5].Key + data2IndexValue := kvPairs.Pairs[5].Val + data3IndexKey := kvPairs.Pairs[8].Key + data3IndexValue := kvPairs.Pairs[8].Val + data5IndexKey := kvPairs.Pairs[14].Key + data5IndexValue := kvPairs.Pairs[14].Val + + data1NonclusteredKey := kvPairs.Pairs[1].Key + data1NonclusteredValue := kvPairs.Pairs[1].Val + data2NonclusteredValue := kvPairs.Pairs[4].Val + data4NonclusteredKey := kvPairs.Pairs[10].Key + data4NonclusteredValue := kvPairs.Pairs[10].Val + data5NonclusteredValue := kvPairs.Pairs[13].Val + + db, mockDB, err := sqlmock.New() + require.NoError(t, err) + defer func() { + _ = db.Close() + }() + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + 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_v2.*"). + WillReturnResult(sqlmock.NewResult(2, 1)) + mockDB.ExpectQuery("\\QSELECT raw_key, index_name, raw_value, raw_handle FROM `lightning_task_info`.conflict_error_v2 WHERE table_name = ? AND is_data_kv = 0 ORDER BY raw_key\\E"). + WillReturnRows(sqlmock.NewRows([]string{"raw_key", "index_name", "raw_value", "raw_handle"}). + AddRow(data4NonclusteredKey, "uni_b", data4NonclusteredValue, data4RowKey). + AddRow(data4NonclusteredKey, "uni_b", data5NonclusteredValue, data5RowKey). + AddRow(data1NonclusteredKey, "uni_b", data1NonclusteredValue, data1RowKey). + AddRow(data1NonclusteredKey, "uni_b", data2NonclusteredValue, data2RowKey). + AddRow(data3IndexKey, "PRIMARY", data3IndexValue, data3RowKey). + AddRow(data3IndexKey, "PRIMARY", data4NonclusteredValue, data4RowKey)) + mockDB.ExpectBegin() + mockDB.ExpectExec("INSERT INTO `lightning_task_info`\\.conflict_error_v2.*"). + WithArgs(0, "a", nil, nil, data5RowKey, data5RowValue, 1). + WillReturnResult(driver.ResultNoRows) + mockDB.ExpectCommit() + mockDB.ExpectBegin() + mockDB.ExpectExec("INSERT INTO `lightning_task_info`\\.conflict_error_v2.*"). + WithArgs(0, "a", nil, nil, data2RowKey, data2RowValue, 1). + WillReturnResult(driver.ResultNoRows) + mockDB.ExpectCommit() + mockDB.ExpectBegin() + mockDB.ExpectExec("INSERT INTO `lightning_task_info`\\.conflict_error_v2.*"). + WithArgs(0, "a", nil, nil, data4RowKey, data4RowValue, 1). + WillReturnResult(driver.ResultNoRows) + mockDB.ExpectCommit() + mockDB.ExpectQuery("\\QSELECT raw_key, raw_value FROM `lightning_task_info`.conflict_error_v2 WHERE table_name = ? AND is_data_kv = 1 ORDER BY raw_key\\E"). + WillReturnRows(sqlmock.NewRows([]string{"raw_key", "raw_value"}). + AddRow(data5RowKey, data5RowValue). + AddRow(data2RowKey, data2RowValue). + AddRow(data4RowKey, data4RowValue)) + + cfg := config.NewConfig() + cfg.TikvImporter.DuplicateResolution = config.DupeResAlgReplace + cfg.App.TaskInfoSchemaName = "lightning_task_info" + em := errormanager.New(db, cfg, log.L()) + err = em.Init(ctx) + require.NoError(t, err) + + fnGetLatestCount := atomic.NewInt32(0) + fnDeleteKeyCount := atomic.NewInt32(0) + pool := utils.NewWorkerPool(16, "resolve duplicate rows by replace") + err = em.ReplaceConflictKeys( + ctx, tbl, "a", pool, + func(ctx context.Context, key []byte) ([]byte, error) { + fnGetLatestCount.Add(1) + switch { + case bytes.Equal(key, data4NonclusteredKey): + if fnGetLatestCount.String() != "20" { + return data4NonclusteredValue, nil + } else { + return nil, tikverr.ErrNotExist + } + case bytes.Equal(key, data5RowKey): + if fnGetLatestCount.String() == "3" { + return data5RowValue, nil + } else { + return nil, tikverr.ErrNotExist + } + case bytes.Equal(key, data1NonclusteredKey): + return data1NonclusteredValue, nil + case bytes.Equal(key, data2RowKey): + if fnGetLatestCount.String() == "6" { + return data2RowValue, nil + } else { + return nil, tikverr.ErrNotExist + } + case bytes.Equal(key, data3IndexKey): + return data3IndexValue, nil + case bytes.Equal(key, data4RowKey): + return data4RowValue, nil + case bytes.Equal(key, data2IndexKey): + return data2IndexValue, nil + case bytes.Equal(key, data5IndexKey): + return data5IndexValue, nil + default: + return nil, fmt.Errorf("key %x is not expected", key) + } + }, + func(ctx context.Context, key []byte) error { + fnDeleteKeyCount.Add(1) + if !bytes.Equal(key, data5RowKey) && !bytes.Equal(key, data2RowKey) && !bytes.Equal(key, data4RowKey) && !bytes.Equal(key, data2IndexKey) && !bytes.Equal(key, data4NonclusteredKey) && !bytes.Equal(key, data5IndexKey) { + return fmt.Errorf("key %v is not expected", key) + } + return nil + }, + ) + require.NoError(t, err) + require.Equal(t, int32(18), fnGetLatestCount.Load()) + require.Equal(t, int32(5), fnDeleteKeyCount.Load()) + err = mockDB.ExpectationsWereMet() + require.NoError(t, err) +} + +func TestReplaceConflictOneUniqueKeyNonclusteredVarcharPk(t *testing.T) { + p := parser.New() + node, _, err := p.ParseSQL("create table a (a varchar(20) primary key nonclustered, b int not null, c text, unique key uni_b(b));") + require.NoError(t, err) + mockSctx := mock.NewContext() + mockSctx.GetSessionVars().EnableClusteredIndex = variable.ClusteredIndexDefModeOff + info, err := ddl.MockTableInfo(mockSctx, node[0].(*ast.CreateTableStmt), 108) + require.NoError(t, err) + info.State = model.StatePublic + require.False(t, info.PKIsHandle) + tbl, err := tables.TableFromMeta(tidbkv.NewPanickingAllocators(0), info) + require.NoError(t, err) + require.False(t, tbl.Meta().HasClusteredIndex()) + + sessionOpts := encode.SessionOptions{ + SQLMode: mysql.ModeStrictAllTables, + Timestamp: 1234567890, + } + + encoder, err := tidbkv.NewBaseKVEncoder(&encode.EncodingConfig{ + Table: tbl, + SessionOptions: sessionOpts, + Logger: log.L(), + }) + require.NoError(t, err) + encoder.SessionCtx.GetSessionVars().RowEncoder.Enable = true + + data1 := []types.Datum{ + types.NewStringDatum("x"), + types.NewIntDatum(6), + types.NewStringDatum("1.csv"), + types.NewIntDatum(1), + } + data2 := []types.Datum{ + types.NewStringDatum("y"), + types.NewIntDatum(6), + types.NewStringDatum("2.csv"), + types.NewIntDatum(2), + } + data3 := []types.Datum{ + types.NewStringDatum("z"), + types.NewIntDatum(3), + types.NewStringDatum("3.csv"), + types.NewIntDatum(3), + } + data4 := []types.Datum{ + types.NewStringDatum("z"), + types.NewIntDatum(4), + types.NewStringDatum("4.csv"), + types.NewIntDatum(4), + } + data5 := []types.Datum{ + types.NewStringDatum("t"), + types.NewIntDatum(4), + types.NewStringDatum("5.csv"), + types.NewIntDatum(5), + } + _, err = encoder.Table.AddRecord(encoder.SessionCtx, data1) + require.NoError(t, err) + _, err = encoder.Table.AddRecord(encoder.SessionCtx, data2) + require.NoError(t, err) + _, err = encoder.Table.AddRecord(encoder.SessionCtx, data3) + require.NoError(t, err) + _, err = encoder.Table.AddRecord(encoder.SessionCtx, data4) + require.NoError(t, err) + _, err = encoder.Table.AddRecord(encoder.SessionCtx, data5) + require.NoError(t, err) + kvPairs := encoder.SessionCtx.TakeKvPairs() + + data1RowKey := kvPairs.Pairs[0].Key + data2RowKey := kvPairs.Pairs[3].Key + data2RowValue := kvPairs.Pairs[3].Val + data3RowKey := kvPairs.Pairs[6].Key + data4RowKey := kvPairs.Pairs[9].Key + data4RowValue := kvPairs.Pairs[9].Val + data5RowKey := kvPairs.Pairs[12].Key + data5RowValue := kvPairs.Pairs[12].Val + + data2IndexKey := kvPairs.Pairs[5].Key + data2IndexValue := kvPairs.Pairs[5].Val + data3IndexKey := kvPairs.Pairs[8].Key + data3IndexValue := kvPairs.Pairs[8].Val + data4IndexValue := kvPairs.Pairs[11].Val + data5IndexKey := kvPairs.Pairs[14].Key + data5IndexValue := kvPairs.Pairs[14].Val + + data1NonclusteredKey := kvPairs.Pairs[1].Key + data1NonclusteredValue := kvPairs.Pairs[1].Val + data2NonclusteredValue := kvPairs.Pairs[4].Val + data4NonclusteredKey := kvPairs.Pairs[10].Key + data4NonclusteredValue := kvPairs.Pairs[10].Val + data5NonclusteredValue := kvPairs.Pairs[13].Val + + db, mockDB, err := sqlmock.New() + require.NoError(t, err) + defer func() { + _ = db.Close() + }() + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + 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_v2.*"). + WillReturnResult(sqlmock.NewResult(2, 1)) + mockDB.ExpectQuery("\\QSELECT raw_key, index_name, raw_value, raw_handle FROM `lightning_task_info`.conflict_error_v2 WHERE table_name = ? AND is_data_kv = 0 ORDER BY raw_key\\E"). + WillReturnRows(sqlmock.NewRows([]string{"raw_key", "index_name", "raw_value", "raw_handle"}). + AddRow(data4NonclusteredKey, "uni_b", data4NonclusteredValue, data4RowKey). + AddRow(data4NonclusteredKey, "uni_b", data5NonclusteredValue, data5RowKey). + AddRow(data1NonclusteredKey, "uni_b", data1NonclusteredValue, data1RowKey). + AddRow(data1NonclusteredKey, "uni_b", data2NonclusteredValue, data2RowKey). + AddRow(data3IndexKey, "PRIMARY", data3IndexValue, data3RowKey). + AddRow(data3IndexKey, "PRIMARY", data4IndexValue, data4RowKey)) + mockDB.ExpectBegin() + mockDB.ExpectExec("INSERT INTO `lightning_task_info`\\.conflict_error_v2.*"). + WithArgs(0, "a", nil, nil, data5RowKey, data5RowValue, 1). + WillReturnResult(driver.ResultNoRows) + mockDB.ExpectCommit() + mockDB.ExpectBegin() + mockDB.ExpectExec("INSERT INTO `lightning_task_info`\\.conflict_error_v2.*"). + WithArgs(0, "a", nil, nil, data2RowKey, data2RowValue, 1). + WillReturnResult(driver.ResultNoRows) + mockDB.ExpectCommit() + mockDB.ExpectBegin() + mockDB.ExpectExec("INSERT INTO `lightning_task_info`\\.conflict_error_v2.*"). + WithArgs(0, "a", nil, nil, data4RowKey, data4RowValue, 1). + WillReturnResult(driver.ResultNoRows) + mockDB.ExpectCommit() + mockDB.ExpectQuery("\\QSELECT raw_key, raw_value FROM `lightning_task_info`.conflict_error_v2 WHERE table_name = ? AND is_data_kv = 1 ORDER BY raw_key\\E"). + WillReturnRows(sqlmock.NewRows([]string{"raw_key", "raw_value"}). + AddRow(data5RowKey, data5RowValue). + AddRow(data2RowKey, data2RowValue). + AddRow(data4RowKey, data4RowValue)) + + cfg := config.NewConfig() + cfg.TikvImporter.DuplicateResolution = config.DupeResAlgReplace + cfg.App.TaskInfoSchemaName = "lightning_task_info" + em := errormanager.New(db, cfg, log.L()) + err = em.Init(ctx) + require.NoError(t, err) + + fnGetLatestCount := atomic.NewInt32(0) + fnDeleteKeyCount := atomic.NewInt32(0) + pool := utils.NewWorkerPool(16, "resolve duplicate rows by replace") + err = em.ReplaceConflictKeys( + ctx, tbl, "a", pool, + func(ctx context.Context, key []byte) ([]byte, error) { + fnGetLatestCount.Add(1) + switch { + case bytes.Equal(key, data4NonclusteredKey): + if fnGetLatestCount.String() != "20" { + return data4NonclusteredValue, nil + } else { + return nil, tikverr.ErrNotExist + } + case bytes.Equal(key, data5RowKey): + if fnGetLatestCount.String() == "3" { + return data5RowValue, nil + } else { + return nil, tikverr.ErrNotExist + } + case bytes.Equal(key, data1NonclusteredKey): + return data1NonclusteredValue, nil + case bytes.Equal(key, data2RowKey): + if fnGetLatestCount.String() == "6" { + return data2RowValue, nil + } else { + return nil, tikverr.ErrNotExist + } + case bytes.Equal(key, data3IndexKey): + return data3IndexValue, nil + case bytes.Equal(key, data4RowKey): + if fnGetLatestCount.String() == "9" { + return data4RowValue, nil + } else { + return nil, tikverr.ErrNotExist + } + case bytes.Equal(key, data2IndexKey): + return data2IndexValue, nil + case bytes.Equal(key, data5IndexKey): + return data5IndexValue, nil + default: + return nil, fmt.Errorf("key %x is not expected", key) + } + }, + func(ctx context.Context, key []byte) error { + fnDeleteKeyCount.Add(1) + if !bytes.Equal(key, data5RowKey) && !bytes.Equal(key, data2RowKey) && !bytes.Equal(key, data4RowKey) && !bytes.Equal(key, data2IndexKey) && !bytes.Equal(key, data4NonclusteredKey) && !bytes.Equal(key, data5IndexKey) { + return fmt.Errorf("key %v is not expected", key) + } + return nil + }, + ) + require.NoError(t, err) + require.Equal(t, int32(21), fnGetLatestCount.Load()) + require.Equal(t, int32(5), fnDeleteKeyCount.Load()) + err = mockDB.ExpectationsWereMet() + require.NoError(t, err) +} diff --git a/br/pkg/lightning/importer/BUILD.bazel b/br/pkg/lightning/importer/BUILD.bazel index 6132a4e4cc399..3c7a9ce68ab38 100644 --- a/br/pkg/lightning/importer/BUILD.bazel +++ b/br/pkg/lightning/importer/BUILD.bazel @@ -74,7 +74,6 @@ go_library( "//pkg/util/etcd", "//pkg/util/extsort", "//pkg/util/mock", - "//pkg/util/pdapi", "//pkg/util/regexpr-router", "//pkg/util/set", "@com_github_coreos_go_semver//semver", @@ -90,6 +89,7 @@ go_library( "@com_github_tikv_client_go_v2//config", "@com_github_tikv_client_go_v2//util", "@com_github_tikv_pd_client//:client", + "@com_github_tikv_pd_client//http", "@io_etcd_go_etcd_client_v3//:client", "@org_golang_google_grpc//:grpc", "@org_golang_google_grpc//codes", @@ -163,7 +163,6 @@ go_test( "//pkg/util/dbutil", "//pkg/util/extsort", "//pkg/util/mock", - "//pkg/util/pdapi", "//pkg/util/promutil", "//pkg/util/table-filter", "//pkg/util/table-router", @@ -179,6 +178,7 @@ go_test( "@com_github_tikv_client_go_v2//config", "@com_github_tikv_client_go_v2//testutils", "@com_github_tikv_pd_client//:client", + "@com_github_tikv_pd_client//http", "@com_github_xitongsys_parquet_go//writer", "@com_github_xitongsys_parquet_go_source//buffer", "@io_etcd_go_etcd_client_v3//:client", diff --git a/br/pkg/lightning/importer/get_pre_info.go b/br/pkg/lightning/importer/get_pre_info.go index 2e1f3cb980f4e..b7f0ac04cb8e1 100644 --- a/br/pkg/lightning/importer/get_pre_info.go +++ b/br/pkg/lightning/importer/get_pre_info.go @@ -50,8 +50,8 @@ import ( "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/dbterror" "github.com/pingcap/tidb/pkg/util/mock" - "github.com/pingcap/tidb/pkg/util/pdapi" pd "github.com/tikv/pd/client" + pdhttp "github.com/tikv/pd/client/http" "go.uber.org/zap" "golang.org/x/exp/maps" ) @@ -237,7 +237,7 @@ func (g *TargetInfoGetterImpl) GetTargetSysVariablesForImport(ctx context.Contex // It uses the PD interface through TLS to get the information. func (g *TargetInfoGetterImpl) GetReplicationConfig(ctx context.Context) (*pdtypes.ReplicationConfig, error) { result := new(pdtypes.ReplicationConfig) - if err := g.tls.WithHost(g.pdCli.GetLeaderAddr()).GetJSON(ctx, pdapi.ReplicateConfig, &result); err != nil { + if err := g.tls.WithHost(g.pdCli.GetLeaderAddr()).GetJSON(ctx, pdhttp.ReplicateConfig, &result); err != nil { return nil, errors.Trace(err) } return result, nil @@ -248,7 +248,7 @@ func (g *TargetInfoGetterImpl) GetReplicationConfig(ctx context.Context) (*pdtyp // It uses the PD interface through TLS to get the information. func (g *TargetInfoGetterImpl) GetStorageInfo(ctx context.Context) (*pdtypes.StoresInfo, error) { result := new(pdtypes.StoresInfo) - if err := g.tls.WithHost(g.pdCli.GetLeaderAddr()).GetJSON(ctx, pdapi.Stores, result); err != nil { + if err := g.tls.WithHost(g.pdCli.GetLeaderAddr()).GetJSON(ctx, pdhttp.Stores, result); err != nil { return nil, errors.Trace(err) } return result, nil @@ -259,7 +259,7 @@ func (g *TargetInfoGetterImpl) GetStorageInfo(ctx context.Context) (*pdtypes.Sto // It uses the PD interface through TLS to get the information. func (g *TargetInfoGetterImpl) GetEmptyRegionsInfo(ctx context.Context) (*pdtypes.RegionsInfo, error) { result := new(pdtypes.RegionsInfo) - if err := g.tls.WithHost(g.pdCli.GetLeaderAddr()).GetJSON(ctx, pdapi.EmptyRegions, &result); err != nil { + if err := g.tls.WithHost(g.pdCli.GetLeaderAddr()).GetJSON(ctx, pdhttp.EmptyRegions, &result); err != nil { return nil, errors.Trace(err) } return result, nil diff --git a/br/pkg/lightning/importer/precheck_impl.go b/br/pkg/lightning/importer/precheck_impl.go index 8ca5ba560d39c..517edd5f5e3cb 100644 --- a/br/pkg/lightning/importer/precheck_impl.go +++ b/br/pkg/lightning/importer/precheck_impl.go @@ -463,7 +463,7 @@ func (ci *largeFileCheckItem) Check(_ context.Context) (*precheck.CheckResult, e Item: ci.GetCheckItemID(), Severity: precheck.Warn, Passed: true, - Message: "Source csv files size is proper", + Message: "Source data files size is proper", } if !ci.cfg.Mydumper.StrictFormat { @@ -471,14 +471,14 @@ func (ci *largeFileCheckItem) Check(_ context.Context) (*precheck.CheckResult, e for _, t := range db.Tables { for _, f := range t.DataFiles { if f.FileMeta.RealSize > defaultCSVSize { - theResult.Message = fmt.Sprintf("large csv: %s file exists and it will slow down import performance", f.FileMeta.Path) + theResult.Message = fmt.Sprintf("large data file: %s file exists and it will slow down import performance", f.FileMeta.Path) theResult.Passed = false } } } } } else { - theResult.Message = "Skip the csv size check, because config.StrictFormat is true" + theResult.Message = "Skip the data file size check, because config.StrictFormat is true" } return theResult, nil } diff --git a/br/pkg/lightning/importer/table_import.go b/br/pkg/lightning/importer/table_import.go index 5cf39f26c1bde..c78763fbce375 100644 --- a/br/pkg/lightning/importer/table_import.go +++ b/br/pkg/lightning/importer/table_import.go @@ -71,6 +71,7 @@ type TableImporter struct { logger log.Logger kvStore tidbkv.Storage etcdCli *clientv3.Client + autoidCli *autoid.ClientDiscover // dupIgnoreRows tracks the rowIDs of rows that are duplicated and should be ignored. dupIgnoreRows extsort.ExternalSorter @@ -95,6 +96,7 @@ func NewTableImporter( if err != nil { return nil, errors.Annotatef(err, "failed to tables.TableFromMeta %s", tableName) } + autoidCli := autoid.NewClientDiscover(etcdCli) return &TableImporter{ tableName: tableName, @@ -105,6 +107,7 @@ func NewTableImporter( alloc: idAlloc, kvStore: kvStore, etcdCli: etcdCli, + autoidCli: autoidCli, logger: logger.With(zap.String("table", tableName)), ignoreColumns: ignoreColumns, }, nil @@ -328,9 +331,9 @@ func (tr *TableImporter) Store() tidbkv.Storage { return tr.kvStore } -// GetEtcdClient implements the autoid.Requirement interface. -func (tr *TableImporter) GetEtcdClient() *clientv3.Client { - return tr.etcdCli +// AutoIDClient implements the autoid.Requirement interface. +func (tr *TableImporter) AutoIDClient() *autoid.ClientDiscover { + return tr.autoidCli } // RebaseChunkRowIDs rebase the row id of the chunks. diff --git a/br/pkg/lightning/importer/table_import_test.go b/br/pkg/lightning/importer/table_import_test.go index 71fdacc9e3276..3891dcde52e30 100644 --- a/br/pkg/lightning/importer/table_import_test.go +++ b/br/pkg/lightning/importer/table_import_test.go @@ -64,13 +64,13 @@ import ( "github.com/pingcap/tidb/pkg/table/tables" "github.com/pingcap/tidb/pkg/types" tmock "github.com/pingcap/tidb/pkg/util/mock" - "github.com/pingcap/tidb/pkg/util/pdapi" "github.com/pingcap/tidb/pkg/util/promutil" filter "github.com/pingcap/tidb/pkg/util/table-filter" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" "github.com/tikv/client-go/v2/testutils" pd "github.com/tikv/pd/client" + pdhttp "github.com/tikv/pd/client/http" "go.uber.org/mock/gomock" ) @@ -1324,9 +1324,9 @@ func (s *tableRestoreSuite) TestCheckClusterRegion() { for i, ca := range testCases { server := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { var err error - if req.URL.Path == pdapi.Stores { + if req.URL.Path == pdhttp.Stores { _, err = w.Write(mustMarshal(ca.stores)) - } else if req.URL.Path == pdapi.EmptyRegions { + } else if req.URL.Path == pdhttp.EmptyRegions { _, err = w.Write(mustMarshal(ca.emptyRegions)) } else { w.WriteHeader(http.StatusNotFound) @@ -1388,14 +1388,14 @@ func (s *tableRestoreSuite) TestCheckHasLargeCSV() { }{ { true, - "(.*)Skip the csv size check, because config.StrictFormat is true(.*)", + "(.*)Skip the data file size check, because config.StrictFormat is true(.*)", true, 0, nil, }, { false, - "(.*)Source csv files size is proper(.*)", + "(.*)Source data files size is proper(.*)", true, 0, []*mydump.MDDatabaseMeta{ @@ -1416,7 +1416,7 @@ func (s *tableRestoreSuite) TestCheckHasLargeCSV() { }, { false, - "(.*)large csv: /testPath file exists(.*)", + "(.*)large data file: /testPath file exists(.*)", true, 1, []*mydump.MDDatabaseMeta{ diff --git a/br/pkg/lightning/log/BUILD.bazel b/br/pkg/lightning/log/BUILD.bazel index 215f55094fc4f..7ed3c01476c73 100644 --- a/br/pkg/lightning/log/BUILD.bazel +++ b/br/pkg/lightning/log/BUILD.bazel @@ -11,6 +11,8 @@ go_library( visibility = ["//visibility:public"], deps = [ "//pkg/util/logutil", + "@com_github_aws_aws_sdk_go//aws/awserr", + "@com_github_aws_aws_sdk_go//aws/request", "@com_github_pingcap_errors//:errors", "@com_github_pingcap_log//:log", "@org_golang_google_grpc//codes", @@ -30,12 +32,17 @@ go_test( ], flaky = True, importpath = "github.com/pingcap/tidb/br/pkg/lightning/log_test", - shard_count = 4, + shard_count = 5, deps = [ ":log", "//pkg/util/logutil", + "@com_github_aws_aws_sdk_go//aws/awserr", + "@com_github_aws_aws_sdk_go//aws/request", + "@com_github_pingcap_errors//:errors", "@com_github_pingcap_log//:log", "@com_github_stretchr_testify//require", + "@org_golang_google_grpc//codes", + "@org_golang_google_grpc//status", "@org_uber_go_zap//:zap", "@org_uber_go_zap//zapcore", ], diff --git a/br/pkg/lightning/log/log.go b/br/pkg/lightning/log/log.go index 913e1296dd359..bcbfa994bcba8 100644 --- a/br/pkg/lightning/log/log.go +++ b/br/pkg/lightning/log/log.go @@ -20,6 +20,8 @@ import ( "os" "time" + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/request" "github.com/pingcap/errors" pclog "github.com/pingcap/log" "github.com/pingcap/tidb/pkg/util/logutil" @@ -177,8 +179,19 @@ func With(fields ...zap.Field) Logger { // IsContextCanceledError returns whether the error is caused by context // cancellation. func IsContextCanceledError(err error) bool { + if err == nil { + return false + } err = errors.Cause(err) - return err == context.Canceled || status.Code(err) == codes.Canceled + if err == context.Canceled || status.Code(err) == codes.Canceled { + return true + } + + // see https://github.com/aws/aws-sdk-go/blob/9d1f49ba63bdac44a5b9f4d736e79d792e389e8a/aws/credentials/credentials.go#L246-L249 + if v, ok := err.(awserr.Error); ok { + return v.Code() == request.CanceledErrorCode + } + return false } // Begin marks the beginning of a task. diff --git a/br/pkg/lightning/log/log_test.go b/br/pkg/lightning/log/log_test.go index 69706d50d9c29..25a9507fd0a04 100644 --- a/br/pkg/lightning/log/log_test.go +++ b/br/pkg/lightning/log/log_test.go @@ -15,15 +15,21 @@ package log_test import ( + "context" "io" "os" "testing" + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/pingcap/errors" zaplog "github.com/pingcap/log" "github.com/pingcap/tidb/br/pkg/lightning/log" "github.com/pingcap/tidb/pkg/util/logutil" "github.com/stretchr/testify/require" "go.uber.org/zap" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" ) func TestConfigAdjust(t *testing.T) { @@ -86,3 +92,13 @@ func TestInitStdoutLogger(t *testing.T) { // reset GRPCDebugEnvName require.NoError(t, os.Unsetenv(logutil.GRPCDebugEnvName)) } + +func TestIsContextCanceledError(t *testing.T) { + require.True(t, log.IsContextCanceledError(context.Canceled)) + require.True(t, log.IsContextCanceledError(status.Error(codes.Canceled, ""))) + require.True(t, log.IsContextCanceledError(errors.Annotate(context.Canceled, "foo"))) + require.True(t, log.IsContextCanceledError(awserr.New(request.CanceledErrorCode, "", nil))) + + require.False(t, log.IsContextCanceledError(awserr.New(request.ErrCodeRequestError, "", nil))) + require.False(t, log.IsContextCanceledError(nil)) +} diff --git a/br/pkg/lightning/mydump/loader_test.go b/br/pkg/lightning/mydump/loader_test.go index 2789eb838a64c..041f5593323e3 100644 --- a/br/pkg/lightning/mydump/loader_test.go +++ b/br/pkg/lightning/mydump/loader_test.go @@ -1130,17 +1130,17 @@ func TestSampleParquetDataSize(t *testing.T) { pwriter.PageSize = 8 * 1024 //8K pwriter.CompressionType = parquet.CompressionCodec_SNAPPY seed := time.Now().Unix() - t.Logf("seed: %d", seed) - rand.Seed(seed) + t.Logf("seed: %d. To reproduce the random behaviour, manually set `rand.New(rand.NewSource(seed))`", seed) + rnd := rand.New(rand.NewSource(seed)) totalRowSize := 0 for i := 0; i < 1000; i++ { - kl := rand.Intn(20) + 1 + kl := rnd.Intn(20) + 1 key := make([]byte, kl) - kl, err = rand.Read(key) + kl, err = rnd.Read(key) require.NoError(t, err) - vl := rand.Intn(20) + 1 + vl := rnd.Intn(20) + 1 value := make([]byte, vl) - vl, err = rand.Read(value) + vl, err = rnd.Read(value) require.NoError(t, err) totalRowSize += kl + vl + 8 diff --git a/br/pkg/lightning/tikv/BUILD.bazel b/br/pkg/lightning/tikv/BUILD.bazel index 457e04b66f79d..f13cdd3301b26 100644 --- a/br/pkg/lightning/tikv/BUILD.bazel +++ b/br/pkg/lightning/tikv/BUILD.bazel @@ -13,13 +13,13 @@ go_library( "//br/pkg/version", "//pkg/kv", "//pkg/parser/model", - "//pkg/util/pdapi", "@com_github_coreos_go_semver//semver", "@com_github_pingcap_errors//:errors", "@com_github_pingcap_kvproto//pkg/debugpb", "@com_github_pingcap_kvproto//pkg/import_sstpb", "@com_github_pingcap_kvproto//pkg/kvrpcpb", "@com_github_tikv_client_go_v2//util", + "@com_github_tikv_pd_client//http", "@org_golang_google_grpc//:grpc", "@org_golang_google_grpc//codes", "@org_golang_google_grpc//status", @@ -37,9 +37,9 @@ go_test( deps = [ ":tikv", "//br/pkg/lightning/common", - "//pkg/util/pdapi", "@com_github_coreos_go_semver//semver", "@com_github_pingcap_kvproto//pkg/import_sstpb", "@com_github_stretchr_testify//require", + "@com_github_tikv_pd_client//http", ], ) diff --git a/br/pkg/lightning/tikv/tikv.go b/br/pkg/lightning/tikv/tikv.go index 9a1e674ac992e..397e69795cb9c 100644 --- a/br/pkg/lightning/tikv/tikv.go +++ b/br/pkg/lightning/tikv/tikv.go @@ -32,8 +32,8 @@ import ( "github.com/pingcap/tidb/br/pkg/version" "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/parser/model" - "github.com/pingcap/tidb/pkg/util/pdapi" "github.com/tikv/client-go/v2/util" + pd "github.com/tikv/pd/client/http" "go.uber.org/zap" "golang.org/x/sync/errgroup" "google.golang.org/grpc" @@ -125,7 +125,7 @@ func ForAllStores( Store Store } } - err := tls.GetJSON(ctx, pdapi.Stores, &stores) + err := tls.GetJSON(ctx, pd.Stores, &stores) if err != nil { return err } diff --git a/br/pkg/lightning/tikv/tikv_test.go b/br/pkg/lightning/tikv/tikv_test.go index a4b192595b4b4..ff6c6eb5677a8 100644 --- a/br/pkg/lightning/tikv/tikv_test.go +++ b/br/pkg/lightning/tikv/tikv_test.go @@ -29,8 +29,8 @@ import ( "github.com/pingcap/kvproto/pkg/import_sstpb" "github.com/pingcap/tidb/br/pkg/lightning/common" kv "github.com/pingcap/tidb/br/pkg/lightning/tikv" - "github.com/pingcap/tidb/pkg/util/pdapi" "github.com/stretchr/testify/require" + pd "github.com/tikv/pd/client/http" ) var ( @@ -176,7 +176,7 @@ func TestCheckPDVersion(t *testing.T) { ctx := context.Background() mockServer := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { - require.Equal(t, pdapi.Version, req.URL.Path) + require.Equal(t, pd.Version, req.URL.Path) w.WriteHeader(http.StatusOK) _, err := w.Write([]byte(version)) require.NoError(t, err) @@ -230,7 +230,7 @@ func TestCheckTiKVVersion(t *testing.T) { ctx := context.Background() mockServer := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { - require.Equal(t, pdapi.Stores, req.URL.Path) + require.Equal(t, pd.Stores, req.URL.Path) w.WriteHeader(http.StatusOK) stores := make([]map[string]interface{}, 0, len(versions)) diff --git a/br/pkg/membuf/BUILD.bazel b/br/pkg/membuf/BUILD.bazel index d971a8408abbc..a6a2024306f54 100644 --- a/br/pkg/membuf/BUILD.bazel +++ b/br/pkg/membuf/BUILD.bazel @@ -13,5 +13,6 @@ go_test( srcs = ["buffer_test.go"], embed = [":membuf"], flaky = True, + shard_count = 3, deps = ["@com_github_stretchr_testify//require"], ) diff --git a/br/pkg/membuf/buffer.go b/br/pkg/membuf/buffer.go index 9c725f647e38b..58252f692e9d2 100644 --- a/br/pkg/membuf/buffer.go +++ b/br/pkg/membuf/buffer.go @@ -49,17 +49,17 @@ type Pool struct { // Option configures a pool. type Option func(p *Pool) -// WithPoolSize configures how many blocks cached by this pool. -func WithPoolSize(size int) Option { +// WithBlockNum configures how many blocks cached by this pool. +func WithBlockNum(num int) Option { return func(p *Pool) { - p.blockCache = make(chan []byte, size) + p.blockCache = make(chan []byte, num) } } // WithBlockSize configures the size of each block. -func WithBlockSize(size int) Option { +func WithBlockSize(bytes int) Option { return func(p *Pool) { - p.blockSize = size + p.blockSize = bytes } } @@ -110,11 +110,6 @@ func (p *Pool) release(b []byte) { } } -// NewBuffer creates a new buffer in current pool. -func (p *Pool) NewBuffer() *Buffer { - return &Buffer{pool: p, bufs: make([][]byte, 0, 128), curBufIdx: -1} -} - // Destroy frees all buffers. func (p *Pool) Destroy() { close(p.blockCache) @@ -130,51 +125,65 @@ func (p *Pool) TotalSize() int64 { // Buffer represents the reuse buffer. type Buffer struct { - pool *Pool - bufs [][]byte - curBuf []byte - curIdx int - curBufIdx int - curBufLen int + pool *Pool + blocks [][]byte + blockCntLimit int + curBlock []byte + curBlockIdx int + curIdx int } -// addBuf adds buffer to Buffer. -func (b *Buffer) addBuf() { - if b.curBufIdx < len(b.bufs)-1 { - b.curBufIdx++ - b.curBuf = b.bufs[b.curBufIdx] - } else { - buf := b.pool.acquire() - b.bufs = append(b.bufs, buf) - b.curBuf = buf - b.curBufIdx = len(b.bufs) - 1 +// BufferOption configures a buffer. +type BufferOption func(*Buffer) + +// WithMemoryLimit approximately limits the maximum memory size of this Buffer. +// Due to it use blocks to allocate memory, the actual memory size is +// blockSize*ceil(limit/blockSize). +// In order to keep compatibility, it will only restrict AllocBytesWithSliceLocation. +func WithMemoryLimit(limit uint64) BufferOption { + return func(b *Buffer) { + blockCntLimit := int(limit+uint64(b.pool.blockSize)-1) / b.pool.blockSize + b.blockCntLimit = blockCntLimit + b.blocks = make([][]byte, 0, blockCntLimit) } +} - b.curBufLen = len(b.curBuf) - b.curIdx = 0 +// NewBuffer creates a new buffer in current pool. +func (p *Pool) NewBuffer(opts ...BufferOption) *Buffer { + b := &Buffer{ + pool: p, + curBlockIdx: -1, + blockCntLimit: -1, + } + for _, opt := range opts { + opt(b) + } + if b.blocks == nil { + b.blocks = make([][]byte, 0, 128) + } + return b } // Reset resets the buffer. func (b *Buffer) Reset() { - if len(b.bufs) > 0 { - b.curBuf = b.bufs[0] - b.curBufLen = len(b.bufs[0]) - b.curBufIdx = 0 + if len(b.blocks) > 0 { + b.curBlock = b.blocks[0] + b.curBlockIdx = 0 b.curIdx = 0 } } // Destroy frees all buffers. func (b *Buffer) Destroy() { - for _, buf := range b.bufs { + for _, buf := range b.blocks { b.pool.release(buf) } - b.bufs = nil + b.blocks = nil } // TotalSize represents the total memory size of this Buffer. func (b *Buffer) TotalSize() int64 { - return int64(len(b.bufs) * b.pool.blockSize) + return int64(len(b.blocks) * b.pool.blockSize) } // AllocBytes allocates bytes with the given length. @@ -182,12 +191,66 @@ func (b *Buffer) AllocBytes(n int) []byte { if n > b.pool.largeAllocThreshold { return make([]byte, n) } - if b.curIdx+n > b.curBufLen { + if b.curIdx+n > len(b.curBlock) { b.addBuf() } idx := b.curIdx b.curIdx += n - return b.curBuf[idx:b.curIdx:b.curIdx] + return b.curBlock[idx:b.curIdx:b.curIdx] +} + +// addBuf adds buffer to Buffer. +func (b *Buffer) addBuf() { + if b.curBlockIdx < len(b.blocks)-1 { + b.curBlockIdx++ + b.curBlock = b.blocks[b.curBlockIdx] + } else { + buf := b.pool.acquire() + b.blocks = append(b.blocks, buf) + b.curBlock = buf + b.curBlockIdx = len(b.blocks) - 1 + } + + b.curIdx = 0 +} + +// SliceLocation is like a reflect.SliceHeader, but it's associated with a +// Buffer. The advantage is that it's smaller than a slice, and it doesn't +// contain a pointer thus more GC-friendly. +type SliceLocation struct { + bufIdx int32 + offset int32 + length int32 +} + +// AllocBytesWithSliceLocation is like AllocBytes, but it also returns a +// SliceLocation. The expected usage is after writing data into returned slice we +// do not store the slice itself, but only the SliceLocation. Later we can use +// the SliceLocation to get the slice again. When we have a large number of +// slices in memory this can improve performance. +// nil returned slice means allocation failed. +func (b *Buffer) AllocBytesWithSliceLocation(n int) ([]byte, SliceLocation) { + if n > b.pool.blockSize { + return nil, SliceLocation{} + } + + if b.curIdx+n > len(b.curBlock) { + if b.blockCntLimit >= 0 && len(b.blocks) >= b.blockCntLimit { + return nil, SliceLocation{} + } + b.addBuf() + } + blockIdx := int32(b.curBlockIdx) + offset := int32(b.curIdx) + loc := SliceLocation{bufIdx: blockIdx, offset: offset, length: int32(n)} + + idx := b.curIdx + b.curIdx += n + return b.curBlock[idx:b.curIdx:b.curIdx], loc +} + +func (b *Buffer) GetSlice(loc SliceLocation) []byte { + return b.blocks[loc.bufIdx][loc.offset : loc.offset+loc.length] } // AddBytes adds the bytes into this Buffer. diff --git a/br/pkg/membuf/buffer_test.go b/br/pkg/membuf/buffer_test.go index 0d8e3ba06e609..1051e43e11b0e 100644 --- a/br/pkg/membuf/buffer_test.go +++ b/br/pkg/membuf/buffer_test.go @@ -15,7 +15,11 @@ package membuf import ( + "bytes" "crypto/rand" + rand2 "math/rand" + "runtime" + "slices" "testing" "github.com/stretchr/testify/require" @@ -38,7 +42,7 @@ func (t *testAllocator) Free(_ []byte) { func TestBufferPool(t *testing.T) { allocator := &testAllocator{} pool := NewPool( - WithPoolSize(2), + WithBlockNum(2), WithAllocator(allocator), WithBlockSize(1024), WithLargeAllocThreshold(512), @@ -90,3 +94,159 @@ func TestBufferIsolation(t *testing.T) { require.Equal(t, b3, b2) require.NotEqual(t, b2, b1) } + +func TestBufferMemLimit(t *testing.T) { + pool := NewPool(WithBlockSize(10)) + defer pool.Destroy() + // the actual memory limit is 10 bytes. + bytesBuf := pool.NewBuffer(WithMemoryLimit(5)) + + got, _ := bytesBuf.AllocBytesWithSliceLocation(9) + require.NotNil(t, got) + got, _ = bytesBuf.AllocBytesWithSliceLocation(3) + require.Nil(t, got) + + bytesBuf.Destroy() + + // exactly 2 block + bytesBuf = pool.NewBuffer(WithMemoryLimit(20)) + + got, _ = bytesBuf.AllocBytesWithSliceLocation(9) + require.NotNil(t, got) + got, _ = bytesBuf.AllocBytesWithSliceLocation(9) + require.NotNil(t, got) + got, _ = bytesBuf.AllocBytesWithSliceLocation(2) + require.Nil(t, got) +} + +const dataNum = 100 * 1024 * 1024 + +func BenchmarkStoreSlice(b *testing.B) { + data := make([][]byte, dataNum) + for i := 0; i < b.N; i++ { + func() { + pool := NewPool() + defer pool.Destroy() + bytesBuf := pool.NewBuffer() + defer bytesBuf.Destroy() + + for j := range data { + data[j] = bytesBuf.AllocBytes(10) + } + }() + } +} + +func BenchmarkStoreLocation(b *testing.B) { + data := make([]SliceLocation, dataNum) + for i := 0; i < b.N; i++ { + func() { + pool := NewPool() + defer pool.Destroy() + bytesBuf := pool.NewBuffer() + defer bytesBuf.Destroy() + + for j := range data { + _, data[j] = bytesBuf.AllocBytesWithSliceLocation(10) + } + }() + } +} + +const sortDataNum = 1024 * 1024 + +func BenchmarkSortSlice(b *testing.B) { + data := make([][]byte, sortDataNum) + // fixed seed for benchmark + rnd := rand2.New(rand2.NewSource(6716)) + + for i := 0; i < b.N; i++ { + func() { + pool := NewPool() + defer pool.Destroy() + bytesBuf := pool.NewBuffer() + defer bytesBuf.Destroy() + + for j := range data { + data[j] = bytesBuf.AllocBytes(10) + rnd.Read(data[j]) + } + slices.SortFunc(data, func(a, b []byte) int { + return bytes.Compare(a, b) + }) + }() + } +} + +func BenchmarkSortLocation(b *testing.B) { + data := make([]SliceLocation, sortDataNum) + // fixed seed for benchmark + rnd := rand2.New(rand2.NewSource(6716)) + + for i := 0; i < b.N; i++ { + func() { + pool := NewPool() + defer pool.Destroy() + bytesBuf := pool.NewBuffer() + defer bytesBuf.Destroy() + + for j := range data { + var buf []byte + buf, data[j] = bytesBuf.AllocBytesWithSliceLocation(10) + rnd.Read(buf) + } + slices.SortFunc(data, func(a, b SliceLocation) int { + return bytes.Compare(bytesBuf.GetSlice(a), bytesBuf.GetSlice(b)) + }) + }() + } +} + +func BenchmarkSortSliceWithGC(b *testing.B) { + data := make([][]byte, sortDataNum) + // fixed seed for benchmark + rnd := rand2.New(rand2.NewSource(6716)) + + for i := 0; i < b.N; i++ { + func() { + pool := NewPool() + defer pool.Destroy() + bytesBuf := pool.NewBuffer() + defer bytesBuf.Destroy() + + for j := range data { + data[j] = bytesBuf.AllocBytes(10) + rnd.Read(data[j]) + } + runtime.GC() + slices.SortFunc(data, func(a, b []byte) int { + return bytes.Compare(a, b) + }) + }() + } +} + +func BenchmarkSortLocationWithGC(b *testing.B) { + data := make([]SliceLocation, sortDataNum) + // fixed seed for benchmark + rnd := rand2.New(rand2.NewSource(6716)) + + for i := 0; i < b.N; i++ { + func() { + pool := NewPool() + defer pool.Destroy() + bytesBuf := pool.NewBuffer() + defer bytesBuf.Destroy() + + for j := range data { + var buf []byte + buf, data[j] = bytesBuf.AllocBytesWithSliceLocation(10) + rnd.Read(buf) + } + runtime.GC() + slices.SortFunc(data, func(a, b SliceLocation) int { + return bytes.Compare(bytesBuf.GetSlice(a), bytesBuf.GetSlice(b)) + }) + }() + } +} diff --git a/br/pkg/metautil/metafile.go b/br/pkg/metautil/metafile.go index 2521677167d26..b915da8fa10d6 100644 --- a/br/pkg/metautil/metafile.go +++ b/br/pkg/metautil/metafile.go @@ -545,6 +545,9 @@ type MetaWriter struct { // records the total datafile size totalDataFileSize int + + // records the total metafile size for backupmeta v2 + totalMetaFileSize int } // NewMetaWriter creates MetaWriter. @@ -682,6 +685,9 @@ func (writer *MetaWriter) FlushBackupMeta(ctx context.Context) error { writer.backupMeta.Version = MetaV1 } + // update the total size of backup files (include data files and meta files) + writer.backupMeta.BackupSize = writer.MetaFilesSize() + writer.ArchiveSize() + uint64(writer.backupMeta.Size()) + // Flush the writer.backupMeta to storage backupMetaData, err := proto.Marshal(writer.backupMeta) if err != nil { @@ -762,6 +768,7 @@ func (writer *MetaWriter) flushMetasV2(ctx context.Context, op AppendOp) error { return errors.Trace(err) } + writer.totalMetaFileSize += len(encyptedContent) if err = writer.storage.WriteFile(ctx, fname, encyptedContent); err != nil { return errors.Trace(err) } @@ -789,6 +796,12 @@ func (writer *MetaWriter) ArchiveSize() uint64 { return total } +// MetaFilesSize represents the size of meta files from backupmeta v2, +// must be called after everything finishes by `FinishWriteMetas`. +func (writer *MetaWriter) MetaFilesSize() uint64 { + return uint64(writer.totalMetaFileSize) +} + // Backupmeta clones a backupmeta. func (writer *MetaWriter) Backupmeta() *backuppb.BackupMeta { clone := proto.Clone(writer.backupMeta) diff --git a/br/pkg/pdutil/BUILD.bazel b/br/pkg/pdutil/BUILD.bazel index 24ce8ea2e809f..b9b42e7d534b0 100644 --- a/br/pkg/pdutil/BUILD.bazel +++ b/br/pkg/pdutil/BUILD.bazel @@ -15,7 +15,6 @@ go_library( "//pkg/store/pdtypes", "//pkg/tablecodec", "//pkg/util/codec", - "//pkg/util/pdapi", "@com_github_coreos_go_semver//semver", "@com_github_docker_go_units//:go-units", "@com_github_google_uuid//:uuid", @@ -24,6 +23,7 @@ go_library( "@com_github_pingcap_failpoint//:failpoint", "@com_github_pingcap_log//:log", "@com_github_tikv_pd_client//:client", + "@com_github_tikv_pd_client//http", "@org_golang_google_grpc//:grpc", "@org_uber_go_zap//:zap", ], @@ -43,11 +43,11 @@ go_test( "//pkg/store/pdtypes", "//pkg/testkit/testsetup", "//pkg/util/codec", - "//pkg/util/pdapi", "@com_github_coreos_go_semver//semver", "@com_github_pingcap_failpoint//:failpoint", "@com_github_pingcap_kvproto//pkg/metapb", "@com_github_stretchr_testify//require", + "@com_github_tikv_pd_client//http", "@org_uber_go_goleak//:goleak", ], ) diff --git a/br/pkg/pdutil/pd.go b/br/pkg/pdutil/pd.go index 8f88fa73249b0..7eae3a0652989 100644 --- a/br/pkg/pdutil/pd.go +++ b/br/pkg/pdutil/pd.go @@ -31,8 +31,8 @@ import ( "github.com/pingcap/tidb/br/pkg/lightning/common" "github.com/pingcap/tidb/pkg/store/pdtypes" "github.com/pingcap/tidb/pkg/util/codec" - "github.com/pingcap/tidb/pkg/util/pdapi" pd "github.com/tikv/pd/client" + pdhttp "github.com/tikv/pd/client/http" "go.uber.org/zap" "google.golang.org/grpc" ) @@ -265,7 +265,7 @@ func NewPdController( } } processedAddrs = append(processedAddrs, addr) - versionBytes, failure = pdRequest(ctx, addr, pdapi.ClusterVersion, cli, http.MethodGet, nil) + versionBytes, failure = pdRequest(ctx, addr, pdhttp.ClusterVersion, cli, http.MethodGet, nil) if failure == nil { break } @@ -362,7 +362,7 @@ func (p *PdController) GetClusterVersion(ctx context.Context) (string, error) { func (p *PdController) getClusterVersionWith(ctx context.Context, get pdHTTPRequest) (string, error) { var err error for _, addr := range p.getAllPDAddrs() { - v, e := get(ctx, addr, pdapi.ClusterVersion, p.cli, http.MethodGet, nil) + v, e := get(ctx, addr, pdhttp.ClusterVersion, p.cli, http.MethodGet, nil) if e != nil { err = e continue @@ -382,14 +382,14 @@ func (p *PdController) getRegionCountWith( ctx context.Context, get pdHTTPRequest, startKey, endKey []byte, ) (int, error) { // TiKV reports region start/end keys to PD in memcomparable-format. - var start, end string - start = url.QueryEscape(string(codec.EncodeBytes(nil, startKey))) + var start, end []byte + start = codec.EncodeBytes(nil, startKey) if len(endKey) != 0 { // Empty end key means the max. - end = url.QueryEscape(string(codec.EncodeBytes(nil, endKey))) + end = codec.EncodeBytes(nil, endKey) } var err error for _, addr := range p.getAllPDAddrs() { - v, e := get(ctx, addr, pdapi.RegionStatsByStartEndKey(start, end), p.cli, http.MethodGet, nil) + v, e := get(ctx, addr, pdhttp.RegionStatsByKeyRange(pdhttp.NewKeyRange(start, end)), p.cli, http.MethodGet, nil) if e != nil { err = e continue @@ -413,7 +413,7 @@ func (p *PdController) getStoreInfoWith( ctx context.Context, get pdHTTPRequest, storeID uint64) (*pdtypes.StoreInfo, error) { var err error for _, addr := range p.getAllPDAddrs() { - v, e := get(ctx, addr, pdapi.StoreByID(storeID), p.cli, http.MethodGet, nil) + v, e := get(ctx, addr, pdhttp.StoreByID(storeID), p.cli, http.MethodGet, nil) if e != nil { err = e continue @@ -439,7 +439,7 @@ func (p *PdController) doPauseSchedulers(ctx context.Context, removedSchedulers := make([]string, 0, len(schedulers)) for _, scheduler := range schedulers { for _, addr := range p.getAllPDAddrs() { - _, err = post(ctx, addr, pdapi.SchedulerByName(scheduler), p.cli, http.MethodPost, body) + _, err = post(ctx, addr, pdhttp.SchedulerByName(scheduler), p.cli, http.MethodPost, body) if err == nil { removedSchedulers = append(removedSchedulers, scheduler) break @@ -521,7 +521,7 @@ func (p *PdController) resumeSchedulerWith(ctx context.Context, schedulers []str } for _, scheduler := range schedulers { for _, addr := range p.getAllPDAddrs() { - _, err = post(ctx, addr, pdapi.SchedulerByName(scheduler), p.cli, http.MethodPost, body) + _, err = post(ctx, addr, pdhttp.SchedulerByName(scheduler), p.cli, http.MethodPost, body) if err == nil { break } @@ -545,7 +545,7 @@ func (p *PdController) ListSchedulers(ctx context.Context) ([]string, error) { func (p *PdController) listSchedulersWith(ctx context.Context, get pdHTTPRequest) ([]string, error) { var err error for _, addr := range p.getAllPDAddrs() { - v, e := get(ctx, addr, pdapi.Schedulers, p.cli, http.MethodGet, nil) + v, e := get(ctx, addr, pdhttp.Schedulers, p.cli, http.MethodGet, nil) if e != nil { err = e continue @@ -568,7 +568,7 @@ func (p *PdController) GetPDScheduleConfig( var err error for _, addr := range p.getAllPDAddrs() { v, e := pdRequest( - ctx, addr, pdapi.ScheduleConfig, p.cli, http.MethodGet, nil) + ctx, addr, pdhttp.ScheduleConfig, p.cli, http.MethodGet, nil) if e != nil { err = e continue @@ -592,7 +592,7 @@ func (p *PdController) UpdatePDScheduleConfig(ctx context.Context) error { func (p *PdController) doUpdatePDScheduleConfig( ctx context.Context, cfg map[string]interface{}, post pdHTTPRequest, prefixs ...string, ) error { - prefix := pdapi.Config + prefix := pdhttp.Config if len(prefixs) != 0 { prefix = prefixs[0] } @@ -621,7 +621,7 @@ func (p *PdController) doUpdatePDScheduleConfig( func (p *PdController) doPauseConfigs(ctx context.Context, cfg map[string]interface{}, post pdHTTPRequest) error { // pause this scheduler with 300 seconds - return p.doUpdatePDScheduleConfig(ctx, cfg, post, pdapi.ConfigWithTTLSeconds(pauseTimeout.Seconds())) + return p.doUpdatePDScheduleConfig(ctx, cfg, post, pdhttp.ConfigWithTTLSeconds(pauseTimeout.Seconds())) } func restoreSchedulers(ctx context.Context, pd *PdController, clusterCfg ClusterConfig, @@ -643,7 +643,7 @@ func restoreSchedulers(ctx context.Context, pd *PdController, clusterCfg Cluster prefix := make([]string, 0, 1) if pd.isPauseConfigEnabled() { // set config's ttl to zero, make temporary config invalid immediately. - prefix = append(prefix, pdapi.ConfigWithTTLSeconds(0)) + prefix = append(prefix, pdhttp.ConfigWithTTLSeconds(0)) } // reset config with previous value. if err := pd.doUpdatePDScheduleConfig(ctx, mergeCfg, pdRequest, prefix...); err != nil { @@ -832,7 +832,7 @@ func (p *PdController) doRemoveSchedulersWith( func (p *PdController) GetMinResolvedTS(ctx context.Context) (uint64, error) { var err error for _, addr := range p.getAllPDAddrs() { - v, e := pdRequest(ctx, addr, pdapi.MinResolvedTS, p.cli, http.MethodGet, nil) + v, e := pdRequest(ctx, addr, pdhttp.MinResolvedTSPrefix, p.cli, http.MethodGet, nil) if e != nil { log.Warn("failed to get min resolved ts", zap.String("addr", addr), zap.Error(e)) err = e @@ -866,7 +866,7 @@ func (p *PdController) RecoverBaseAllocID(ctx context.Context, id uint64) error }) var err error for _, addr := range p.getAllPDAddrs() { - _, e := pdRequest(ctx, addr, pdapi.BaseAllocID, p.cli, http.MethodPost, reqData) + _, e := pdRequest(ctx, addr, pdhttp.BaseAllocID, p.cli, http.MethodPost, reqData) if e != nil { log.Warn("failed to recover base alloc id", zap.String("addr", addr), zap.Error(e)) err = e @@ -890,7 +890,7 @@ func (p *PdController) ResetTS(ctx context.Context, ts uint64) error { }) var err error for _, addr := range p.getAllPDAddrs() { - code, _, e := pdRequestWithCode(ctx, addr, pdapi.ResetTS, p.cli, http.MethodPost, reqData) + code, _, e := pdRequestWithCode(ctx, addr, pdhttp.ResetTS, p.cli, http.MethodPost, reqData) if e != nil { // for pd version <= 6.2, if the given ts < current ts of pd, pd returns StatusForbidden. // it's not an error for br @@ -920,7 +920,7 @@ func (p *PdController) UnmarkRecovering(ctx context.Context) error { func (p *PdController) operateRecoveringMark(ctx context.Context, method string) error { var err error for _, addr := range p.getAllPDAddrs() { - _, e := pdRequest(ctx, addr, pdapi.SnapshotRecoveringMark, p.cli, method, nil) + _, e := pdRequest(ctx, addr, pdhttp.SnapshotRecoveringMark, p.cli, method, nil) if e != nil { log.Warn("failed to operate recovering mark", zap.String("method", method), zap.String("addr", addr), zap.Error(e)) @@ -966,7 +966,7 @@ func (p *PdController) CreateOrUpdateRegionLabelRule(ctx context.Context, rule L var lastErr error addrs := p.getAllPDAddrs() for i, addr := range addrs { - _, lastErr = pdRequest(ctx, addr, pdapi.RegionLabelRule, + _, lastErr = pdRequest(ctx, addr, pdhttp.RegionLabelRule, p.cli, http.MethodPost, reqData) if lastErr == nil { return nil @@ -988,7 +988,7 @@ func (p *PdController) DeleteRegionLabelRule(ctx context.Context, ruleID string) var lastErr error addrs := p.getAllPDAddrs() for i, addr := range addrs { - _, lastErr = pdRequest(ctx, addr, fmt.Sprintf("%s/%s", pdapi.RegionLabelRule, ruleID), + _, lastErr = pdRequest(ctx, addr, fmt.Sprintf("%s/%s", pdhttp.RegionLabelRule, ruleID), p.cli, http.MethodDelete, nil) if lastErr == nil { return nil @@ -1092,7 +1092,7 @@ func FetchPDVersion(ctx context.Context, tls *common.TLS, pdAddr string) (*semve var rawVersion struct { Version string `json:"version"` } - err := tls.WithHost(pdAddr).GetJSON(ctx, pdapi.Version, &rawVersion) + err := tls.WithHost(pdAddr).GetJSON(ctx, pdhttp.Version, &rawVersion) if err != nil { return nil, errors.Trace(err) } diff --git a/br/pkg/pdutil/pd_serial_test.go b/br/pkg/pdutil/pd_serial_test.go index 5dc91f7192a46..f76f61f6dddb9 100644 --- a/br/pkg/pdutil/pd_serial_test.go +++ b/br/pkg/pdutil/pd_serial_test.go @@ -22,8 +22,8 @@ import ( "github.com/pingcap/kvproto/pkg/metapb" "github.com/pingcap/tidb/pkg/store/pdtypes" "github.com/pingcap/tidb/pkg/util/codec" - "github.com/pingcap/tidb/pkg/util/pdapi" "github.com/stretchr/testify/require" + pd "github.com/tikv/pd/client/http" ) func TestScheduler(t *testing.T) { @@ -273,7 +273,7 @@ func TestStoreInfo(t *testing.T) { _ context.Context, addr string, prefix string, _ *http.Client, _ string, _ []byte, ) ([]byte, error) { require.Equal(t, - fmt.Sprintf("http://mock%s", pdapi.StoreByID(1)), + fmt.Sprintf("http://mock%s", pd.StoreByID(1)), fmt.Sprintf("%s%s", addr, prefix)) ret, err := json.Marshal(storeInfo) require.NoError(t, err) @@ -307,7 +307,7 @@ func TestPauseSchedulersByKeyRange(t *testing.T) { return } if r.Method == http.MethodDelete { - ruleID := strings.TrimPrefix(r.URL.Path, pdapi.RegionLabelRule+"/") + ruleID := strings.TrimPrefix(r.URL.Path, pd.RegionLabelRule+"/") delete(labelExpires, ruleID) deleted = true return diff --git a/br/pkg/pdutil/utils.go b/br/pkg/pdutil/utils.go index 548a155b3362a..2b1e0e3fed0c9 100644 --- a/br/pkg/pdutil/utils.go +++ b/br/pkg/pdutil/utils.go @@ -17,7 +17,7 @@ import ( "github.com/pingcap/tidb/pkg/store/pdtypes" "github.com/pingcap/tidb/pkg/tablecodec" "github.com/pingcap/tidb/pkg/util/codec" - "github.com/pingcap/tidb/pkg/util/pdapi" + pd "github.com/tikv/pd/client/http" ) // UndoFunc is a 'undo' operation of some undoable command. @@ -34,7 +34,7 @@ func GetPlacementRules(ctx context.Context, pdAddr string, tlsConf *tls.Config) if tlsConf != nil { prefix = "https://" } - reqURL := fmt.Sprintf("%s%s%s", prefix, pdAddr, pdapi.PlacementRules) + reqURL := fmt.Sprintf("%s%s%s", prefix, pdAddr, pd.PlacementRules) req, err := http.NewRequestWithContext(ctx, "GET", reqURL, nil) if err != nil { return nil, errors.Trace(err) diff --git a/br/pkg/restore/BUILD.bazel b/br/pkg/restore/BUILD.bazel index f5522e40fe73a..02b2fb047063d 100644 --- a/br/pkg/restore/BUILD.bazel +++ b/br/pkg/restore/BUILD.bazel @@ -59,7 +59,6 @@ go_library( "//pkg/parser/mysql", "//pkg/sessionctx/variable", "//pkg/statistics/handle", - "//pkg/store/helper", "//pkg/store/pdtypes", "//pkg/tablecodec", "//pkg/util", @@ -92,6 +91,7 @@ go_library( "@com_github_tikv_client_go_v2//txnkv/rangetask", "@com_github_tikv_client_go_v2//util", "@com_github_tikv_pd_client//:client", + "@com_github_tikv_pd_client//http", "@org_golang_google_grpc//:grpc", "@org_golang_google_grpc//backoff", "@org_golang_google_grpc//codes", diff --git a/br/pkg/restore/client.go b/br/pkg/restore/client.go index bff70be345932..7f47605c3b7e5 100644 --- a/br/pkg/restore/client.go +++ b/br/pkg/restore/client.go @@ -54,7 +54,6 @@ import ( "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/statistics/handle" - "github.com/pingcap/tidb/pkg/store/helper" "github.com/pingcap/tidb/pkg/store/pdtypes" "github.com/pingcap/tidb/pkg/tablecodec" "github.com/pingcap/tidb/pkg/util/codec" @@ -64,6 +63,7 @@ import ( "github.com/tikv/client-go/v2/oracle" kvutil "github.com/tikv/client-go/v2/util" pd "github.com/tikv/pd/client" + pdhttp "github.com/tikv/pd/client/http" "go.uber.org/zap" "go.uber.org/zap/zapcore" "golang.org/x/sync/errgroup" @@ -1811,7 +1811,7 @@ func (rc *Client) GoWaitTiFlashReady(ctx context.Context, inCh <-chan *CreatedTa if err != nil { errCh <- err } - tiFlashStores := make(map[int64]helper.StoreStat) + tiFlashStores := make(map[int64]pdhttp.StoreInfo) for _, store := range tikvStats.Stores { for _, l := range store.Store.Labels { if l.Key == "engine" && l.Value == "tiflash" { diff --git a/br/pkg/restore/merge_test.go b/br/pkg/restore/merge_test.go index c53cbb0f80771..404d187e1a59b 100644 --- a/br/pkg/restore/merge_test.go +++ b/br/pkg/restore/merge_test.go @@ -47,11 +47,13 @@ func (fb *fileBulder) build(tableID, indexID, num, bytes, kv int) (files []*back lowVal := types.NewIntDatum(fb.startKeyOffset - 10) highVal := types.NewIntDatum(fb.startKeyOffset) sc := stmtctx.NewStmtCtxWithTimeZone(time.UTC) - lowValue, err := codec.EncodeKey(sc, nil, lowVal) + lowValue, err := codec.EncodeKey(sc.TimeZone(), nil, lowVal) + err = sc.HandleError(err) if err != nil { panic(err) } - highValue, err := codec.EncodeKey(sc, nil, highVal) + highValue, err := codec.EncodeKey(sc.TimeZone(), nil, highVal) + err = sc.HandleError(err) if err != nil { panic(err) } diff --git a/br/pkg/restore/split/BUILD.bazel b/br/pkg/restore/split/BUILD.bazel index 3a24fca4275af..b8a595f5239fc 100644 --- a/br/pkg/restore/split/BUILD.bazel +++ b/br/pkg/restore/split/BUILD.bazel @@ -20,7 +20,6 @@ go_library( "//br/pkg/utils", "//pkg/kv", "//pkg/store/pdtypes", - "//pkg/util/pdapi", "@com_github_google_btree//:btree", "@com_github_pingcap_errors//:errors", "@com_github_pingcap_failpoint//:failpoint", @@ -31,6 +30,7 @@ go_library( "@com_github_pingcap_kvproto//pkg/tikvpb", "@com_github_pingcap_log//:log", "@com_github_tikv_pd_client//:client", + "@com_github_tikv_pd_client//http", "@org_golang_google_grpc//:grpc", "@org_golang_google_grpc//codes", "@org_golang_google_grpc//credentials", diff --git a/br/pkg/restore/split/client.go b/br/pkg/restore/split/client.go index 99dfe88bd39fd..c558e410ea632 100644 --- a/br/pkg/restore/split/client.go +++ b/br/pkg/restore/split/client.go @@ -29,8 +29,8 @@ import ( "github.com/pingcap/tidb/br/pkg/lightning/config" "github.com/pingcap/tidb/br/pkg/logutil" "github.com/pingcap/tidb/pkg/store/pdtypes" - "github.com/pingcap/tidb/pkg/util/pdapi" pd "github.com/tikv/pd/client" + pdhttp "github.com/tikv/pd/client/http" "go.uber.org/multierr" "go.uber.org/zap" "google.golang.org/grpc" @@ -463,7 +463,7 @@ func (c *pdClient) getStoreCount(ctx context.Context) (int, error) { func (c *pdClient) getMaxReplica(ctx context.Context) (int, error) { api := c.getPDAPIAddr() - req, err := http.NewRequestWithContext(ctx, "GET", fmt.Sprintf("%s%s", api, pdapi.ReplicateConfig), nil) + req, err := http.NewRequestWithContext(ctx, "GET", fmt.Sprintf("%s%s", api, pdhttp.ReplicateConfig), nil) if err != nil { return 0, errors.Trace(err) } @@ -540,7 +540,7 @@ func (c *pdClient) GetPlacementRule(ctx context.Context, groupID, ruleID string) return rule, errors.Annotate(berrors.ErrRestoreSplitFailed, "failed to add stores labels: no leader") } req, err := http.NewRequestWithContext(ctx, "GET", - addr+path.Join(pdapi.PlacementRule, groupID, ruleID), nil) + addr+path.Join(pdhttp.PlacementRule, groupID, ruleID), nil) if err != nil { return rule, errors.Trace(err) } @@ -571,7 +571,7 @@ func (c *pdClient) SetPlacementRule(ctx context.Context, rule pdtypes.Rule) erro } m, _ := json.Marshal(rule) req, err := http.NewRequestWithContext(ctx, "POST", - addr+path.Join(pdapi.PlacementRule), bytes.NewReader(m)) + addr+path.Join(pdhttp.PlacementRule), bytes.NewReader(m)) if err != nil { return errors.Trace(err) } @@ -587,7 +587,7 @@ func (c *pdClient) DeletePlacementRule(ctx context.Context, groupID, ruleID stri if addr == "" { return errors.Annotate(berrors.ErrPDLeaderNotFound, "failed to add stores labels") } - req, err := http.NewRequestWithContext(ctx, "DELETE", addr+path.Join(pdapi.PlacementRule, groupID, ruleID), nil) + req, err := http.NewRequestWithContext(ctx, "DELETE", addr+path.Join(pdhttp.PlacementRule, groupID, ruleID), nil) if err != nil { return errors.Trace(err) } @@ -610,7 +610,7 @@ func (c *pdClient) SetStoresLabel( for _, id := range stores { req, err := http.NewRequestWithContext( ctx, "POST", - addr+pdapi.StoreLabelByID(id), + addr+pdhttp.StoreLabelByID(id), bytes.NewReader(b), ) if err != nil { diff --git a/br/pkg/storage/BUILD.bazel b/br/pkg/storage/BUILD.bazel index ad58e18200e58..98ee1882691dd 100644 --- a/br/pkg/storage/BUILD.bazel +++ b/br/pkg/storage/BUILD.bazel @@ -28,6 +28,7 @@ go_library( "//br/pkg/logutil", "//pkg/sessionctx/variable", "//pkg/util/intest", + "//pkg/util/prefetch", "@com_github_aliyun_alibaba_cloud_sdk_go//sdk/auth/credentials", "@com_github_aliyun_alibaba_cloud_sdk_go//sdk/auth/credentials/providers", "@com_github_aws_aws_sdk_go//aws", diff --git a/br/pkg/storage/local.go b/br/pkg/storage/local.go index bc09c1d47f6de..0b2ebc7607e4e 100644 --- a/br/pkg/storage/local.go +++ b/br/pkg/storage/local.go @@ -140,7 +140,7 @@ func (l *LocalStorage) WalkDir(_ context.Context, opt *WalkOption, fn func(strin // URI returns the base path as an URI with a file:/// prefix. func (l *LocalStorage) URI() string { - return LocalURIPrefix + "/" + l.base + return LocalURIPrefix + l.base } // Open a Reader by file path, path is a relative path to base path. diff --git a/br/pkg/storage/local_test.go b/br/pkg/storage/local_test.go index 2e003148f5a09..fd6f92afb5b6a 100644 --- a/br/pkg/storage/local_test.go +++ b/br/pkg/storage/local_test.go @@ -157,6 +157,20 @@ func TestWalkDirSkipSubDir(t *testing.T) { })) } +func TestLocalURI(t *testing.T) { + ctx := context.Background() + + url := "file:///tmp/folder" + sb, err := ParseBackend(url, &BackendOptions{}) + require.NoError(t, err) + + store, err := Create(ctx, sb, true) + require.NoError(t, err) + + obtained := store.URI() + require.Equal(t, url, obtained) +} + func TestLocalFileReadRange(t *testing.T) { ctx := context.Background() dir := t.TempDir() diff --git a/br/pkg/storage/s3.go b/br/pkg/storage/s3.go index 97f58ec5b89fd..e65b85cfcc034 100644 --- a/br/pkg/storage/s3.go +++ b/br/pkg/storage/s3.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/pkg/util/prefetch" "github.com/spf13/pflag" "go.uber.org/zap" ) @@ -735,6 +736,9 @@ func (rs *S3Storage) Open(ctx context.Context, path string, o *ReaderOption) (Ex if err != nil { return nil, errors.Trace(err) } + if o != nil && o.PrefetchSize > 0 { + reader = prefetch.NewReader(reader, o.PrefetchSize) + } return &s3ObjectReader{ storage: rs, name: path, @@ -874,6 +878,9 @@ func (r *s3ObjectReader) Read(p []byte) (n int, err error) { if maxCnt > int64(len(p)) { maxCnt = int64(len(p)) } + if maxCnt == 0 { + return 0, io.EOF + } n, err = r.reader.Read(p[:maxCnt]) // TODO: maybe we should use !errors.Is(err, io.EOF) here to avoid error lint, but currently, pingcap/errors // doesn't implement this method yet. @@ -1031,6 +1038,7 @@ func (rs *S3Storage) Create(ctx context.Context, name string, option *WriterOpti } } else { up := s3manager.NewUploaderWithClient(rs.svc, func(u *s3manager.Uploader) { + u.PartSize = option.PartSize u.Concurrency = option.Concurrency u.BufferProvider = s3manager.NewBufferedReadSeekerWriteToPool(option.Concurrency * hardcodedS3ChunkSize) }) diff --git a/br/pkg/storage/storage.go b/br/pkg/storage/storage.go index 0abecc827414c..78d42bf170cfd 100644 --- a/br/pkg/storage/storage.go +++ b/br/pkg/storage/storage.go @@ -90,6 +90,7 @@ type Writer interface { type WriterOption struct { Concurrency int + PartSize int64 } type ReaderOption struct { @@ -97,6 +98,8 @@ type ReaderOption struct { StartOffset *int64 // EndOffset is exclusive. And it's incompatible with Seek. EndOffset *int64 + // PrefetchSize will switch to NewPrefetchReader if value is positive. + PrefetchSize int } // ExternalStorage represents a kind of file system storage. @@ -195,6 +198,25 @@ func NewWithDefaultOpt(ctx context.Context, backend *backuppb.StorageBackend) (E return New(ctx, backend, &opts) } +// NewFromURL creates an ExternalStorage from URL. +func NewFromURL(ctx context.Context, uri string, opts *ExternalStorageOptions) (ExternalStorage, error) { + if len(uri) == 0 { + return nil, errors.Annotate(berrors.ErrStorageInvalidConfig, "empty store is not allowed") + } + u, err := ParseRawURL(uri) + if err != nil { + return nil, errors.Trace(err) + } + if u.Scheme == "memstore" { + return NewMemStorage(), nil + } + b, err := parseBackend(u, uri, nil) + if err != nil { + return nil, errors.Trace(err) + } + return New(ctx, b, opts) +} + // New creates an ExternalStorage with options. func New(ctx context.Context, backend *backuppb.StorageBackend, opts *ExternalStorageOptions) (ExternalStorage, error) { if opts == nil { diff --git a/br/pkg/storage/storage_test.go b/br/pkg/storage/storage_test.go index c6ca5c39b6a02..6183e98c19de2 100644 --- a/br/pkg/storage/storage_test.go +++ b/br/pkg/storage/storage_test.go @@ -3,6 +3,7 @@ package storage_test import ( + "context" "net/http" "testing" @@ -24,3 +25,10 @@ func TestDefaultHttpClient(t *testing.T) { require.Equal(t, int(concurrency), transport.MaxIdleConnsPerHost) require.Equal(t, int(concurrency), transport.MaxIdleConns) } + +func TestNewMemStorage(t *testing.T) { + url := "memstore://" + s, err := storage.NewFromURL(context.Background(), url, nil) + require.NoError(t, err) + require.IsType(t, (*storage.MemStorage)(nil), s) +} diff --git a/br/pkg/task/backup.go b/br/pkg/task/backup.go index 725efe75f7e74..915bdb2092bd9 100644 --- a/br/pkg/task/backup.go +++ b/br/pkg/task/backup.go @@ -57,6 +57,7 @@ const ( flagUseCheckpoint = "use-checkpoint" flagKeyspaceName = "keyspace-name" flagReplicaReadLabel = "replica-read-label" + flagTableConcurrency = "table-concurrency" flagGCTTL = "gcttl" @@ -92,6 +93,7 @@ type BackupConfig struct { UseBackupMetaV2 bool `json:"use-backupmeta-v2"` UseCheckpoint bool `json:"use-checkpoint" toml:"use-checkpoint"` ReplicaReadLabel map[string]string `json:"replica-read-label" toml:"replica-read-label"` + TableConcurrency uint `json:"table-concurrency" toml:"table-concurrency"` CompressionConfig // for ebs-based backup @@ -123,6 +125,9 @@ func DefineBackupFlags(flags *pflag.FlagSet) { "One task represents one table range (or one index range) according to the backup schemas. If there is one table with one index."+ "there will be two tasks to back up this table. This value should increase if you need to back up lots of tables or indices.") + flags.Uint(flagTableConcurrency, backup.DefaultSchemaConcurrency, "The size of a BR thread pool used for backup table metas, "+ + "including tableInfo/checksum and stats.") + flags.Bool(flagRemoveSchedulers, false, "disable the balance, shuffle and region-merge schedulers in PD to speed up backup") // This flag can impact the online cluster, so hide it in case of abuse. @@ -197,6 +202,9 @@ func (cfg *BackupConfig) ParseFromFlags(flags *pflag.FlagSet) error { if err != nil { return errors.Trace(err) } + if cfg.TableConcurrency, err = flags.GetUint(flagTableConcurrency); err != nil { + return errors.Trace(err) + } compressionCfg, err := parseCompressionFlags(flags) if err != nil { @@ -718,7 +726,7 @@ func RunBackup(c context.Context, g glue.Glue, cmdName string, cfg *BackupConfig } } updateCh = g.StartProgress(ctx, "Checksum", checksumProgress, !cfg.LogProgress) - schemasConcurrency := uint(min(backup.DefaultSchemaConcurrency, schemas.Len())) + schemasConcurrency := min(cfg.TableConcurrency, uint(schemas.Len())) err = schemas.BackupSchemas( ctx, metawriter, client.GetCheckpointRunner(), mgr.GetStorage(), statsHandle, backupTS, schemasConcurrency, cfg.ChecksumConcurrency, skipChecksum, updateCh) @@ -770,7 +778,7 @@ func ParseTSString(ts string, tzCheck bool) (uint64, error) { return 0, errors.Errorf("must set timezone when using datetime format ts, e.g. '2018-05-11 01:42:23+0800'") } } - t, err := types.ParseTime(sc.TypeCtx(), ts, mysql.TypeTimestamp, types.MaxFsp, nil) + t, err := types.ParseTime(sc.TypeCtx(), ts, mysql.TypeTimestamp, types.MaxFsp) if err != nil { return 0, errors.Trace(err) } diff --git a/br/pkg/task/backup_test.go b/br/pkg/task/backup_test.go index 31dc27d460011..705508811e149 100644 --- a/br/pkg/task/backup_test.go +++ b/br/pkg/task/backup_test.go @@ -122,6 +122,7 @@ func TestBackupConfigHash(t *testing.T) { LastBackupTS: 1, GCTTL: 123, RemoveSchedulers: true, + TableConcurrency: 123, IgnoreStats: true, UseBackupMetaV2: true, UseCheckpoint: true, @@ -197,6 +198,7 @@ func TestBackupConfigHash(t *testing.T) { testCfg.TLS = TLSConfig{CA: "123"} testCfg.RateLimit = 321 testCfg.ChecksumConcurrency = 321 + testCfg.TableConcurrency = 321 testCfg.Concurrency = 321 testCfg.Checksum = false testCfg.LogProgress = false diff --git a/br/pkg/task/common.go b/br/pkg/task/common.go index 509b02e335b73..5e38c01140db2 100644 --- a/br/pkg/task/common.go +++ b/br/pkg/task/common.go @@ -209,6 +209,7 @@ type Config struct { TLS TLSConfig `json:"tls" toml:"tls"` RateLimit uint64 `json:"rate-limit" toml:"rate-limit"` ChecksumConcurrency uint `json:"checksum-concurrency" toml:"checksum-concurrency"` + TableConcurrency uint `json:"table-concurrency" toml:"table-concurrency"` Concurrency uint32 `json:"concurrency" toml:"concurrency"` Checksum bool `json:"checksum" toml:"checksum"` SendCreds bool `json:"send-credentials-to-tikv" toml:"send-credentials-to-tikv"` @@ -269,8 +270,7 @@ func DefineCommonFlags(flags *pflag.FlagSet) { flags.String(flagCA, "", "CA certificate path for TLS connection") flags.String(flagCert, "", "Certificate path for TLS connection") flags.String(flagKey, "", "Private key path for TLS connection") - flags.Uint(flagChecksumConcurrency, variable.DefChecksumTableConcurrency, "The concurrency of table checksumming") - _ = flags.MarkHidden(flagChecksumConcurrency) + 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") diff --git a/br/pkg/task/restore.go b/br/pkg/task/restore.go index f51f3cacd8a81..a890ce746f93e 100644 --- a/br/pkg/task/restore.go +++ b/br/pkg/task/restore.go @@ -217,6 +217,7 @@ type RestoreConfig struct { VolumeType pconfig.EBSVolumeType `json:"volume-type" toml:"volume-type"` VolumeIOPS int64 `json:"volume-iops" toml:"volume-iops"` VolumeThroughput int64 `json:"volume-throughput" toml:"volume-throughput"` + VolumeEncrypted bool `json:"volume-encrypted" toml:"volume-encrypted"` ProgressFile string `json:"progress-file" toml:"progress-file"` TargetAZ string `json:"target-az" toml:"target-az"` UseFSR bool `json:"use-fsr" toml:"use-fsr"` @@ -382,6 +383,9 @@ func (cfg *RestoreConfig) ParseFromFlags(flags *pflag.FlagSet) error { if cfg.VolumeThroughput, err = flags.GetInt64(flagVolumeThroughput); err != nil { return errors.Trace(err) } + if cfg.VolumeEncrypted, err = flags.GetBool(flagVolumeEncrypted); err != nil { + return errors.Trace(err) + } cfg.ProgressFile, err = flags.GetString(flagProgressFile) if err != nil { diff --git a/br/pkg/task/restore_ebs_meta.go b/br/pkg/task/restore_ebs_meta.go index 8c87aa669ef5d..2835e5e5a64f3 100644 --- a/br/pkg/task/restore_ebs_meta.go +++ b/br/pkg/task/restore_ebs_meta.go @@ -41,6 +41,7 @@ const ( flagVolumeType = "volume-type" flagVolumeIOPS = "volume-iops" flagVolumeThroughput = "volume-throughput" + flagVolumeEncrypted = "volume-encrypted" flagTargetAZ = "target-az" ) @@ -54,6 +55,7 @@ func DefineRestoreSnapshotFlags(command *cobra.Command) { command.Flags().String(flagVolumeType, string(config.GP3Volume), "volume type: gp3, io1, io2") command.Flags().Int64(flagVolumeIOPS, 0, "volume iops(0 means default for that volume type)") command.Flags().Int64(flagVolumeThroughput, 0, "volume throughout in MiB/s(0 means default for that volume type)") + command.Flags().Bool(flagVolumeEncrypted, false, "whether encryption is enabled for the volume") command.Flags().String(flagProgressFile, "progress.txt", "the file name of progress file") command.Flags().String(flagTargetAZ, "", "the target AZ for restored volumes") @@ -65,6 +67,7 @@ func DefineRestoreSnapshotFlags(command *cobra.Command) { _ = command.Flags().MarkHidden(flagVolumeType) _ = command.Flags().MarkHidden(flagVolumeIOPS) _ = command.Flags().MarkHidden(flagVolumeThroughput) + _ = command.Flags().MarkHidden(flagVolumeEncrypted) _ = command.Flags().MarkHidden(flagProgressFile) _ = command.Flags().MarkHidden(flagTargetAZ) } @@ -256,11 +259,11 @@ func (h *restoreEBSMetaHelper) restoreVolumes(progress glue.Progress) (map[strin } volumeIDMap, err = ec2Session.CreateVolumes(h.metaInfo, - string(h.cfg.VolumeType), h.cfg.VolumeIOPS, h.cfg.VolumeThroughput, h.cfg.TargetAZ) + string(h.cfg.VolumeType), h.cfg.VolumeIOPS, h.cfg.VolumeThroughput, h.cfg.VolumeEncrypted, h.cfg.TargetAZ) if err != nil { return nil, 0, errors.Trace(err) } - totalSize, err = ec2Session.WaitVolumesCreated(volumeIDMap, progress) + totalSize, err = ec2Session.WaitVolumesCreated(volumeIDMap, progress, h.cfg.UseFSR) if err != nil { return nil, 0, errors.Trace(err) } diff --git a/build/BUILD.bazel b/build/BUILD.bazel index 3e1a9c784f5f7..a1a180de16dd1 100644 --- a/build/BUILD.bazel +++ b/build/BUILD.bazel @@ -1,6 +1,6 @@ package(default_visibility = ["//visibility:public"]) -load("@io_bazel_rules_go//go:def.bzl", "nogo") +load("@io_bazel_rules_go//go:def.bzl", "go_library", "nogo") load("@bazel_skylib//rules:common_settings.bzl", "bool_flag") load("//build/linter/staticcheck:def.bzl", "staticcheck_analyzers") @@ -181,3 +181,13 @@ nogo( "//conditions:default": [], }), ) + +go_library( + name = "build", + srcs = ["config.go"], + embedsrcs = [ + "nogo_config.json", + ], + importpath = "github.com/pingcap/tidb/build", + visibility = ["//visibility:public"], +) diff --git a/build/config.go b/build/config.go new file mode 100644 index 0000000000000..7bdbc5608c38c --- /dev/null +++ b/build/config.go @@ -0,0 +1,42 @@ +// Copyright 2023 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 build + +import ( + _ "embed" + "encoding/json" +) + +//go:embed nogo_config.json +var configFile []byte + +// NogoConfig is the nogo config file +var NogoConfig NogoConfigFormat + +// NogoConfigFormat is the format of the nogo config file +type NogoConfigFormat map[string]AnalysisConfig + +// AnalysisConfig represents the config of an analysis pass +type AnalysisConfig struct { + ExcludeFiles map[string]string `json:"exclude_files"` + OnlyFiles map[string]string `json:"only_files"` +} + +func init() { + err := json.Unmarshal(configFile, &NogoConfig) + if err != nil { + panic("fail to parse nogo_config.json") + } +} diff --git a/build/linter/allrevive/analyzer.go b/build/linter/allrevive/analyzer.go index 3cdf91040eb5e..b881756463c3c 100644 --- a/build/linter/allrevive/analyzer.go +++ b/build/linter/allrevive/analyzer.go @@ -37,6 +37,7 @@ var Analyzer = &analysis.Analyzer{ } func init() { + util.SkipAnalyzerByConfig(Analyzer) util.SkipAnalyzer(Analyzer) } diff --git a/build/linter/asciicheck/BUILD.bazel b/build/linter/asciicheck/BUILD.bazel index f686bc348ca2c..a4eae8a573d48 100644 --- a/build/linter/asciicheck/BUILD.bazel +++ b/build/linter/asciicheck/BUILD.bazel @@ -5,5 +5,8 @@ go_library( srcs = ["analysis.go"], importpath = "github.com/pingcap/tidb/build/linter/asciicheck", visibility = ["//visibility:public"], - deps = ["@com_github_tdakkota_asciicheck//:asciicheck"], + deps = [ + "//build/linter/util", + "@com_github_tdakkota_asciicheck//:asciicheck", + ], ) diff --git a/build/linter/asciicheck/analysis.go b/build/linter/asciicheck/analysis.go index c78c5db3fd066..ce210e5c6596b 100644 --- a/build/linter/asciicheck/analysis.go +++ b/build/linter/asciicheck/analysis.go @@ -14,7 +14,14 @@ package asciicheck -import "github.com/tdakkota/asciicheck" +import ( + "github.com/pingcap/tidb/build/linter/util" + "github.com/tdakkota/asciicheck" +) // Analyzer is the analyzer struct of asciicheck. var Analyzer = asciicheck.NewAnalyzer() + +func init() { + util.SkipAnalyzerByConfig(Analyzer) +} diff --git a/build/linter/bootstrap/BUILD.bazel b/build/linter/bootstrap/BUILD.bazel index cb2298d75d9c0..b6c6297e434b9 100644 --- a/build/linter/bootstrap/BUILD.bazel +++ b/build/linter/bootstrap/BUILD.bazel @@ -5,5 +5,8 @@ go_library( srcs = ["analyzer.go"], importpath = "github.com/pingcap/tidb/build/linter/bootstrap", visibility = ["//visibility:public"], - deps = ["@org_golang_x_tools//go/analysis"], + deps = [ + "//build/linter/util", + "@org_golang_x_tools//go/analysis", + ], ) diff --git a/build/linter/bootstrap/analyzer.go b/build/linter/bootstrap/analyzer.go index 1c91eb508387d..c12b52caebecb 100644 --- a/build/linter/bootstrap/analyzer.go +++ b/build/linter/bootstrap/analyzer.go @@ -20,6 +20,7 @@ import ( "strconv" "strings" + "github.com/pingcap/tidb/build/linter/util" "golang.org/x/tools/go/analysis" ) @@ -37,8 +38,7 @@ const ( func run(pass *analysis.Pass) (interface{}, error) { for _, file := range pass.Files { - fileName := pass.Fset.File(file.Pos()).Name() - if !strings.HasSuffix(fileName, bootstrapCodeFile) { + if !strings.HasSuffix(pass.Fset.File(file.Pos()).Name(), bootstrapCodeFile) { continue } @@ -132,3 +132,7 @@ func run(pass *analysis.Pass) (interface{}, error) { } return nil, nil } + +func init() { + util.SkipAnalyzerByConfig(Analyzer) +} diff --git a/build/linter/constructor/BUILD.bazel b/build/linter/constructor/BUILD.bazel index b9312fcb12950..e23b821052248 100644 --- a/build/linter/constructor/BUILD.bazel +++ b/build/linter/constructor/BUILD.bazel @@ -6,6 +6,7 @@ go_library( importpath = "github.com/pingcap/tidb/build/linter/constructor", visibility = ["//visibility:public"], deps = [ + "//build/linter/util", "@com_github_fatih_structtag//:structtag", "@org_golang_x_tools//go/analysis", "@org_golang_x_tools//go/ast/inspector", diff --git a/build/linter/constructor/analyzer.go b/build/linter/constructor/analyzer.go index 959a2cb91e0b5..c3b00741550c6 100644 --- a/build/linter/constructor/analyzer.go +++ b/build/linter/constructor/analyzer.go @@ -21,6 +21,7 @@ import ( "strings" "github.com/fatih/structtag" + "github.com/pingcap/tidb/build/linter/util" "golang.org/x/tools/go/analysis" "golang.org/x/tools/go/ast/inspector" ) @@ -174,3 +175,7 @@ func run(pass *analysis.Pass) (interface{}, error) { } return nil, nil } + +func init() { + util.SkipAnalyzerByConfig(Analyzer) +} diff --git a/build/linter/deferrecover/analyzer.go b/build/linter/deferrecover/analyzer.go index 58ea39d319d76..b99d31170bbbb 100644 --- a/build/linter/deferrecover/analyzer.go +++ b/build/linter/deferrecover/analyzer.go @@ -78,3 +78,7 @@ func run(pass *analysis.Pass) (interface{}, error) { } return nil, nil } + +func init() { + util.SkipAnalyzerByConfig(Analyzer) +} diff --git a/build/linter/durationcheck/analyzer.go b/build/linter/durationcheck/analyzer.go index 1ebee429959fd..fe571f23c9f95 100644 --- a/build/linter/durationcheck/analyzer.go +++ b/build/linter/durationcheck/analyzer.go @@ -23,5 +23,6 @@ import ( var Analyzer = durationcheck.Analyzer func init() { + util.SkipAnalyzerByConfig(Analyzer) util.SkipAnalyzer(Analyzer) } diff --git a/build/linter/errcheck/analyzer.go b/build/linter/errcheck/analyzer.go index ea5049689059e..49f374e09695d 100644 --- a/build/linter/errcheck/analyzer.go +++ b/build/linter/errcheck/analyzer.go @@ -34,5 +34,6 @@ func init() { if err != nil { log.Fatal(err) } + util.SkipAnalyzerByConfig(Analyzer) util.SkipAnalyzer(Analyzer) } diff --git a/build/linter/etcdconfig/analyzer.go b/build/linter/etcdconfig/analyzer.go index da09dafff3d4f..6c0f1c428df97 100644 --- a/build/linter/etcdconfig/analyzer.go +++ b/build/linter/etcdconfig/analyzer.go @@ -88,3 +88,6 @@ func run(pass *analysis.Pass) (interface{}, error) { } return nil, nil } +func init() { + util.SkipAnalyzerByConfig(Analyzer) +} diff --git a/build/linter/exportloopref/BUILD.bazel b/build/linter/exportloopref/BUILD.bazel index 29070c40f343c..7e58746f41829 100644 --- a/build/linter/exportloopref/BUILD.bazel +++ b/build/linter/exportloopref/BUILD.bazel @@ -5,5 +5,8 @@ go_library( srcs = ["analyzer.go"], importpath = "github.com/pingcap/tidb/build/linter/exportloopref", visibility = ["//visibility:public"], - deps = ["@com_github_kyoh86_exportloopref//:exportloopref"], + deps = [ + "//build/linter/util", + "@com_github_kyoh86_exportloopref//:exportloopref", + ], ) diff --git a/build/linter/exportloopref/analyzer.go b/build/linter/exportloopref/analyzer.go index 4a448a8092ed4..c2a223e75cf63 100644 --- a/build/linter/exportloopref/analyzer.go +++ b/build/linter/exportloopref/analyzer.go @@ -14,7 +14,14 @@ package exportloopref -import "github.com/kyoh86/exportloopref" +import ( + "github.com/kyoh86/exportloopref" + "github.com/pingcap/tidb/build/linter/util" +) // Analyzer is the analyzer struct of exportloopref. var Analyzer = exportloopref.Analyzer + +func init() { + util.SkipAnalyzerByConfig(Analyzer) +} diff --git a/build/linter/filepermission/BUILD.bazel b/build/linter/filepermission/BUILD.bazel index 1062b955877a6..0528c637d9b03 100644 --- a/build/linter/filepermission/BUILD.bazel +++ b/build/linter/filepermission/BUILD.bazel @@ -5,5 +5,8 @@ go_library( srcs = ["checker.go"], importpath = "github.com/pingcap/tidb/build/linter/filepermission", visibility = ["//visibility:public"], - deps = ["@org_golang_x_tools//go/analysis"], + deps = [ + "//build/linter/util", + "@org_golang_x_tools//go/analysis", + ], ) diff --git a/build/linter/filepermission/checker.go b/build/linter/filepermission/checker.go index c2aa6162796ce..dc81732256421 100644 --- a/build/linter/filepermission/checker.go +++ b/build/linter/filepermission/checker.go @@ -17,6 +17,7 @@ package filepermission import ( "os" + "github.com/pingcap/tidb/build/linter/util" "golang.org/x/tools/go/analysis" ) @@ -46,3 +47,7 @@ func run(pass *analysis.Pass) (interface{}, error) { return nil, nil } + +func init() { + util.SkipAnalyzerByConfig(Analyzer) +} diff --git a/build/linter/forcetypeassert/analysis.go b/build/linter/forcetypeassert/analysis.go index de7469fa337e9..eb95da1036d8d 100644 --- a/build/linter/forcetypeassert/analysis.go +++ b/build/linter/forcetypeassert/analysis.go @@ -23,5 +23,6 @@ import ( var Analyzer = forcetypeassert.Analyzer func init() { + util.SkipAnalyzerByConfig(Analyzer) util.SkipAnalyzer(Analyzer) } diff --git a/build/linter/gci/BUILD.bazel b/build/linter/gci/BUILD.bazel index b1495627c85a7..4b858b6fb3dcb 100644 --- a/build/linter/gci/BUILD.bazel +++ b/build/linter/gci/BUILD.bazel @@ -6,6 +6,7 @@ go_library( importpath = "github.com/pingcap/tidb/build/linter/gci", visibility = ["//visibility:public"], deps = [ + "//build/linter/util", "@com_github_daixiang0_gci//pkg/config", "@com_github_daixiang0_gci//pkg/gci", "@org_golang_x_tools//go/analysis", diff --git a/build/linter/gci/analysis.go b/build/linter/gci/analysis.go index a7ad2f9e32bd4..8ca5cb884359b 100644 --- a/build/linter/gci/analysis.go +++ b/build/linter/gci/analysis.go @@ -20,6 +20,7 @@ import ( "github.com/daixiang0/gci/pkg/config" "github.com/daixiang0/gci/pkg/gci" + "github.com/pingcap/tidb/build/linter/util" "golang.org/x/tools/go/analysis" ) @@ -65,3 +66,7 @@ func run(pass *analysis.Pass) (any, error) { return nil, nil } + +func init() { + util.SkipAnalyzerByConfig(Analyzer) +} diff --git a/build/linter/gofmt/BUILD.bazel b/build/linter/gofmt/BUILD.bazel index c21e7e7e9fe40..cc1b3eef5e5d9 100644 --- a/build/linter/gofmt/BUILD.bazel +++ b/build/linter/gofmt/BUILD.bazel @@ -6,6 +6,7 @@ go_library( importpath = "github.com/pingcap/tidb/build/linter/gofmt", visibility = ["//visibility:public"], deps = [ + "//build/linter/util", "@com_github_golangci_gofmt//gofmt", "@org_golang_x_tools//go/analysis", ], diff --git a/build/linter/gofmt/analyzer.go b/build/linter/gofmt/analyzer.go index 05c266b0bbe20..5d3eec4c14867 100644 --- a/build/linter/gofmt/analyzer.go +++ b/build/linter/gofmt/analyzer.go @@ -19,6 +19,7 @@ import ( "strings" "github.com/golangci/gofmt/gofmt" + "github.com/pingcap/tidb/build/linter/util" "golang.org/x/tools/go/analysis" ) @@ -63,3 +64,7 @@ func run(pass *analysis.Pass) (any, error) { return nil, nil } + +func init() { + util.SkipAnalyzerByConfig(Analyzer) +} diff --git a/build/linter/gosec/analysis.go b/build/linter/gosec/analysis.go index c76f947e0689d..31eee4690c3a7 100644 --- a/build/linter/gosec/analysis.go +++ b/build/linter/gosec/analysis.go @@ -41,6 +41,7 @@ var Analyzer = &analysis.Analyzer{ } func init() { + util.SkipAnalyzerByConfig(Analyzer) util.SkipAnalyzer(Analyzer) } diff --git a/build/linter/ineffassign/analyzer.go b/build/linter/ineffassign/analyzer.go index 0651b6a944f59..1b923f60b5b8b 100644 --- a/build/linter/ineffassign/analyzer.go +++ b/build/linter/ineffassign/analyzer.go @@ -23,5 +23,6 @@ import ( var Analyzer = ineffassign.Analyzer func init() { + util.SkipAnalyzerByConfig(Analyzer) util.SkipAnalyzer(Analyzer) } diff --git a/build/linter/lll/analyzer.go b/build/linter/lll/analyzer.go index 7cc8504cc0973..31b121c6f417e 100644 --- a/build/linter/lll/analyzer.go +++ b/build/linter/lll/analyzer.go @@ -159,3 +159,8 @@ func getLLLIssuesForFile(filename string, maxLineLen int, tabSpaces string) ([]r return res, nil } + +func init() { + util.SkipAnalyzerByConfig(Analyzer) + util.SkipAnalyzer(Analyzer) +} diff --git a/build/linter/makezero/analyzer.go b/build/linter/makezero/analyzer.go index b0f7b1ea885de..07336f0642027 100644 --- a/build/linter/makezero/analyzer.go +++ b/build/linter/makezero/analyzer.go @@ -23,5 +23,6 @@ import ( var Analyzer = analyzer.NewAnalyzer() func init() { + util.SkipAnalyzerByConfig(Analyzer) util.SkipAnalyzer(Analyzer) } diff --git a/build/linter/mirror/analyzer.go b/build/linter/mirror/analyzer.go index ab900cd347cd0..6b64c2c52ea88 100644 --- a/build/linter/mirror/analyzer.go +++ b/build/linter/mirror/analyzer.go @@ -23,5 +23,6 @@ import ( var Analyzer = mirror.NewAnalyzer() func init() { + util.SkipAnalyzerByConfig(Analyzer) util.SkipAnalyzer(Analyzer) } diff --git a/build/linter/misspell/analyzer.go b/build/linter/misspell/analyzer.go index 3bf4dd16ae77c..0f5f3610a3613 100644 --- a/build/linter/misspell/analyzer.go +++ b/build/linter/misspell/analyzer.go @@ -34,6 +34,7 @@ var Analyzer = &analysis.Analyzer{ } func init() { + util.SkipAnalyzerByConfig(Analyzer) util.SkipAnalyzer(Analyzer) } diff --git a/build/linter/noloopclosure/analysis.go b/build/linter/noloopclosure/analysis.go index 1118be4038b8b..00dce7d475242 100644 --- a/build/linter/noloopclosure/analysis.go +++ b/build/linter/noloopclosure/analysis.go @@ -23,5 +23,6 @@ import ( var Analyzer = nlc.Analyzer func init() { + util.SkipAnalyzerByConfig(Analyzer) util.SkipAnalyzer(Analyzer) } diff --git a/build/linter/prealloc/analyzer.go b/build/linter/prealloc/analyzer.go index 5e9d38aa8daa9..bc91c1b4f54f1 100644 --- a/build/linter/prealloc/analyzer.go +++ b/build/linter/prealloc/analyzer.go @@ -56,5 +56,6 @@ func run(pass *analysis.Pass) (interface{}, error) { } func init() { + util.SkipAnalyzerByConfig(Analyzer) util.SkipAnalyzer(Analyzer) } diff --git a/build/linter/predeclared/analysis.go b/build/linter/predeclared/analysis.go index 605b631553f24..9988d928a1c65 100644 --- a/build/linter/predeclared/analysis.go +++ b/build/linter/predeclared/analysis.go @@ -23,5 +23,6 @@ import ( var Analyzer = predeclared.Analyzer func init() { + util.SkipAnalyzerByConfig(Analyzer) util.SkipAnalyzer(Analyzer) } diff --git a/build/linter/revive/analyzer.go b/build/linter/revive/analyzer.go index a3d269aad48e9..c45ffaa74e79c 100644 --- a/build/linter/revive/analyzer.go +++ b/build/linter/revive/analyzer.go @@ -37,6 +37,7 @@ var Analyzer = &analysis.Analyzer{ } func init() { + util.SkipAnalyzerByConfig(Analyzer) util.SkipAnalyzer(Analyzer) } diff --git a/build/linter/rowserrcheck/analyzer.go b/build/linter/rowserrcheck/analyzer.go index 5c4749b01cc6d..63cedd4482b95 100644 --- a/build/linter/rowserrcheck/analyzer.go +++ b/build/linter/rowserrcheck/analyzer.go @@ -23,5 +23,6 @@ import ( var Analyzer = rowserr.NewAnalyzer() func init() { + util.SkipAnalyzerByConfig(Analyzer) util.SkipAnalyzer(Analyzer) } diff --git a/build/linter/staticcheck/analyzer.go b/build/linter/staticcheck/analyzer.go index cb13969093aa9..9ca8874734966 100644 --- a/build/linter/staticcheck/analyzer.go +++ b/build/linter/staticcheck/analyzer.go @@ -29,5 +29,6 @@ var ( func init() { Analyzer = FindAnalyzerByName(name) + util.SkipAnalyzerByConfig(Analyzer) util.SkipAnalyzer(Analyzer) } diff --git a/build/linter/toomanytests/BUILD.bazel b/build/linter/toomanytests/BUILD.bazel index 026c41b68ad05..6922239c241f7 100644 --- a/build/linter/toomanytests/BUILD.bazel +++ b/build/linter/toomanytests/BUILD.bazel @@ -5,5 +5,8 @@ go_library( srcs = ["analyze.go"], importpath = "github.com/pingcap/tidb/build/linter/toomanytests", visibility = ["//visibility:public"], - deps = ["@org_golang_x_tools//go/analysis"], + deps = [ + "//build/linter/util", + "@org_golang_x_tools//go/analysis", + ], ) diff --git a/build/linter/toomanytests/analyze.go b/build/linter/toomanytests/analyze.go index c6613e843bed9..5f78fe904cb94 100644 --- a/build/linter/toomanytests/analyze.go +++ b/build/linter/toomanytests/analyze.go @@ -19,6 +19,7 @@ import ( "go/token" "strings" + "github.com/pingcap/tidb/build/linter/util" "golang.org/x/tools/go/analysis" ) @@ -54,3 +55,8 @@ var Analyzer = &analysis.Analyzer{ func isTestFile(file *token.File) bool { return strings.HasSuffix(file.Name(), "_test.go") } + +func init() { + util.SkipAnalyzerByConfig(Analyzer) + util.SkipAnalyzer(Analyzer) +} diff --git a/build/linter/unconvert/analysis.go b/build/linter/unconvert/analysis.go index a015cc39c9fea..f881c2b993701 100644 --- a/build/linter/unconvert/analysis.go +++ b/build/linter/unconvert/analysis.go @@ -37,6 +37,7 @@ var Analyzer = &analysis.Analyzer{ } func init() { + util.SkipAnalyzerByConfig(Analyzer) util.SkipAnalyzer(Analyzer) } diff --git a/build/linter/util/BUILD.bazel b/build/linter/util/BUILD.bazel index f8e81695c03eb..d09af5577100b 100644 --- a/build/linter/util/BUILD.bazel +++ b/build/linter/util/BUILD.bazel @@ -1,13 +1,26 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") go_library( name = "util", - srcs = ["util.go"], + srcs = [ + "exclude.go", + "util.go", + ], importpath = "github.com/pingcap/tidb/build/linter/util", visibility = ["//visibility:public"], deps = [ + "//build", "@co_honnef_go_tools//analysis/report", "@org_golang_x_tools//go/analysis", "@org_golang_x_tools//go/loader", ], ) + +go_test( + name = "util_test", + timeout = "short", + srcs = ["exclude_test.go"], + embed = [":util"], + flaky = True, + deps = ["@com_github_stretchr_testify//require"], +) diff --git a/build/linter/util/exclude.go b/build/linter/util/exclude.go new file mode 100644 index 0000000000000..6990aed28375d --- /dev/null +++ b/build/linter/util/exclude.go @@ -0,0 +1,62 @@ +// Copyright 2023 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 ( + "fmt" + "regexp" + + "github.com/pingcap/tidb/build" +) + +// shouldRun checks whether a `file` should be analyzed in the specific pass +func shouldRun(passName string, fileName string) bool { + config, ok := build.NogoConfig[passName] + if !ok { + return true + } + + if config.OnlyFiles != nil { + for _, f := range config.OnlyFiles { + matched, err := regexp.MatchString(f, fileName) + if err != nil { + panic(fmt.Sprintf("regex is wrong: %s", f)) + } + + if matched { + return true + } + } + + return false + } + + if config.ExcludeFiles != nil { + for f := range config.ExcludeFiles { + matched, err := regexp.MatchString(f, fileName) + if err != nil { + panic(fmt.Sprintf("regex is wrong: %s", f)) + } + + if matched { + return false + } + } + + return true + } + + return true +} diff --git a/pkg/planner/core/tests/prepare/issue/main_test.go b/build/linter/util/exclude_test.go similarity index 61% rename from pkg/planner/core/tests/prepare/issue/main_test.go rename to build/linter/util/exclude_test.go index cef07c27d30f9..69d2ac2076ee4 100644 --- a/pkg/planner/core/tests/prepare/issue/main_test.go +++ b/build/linter/util/exclude_test.go @@ -12,22 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. -package issue +package util import ( - "flag" "testing" - "github.com/pingcap/tidb/pkg/testkit/testsetup" - "go.uber.org/goleak" + "github.com/stretchr/testify/require" ) -func TestMain(m *testing.M) { - testsetup.SetupForCommonTest() - flag.Parse() - opts := []goleak.Option{ - goleak.IgnoreTopFunction("github.com/golang/glog.(*fileSink).flushDaemon"), - goleak.IgnoreTopFunction("github.com/lestrrat-go/httprc.runFetchWorker"), - } - goleak.VerifyTestMain(m, opts...) +func TestShouldRun(t *testing.T) { + require.True(t, shouldRun("gofmt", "some.go")) + require.False(t, shouldRun("gofmt", "uca_generated.go")) } diff --git a/build/linter/util/util.go b/build/linter/util/util.go index 62c470c17124b..982b7ad2b7024 100644 --- a/build/linter/util/util.go +++ b/build/linter/util/util.go @@ -106,9 +106,32 @@ func SkipAnalyzer(analyzer *analysis.Analyzer) { oldRun := analyzer.Run analyzer.Run = func(p *analysis.Pass) (interface{}, error) { pass := *p + + // skip running analysis on files by excluding them from `pass.Files` + ignoreFiles := make(map[string]struct{}) + dirs := pass.ResultOf[Directives].([]Directive) + for _, dir := range dirs { + cmd := dir.Command + switch cmd { + case skipFile: + ignorePos := report.DisplayPosition(pass.Fset, dir.Node.Pos()) + ignoreFiles[ignorePos.Filename] = struct{}{} + default: + continue + } + } + + newPassFiles := make([]*ast.File, 0, len(pass.Files)) + for _, f := range p.Files { + pos := pass.Fset.PositionFor(f.Pos(), false) + if _, ok := ignoreFiles[pos.Filename]; !ok { + newPassFiles = append(newPassFiles, f) + } + } + pass.Files = newPassFiles + oldReport := p.Report pass.Report = func(diag analysis.Diagnostic) { - dirs := pass.ResultOf[Directives].([]Directive) for _, dir := range dirs { cmd := dir.Command linters := dir.Linters @@ -125,9 +148,8 @@ func SkipAnalyzer(analyzer *analysis.Analyzer) { } } case skipFile: - ignorePos := report.DisplayPosition(pass.Fset, dir.Node.Pos()) nodePos := report.DisplayPosition(pass.Fset, diag.Pos) - if ignorePos.Filename == nodePos.Filename { + if _, ok := ignoreFiles[nodePos.Filename]; ok { return } default: @@ -140,6 +162,26 @@ func SkipAnalyzer(analyzer *analysis.Analyzer) { } } +// SkipAnalyzerByConfig updates an analyzer to skip files according to `exclude_files` +func SkipAnalyzerByConfig(analyzer *analysis.Analyzer) { + oldRun := analyzer.Run + analyzer.Run = func(p *analysis.Pass) (interface{}, error) { + pass := *p + + // modify the `p.Files` according to the `shouldRun` + newPassFiles := make([]*ast.File, 0, len(pass.Files)) + for _, f := range p.Files { + pos := pass.Fset.PositionFor(f.Pos(), false) + if shouldRun(analyzer.Name, pos.Filename) { + newPassFiles = append(newPassFiles, f) + } + } + pass.Files = newPassFiles + + return oldRun(&pass) + } +} + // FormatCode is to format code for nogo. func FormatCode(code string) string { if strings.Contains(code, "`") { diff --git a/build/patches/com_github_grpc_ecosystem_grpc_gateway_v2.patch b/build/patches/com_github_grpc_ecosystem_grpc_gateway_v2.patch new file mode 100644 index 0000000000000..35ecc70d9a889 --- /dev/null +++ b/build/patches/com_github_grpc_ecosystem_grpc_gateway_v2.patch @@ -0,0 +1,11 @@ +--- a/runtime/BUILD.bazel 2023-11-24 16:35:19 ++++ b/runtime/BUILD.bazel 2023-11-24 16:36:24 +@@ -26,7 +26,7 @@ + deps = [ + "//internal/httprule", + "//utilities", +- "@go_googleapis//google/api:httpbody_go_proto", ++ "@@org_golang_google_genproto_googleapis_api//httpbody", + "@org_golang_google_grpc//codes", + "@org_golang_google_grpc//grpclog", + "@org_golang_google_grpc//health/grpc_health_v1", diff --git a/cmd/benchdb/BUILD.bazel b/cmd/benchdb/BUILD.bazel index cb9959c92f175..6e8acbd0bd3ff 100644 --- a/cmd/benchdb/BUILD.bazel +++ b/cmd/benchdb/BUILD.bazel @@ -8,6 +8,7 @@ go_library( deps = [ "//pkg/parser/terror", "//pkg/session", + "//pkg/session/types", "//pkg/store", "//pkg/store/driver", "//pkg/util/logutil", diff --git a/cmd/benchdb/main.go b/cmd/benchdb/main.go index 3af0e74fe7cc5..abe57173805d3 100644 --- a/cmd/benchdb/main.go +++ b/cmd/benchdb/main.go @@ -26,6 +26,7 @@ import ( "github.com/pingcap/log" "github.com/pingcap/tidb/pkg/parser/terror" "github.com/pingcap/tidb/pkg/session" + sessiontypes "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/store" "github.com/pingcap/tidb/pkg/store/driver" "github.com/pingcap/tidb/pkg/util/logutil" @@ -88,7 +89,7 @@ func main() { type benchDB struct { store tikv.Storage - session session.Session + session sessiontypes.Session } func newBenchDB() *benchDB { diff --git a/cmd/ddltest/BUILD.bazel b/cmd/ddltest/BUILD.bazel index a036bcd5bba6f..bf3fce97cf57a 100644 --- a/cmd/ddltest/BUILD.bazel +++ b/cmd/ddltest/BUILD.bazel @@ -20,6 +20,7 @@ go_test( "//pkg/parser/model", "//pkg/parser/terror", "//pkg/session", + "//pkg/session/types", "//pkg/sessionctx", "//pkg/sessionctx/variable", "//pkg/sessiontxn", diff --git a/cmd/ddltest/ddl_test.go b/cmd/ddltest/ddl_test.go index f3792ee17f257..6c90ebf3a2fcc 100644 --- a/cmd/ddltest/ddl_test.go +++ b/cmd/ddltest/ddl_test.go @@ -39,6 +39,7 @@ import ( "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/terror" "github.com/pingcap/tidb/pkg/session" + sessiontypes "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/sessiontxn" @@ -76,7 +77,7 @@ type server struct { type ddlSuite struct { store kv.Storage dom *domain.Domain - s session.Session + s sessiontypes.Session ctx sessionctx.Context m sync.Mutex @@ -1156,6 +1157,5 @@ func addEnvPath(newPath string) { } func init() { - rand.Seed(time.Now().UnixNano()) _ = store.Register("tikv", tidbdriver.TiKVDriver{}) } diff --git a/cmd/importer/rand.go b/cmd/importer/rand.go index d0470afc94be5..1adab0f0dbce6 100644 --- a/cmd/importer/rand.go +++ b/cmd/importer/rand.go @@ -38,10 +38,6 @@ const ( letterIdxMax = 63 / letterIdxBits // # of letter indices fitting in 63 bits ) -func init() { - rand.Seed(time.Now().UnixNano()) -} - func randInt(min int, max int) int { return min + rand.Intn(max-min+1) } diff --git a/cmd/tidb-server/fips.go b/cmd/tidb-server/fips.go new file mode 100644 index 0000000000000..5b18f7bee023e --- /dev/null +++ b/cmd/tidb-server/fips.go @@ -0,0 +1,26 @@ +// Copyright 2023 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build boringcrypto +// +build boringcrypto + +package main + +import _ "crypto/tls/fipsonly" + +import "github.com/pingcap/tidb/pkg/parser/mysql" + +func init() { + mysql.TiDBReleaseVersion += "-fips" +} diff --git a/dumpling/export/BUILD.bazel b/dumpling/export/BUILD.bazel index ca5e92fbdcdf1..e817a54df5ddc 100644 --- a/dumpling/export/BUILD.bazel +++ b/dumpling/export/BUILD.bazel @@ -59,6 +59,7 @@ go_library( "@com_github_soheilhy_cmux//:cmux", "@com_github_spf13_pflag//:pflag", "@com_github_tikv_pd_client//:client", + "@com_github_tikv_pd_client//http", "@io_etcd_go_etcd_client_v3//:client", "@org_golang_x_sync//errgroup", "@org_uber_go_atomic//:atomic", diff --git a/dumpling/export/config.go b/dumpling/export/config.go index 7b272207d6185..78fb969e32d26 100644 --- a/dumpling/export/config.go +++ b/dumpling/export/config.go @@ -91,8 +91,8 @@ const ( CSVDialectSnowflake // CSVDialectRedshift is the dialect of Redshift CSVDialectRedshift - // CSVDialectBase64 is a dialect require base64 binary format, only used for test now. - CSVDialectBase64 + // CSVDialectBigQuery is the dialect of BigQuery + CSVDialectBigQuery ) // BinaryFormat is the format of binary data @@ -113,7 +113,7 @@ var DialectBinaryFormatMap = map[CSVDialect]BinaryFormat{ CSVDialectDefault: BinaryFormatUTF8, CSVDialectSnowflake: BinaryFormatHEX, CSVDialectRedshift: BinaryFormatHEX, - CSVDialectBase64: BinaryFormatBase64, + CSVDialectBigQuery: BinaryFormatBase64, } // Config is the dump config for dumpling @@ -351,7 +351,7 @@ func (*Config) DefineFlags(flags *pflag.FlagSet) { flags.Bool(flagTransactionalConsistency, true, "Only support transactional consistency") _ = flags.MarkHidden(flagTransactionalConsistency) flags.StringP(flagCompress, "c", "", "Compress output file type, support 'gzip', 'snappy', 'zstd', 'no-compression' now") - flags.String(flagCsvOutputDialect, "", "The dialect of output CSV file, support 'snowflake', 'redshift' now") + flags.String(flagCsvOutputDialect, "", "The dialect of output CSV file, support 'snowflake', 'redshift', 'bigquery' now") } // ParseFromFlags parses dumpling's export.Config from flags @@ -690,6 +690,8 @@ func ParseOutputDialect(outputDialect string) (CSVDialect, error) { return CSVDialectSnowflake, nil case "redshift": return CSVDialectRedshift, nil + case "bigquery": + return CSVDialectBigQuery, nil default: return CSVDialectDefault, errors.Errorf("unknown output dialect %s", outputDialect) } diff --git a/dumpling/export/sql.go b/dumpling/export/sql.go index 84355b797bccc..7292e86c28467 100644 --- a/dumpling/export/sql.go +++ b/dumpling/export/sql.go @@ -22,7 +22,7 @@ import ( dbconfig "github.com/pingcap/tidb/pkg/config" "github.com/pingcap/tidb/pkg/errno" "github.com/pingcap/tidb/pkg/parser/model" - "github.com/pingcap/tidb/pkg/store/helper" + pd "github.com/tikv/pd/client/http" "go.uber.org/multierr" "go.uber.org/zap" ) @@ -1465,19 +1465,19 @@ func GetDBInfo(db *sql.Conn, tables map[string]map[string]struct{}) ([]*model.DB // GetRegionInfos get region info including regionID, start key, end key from database sql interface. // start key, end key includes information to help split table -func GetRegionInfos(db *sql.Conn) (*helper.RegionsInfo, error) { +func GetRegionInfos(db *sql.Conn) (*pd.RegionsInfo, error) { const tableRegionSQL = "SELECT REGION_ID,START_KEY,END_KEY FROM INFORMATION_SCHEMA.TIKV_REGION_STATUS ORDER BY START_KEY;" var ( regionID int64 startKey, endKey string ) - regionsInfo := &helper.RegionsInfo{Regions: make([]helper.RegionInfo, 0)} + regionsInfo := &pd.RegionsInfo{Regions: make([]pd.RegionInfo, 0)} err := simpleQuery(db, tableRegionSQL, func(rows *sql.Rows) error { err := rows.Scan(®ionID, &startKey, &endKey) if err != nil { return errors.Trace(err) } - regionsInfo.Regions = append(regionsInfo.Regions, helper.RegionInfo{ + regionsInfo.Regions = append(regionsInfo.Regions, pd.RegionInfo{ ID: regionID, StartKey: startKey, EndKey: endKey, diff --git a/dumpling/export/writer_serial_test.go b/dumpling/export/writer_serial_test.go index 0f80e14926dcc..81a2338243ca4 100644 --- a/dumpling/export/writer_serial_test.go +++ b/dumpling/export/writer_serial_test.go @@ -296,7 +296,7 @@ func TestWriteInsertInCsvWithDialect(t *testing.T) { } { // test Base64 - conf.CsvOutputDialect = CSVDialectBase64 + conf.CsvOutputDialect = CSVDialectBigQuery tableIR := newMockTableIR("test", "employee", data, nil, colTypes) m := newMetrics(conf.PromFactory, conf.Labels) bf := storage.NewBufferWriter() diff --git a/errors.toml b/errors.toml index 35eef4500f3b2..65b32c380192c 100644 --- a/errors.toml +++ b/errors.toml @@ -1343,7 +1343,7 @@ Unsupported clustered primary key type FLOAT/DOUBLE for TTL ["ddl:8200"] error = ''' -Unsupported shard_row_id_bits for table with primary key as row id +Unsupported tidb_enable_dist_task setting. To utilize distributed task execution, please enable tidb_ddl_enable_fast_reorg first. ''' ["ddl:8201"] diff --git a/go.mod b/go.mod index 95012ee847017..864d260fd0d82 100644 --- a/go.mod +++ b/go.mod @@ -4,8 +4,8 @@ go 1.21 require ( cloud.google.com/go/storage v1.30.1 - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.0 - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.1.0 + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.8.0 + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0 github.com/BurntSushi/toml v1.3.2 github.com/DATA-DOG/go-sqlmock v1.5.0 @@ -15,7 +15,7 @@ require ( github.com/aliyun/alibaba-cloud-sdk-go v1.61.1581 github.com/apache/skywalking-eyes v0.4.0 github.com/ashanbrown/makezero v1.1.1 - github.com/aws/aws-sdk-go v1.44.259 + github.com/aws/aws-sdk-go v1.45.25 github.com/bazelbuild/buildtools v0.0.0-20230926111657-7d855c59baeb github.com/bazelbuild/rules_go v0.42.1-0.20231101215950-df20c987afcb github.com/blacktear23/go-proxyprotocol v1.0.6 @@ -34,7 +34,7 @@ require ( github.com/danjacques/gofslock v0.0.0-20191023191349-0a45f885bc37 github.com/dgraph-io/ristretto v0.1.1 github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 - github.com/docker/go-units v0.4.0 + github.com/docker/go-units v0.5.0 github.com/dolthub/swiss v0.2.1 github.com/emirpasic/gods v1.18.1 github.com/fatanugraha/noloopclosure v0.1.1 @@ -51,9 +51,9 @@ require ( github.com/golangci/misspell v0.4.1 github.com/golangci/prealloc v0.0.0-20180630174525-215b22d4de21 github.com/google/btree v1.1.2 - github.com/google/pprof v0.0.0-20211122183932-1daafda22083 + github.com/google/pprof v0.0.0-20230926050212-f7f687d19a98 github.com/google/skylark v0.0.0-20181101142754-a5f7082aabed - github.com/google/uuid v1.3.1 + github.com/google/uuid v1.4.0 github.com/gordonklaus/ineffassign v0.0.0-20230610083614-0e73809eb601 github.com/gorilla/mux v1.8.0 github.com/gostaticanalysis/forcetypeassert v0.1.0 @@ -81,7 +81,7 @@ require ( github.com/pingcap/errors v0.11.5-0.20221009092201-b66cddb77c32 github.com/pingcap/failpoint v0.0.0-20220801062533-2eaa32854a6c github.com/pingcap/fn v1.0.0 - github.com/pingcap/kvproto v0.0.0-20230925123611-87bebcc0d071 + github.com/pingcap/kvproto v0.0.0-20231122054644-fb0f5c2a0a10 github.com/pingcap/log v1.1.1-0.20230317032135-a0d097d16e22 github.com/pingcap/sysutil v1.0.1-0.20230407040306-fb007c5aff21 github.com/pingcap/tidb/pkg/parser v0.0.0-20211011031125-9b13dc409c5e @@ -89,7 +89,7 @@ require ( github.com/prometheus/client_golang v1.17.0 github.com/prometheus/client_model v0.5.0 github.com/prometheus/common v0.45.0 - github.com/prometheus/prometheus v0.0.0-20190525122359-d20e84d0fb64 + github.com/prometheus/prometheus v0.48.0 github.com/robfig/cron/v3 v3.0.1 github.com/sasha-s/go-deadlock v0.2.0 github.com/shirou/gopsutil/v3 v3.23.10 @@ -102,8 +102,8 @@ require ( github.com/stretchr/testify v1.8.4 github.com/tdakkota/asciicheck v0.2.0 github.com/tiancaiamao/appdash v0.0.0-20181126055449-889f96f722a2 - github.com/tikv/client-go/v2 v2.0.8-0.20231030120815-1362f1e87566 - github.com/tikv/pd/client v0.0.0-20230912103610-2f57a9f050eb + github.com/tikv/client-go/v2 v2.0.8-0.20231116051730-1c2351c28173 + github.com/tikv/pd/client v0.0.0-20231127075044-9f4803d8bd05 github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966 github.com/twmb/murmur3 v1.1.6 github.com/uber/jaeger-client-go v2.22.1+incompatible @@ -124,50 +124,57 @@ require ( go.uber.org/multierr v1.11.0 go.uber.org/zap v1.26.0 golang.org/x/exp v0.0.0-20231006140011-7918f672742d - golang.org/x/net v0.17.0 - golang.org/x/oauth2 v0.12.0 - golang.org/x/sync v0.4.0 + golang.org/x/net v0.18.0 + golang.org/x/oauth2 v0.14.0 + golang.org/x/sync v0.5.0 golang.org/x/sys v0.14.0 golang.org/x/term v0.14.0 - golang.org/x/text v0.13.0 + golang.org/x/text v0.14.0 golang.org/x/time v0.4.0 - golang.org/x/tools v0.14.0 - google.golang.org/api v0.128.0 + golang.org/x/tools v0.15.0 + google.golang.org/api v0.149.0 google.golang.org/grpc v1.59.0 gopkg.in/yaml.v2 v2.4.0 honnef.co/go/tools v0.4.6 - k8s.io/api v0.27.2 + k8s.io/api v0.28.2 sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0 sourcegraph.com/sourcegraph/appdash-data v0.0.0-20151005221446-73f23eafcf67 ) require ( - github.com/cenkalti/backoff/v4 v4.1.1 // indirect + github.com/cenkalti/backoff/v4 v4.2.1 // indirect + github.com/dennwc/varint v1.0.0 // indirect github.com/dolthub/maphash v0.1.0 // indirect + github.com/go-kit/log v0.2.1 // indirect + github.com/go-logr/stdr v1.2.2 // indirect github.com/golang-jwt/jwt/v4 v4.4.2 // indirect - github.com/google/s2a-go v0.1.4 // indirect + github.com/golang-jwt/jwt/v5 v5.0.0 // indirect + github.com/google/s2a-go v0.1.7 // indirect + github.com/grafana/regexp v0.0.0-20221122212121-6b5c0a4cb7fd // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect github.com/jfcg/sixb v1.3.8 // indirect github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect github.com/pkg/errors v0.9.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 - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.0.1 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.0.1 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b // indirect - k8s.io/utils v0.0.0-20230209194617-a36077c30491 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0 // indirect + go.opentelemetry.io/otel/metric v1.21.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20231030173426-d783a09b4405 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f // indirect + k8s.io/utils v0.0.0-20230711102312-30195339c3c7 // indirect ) require ( - cloud.google.com/go v0.110.8 // indirect - cloud.google.com/go/compute v1.23.1 // indirect + cloud.google.com/go v0.110.10 // indirect + cloud.google.com/go/compute v1.23.3 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v1.1.3 // indirect + cloud.google.com/go/iam v1.1.5 // indirect cloud.google.com/go/pubsub v1.33.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 // indirect github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358 // indirect - github.com/AzureAD/microsoft-authentication-library-for-go v0.5.1 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 // indirect github.com/DataDog/zstd v1.4.5 // indirect github.com/HdrHistogram/hdrhistogram-go v1.1.2 // indirect github.com/Masterminds/goutils v1.1.1 // indirect @@ -175,11 +182,9 @@ require ( github.com/Masterminds/sprig/v3 v3.2.2 // indirect github.com/VividCortex/ewma v1.2.0 // indirect github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d // indirect - github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect github.com/apache/thrift v0.13.1-0.20201008052519-daf620915714 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bmatcuk/doublestar/v2 v2.0.4 // indirect - github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/chavacava/garif v0.1.0 // indirect github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f // indirect @@ -188,30 +193,28 @@ require ( github.com/coocood/bbloom v0.0.0-20190830030839-58deb6228d64 // indirect github.com/coocood/rtutil v0.0.0-20190304133409-c84515f646f2 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/dustin/go-humanize v1.0.0 // indirect github.com/eapache/go-resiliency v1.2.0 // indirect github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 // indirect github.com/eapache/queue v1.1.0 // indirect github.com/fatih/structtag v1.2.0 - github.com/felixge/httpsnoop v1.0.2 // indirect + github.com/felixge/httpsnoop v1.0.3 // indirect github.com/go-asn1-ber/asn1-ber v1.5.4 // indirect - github.com/go-kit/kit v0.9.0 // indirect - github.com/go-logfmt/logfmt v0.5.1 // indirect - github.com/go-logr/logr v1.2.3 // indirect - github.com/go-ole/go-ole v1.2.6 // indirect + github.com/go-logfmt/logfmt v0.6.0 // indirect + github.com/go-logr/logr v1.3.0 // indirect + github.com/go-ole/go-ole v1.3.0 // indirect github.com/goccy/go-json v0.10.2 // indirect - github.com/golang-jwt/jwt v3.2.1+incompatible // indirect github.com/golang/glog v1.1.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/google/gofuzz v1.1.0 // indirect + github.com/google/gofuzz v1.2.0 // indirect github.com/google/licensecheck v0.3.1 // indirect github.com/google/renameio/v2 v2.0.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.2.4 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/gorilla/handlers v1.5.1 // indirect - github.com/gorilla/websocket v1.4.2 // indirect + github.com/gorilla/websocket v1.5.0 // indirect github.com/gostaticanalysis/analysisutil v0.7.1 // indirect github.com/gostaticanalysis/comment v1.4.2 // indirect github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect @@ -219,7 +222,7 @@ require ( github.com/hashicorp/go-uuid v1.0.2 // indirect github.com/hexops/gotextdiff v1.0.3 // indirect github.com/huandu/xstrings v1.3.1 // indirect - github.com/imdario/mergo v0.3.11 // indirect + github.com/imdario/mergo v0.3.16 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/influxdata/tdigest v0.0.1 github.com/jcmturner/aescts/v2 v2.0.0 // indirect @@ -241,7 +244,7 @@ require ( github.com/lestrrat-go/option v1.0.1 // indirect github.com/lufia/plan9stats v0.0.0-20230326075908-cb1d2100619a // indirect github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.18 // indirect + github.com/mattn/go-isatty v0.0.19 // indirect github.com/mattn/go-runewidth v0.0.14 // indirect github.com/mitchellh/copystructure v1.0.0 // indirect github.com/mitchellh/reflectwalk v1.0.1 // indirect @@ -249,27 +252,24 @@ require ( github.com/modern-go/reflect2 v1.0.2 // indirect github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354 // indirect github.com/ncw/directio v1.0.5 // indirect - github.com/oklog/ulid v1.3.1 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/petermattis/goid v0.0.0-20211229010228-4d14c490ee36 // indirect github.com/pierrec/lz4 v2.6.1+incompatible // indirect github.com/pingcap/goleveldb v0.0.0-20191226122134-f82aafb29989 // indirect - github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4 // indirect + github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect github.com/pkg/xattr v0.4.9 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b // indirect github.com/prometheus/procfs v0.12.0 // indirect - github.com/prometheus/tsdb v0.10.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/rivo/uniseg v0.4.4 // indirect github.com/rogpeppe/go-internal v1.11.0 // indirect github.com/shoenig/go-m1cpu v0.1.6 // indirect github.com/shopspring/decimal v1.2.0 // indirect - github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749 // indirect + github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c // indirect github.com/shurcooL/vfsgen v0.0.0-20181202132449-6a9ea43bcacd // indirect github.com/sirupsen/logrus v1.9.3 // indirect - github.com/spaolacci/murmur3 v1.1.0 // indirect github.com/spf13/cast v1.5.0 // indirect github.com/stretchr/objx v0.5.0 // indirect github.com/tiancaiamao/gp v0.0.0-20221230034425-4025bc8a4d4a @@ -283,26 +283,26 @@ require ( go.etcd.io/etcd/client/v2 v2.305.10 // indirect go.etcd.io/etcd/pkg/v3 v3.5.10 // indirect go.etcd.io/etcd/raft/v3 v3.5.10 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.25.0 // indirect - go.opentelemetry.io/otel v1.0.1 // indirect - go.opentelemetry.io/otel/sdk v1.0.1 // indirect - go.opentelemetry.io/otel/trace v1.0.1 // indirect - go.opentelemetry.io/proto/otlp v0.9.0 // indirect - golang.org/x/crypto v0.14.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 // indirect + go.opentelemetry.io/otel v1.21.0 // indirect + go.opentelemetry.io/otel/sdk v1.21.0 // indirect + go.opentelemetry.io/otel/trace v1.21.0 // indirect + go.opentelemetry.io/proto/otlp v1.0.0 // indirect + golang.org/x/crypto v0.15.0 // indirect golang.org/x/exp/typeparams v0.0.0-20230307190834-24139beb5833 // indirect golang.org/x/mod v0.14.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect gonum.org/v1/gonum v0.8.2 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b // indirect + google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 // indirect google.golang.org/protobuf v1.31.0 // indirect 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.27.2 // indirect - k8s.io/klog/v2 v2.90.1 // indirect + k8s.io/apimachinery v0.28.2 // indirect + k8s.io/klog/v2 v2.100.1 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.3.0 // indirect sigs.k8s.io/yaml v1.3.0 // indirect stathat.com/c/consistent v1.0.0 // indirect ) diff --git a/go.sum b/go.sum index e1b62bfb45c82..422cff28a6f65 100644 --- a/go.sum +++ b/go.sum @@ -13,24 +13,24 @@ cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKV cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.110.8 h1:tyNdfIxjzaWctIiLYOTalaLKZ17SI44SKFW26QbOhME= -cloud.google.com/go v0.110.8/go.mod h1:Iz8AkXJf1qmxC3Oxoep8R1T36w8B92yU29PcBhHO5fk= +cloud.google.com/go v0.110.10 h1:LXy9GEO+timppncPIAZoOj3l58LIU9k+kn48AN7IO3Y= +cloud.google.com/go v0.110.10/go.mod h1:v1OoFqYxiBkUrruItNM3eT4lLByNjxmJSV/xDKJNnic= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/compute v1.23.1 h1:V97tBoDaZHb6leicZ1G6DLK2BAaZLJ/7+9BB/En3hR0= -cloud.google.com/go/compute v1.23.1/go.mod h1:CqB3xpmPKKt3OJpW2ndFIXnA9A4xAy/F3Xp1ixncW78= +cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk= +cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/iam v1.1.3 h1:18tKG7DzydKWUnLjonWcJO6wjSCAtzh4GcRKlH/Hrzc= -cloud.google.com/go/iam v1.1.3/go.mod h1:3khUlaBXfPKKe7huYgEpDn6FtgRyMEqbkvBxrQyY5SE= -cloud.google.com/go/kms v1.15.3 h1:RYsbxTRmk91ydKCzekI2YjryO4c5Y2M80Zwcs9/D/cI= -cloud.google.com/go/kms v1.15.3/go.mod h1:AJdXqHxS2GlPyduM99s9iGqi2nwbviBbhV/hdmt4iOQ= +cloud.google.com/go/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI= +cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= +cloud.google.com/go/kms v1.15.5 h1:pj1sRfut2eRbD9pFRjNnPNg/CzJPuQAzUujMIM1vVeM= +cloud.google.com/go/kms v1.15.5/go.mod h1:cU2H5jnp6G2TDpUGZyqTCoy1n16fbubHZjmVXSMtwDI= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -44,23 +44,20 @@ cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RX cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.30.1 h1:uOdMxAs8HExqBlnLtnQyP0YkvbiDpdGShGKtx6U/oNM= cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= -contrib.go.opencensus.io/exporter/ocagent v0.4.12/go.mod h1:450APlNTSR6FrvC3CTRqYosuDstRB9un7SOx2k/9ckA= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= -github.com/Azure/azure-sdk-for-go v23.2.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.0 h1:8kDqDngH+DmVBiCtIjCFTGa7MBnsIOkF9IccInFEbjk= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.0/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.1.0 h1:QkAcEIAKbNL4KoFr4SathZPhDhF4mVwpBMFlYjyAqy8= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.1.0/go.mod h1:bhXu1AjYL+wutSL/kpSq6s7733q2Rb0yuot9Zgfqa/0= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.8.0 h1:9kDVnTz3vbfweTqAUmk/a/pH5pWFCHtvRpHYC0G/dcA= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.8.0/go.mod h1:3Ug6Qzto9anB6mGlEdgYMDF5zHQ+wwhEaYR4s17PHMw= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 h1:BMAjVKJM0U/CYF27gA0ZMmXGkOcvfFtD0oHVZ1TIPRI= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0/go.mod h1:1fXstnBMas5kzG+S3q8UoJcmyU6nUeunJcMDHcRYHhs= github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 h1:sXr+ck84g/ZlZUOZiNELInmMgOsuGwdjjVkEIde0OtY= github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0/go.mod h1:okt5dMMTOFjX/aovMlrjvvXoPMBVSPzk9185BT0+eZM= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0 h1:u/LLAOFgsMv7HmNL4Qufg58y+qElGOt5qv0z1mURkRY= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0/go.mod h1:2e8rMJtl2+2j+HXbTBwnyGpm5Nou7KhvSfxOq8JpTag= -github.com/Azure/go-autorest v11.2.8+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358 h1:mFRzDkZVAjdal+s7s0MwaRv9igoPqLRdzOLzw/8Xvq8= github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= -github.com/AzureAD/microsoft-authentication-library-for-go v0.5.1 h1:BWe8a+f/t+7KY7zH2mqygeUD0t8hNFXe08p1Pb3/jKE= -github.com/AzureAD/microsoft-authentication-library-for-go v0.5.1/go.mod h1:Vt9sXTKwMyGcOxSmLDMnGPgqsUg7m8pe215qMLrDXw4= +github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 h1:WpB/QDNLpMw72xHJc34BNNykqSOeEJDAWkhf0u12/Jk= +github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= @@ -85,16 +82,11 @@ github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030I github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= github.com/Masterminds/sprig/v3 v3.2.2 h1:17jRggJu518dr3QaafizSXOjKYp94wKfABxUmyxvxX8= github.com/Masterminds/sprig/v3 v3.2.2/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFPhxNuwnnxkKlk= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/OneOfOne/xxhash v1.2.5 h1:zl/OfRA6nftbBK9qTohYBJ5xvw6C/oNKizR7cZGl3cI= -github.com/OneOfOne/xxhash v1.2.5/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0= -github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/sarama v1.29.0 h1:ARid8o8oieau9XrHI55f/L3EoRAhm9px6sonbD7yuUE= github.com/Shopify/sarama v1.29.0/go.mod h1:2QpgD79wpdAESqNQMxNc0KYMkycd4slxGdV3TWSVqrU= github.com/Shopify/toxiproxy v2.1.4+incompatible h1:TKdv8HiTLgE5wdJuEML90aBgNWsokNbMijUGhmcoBJc= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/StackExchange/wmi v0.0.0-20180725035823-b12b22c5341f/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/VividCortex/ewma v1.1.1/go.mod h1:2Tkkvm3sRDVXaiyucHiACn4cqf7DpdyLvmxzcbUokwA= github.com/VividCortex/ewma v1.2.0 h1:f58SaIzcDXrSy3kWaHNvuJgJ3Nmz59Zji6XoJR/q1ow= github.com/VividCortex/ewma v1.2.0/go.mod h1:nz4BbCtbLyFDeC9SUHbtcT5644juEuWfUAUnGx7j5l4= @@ -104,8 +96,6 @@ github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d h1:licZJFw2RwpH github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d/go.mod h1:asat636LX7Bqt5lYEZ27JNDcqxfjdBQuJ/MM4CN/Lzo= github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAuRjVTiNNhvNRfY2Wxp9nhfyel4rklc= github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= github.com/alexbrainman/sspi v0.0.0-20210105120005-909beea2cc74 h1:Kk6a4nehpJ3UuJRqlA3JxYxBZEqCeOmATOvrbT4p9RA= @@ -116,21 +106,16 @@ github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kd github.com/apache/skywalking-eyes v0.4.0 h1:O13kdRU6FCEZevfD01mdhTgCZLLfPZIQ0GXZrLl7FpQ= github.com/apache/skywalking-eyes v0.4.0/go.mod h1:WblDbBgOLsLN0FJEBa9xj6PhuUA/J6spKYVTG4/F8Ls= github.com/apache/thrift v0.0.0-20181112125854-24918abba929/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.13.1-0.20201008052519-daf620915714 h1:Jz3KVLYY5+JO7rDiX0sAuRGtuv2vG01r17Y9nLMWNUw= github.com/apache/thrift v0.13.1-0.20201008052519-daf620915714/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/ashanbrown/makezero v1.1.1 h1:iCQ87C0V0vSyO+M9E/FZYbu65auqH0lnsOkf5FcB28s= github.com/ashanbrown/makezero v1.1.1/go.mod h1:i1bJLCRSCHOcOa9Y6MyF2FTfMZMFdHvxKHxgO5Z1axI= -github.com/aws/aws-sdk-go v1.15.24/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= github.com/aws/aws-sdk-go v1.30.19/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/aws/aws-sdk-go v1.44.204/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go v1.44.256/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= -github.com/aws/aws-sdk-go v1.44.259 h1:7yDn1dcv4DZFMKpu+2exIH5O6ipNj9qXrKfdMUaIJwY= -github.com/aws/aws-sdk-go v1.44.259/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go v1.45.25 h1:c4fLlh5sLdK2DCRTY1z0hyuJZU4ygxX8m1FswL6/nF4= +github.com/aws/aws-sdk-go v1.45.25/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= github.com/bazelbuild/buildtools v0.0.0-20230926111657-7d855c59baeb h1:4k69c5E7Sa7jmNtv9itBHYA4Z5pfurInuRrtgohxZeA= github.com/bazelbuild/buildtools v0.0.0-20230926111657-7d855c59baeb/go.mod h1:689QdV3hBP7Vo9dJMmzhoYIyo/9iMhEmHkJcnaPRCbo= @@ -138,12 +123,8 @@ github.com/bazelbuild/rules_go v0.42.1-0.20231101215950-df20c987afcb h1:CPn7VHaV github.com/bazelbuild/rules_go v0.42.1-0.20231101215950-df20c987afcb/go.mod h1:TFLfii8e49kTgn329knh1lsJFKdxyp/hKlWObY66xwY= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/biogo/store v0.0.0-20160505134755-913427a1d5e8/go.mod h1:Iev9Q3MErcn+w3UOJD/DkEzllvugfdx7bGcMOFhvr/4= github.com/blacktear23/go-proxyprotocol v1.0.6 h1:eTt6UMpEnq59NjON49b3Cay8Dm0sCs1nDliwgkyEsRM= github.com/blacktear23/go-proxyprotocol v1.0.6/go.mod h1:FSCbgnRZrQXazBLL5snfBbrcFSMtcmUDhSRb9OfFA1o= github.com/bmatcuk/doublestar/v2 v2.0.4 h1:6I6oUiT/sU27eE2OFcWqBhL1SwjyvQuOssxT4a1yidI= @@ -152,14 +133,9 @@ github.com/butuzov/mirror v1.1.0 h1:ZqX54gBVMXu78QLoiqdwpl2mgmoOJTk7s4p4o+0avZI= github.com/butuzov/mirror v1.1.0/go.mod h1:8Q0BdQU6rC6WILDiBM60DBfvV78OLJmMmixe7GF45AE= github.com/carlmjohnson/flagext v0.21.0 h1:/c4uK3ie786Z7caXLcIMvePNSSiH3bQVGDvmGLMme60= github.com/carlmjohnson/flagext v0.21.0/go.mod h1:Eenv0epIUAr4NuedNmkzI8WmBmjIxZC239XcKxYS2ac= -github.com/cenk/backoff v2.0.0+incompatible/go.mod h1:7FtoeaSnHoZnmZzz47cM35Y9nSW7tNyaidugnHTaFDE= -github.com/cenkalti/backoff/v4 v4.1.1 h1:G2HAfAmvm/GcKan2oOQpBXOd2tT2G57ZnZGWa1PxPBQ= -github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= -github.com/census-instrumentation/opencensus-proto v0.2.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= +github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/certifi/gocertifi v0.0.0-20180905225744-ee1a9a0726d2/go.mod h1:GJKEexRPVJrBSOjoqN5VNOIKJ5Q3RViH6eu3puDRwx4= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= @@ -179,18 +155,8 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk github.com/cloudfoundry/gosigar v1.3.6 h1:gIc08FbB3QPb+nAQhINIK/qhf5REKkY0FTGgRGXkcVc= github.com/cloudfoundry/gosigar v1.3.6/go.mod h1:lNWstu5g5gw59O09Y+wsMNFzBSnU8a0u+Sfx4dq360E= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+gqO04wryn5h75LSazbRlnya1k= github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= -github.com/cockroachdb/cmux v0.0.0-20170110192607-30d10be49292/go.mod h1:qRiX68mZX1lGBkTWyp3CLcenw9I94W2dLeRvMzcn9N4= -github.com/cockroachdb/cockroach v0.0.0-20170608034007-84bc9597164f/go.mod h1:xeT/CQ0qZHangbYbWShlCGAx31aV4AjGswDUjhKS6HQ= -github.com/cockroachdb/cockroach-go v0.0.0-20181001143604-e0a95dfd547c/go.mod h1:XGLbWH/ujMcbPbhZq52Nv6UrCghb1yGn//133kEsvDk= github.com/cockroachdb/datadriven v1.0.0/go.mod h1:5Ib8Meh+jk1RlHIXej6Pzevx/NLlNvQB9pmSBZErGA4= github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD93PBm/jA= github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= @@ -215,7 +181,6 @@ github.com/coocood/freecache v1.2.1/go.mod h1:RBUWa/Cy+OHdfTGFEhEuE1pMCMX51Ncizj github.com/coocood/rtutil v0.0.0-20190304133409-c84515f646f2 h1:NnLfQ77q0G4k2Of2c1ceQ0ec6MkLQyDp+IGdVM0D8XM= github.com/coocood/rtutil v0.0.0-20190304133409-c84515f646f2/go.mod h1:7qG7YFnOALvsx6tKTNmQot8d7cGFXM9TidzvRFLWYwM= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/etcd v3.3.12+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= @@ -233,11 +198,14 @@ github.com/daixiang0/gci v0.11.2/go.mod h1:xtHP9N7AHdNvtRNfcx9gwTDfw7FRJx4bZUsiE github.com/danjacques/gofslock v0.0.0-20191023191349-0a45f885bc37 h1:X6mKGhCFOxrKeeHAjv/3UvT6e5RRxW6wRdlqlV6/H4w= github.com/danjacques/gofslock v0.0.0-20191023191349-0a45f885bc37/go.mod h1:DC3JtzuG7kxMvJ6dZmf2ymjNyoXwgtklr7FN+Um2B0U= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= +github.com/dennwc/varint v1.0.0 h1:kGNFFSSw8ToIy3obO/kKr8U9GZYUAxQEVuix4zfDWzE= +github.com/dennwc/varint v1.0.0/go.mod h1:hnItb35rvZvJrbTALZtY/iQfDs48JKRG1RPpgziApxA= github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= @@ -245,18 +213,16 @@ github.com/dgryski/go-farm v0.0.0-20190104051053-3adb47b1fb0f/go.mod h1:SqUrOPUn github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/dnaeon/go-vcr v1.1.0 h1:ReYa/UBrRyQdant9B4fNHGoCNKw6qh6P0fsdGmZpR7c= -github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= -github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= -github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= +github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= +github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= +github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dolthub/maphash v0.1.0 h1:bsQ7JsF4FkkWyrP3oCnFJgrCUAFbFf3kOl4L/QxPDyQ= github.com/dolthub/maphash v0.1.0/go.mod h1:gkg4Ch4CdCDu5h6PMriVLawB7koZ+5ijb9puGMV50a4= github.com/dolthub/swiss v0.2.1 h1:gs2osYs5SJkAaH5/ggVJqXQxRXtWshF6uE0lgR/Y3Gw= github.com/dolthub/swiss v0.2.1/go.mod h1:8AhKZZ1HK7g18j7v7k6c5cYIGEZJcPn0ARsai8cUrh0= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-resiliency v1.2.0 h1:v7g92e/KSN71Rq7vSThKaWIq68fL4YHvWyiUKorFR1Q= github.com/eapache/go-resiliency v1.2.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 h1:YEetp8/yCZMuEPMUDHG0CW/brkkEp8mzqk2+ODEitlw= @@ -264,27 +230,18 @@ github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1 github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= -github.com/elastic/gosigar v0.9.0/go.mod h1:cdorVVzy1fhmEqmtgqkoE3bYtCfSCkVyjTyCIo22xvs= -github.com/elazarl/go-bindata-assetfs v1.0.0/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v1.0.2 h1:QkIBuU5k+x7/QXPvPPnWXWlCdaBFApVqftFV6k087DA= github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE= github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= -github.com/evanphx/json-patch v4.1.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/facebookgo/clock v0.0.0-20150410010913-600d898af40a/go.mod h1:7Ga40egUymuWXxAe151lTNnCv97MddSOVsjpPPkityA= github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= github.com/fatanugraha/noloopclosure v0.1.1 h1:AhepjAikNpk50qTZoipHZqeZtnyKT/C2Tk5dGn7nC+A= github.com/fatanugraha/noloopclosure v0.1.1/go.mod h1:Mi9CiG5QvEgvPLtZLsTzjYwjIDnWAbo10r0BG7JpJII= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= @@ -292,8 +249,8 @@ github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga 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/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/felixge/httpsnoop v1.0.2 h1:+nS9g82KMXccJ/wp0zyRW9ZBHFETmMGtkk+2CTTrW4o= -github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= +github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/flosch/pongo2 v0.0.0-20190707114632-bbf5a6c351f4/go.mod h1:T9YF2M40nIgbVgp3rreNmTged+9HrbNTIQf1PsaIiTA= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/form3tech-oss/jwt-go v3.2.6-0.20210809144907-32ab6a8243d7+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= @@ -310,7 +267,6 @@ github.com/fsouza/fake-gcs-server v1.44.0 h1:Lw/mrvs45AfCUPVpry6qFkZnZPqe9thpLQH github.com/fsouza/fake-gcs-server v1.44.0/go.mod h1:M02aKoTv9Tnlf+gmWnTok1PWVCUHDntVbHxpd0krTfo= github.com/fzipp/gocyclo v0.3.1/go.mod h1:DJHO6AUmbdqj2ET4Z9iArSuwWgYDRryYt2wASxc7x3E= github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= -github.com/getsentry/raven-go v0.1.2/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= github.com/ghemawat/stream v0.0.0-20171120220530-696b145b53b9/go.mod h1:106OIgooyS7OzLDOpUGgm9fA3bQENb/cFSyyBmMoJDs= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= @@ -323,26 +279,25 @@ github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.9.0 h1:wDJmvq38kDhkVxi50ni9ykkdUr1PKgqKOoi01fa0Mdk= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= +github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= -github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= +github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= -github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= -github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= -github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= -github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= +github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= -github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= @@ -353,7 +308,6 @@ github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5x github.com/gogo/googleapis v0.0.0-20180223154316-0cd9801be74a/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= 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.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.0/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.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= @@ -361,15 +315,14 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM= github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A= -github.com/golang-jwt/jwt v3.2.1+incompatible h1:73Z+4BJcrTC+KczS6WvTPvRGOp1WmfEP4Q1lOd9Z/+c= -github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang-jwt/jwt/v4 v4.4.2 h1:rcc4lwaZgFMCZ5jxF9ABolDcIHdBytAFgqFPbSJQAYs= github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE= +github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.1.2 h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo= github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= -github.com/golang/groupcache v0.0.0-20180924190550-6f2cf27854a4/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -440,10 +393,9 @@ github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN github.com/google/go-github/v33 v33.0.0/go.mod h1:GMdDnVZY/2TsWgp/lkYnpSAh6TrzhANBBwm6k6TTEXg= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= -github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= -github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/licensecheck v0.3.1 h1:QoxgoDkaeC4nFrtGN1jV7IPmDCHFNIVh54e5hSt6sPs= github.com/google/licensecheck v0.3.1/go.mod h1:ORkR35t/JjW+emNKtfJDII0zlciG9JgbT7SmsohlHmY= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= @@ -451,7 +403,6 @@ github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXi github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/pprof v0.0.0-20180605153948-8b03ce837f34/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= @@ -459,41 +410,37 @@ github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20211122183932-1daafda22083 h1:c8EUapQFi+kjzedr4c6WqbwMdmB95+oDBWZ5XFHFYxY= -github.com/google/pprof v0.0.0-20211122183932-1daafda22083/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= +github.com/google/pprof v0.0.0-20230926050212-f7f687d19a98 h1:pUa4ghanp6q4IJHwE9RwLgmVFfReJN+KbQ8ExNEUUoQ= +github.com/google/pprof v0.0.0-20230926050212-f7f687d19a98/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/renameio/v2 v2.0.0 h1:UifI23ZTGY8Tt29JbYFiuyIU3eX+RNFtUwefq9qAhxg= github.com/google/renameio/v2 v2.0.0/go.mod h1:BtmJXm5YlszgC+TD4HOEEUFgkJP3nLxehU6hfe7jRt4= -github.com/google/s2a-go v0.1.4 h1:1kZ/sQM3srePvKs3tXAvQzo66XfcReoqFpIpIccE7Oc= -github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= +github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= +github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/skylark v0.0.0-20181101142754-a5f7082aabed h1:rZdD1GeRTHD1aG+VIvhQEYXurx6Wfg4QIT5YVl2tSC8= github.com/google/skylark v0.0.0-20181101142754-a5f7082aabed/go.mod h1:CKSX6SxHW1vp20ZNaeGe3TFFBIwCG6vaYrpAiOzX+NA= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= -github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.2.4 h1:uGy6JWR/uMIILU8wbf+OkstIrNiMjGpEIyhx8f6W7s4= -github.com/googleapis/enterprise-certificate-proxy v0.2.4/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= +github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= +github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= -github.com/googleapis/gnostic v0.2.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/gophercloud/gophercloud v0.0.0-20190301152420-fca40860790e/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gordonklaus/ineffassign v0.0.0-20230610083614-0e73809eb601 h1:mrEEilTAUmaAORhssPPkxj84TsHrPMLBGW2Z4SoTxm8= github.com/gordonklaus/ineffassign v0.0.0-20230610083614-0e73809eb601/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0= -github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= -github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= +github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk= github.com/gostaticanalysis/analysisutil v0.7.1/go.mod h1:v21E3hY37WKMGSnbsw2S/ojApNWb6C1//mXO48CXbVc= github.com/gostaticanalysis/comment v1.4.2 h1:hlnx5+S2fY9Zo9ePo4AhgYsYHbM2+eAv8m/s1JiCd6Q= @@ -503,43 +450,26 @@ github.com/gostaticanalysis/forcetypeassert v0.1.0/go.mod h1:qZEedyP/sY1lTGV1uJ3 github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= github.com/gostaticanalysis/testutil v0.4.0 h1:nhdCmubdmDF6VEatUNjgUZBJKWRqugoISdUv3PPQgHY= github.com/gostaticanalysis/testutil v0.4.0/go.mod h1:bLIoPefWXrRi/ssLFWX1dx7Repi5x3CuviD3dgAZaBU= +github.com/grafana/regexp v0.0.0-20221122212121-6b5c0a4cb7fd h1:PpuIBO5P3e9hpqBD0O/HjhShYuM6XE0i/lbE6J94kww= +github.com/grafana/regexp v0.0.0-20221122212121-6b5c0a4cb7fd/go.mod h1:M5qHK+eWfAv8VR/265dIuEpL3fNfeC21tXXp9itM24A= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645/go.mod h1:6iZfnjpejD4L/4DwD7NryNaJyCQdzwWwH2MWhCA90Kw= -github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-msgpack v0.5.4/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= github.com/hashicorp/go-uuid v0.0.0-20180228145832-27454136f036/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE= github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= @@ -549,22 +479,19 @@ github.com/hydrogen18/memlistener v0.0.0-20141126152155-54553eb933fb/go.mod h1:q github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0= github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= -github.com/imdario/mergo v0.3.11 h1:3tnifQM4i+fbajXKBHXWEH+KvNHqojZ778UH75j3bGA= github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= +github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/influxdata/influxdb v0.0.0-20170331210902-15e594fc09f1/go.mod h1:qZna6X/4elxqT3yI9iZYdZrWWdeFOOprn86kgg4+IzY= github.com/influxdata/tdigest v0.0.1 h1:XpFptwYmnEKUqmkcDjrzffswZ3nvNeevbUSLPP/ZzIY= github.com/influxdata/tdigest v0.0.1/go.mod h1:Z0kXnxzbTC2qrx4NaIzYkE1k66+6oEDQTvL95hQFh5Y= github.com/iris-contrib/blackfriday v2.0.0+incompatible/go.mod h1:UzZ2bDEoaSGPbkg6SAB4att1aAwTmVIx/5gCVqeyUdI= github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0= github.com/iris-contrib/i18n v0.0.0-20171121225848-987a633949d0/go.mod h1:pMCz62A0xJL6I+umB2YTlFRwWXaDFA0jy+5HzGiJjqI= github.com/iris-contrib/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw= -github.com/jackc/fake v0.0.0-20150926172116-812a484cc733/go.mod h1:WrMFNQdiFJ80sQsxDoMokWK1W5TQtxBFNpzWTD84ibQ= -github.com/jackc/pgx v3.2.0+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I= github.com/jcmturner/aescts/v2 v2.0.0 h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8= github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs= github.com/jcmturner/dnsutils/v2 v2.0.0 h1:lltnkeZGL0wILNvrNiVCR6Ro5PGU/SeBvVO/8c/iPbo= @@ -592,8 +519,6 @@ github.com/jfcg/sorty/v2 v2.1.0 h1:EjrVSL3cDRxBt/ehiYCIv10F7YHYbTzEmdv7WbkkN1k= github.com/jfcg/sorty/v2 v2.1.0/go.mod h1:JpcSKlmtGOOAGyTdWN2ErjvxeMSJVYBsylAKepIxmNg= github.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs= github.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+Dtp+nu2qOq+er9c= -github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= @@ -614,12 +539,10 @@ github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnr github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/juju/errors v0.0.0-20181118221551-089d3ea4e4d5/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q= github.com/juju/loggo v0.0.0-20180524022052-584905176618/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U= github.com/juju/testing v0.0.0-20180920084828-472a3e8b2073/go.mod h1:63prj8cnj0tU0S9OHjGJn+b1h0ZghCndfnbQolrYTwA= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= github.com/kataras/golog v0.0.9/go.mod h1:12HJgwBIZFNGL0EJnMRhmvGA0PQGx8VFwrZtM4CqbAk= @@ -644,7 +567,6 @@ github.com/klauspost/compress v1.17.1/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQs github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid v1.3.1 h1:5JNjFYYQrZeKRJ0734q51WCEEn2huer72Dc7K+R/b6s= github.com/klauspost/cpuid v1.3.1/go.mod h1:bYW4mA6ZgKPob1/Dlai2LviZJO7KGI3uoWLd42rAQw4= -github.com/knz/strtime v0.0.0-20181018220328-af2256ee352c/go.mod h1:4ZxfWkxwtc7dBeifERVVWRy9F9rTU9p0yCDgeCtlius= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= @@ -676,26 +598,21 @@ github.com/lestrrat-go/jwx/v2 v2.0.11/go.mod h1:ZtPtMFlrfDrH2Y0iwfa3dRFn8VzwBrB+ github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= github.com/lestrrat-go/option v1.0.1 h1:oAzP2fvZGQKWkvHa1/SAcFolBEca1oN+mQ7eooNBEYU= github.com/lestrrat-go/option v1.0.1/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= -github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lightstep/lightstep-tracer-go v0.15.6/go.mod h1:6AMpwZpsyCFwSovxzM78e+AsYxE8sGwiM6C3TytaWeI= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/lufia/plan9stats v0.0.0-20230326075908-cb1d2100619a h1:N9zuLhTvBSRt0gWSiJswwQ2HqDmtX/ZCDJURnKUt1Ik= github.com/lufia/plan9stats v0.0.0-20230326075908-cb1d2100619a/go.mod h1:JKx41uQRwqlTZabZc+kILPrO/3jlKnQ2Z8b7YiVw5cE= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98= -github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= @@ -710,18 +627,9 @@ github.com/mediocregopher/radix/v3 v3.3.0/go.mod h1:EmfVyvspXz1uZEyPBMyGK+kjWiKQ github.com/mgechev/revive v1.3.4 h1:k/tO3XTaWY4DEHal9tWBkkUMJYO/dLDVyMmAQxmIMDc= github.com/mgechev/revive v1.3.4/go.mod h1:W+pZCMu9qj8Uhfs1iJMQsEFLRozUfvwFwqVvRbSNLVw= github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.10/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.1 h1:FVzMWA5RllMAKIdUSC8mdWo3XtwoecrH79BY70sEEpE= @@ -732,10 +640,7 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJ github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/montanaflynn/stats v0.0.0-20180911141734-db72e6cae808/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= -github.com/montanaflynn/stats v0.6.6/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/nats-io/nats.go v1.8.1/go.mod h1:BrFz9vVn0fU3AcH9Vn4Kd7W0NpJ651tD5omQ3M8LwxM= @@ -756,47 +661,36 @@ github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3L github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= -github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.13.0/go.mod h1:+REjRxOmWfHCjfv9TTWB1jD1Frx4XydAD3zm1lskyM0= 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.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.27.4 h1:Z2AnStgsdSayCMDiCU42qIz+HLqEPcgiOCXjAU/w+8E= -github.com/onsi/gomega v1.27.4/go.mod h1:riYq/GJKh8hhoM01HN6Vmuy93AarCXCBGpvFDK3q3fQ= -github.com/opentracing-contrib/go-stdlib v0.0.0-20170113013457-1de4cc2120e7/go.mod h1:PLldrQSroqzH70Xl+1DQcGnefIbqsKR7UDaiux3zV+w= +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/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.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= -github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= github.com/otiai10/copy v1.2.0 h1:HvG945u96iNadPoG2/Ja2+AUJeW5YuFQMixq9yirC+k= github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pborman/getopt v0.0.0-20180729010549-6fdd0a2c7117/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/peterbourgon/g2s v0.0.0-20170223122336-d4e7ad98afea/go.mod h1:1VcHEd3ro4QMoHfiNl/j7Jkln9+KQuorp0PItHMJYNg= -github.com/petermattis/goid v0.0.0-20170504144140-0ded85884ba5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= github.com/petermattis/goid v0.0.0-20211229010228-4d14c490ee36 h1:64bxqeTEN0/xoEqhKGowgihNuzISS9rEG6YUMU4bzJo= github.com/petermattis/goid v0.0.0-20211229010228-4d14c490ee36/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 h1:JhzVVoYvbOACxoUmOs6V/G4D5nPVUW73rKvXxP4XUJc= github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= -github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4 v2.6.0+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM= github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= @@ -814,8 +708,8 @@ 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-20230925123611-87bebcc0d071 h1:giqmIJSWHs+jhHfd+rth8CXWR18KAtqJu4imY1YdA6o= -github.com/pingcap/kvproto v0.0.0-20230925123611-87bebcc0d071/go.mod h1:r0q/CFcwvyeRhKtoqzmWMBebrtpIziQQ9vR+JKh1knc= +github.com/pingcap/kvproto v0.0.0-20231122054644-fb0f5c2a0a10 h1:qnhfzwdWOy8oOSZYX7/aK9XKDs4hJ6P/Gg+s7Sr9VKY= +github.com/pingcap/kvproto v0.0.0-20231122054644-fb0f5c2a0a10/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.20230317032135-a0d097d16e22 h1:2SOzvGvE8beiC1Y4g9Onkvu6UmuBBOeWRGQEjJaT/JY= @@ -824,57 +718,40 @@ github.com/pingcap/sysutil v1.0.1-0.20230407040306-fb007c5aff21 h1:QV6jqlfOkh8hq github.com/pingcap/sysutil v1.0.1-0.20230407040306-fb007c5aff21/go.mod h1:QYnjfA95ZaMefyl1NO8oPtKeb8pYUdnDVhQgf+qdpjM= github.com/pingcap/tipb v0.0.0-20230919054518-dfd7d194838f h1:NCiI4Wyu4GkViLGTu6cYcxt79LZ1SenBBQX1OwEV6Jg= github.com/pingcap/tipb v0.0.0-20230919054518-dfd7d194838f/go.mod h1:A7mrd7WHBl1o63LE2bIBGEJMTNWXqhgmYiOvMLxozfs= -github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4 h1:Qj1ukM4GlMWXNdMBuXcXfz/Kw9s1qm0CLY32QxuSImI= -github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ= +github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= +github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= github.com/pkg/xattr v0.4.9 h1:5883YPCtkSd8LFbs13nXplj9g9tlrwoJRjgpgMu1/fE= github.com/pkg/xattr v0.4.9/go.mod h1:di8WF84zAKk8jzR1UBTEWh9AUlIZZ7M/JNt8e9B6ktU= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b h1:0LFwY6Q3gMACTjAbMZBjXAqTOzOwFaj2Ld6cjeQ7Rig= github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= github.com/prometheus/client_golang v0.9.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= github.com/prometheus/common v0.0.0-20181020173914-7e9e6cabbd39/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM= github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= +github.com/prometheus/common/sigv4 v0.1.0 h1:qoVebwtwwEhS85Czm2dSROY5fTo2PAPEVdDeppTwGX4= +github.com/prometheus/common/sigv4 v0.1.0/go.mod h1:2Jkxxk9yYvCkE5G1sQT7GuEXm57JrvHu9k5YwTjsNtI= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= -github.com/prometheus/prometheus v0.0.0-20190525122359-d20e84d0fb64 h1:3DyLm+sTAJkfLyR/1pJ3L+fU2lFufWbpcgMFlGtqeyA= -github.com/prometheus/prometheus v0.0.0-20190525122359-d20e84d0fb64/go.mod h1:oYrT4Vs22/NcnoVYXt5m4cIHP+znvgyusahVpyETKTw= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/prometheus/tsdb v0.8.0/go.mod h1:fSI0j+IUQrDd7+ZtR9WKIGtoYAYAJUKcKhYLG25tN4g= -github.com/prometheus/tsdb v0.10.0 h1:If5rVCMTp6W2SiRAQFlbpJNgVlgMEd+U2GZckwK38ic= -github.com/prometheus/tsdb v0.10.0/go.mod h1:oi49uRhEe9dPUTlS3JRZOwJuVi6tmh10QSgwXEyGCt4= -github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/prometheus/prometheus v0.48.0 h1:yrBloImGQ7je4h8M10ujGh4R6oxYQJQKlMuETwNskGk= +github.com/prometheus/prometheus v0.48.0/go.mod h1:SRw624aMAxTfryAcP8rOjg4S/sHHaetx2lyJJ2nM83g= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= @@ -883,29 +760,21 @@ github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJ github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= -github.com/rlmcpherson/s3gof3r v0.5.0/go.mod h1:s7vv7SMDPInkitQMuZzH615G7yWHdrU2r/Go7Bo71Rs= github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= -github.com/rubyist/circuitbreaker v2.2.1+incompatible/go.mod h1:Ycs3JgJADPuzJDwffe12k6BZT8hxVi6lFK+gWYJLN4A= 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/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryszard/goskiplist v0.0.0-20150312221310-2dfbae5fcf46 h1:GHRpF1pTW19a8tTFrMLUcfWwyC0pnifVo2ClaLq+hP8= github.com/ryszard/goskiplist v0.0.0-20150312221310-2dfbae5fcf46/go.mod h1:uAQ5PCi+MFsC7HjREoAz1BU+Mq60+05gifQSsHSDG/8= -github.com/samuel/go-zookeeper v0.0.0-20161028232340-1d7be4effb13/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= -github.com/sasha-s/go-deadlock v0.0.0-20161201235124-341000892f3d/go.mod h1:StQn567HiB1fF2yJ44N9au7wOhrPS3iZqiDbRupzT10= github.com/sasha-s/go-deadlock v0.2.0 h1:lMqc+fUb7RrFS3gQLtoQsJ7/6TV/pAIFvBsqX73DK8Y= github.com/sasha-s/go-deadlock v0.2.0/go.mod h1:StQn567HiB1fF2yJ44N9au7wOhrPS3iZqiDbRupzT10= -github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys= github.com/segmentio/asm v1.2.0/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= @@ -918,32 +787,23 @@ github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFt github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU= github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= -github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= -github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= -github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749 h1:bUGsEnyNbVPw06Bs80sCeARAlK8lhwqGyi6UT8ymuGk= -github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= +github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c h1:aqg5Vm5dwtvL+YgDpBcK1ITf3o96N/K7/wsRXQnUTEs= +github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c/go.mod h1:owqhoLW1qZoYLZzLnBw+QkPP9WZnjlSWihhxAJC1+/M= github.com/shurcooL/httpgzip v0.0.0-20190720172056-320755c1c1b0 h1:mj/nMDAwTBiaCqMEs4cYCqF7pO6Np7vhy1D1wcQGz+E= github.com/shurcooL/httpgzip v0.0.0-20190720172056-320755c1c1b0/go.mod h1:919LwcH0M7/W4fcZ0/jy0qGght1GIhqyS/EgWGH2j5Q= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/shurcooL/vfsgen v0.0.0-20180711163814-62bca832be04/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw= github.com/shurcooL/vfsgen v0.0.0-20181202132449-6a9ea43bcacd h1:ug7PpSOB5RBPK1Kg6qskGBoP3Vnj/aNYFTznWvlkGo0= github.com/shurcooL/vfsgen v0.0.0-20181202132449-6a9ea43bcacd/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= -github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.1/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= @@ -991,10 +851,10 @@ github.com/tiancaiamao/appdash v0.0.0-20181126055449-889f96f722a2 h1:mbAskLJ0oJf github.com/tiancaiamao/appdash v0.0.0-20181126055449-889f96f722a2/go.mod h1:2PfKggNGDuadAa0LElHrByyrz4JPZ9fFx6Gs7nx7ZZU= github.com/tiancaiamao/gp v0.0.0-20221230034425-4025bc8a4d4a h1:J/YdBZ46WKpXsxsW93SG+q0F8KI+yFrcIDT4c/RNoc4= github.com/tiancaiamao/gp v0.0.0-20221230034425-4025bc8a4d4a/go.mod h1:h4xBhSNtOeEosLJ4P7JyKXX7Cabg7AVkWCK5gV2vOrM= -github.com/tikv/client-go/v2 v2.0.8-0.20231030120815-1362f1e87566 h1:ULv8/h2S2daBtNDoovptSBC5fJEBKrx0K7E1K8iVOSw= -github.com/tikv/client-go/v2 v2.0.8-0.20231030120815-1362f1e87566/go.mod h1:XiEHwWZfJqgafxW/VEgi1ltGWB9yjwCJBs2kW1xHMY4= -github.com/tikv/pd/client v0.0.0-20230912103610-2f57a9f050eb h1:hAcH9tFjQzQ3+ofrAHm4ajOTLliYCOfXpj3+boKOtac= -github.com/tikv/pd/client v0.0.0-20230912103610-2f57a9f050eb/go.mod h1:E+6qtPu8fJm5kNjvKWPVFqSgNAFPk07y2EjD03GWzuI= +github.com/tikv/client-go/v2 v2.0.8-0.20231116051730-1c2351c28173 h1:lmJzX0kqrV7kO21wrZPbtjkidzwbDCfXeQrhDWEi5dE= +github.com/tikv/client-go/v2 v2.0.8-0.20231116051730-1c2351c28173/go.mod h1:BOGTSZtbMHEnGC4HOpbONdnTQF+E9nb2Io7c3P9sb7g= +github.com/tikv/pd/client v0.0.0-20231127075044-9f4803d8bd05 h1:87NPUfzaVrO5MTBwVCPQ/FlJGpFnHi6WFYHDYD3n3Zc= +github.com/tikv/pd/client v0.0.0-20231127075044-9f4803d8bd05/go.mod h1:cd6zBqRM9aogxf26K8NnFRPVtq9BnRE59tKEpX8IaWQ= github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966 h1:quvGphlmUVU+nhpFa4gg4yJyTRJ13reZMDHrKwYw53M= github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966/go.mod h1:27bSVNWSBOHm+qRp1T9qzaIpsWEP6TbUnei/43HK+PQ= github.com/tklauser/go-sysconf v0.3.9/go.mod h1:11DU/5sG7UexIrp/O6g35hrWzu0JxlwQ3LSFUzyeuhs= @@ -1069,8 +929,6 @@ go.etcd.io/etcd/server/v3 v3.5.10 h1:4NOGyOwD5sUZ22PiWYKmfxqoeh72z6EhYjNosKGLmZg go.etcd.io/etcd/server/v3 v3.5.10/go.mod h1:gBplPHfs6YI0L+RpGkTQO7buDbHv5HJGG/Bst0/zIPo= go.etcd.io/etcd/tests/v3 v3.5.10 h1:F1pbXwKxwZ58aBT2+CSL/r8WUCAVhob0y1y8OVJ204s= go.etcd.io/etcd/tests/v3 v3.5.10/go.mod h1:vVMWDv9OhopxfJCd+CMI4pih0zUDqlkJj6JcBNlUVXI= -go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -1078,21 +936,22 @@ go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.25.0 h1:Wx7nFnvCaissIUZxPkBqDz2963Z+Cl+PkYbDKzTxDqQ= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.25.0/go.mod h1:E5NNboN0UqSAki0Atn9kVwaN7I+l25gGxDqBueo/74E= -go.opentelemetry.io/otel v1.0.1 h1:4XKyXmfqJLOQ7feyV5DB6gsBFZ0ltB8vLtp6pj4JIcc= -go.opentelemetry.io/otel v1.0.1/go.mod h1:OPEOD4jIT2SlZPMmwT6FqZz2C0ZNdQqiWcoK6M0SNFU= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.0.1 h1:ofMbch7i29qIUf7VtF+r0HRF6ac0SBaPSziSsKp7wkk= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.0.1/go.mod h1:Kv8liBeVNFkkkbilbgWRpV+wWuu+H5xdOT6HAgd30iw= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.0.1 h1:CFMFNoz+CGprjFAFy+RJFrfEe4GBia3RRm2a4fREvCA= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.0.1/go.mod h1:xOvWoTOrQjxjW61xtOmD/WKGRYb/P4NzRo3bs65U6Rk= -go.opentelemetry.io/otel/sdk v1.0.1 h1:wXxFEWGo7XfXupPwVJvTBOaPBC9FEg0wB8hMNrKk+cA= -go.opentelemetry.io/otel/sdk v1.0.1/go.mod h1:HrdXne+BiwsOHYYkBE5ysIcv2bvdZstxzmCQhxTcZkI= -go.opentelemetry.io/otel/trace v1.0.1 h1:StTeIH6Q3G4r0Fiw34LTokUFESZgIDUr0qIJ7mKmAfw= -go.opentelemetry.io/otel/trace v1.0.1/go.mod h1:5g4i4fKLaX2BQpSBsxw8YYcgKpMMSW3x7ZTuYBr3sUk= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.opentelemetry.io/proto/otlp v0.9.0 h1:C0g6TWmQYvjKRnljRULLWUVJGy8Uvu0NEL/5frY2/t4= -go.opentelemetry.io/proto/otlp v0.9.0/go.mod h1:1vKfU9rv61e9EVGthD1zNvUbiwPcimSsOPU9brfSHJg= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 h1:SpGay3w+nEwMpfVnbqOLH5gY52/foP8RE8UzTZ1pdSE= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1/go.mod h1:4UoMYEZOC0yN/sPGH76KPkkU7zgiEWYWL9vwmbnTJPE= +go.opentelemetry.io/otel v1.21.0 h1:hzLeKBZEL7Okw2mGzZ0cc4k/A7Fta0uoPgaJCr8fsFc= +go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 h1:Mne5On7VWdx7omSrSSZvM4Kw7cS7NQkOOmLcgscI51U= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0/go.mod h1:IPtUMKL4O3tH5y+iXVyAXqpAwMuzC1IrxVS81rummfE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0 h1:3d+S281UTjM+AbF31XSOYn1qXn3BgIdWl8HNEpx08Jk= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0/go.mod h1:0+KuTDyKL4gjKCF75pHOX4wuzYDUZYfAQdSu43o+Z2I= +go.opentelemetry.io/otel/metric v1.21.0 h1:tlYWfeo+Bocx5kLEloTjbcDwBuELRrIFxwdQ36PlJu4= +go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM= +go.opentelemetry.io/otel/sdk v1.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8= +go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= +go.opentelemetry.io/otel/trace v1.21.0 h1:WD9i5gzvoUPuXIXH24ZNBudiarZDKuekPqi/E8fpfLc= +go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= +go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= +go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= go.starlark.net v0.0.0-20210223155950-e043a3d3c984/go.mod h1:t3mmBBPzAVvK0L0n1drDmrQsJ8FoIx4INCqVMTr/Zo0= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -1127,12 +986,8 @@ go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= golang.org/x/crypto v0.0.0-20180723164146-c126467f60eb/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -1142,13 +997,12 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220518034528-6f7dac969898/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= -golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= -golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA= +golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= 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= @@ -1202,16 +1056,11 @@ golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190403144856-b630fd6fe46b/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -1251,16 +1100,16 @@ golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg= +golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= 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= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.12.0 h1:smVPGxink+n1ZI5pkQa8y6fZT0RW0MgCO5bFpepy4B4= -golang.org/x/oauth2 v0.12.0/go.mod h1:A74bZ3aGXgCY0qaIC9Ahg6Lglin4AMAco8cIv9baba4= +golang.org/x/oauth2 v0.14.0 h1:P0Vrf/2538nmC0H+pEQ3MNFRRnVR7RlqyVw+bvm26z0= +golang.org/x/oauth2 v0.14.0/go.mod h1:lAtNWgaWfL4cm7j2OV8TxGi9Qb7ECORx8DktCY74OwM= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1273,23 +1122,15 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= -golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= +golang.org/x/sync v0.5.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-20180823144017-11551d06cbcc/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-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1329,12 +1170,11 @@ golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210816074244-15123e1e1f71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210909193231-528a39cd75f3/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211013075003-97ac67df715c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1372,14 +1212,12 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= 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 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= 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= @@ -1387,7 +1225,6 @@ golang.org/x/time v0.4.0 h1:Z81tqI5ddIoXDPvVQ7/7CC9TnLM7ubaFG2qXYd5BbYY= golang.org/x/time v0.4.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181221001348-537d06c36207/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1451,8 +1288,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= 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.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc= -golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= +golang.org/x/tools v0.15.0 h1:zdAyfUGbYmuVokhzVmghFl2ZJh5QhcfebBgmVPFYA+8= +golang.org/x/tools v0.15.0/go.mod h1:hpksKq4dtpQWS1uQ61JkdqWM3LscIS6Slf+VVkm+wQk= 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= @@ -1467,8 +1304,6 @@ gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= gonum.org/v1/netlib v0.0.0-20181029234149-ec6d1f5cefe6/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= -google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= -google.golang.org/api v0.3.2/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -1485,8 +1320,8 @@ google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0M google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.128.0 h1:RjPESny5CnQRn9V6siglged+DZCgfu9l6mO9dkX9VOg= -google.golang.org/api v0.128.0/go.mod h1:Y611qgqaE92On/7g65MQgxYul3c0rEB894kniWLY750= +google.golang.org/api v0.149.0 h1:b2CqT6kG+zqJIVKRQ3ELJVLN1PwHZ6DJ3dW8yl82rgY= +google.golang.org/api v0.149.0/go.mod h1:Mwn1B7JTXrzXtnvmzQE2BD6bYZQ8DShKZDZbeN9I7qI= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1528,17 +1363,15 @@ google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7Fc google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b h1:+YaDE2r2OG8t/z5qmsh7Y+XXwCbvadxxZ0YY6mTdrVA= -google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:CgAqfJo+Xmu0GwA0411Ht3OU3OntXwsGmrmjI8ioGXI= -google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b h1:CIC2YMXmIhYw6evmhPxBKJ4fmLbOFtXQN/GV3XOZR8k= -google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:IBQ646DjkDkvUIsVq/cc03FUFQ9wbZu7yE396YcL870= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b h1:ZlWIi1wSK56/8hn4QcBp/j9M7Gt3U/3hZw3mC7vDICo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:swOH3j0KzcDDgGUWr+SNpyTen5YrXjS3eyPzFYKc6lc= +google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 h1:wpZ8pe2x1Q3f2KyT5f8oP/fa9rHAKgFPr/HZdNuS+PQ= +google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:J7XzRzVy1+IPwWHZUzoD0IccYZIrXILAQpc+Qy9CMhY= +google.golang.org/genproto/googleapis/api v0.0.0-20231030173426-d783a09b4405 h1:HJMDndgxest5n2y77fnErkM62iUsptE/H8p0dC2Huo4= +google.golang.org/genproto/googleapis/api v0.0.0-20231030173426-d783a09b4405/go.mod h1:oT32Z4o8Zv2xPQTg0pbVaPr0MPOH6f14RgXt7zfIpwg= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f h1:ultW7fxlIvee4HYrtnaRPon9HpEgFk5zYpmfMgtKB5I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f/go.mod h1:L9KNLi232K1/xB6f7AlSX692koaRnKaWSR0stBki0Yc= google.golang.org/grpc v0.0.0-20180607172857-7a6a684ca69e/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= -google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= @@ -1553,11 +1386,6 @@ google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k= -google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= @@ -1572,11 +1400,9 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1585,7 +1411,6 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntN gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/fsnotify/fsnotify.v1 v1.3.1/go.mod h1:Fyux9zXlo4rWoMSIzpn9fDAYjalPqJ/K1qJ27s+7ltE= gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= @@ -1600,11 +1425,8 @@ gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3M gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -1617,7 +1439,6 @@ gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20220512140231-539c8e751b99/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -1627,29 +1448,22 @@ honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9 honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.4.6 h1:oFEHCKeID7to/3autwsWfnuv69j3NsfcXbvJKuIcep8= honnef.co/go/tools v0.4.6/go.mod h1:+rnGS1THNh8zMwnd2oVOTL9QF6vmfyG6ZXBULae2uc0= -k8s.io/api v0.0.0-20190409021203-6e4e0e4f393b/go.mod h1:iuAfoD4hCxJ8Onx9kaTIt30j7jUFS00AXQi6QMi99vA= -k8s.io/api v0.27.2 h1:+H17AJpUMvl+clT+BPnKf0E3ksMAzoBBg7CntpSuADo= -k8s.io/api v0.27.2/go.mod h1:ENmbocXfBT2ADujUXcBhHV55RIT31IIEvkntP6vZKS4= -k8s.io/apimachinery v0.0.0-20190404173353-6a84e37a896d/go.mod h1:ccL7Eh7zubPUSh9A3USN90/OzHNSVN6zxzde07TDCL0= -k8s.io/apimachinery v0.27.2 h1:vBjGaKKieaIreI+oQwELalVG4d8f3YAMNpWLzDXkxeg= -k8s.io/apimachinery v0.27.2/go.mod h1:XNfZ6xklnMCOGGFNqXG7bUrQCoR04dh/E7FprV6pb+E= -k8s.io/client-go v11.0.1-0.20190409021438-1a26190bd76a+incompatible/go.mod h1:7vJpHMYJwNQCWgzmNV+VYUl1zCObLyodBc8nIyt8L5s= -k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog/v2 v2.90.1 h1:m4bYOKall2MmOiRaR1J+We67Do7vm9KiQVlT96lnHUw= -k8s.io/klog/v2 v2.90.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/kube-openapi v0.0.0-20180629012420-d83b052f768a/go.mod h1:BXM9ceUBTj2QnfH2MK1odQs778ajze1RxcmP6S8RVVc= -k8s.io/utils v0.0.0-20190308190857-21c4ce38f2a7/go.mod h1:8k8uAuAQ0rXslZKaEWd0c3oVhZz7sSzSiPnVZayjIX0= -k8s.io/utils v0.0.0-20230209194617-a36077c30491 h1:r0BAOLElQnnFhE/ApUsg3iHdVYYPBjNSSOMowRZxxsY= -k8s.io/utils v0.0.0-20230209194617-a36077c30491/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +k8s.io/api v0.28.2 h1:9mpl5mOb6vXZvqbQmankOfPIGiudghwCoLl1EYfUZbw= +k8s.io/api v0.28.2/go.mod h1:RVnJBsjU8tcMq7C3iaRSGMeaKt2TWEUXcpIt/90fjEg= +k8s.io/apimachinery v0.28.2 h1:KCOJLrc6gu+wV1BYgwik4AF4vXOlVJPdiqn0yAWWwXQ= +k8s.io/apimachinery v0.28.2/go.mod h1:RdzF87y/ngqk9H4z3EL2Rppv5jj95vGS/HaFXrLDApU= +k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg= +k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/utils v0.0.0-20230711102312-30195339c3c7 h1:ZgnF1KZsYxWIifwSNZFZgNtWE89WI5yiP5WwlfDoIyc= +k8s.io/utils v0.0.0-20230711102312-30195339c3c7/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= -sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= -sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/structured-merge-diff/v4 v4.3.0 h1:UZbZAZfX0wV2zr7YZorDz6GXROfDFj6LvqCRm4VUVKk= +sigs.k8s.io/structured-merge-diff/v4 v4.3.0/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0 h1:ucqkfpjg9WzSUubAO62csmucvxl4/JeW3F4I4909XkM= diff --git a/pkg/bindinfo/BUILD.bazel b/pkg/bindinfo/BUILD.bazel index 146db49d9036f..fc3ba7b3b04bc 100644 --- a/pkg/bindinfo/BUILD.bazel +++ b/pkg/bindinfo/BUILD.bazel @@ -53,17 +53,15 @@ go_test( "main_test.go", "optimize_test.go", "session_handle_test.go", - "temptable_test.go", ], embed = [":bindinfo"], flaky = True, race = "on", - shard_count = 42, + shard_count = 41, deps = [ "//pkg/bindinfo/internal", "//pkg/config", "//pkg/domain", - "//pkg/errno", "//pkg/metrics", "//pkg/parser", "//pkg/parser/auth", diff --git a/pkg/bindinfo/bind_cache.go b/pkg/bindinfo/bind_cache.go index 163961d007855..83b9086af94f0 100644 --- a/pkg/bindinfo/bind_cache.go +++ b/pkg/bindinfo/bind_cache.go @@ -134,12 +134,12 @@ func (c *bindCache) delete(key bindCacheKey) bool { // GetBindRecord gets the BindRecord from the cache. // The return value is not read-only, but it shouldn't be changed in the caller functions. // The function is thread-safe. -func (c *bindCache) GetBindRecord(hash, normdOrigSQL, _ string) *BindRecord { +func (c *bindCache) GetBindRecord(sqlDigest, normalizedSQL, _ string) *BindRecord { c.lock.Lock() defer c.lock.Unlock() - bindRecords := c.get(bindCacheKey(hash)) + bindRecords := c.get(bindCacheKey(sqlDigest)) for _, bindRecord := range bindRecords { - if bindRecord.OriginalSQL == normdOrigSQL { + if bindRecord.OriginalSQL == normalizedSQL { return bindRecord } } @@ -180,10 +180,10 @@ func (c *bindCache) GetAllBindRecords() []*BindRecord { // SetBindRecord sets the BindRecord to the cache. // The function is thread-safe. -func (c *bindCache) SetBindRecord(hash string, meta *BindRecord) (err error) { +func (c *bindCache) SetBindRecord(sqlDigest string, meta *BindRecord) (err error) { c.lock.Lock() defer c.lock.Unlock() - cacheKey := bindCacheKey(hash) + cacheKey := bindCacheKey(sqlDigest) metas := c.getCopiedVal(cacheKey) for i := range metas { if metas[i].OriginalSQL == meta.OriginalSQL { @@ -196,10 +196,10 @@ func (c *bindCache) SetBindRecord(hash string, meta *BindRecord) (err error) { // RemoveBindRecord removes the BindRecord which has same originSQL with specified BindRecord. // The function is thread-safe. -func (c *bindCache) RemoveBindRecord(hash string, meta *BindRecord) { +func (c *bindCache) RemoveBindRecord(sqlDigest string, meta *BindRecord) { c.lock.Lock() defer c.lock.Unlock() - metas := c.getCopiedVal(bindCacheKey(hash)) + metas := c.getCopiedVal(bindCacheKey(sqlDigest)) if metas == nil { return } @@ -211,14 +211,14 @@ func (c *bindCache) RemoveBindRecord(hash string, meta *BindRecord) { metas = append(metas[:i], metas[i+1:]...) } if len(metas) == 0 { - c.delete(bindCacheKey(hash)) + c.delete(bindCacheKey(sqlDigest)) return } } } // This function can guarantee the memory usage for the cache will never grow up. // So we don't need to handle the return value here. - _, _ = c.set(bindCacheKey(hash), metas) + _, _ = c.set(bindCacheKey(sqlDigest), metas) } // SetMemCapacity sets the memory capacity for the cache. diff --git a/pkg/bindinfo/capture_test.go b/pkg/bindinfo/capture_test.go index 3b9589a1a5240..b65ae573f627d 100644 --- a/pkg/bindinfo/capture_test.go +++ b/pkg/bindinfo/capture_test.go @@ -328,8 +328,8 @@ func TestBindingSource(t *testing.T) { // Test Source for SQL created sql tk.MustExec("create global binding for select * from t where a > 10 using select * from t ignore index(idx_a) where a > 10") bindHandle := dom.BindHandle() - sql, hash := internal.UtilNormalizeWithDefaultDB(t, "select * from t where a > ?") - bindData := bindHandle.GetBindRecord(hash, sql, "test") + sql, sqlDigest := internal.UtilNormalizeWithDefaultDB(t, "select * from t where a > ?") + bindData := bindHandle.GetBindRecord(sqlDigest, sql, "test") require.NotNil(t, bindData) require.Equal(t, "select * from `test` . `t` where `a` > ?", bindData.OriginalSQL) require.Len(t, bindData.Bindings, 1) @@ -340,8 +340,8 @@ func TestBindingSource(t *testing.T) { tk.MustExec("set @@tidb_evolve_plan_baselines=1") tk.MustQuery("select * from t where a > 10") bindHandle.SaveEvolveTasksToStore() - sql, hash = internal.UtilNormalizeWithDefaultDB(t, "select * from t where a > ?") - bindData = bindHandle.GetBindRecord(hash, sql, "test") + sql, sqlDigest = internal.UtilNormalizeWithDefaultDB(t, "select * from t where a > ?") + bindData = bindHandle.GetBindRecord(sqlDigest, sql, "test") require.NotNil(t, bindData) require.Equal(t, "select * from `test` . `t` where `a` > ?", bindData.OriginalSQL) require.Len(t, bindData.Bindings, 2) @@ -361,8 +361,8 @@ func TestBindingSource(t *testing.T) { tk.MustExec("select * from t ignore index(idx_a) where a < 10") tk.MustExec("admin capture bindings") bindHandle.CaptureBaselines() - sql, hash = internal.UtilNormalizeWithDefaultDB(t, "select * from t where a < ?") - bindData = bindHandle.GetBindRecord(hash, sql, "test") + sql, sqlDigest = internal.UtilNormalizeWithDefaultDB(t, "select * from t where a < ?") + bindData = bindHandle.GetBindRecord(sqlDigest, sql, "test") require.NotNil(t, bindData) require.Equal(t, "select * from `test` . `t` where `a` < ?", bindData.OriginalSQL) require.Len(t, bindData.Bindings, 1) diff --git a/pkg/bindinfo/handle.go b/pkg/bindinfo/handle.go index 4c7ad623c1fda..8a549c4464521 100644 --- a/pkg/bindinfo/handle.go +++ b/pkg/bindinfo/handle.go @@ -99,6 +99,14 @@ const ( Prompt = "bindinfo" // BuiltinPseudoSQL4BindLock is used to simulate LOCK TABLE for mysql.bind_info. BuiltinPseudoSQL4BindLock = "builtin_pseudo_sql_for_bind_lock" + + // StmtRemoveDuplicatedPseudoBinding is used to remove duplicated pseudo binding. + // After using BR to sync bind_info between two clusters, the pseudo binding may be duplicated, and + // BR use this statement to remove duplicated rows, and this SQL should only be executed by BR. + StmtRemoveDuplicatedPseudoBinding = `DELETE FROM mysql.bind_info + WHERE original_sql='builtin_pseudo_sql_for_bind_lock' AND + _tidb_rowid NOT IN ( -- keep one arbitrary pseudo binding + SELECT _tidb_rowid FROM mysql.bind_info WHERE original_sql='builtin_pseudo_sql_for_bind_lock' limit 1)` ) type bindRecordUpdate struct { @@ -173,7 +181,7 @@ func (h *BindHandle) Update(fullLoad bool) (err error) { if row.GetString(0) == BuiltinPseudoSQL4BindLock { continue } - hash, meta, err := h.newBindRecord(row) + sqlDigest, meta, err := h.newBindRecord(row) // Update lastUpdateTime to the newest one. // Even if this one is an invalid bind. @@ -186,17 +194,17 @@ func (h *BindHandle) Update(fullLoad bool) (err error) { continue } - oldRecord := newCache.GetBindRecord(hash, meta.OriginalSQL, meta.Db) + oldRecord := newCache.GetBindRecord(sqlDigest, meta.OriginalSQL, meta.Db) newRecord := merge(oldRecord, meta).removeDeletedBindings() if len(newRecord.Bindings) > 0 { - err = newCache.SetBindRecord(hash, newRecord) + err = newCache.SetBindRecord(sqlDigest, newRecord) if err != nil { memExceededErr = err } } else { - newCache.RemoveBindRecord(hash, newRecord) + newCache.RemoveBindRecord(sqlDigest, newRecord) } - updateMetrics(metrics.ScopeGlobal, oldRecord, newCache.GetBindRecord(hash, meta.OriginalSQL, meta.Db), true) + updateMetrics(metrics.ScopeGlobal, oldRecord, newCache.GetBindRecord(sqlDigest, meta.OriginalSQL, meta.Db), true) } if memExceededErr != nil { // When the memory capacity of bing_cache is not enough, @@ -674,9 +682,9 @@ func (h *BindHandle) Size() int { return size } -// GetBindRecord returns the BindRecord of the (normdOrigSQL,db) if BindRecord exist. -func (h *BindHandle) GetBindRecord(hash, normdOrigSQL, db string) *BindRecord { - return h.bindInfo.Load().(*bindCache).GetBindRecord(hash, normdOrigSQL, db) +// GetBindRecord returns the BindRecord of the (normalizedSQL,db) if BindRecord exist. +func (h *BindHandle) GetBindRecord(sqlDigest, normalizedSQL, db string) *BindRecord { + return h.bindInfo.Load().(*bindCache).GetBindRecord(sqlDigest, normalizedSQL, db) } // GetBindRecordBySQLDigest returns the BindRecord of the sql digest. @@ -728,23 +736,23 @@ func (h *BindHandle) newBindRecord(row chunk.Row) (string, *BindRecord, error) { Db: strings.ToLower(row.GetString(2)), Bindings: []Binding{hint}, } - hash := parser.DigestNormalized(bindRecord.OriginalSQL) + sqlDigest := parser.DigestNormalized(bindRecord.OriginalSQL) h.sctx.Lock() defer h.sctx.Unlock() h.sctx.GetSessionVars().CurrentDB = bindRecord.Db err := bindRecord.prepareHints(h.sctx.Context) - return hash.String(), bindRecord, err + return sqlDigest.String(), bindRecord, err } // setBindRecord sets the BindRecord to the cache, if there already exists a BindRecord, // it will be overridden. -func (h *BindHandle) setBindRecord(hash string, meta *BindRecord) { +func (h *BindHandle) setBindRecord(sqlDigest string, meta *BindRecord) { newCache, err0 := h.bindInfo.Value.Load().(*bindCache).Copy() if err0 != nil { logutil.BgLogger().Warn("BindHandle.setBindRecord", zap.String("category", "sql-bind"), zap.Error(err0)) } - oldRecord := newCache.GetBindRecord(hash, meta.OriginalSQL, meta.Db) - err1 := newCache.SetBindRecord(hash, meta) + oldRecord := newCache.GetBindRecord(sqlDigest, meta.OriginalSQL, meta.Db) + err1 := newCache.SetBindRecord(sqlDigest, meta) if err1 != nil && err0 == nil { logutil.BgLogger().Warn("BindHandle.setBindRecord", zap.String("category", "sql-bind"), zap.Error(err1)) } @@ -754,14 +762,14 @@ func (h *BindHandle) setBindRecord(hash string, meta *BindRecord) { // appendBindRecord adds the BindRecord to the cache, all the stale BindRecords are // removed from the cache after this operation. -func (h *BindHandle) appendBindRecord(hash string, meta *BindRecord) { +func (h *BindHandle) appendBindRecord(sqlDigest string, meta *BindRecord) { newCache, err0 := h.bindInfo.Value.Load().(*bindCache).Copy() if err0 != nil { logutil.BgLogger().Warn("BindHandle.appendBindRecord", zap.String("category", "sql-bind"), zap.Error(err0)) } - oldRecord := newCache.GetBindRecord(hash, meta.OriginalSQL, meta.Db) + oldRecord := newCache.GetBindRecord(sqlDigest, meta.OriginalSQL, meta.Db) newRecord := merge(oldRecord, meta) - err1 := newCache.SetBindRecord(hash, newRecord) + err1 := newCache.SetBindRecord(sqlDigest, newRecord) if err1 != nil && err0 == nil { // Only need to handle the error once. logutil.BgLogger().Warn("BindHandle.appendBindRecord", zap.String("category", "sql-bind"), zap.Error(err1)) @@ -771,15 +779,15 @@ func (h *BindHandle) appendBindRecord(hash string, meta *BindRecord) { } // removeBindRecord removes the BindRecord from the cache. -func (h *BindHandle) removeBindRecord(hash string, meta *BindRecord) { +func (h *BindHandle) removeBindRecord(sqlDigest string, meta *BindRecord) { newCache, err := h.bindInfo.Value.Load().(*bindCache).Copy() if err != nil { logutil.BgLogger().Warn("", zap.String("category", "sql-bind"), zap.Error(err)) } - oldRecord := newCache.GetBindRecord(hash, meta.OriginalSQL, meta.Db) - newCache.RemoveBindRecord(hash, meta) + oldRecord := newCache.GetBindRecord(sqlDigest, meta.OriginalSQL, meta.Db) + newCache.RemoveBindRecord(sqlDigest, meta) h.bindInfo.Value.Store(newCache) - updateMetrics(metrics.ScopeGlobal, oldRecord, newCache.GetBindRecord(hash, meta.OriginalSQL, meta.Db), false) + updateMetrics(metrics.ScopeGlobal, oldRecord, newCache.GetBindRecord(sqlDigest, meta.OriginalSQL, meta.Db), false) } func copyBindRecordUpdateMap(oldMap map[string]*bindRecordUpdate) map[string]*bindRecordUpdate { diff --git a/pkg/bindinfo/handle_test.go b/pkg/bindinfo/handle_test.go index 984fdb0189be7..7a95e3ecb1ce2 100644 --- a/pkg/bindinfo/handle_test.go +++ b/pkg/bindinfo/handle_test.go @@ -67,8 +67,8 @@ func TestBindingLastUpdateTime(t *testing.T) { bindHandle := bindinfo.NewBindHandle(tk.Session()) err := bindHandle.Update(true) require.NoError(t, err) - sql, hash := parser.NormalizeDigest("select * from test . t0") - bindData := bindHandle.GetBindRecord(hash.String(), sql, "test") + sql, sqlDigest := parser.NormalizeDigest("select * from test . t0") + bindData := bindHandle.GetBindRecord(sqlDigest.String(), sql, "test") require.Equal(t, 1, len(bindData.Bindings)) bind := bindData.Bindings[0] updateTime := bind.UpdateTime.String() @@ -132,8 +132,8 @@ func TestBindParse(t *testing.T) { require.NoError(t, err) require.Equal(t, 1, bindHandle.Size()) - sql, hash := parser.NormalizeDigest("select * from test . t") - bindData := bindHandle.GetBindRecord(hash.String(), sql, "test") + sql, sqlDigest := parser.NormalizeDigest("select * from test . t") + bindData := bindHandle.GetBindRecord(sqlDigest.String(), sql, "test") require.NotNil(t, bindData) require.Equal(t, "select * from `test` . `t`", bindData.OriginalSQL) bind := bindData.Bindings[0] @@ -488,9 +488,9 @@ func TestGlobalBinding(t *testing.T) { require.NoError(t, err) require.Equal(t, testSQL.memoryUsage, pb.GetGauge().GetValue()) - sql, hash := internal.UtilNormalizeWithDefaultDB(t, testSQL.querySQL) + sql, sqlDigest := internal.UtilNormalizeWithDefaultDB(t, testSQL.querySQL) - bindData := dom.BindHandle().GetBindRecord(hash, sql, "test") + bindData := dom.BindHandle().GetBindRecord(sqlDigest, sql, "test") require.NotNil(t, bindData) require.Equal(t, testSQL.originSQL, bindData.OriginalSQL) bind := bindData.Bindings[0] @@ -523,7 +523,7 @@ func TestGlobalBinding(t *testing.T) { require.NoError(t, err) require.Equal(t, 1, bindHandle.Size()) - bindData = bindHandle.GetBindRecord(hash, sql, "test") + bindData = bindHandle.GetBindRecord(sqlDigest, sql, "test") require.NotNil(t, bindData) require.Equal(t, testSQL.originSQL, bindData.OriginalSQL) bind = bindData.Bindings[0] @@ -538,7 +538,7 @@ func TestGlobalBinding(t *testing.T) { _, err = tk.Exec("drop global " + testSQL.dropSQL) require.Equal(t, uint64(1), tk.Session().AffectedRows()) require.NoError(t, err) - bindData = dom.BindHandle().GetBindRecord(hash, sql, "test") + bindData = dom.BindHandle().GetBindRecord(sqlDigest, sql, "test") require.Nil(t, bindData) err = metrics.BindTotalGauge.WithLabelValues(metrics.ScopeGlobal, bindinfo.Enabled).Write(pb) @@ -554,7 +554,7 @@ func TestGlobalBinding(t *testing.T) { require.NoError(t, err) require.Equal(t, 0, bindHandle.Size()) - bindData = bindHandle.GetBindRecord(hash, sql, "test") + bindData = bindHandle.GetBindRecord(sqlDigest, sql, "test") require.Nil(t, bindData) rs, err = tk.Exec("show global bindings") @@ -607,3 +607,37 @@ func TestReloadBindings(t *testing.T) { rows = tk.MustQuery("show global bindings").Rows() require.Equal(t, 0, len(rows)) } + +func TestRemoveDuplicatedPseudoBinding(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + checkPseudoBinding := func(num int) { + tk.MustQuery(fmt.Sprintf("select count(1) from mysql.bind_info where original_sql='%s'", + bindinfo.BuiltinPseudoSQL4BindLock)).Check(testkit.Rows(fmt.Sprintf("%d", num))) + } + insertPseudoBinding := func() { + tk.MustExec(fmt.Sprintf(`INSERT INTO mysql.bind_info(original_sql, bind_sql, default_db, status, create_time, update_time, charset, collation, source) + VALUES ('%v', '%v', "mysql", '%v', "2000-01-01 00:00:00", "2000-01-01 00:00:00", "", "", '%v')`, + bindinfo.BuiltinPseudoSQL4BindLock, bindinfo.BuiltinPseudoSQL4BindLock, bindinfo.Builtin, bindinfo.Builtin)) + } + removeDuplicated := func() { + tk.MustExec(bindinfo.StmtRemoveDuplicatedPseudoBinding) + } + + checkPseudoBinding(1) + insertPseudoBinding() + checkPseudoBinding(2) + removeDuplicated() + checkPseudoBinding(1) + + insertPseudoBinding() + insertPseudoBinding() + insertPseudoBinding() + checkPseudoBinding(4) + removeDuplicated() + checkPseudoBinding(1) + removeDuplicated() + checkPseudoBinding(1) +} diff --git a/pkg/bindinfo/session_handle.go b/pkg/bindinfo/session_handle.go index ba34cf0b50c13..fb54f11ba06c6 100644 --- a/pkg/bindinfo/session_handle.go +++ b/pkg/bindinfo/session_handle.go @@ -45,9 +45,9 @@ func NewSessionBindHandle() *SessionHandle { // appendBindRecord adds the BindRecord to the cache, all the stale bindMetas are // removed from the cache after this operation. -func (h *SessionHandle) appendBindRecord(hash string, meta *BindRecord) { - oldRecord := h.ch.GetBindRecord(hash, meta.OriginalSQL, meta.Db) - err := h.ch.SetBindRecord(hash, meta) +func (h *SessionHandle) appendBindRecord(sqlDigest string, meta *BindRecord) { + oldRecord := h.ch.GetBindRecord(sqlDigest, meta.OriginalSQL, meta.Db) + err := h.ch.SetBindRecord(sqlDigest, meta) if err != nil { logutil.BgLogger().Warn("SessionHandle.appendBindRecord", zap.String("category", "sql-bind"), zap.Error(err)) } @@ -76,8 +76,8 @@ func (h *SessionHandle) CreateBindRecord(sctx sessionctx.Context, record *BindRe // DropBindRecord drops a BindRecord in the cache. func (h *SessionHandle) DropBindRecord(originalSQL, db string, binding *Binding) error { db = strings.ToLower(db) - hash := parser.DigestNormalized(originalSQL).String() - oldRecord := h.GetBindRecord(hash, originalSQL, db) + sqlDigest := parser.DigestNormalized(originalSQL).String() + oldRecord := h.GetBindRecord(sqlDigest, originalSQL, db) var newRecord *BindRecord record := &BindRecord{OriginalSQL: originalSQL, Db: db} if binding != nil { @@ -88,7 +88,7 @@ func (h *SessionHandle) DropBindRecord(originalSQL, db string, binding *Binding) } else { newRecord = record } - err := h.ch.SetBindRecord(hash, newRecord) + err := h.ch.SetBindRecord(sqlDigest, newRecord) if err != nil { // Should never reach here, just return an error for safety return err @@ -107,8 +107,8 @@ func (h *SessionHandle) DropBindRecordByDigest(sqlDigest string) error { } // GetBindRecord return the BindMeta of the (normdOrigSQL,db) if BindMeta exist. -func (h *SessionHandle) GetBindRecord(hash, normdOrigSQL, db string) *BindRecord { - return h.ch.GetBindRecord(hash, normdOrigSQL, db) +func (h *SessionHandle) GetBindRecord(sqlDigest, normdOrigSQL, db string) *BindRecord { + return h.ch.GetBindRecord(sqlDigest, normdOrigSQL, db) } // GetBindRecordBySQLDigest return all BindMeta corresponding to sqlDigest. diff --git a/pkg/bindinfo/session_handle_test.go b/pkg/bindinfo/session_handle_test.go index 82633bb6c0eb5..c8edef8538c9e 100644 --- a/pkg/bindinfo/session_handle_test.go +++ b/pkg/bindinfo/session_handle_test.go @@ -117,8 +117,8 @@ func TestSessionBinding(t *testing.T) { require.Equal(t, testSQL.memoryUsage, pb.GetGauge().GetValue()) handle := tk.Session().Value(bindinfo.SessionBindInfoKeyType).(*bindinfo.SessionHandle) - hash := parser.DigestNormalized(testSQL.originSQL).String() - bindData := handle.GetBindRecord(hash, testSQL.originSQL, "test") + sqlDigest := parser.DigestNormalized(testSQL.originSQL).String() + bindData := handle.GetBindRecord(sqlDigest, testSQL.originSQL, "test") require.NotNil(t, bindData) require.Equal(t, testSQL.originSQL, bindData.OriginalSQL) bind := bindData.Bindings[0] @@ -155,7 +155,7 @@ func TestSessionBinding(t *testing.T) { _, err = tk.Exec("drop session " + testSQL.dropSQL) require.NoError(t, err) - bindData = handle.GetBindRecord(hash, testSQL.originSQL, "test") + bindData = handle.GetBindRecord(sqlDigest, testSQL.originSQL, "test") require.NotNil(t, bindData) require.Equal(t, testSQL.originSQL, bindData.OriginalSQL) require.Len(t, bindData.Bindings, 0) diff --git a/pkg/bindinfo/temptable_test.go b/pkg/bindinfo/temptable_test.go deleted file mode 100644 index 50d540e909171..0000000000000 --- a/pkg/bindinfo/temptable_test.go +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright 2021 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 bindinfo_test - -import ( - "strings" - "testing" - - "github.com/pingcap/tidb/pkg/errno" - "github.com/pingcap/tidb/pkg/testkit" -) - -// TestSelectBindingOnGlobalTempTableProhibited covers https://github.com/pingcap/tidb/issues/26377 -func TestSelectBindingOnGlobalTempTableProhibited(t *testing.T) { - store := testkit.CreateMockStore(t) - - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("drop table if exists t1,tmp1") - tk.MustExec("create table t1(a int(11))") - tk.MustExec("create global temporary table tmp1(a int(11), key idx_a(a)) on commit delete rows;") - tk.MustExec("create temporary table tmp2(a int(11), key idx_a(a));") - - queries := []string{ - "create global binding for with cte1 as (select a from tmp1) select * from cte1 using with cte1 as (select a from tmp1) select * from cte1", - "create global binding for select * from t1 inner join tmp1 on t1.a=tmp1.a using select * from t1 inner join tmp1 on t1.a=tmp1.a;", - "create global binding for select * from t1 where t1.a in (select a from tmp1) using select * from t1 where t1.a in (select a from tmp1 use index (idx_a));", - "create global binding for select a from t1 union select a from tmp1 using select a from t1 union select a from tmp1 use index (idx_a);", - "create global binding for select t1.a, (select a from tmp1 where tmp1.a=1) as t2 from t1 using select t1.a, (select a from tmp1 where tmp1.a=1) as t2 from t1;", - "create global binding for select * from (select * from tmp1) using select * from (select * from tmp1);", - "create global binding for select * from t1 where t1.a = (select a from tmp1) using select * from t1 where t1.a = (select a from tmp1)", - } - genLocalTemporarySQL := func(sql string) string { - return strings.Replace(sql, "tmp1", "tmp2", -1) - } - for _, query := range queries { - localSQL := genLocalTemporarySQL(query) - queries = append(queries, localSQL) - } - - for _, q := range queries { - tk.MustGetErrCode(q, errno.ErrOptOnTemporaryTable) - } -} - -// TestDMLBindingOnGlobalTempTableProhibited covers https://github.com/pingcap/tidb/issues/27422 -func TestDMLBindingOnGlobalTempTableProhibited(t *testing.T) { - store := testkit.CreateMockStore(t) - - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("drop table if exists t1,tmp1,tmp2") - tk.MustExec("create table t1(a int(11))") - tk.MustExec("create global temporary table tmp1(a int(11), key idx_a(a)) on commit delete rows;") - tk.MustExec("create temporary table tmp2(a int(11), key idx_a(a));") - - queries := []string{ - "create global binding for insert into t1 (select * from tmp1) using insert into t1 (select * from tmp1);", - "create global binding for update t1 inner join tmp1 on t1.a=tmp1.a set t1.a=1 using update t1 inner join tmp1 on t1.a=tmp1.a set t1.a=1", - "create global binding for update t1 set t1.a=(select a from tmp1) using update t1 set t1.a=(select a from tmp1)", - "create global binding for update t1 set t1.a=1 where t1.a = (select a from tmp1) using update t1 set t1.a=1 where t1.a = (select a from tmp1)", - "create global binding for with cte1 as (select a from tmp1) update t1 set t1.a=1 where t1.a in (select a from cte1) using with cte1 as (select a from tmp1) update t1 set t1.a=1 where t1.a in (select a from cte1)", - "create global binding for delete from t1 where t1.a in (select a from tmp1) using delete from t1 where t1.a in (select a from tmp1)", - "create global binding for delete from t1 where t1.a = (select a from tmp1) using delete from t1 where t1.a = (select a from tmp1)", - "create global binding for delete t1 from t1,tmp1 using delete t1 from t1,tmp1", - } - genLocalTemporarySQL := func(sql string) string { - return strings.Replace(sql, "tmp1", "tmp2", -1) - } - for _, query := range queries { - localSQL := genLocalTemporarySQL(query) - queries = append(queries, localSQL) - } - - for _, q := range queries { - tk.MustGetErrCode(q, errno.ErrOptOnTemporaryTable) - } -} diff --git a/pkg/bindinfo/tests/BUILD.bazel b/pkg/bindinfo/tests/BUILD.bazel index fa3e6b4c833d6..baac332bd5fd0 100644 --- a/pkg/bindinfo/tests/BUILD.bazel +++ b/pkg/bindinfo/tests/BUILD.bazel @@ -9,14 +9,13 @@ go_test( ], flaky = True, race = "on", - shard_count = 28, + shard_count = 20, deps = [ "//pkg/bindinfo", "//pkg/bindinfo/internal", "//pkg/config", "//pkg/domain", "//pkg/parser", - "//pkg/parser/auth", "//pkg/parser/model", "//pkg/parser/terror", "//pkg/testkit", diff --git a/pkg/bindinfo/tests/bind_test.go b/pkg/bindinfo/tests/bind_test.go index b13164011457a..67ac70bc764d5 100644 --- a/pkg/bindinfo/tests/bind_test.go +++ b/pkg/bindinfo/tests/bind_test.go @@ -25,7 +25,6 @@ import ( "github.com/pingcap/tidb/pkg/config" "github.com/pingcap/tidb/pkg/domain" "github.com/pingcap/tidb/pkg/parser" - "github.com/pingcap/tidb/pkg/parser/auth" "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/terror" "github.com/pingcap/tidb/pkg/testkit" @@ -35,45 +34,6 @@ import ( "github.com/stretchr/testify/require" ) -func TestBindingInListOperation(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, c int, d int)`) - - // only 1 binding will be left - tk.MustExec(`create binding for select * from t where a in(1) using select * from t where a in(1)`) - tk.MustExec(`create binding for select * from t where a in(1,2) using select * from t where a in(1)`) - tk.MustExec(`create binding for select * from t where a in(1) using select * from t where a in(1,2)`) - tk.MustExec(`create binding for select * from t where a in(1,2) using select * from t where a in(1,2)`) - tk.MustExec(`create binding for select * from t where a in(1,2,3) using select * from t where a in(1,2,3)`) - require.Equal(t, 1, len(tk.MustQuery(`show bindings`).Rows())) - tk.MustExec(`drop binding for select * from t where a in(1)`) - require.Equal(t, 0, len(tk.MustQuery(`show bindings`).Rows())) - - // create and drop - tk.MustExec(`create binding for select * from t where a in(1,2,3) using select * from t where a in(1)`) - require.Equal(t, 1, len(tk.MustQuery(`show bindings`).Rows())) - tk.MustExec(`drop binding for select * from t where a in(1)`) - require.Equal(t, 0, len(tk.MustQuery(`show bindings`).Rows())) - tk.MustExec(`create binding for select * from t where a in(1) using select * from t where a in(1)`) - require.Equal(t, 1, len(tk.MustQuery(`show bindings`).Rows())) - tk.MustExec(`drop binding for select * from t where a in(1,2,3)`) - require.Equal(t, 0, len(tk.MustQuery(`show bindings`).Rows())) - tk.MustExec(`create binding for select * from t where a in(1) using select * from t where a in(1)`) - require.Equal(t, 1, len(tk.MustQuery(`show bindings`).Rows())) - tk.MustExec(`drop binding for select * from t where a in(1,2,3,4,5,6,7,8,9,0,11,12)`) - require.Equal(t, 0, len(tk.MustQuery(`show bindings`).Rows())) - - // create and set status - tk.MustExec(`create global binding for select * from t where a in(1,2,3) using select * from t where a in(1)`) - require.Equal(t, "enabled", tk.MustQuery(`show global bindings`).Rows()[0][3].(string)) - tk.MustExec(`set binding disabled for select * from t where a in(1)`) - require.Equal(t, "disabled", tk.MustQuery(`show global bindings`).Rows()[0][3].(string)) - tk.MustExec(`set binding enabled for select * from t where a in(1,2,3,4,5)`) - require.Equal(t, "enabled", tk.MustQuery(`show global bindings`).Rows()[0][3].(string)) -} - func TestPrepareCacheWithBinding(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) @@ -417,61 +377,6 @@ func TestBindingInListWithSingleLiteral(t *testing.T) { require.NotNil(t, bind.UpdateTime) } -func TestDMLSQLBind(t *testing.T) { - store := testkit.CreateMockStore(t) - - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("drop table if exists t1, t2") - tk.MustExec("create table t1(a int, b int, c int, key idx_b(b), key idx_c(c))") - tk.MustExec("create table t2(a int, b int, c int, key idx_b(b), key idx_c(c))") - - tk.MustExec("delete from t1 where b = 1 and c > 1") - require.Equal(t, "t1:idx_b", tk.Session().GetSessionVars().StmtCtx.IndexNames[0]) - require.True(t, tk.MustUseIndex("delete from t1 where b = 1 and c > 1", "idx_b(b)")) - tk.MustExec("create global binding for delete from t1 where b = 1 and c > 1 using delete /*+ use_index(t1,idx_c) */ from t1 where b = 1 and c > 1") - tk.MustExec("delete from t1 where b = 1 and c > 1") - require.Equal(t, "t1:idx_c", tk.Session().GetSessionVars().StmtCtx.IndexNames[0]) - require.True(t, tk.MustUseIndex("delete from t1 where b = 1 and c > 1", "idx_c(c)")) - - tk.MustHavePlan("delete t1, t2 from t1 inner join t2 on t1.b = t2.b", "HashJoin") - tk.MustExec("create global binding for delete t1, t2 from t1 inner join t2 on t1.b = t2.b using delete /*+ inl_join(t1) */ t1, t2 from t1 inner join t2 on t1.b = t2.b") - tk.MustHavePlan("delete t1, t2 from t1 inner join t2 on t1.b = t2.b", "IndexJoin") - - tk.MustExec("update t1 set a = 1 where b = 1 and c > 1") - require.Equal(t, "t1:idx_b", tk.Session().GetSessionVars().StmtCtx.IndexNames[0]) - require.True(t, tk.MustUseIndex("update t1 set a = 1 where b = 1 and c > 1", "idx_b(b)")) - tk.MustExec("create global binding for update t1 set a = 1 where b = 1 and c > 1 using update /*+ use_index(t1,idx_c) */ t1 set a = 1 where b = 1 and c > 1") - tk.MustExec("delete from t1 where b = 1 and c > 1") - require.Equal(t, "t1:idx_c", tk.Session().GetSessionVars().StmtCtx.IndexNames[0]) - require.True(t, tk.MustUseIndex("update t1 set a = 1 where b = 1 and c > 1", "idx_c(c)")) - - tk.MustHavePlan("update t1, t2 set t1.a = 1 where t1.b = t2.b", "HashJoin") - tk.MustExec("create global binding for update t1, t2 set t1.a = 1 where t1.b = t2.b using update /*+ inl_join(t1) */ t1, t2 set t1.a = 1 where t1.b = t2.b") - tk.MustHavePlan("update t1, t2 set t1.a = 1 where t1.b = t2.b", "IndexJoin") - - tk.MustExec("insert into t1 select * from t2 where t2.b = 2 and t2.c > 2") - require.Equal(t, "t2:idx_b", tk.Session().GetSessionVars().StmtCtx.IndexNames[0]) - require.True(t, tk.MustUseIndex("insert into t1 select * from t2 where t2.b = 2 and t2.c > 2", "idx_b(b)")) - tk.MustExec("create global binding for insert into t1 select * from t2 where t2.b = 1 and t2.c > 1 using insert /*+ use_index(t2,idx_c) */ into t1 select * from t2 where t2.b = 1 and t2.c > 1") - tk.MustExec("insert into t1 select * from t2 where t2.b = 2 and t2.c > 2") - require.Equal(t, "t2:idx_b", tk.Session().GetSessionVars().StmtCtx.IndexNames[0]) - require.True(t, tk.MustUseIndex("insert into t1 select * from t2 where t2.b = 2 and t2.c > 2", "idx_b(b)")) - tk.MustExec("drop global binding for insert into t1 select * from t2 where t2.b = 1 and t2.c > 1") - tk.MustExec("create global binding for insert into t1 select * from t2 where t2.b = 1 and t2.c > 1 using insert into t1 select /*+ use_index(t2,idx_c) */ * from t2 where t2.b = 1 and t2.c > 1") - tk.MustExec("insert into t1 select * from t2 where t2.b = 2 and t2.c > 2") - require.Equal(t, "t2:idx_c", tk.Session().GetSessionVars().StmtCtx.IndexNames[0]) - require.True(t, tk.MustUseIndex("insert into t1 select * from t2 where t2.b = 2 and t2.c > 2", "idx_c(c)")) - - tk.MustExec("replace into t1 select * from t2 where t2.b = 2 and t2.c > 2") - require.Equal(t, "t2:idx_b", tk.Session().GetSessionVars().StmtCtx.IndexNames[0]) - require.True(t, tk.MustUseIndex("replace into t1 select * from t2 where t2.b = 2 and t2.c > 2", "idx_b(b)")) - tk.MustExec("create global binding for replace into t1 select * from t2 where t2.b = 1 and t2.c > 1 using replace into t1 select /*+ use_index(t2,idx_c) */ * from t2 where t2.b = 1 and t2.c > 1") - tk.MustExec("replace into t1 select * from t2 where t2.b = 2 and t2.c > 2") - require.Equal(t, "t2:idx_c", tk.Session().GetSessionVars().StmtCtx.IndexNames[0]) - require.True(t, tk.MustUseIndex("replace into t1 select * from t2 where t2.b = 2 and t2.c > 2", "idx_c(c)")) -} - func TestBestPlanInBaselines(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) @@ -677,42 +582,6 @@ func TestRuntimeHintsInEvolveTasks(t *testing.T) { require.Equal(t, "SELECT /*+ use_index(@`sel_1` `test`.`t` `idx_c`), no_order_index(@`sel_1` `test`.`t` `idx_c`), max_execution_time(5000), set_var(tikv_client_read_timeout = 20)*/ * FROM `test`.`t` WHERE `a` >= 4 AND `b` >= 1 AND `c` = 0", rows[0][1]) } -func TestCaptureBaselinesScope(t *testing.T) { - store, dom := testkit.CreateMockStoreAndDomain(t) - - tk1 := testkit.NewTestKit(t, store) - tk2 := testkit.NewTestKit(t, store) - - internal.UtilCleanBindingEnv(tk1, dom) - tk1.MustQuery(`show session variables like "tidb_capture_plan_baselines"`).Check(testkit.Rows( - "tidb_capture_plan_baselines OFF", - )) - tk1.MustQuery(`show global variables like "tidb_capture_plan_baselines"`).Check(testkit.Rows( - "tidb_capture_plan_baselines OFF", - )) - tk1.MustQuery(`select @@global.tidb_capture_plan_baselines`).Check(testkit.Rows( - "0", - )) - - tk1.MustExec("SET GLOBAL tidb_capture_plan_baselines = on") - defer func() { - tk1.MustExec(" set GLOBAL tidb_capture_plan_baselines = off") - }() - - tk1.MustQuery(`show variables like "tidb_capture_plan_baselines"`).Check(testkit.Rows( - "tidb_capture_plan_baselines ON", - )) - tk1.MustQuery(`show global variables like "tidb_capture_plan_baselines"`).Check(testkit.Rows( - "tidb_capture_plan_baselines ON", - )) - tk2.MustQuery(`show global variables like "tidb_capture_plan_baselines"`).Check(testkit.Rows( - "tidb_capture_plan_baselines ON", - )) - tk2.MustQuery(`select @@global.tidb_capture_plan_baselines`).Check(testkit.Rows( - "1", - )) -} - func TestStmtHints(t *testing.T) { store := testkit.CreateMockStore(t) @@ -732,23 +601,6 @@ func TestStmtHints(t *testing.T) { //require.Equal(t, uint64(0), tk.Session().GetSessionVars().GetTiKVClientReadTimeout()) } -func TestPrivileges(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(a int, b int, index idx(a))") - tk.MustExec("create global binding for select * from t using select * from t use index(idx)") - require.NoError(t, tk.Session().Auth(&auth.UserIdentity{Username: "root", Hostname: "%"}, nil, nil, nil)) - rows := tk.MustQuery("show global bindings").Rows() - require.Len(t, rows, 1) - tk.MustExec("create user test@'%'") - require.NoError(t, tk.Session().Auth(&auth.UserIdentity{Username: "test", Hostname: "%"}, nil, nil, nil)) - rows = tk.MustQuery("show global bindings").Rows() - require.Len(t, rows, 0) -} - func TestHintsSetEvolveTask(t *testing.T) { originalVal := config.CheckTableBeforeDrop config.CheckTableBeforeDrop = true @@ -998,54 +850,6 @@ func TestInvisibleIndex(t *testing.T) { tk.MustExec("drop binding for select * from t") } -func TestReCreateBind(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(a int, b int, index idx(a))") - - tk.MustQuery("select * from mysql.bind_info where source != 'builtin'").Check(testkit.Rows()) - tk.MustQuery("show global bindings").Check(testkit.Rows()) - - tk.MustExec("create global binding for select * from t using select * from t") - tk.MustQuery("select original_sql, status from mysql.bind_info where source != 'builtin';").Check(testkit.Rows( - "select * from `test` . `t` enabled", - )) - rows := tk.MustQuery("show global bindings").Rows() - require.Len(t, rows, 1) - require.Equal(t, "select * from `test` . `t`", rows[0][0]) - require.Equal(t, bindinfo.Enabled, rows[0][3]) - - tk.MustExec("create global binding for select * from t using select * from t") - rows = tk.MustQuery("show global bindings").Rows() - require.Len(t, rows, 1) - require.Equal(t, "select * from `test` . `t`", rows[0][0]) - require.Equal(t, bindinfo.Enabled, rows[0][3]) - - rows = tk.MustQuery("select original_sql, status from mysql.bind_info where source != 'builtin';").Rows() - require.Len(t, rows, 2) - require.Equal(t, "deleted", rows[0][1]) - require.Equal(t, bindinfo.Enabled, rows[1][1]) -} - -func TestDMLIndexHintBind(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, c int, key idx_b(b), key idx_c(c))") - - tk.MustExec("delete from t where b = 1 and c > 1") - require.Equal(t, "t:idx_b", tk.Session().GetSessionVars().StmtCtx.IndexNames[0]) - require.True(t, tk.MustUseIndex("delete from t where b = 1 and c > 1", "idx_b(b)")) - tk.MustExec("create global binding for delete from t where b = 1 and c > 1 using delete from t use index(idx_c) where b = 1 and c > 1") - tk.MustExec("delete from t where b = 1 and c > 1") - require.Equal(t, "t:idx_c", tk.Session().GetSessionVars().StmtCtx.IndexNames[0]) - require.True(t, tk.MustUseIndex("delete from t where b = 1 and c > 1", "idx_c(c)")) -} - func TestForbidEvolvePlanBaseLinesBeforeGA(t *testing.T) { originalVal := config.CheckTableBeforeDrop config.CheckTableBeforeDrop = false @@ -1066,60 +870,6 @@ func TestForbidEvolvePlanBaseLinesBeforeGA(t *testing.T) { require.EqualError(t, err, "Cannot enable baseline evolution feature, it is not generally available now") } -func TestSPMWithoutUseDatabase(t *testing.T) { - store, dom := testkit.CreateMockStoreAndDomain(t) - - tk := testkit.NewTestKit(t, store) - tk1 := testkit.NewTestKit(t, store) - internal.UtilCleanBindingEnv(tk, dom) - internal.UtilCleanBindingEnv(tk1, dom) - - tk.MustExec("use test") - tk.MustExec("drop table if exists t") - tk.MustExec("create table t(a int, b int, key(a))") - tk.MustExec("create global binding for select * from t using select * from t force index(a)") - - err := tk1.ExecToErr("select * from t") - require.Error(t, err) - require.Regexp(t, "No database selected$", err) - tk1.MustQuery(`select @@last_plan_from_binding;`).Check(testkit.Rows("0")) - require.True(t, tk1.MustUseIndex("select * from test.t", "a")) - tk1.MustExec("select * from test.t") - tk1.MustQuery(`select @@last_plan_from_binding;`).Check(testkit.Rows("1")) - tk1.MustExec("set binding disabled for select * from test.t") - tk1.MustExec("select * from test.t") - tk1.MustQuery(`select @@last_plan_from_binding;`).Check(testkit.Rows("0")) -} - -func TestBindingWithoutCharset(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 (a varchar(10) CHARACTER SET utf8)") - tk.MustExec("create global binding for select * from t where a = 'aa' using select * from t where a = 'aa'") - rows := tk.MustQuery("show global bindings").Rows() - require.Len(t, rows, 1) - require.Equal(t, "select * from `test` . `t` where `a` = ?", rows[0][0]) - require.Equal(t, "SELECT * FROM `test`.`t` WHERE `a` = 'aa'", rows[0][1]) -} - -func TestBindingWithMultiParenthesis(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 (a int)") - tk.MustExec("create global binding for select * from (select * from t where a = 1) tt using select * from (select * from t where a = 1) tt") - tk.MustExec("create global binding for select * from ((select * from t where a = 1)) tt using select * from (select * from t where a = 1) tt") - rows := tk.MustQuery("show global bindings").Rows() - require.Len(t, rows, 1) - require.Equal(t, "select * from ( select * from `test` . `t` where `a` = ? ) as `tt`", rows[0][0]) - require.Equal(t, "SELECT * FROM (SELECT * FROM `test`.`t` WHERE `a` = 1) AS `tt`", rows[0][1]) -} - func TestGCBindRecord(t *testing.T) { // set lease for gc tests originLease := bindinfo.Lease @@ -1227,6 +977,33 @@ func TestBindSQLDigest(t *testing.T) { } } +func TestSimplifiedCreateBinding(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))`) + + check := func(scope, sql, binding string) { + r := tk.MustQuery(fmt.Sprintf("show %s bindings", scope)).Rows() + require.Equal(t, len(r), 1) + require.Equal(t, r[0][0].(string), sql) + require.Equal(t, r[0][1].(string), binding) + } + + tk.MustExec(`create binding using select /*+ use_index(t, a) */ * from t`) + check("", "select * from `test` . `t`", "SELECT /*+ use_index(`t` `a`)*/ * FROM `test`.`t`") + tk.MustExec(`drop binding for select * from t`) + tk.MustExec(`create binding using select /*+ use_index(t, a) */ * from t where a<10`) + check("", "select * from `test` . `t` where `a` < ?", "SELECT /*+ use_index(`t` `a`)*/ * FROM `test`.`t` WHERE `a` < 10") + tk.MustExec(`drop binding for select * from t where a<10`) + tk.MustExec(`create global binding using select /*+ use_index(t, a) */ * from t where a in (1)`) + check("global", "select * from `test` . `t` where `a` in ( ... )", "SELECT /*+ use_index(`t` `a`)*/ * FROM `test`.`t` WHERE `a` IN (1)") + tk.MustExec(`drop global binding for select * from t where a in (1)`) + tk.MustExec(`create global binding using select /*+ use_index(t, a) */ * from t where a in (1,2,3)`) + check("global", "select * from `test` . `t` where `a` in ( ... )", "SELECT /*+ use_index(`t` `a`)*/ * FROM `test`.`t` WHERE `a` IN (1,2,3)") + tk.MustExec(`drop global binding for select * from t where a in (1,2,3)`) +} + func TestDropBindBySQLDigest(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) tk := testkit.NewTestKit(t, store) diff --git a/pkg/ddl/BUILD.bazel b/pkg/ddl/BUILD.bazel index acef62d2602cf..744be405f4dc5 100644 --- a/pkg/ddl/BUILD.bazel +++ b/pkg/ddl/BUILD.bazel @@ -113,6 +113,7 @@ go_library( "//pkg/sessiontxn", "//pkg/statistics", "//pkg/statistics/handle", + "//pkg/statistics/handle/util", "//pkg/store/copr", "//pkg/store/driver/backoff", "//pkg/store/helper", @@ -169,6 +170,7 @@ go_library( "@com_github_tikv_client_go_v2//tikvrpc", "@com_github_tikv_client_go_v2//txnkv/rangetask", "@com_github_tikv_client_go_v2//util", + "@com_github_tikv_pd_client//http", "@io_etcd_go_etcd_client_v3//:client", "@org_golang_x_sync//errgroup", "@org_uber_go_atomic//:atomic", @@ -274,6 +276,7 @@ go_test( "//pkg/planner/core", "//pkg/server", "//pkg/session", + "//pkg/session/types", "//pkg/sessionctx", "//pkg/sessionctx/stmtctx", "//pkg/sessionctx/variable", diff --git a/pkg/ddl/attributes_sql_test.go b/pkg/ddl/attributes_sql_test.go index c7c240d80e2bd..b5215b9b6ef28 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(), keyspace.CodecV1, true) + _, err := infosync.GlobalInfoSyncerInit(context.Background(), dom.DDL().GetID(), dom.ServerID, dom.GetEtcdClient(), dom.GetEtcdClient(), dom.GetPDClient(), dom.GetPDHTTPClient(), keyspace.CodecV1, true) 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(), keyspace.CodecV1, true) + _, err := infosync.GlobalInfoSyncerInit(context.Background(), dom.DDL().GetID(), dom.ServerID, dom.GetEtcdClient(), dom.GetEtcdClient(), dom.GetPDClient(), dom.GetPDHTTPClient(), keyspace.CodecV1, true) 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(), keyspace.CodecV1, true) + _, err := infosync.GlobalInfoSyncerInit(context.Background(), dom.DDL().GetID(), dom.ServerID, dom.GetEtcdClient(), dom.GetEtcdClient(), dom.GetPDClient(), dom.GetPDHTTPClient(), keyspace.CodecV1, true) 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(), keyspace.CodecV1, true) + _, err := infosync.GlobalInfoSyncerInit(context.Background(), dom.DDL().GetID(), dom.ServerID, dom.GetEtcdClient(), dom.GetEtcdClient(), dom.GetPDClient(), dom.GetPDHTTPClient(), keyspace.CodecV1, true) require.NoError(t, err) tk := testkit.NewTestKit(t, store) tk.MustExec("use test") diff --git a/pkg/ddl/backfilling_dispatcher.go b/pkg/ddl/backfilling_dispatcher.go index 622ef9deab136..d8f9ff561eed0 100644 --- a/pkg/ddl/backfilling_dispatcher.go +++ b/pkg/ddl/backfilling_dispatcher.go @@ -272,7 +272,11 @@ func generatePartitionPlan(tblInfo *model.TableInfo) (metas [][]byte, err error) } func generateNonPartitionPlan( - d *ddl, tblInfo *model.TableInfo, job *model.Job, useCloud bool, instanceCnt int) (metas [][]byte, err error) { + d *ddl, + tblInfo *model.TableInfo, + job *model.Job, + useCloud bool, + instanceCnt int) (metas [][]byte, err error) { tbl, err := getTable((*asAutoIDRequirement)(d.ddlCtx), job.SchemaID, tblInfo) if err != nil { return nil, err @@ -281,6 +285,7 @@ func generateNonPartitionPlan( if err != nil { return nil, errors.Trace(err) } + startKey, endKey, err := getTableRange(d.jobContext(job.ID, job.ReorgMeta), d.ddlCtx, tbl.(table.PhysicalTable), ver.Ver, job.Priority) if startKey == nil && endKey == nil { // Empty table. @@ -387,6 +392,7 @@ func generateGlobalSortIngestPlan( logger.Info("split subtask range", zap.String("startKey", hex.EncodeToString(startKey)), zap.String("endKey", hex.EncodeToString(endKey))) + if startKey.Cmp(endKey) >= 0 { return nil, errors.Errorf("invalid range, startKey: %s, endKey: %s", hex.EncodeToString(startKey), hex.EncodeToString(endKey)) diff --git a/pkg/ddl/backfilling_dispatcher_test.go b/pkg/ddl/backfilling_dispatcher_test.go index 209c068a91a59..5da673b6625e5 100644 --- a/pkg/ddl/backfilling_dispatcher_test.go +++ b/pkg/ddl/backfilling_dispatcher_test.go @@ -35,10 +35,8 @@ import ( "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/testkit" - "github.com/pingcap/tidb/pkg/util/logutil" "github.com/stretchr/testify/require" "github.com/tikv/client-go/v2/util" - "go.uber.org/zap" ) func TestBackfillingDispatcherLocalMode(t *testing.T) { @@ -56,6 +54,8 @@ func TestBackfillingDispatcherLocalMode(t *testing.T) { tk := testkit.NewTestKit(t, store) tk.MustExec("use test") + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/ddl/mockWriterMemSize", "return()")) + defer failpoint.Disable("github.com/pingcap/tidb/pkg/ddl/mockWriterMemSize") /// 1. test partition table. tk.MustExec("create table tp1(id int primary key, v int) PARTITION BY RANGE (id) (\n " + "PARTITION p0 VALUES LESS THAN (10),\n" + @@ -156,7 +156,8 @@ func TestBackfillingDispatcherGlobalSortMode(t *testing.T) { }, 1, 1, time.Second) defer pool.Close() ctx := context.WithValue(context.Background(), "etcd", true) - mgr := storage.NewTaskManager(util.WithInternalSourceType(ctx, "taskManager"), pool) + ctx = util.WithInternalSourceType(ctx, "handle") + mgr := storage.NewTaskManager(pool) storage.SetTaskManager(mgr) dspManager, err := dispatcher.NewManager(util.WithInternalSourceType(ctx, "dispatcher"), mgr, "host:port") require.NoError(t, err) @@ -175,7 +176,7 @@ func TestBackfillingDispatcherGlobalSortMode(t *testing.T) { ext.(*ddl.BackfillingDispatcherExt).GlobalSort = true dsp.Extension = ext - taskID, err := mgr.AddNewGlobalTask(task.Key, proto.Backfill, 1, task.Meta) + taskID, err := mgr.AddNewGlobalTask(ctx, task.Key, proto.Backfill, 1, task.Meta) require.NoError(t, err) task.ID = taskID serverInfos, _, err := dsp.GetEligibleInstances(context.Background(), task) @@ -192,11 +193,10 @@ func TestBackfillingDispatcherGlobalSortMode(t *testing.T) { for _, m := range subtaskMetas { subtasks = append(subtasks, proto.NewSubtask(task.Step, task.ID, task.Type, "", m)) } - _, err = mgr.UpdateGlobalTaskAndAddSubTasks(task, subtasks, proto.TaskStatePending) + _, err = mgr.UpdateGlobalTaskAndAddSubTasks(ctx, task, subtasks, proto.TaskStatePending) require.NoError(t, err) - gotSubtasks, err := mgr.GetSubtasksForImportInto(taskID, ddl.StepReadIndex) + gotSubtasks, err := mgr.GetSubtasksForImportInto(ctx, taskID, ddl.StepReadIndex) require.NoError(t, err) - logutil.BgLogger().Info("ywq test", zap.Any("len", len(gotSubtasks))) // update meta, same as import into. sortStepMeta := &ddl.BackfillSubTaskMeta{ @@ -216,7 +216,7 @@ func TestBackfillingDispatcherGlobalSortMode(t *testing.T) { sortStepMetaBytes, err := json.Marshal(sortStepMeta) require.NoError(t, err) for _, s := range gotSubtasks { - require.NoError(t, mgr.FinishSubtask(s.ID, sortStepMetaBytes)) + require.NoError(t, mgr.FinishSubtask(ctx, s.SchedulerID, s.ID, sortStepMetaBytes)) } // 2. to merge-sort stage. require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/ddl/forceMergeSort", `return()`)) @@ -234,9 +234,9 @@ func TestBackfillingDispatcherGlobalSortMode(t *testing.T) { for _, m := range subtaskMetas { subtasks = append(subtasks, proto.NewSubtask(task.Step, task.ID, task.Type, "", m)) } - _, err = mgr.UpdateGlobalTaskAndAddSubTasks(task, subtasks, proto.TaskStatePending) + _, err = mgr.UpdateGlobalTaskAndAddSubTasks(ctx, task, subtasks, proto.TaskStatePending) require.NoError(t, err) - gotSubtasks, err = mgr.GetSubtasksForImportInto(taskID, task.Step) + gotSubtasks, err = mgr.GetSubtasksForImportInto(ctx, taskID, task.Step) require.NoError(t, err) mergeSortStepMeta := &ddl.BackfillSubTaskMeta{ SortedKVMeta: external.SortedKVMeta{ @@ -255,7 +255,7 @@ func TestBackfillingDispatcherGlobalSortMode(t *testing.T) { mergeSortStepMetaBytes, err := json.Marshal(mergeSortStepMeta) require.NoError(t, err) for _, s := range gotSubtasks { - require.NoError(t, mgr.FinishSubtask(s.ID, mergeSortStepMetaBytes)) + require.NoError(t, mgr.FinishSubtask(ctx, s.SchedulerID, s.ID, mergeSortStepMetaBytes)) } // 3. to write&ingest stage. require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/ddl/mockWriteIngest", "return(true)")) diff --git a/pkg/ddl/backfilling_dist_scheduler.go b/pkg/ddl/backfilling_dist_scheduler.go index dabaf890349f7..d887bb0a5cf91 100644 --- a/pkg/ddl/backfilling_dist_scheduler.go +++ b/pkg/ddl/backfilling_dist_scheduler.go @@ -27,6 +27,7 @@ import ( "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/table" "github.com/pingcap/tidb/pkg/util/logutil" + "github.com/tikv/client-go/v2/tikv" "go.uber.org/zap" ) @@ -88,7 +89,7 @@ func NewBackfillSubtaskExecutor(_ context.Context, taskMeta []byte, d *ddl, return newReadIndexExecutor( d, &bgm.Job, indexInfos, tbl.(table.PhysicalTable), jc, bc, summary, bgm.CloudStorageURI), nil case proto.StepTwo: - return newMergeSortExecutor(jobMeta.ID, indexInfos[0], tbl.(table.PhysicalTable), bc, bgm.CloudStorageURI) + return newMergeSortExecutor(jobMeta.ID, len(indexInfos), tbl.(table.PhysicalTable), bc, bgm.CloudStorageURI) case proto.StepThree: if len(bgm.CloudStorageURI) > 0 { return newCloudImportExecutor(&bgm.Job, jobMeta.ID, indexInfos[0], tbl.(table.PhysicalTable), bc, bgm.CloudStorageURI) @@ -142,7 +143,8 @@ func (s *backfillDistScheduler) Init(ctx context.Context) error { if idx == nil { return errors.Trace(errors.Errorf("index info not found: %d", bgm.EleIDs[0])) } - bc, err := ingest.LitBackCtxMgr.Register(ctx, idx.Unique, job.ID, d.etcdCli, job.ReorgMeta.ResourceGroupName) + pdLeaderAddr := d.store.(tikv.Storage).GetRegionCache().PDClient().GetLeaderAddr() + bc, err := ingest.LitBackCtxMgr.Register(ctx, idx.Unique, job.ID, d.etcdCli, pdLeaderAddr, job.ReorgMeta.ResourceGroupName) if err != nil { return errors.Trace(err) } diff --git a/pkg/ddl/backfilling_merge_sort.go b/pkg/ddl/backfilling_merge_sort.go index 32d27d7146a06..6de8ee0d7b756 100644 --- a/pkg/ddl/backfilling_merge_sort.go +++ b/pkg/ddl/backfilling_merge_sort.go @@ -26,7 +26,6 @@ import ( "github.com/pingcap/tidb/br/pkg/storage" "github.com/pingcap/tidb/pkg/ddl/ingest" "github.com/pingcap/tidb/pkg/disttask/framework/proto" - "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/table" "github.com/pingcap/tidb/pkg/util/intest" @@ -37,7 +36,7 @@ import ( type mergeSortExecutor struct { jobID int64 - index *model.IndexInfo + idxNum int ptbl table.PhysicalTable bc ingest.BackendCtx cloudStoreURI string @@ -47,14 +46,14 @@ type mergeSortExecutor struct { func newMergeSortExecutor( jobID int64, - index *model.IndexInfo, + idxNum int, ptbl table.PhysicalTable, bc ingest.BackendCtx, cloudStoreURI string, ) (*mergeSortExecutor, error) { return &mergeSortExecutor{ jobID: jobID, - index: index, + idxNum: idxNum, ptbl: ptbl, bc: bc, cloudStoreURI: cloudStoreURI, @@ -100,9 +99,23 @@ func (m *mergeSortExecutor) RunSubtask(ctx context.Context, subtask *proto.Subta prefix := path.Join(strconv.Itoa(int(m.jobID)), strconv.Itoa(int(subtask.ID))) - // TODO: config generated by plan. - return external.MergeOverlappingFiles(ctx, sm.DataFiles, store, 64*1024, prefix, - external.DefaultBlockSize, 8*1024, 1*size.MB, 8*1024, onClose, + partSize, err := getMergeSortPartSize(int(variable.GetDDLReorgWorkerCounter()), m.idxNum) + if err != nil { + return err + } + + return external.MergeOverlappingFiles( + ctx, + sm.DataFiles, + store, + int64(partSize), + 64*1024, + prefix, + external.DefaultBlockSize, + 8*1024, + 1*size.MB, + 8*1024, + onClose, int(variable.GetDDLReorgWorkerCounter()), true) } diff --git a/pkg/ddl/backfilling_operators.go b/pkg/ddl/backfilling_operators.go index 75ced7ca4831e..e5b53c0a369eb 100644 --- a/pkg/ddl/backfilling_operators.go +++ b/pkg/ddl/backfilling_operators.go @@ -48,6 +48,7 @@ import ( "github.com/pingcap/tidb/pkg/util/chunk" "github.com/pingcap/tidb/pkg/util/logutil" "github.com/pingcap/tidb/pkg/util/memory" + "github.com/pingcap/tidb/pkg/util/size" "github.com/prometheus/client_golang/prometheus" "go.uber.org/zap" "golang.org/x/sync/errgroup" @@ -111,6 +112,33 @@ func (ctx *OperatorCtx) OperatorErr() error { return *err } +func getWriterMemSize(idxNum int) (uint64, error) { + failpoint.Inject("mockWriterMemSize", func() { + failpoint.Return(1*size.GB, nil) + }) + _, writerCnt := expectedIngestWorkerCnt() + memTotal, err := memory.MemTotal() + if err != nil { + return 0, err + } + memUsed, err := memory.MemUsed() + if err != nil { + return 0, err + } + memAvailable := memTotal - memUsed + memSize := (memAvailable / 2) / uint64(writerCnt) / uint64(idxNum) + logutil.BgLogger().Info("build operators that write index to cloud storage", zap.Uint64("memory total", memTotal), zap.Uint64("memory used", memUsed), zap.Uint64("memory size", memSize)) + return memSize, nil +} + +func getMergeSortPartSize(concurrency int, idxNum int) (uint64, error) { + writerMemSize, err := getWriterMemSize(idxNum) + if err != nil { + return 0, nil + } + return writerMemSize / uint64(concurrency) / 10, nil +} + // NewAddIndexIngestPipeline creates a pipeline for adding index in ingest mode. func NewAddIndexIngestPipeline( ctx *OperatorCtx, @@ -124,6 +152,7 @@ func NewAddIndexIngestPipeline( startKey, endKey kv.Key, totalRowCount *atomic.Int64, metricCounter prometheus.Counter, + reorgMeta *model.DDLReorgMeta, ) (*operator.AsyncPipeline, error) { indexes := make([]table.Index, 0, len(idxInfos)) for _, idxInfo := range idxInfos { @@ -144,7 +173,7 @@ func NewAddIndexIngestPipeline( srcOp := NewTableScanTaskSource(ctx, store, tbl, startKey, endKey) scanOp := NewTableScanOperator(ctx, sessPool, copCtx, srcChkPool, readerCnt) - ingestOp := NewIndexIngestOperator(ctx, copCtx, sessPool, tbl, indexes, engines, srcChkPool, writerCnt) + ingestOp := NewIndexIngestOperator(ctx, copCtx, sessPool, tbl, indexes, engines, srcChkPool, writerCnt, reorgMeta) sinkOp := newIndexWriteResultSink(ctx, backendCtx, tbl, indexes, totalRowCount, metricCounter) operator.Compose[TableScanTask](srcOp, scanOp) @@ -170,6 +199,7 @@ func NewWriteIndexToExternalStoragePipeline( totalRowCount *atomic.Int64, metricCounter prometheus.Counter, onClose external.OnCloseFunc, + reorgMeta *model.DDLReorgMeta, ) (*operator.AsyncPipeline, error) { indexes := make([]table.Index, 0, len(idxInfos)) for _, idxInfo := range idxInfos { @@ -197,16 +227,15 @@ func NewWriteIndexToExternalStoragePipeline( return nil, err } - memTotal, err := memory.MemTotal() + memSize, err := getWriterMemSize(len(indexes)) if err != nil { return nil, err } - memSize := (memTotal / 2) / uint64(writerCnt) / uint64(len(indexes)) srcOp := NewTableScanTaskSource(ctx, store, tbl, startKey, endKey) scanOp := NewTableScanOperator(ctx, sessPool, copCtx, srcChkPool, readerCnt) writeOp := NewWriteExternalStoreOperator( - ctx, copCtx, sessPool, jobID, subtaskID, tbl, indexes, extStore, srcChkPool, writerCnt, onClose, memSize) + ctx, copCtx, sessPool, jobID, subtaskID, tbl, indexes, extStore, srcChkPool, writerCnt, onClose, memSize, reorgMeta) sinkOp := newIndexWriteResultSink(ctx, nil, tbl, indexes, totalRowCount, metricCounter) operator.Compose[TableScanTask](srcOp, scanOp) @@ -491,6 +520,7 @@ func NewWriteExternalStoreOperator( concurrency int, onClose external.OnCloseFunc, memoryQuota uint64, + reorgMeta *model.DDLReorgMeta, ) *WriteExternalStoreOperator { pool := workerpool.NewWorkerPool( "WriteExternalStoreOperator", @@ -518,6 +548,7 @@ func NewWriteExternalStoreOperator( sessPool: sessPool, writers: writers, srcChunkPool: srcChunkPool, + reorgMeta: reorgMeta, } }) return &WriteExternalStoreOperator{ @@ -548,6 +579,7 @@ func NewIndexIngestOperator( engines []ingest.Engine, srcChunkPool chan *chunk.Chunk, concurrency int, + reorgMeta *model.DDLReorgMeta, ) *IndexIngestOperator { var writerIDAlloc atomic.Int32 pool := workerpool.NewWorkerPool( @@ -575,6 +607,7 @@ func NewIndexIngestOperator( sessPool: sessPool, writers: writers, srcChunkPool: srcChunkPool, + reorgMeta: reorgMeta, } }) return &IndexIngestOperator{ @@ -585,12 +618,14 @@ func NewIndexIngestOperator( type indexIngestWorker struct { ctx *OperatorCtx - tbl table.PhysicalTable - indexes []table.Index + tbl table.PhysicalTable + indexes []table.Index + reorgMeta *model.DDLReorgMeta copCtx copr.CopContext sessPool opSessPool se *session.Session + restore func(sessionctx.Context) writers []ingest.Writer srcChunkPool chan *chunk.Chunk @@ -613,14 +648,7 @@ func (w *indexIngestWorker) HandleTask(rs IndexRecordChunk, send func(IndexWrite result := IndexWriteResult{ ID: rs.ID, } - if w.se == nil { - sessCtx, err := w.sessPool.Get() - if err != nil { - w.ctx.onError(err) - return - } - w.se = session.NewSession(sessCtx) - } + w.initSessCtx() count, nextKey, err := w.WriteLocal(&rs) if err != nil { w.ctx.onError(err) @@ -639,6 +667,25 @@ func (w *indexIngestWorker) HandleTask(rs IndexRecordChunk, send func(IndexWrite send(result) } +func (w *indexIngestWorker) initSessCtx() { + if w.se == nil { + sessCtx, err := w.sessPool.Get() + if err != nil { + w.ctx.onError(err) + return + } + w.restore = restoreSessCtx(sessCtx) + if err := initSessCtx(sessCtx, + w.reorgMeta.SQLMode, + w.reorgMeta.Location, + w.reorgMeta.ResourceGroupName); err != nil { + w.ctx.onError(err) + return + } + w.se = session.NewSession(sessCtx) + } +} + func (w *indexIngestWorker) Close() { for _, writer := range w.writers { err := writer.Close(w.ctx) @@ -647,6 +694,7 @@ func (w *indexIngestWorker) Close() { } } if w.se != nil { + w.restore(w.se.Context) w.sessPool.Put(w.se.Context) } } diff --git a/pkg/ddl/backfilling_read_index.go b/pkg/ddl/backfilling_read_index.go index 1e54c7738533e..f213e56b36443 100644 --- a/pkg/ddl/backfilling_read_index.go +++ b/pkg/ddl/backfilling_read_index.go @@ -244,7 +244,7 @@ func (r *readIndexExecutor) buildLocalStorePipeline( counter := metrics.BackfillTotalCounter.WithLabelValues( metrics.GenerateReorgLabel("add_idx_rate", r.job.SchemaName, tbl.Meta().Name.O)) return NewAddIndexIngestPipeline( - opCtx, d.store, d.sessPool, r.bc, engines, sessCtx, tbl, r.indexes, start, end, totalRowCount, counter) + opCtx, d.store, d.sessPool, r.bc, engines, sessCtx, tbl, r.indexes, start, end, totalRowCount, counter, r.job.ReorgMeta) } func (r *readIndexExecutor) buildExternalStorePipeline( @@ -273,6 +273,19 @@ func (r *readIndexExecutor) buildExternalStorePipeline( counter := metrics.BackfillTotalCounter.WithLabelValues( metrics.GenerateReorgLabel("add_idx_rate", r.job.SchemaName, tbl.Meta().Name.O)) return NewWriteIndexToExternalStoragePipeline( - opCtx, d.store, r.cloudStorageURI, r.d.sessPool, sessCtx, r.job.ID, subtaskID, - tbl, r.indexes, start, end, totalRowCount, counter, onClose) + opCtx, + d.store, + r.cloudStorageURI, + r.d.sessPool, + sessCtx, + r.job.ID, + subtaskID, + tbl, + r.indexes, + start, + end, + totalRowCount, + counter, + onClose, + r.job.ReorgMeta) } diff --git a/pkg/ddl/backfilling_scheduler.go b/pkg/ddl/backfilling_scheduler.go index 7bb3c0c07cab8..958862f342e83 100644 --- a/pkg/ddl/backfilling_scheduler.go +++ b/pkg/ddl/backfilling_scheduler.go @@ -18,6 +18,7 @@ import ( "context" "fmt" "sync" + "time" "github.com/pingcap/errors" "github.com/pingcap/tidb/pkg/ddl/copr" @@ -37,6 +38,7 @@ import ( "github.com/pingcap/tidb/pkg/util/dbterror" "github.com/pingcap/tidb/pkg/util/intest" "github.com/pingcap/tidb/pkg/util/logutil" + "github.com/pingcap/tidb/pkg/util/mock" decoder "github.com/pingcap/tidb/pkg/util/rowDecoder" "go.uber.org/zap" ) @@ -135,18 +137,24 @@ func newSessCtx( resourceGroupName string, ) (sessionctx.Context, error) { sessCtx := newContext(store) - if err := initSessCtx(sessCtx, sqlMode, tzLocation); err != nil { + if err := initSessCtx(sessCtx, sqlMode, tzLocation, resourceGroupName); err != nil { return nil, errors.Trace(err) } - sessCtx.GetSessionVars().ResourceGroupName = resourceGroupName return sessCtx, nil } +// initSessCtx initializes the session context. Be careful to the timezone. func initSessCtx( sessCtx sessionctx.Context, sqlMode mysql.SQLMode, tzLocation *model.TimeZoneLocation, + resGroupName string, ) error { + // Correct the initial timezone. + tz := *time.UTC + sessCtx.GetSessionVars().TimeZone = &tz + sessCtx.GetSessionVars().StmtCtx.SetTimeZone(&tz) + // Set the row encode format version. rowFormat := variable.GetDDLReorgRowFormat() sessCtx.GetSessionVars().RowEncoder.Enable = rowFormat != variable.DefTiDBRowFormatV1 @@ -163,15 +171,48 @@ func initSessCtx( typeFlags := types.StrictFlags. WithTruncateAsWarning(!sqlMode.HasStrictMode()). WithIgnoreInvalidDateErr(sqlMode.HasAllowInvalidDatesMode()). - WithIgnoreZeroInDate(!sqlMode.HasStrictMode() || sqlMode.HasAllowInvalidDatesMode()) + WithIgnoreZeroInDate(!sqlMode.HasStrictMode() || sqlMode.HasAllowInvalidDatesMode()). + WithCastTimeToYearThroughConcat(true) sessCtx.GetSessionVars().StmtCtx.SetTypeFlags(typeFlags) + sessCtx.GetSessionVars().ResourceGroupName = resGroupName + // Prevent initializing the mock context in the workers concurrently. // For details, see https://github.com/pingcap/tidb/issues/40879. - _ = sessCtx.GetDomainInfoSchema() + if _, ok := sessCtx.(*mock.Context); ok { + _ = sessCtx.GetDomainInfoSchema() + } return nil } +func restoreSessCtx(sessCtx sessionctx.Context) func(sessCtx sessionctx.Context) { + sv := sessCtx.GetSessionVars() + rowEncoder := sv.RowEncoder.Enable + sqlMode := sv.SQLMode + var timezone *time.Location + if sv.TimeZone != nil { + // Copy the content of timezone instead of pointer because it may be changed. + tz := *sv.TimeZone + timezone = &tz + } + badNullAsWarn := sv.StmtCtx.BadNullAsWarning + overflowAsWarn := sv.StmtCtx.OverflowAsWarning + dividedZeroAsWarn := sv.StmtCtx.DividedByZeroAsWarning + typeFlags := sv.StmtCtx.TypeFlags() + resGroupName := sv.ResourceGroupName + return func(usedSessCtx sessionctx.Context) { + uv := usedSessCtx.GetSessionVars() + uv.RowEncoder.Enable = rowEncoder + uv.SQLMode = sqlMode + uv.TimeZone = timezone + uv.StmtCtx.BadNullAsWarning = badNullAsWarn + uv.StmtCtx.OverflowAsWarning = overflowAsWarn + uv.StmtCtx.DividedByZeroAsWarning = dividedZeroAsWarn + uv.StmtCtx.SetTypeFlags(typeFlags) + uv.ResourceGroupName = resGroupName + } +} + func (*txnBackfillScheduler) expectedWorkerSize() (size int) { workerCnt := int(variable.GetDDLReorgWorkerCounter()) return min(workerCnt, maxBackfillWorkerSize) diff --git a/pkg/ddl/backfilling_test.go b/pkg/ddl/backfilling_test.go index afa1f60c2120d..736c08eb0bde8 100644 --- a/pkg/ddl/backfilling_test.go +++ b/pkg/ddl/backfilling_test.go @@ -23,7 +23,6 @@ import ( "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/sessionctx" - "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/stretchr/testify/require" ) @@ -52,11 +51,9 @@ func TestDoneTaskKeeper(t *testing.T) { func TestPickBackfillType(t *testing.T) { originMgr := ingest.LitBackCtxMgr originInit := ingest.LitInitialized - originFastReorg := variable.EnableFastReorg.Load() defer func() { ingest.LitBackCtxMgr = originMgr ingest.LitInitialized = originInit - variable.EnableFastReorg.Store(originFastReorg) }() mockMgr := ingest.NewMockBackendCtxMgr( func() sessionctx.Context { @@ -64,27 +61,26 @@ func TestPickBackfillType(t *testing.T) { }) ingest.LitBackCtxMgr = mockMgr mockCtx := context.Background() - const uk = false mockJob := &model.Job{ ID: 1, ReorgMeta: &model.DDLReorgMeta{ ReorgTp: model.ReorgTypeTxn, }, } - variable.EnableFastReorg.Store(true) - tp, err := pickBackfillType(mockCtx, mockJob, uk, nil) + mockJob.ReorgMeta.IsFastReorg = true + tp, err := pickBackfillType(mockCtx, mockJob) require.NoError(t, err) require.Equal(t, tp, model.ReorgTypeTxn) mockJob.ReorgMeta.ReorgTp = model.ReorgTypeNone ingest.LitInitialized = false - tp, err = pickBackfillType(mockCtx, mockJob, uk, nil) + tp, err = pickBackfillType(mockCtx, mockJob) require.NoError(t, err) require.Equal(t, tp, model.ReorgTypeTxnMerge) mockJob.ReorgMeta.ReorgTp = model.ReorgTypeNone ingest.LitInitialized = true - tp, err = pickBackfillType(mockCtx, mockJob, uk, nil) + tp, err = pickBackfillType(mockCtx, mockJob) require.NoError(t, err) require.Equal(t, tp, model.ReorgTypeLitMerge) } diff --git a/pkg/ddl/cluster.go b/pkg/ddl/cluster.go index e05d0c4006be0..3a7093befb444 100644 --- a/pkg/ddl/cluster.go +++ b/pkg/ddl/cluster.go @@ -29,7 +29,6 @@ import ( "github.com/pingcap/kvproto/pkg/errorpb" "github.com/pingcap/kvproto/pkg/kvrpcpb" sess "github.com/pingcap/tidb/pkg/ddl/internal/session" - "github.com/pingcap/tidb/pkg/ddl/util" "github.com/pingcap/tidb/pkg/domain/infosync" "github.com/pingcap/tidb/pkg/infoschema" "github.com/pingcap/tidb/pkg/kv" @@ -38,6 +37,7 @@ import ( "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/variable" + statsutil "github.com/pingcap/tidb/pkg/statistics/handle/util" "github.com/pingcap/tidb/pkg/tablecodec" "github.com/pingcap/tidb/pkg/util/filter" "github.com/pingcap/tidb/pkg/util/gcutil" @@ -748,7 +748,7 @@ func (w *worker) onFlashbackCluster(d *ddlCtx, t *meta.Meta, job *model.Job) (ve case model.StateWriteReorganization: // TODO: Support flashback in unistore. if inFlashbackTest { - asyncNotifyEvent(d, &util.Event{Tp: model.ActionFlashbackCluster}) + asyncNotifyEvent(d, statsutil.NewFlashbackClusterEvent()) job.State = model.JobStateDone job.SchemaState = model.StatePublic return ver, nil @@ -771,7 +771,7 @@ func (w *worker) onFlashbackCluster(d *ddlCtx, t *meta.Meta, job *model.Job) (ve } } - asyncNotifyEvent(d, &util.Event{Tp: model.ActionFlashbackCluster}) + asyncNotifyEvent(d, statsutil.NewFlashbackClusterEvent()) job.State = model.JobStateDone job.SchemaState = model.StatePublic return updateSchemaVersion(d, t, job) diff --git a/pkg/ddl/column.go b/pkg/ddl/column.go index 7033702d42e3e..19a6be7cadff2 100644 --- a/pkg/ddl/column.go +++ b/pkg/ddl/column.go @@ -29,7 +29,6 @@ import ( "github.com/pingcap/failpoint" "github.com/pingcap/tidb/pkg/config" sess "github.com/pingcap/tidb/pkg/ddl/internal/session" - ddlutil "github.com/pingcap/tidb/pkg/ddl/util" "github.com/pingcap/tidb/pkg/expression" "github.com/pingcap/tidb/pkg/infoschema" "github.com/pingcap/tidb/pkg/kv" @@ -43,6 +42,7 @@ import ( "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/sessionctx/variable" + statsutil "github.com/pingcap/tidb/pkg/statistics/handle/util" "github.com/pingcap/tidb/pkg/table" "github.com/pingcap/tidb/pkg/tablecodec" "github.com/pingcap/tidb/pkg/types" @@ -53,7 +53,6 @@ import ( "github.com/pingcap/tidb/pkg/util/rowcodec" "github.com/pingcap/tidb/pkg/util/sqlexec" kvutil "github.com/tikv/client-go/v2/util" - clientv3 "go.etcd.io/etcd/client/v3" "go.uber.org/zap" ) @@ -186,7 +185,11 @@ func onAddColumn(d *ddlCtx, t *meta.Meta, job *model.Job) (ver int64, err error) // Finish this job. job.FinishTableJob(model.JobStateDone, model.StatePublic, ver, tblInfo) - asyncNotifyEvent(d, &ddlutil.Event{Tp: model.ActionAddColumn, TableInfo: tblInfo, ColumnInfos: []*model.ColumnInfo{columnInfo}}) + addColumnEvent := statsutil.NewAddColumnEvent( + tblInfo, + []*model.ColumnInfo{columnInfo}, + ) + asyncNotifyEvent(d, addColumnEvent) default: err = dbterror.ErrInvalidDDLState.GenWithStackByArgs("column", columnInfo.State) } @@ -791,7 +794,11 @@ func (w *worker) doModifyColumnTypeWithData( job.FinishTableJob(model.JobStateDone, model.StatePublic, ver, tblInfo) // Refactor the job args to add the old index ids into delete range table. job.Args = []interface{}{rmIdxIDs, getPartitionIDs(tblInfo)} - asyncNotifyEvent(d, &ddlutil.Event{Tp: model.ActionModifyColumn, TableInfo: tblInfo, ColumnInfos: []*model.ColumnInfo{changingCol}}) + modifyColumnEvent := statsutil.NewModifyColumnEvent( + tblInfo, + []*model.ColumnInfo{changingCol}, + ) + asyncNotifyEvent(d, modifyColumnEvent) default: err = dbterror.ErrInvalidDDLState.GenWithStackByArgs("column", changingCol.State) } @@ -1376,7 +1383,8 @@ func (w *updateColumnWorker) getRowRecord(handle kv.Handle, recordKey []byte, ra } checksums := w.calcChecksums() sctx, rd := w.sessCtx.GetSessionVars().StmtCtx, &w.sessCtx.GetSessionVars().RowEncoder - newRowVal, err := tablecodec.EncodeRow(sctx, newRow, newColumnIDs, nil, nil, rd, checksums...) + newRowVal, err := tablecodec.EncodeRow(sctx.TimeZone(), newRow, newColumnIDs, nil, nil, rd, checksums...) + err = sctx.HandleError(err) if err != nil { return errors.Trace(err) } @@ -1696,8 +1704,8 @@ func (r *asAutoIDRequirement) Store() kv.Storage { return r.store } -func (r *asAutoIDRequirement) GetEtcdClient() *clientv3.Client { - return r.etcdCli +func (r *asAutoIDRequirement) AutoIDClient() *autoid.ClientDiscover { + return r.autoidCli } // applyNewAutoRandomBits set auto_random bits to TableInfo and diff --git a/pkg/ddl/db_change_test.go b/pkg/ddl/db_change_test.go index d2a02d1960fe2..8984002bd21af 100644 --- a/pkg/ddl/db_change_test.go +++ b/pkg/ddl/db_change_test.go @@ -34,6 +34,7 @@ import ( "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/terror" "github.com/pingcap/tidb/pkg/session" + sessiontypes "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessiontxn" "github.com/pingcap/tidb/pkg/testkit" @@ -289,7 +290,7 @@ func TestTwoStates(t *testing.T) { } type stateCase struct { - session session.Session + session sessiontypes.Session rawStmt ast.StmtNode stmt sqlexec.Statement expectedExecErr string diff --git a/pkg/ddl/db_test.go b/pkg/ddl/db_test.go index 313f0f6489f48..8bfd211ad1fb9 100644 --- a/pkg/ddl/db_test.go +++ b/pkg/ddl/db_test.go @@ -18,7 +18,6 @@ import ( "context" "fmt" "math" - "strconv" "strings" "sync" "testing" @@ -155,46 +154,6 @@ func TestIssue22307(t *testing.T) { require.EqualError(t, checkErr2, "[planner:1054]Unknown column 'b' in 'order clause'") } -func TestIssue23473(t *testing.T) { - store := testkit.CreateMockStoreWithSchemaLease(t, dbTestLease) - - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("drop table if exists t_23473;") - tk.MustExec("create table t_23473 (k int primary key, v int)") - tk.MustExec("alter table t_23473 change column k k bigint") - - tbl := external.GetTableByName(t, tk, "test", "t_23473") - require.True(t, mysql.HasNoDefaultValueFlag(tbl.Cols()[0].GetFlag())) -} - -func TestAutoConvertBlobTypeByLength(t *testing.T) { - store, dom := testkit.CreateMockStoreAndDomain(t) - - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - sql := fmt.Sprintf("create table t0(c0 Blob(%d), c1 Blob(%d), c2 Blob(%d), c3 Blob(%d))", - 255-1, 65535-1, 16777215-1, 4294967295-1) - tk.MustExec(sql) - - var tableID int64 - rs := tk.MustQuery("select TIDB_TABLE_ID from information_schema.tables where table_name='t0' and table_schema='test';") - tableIDi, _ := strconv.Atoi(rs.Rows()[0][0].(string)) - tableID = int64(tableIDi) - - tbl, exist := dom.InfoSchema().TableByID(tableID) - require.True(t, exist) - - require.Equal(t, tbl.Cols()[0].GetType(), mysql.TypeTinyBlob) - require.Equal(t, tbl.Cols()[0].GetFlen(), 255) - require.Equal(t, tbl.Cols()[1].GetType(), mysql.TypeBlob) - require.Equal(t, tbl.Cols()[1].GetFlen(), 65535) - require.Equal(t, tbl.Cols()[2].GetType(), mysql.TypeMediumBlob) - require.Equal(t, tbl.Cols()[2].GetFlen(), 16777215) - require.Equal(t, tbl.Cols()[3].GetType(), mysql.TypeLongBlob) - require.Equal(t, tbl.Cols()[3].GetFlen(), 4294967295) -} - func TestAddExpressionIndexRollback(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomainWithSchemaLease(t, dbTestLease) tk := testkit.NewTestKit(t, store) diff --git a/pkg/ddl/ddl.go b/pkg/ddl/ddl.go index 4088f1ee3cace..96028bafc3aa3 100644 --- a/pkg/ddl/ddl.go +++ b/pkg/ddl/ddl.go @@ -47,6 +47,7 @@ import ( "github.com/pingcap/tidb/pkg/infoschema" "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/meta" + "github.com/pingcap/tidb/pkg/meta/autoid" "github.com/pingcap/tidb/pkg/metrics" "github.com/pingcap/tidb/pkg/owner" "github.com/pingcap/tidb/pkg/parser/ast" @@ -58,6 +59,7 @@ import ( "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/sessiontxn" "github.com/pingcap/tidb/pkg/statistics/handle" + statsutil "github.com/pingcap/tidb/pkg/statistics/handle/util" "github.com/pingcap/tidb/pkg/table" pumpcli "github.com/pingcap/tidb/pkg/tidb-binlog/pump_client" tidbutil "github.com/pingcap/tidb/pkg/util" @@ -349,15 +351,14 @@ type ddlCtx struct { schemaSyncer syncer.SchemaSyncer stateSyncer syncer.StateSyncer ddlJobDoneCh chan struct{} - ddlEventCh chan<- *util.Event + ddlEventCh chan<- *statsutil.DDLEvent lease time.Duration // lease is schema lease. binlogCli *pumpcli.PumpsClient // binlogCli is used for Binlog. infoCache *infoschema.InfoCache statsHandle *handle.Handle tableLockCkr util.DeadTableLockChecker etcdCli *clientv3.Client - // backfillJobCh gets notification if any backfill jobs coming. - backfillJobCh chan struct{} + autoidCli *autoid.ClientDiscover *waitSchemaSyncedController *schemaVersionManager @@ -500,23 +501,6 @@ func (dc *ddlCtx) jobContext(jobID int64, reorgMeta *model.DDLReorgMeta) *JobCon return ctx } -func (dc *ddlCtx) removeBackfillCtxJobCtx(jobID int64) { - dc.backfillCtx.Lock() - delete(dc.backfillCtx.jobCtxMap, jobID) - dc.backfillCtx.Unlock() -} - -func (dc *ddlCtx) backfillCtxJobIDs() []int64 { - dc.backfillCtx.Lock() - defer dc.backfillCtx.Unlock() - - runningJobIDs := make([]int64, 0, len(dc.backfillCtx.jobCtxMap)) - for id := range dc.backfillCtx.jobCtxMap { - runningJobIDs = append(runningJobIDs, id) - } - return runningJobIDs -} - type reorgContexts struct { sync.RWMutex // reorgCtxMap maps job ID to reorg context. @@ -599,7 +583,7 @@ func (d *ddl) RegisterStatsHandle(h *handle.Handle) { // asyncNotifyEvent will notify the ddl event to outside world, say statistic handle. When the channel is full, we may // give up notify and log it. -func asyncNotifyEvent(d *ddlCtx, e *util.Event) { +func asyncNotifyEvent(d *ddlCtx, e *statsutil.DDLEvent) { if d.ddlEventCh != nil { if d.lease == 0 { // If lease is 0, it's always used in test. @@ -673,6 +657,7 @@ func newDDL(ctx context.Context, options ...Option) *ddl { infoCache: opt.InfoCache, tableLockCkr: deadLockCkr, etcdCli: opt.EtcdCli, + autoidCli: opt.AutoIDClient, schemaVersionManager: newSchemaVersionManager(), waitSchemaSyncedController: newWaitSchemaSyncedController(), runningJobIDs: make([]string, 0, jobRecordCapacity), diff --git a/pkg/ddl/ddl_api.go b/pkg/ddl/ddl_api.go index 2c0415196227b..a3b6fe42696d9 100644 --- a/pkg/ddl/ddl_api.go +++ b/pkg/ddl/ddl_api.go @@ -1043,7 +1043,7 @@ func convertTimestampDefaultValToUTC(ctx sessionctx.Context, defaultVal interfac } if vv, ok := defaultVal.(string); ok { if vv != types.ZeroDatetimeStr && !strings.EqualFold(vv, ast.CurrentTimestamp) { - t, err := types.ParseTime(ctx.GetSessionVars().StmtCtx.TypeCtx(), vv, col.GetType(), col.GetDecimal(), nil) + t, err := types.ParseTime(ctx.GetSessionVars().StmtCtx.TypeCtx(), vv, col.GetType(), col.GetDecimal()) if err != nil { return defaultVal, errors.Trace(err) } @@ -3794,6 +3794,7 @@ func (d *ddl) AlterTable(ctx context.Context, sctx sessionctx.Context, stmt *ast Name: model.NewCIStr(opt.StrValue), } case ast.TableOptionEngine: + case ast.TableOptionRowFormat: case ast.TableOptionTTL, ast.TableOptionTTLEnable, ast.TableOptionTTLJobInterval: var ttlInfo *model.TTLInfo var ttlEnable *bool @@ -4376,6 +4377,10 @@ func (d *ddl) AlterTablePartitioning(ctx sessionctx.Context, ident ast.Ident, sp } newPartInfo := newMeta.Partition + if err = handlePartitionPlacement(ctx, newPartInfo); err != nil { + return errors.Trace(err) + } + if err = d.assignPartitionIDs(newPartInfo.Definitions); err != nil { return errors.Trace(err) } @@ -5329,7 +5334,8 @@ func ProcessColumnOptions(ctx sessionctx.Context, col *table.Column, options []* col.GeneratedExprString = sb.String() col.GeneratedStored = opt.Stored col.Dependences = make(map[string]struct{}) - col.GeneratedExpr = opt.Expr + // Only used by checkModifyGeneratedColumn, there is no need to set a ctor for it. + col.GeneratedExpr = table.NewClonableExprNode(nil, opt.Expr) for _, colName := range FindColumnNamesInExpr(opt.Expr) { col.Dependences[colName.Name.L] = struct{}{} } @@ -5395,7 +5401,7 @@ func checkModifyColumnWithGeneratedColumnsConstraint(allCols []*table.Column, ol if col.GeneratedExpr == nil { continue } - dependedColNames := FindColumnNamesInExpr(col.GeneratedExpr) + dependedColNames := FindColumnNamesInExpr(col.GeneratedExpr.Internal()) for _, name := range dependedColNames { if name.Name.L == oldColName.L { if col.Hidden { @@ -7082,10 +7088,15 @@ func (d *ddl) CreatePrimaryKey(ctx sessionctx.Context, ti ast.Ident, indexName m TableName: t.Meta().Name.L, Type: model.ActionAddPrimaryKey, BinlogInfo: &model.HistoryInfo{}, - ReorgMeta: NewDDLReorgMeta(ctx), + ReorgMeta: nil, Args: []interface{}{unique, indexName, indexPartSpecifications, indexOption, sqlMode, nil, global}, Priority: ctx.GetSessionVars().DDLReorgPriority, } + reorgMeta, err := newReorgMetaFromVariables(d, job, ctx) + if err != nil { + return err + } + job.ReorgMeta = reorgMeta err = d.DoDDLJob(ctx, job) err = d.callHookOnChanged(job, err) @@ -7332,12 +7343,17 @@ func (d *ddl) createIndex(ctx sessionctx.Context, ti ast.Ident, keyType ast.Inde TableName: t.Meta().Name.L, Type: model.ActionAddIndex, BinlogInfo: &model.HistoryInfo{}, - ReorgMeta: NewDDLReorgMeta(ctx), + ReorgMeta: nil, Args: []interface{}{unique, indexName, indexPartSpecifications, indexOption, hiddenCols, global}, Priority: ctx.GetSessionVars().DDLReorgPriority, Charset: chs, Collate: coll, } + reorgMeta, err := newReorgMetaFromVariables(d, job, ctx) + if err != nil { + return err + } + job.ReorgMeta = reorgMeta err = d.DoDDLJob(ctx, job) // key exists, but if_not_exists flags is true, so we ignore this error. @@ -7349,6 +7365,24 @@ func (d *ddl) createIndex(ctx sessionctx.Context, ti ast.Ident, keyType ast.Inde return errors.Trace(err) } +func newReorgMetaFromVariables(d *ddl, job *model.Job, sctx sessionctx.Context) (*model.DDLReorgMeta, error) { + reorgMeta := NewDDLReorgMeta(sctx) + reorgMeta.IsDistReorg = variable.EnableDistTask.Load() + reorgMeta.IsFastReorg = variable.EnableFastReorg.Load() + if reorgMeta.IsDistReorg && !reorgMeta.IsFastReorg { + return nil, dbterror.ErrUnsupportedDistTask + } + isUpgradingSysDB := d.stateSyncer.IsUpgradingState() && hasSysDB(job) + if isUpgradingSysDB { + if reorgMeta.IsDistReorg { + logutil.BgLogger().Info("cannot use distributed task execution because the job on system DB is in upgrade state", + zap.String("category", "ddl"), zap.Stringer("job", job)) + } + reorgMeta.IsDistReorg = false + } + return reorgMeta, nil +} + func buildFKInfo(fkName model.CIStr, keys []*ast.IndexPartSpecification, refer *ast.ReferenceDef, cols []*table.Column) (*model.FKInfo, error) { if len(keys) != len(refer.IndexPartSpecifications) { return nil, infoschema.ErrForeignKeyNotMatch.GenWithStackByArgs(fkName, "Key reference and table reference don't match") diff --git a/pkg/ddl/ddl_api_test.go b/pkg/ddl/ddl_api_test.go index e6dec271e9fac..9426844e43ae4 100644 --- a/pkg/ddl/ddl_api_test.go +++ b/pkg/ddl/ddl_api_test.go @@ -23,7 +23,7 @@ import ( "github.com/pingcap/tidb/pkg/ddl" "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/parser/model" - "github.com/pingcap/tidb/pkg/session" + sessiontypes "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/testkit" "github.com/stretchr/testify/require" ) @@ -134,7 +134,7 @@ func TestIsJobRollbackable(t *testing.T) { } } -func enQueueDDLJobs(t *testing.T, sess session.Session, txn kv.Transaction, jobType model.ActionType, start, end int) { +func enQueueDDLJobs(t *testing.T, sess sessiontypes.Session, txn kv.Transaction, jobType model.ActionType, start, end int) { for i := start; i < end; i++ { job := &model.Job{ ID: int64(i), diff --git a/pkg/ddl/ddl_tiflash_api.go b/pkg/ddl/ddl_tiflash_api.go index 93b1ddb38ecda..a16502ee04ae6 100644 --- a/pkg/ddl/ddl_tiflash_api.go +++ b/pkg/ddl/ddl_tiflash_api.go @@ -35,11 +35,11 @@ import ( "github.com/pingcap/tidb/pkg/infoschema" "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/sessionctx" - "github.com/pingcap/tidb/pkg/store/helper" "github.com/pingcap/tidb/pkg/table" "github.com/pingcap/tidb/pkg/util" "github.com/pingcap/tidb/pkg/util/intest" "github.com/pingcap/tidb/pkg/util/logutil" + pd "github.com/tikv/pd/client/http" atomicutil "go.uber.org/atomic" "go.uber.org/zap" ) @@ -111,7 +111,7 @@ func NewPollTiFlashBackoffContext(minThreshold, maxThreshold TiFlashTick, capaci // TiFlashManagementContext is the context for TiFlash Replica Management type TiFlashManagementContext struct { - TiFlashStores map[int64]helper.StoreStat + TiFlashStores map[int64]pd.StoreInfo PollCounter uint64 Backoff *PollTiFlashBackoffContext // tables waiting for updating progress after become available. @@ -206,7 +206,7 @@ func NewTiFlashManagementContext() (*TiFlashManagementContext, error) { } return &TiFlashManagementContext{ PollCounter: 0, - TiFlashStores: make(map[int64]helper.StoreStat), + TiFlashStores: make(map[int64]pd.StoreInfo), Backoff: c, UpdatingProgressTables: list.New(), }, nil @@ -293,7 +293,7 @@ func LoadTiFlashReplicaInfo(tblInfo *model.TableInfo, tableList *[]TiFlashReplic } // UpdateTiFlashHTTPAddress report TiFlash's StatusAddress's port to Pd's etcd. -func (d *ddl) UpdateTiFlashHTTPAddress(store *helper.StoreStat) error { +func (d *ddl) UpdateTiFlashHTTPAddress(store *pd.StoreInfo) error { host, _, err := net.SplitHostPort(store.Store.StatusAddress) if err != nil { return errors.Trace(err) @@ -338,7 +338,7 @@ func updateTiFlashStores(pollTiFlashContext *TiFlashManagementContext) error { if err != nil { return err } - pollTiFlashContext.TiFlashStores = make(map[int64]helper.StoreStat) + pollTiFlashContext.TiFlashStores = make(map[int64]pd.StoreInfo) for _, store := range tikvStats.Stores { for _, l := range store.Store.Labels { if l.Key == "engine" && l.Value == "tiflash" { diff --git a/pkg/ddl/ddl_worker.go b/pkg/ddl/ddl_worker.go index f218519a967cb..25e5acd4db155 100644 --- a/pkg/ddl/ddl_worker.go +++ b/pkg/ddl/ddl_worker.go @@ -26,6 +26,7 @@ import ( "github.com/pingcap/errors" "github.com/pingcap/failpoint" "github.com/pingcap/kvproto/pkg/kvrpcpb" + "github.com/pingcap/tidb/pkg/ddl/ingest" sess "github.com/pingcap/tidb/pkg/ddl/internal/session" "github.com/pingcap/tidb/pkg/ddl/util" "github.com/pingcap/tidb/pkg/kv" @@ -574,6 +575,7 @@ func (w *worker) finishDDLJob(t *meta.Meta, job *model.Job) (err error) { startTime := time.Now() defer func() { metrics.DDLWorkerHistogram.WithLabelValues(metrics.WorkerFinishDDLJob, job.Type.String(), metrics.RetLabel(err)).Observe(time.Since(startTime).Seconds()) + markJobFinish(job) }() if jobNeedGC(job) { @@ -619,6 +621,15 @@ func (w *worker) finishDDLJob(t *meta.Meta, job *model.Job) (err error) { return errors.Trace(err) } +func markJobFinish(job *model.Job) { + if (job.Type == model.ActionAddIndex || job.Type == model.ActionAddPrimaryKey) && + job.ReorgMeta != nil && + job.ReorgMeta.IsFastReorg && + ingest.LitBackCtxMgr != nil { + ingest.LitBackCtxMgr.MarkJobFinish() + } +} + func (w *worker) writeDDLSeqNum(job *model.Job) { w.ddlSeqNumMu.Lock() w.ddlSeqNumMu.seqNum++ diff --git a/pkg/ddl/generated_column.go b/pkg/ddl/generated_column.go index 098e3609af9ce..13d508f02bd2e 100644 --- a/pkg/ddl/generated_column.go +++ b/pkg/ddl/generated_column.go @@ -252,7 +252,7 @@ func checkModifyGeneratedColumn(sctx sessionctx.Context, schemaName model.CIStr, if newCol.IsGenerated() { // rule 3. - if err := checkIllegalFn4Generated(newCol.Name.L, typeColumn, newCol.GeneratedExpr); err != nil { + if err := checkIllegalFn4Generated(newCol.Name.L, typeColumn, newCol.GeneratedExpr.Internal()); err != nil { return errors.Trace(err) } diff --git a/pkg/ddl/index.go b/pkg/ddl/index.go index c45d535bf0ed9..cd7c897a08dd6 100644 --- a/pkg/ddl/index.go +++ b/pkg/ddl/index.go @@ -637,7 +637,7 @@ SwitchIndexState: case model.StateNone: // none -> delete only var reorgTp model.ReorgType - reorgTp, err = pickBackfillType(w.ctx, job, allIndexInfos[0].Unique, d) + reorgTp, err = pickBackfillType(w.ctx, job) if err != nil { if !errorIsRetryable(err, job) { job.State = model.JobStateCancelled @@ -749,13 +749,13 @@ SwitchIndexState: } // pickBackfillType determines which backfill process will be used. -func pickBackfillType(ctx context.Context, job *model.Job, unique bool, d *ddlCtx) (model.ReorgType, error) { +func pickBackfillType(ctx context.Context, job *model.Job) (model.ReorgType, error) { if job.ReorgMeta.ReorgTp != model.ReorgTypeNone { // The backfill task has been started. // Don't change the backfill type. return job.ReorgMeta.ReorgTp, nil } - if !IsEnableFastReorg() { + if !job.ReorgMeta.IsFastReorg { job.ReorgMeta.ReorgTp = model.ReorgTypeTxn return model.ReorgTypeTxn, nil } @@ -770,18 +770,7 @@ func pickBackfillType(ctx context.Context, job *model.Job, unique bool, d *ddlCt if err != nil { return model.ReorgTypeNone, err } - if variable.EnableDistTask.Load() { - _, err = ingest.LitBackCtxMgr.Register(ctx, unique, job.ID, d.etcdCli, job.ReorgMeta.ResourceGroupName) - } else { - _, err = ingest.LitBackCtxMgr.Register(ctx, unique, job.ID, nil, job.ReorgMeta.ResourceGroupName) - } - if err != nil { - return model.ReorgTypeNone, err - } job.ReorgMeta.ReorgTp = model.ReorgTypeLitMerge - if variable.EnableDistTask.Load() { - job.ReorgMeta.IsDistReorg = true - } return model.ReorgTypeLitMerge, nil } } @@ -886,7 +875,7 @@ func doReorgWorkForCreateIndexMultiSchema(w *worker, d *ddlCtx, t *meta.Meta, jo func doReorgWorkForCreateIndex(w *worker, d *ddlCtx, t *meta.Meta, job *model.Job, tbl table.Table, allIndexInfos []*model.IndexInfo) (done bool, ver int64, err error) { var reorgTp model.ReorgType - reorgTp, err = pickBackfillType(w.ctx, job, allIndexInfos[0].Unique, d) + reorgTp, err = pickBackfillType(w.ctx, job) if err != nil { return false, ver, err } @@ -964,7 +953,12 @@ func runIngestReorgJob(w *worker, d *ddlCtx, t *meta.Meta, job *model.Job, return true, 0, nil } ctx := logutil.WithCategory(w.ctx, "ddl-ingest") - bc, err = ingest.LitBackCtxMgr.Register(ctx, allIndexInfos[0].Unique, job.ID, nil, job.ReorgMeta.ResourceGroupName) + var pdLeaderAddr string + if d != nil { + //nolint:forcetypeassert + pdLeaderAddr = d.store.(tikv.Storage).GetRegionCache().PDClient().GetLeaderAddr() + } + bc, err = ingest.LitBackCtxMgr.Register(ctx, allIndexInfos[0].Unique, job.ID, nil, pdLeaderAddr, job.ReorgMeta.ResourceGroupName) if err != nil { ver, err = convertAddIdxJob2RollbackJob(d, t, job, tbl.Meta(), allIndexInfos, err) return false, ver, errors.Trace(err) @@ -1976,7 +1970,9 @@ func (w *worker) addTableIndex(t table.Table, reorgInfo *reorgInfo) error { if err != nil { return err } - return checkDuplicateForUniqueIndex(w.ctx, t, reorgInfo) + //nolint:forcetypeassert + pdLeaderAddr := w.store.(tikv.Storage).GetRegionCache().PDClient().GetLeaderAddr() + return checkDuplicateForUniqueIndex(w.ctx, t, reorgInfo, pdLeaderAddr) } } @@ -2013,7 +2009,7 @@ func (w *worker) addTableIndex(t table.Table, reorgInfo *reorgInfo) error { return errors.Trace(err) } -func checkDuplicateForUniqueIndex(ctx context.Context, t table.Table, reorgInfo *reorgInfo) error { +func checkDuplicateForUniqueIndex(ctx context.Context, t table.Table, reorgInfo *reorgInfo, pdAddr string) error { var bc ingest.BackendCtx var err error defer func() { @@ -2029,7 +2025,7 @@ func checkDuplicateForUniqueIndex(ctx context.Context, t table.Table, reorgInfo if indexInfo.Unique { ctx := logutil.WithCategory(ctx, "ddl-ingest") if bc == nil { - bc, err = ingest.LitBackCtxMgr.Register(ctx, indexInfo.Unique, reorgInfo.ID, nil, reorgInfo.ReorgMeta.ResourceGroupName) + bc, err = ingest.LitBackCtxMgr.Register(ctx, indexInfo.Unique, reorgInfo.ID, nil, pdAddr, reorgInfo.ReorgMeta.ResourceGroupName) if err != nil { return err } @@ -2060,6 +2056,8 @@ func (w *worker) executeDistGlobalTask(reorgInfo *reorgInfo) error { taskType := proto.Backfill taskKey := fmt.Sprintf("ddl/%s/%d", taskType, reorgInfo.Job.ID) g, ctx := errgroup.WithContext(context.Background()) + ctx = kv.WithInternalSourceType(ctx, kv.InternalDistTask) + done := make(chan struct{}) // generate taskKey for multi schema change. @@ -2076,7 +2074,7 @@ func (w *worker) executeDistGlobalTask(reorgInfo *reorgInfo) error { if err != nil { return err } - task, err := taskManager.GetGlobalTaskByKeyWithHistory(taskKey) + task, err := taskManager.GetGlobalTaskByKeyWithHistory(w.ctx, taskKey) if err != nil { return err } @@ -2095,7 +2093,7 @@ func (w *worker) executeDistGlobalTask(reorgInfo *reorgInfo) error { backoffer := backoff.NewExponential(dispatcher.RetrySQLInterval, 2, dispatcher.RetrySQLMaxInterval) err := handle.RunWithRetry(ctx, dispatcher.RetrySQLTimes, backoffer, logutil.BgLogger(), func(ctx context.Context) (bool, error) { - return true, handle.ResumeTask(taskKey) + return true, handle.ResumeTask(w.ctx, taskKey) }, ) if err != nil { @@ -2158,7 +2156,7 @@ func (w *worker) executeDistGlobalTask(reorgInfo *reorgInfo) error { case <-checkFinishTk.C: if err = w.isReorgRunnable(reorgInfo.Job.ID, true); err != nil { if dbterror.ErrPausedDDLJob.Equal(err) { - if err = handle.PauseTask(taskKey); err != nil { + if err = handle.PauseTask(w.ctx, taskKey); err != nil { logutil.BgLogger().Error("pause global task error", zap.String("category", "ddl"), zap.String("task_key", taskKey), zap.Error(err)) continue } @@ -2170,7 +2168,7 @@ func (w *worker) executeDistGlobalTask(reorgInfo *reorgInfo) error { if !dbterror.ErrCancelledDDLJob.Equal(err) { return errors.Trace(err) } - if err = handle.CancelGlobalTask(taskKey); err != nil { + if err = handle.CancelGlobalTask(w.ctx, taskKey); err != nil { logutil.BgLogger().Error("cancel global task error", zap.String("category", "ddl"), zap.String("task_key", taskKey), zap.Error(err)) // continue to cancel global task. continue @@ -2191,12 +2189,12 @@ func (w *worker) updateJobRowCount(taskKey string, jobID int64) { logutil.BgLogger().Warn("cannot get task manager", zap.String("category", "ddl"), zap.String("task_key", taskKey), zap.Error(err)) return } - gTask, err := taskMgr.GetGlobalTaskByKey(taskKey) + gTask, err := taskMgr.GetGlobalTaskByKey(w.ctx, taskKey) if err != nil || gTask == nil { logutil.BgLogger().Warn("cannot get global task", zap.String("category", "ddl"), zap.String("task_key", taskKey), zap.Error(err)) return } - rowCount, err := taskMgr.GetSubtaskRowCount(gTask.ID, proto.StepOne) + rowCount, err := taskMgr.GetSubtaskRowCount(w.ctx, gTask.ID, proto.StepOne) if err != nil { logutil.BgLogger().Warn("cannot get subtask row count", zap.String("category", "ddl"), zap.String("task_key", taskKey), zap.Error(err)) return diff --git a/pkg/ddl/index_change_test.go b/pkg/ddl/index_change_test.go index 4deef10c50c8e..9c65c56b918a1 100644 --- a/pkg/ddl/index_change_test.go +++ b/pkg/ddl/index_change_test.go @@ -26,6 +26,7 @@ import ( "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/sessionctx" + "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/sessiontxn" "github.com/pingcap/tidb/pkg/table" "github.com/pingcap/tidb/pkg/table/tables" @@ -232,7 +233,7 @@ func checkAddPublicForAddIndex(ctx sessionctx.Context, writeTbl, publicTbl table return errors.Trace(err) } err = checkIndexExists(ctx, publicTbl, 6, 6, true) - if ddl.IsEnableFastReorg() { + if variable.EnableFastReorg.Load() { // Need check temp index also. err1 = checkIndexExists(ctx, writeTbl, 6, 6, true) } @@ -255,14 +256,14 @@ func checkAddPublicForAddIndex(ctx sessionctx.Context, writeTbl, publicTbl table return errors.Trace(err) } err = checkIndexExists(ctx, publicTbl, 5, 7, true) - if ddl.IsEnableFastReorg() { + if variable.EnableFastReorg.Load() { // Need check temp index also. err1 = checkIndexExists(ctx, writeTbl, 5, 7, true) } if err != nil && err1 != nil { return errors.Trace(err) } - if ddl.IsEnableFastReorg() { + if variable.EnableFastReorg.Load() { err = checkIndexExists(ctx, writeTbl, 7, 7, false) } else { err = checkIndexExists(ctx, publicTbl, 7, 7, false) @@ -296,7 +297,7 @@ func checkAddPublicForAddIndex(ctx sessionctx.Context, writeTbl, publicTbl table idxVal := row[1].GetInt64() handle := row[0].GetInt64() err = checkIndexExists(ctx, publicTbl, idxVal, handle, true) - if ddl.IsEnableFastReorg() { + if variable.EnableFastReorg.Load() { // Need check temp index also. err1 = checkIndexExists(ctx, writeTbl, idxVal, handle, true) } diff --git a/pkg/ddl/index_cop.go b/pkg/ddl/index_cop.go index 0266143c94eef..51a2d2b26ff2e 100644 --- a/pkg/ddl/index_cop.go +++ b/pkg/ddl/index_cop.go @@ -376,7 +376,8 @@ func buildHandle(pkDts []types.Datum, tblInfo *model.TableInfo, pkInfo *model.IndexInfo, stmtCtx *stmtctx.StatementContext) (kv.Handle, error) { if tblInfo.IsCommonHandle { tablecodec.TruncateIndexValues(tblInfo, pkInfo, pkDts) - handleBytes, err := codec.EncodeKey(stmtCtx, nil, pkDts...) + handleBytes, err := codec.EncodeKey(stmtCtx.TimeZone(), nil, pkDts...) + err = stmtCtx.HandleError(err) if err != nil { return nil, err } diff --git a/pkg/ddl/index_merge_tmp.go b/pkg/ddl/index_merge_tmp.go index 8d7ffb16ec94a..7c0504e1ebf1e 100644 --- a/pkg/ddl/index_merge_tmp.go +++ b/pkg/ddl/index_merge_tmp.go @@ -24,7 +24,6 @@ import ( "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/meta" "github.com/pingcap/tidb/pkg/parser/model" - "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" @@ -33,11 +32,6 @@ import ( "go.uber.org/zap" ) -// IsEnableFastReorg check whether Fast Reorg is allowed. -func IsEnableFastReorg() bool { - return variable.EnableFastReorg.Load() -} - func (w *mergeIndexWorker) batchCheckTemporaryUniqueKey( txn kv.Transaction, idxInfo *model.IndexInfo, diff --git a/pkg/ddl/index_modify_test.go b/pkg/ddl/index_modify_test.go index 690d38ec2ff16..ffc5491d72761 100644 --- a/pkg/ddl/index_modify_test.go +++ b/pkg/ddl/index_modify_test.go @@ -776,7 +776,7 @@ func checkGlobalIndexRow( it.Close() // Check global index entry. - encodedValue, err := codec.EncodeKey(sc, nil, idxVals...) + encodedValue, err := codec.EncodeKey(sc.TimeZone(), nil, idxVals...) require.NoError(t, err) key := tablecodec.EncodeIndexSeekKey(tblInfo.ID, indexInfo.ID, encodedValue) require.NoError(t, err) diff --git a/pkg/ddl/ingest/backend.go b/pkg/ddl/ingest/backend.go index 3d4bf54a68b33..130faa466156c 100644 --- a/pkg/ddl/ingest/backend.go +++ b/pkg/ddl/ingest/backend.go @@ -20,6 +20,7 @@ import ( "time" "github.com/pingcap/failpoint" + "github.com/pingcap/tidb/br/pkg/lightning/backend" "github.com/pingcap/tidb/br/pkg/lightning/backend/encode" "github.com/pingcap/tidb/br/pkg/lightning/backend/local" lightning "github.com/pingcap/tidb/br/pkg/lightning/config" @@ -214,18 +215,45 @@ func (bc *litBackendCtx) Flush(indexID int64, mode FlushMode) (flushed, imported } }() } - - logutil.Logger(bc.ctx).Info(LitInfoUnsafeImport, zap.Int64("index ID", indexID), - zap.String("usage info", bc.diskRoot.UsageInfo())) - err = bc.backend.UnsafeImportAndReset(bc.ctx, ei.uuid, int64(lightning.SplitRegionSize)*int64(lightning.MaxSplitRegionSizeRatio), int64(lightning.SplitRegionKeys)) + err = bc.unsafeImportAndReset(ei) if err != nil { - logutil.Logger(bc.ctx).Error(LitErrIngestDataErr, zap.Int64("index ID", indexID), - zap.String("usage info", bc.diskRoot.UsageInfo())) return true, false, err } return true, true, nil } +func (bc *litBackendCtx) unsafeImportAndReset(ei *engineInfo) error { + logutil.Logger(bc.ctx).Info(LitInfoUnsafeImport, zap.Int64("index ID", ei.indexID), + zap.String("usage info", bc.diskRoot.UsageInfo())) + logger := log.FromContext(bc.ctx).With( + zap.Stringer("engineUUID", ei.uuid), + ) + + ei.closedEngine = backend.NewClosedEngine(bc.backend, logger, ei.uuid, 0) + + regionSplitSize := int64(lightning.SplitRegionSize) * int64(lightning.MaxSplitRegionSizeRatio) + regionSplitKeys := int64(lightning.SplitRegionKeys) + if err := ei.closedEngine.Import(bc.ctx, regionSplitSize, regionSplitKeys); err != nil { + logutil.Logger(bc.ctx).Error(LitErrIngestDataErr, zap.Int64("index ID", ei.indexID), + zap.String("usage info", bc.diskRoot.UsageInfo())) + return err + } + + err := bc.backend.ResetEngine(bc.ctx, ei.uuid) + if err != nil { + logutil.Logger(bc.ctx).Error(LitErrResetEngineFail, zap.Int64("index ID", ei.indexID)) + err1 := ei.closedEngine.Cleanup(bc.ctx) + if err1 != nil { + logutil.Logger(ei.ctx).Error(LitErrCleanEngineErr, zap.Error(err1), + zap.Int64("job ID", ei.jobID), zap.Int64("index ID", ei.indexID)) + } + ei.openedEngine = nil + ei.closedEngine = nil + return err + } + return nil +} + // ForceSyncFlagForTest is a flag to force sync only for test. var ForceSyncFlagForTest = false diff --git a/pkg/ddl/ingest/backend_mgr.go b/pkg/ddl/ingest/backend_mgr.go index 150ad813eeeb5..794598d889807 100644 --- a/pkg/ddl/ingest/backend_mgr.go +++ b/pkg/ddl/ingest/backend_mgr.go @@ -19,6 +19,7 @@ import ( "fmt" "math" "strconv" + "sync" "time" "github.com/pingcap/tidb/br/pkg/lightning/backend/local" @@ -33,15 +34,21 @@ import ( // BackendCtxMgr is used to manage the backend context. type BackendCtxMgr interface { CheckAvailable() (bool, error) - Register(ctx context.Context, unique bool, jobID int64, etcdClient *clientv3.Client, resourceGroupName string) (BackendCtx, error) + Register(ctx context.Context, unique bool, jobID int64, etcdClient *clientv3.Client, pdAddr string, resourceGroupName string) (BackendCtx, error) Unregister(jobID int64) Load(jobID int64) (BackendCtx, bool) + + MarkJobProcessing(jobID int64) (ok bool) + MarkJobFinish() } type litBackendCtxMgr struct { generic.SyncMap[int64, *litBackendCtx] - memRoot MemRoot - diskRoot DiskRoot + memRoot MemRoot + diskRoot DiskRoot + processingJobID int64 + lastLoggingTime time.Time + mu sync.Mutex } func newLitBackendCtxMgr(path string, memQuota uint64) BackendCtxMgr { @@ -62,15 +69,32 @@ func newLitBackendCtxMgr(path string, memQuota uint64) BackendCtxMgr { return mgr } +// MarkJobProcessing marks ingest backfill is processing. +func (m *litBackendCtxMgr) MarkJobProcessing(jobID int64) bool { + m.mu.Lock() + defer m.mu.Unlock() + if m.processingJobID == 0 || m.processingJobID == jobID { + m.processingJobID = jobID + return true + } + if time.Since(m.lastLoggingTime) > 1*time.Minute { + logutil.BgLogger().Info("ingest backfill worker is already in used by another DDL job", + zap.String("category", "ddl-ingest"), + zap.Int64("processing job ID", m.processingJobID)) + m.lastLoggingTime = time.Now() + } + return false +} + +// MarkJobFinish marks ingest backfill is finished. +func (m *litBackendCtxMgr) MarkJobFinish() { + m.mu.Lock() + m.processingJobID = 0 + m.mu.Unlock() +} + // CheckAvailable checks if the ingest backfill is available. func (m *litBackendCtxMgr) CheckAvailable() (bool, error) { - // We only allow one task to use ingest at the same time, in order to limit the CPU usage. - activeJobIDs := m.Keys() - if len(activeJobIDs) > 0 { - logutil.BgLogger().Info("ingest backfill is already in use by another DDL job", zap.String("category", "ddl-ingest"), - zap.Int64("job ID", activeJobIDs[0])) - return false, nil - } if err := m.diskRoot.PreCheckUsage(); err != nil { logutil.BgLogger().Info("ingest backfill is not available", zap.String("category", "ddl-ingest"), zap.Error(err)) return false, err @@ -79,7 +103,7 @@ func (m *litBackendCtxMgr) CheckAvailable() (bool, error) { } // Register creates a new backend and registers it to the backend context. -func (m *litBackendCtxMgr) Register(ctx context.Context, unique bool, jobID int64, etcdClient *clientv3.Client, resourceGroupName string) (BackendCtx, error) { +func (m *litBackendCtxMgr) Register(ctx context.Context, unique bool, jobID int64, etcdClient *clientv3.Client, pdAddr string, resourceGroupName string) (BackendCtx, error) { bc, exist := m.Load(jobID) if !exist { m.memRoot.RefreshConsumption() @@ -92,6 +116,7 @@ func (m *litBackendCtxMgr) Register(ctx context.Context, unique bool, jobID int6 logutil.Logger(ctx).Warn(LitWarnConfigError, zap.Int64("job ID", jobID), zap.Error(err)) return nil, err } + cfg.Lightning.TiDB.PdAddr = pdAddr bd, err := createLocalBackend(ctx, cfg, resourceGroupName) if err != nil { logutil.Logger(ctx).Error(LitErrCreateBackendFail, zap.Int64("job ID", jobID), zap.Error(err)) diff --git a/pkg/ddl/ingest/config.go b/pkg/ddl/ingest/config.go index 9a86ff269a4e9..27351a0668c19 100644 --- a/pkg/ddl/ingest/config.go +++ b/pkg/ddl/ingest/config.go @@ -62,7 +62,6 @@ func genConfig(ctx context.Context, memRoot MemRoot, jobID int64, unique bool) ( } else { cfg.TikvImporter.DuplicateResolution = lightning.DupeResAlgNone } - cfg.TiDB.PdAddr = tidbCfg.Path cfg.TiDB.Host = "127.0.0.1" cfg.TiDB.StatusPort = int(tidbCfg.Status.StatusPort) // Set TLS related information diff --git a/pkg/ddl/ingest/disk_root.go b/pkg/ddl/ingest/disk_root.go index 9fbef5be7ae43..9fe565b381aca 100644 --- a/pkg/ddl/ingest/disk_root.go +++ b/pkg/ddl/ingest/disk_root.go @@ -130,7 +130,10 @@ func (d *diskRootImpl) PreCheckUsage() error { } if RiskOfDiskFull(sz.Available, sz.Capacity) { sortPath := ConfigSortPath() - msg := fmt.Sprintf("sort path: %s, %s, please clean up the disk and retry", sortPath, d.UsageInfo()) + logutil.BgLogger().Warn("available disk space is less than 10%, cannot use ingest mode", + zap.String("sort path", sortPath), + zap.String("usage", d.usageInfo())) + msg := fmt.Sprintf("no enough space in %s", sortPath) return dbterror.ErrIngestCheckEnvFailed.FastGenByArgs(msg) } return nil diff --git a/pkg/ddl/ingest/message.go b/pkg/ddl/ingest/message.go index 0f74de19dd0b4..1217244c6f2ac 100644 --- a/pkg/ddl/ingest/message.go +++ b/pkg/ddl/ingest/message.go @@ -42,6 +42,7 @@ const ( LitErrCloseWriterErr string = "close writer error" LitErrReadSortPath string = "cannot read sort path" LitErrCleanSortPath string = "cannot cleanup sort path" + LitErrResetEngineFail string = "reset engine failed" LitWarnEnvInitFail string = "initialize environment failed" LitWarnConfigError string = "build config for backend failed" LitInfoEnvInitSucc string = "init global ingest backend environment finished" diff --git a/pkg/ddl/ingest/mock.go b/pkg/ddl/ingest/mock.go index 5a13fad34e976..257175b6bbcb6 100644 --- a/pkg/ddl/ingest/mock.go +++ b/pkg/ddl/ingest/mock.go @@ -42,13 +42,22 @@ func NewMockBackendCtxMgr(sessCtxProvider func() sessionctx.Context) *MockBacken } } +// MarkJobProcessing implements BackendCtxMgr.MarkJobProcessing interface. +func (*MockBackendCtxMgr) MarkJobProcessing(_ int64) bool { + return true +} + +// MarkJobFinish implements BackendCtxMgr.MarkJobFinish interface. +func (*MockBackendCtxMgr) MarkJobFinish() { +} + // CheckAvailable implements BackendCtxMgr.Available interface. func (m *MockBackendCtxMgr) CheckAvailable() (bool, error) { return len(m.runningJobs) == 0, nil } // Register implements BackendCtxMgr.Register interface. -func (m *MockBackendCtxMgr) Register(_ context.Context, _ bool, jobID int64, _ *clientv3.Client, _ string) (BackendCtx, error) { +func (m *MockBackendCtxMgr) Register(_ context.Context, _ bool, jobID int64, _ *clientv3.Client, _ string, _ string) (BackendCtx, error) { logutil.BgLogger().Info("mock backend mgr register", zap.Int64("jobID", jobID)) if mockCtx, ok := m.runningJobs[jobID]; ok { return mockCtx, nil diff --git a/pkg/ddl/job_table.go b/pkg/ddl/job_table.go index d6c3b30215505..10c7f4d7f0bcd 100644 --- a/pkg/ddl/job_table.go +++ b/pkg/ddl/job_table.go @@ -245,6 +245,16 @@ func (*ddl) NoConflictJob(se *sess.Session, sql string) (bool, error) { func (d *ddl) getReorgJob(sess *sess.Session) (*model.Job, error) { return d.getJob(sess, reorg, func(job *model.Job) (bool, error) { + if (job.Type == model.ActionAddIndex || job.Type == model.ActionAddPrimaryKey) && + job.ReorgMeta != nil && + job.ReorgMeta.IsFastReorg && + ingest.LitBackCtxMgr != nil { + succeed := ingest.LitBackCtxMgr.MarkJobProcessing(job.ID) + if !succeed { + // We only allow one task to use ingest at the same time in order to limit the CPU/memory usage. + return false, nil + } + } // Check if there is any block ddl running, like drop schema and flashback cluster. sql := fmt.Sprintf("select job_id from mysql.tidb_ddl_job where "+ "(CONCAT(',', schema_ids, ',') REGEXP CONCAT(',', %s, ',') != 0 and type = %d and processing) "+ diff --git a/pkg/ddl/label/BUILD.bazel b/pkg/ddl/label/BUILD.bazel index 3e8f40d4c88ca..75a89a0767e97 100644 --- a/pkg/ddl/label/BUILD.bazel +++ b/pkg/ddl/label/BUILD.bazel @@ -13,6 +13,7 @@ go_library( "//pkg/parser/ast", "//pkg/tablecodec", "//pkg/util/codec", + "@com_github_tikv_pd_client//http", "@in_gopkg_yaml_v2//:yaml_v2", ], ) @@ -32,6 +33,7 @@ go_test( "//pkg/parser/ast", "//pkg/testkit/testsetup", "@com_github_stretchr_testify//require", + "@com_github_tikv_pd_client//http", "@org_uber_go_goleak//:goleak", ], ) diff --git a/pkg/ddl/label/attributes.go b/pkg/ddl/label/attributes.go index b797f66e73168..b51642373cca1 100644 --- a/pkg/ddl/label/attributes.go +++ b/pkg/ddl/label/attributes.go @@ -17,6 +17,8 @@ package label import ( "fmt" "strings" + + pd "github.com/tikv/pd/client/http" ) const ( @@ -37,15 +39,9 @@ const ( AttributesDuplicated ) -// Label is used to describe attributes -type Label struct { - Key string `json:"key,omitempty"` - Value string `json:"value,omitempty"` -} - // NewLabel creates a new label for a given string. -func NewLabel(attr string) (Label, error) { - l := Label{} +func NewLabel(attr string) (pd.RegionLabel, error) { + l := pd.RegionLabel{} kv := strings.Split(attr, "=") if len(kv) != 2 { return l, fmt.Errorf("%w: %s", ErrInvalidAttributesFormat, attr) @@ -66,14 +62,14 @@ func NewLabel(attr string) (Label, error) { return l, nil } -// Restore converts a Attribute to a string. -func (l *Label) Restore() string { +// RestoreRegionLabel converts a Attribute to a string. +func RestoreRegionLabel(l *pd.RegionLabel) string { return l.Key + "=" + l.Value } // CompatibleWith will check if two constraints are compatible. // Return (compatible, duplicated). -func (l *Label) CompatibleWith(o *Label) AttributesCompatibility { +func CompatibleWith(l *pd.RegionLabel, o *pd.RegionLabel) AttributesCompatibility { if l.Key != o.Key { return AttributesCompatible } @@ -85,26 +81,23 @@ func (l *Label) CompatibleWith(o *Label) AttributesCompatibility { return AttributesIncompatible } -// Labels is a slice of Label. -type Labels []Label - // NewLabels creates a slice of Label for given attributes. -func NewLabels(attrs []string) (Labels, error) { - labels := make(Labels, 0, len(attrs)) +func NewLabels(attrs []string) ([]pd.RegionLabel, error) { + labels := make([]pd.RegionLabel, 0, len(attrs)) for _, attr := range attrs { label, err := NewLabel(attr) if err != nil { return nil, err } - if err := labels.Add(label); err != nil { + if err := Add(&labels, label); err != nil { return nil, err } } return labels, nil } -// Restore converts Attributes to a string. -func (labels *Labels) Restore() string { +// RestoreRegionLabels converts Attributes to a string. +func RestoreRegionLabels(labels *[]pd.RegionLabel) string { var sb strings.Builder for i, label := range *labels { switch label.Key { @@ -117,25 +110,25 @@ func (labels *Labels) Restore() string { sb.WriteByte(',') } sb.WriteByte('"') - sb.WriteString(label.Restore()) + sb.WriteString(RestoreRegionLabel(&label)) sb.WriteByte('"') } return sb.String() } // Add will add a new attribute, with validation of all attributes. -func (labels *Labels) Add(label Label) error { +func Add(labels *[]pd.RegionLabel, label pd.RegionLabel) error { for i := range *labels { l := (*labels)[i] - res := label.CompatibleWith(&l) + res := CompatibleWith(&label, &l) if res == AttributesCompatible { continue } if res == AttributesDuplicated { return nil } - s1 := label.Restore() - s2 := l.Restore() + s1 := RestoreRegionLabel(&label) + s2 := RestoreRegionLabel(&l) return fmt.Errorf("'%s' and '%s' are conflicted", s1, s2) } diff --git a/pkg/ddl/label/attributes_test.go b/pkg/ddl/label/attributes_test.go index fcf53db3706b8..a80794a72014d 100644 --- a/pkg/ddl/label/attributes_test.go +++ b/pkg/ddl/label/attributes_test.go @@ -18,20 +18,21 @@ import ( "testing" "github.com/stretchr/testify/require" + pd "github.com/tikv/pd/client/http" ) func TestNewLabel(t *testing.T) { type TestCase struct { name string input string - label Label + label pd.RegionLabel } tests := []TestCase{ { name: "normal", input: "merge_option=allow", - label: Label{ + label: pd.RegionLabel{ Key: "merge_option", Value: "allow", }, @@ -39,7 +40,7 @@ func TestNewLabel(t *testing.T) { { name: "normal with space", input: " merge_option=allow ", - label: Label{ + label: pd.RegionLabel{ Key: "merge_option", Value: "allow", }, @@ -58,7 +59,7 @@ func TestNewLabel(t *testing.T) { func TestRestoreLabel(t *testing.T) { type TestCase struct { name string - input Label + input pd.RegionLabel output string } @@ -83,7 +84,7 @@ func TestRestoreLabel(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { - output := test.input.Restore() + output := RestoreRegionLabel(&test.input) require.Equal(t, test.output, output) }) } @@ -124,8 +125,8 @@ func TestNewLabels(t *testing.T) { func TestAddLabels(t *testing.T) { type TestCase struct { name string - labels Labels - label Label + labels []pd.RegionLabel + label pd.RegionLabel err bool } @@ -154,7 +155,7 @@ func TestAddLabels(t *testing.T) { }, { "duplicated attributes, skip", - append(labels, Label{ + append(labels, pd.RegionLabel{ Key: "merge_option", Value: "allow", }), @@ -171,7 +172,7 @@ func TestAddLabels(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { - err = test.labels.Add(test.label) + err = Add(&test.labels, test.label) if test.err { require.Error(t, err) } else { @@ -185,7 +186,7 @@ func TestAddLabels(t *testing.T) { func TestRestoreLabels(t *testing.T) { type TestCase struct { name string - input Labels + input []pd.RegionLabel output string } @@ -203,29 +204,29 @@ func TestRestoreLabels(t *testing.T) { tests := []TestCase{ { "normal1", - Labels{}, + []pd.RegionLabel{}, "", }, { "normal2", - Labels{input1, input2}, + []pd.RegionLabel{input1, input2}, `"merge_option=allow","key=value"`, }, { "normal3", - Labels{input3, input4, input5}, + []pd.RegionLabel{input3, input4, input5}, "", }, { "normal4", - Labels{input1, input2, input3}, + []pd.RegionLabel{input1, input2, input3}, `"merge_option=allow","key=value"`, }, } for _, test := range tests { t.Run(test.name, func(t *testing.T) { - output := test.input.Restore() + output := RestoreRegionLabels(&test.input) require.Equal(t, test.output, output) }) } diff --git a/pkg/ddl/label/rule.go b/pkg/ddl/label/rule.go index e3d08999ee8ed..2d5316a7dfe89 100644 --- a/pkg/ddl/label/rule.go +++ b/pkg/ddl/label/rule.go @@ -23,6 +23,7 @@ import ( "github.com/pingcap/tidb/pkg/parser/ast" "github.com/pingcap/tidb/pkg/tablecodec" "github.com/pingcap/tidb/pkg/util/codec" + pd "github.com/tikv/pd/client/http" "gopkg.in/yaml.v2" ) @@ -53,13 +54,7 @@ var ( ) // Rule is used to establish the relationship between labels and a key range. -type Rule struct { - ID string `json:"id"` - Index int `json:"index"` - Labels Labels `json:"labels"` - RuleType string `json:"rule_type"` - Data []interface{} `json:"data"` -} +type Rule pd.LabelRule // NewRule creates a rule. func NewRule() *Rule { @@ -69,7 +64,7 @@ func NewRule() *Rule { // ApplyAttributesSpec will transfer attributes defined in AttributesSpec to the labels. func (r *Rule) ApplyAttributesSpec(spec *ast.AttributesSpec) error { if spec.Default { - r.Labels = []Label{} + r.Labels = []pd.RegionLabel{} return nil } // construct a string list @@ -129,26 +124,27 @@ func (r *Rule) Reset(dbName, tableName, partName string, ids ...int64) *Rule { } if !hasDBKey { - r.Labels = append(r.Labels, Label{Key: dbKey, Value: dbName}) + r.Labels = append(r.Labels, pd.RegionLabel{Key: dbKey, Value: dbName}) } if !hasTableKey { - r.Labels = append(r.Labels, Label{Key: tableKey, Value: tableName}) + r.Labels = append(r.Labels, pd.RegionLabel{Key: tableKey, Value: tableName}) } if isPartition && !hasPartitionKey { - r.Labels = append(r.Labels, Label{Key: partitionKey, Value: partName}) + r.Labels = append(r.Labels, pd.RegionLabel{Key: partitionKey, Value: partName}) } r.RuleType = ruleType - r.Data = []interface{}{} + dataSlice := make([]interface{}, 0, len(ids)) slices.Sort(ids) for i := 0; i < len(ids); i++ { data := map[string]string{ "start_key": hex.EncodeToString(codec.EncodeBytes(nil, tablecodec.GenTablePrefix(ids[i]))), "end_key": hex.EncodeToString(codec.EncodeBytes(nil, tablecodec.GenTablePrefix(ids[i]+1))), } - r.Data = append(r.Data, data) + dataSlice = append(dataSlice, data) } + r.Data = dataSlice // We may support more types later. r.Index = RuleIndexTable if isPartition { @@ -157,16 +153,14 @@ func (r *Rule) Reset(dbName, tableName, partName string, ids ...int64) *Rule { return r } -// RulePatch is the patch to update the label rules. -type RulePatch struct { - SetRules []*Rule `json:"sets"` - DeleteRules []string `json:"deletes"` -} - // NewRulePatch returns a patch of rules which need to be set or deleted. -func NewRulePatch(setRules []*Rule, deleteRules []string) *RulePatch { - return &RulePatch{ - SetRules: setRules, +func NewRulePatch(setRules []*Rule, deleteRules []string) *pd.LabelRulePatch { + labelRules := make([]*pd.LabelRule, 0, len(setRules)) + for _, rule := range setRules { + labelRules = append(labelRules, (*pd.LabelRule)(rule)) + } + return &pd.LabelRulePatch{ + SetRules: labelRules, DeleteRules: deleteRules, } } diff --git a/pkg/ddl/label/rule_test.go b/pkg/ddl/label/rule_test.go index f392e3dc58c9e..69928b3614e89 100644 --- a/pkg/ddl/label/rule_test.go +++ b/pkg/ddl/label/rule_test.go @@ -19,6 +19,7 @@ import ( "github.com/pingcap/tidb/pkg/parser/ast" "github.com/stretchr/testify/require" + pd "github.com/tikv/pd/client/http" ) func TestApplyAttributesSpec(t *testing.T) { @@ -74,13 +75,13 @@ func TestReset(t *testing.T) { require.Equal(t, "t1", rule.Labels[2].Value) require.Equal(t, rule.Index, 2) - r := rule.Data[0].(map[string]string) + r := rule.Data.([]interface{})[0].(map[string]string) require.Equal(t, "7480000000000000ff0100000000000000f8", r["start_key"]) require.Equal(t, "7480000000000000ff0200000000000000f8", r["end_key"]) - r = rule.Data[1].(map[string]string) + r = rule.Data.([]interface{})[1].(map[string]string) require.Equal(t, "7480000000000000ff0200000000000000f8", r["start_key"]) require.Equal(t, "7480000000000000ff0300000000000000f8", r["end_key"]) - r = rule.Data[2].(map[string]string) + r = rule.Data.([]interface{})[2].(map[string]string) require.Equal(t, "7480000000000000ff0300000000000000f8", r["start_key"]) require.Equal(t, "7480000000000000ff0400000000000000f8", r["end_key"]) @@ -96,14 +97,14 @@ func TestReset(t *testing.T) { require.Equal(t, "p2", rule.Labels[3].Value) require.Equal(t, rule.Index, 3) - r = r2.Data[0].(map[string]string) + r = r2.Data.([]interface{})[0].(map[string]string) require.Equal(t, "7480000000000000ff0200000000000000f8", r["start_key"]) require.Equal(t, "7480000000000000ff0300000000000000f8", r["end_key"]) // default case spec = &ast.AttributesSpec{Default: true} rule, expected := NewRule(), NewRule() - expected.ID, expected.Labels = "schema/db3/t3/p3", []Label{} + expected.ID, expected.Labels = "schema/db3/t3/p3", []pd.RegionLabel{} require.NoError(t, rule.ApplyAttributesSpec(spec)) r3 := rule.Reset("db3", "t3", "p3", 3) require.Equal(t, r3, expected) diff --git a/pkg/ddl/main_test.go b/pkg/ddl/main_test.go index a763a5dff4ff1..405ea5594706a 100644 --- a/pkg/ddl/main_test.go +++ b/pkg/ddl/main_test.go @@ -54,7 +54,7 @@ func TestMain(m *testing.M) { conf.Experimental.AllowsExpressionIndex = true }) - _, err := infosync.GlobalInfoSyncerInit(context.Background(), "t", func() uint64 { return 1 }, nil, nil, nil, keyspace.CodecV1, true) + _, err := infosync.GlobalInfoSyncerInit(context.Background(), "t", func() uint64 { return 1 }, nil, nil, nil, nil, keyspace.CodecV1, true) if err != nil { _, _ = fmt.Fprintf(os.Stderr, "ddl: infosync.GlobalInfoSyncerInit: %v\n", err) os.Exit(1) diff --git a/pkg/ddl/multi_schema_change.go b/pkg/ddl/multi_schema_change.go index 9956446910e7a..90cc38721e971 100644 --- a/pkg/ddl/multi_schema_change.go +++ b/pkg/ddl/multi_schema_change.go @@ -26,7 +26,8 @@ import ( ) func (d *ddl) MultiSchemaChange(ctx sessionctx.Context, ti ast.Ident) error { - if len(ctx.GetSessionVars().StmtCtx.MultiSchemaInfo.SubJobs) == 0 { + subJobs := ctx.GetSessionVars().StmtCtx.MultiSchemaInfo.SubJobs + if len(subJobs) == 0 { return nil } schema, t, err := d.getSchemaAndTableByIdent(ctx, ti) @@ -43,8 +44,17 @@ func (d *ddl) MultiSchemaChange(ctx sessionctx.Context, ti ast.Ident) error { BinlogInfo: &model.HistoryInfo{}, Args: nil, MultiSchemaInfo: ctx.GetSessionVars().StmtCtx.MultiSchemaInfo, - ReorgMeta: NewDDLReorgMeta(ctx), + ReorgMeta: nil, } + if containsDistTaskSubJob(subJobs) { + job.ReorgMeta, err = newReorgMetaFromVariables(d, job, ctx) + if err != nil { + return err + } + } else { + job.ReorgMeta = NewDDLReorgMeta(ctx) + } + err = checkMultiSchemaInfo(ctx.GetSessionVars().StmtCtx.MultiSchemaInfo, t) if err != nil { return errors.Trace(err) @@ -55,6 +65,16 @@ func (d *ddl) MultiSchemaChange(ctx sessionctx.Context, ti ast.Ident) error { return d.callHookOnChanged(job, err) } +func containsDistTaskSubJob(subJobs []*model.SubJob) bool { + for _, sub := range subJobs { + if sub.Type == model.ActionAddIndex || + sub.Type == model.ActionAddPrimaryKey { + return true + } + } + return false +} + func onMultiSchemaChange(w *worker, d *ddlCtx, t *meta.Meta, job *model.Job) (ver int64, err error) { if job.MultiSchemaInfo.Revertible { // Handle the rolling back job. diff --git a/pkg/ddl/multi_schema_change_test.go b/pkg/ddl/multi_schema_change_test.go index 0e6f7bf3d9eab..ea8efac95a0df 100644 --- a/pkg/ddl/multi_schema_change_test.go +++ b/pkg/ddl/multi_schema_change_test.go @@ -648,6 +648,7 @@ func TestMultiSchemaChangeAdminShowDDLJobs(t *testing.T) { tk := testkit.NewTestKit(t, store) tk.MustExec("use test") + tk.MustExec("set global tidb_ddl_enable_fast_reorg = 1;") originHook := dom.DDL().GetHook() hook := &callback.TestDDLCallback{Do: dom} hook.OnJobRunBeforeExported = func(job *model.Job) { @@ -656,16 +657,16 @@ func TestMultiSchemaChangeAdminShowDDLJobs(t *testing.T) { newTk := testkit.NewTestKit(t, store) rows := newTk.MustQuery("admin show ddl jobs 1").Rows() // 1 history job and 1 running job with 1 subjobs - assert.Equal(t, len(rows), 3) - assert.Equal(t, rows[1][1], "test") - assert.Equal(t, rows[1][2], "t") - assert.Equal(t, rows[1][3], "add index /* subjob */ /* txn-merge */") - assert.Equal(t, rows[1][4], "delete only") - assert.Equal(t, rows[1][len(rows[1])-1], "running") + 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, "delete only", rows[1][4]) + assert.Equal(t, "running", rows[1][len(rows[1])-1]) 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) - assert.Equal(t, rows[2][3], "create table") + assert.Equal(t, "create table", rows[2][3]) } } diff --git a/pkg/ddl/options.go b/pkg/ddl/options.go index df458747bb10c..6e30ce8e3a260 100644 --- a/pkg/ddl/options.go +++ b/pkg/ddl/options.go @@ -19,6 +19,7 @@ import ( "github.com/pingcap/tidb/pkg/infoschema" "github.com/pingcap/tidb/pkg/kv" + "github.com/pingcap/tidb/pkg/meta/autoid" clientv3 "go.etcd.io/etcd/client/v3" ) @@ -27,11 +28,12 @@ type Option func(*Options) // Options represents all the options of the DDL module needs type Options struct { - EtcdCli *clientv3.Client - Store kv.Storage - InfoCache *infoschema.InfoCache - Hook Callback - Lease time.Duration + EtcdCli *clientv3.Client + Store kv.Storage + AutoIDClient *autoid.ClientDiscover + InfoCache *infoschema.InfoCache + Hook Callback + Lease time.Duration } // WithEtcdClient specifies the `clientv3.Client` of DDL used to request the etcd service @@ -55,6 +57,13 @@ func WithInfoCache(ic *infoschema.InfoCache) Option { } } +// WithAutoIDClient specifies the autoid client used by the autoid service for those AUTO_ID_CACHE=1 tables. +func WithAutoIDClient(cli *autoid.ClientDiscover) Option { + return func(options *Options) { + options.AutoIDClient = cli + } +} + // WithHook specifies the `Callback` of DDL used to notify the outer module when events are triggered func WithHook(callback Callback) Option { return func(options *Options) { diff --git a/pkg/ddl/partition.go b/pkg/ddl/partition.go index 970c3c36e815f..bb3c4d932a6a3 100644 --- a/pkg/ddl/partition.go +++ b/pkg/ddl/partition.go @@ -31,7 +31,6 @@ import ( sess "github.com/pingcap/tidb/pkg/ddl/internal/session" "github.com/pingcap/tidb/pkg/ddl/label" "github.com/pingcap/tidb/pkg/ddl/placement" - "github.com/pingcap/tidb/pkg/ddl/util" "github.com/pingcap/tidb/pkg/domain/infosync" "github.com/pingcap/tidb/pkg/expression" "github.com/pingcap/tidb/pkg/infoschema" @@ -47,6 +46,7 @@ import ( "github.com/pingcap/tidb/pkg/parser/terror" "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/variable" + statsutil "github.com/pingcap/tidb/pkg/statistics/handle/util" "github.com/pingcap/tidb/pkg/table" "github.com/pingcap/tidb/pkg/table/tables" "github.com/pingcap/tidb/pkg/tablecodec" @@ -227,7 +227,11 @@ func (w *worker) onAddTablePartition(d *ddlCtx, t *meta.Meta, job *model.Job) (v // Finish this job. job.FinishTableJob(model.JobStateDone, model.StatePublic, ver, tblInfo) - asyncNotifyEvent(d, &util.Event{Tp: model.ActionAddTablePartition, TableInfo: tblInfo, PartInfo: partInfo}) + addPartitionEvent := statsutil.NewAddPartitionEvent( + tblInfo, + partInfo, + ) + asyncNotifyEvent(d, addPartitionEvent) default: err = dbterror.ErrInvalidDDLState.GenWithStackByArgs("partition", job.SchemaState) } @@ -768,12 +772,20 @@ func getPartitionIntervalFromTable(ctx sessionctx.Context, tbInfo *model.TableIn } // comparePartitionAstAndModel compares a generated *ast.PartitionOptions and a *model.PartitionInfo -func comparePartitionAstAndModel(ctx sessionctx.Context, pAst *ast.PartitionOptions, pModel *model.PartitionInfo) error { +func comparePartitionAstAndModel(ctx sessionctx.Context, pAst *ast.PartitionOptions, pModel *model.PartitionInfo, partCol *model.ColumnInfo) error { a := pAst.Definitions m := pModel.Definitions if len(pAst.Definitions) != len(pModel.Definitions) { return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs("INTERVAL partitioning: number of partitions generated != partition defined (%d != %d)", len(a), len(m)) } + + evalFn := func(expr ast.ExprNode) (types.Datum, error) { + val, err := expression.EvalAstExpr(ctx, ast.NewValueExpr(expr, "", "")) + if err != nil || partCol == nil { + return val, err + } + return val.ConvertTo(ctx.GetSessionVars().StmtCtx.TypeCtx(), &partCol.FieldType) + } for i := range pAst.Definitions { // Allow options to differ! (like Placement Rules) // Allow names to differ! @@ -796,16 +808,19 @@ func comparePartitionAstAndModel(ctx sessionctx.Context, pAst *ast.PartitionOpti if len(lessThan) > 1 && lessThan[:1] == "'" && lessThan[len(lessThan)-1:] == "'" { lessThan = driver.UnwrapFromSingleQuotes(lessThan) } - cmpExpr := &ast.BinaryOperationExpr{ - Op: opcode.EQ, - L: ast.NewValueExpr(lessThan, "", ""), - R: generatedExpr, + lessThanVal, err := evalFn(ast.NewValueExpr(lessThan, "", "")) + if err != nil { + return err } - cmp, err := expression.EvalAstExpr(ctx, cmpExpr) + generatedExprVal, err := evalFn(generatedExpr) if err != nil { return err } - if cmp.GetInt64() != 1 { + cmp, err := lessThanVal.Compare(ctx.GetSessionVars().StmtCtx.TypeCtx(), &generatedExprVal, collate.GetBinaryCollator()) + if err != nil { + return err + } + if cmp != 0 { return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs(fmt.Sprintf("INTERVAL partitioning: LESS THAN for partition %s differs between generated and defined", m[i].Name.O)) } } @@ -980,7 +995,7 @@ func generatePartitionDefinitionsFromInterval(ctx sessionctx.Context, partOption // Seems valid, so keep the defined so that the user defined names are kept etc. partOptions.Definitions = definedPartDefs } else if len(tbInfo.Partition.Definitions) > 0 { - err := comparePartitionAstAndModel(ctx, partOptions, tbInfo.Partition) + err := comparePartitionAstAndModel(ctx, partOptions, tbInfo.Partition, partCol) if err != nil { return err } @@ -1054,6 +1069,12 @@ func GeneratePartDefsFromInterval(ctx sessionctx.Context, tp ast.AlterTableType, if err != nil { return err } + if partCol != nil { + lastVal, err = lastVal.ConvertTo(ctx.GetSessionVars().StmtCtx.TypeCtx(), &partCol.FieldType) + if err != nil { + return err + } + } var partDefs []*ast.PartitionDefinition if len(partitionOptions.Definitions) != 0 { partDefs = partitionOptions.Definitions @@ -1097,6 +1118,12 @@ func GeneratePartDefsFromInterval(ctx sessionctx.Context, tp ast.AlterTableType, if err != nil { return err } + if partCol != nil { + currVal, err = currVal.ConvertTo(ctx.GetSessionVars().StmtCtx.TypeCtx(), &partCol.FieldType) + if err != nil { + return err + } + } cmp, err := currVal.Compare(ctx.GetSessionVars().StmtCtx.TypeCtx(), &lastVal, collate.GetBinaryCollator()) if err != nil { return err @@ -1687,7 +1714,7 @@ func formatListPartitionValue(ctx sessionctx.Context, tblInfo *model.TableInfo) if err != nil { return nil, errors.Trace(err) } - eval, err := expr.Eval(chunk.Row{}) + eval, err := expr.Eval(ctx, chunk.Row{}) if err != nil { return nil, errors.Trace(err) } @@ -1883,14 +1910,14 @@ func getTableInfoWithOriginalPartitions(t *model.TableInfo, oldIDs []int64, newI return nt } -func dropLabelRules(_ *ddlCtx, schemaName, tableName string, partNames []string) error { +func dropLabelRules(d *ddlCtx, schemaName, tableName string, partNames []string) error { deleteRules := make([]string, 0, len(partNames)) for _, partName := range partNames { deleteRules = append(deleteRules, fmt.Sprintf(label.PartitionIDFormat, label.IDPrefix, schemaName, tableName, partName)) } // delete batch rules patch := label.NewRulePatch([]*label.Rule{}, deleteRules) - return infosync.UpdateLabelRules(context.TODO(), patch) + return infosync.UpdateLabelRules(d.ctx, patch) } // onDropTablePartition deletes old partition meta. @@ -2073,7 +2100,11 @@ func (w *worker) onDropTablePartition(d *ddlCtx, t *meta.Meta, job *model.Job) ( } job.SchemaState = model.StateNone job.FinishTableJob(model.JobStateDone, model.StateNone, ver, tblInfo) - asyncNotifyEvent(d, &util.Event{Tp: model.ActionDropTablePartition, TableInfo: tblInfo, PartInfo: &model.PartitionInfo{Definitions: droppedDefs}}) + dropPartitionEvent := statsutil.NewDropPartitionEvent( + tblInfo, + &model.PartitionInfo{Definitions: droppedDefs}, + ) + asyncNotifyEvent(d, dropPartitionEvent) // A background job will be created to delete old partition data. job.Args = []interface{}{physicalTableIDs} default: @@ -2160,7 +2191,12 @@ func (w *worker) onTruncateTablePartition(d *ddlCtx, t *meta.Meta, job *model.Jo // Finish this job. job.FinishTableJob(model.JobStateDone, model.StateNone, ver, tblInfo) - asyncNotifyEvent(d, &util.Event{Tp: model.ActionTruncateTablePartition, TableInfo: tblInfo, PartInfo: &model.PartitionInfo{Definitions: newPartitions}}) + truncatePartitionEvent := statsutil.NewTruncatePartitionEvent( + tblInfo, + &model.PartitionInfo{Definitions: newPartitions}, + &model.PartitionInfo{Definitions: oldPartitions}, + ) + asyncNotifyEvent(d, truncatePartitionEvent) // A background job will be created to delete old partition data. job.Args = []interface{}{oldIDs} @@ -2293,7 +2329,12 @@ func (w *worker) onTruncateTablePartition(d *ddlCtx, t *meta.Meta, job *model.Jo } // Finish this job. job.FinishTableJob(model.JobStateDone, model.StateNone, ver, tblInfo) - asyncNotifyEvent(d, &util.Event{Tp: model.ActionTruncateTablePartition, TableInfo: tblInfo, PartInfo: &model.PartitionInfo{Definitions: newPartitions}}) + truncatePartitionEvent := statsutil.NewTruncatePartitionEvent( + tblInfo, + &model.PartitionInfo{Definitions: newPartitions}, + &model.PartitionInfo{Definitions: oldPartitions}, + ) + asyncNotifyEvent(d, truncatePartitionEvent) // A background job will be created to delete old partition data. job.Args = []interface{}{oldIDs} default: @@ -2945,6 +2986,7 @@ func (w *worker) onReorganizePartition(d *ddlCtx, t *meta.Meta, job *model.Job) physicalTableIDs := getPartitionIDsFromDefinitions(tblInfo.Partition.DroppingDefinitions) newIDs := getPartitionIDsFromDefinitions(partInfo.Definitions) statisticsPartInfo := &model.PartitionInfo{Definitions: tblInfo.Partition.AddingDefinitions} + droppedPartInfo := &model.PartitionInfo{Definitions: tblInfo.Partition.DroppingDefinitions} tblInfo.Partition.DroppingDefinitions = nil tblInfo.Partition.AddingDefinitions = nil @@ -3016,7 +3058,13 @@ func (w *worker) onReorganizePartition(d *ddlCtx, t *meta.Meta, job *model.Job) // Should it actually be synchronous? // Include the old table ID, if changed, which may contain global statistics, // so it can be reused for the new (non)partitioned table. - asyncNotifyEvent(d, &util.Event{Tp: job.Type, TableInfo: tblInfo, PartInfo: statisticsPartInfo}) + event, err := newStatsDDLEventForJob( + job.Type, tblInfo, statisticsPartInfo, droppedPartInfo, + ) + if err != nil { + return ver, errors.Trace(err) + } + asyncNotifyEvent(d, event) // A background job will be created to delete old partition data. job.Args = []interface{}{physicalTableIDs} @@ -3027,6 +3075,38 @@ func (w *worker) onReorganizePartition(d *ddlCtx, t *meta.Meta, job *model.Job) return ver, errors.Trace(err) } +// newStatsDDLEventForJob creates a statsutil.DDLEvent for a job. +// It is used for reorganize partition, add partitioning and remove partitioning. +func newStatsDDLEventForJob( + jobType model.ActionType, + tblInfo *model.TableInfo, + addedPartInfo *model.PartitionInfo, + droppedPartInfo *model.PartitionInfo, +) (*statsutil.DDLEvent, error) { + var event *statsutil.DDLEvent + switch jobType { + case model.ActionReorganizePartition: + event = statsutil.NewReorganizePartitionEvent( + tblInfo, + addedPartInfo, + droppedPartInfo, + ) + case model.ActionAlterTablePartitioning: + event = statsutil.NewAddPartitioningEvent( + tblInfo, + addedPartInfo, + ) + case model.ActionRemovePartitioning: + event = statsutil.NewRemovePartitioningEvent( + tblInfo, + addedPartInfo, + ) + default: + return nil, errors.Errorf("unknown job type: %s", jobType.String()) + } + return event, nil +} + func doPartitionReorgWork(w *worker, d *ddlCtx, t *meta.Meta, job *model.Job, tbl table.Table, physTblIDs []int64) (done bool, ver int64, err error) { job.ReorgMeta.ReorgTp = model.ReorgTypeTxn sctx, err1 := w.sessPool.Get() diff --git a/pkg/ddl/placement/BUILD.bazel b/pkg/ddl/placement/BUILD.bazel index 894d93ab0a3c8..32914e98ab5a1 100644 --- a/pkg/ddl/placement/BUILD.bazel +++ b/pkg/ddl/placement/BUILD.bazel @@ -17,6 +17,7 @@ go_library( "//pkg/tablecodec", "//pkg/util/codec", "@com_github_pingcap_failpoint//:failpoint", + "@com_github_tikv_pd_client//http", "@in_gopkg_yaml_v2//:yaml_v2", ], ) @@ -45,5 +46,6 @@ go_test( "//pkg/util/codec", "@com_github_pingcap_failpoint//:failpoint", "@com_github_stretchr_testify//require", + "@com_github_tikv_pd_client//http", ], ) diff --git a/pkg/ddl/placement/bundle.go b/pkg/ddl/placement/bundle.go index e9331571c6d2c..891365249b37e 100644 --- a/pkg/ddl/placement/bundle.go +++ b/pkg/ddl/placement/bundle.go @@ -29,21 +29,13 @@ import ( "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/tablecodec" "github.com/pingcap/tidb/pkg/util/codec" + pd "github.com/tikv/pd/client/http" "gopkg.in/yaml.v2" ) -// Refer to https://github.com/tikv/pd/issues/2701 . -// IMO, it is indeed not bad to have a copy of definition. -// After all, placement rules are communicated using an HTTP API. Loose -// coupling is a good feature. - // Bundle is a group of all rules and configurations. It is used to support rule cache. -type Bundle struct { - ID string `json:"group_id"` - Index int `json:"group_index"` - Override bool `json:"group_override"` - Rules []*Rule `json:"rules"` -} +// Alias `pd.GroupBundle` is to wrap more methods. +type Bundle pd.GroupBundle // NewBundle will create a bundle with the provided ID. // Note that you should never pass negative id. @@ -70,7 +62,7 @@ func NewBundleFromConstraintsOptions(options *model.PlacementSettings) (*Bundle, explicitFollowerCount := options.Followers explicitLearnerCount := options.Learners - rules := []*Rule{} + rules := []*pd.Rule{} commonConstraints, err := NewConstraintsFromYaml([]byte(constraints)) if err != nil { // If it's not in array format, attempt to parse it as a dictionary for more detailed definitions. @@ -78,7 +70,7 @@ func NewBundleFromConstraintsOptions(options *model.PlacementSettings) (*Bundle, // replicas that should act as voters. // For example: CONSTRAINTS='{ "+region=us-east-1":2, "+region=us-east-2": 2, "+region=us-west-1": 1}' normalReplicasRules, err := NewRuleBuilder(). - SetRole(Voter). + SetRole(pd.Voter). SetConstraintStr(constraints). BuildRulesWithDictConstraintsOnly() if err != nil { @@ -92,7 +84,7 @@ func NewBundleFromConstraintsOptions(options *model.PlacementSettings) (*Bundle, return nil, fmt.Errorf("%w: 'LeaderConstraints' should be [constraint1, ...] or any yaml compatible array representation", err) } for _, cnst := range commonConstraints { - if err := leaderConstraints.Add(cnst); err != nil { + if err := AddConstraint(&leaderConstraints, cnst); err != nil { return nil, fmt.Errorf("%w: LeaderConstraints conflicts with Constraints", err) } } @@ -101,7 +93,7 @@ func NewBundleFromConstraintsOptions(options *model.PlacementSettings) (*Bundle, followerReplicas = explicitFollowerCount } if !needCreateDefault { - if len(leaderConstraints) == 0 { + if len(leaderConst) == 0 { leaderReplicas = 0 } if len(followerConstraints) == 0 { @@ -115,7 +107,7 @@ func NewBundleFromConstraintsOptions(options *model.PlacementSettings) (*Bundle, // create leader rule. // if no constraints, we need create default leader rule. if leaderReplicas > 0 { - leaderRule := NewRule(Leader, leaderReplicas, leaderConstraints) + leaderRule := NewRule(pd.Leader, leaderReplicas, leaderConstraints) rules = append(rules, leaderRule) } @@ -123,7 +115,7 @@ func NewBundleFromConstraintsOptions(options *model.PlacementSettings) (*Bundle, // if no constraints, we need create default follower rules. if followerReplicas > 0 { builder := NewRuleBuilder(). - SetRole(Voter). + SetRole(pd.Voter). SetReplicasNum(followerReplicas). SetSkipCheckReplicasConsistent(needCreateDefault && (explicitFollowerCount == 0)). SetConstraintStr(followerConstraints) @@ -133,7 +125,7 @@ func NewBundleFromConstraintsOptions(options *model.PlacementSettings) (*Bundle, } for _, followerRule := range followerRules { for _, cnst := range commonConstraints { - if err := followerRule.Constraints.Add(cnst); err != nil { + if err := AddConstraint(&followerRule.LabelConstraints, cnst); err != nil { return nil, fmt.Errorf("%w: FollowerConstraints conflicts with Constraints", err) } } @@ -143,7 +135,7 @@ func NewBundleFromConstraintsOptions(options *model.PlacementSettings) (*Bundle, // create learner rules. builder := NewRuleBuilder(). - SetRole(Learner). + SetRole(pd.Learner). SetReplicasNum(explicitLearnerCount). SetConstraintStr(learnerConstraints) learnerRules, err := builder.BuildRules() @@ -152,7 +144,7 @@ func NewBundleFromConstraintsOptions(options *model.PlacementSettings) (*Bundle, } for _, rule := range learnerRules { for _, cnst := range commonConstraints { - if err := rule.Constraints.Add(cnst); err != nil { + if err := AddConstraint(&rule.LabelConstraints, cnst); err != nil { return nil, fmt.Errorf("%w: LearnerConstraints conflicts with Constraints", err) } } @@ -194,7 +186,7 @@ func NewBundleFromSugarOptions(options *model.PlacementSettings) (*Bundle, error } schedule := options.Schedule - var rules []*Rule + var rules []*pd.Rule locationLabels, err := newLocationLabelsFromSurvivalPreferences(options.SurvivalPreferences) if err != nil { @@ -203,7 +195,7 @@ func NewBundleFromSugarOptions(options *model.PlacementSettings) (*Bundle, error // in case empty primaryRegion and regions, just return an empty bundle if primaryRegion == "" && len(regions) == 0 { - rules = append(rules, NewRule(Voter, followers+1, NewConstraintsDirect())) + rules = append(rules, NewRule(pd.Voter, followers+1, NewConstraintsDirect())) for _, rule := range rules { rule.LocationLabels = locationLabels } @@ -230,17 +222,17 @@ func NewBundleFromSugarOptions(options *model.PlacementSettings) (*Bundle, error return nil, fmt.Errorf("%w: unsupported schedule %s", ErrInvalidPlacementOptions, schedule) } - rules = append(rules, NewRule(Leader, 1, NewConstraintsDirect(NewConstraintDirect("region", In, primaryRegion)))) + rules = append(rules, NewRule(pd.Leader, 1, NewConstraintsDirect(NewConstraintDirect("region", pd.In, primaryRegion)))) if primaryCount > 1 { - rules = append(rules, NewRule(Voter, primaryCount-1, NewConstraintsDirect(NewConstraintDirect("region", In, primaryRegion)))) + rules = append(rules, NewRule(pd.Voter, primaryCount-1, NewConstraintsDirect(NewConstraintDirect("region", pd.In, primaryRegion)))) } if cnt := followers + 1 - primaryCount; cnt > 0 { // delete primary from regions regions = regions[:primaryIndex+copy(regions[primaryIndex:], regions[primaryIndex+1:])] if len(regions) > 0 { - rules = append(rules, NewRule(Voter, cnt, NewConstraintsDirect(NewConstraintDirect("region", In, regions...)))) + rules = append(rules, NewRule(pd.Voter, cnt, NewConstraintsDirect(NewConstraintDirect("region", pd.In, regions...)))) } else { - rules = append(rules, NewRule(Voter, cnt, NewConstraintsDirect())) + rules = append(rules, NewRule(pd.Voter, cnt, NewConstraintsDirect())) } } @@ -332,8 +324,8 @@ func (b *Bundle) Tidy() error { // refer to tidb#22065. // add -engine=tiflash to every rule to avoid schedules to tiflash instances. // placement rules in SQL is not compatible with `set tiflash replica` yet - err := rule.Constraints.Add(Constraint{ - Op: NotIn, + err := AddConstraint(&rule.LabelConstraints, pd.LabelConstraint{ + Op: pd.NotIn, Key: EngineLabelKey, Values: []string{EngineLabelTiFlash}, }) @@ -348,10 +340,10 @@ func (b *Bundle) Tidy() error { groups := make(map[string]*constraintsGroup) finalRules := tempRules[:0] for _, rule := range tempRules { - key := rule.Constraints.FingerPrint() + key := ConstraintsFingerPrint(&rule.LabelConstraints) existing, ok := groups[key] if !ok { - groups[key] = &constraintsGroup{rules: []*Rule{rule}} + groups[key] = &constraintsGroup{rules: []*pd.Rule{rule}} continue } existing.rules = append(existing.rules, rule) @@ -375,7 +367,7 @@ func (b *Bundle) Tidy() error { // constraintsGroup is a group of rules with the same constraints. type constraintsGroup struct { - rules []*Rule + rules []*pd.Rule // canBecameLeader means the group has leader/voter role, // it's valid if it has leader. canBecameLeader bool @@ -411,16 +403,16 @@ func transformableLeaderConstraint(groups map[string]*constraintsGroup) error { // MergeRulesByRole merges the rules with the same role. func (c *constraintsGroup) MergeRulesByRole() { // Create a map to store rules by role - rulesByRole := make(map[PeerRoleType][]*Rule) + rulesByRole := make(map[pd.PeerRoleType][]*pd.Rule) // Iterate through each rule for _, rule := range c.rules { // Add the rule to the map based on its role rulesByRole[rule.Role] = append(rulesByRole[rule.Role], rule) - if rule.Role == Leader || rule.Role == Voter { + if rule.Role == pd.Leader || rule.Role == pd.Voter { c.canBecameLeader = true } - if rule.Role == Leader { + if rule.Role == pd.Leader { c.isLeaderGroup = true } } @@ -449,11 +441,11 @@ func (c *constraintsGroup) MergeTransformableRoles() { if len(c.rules) == 0 || len(c.rules) == 1 { return } - var mergedRule *Rule - newRules := make([]*Rule, 0, len(c.rules)) + var mergedRule *pd.Rule + newRules := make([]*pd.Rule, 0, len(c.rules)) for _, rule := range c.rules { // Learner is not transformable, it should be promote by PD. - if rule.Role == Learner { + if rule.Role == pd.Learner { newRules = append(newRules, rule) continue } @@ -467,7 +459,7 @@ func (c *constraintsGroup) MergeTransformableRoles() { } } if mergedRule != nil { - mergedRule.Role = Voter + mergedRule.Role = pd.Voter newRules = append(newRules, mergedRule) } c.rules = newRules @@ -491,7 +483,7 @@ func (b *Bundle) RebuildForRange(rangeName string, policyName string) *Bundle { } b.Override = true - newRules := make([]*Rule, 0, len(rule)) + newRules := make([]*pd.Rule, 0, len(rule)) for i, r := range b.Rules { cp := r.Clone() cp.ID = fmt.Sprintf("%s_rule_%d", strings.ToLower(policyName), i) @@ -508,7 +500,7 @@ func (b *Bundle) RebuildForRange(rangeName string, policyName string) *Bundle { // Reset resets the bundle ID and keyrange of all rules. func (b *Bundle) Reset(ruleIndex int, newIDs []int64) *Bundle { // eliminate the redundant rules. - var basicRules []*Rule + var basicRules []*pd.Rule if len(b.Rules) != 0 { // Make priority for rules with RuleIndexTable cause of duplication rules existence with RuleIndexPartition. // If RuleIndexTable doesn't exist, bundle itself is a independent series of rules for a partition. @@ -526,7 +518,7 @@ func (b *Bundle) Reset(ruleIndex int, newIDs []int64) *Bundle { b.ID = GroupID(newIDs[0]) b.Index = ruleIndex b.Override = true - newRules := make([]*Rule, 0, len(basicRules)*len(newIDs)) + newRules := make([]*pd.Rule, 0, len(basicRules)*len(newIDs)) for i, newID := range newIDs { // rule.id should be distinguished with each other, otherwise it will be de-duplicated in pd http api. var ruleID string @@ -566,7 +558,7 @@ func (b *Bundle) Clone() *Bundle { newBundle := &Bundle{} *newBundle = *b if len(b.Rules) > 0 { - newBundle.Rules = make([]*Rule, 0, len(b.Rules)) + newBundle.Rules = make([]*pd.Rule, 0, len(b.Rules)) for i := range b.Rules { newBundle.Rules = append(newBundle.Rules, b.Rules[i].Clone()) } @@ -595,10 +587,10 @@ func (b *Bundle) ObjectID() (int64, error) { return id, nil } -func isValidLeaderRule(rule *Rule, dcLabelKey string) bool { - if rule.Role == Leader && rule.Count == 1 { - for _, con := range rule.Constraints { - if con.Op == In && con.Key == dcLabelKey && len(con.Values) == 1 { +func isValidLeaderRule(rule *pd.Rule, dcLabelKey string) bool { + if rule.Role == pd.Leader && rule.Count == 1 { + for _, con := range rule.LabelConstraints { + if con.Op == pd.In && con.Key == dcLabelKey && len(con.Values) == 1 { return true } } @@ -610,7 +602,7 @@ func isValidLeaderRule(rule *Rule, dcLabelKey string) bool { func (b *Bundle) GetLeaderDC(dcLabelKey string) (string, bool) { for _, rule := range b.Rules { if isValidLeaderRule(rule, dcLabelKey) { - return rule.Constraints[0].Values[0], true + return rule.LabelConstraints[0].Values[0], true } } return "", false diff --git a/pkg/ddl/placement/bundle_test.go b/pkg/ddl/placement/bundle_test.go index c1b7c067c774b..0f75bf50fd69f 100644 --- a/pkg/ddl/placement/bundle_test.go +++ b/pkg/ddl/placement/bundle_test.go @@ -25,6 +25,7 @@ import ( "github.com/pingcap/tidb/pkg/tablecodec" "github.com/pingcap/tidb/pkg/util/codec" "github.com/stretchr/testify/require" + pd "github.com/tikv/pd/client/http" ) func TestEmpty(t *testing.T) { @@ -37,7 +38,7 @@ func TestEmpty(t *testing.T) { bundle = &Bundle{ID: GroupID(1), Override: true} require.False(t, bundle.IsEmpty()) - bundle = &Bundle{ID: GroupID(1), Rules: []*Rule{{ID: "434"}}} + bundle = &Bundle{ID: GroupID(1), Rules: []*pd.Rule{{ID: "434"}}} require.False(t, bundle.IsEmpty()) bundle = &Bundle{ID: GroupID(1), Index: 1, Override: true} @@ -45,14 +46,14 @@ func TestEmpty(t *testing.T) { } func TestCloneBundle(t *testing.T) { - bundle := &Bundle{ID: GroupID(1), Rules: []*Rule{{ID: "434"}}} + bundle := &Bundle{ID: GroupID(1), Rules: []*pd.Rule{{ID: "434"}}} newBundle := bundle.Clone() newBundle.ID = GroupID(2) - newBundle.Rules[0] = &Rule{ID: "121"} + newBundle.Rules[0] = &pd.Rule{ID: "121"} - require.Equal(t, &Bundle{ID: GroupID(1), Rules: []*Rule{{ID: "434"}}}, bundle) - require.Equal(t, &Bundle{ID: GroupID(2), Rules: []*Rule{{ID: "121"}}}, newBundle) + require.Equal(t, &Bundle{ID: GroupID(1), Rules: []*pd.Rule{{ID: "434"}}}, bundle) + require.Equal(t, &Bundle{ID: GroupID(2), Rules: []*pd.Rule{{ID: "121"}}}, newBundle) } func TestObjectID(t *testing.T) { @@ -92,14 +93,14 @@ func TestGetLeaderDCByBundle(t *testing.T) { name: "only leader", bundle: &Bundle{ ID: GroupID(1), - Rules: []*Rule{ + Rules: []*pd.Rule{ { ID: "12", - Role: Leader, - Constraints: Constraints{ + Role: pd.Leader, + LabelConstraints: []pd.LabelConstraint{ { Key: "zone", - Op: In, + Op: pd.In, Values: []string{"bj"}, }, }, @@ -113,14 +114,14 @@ func TestGetLeaderDCByBundle(t *testing.T) { name: "no leader", bundle: &Bundle{ ID: GroupID(1), - Rules: []*Rule{ + Rules: []*pd.Rule{ { ID: "12", - Role: Voter, - Constraints: Constraints{ + Role: pd.Voter, + LabelConstraints: []pd.LabelConstraint{ { Key: "zone", - Op: In, + Op: pd.In, Values: []string{"bj"}, }, }, @@ -134,14 +135,14 @@ func TestGetLeaderDCByBundle(t *testing.T) { name: "voter and leader", bundle: &Bundle{ ID: GroupID(1), - Rules: []*Rule{ + Rules: []*pd.Rule{ { ID: "11", - Role: Leader, - Constraints: Constraints{ + Role: pd.Leader, + LabelConstraints: []pd.LabelConstraint{ { Key: "zone", - Op: In, + Op: pd.In, Values: []string{"sh"}, }, }, @@ -149,11 +150,11 @@ func TestGetLeaderDCByBundle(t *testing.T) { }, { ID: "12", - Role: Voter, - Constraints: Constraints{ + Role: pd.Voter, + LabelConstraints: []pd.LabelConstraint{ { Key: "zone", - Op: In, + Op: pd.In, Values: []string{"bj"}, }, }, @@ -167,14 +168,14 @@ func TestGetLeaderDCByBundle(t *testing.T) { name: "wrong label key", bundle: &Bundle{ ID: GroupID(1), - Rules: []*Rule{ + Rules: []*pd.Rule{ { ID: "11", - Role: Leader, - Constraints: Constraints{ + Role: pd.Leader, + LabelConstraints: []pd.LabelConstraint{ { Key: "fake", - Op: In, + Op: pd.In, Values: []string{"sh"}, }, }, @@ -188,14 +189,14 @@ func TestGetLeaderDCByBundle(t *testing.T) { name: "wrong operator", bundle: &Bundle{ ID: GroupID(1), - Rules: []*Rule{ + Rules: []*pd.Rule{ { ID: "11", - Role: Leader, - Constraints: Constraints{ + Role: pd.Leader, + LabelConstraints: []pd.LabelConstraint{ { Key: "zone", - Op: NotIn, + Op: pd.NotIn, Values: []string{"sh"}, }, }, @@ -209,14 +210,14 @@ func TestGetLeaderDCByBundle(t *testing.T) { name: "leader have multi values", bundle: &Bundle{ ID: GroupID(1), - Rules: []*Rule{ + Rules: []*pd.Rule{ { ID: "11", - Role: Leader, - Constraints: Constraints{ + Role: pd.Leader, + LabelConstraints: []pd.LabelConstraint{ { Key: "zone", - Op: In, + Op: pd.In, Values: []string{"sh", "bj"}, }, }, @@ -230,14 +231,14 @@ func TestGetLeaderDCByBundle(t *testing.T) { name: "irrelvant rules", bundle: &Bundle{ ID: GroupID(1), - Rules: []*Rule{ + Rules: []*pd.Rule{ { ID: "15", - Role: Leader, - Constraints: Constraints{ + Role: pd.Leader, + LabelConstraints: []pd.LabelConstraint{ { Key: EngineLabelKey, - Op: NotIn, + Op: pd.NotIn, Values: []string{EngineLabelTiFlash}, }, }, @@ -245,11 +246,11 @@ func TestGetLeaderDCByBundle(t *testing.T) { }, { ID: "14", - Role: Leader, - Constraints: Constraints{ + Role: pd.Leader, + LabelConstraints: []pd.LabelConstraint{ { Key: "disk", - Op: NotIn, + Op: pd.NotIn, Values: []string{"ssd", "hdd"}, }, }, @@ -257,11 +258,11 @@ func TestGetLeaderDCByBundle(t *testing.T) { }, { ID: "13", - Role: Leader, - Constraints: Constraints{ + Role: pd.Leader, + LabelConstraints: []pd.LabelConstraint{ { Key: "zone", - Op: In, + Op: pd.In, Values: []string{"bj"}, }, }, @@ -275,14 +276,14 @@ func TestGetLeaderDCByBundle(t *testing.T) { name: "multi leaders 1", bundle: &Bundle{ ID: GroupID(1), - Rules: []*Rule{ + Rules: []*pd.Rule{ { ID: "16", - Role: Leader, - Constraints: Constraints{ + Role: pd.Leader, + LabelConstraints: []pd.LabelConstraint{ { Key: "zone", - Op: In, + Op: pd.In, Values: []string{"sh"}, }, }, @@ -296,14 +297,14 @@ func TestGetLeaderDCByBundle(t *testing.T) { name: "multi leaders 2", bundle: &Bundle{ ID: GroupID(1), - Rules: []*Rule{ + Rules: []*pd.Rule{ { ID: "17", - Role: Leader, - Constraints: Constraints{ + Role: pd.Leader, + LabelConstraints: []pd.LabelConstraint{ { Key: "zone", - Op: In, + Op: pd.In, Values: []string{"sh"}, }, }, @@ -311,11 +312,11 @@ func TestGetLeaderDCByBundle(t *testing.T) { }, { ID: "18", - Role: Leader, - Constraints: Constraints{ + Role: pd.Leader, + LabelConstraints: []pd.LabelConstraint{ { Key: "zone", - Op: In, + Op: pd.In, Values: []string{"bj"}, }, }, @@ -342,13 +343,13 @@ func TestString(t *testing.T) { ID: GroupID(1), } - rules1, err := newRules(Voter, 3, `["+zone=sh", "+zone=sh"]`) + rules1, err := newRules(pd.Voter, 3, `["+zone=sh", "+zone=sh"]`) require.NoError(t, err) - rules2, err := newRules(Voter, 4, `["-zone=sh", "+zone=bj"]`) + rules2, err := newRules(pd.Voter, 4, `["-zone=sh", "+zone=bj"]`) require.NoError(t, err) bundle.Rules = append(rules1, rules2...) - require.Equal(t, "{\"group_id\":\"TiDB_DDL_1\",\"group_index\":0,\"group_override\":false,\"rules\":[{\"group_id\":\"\",\"id\":\"\",\"start_key\":\"\",\"end_key\":\"\",\"role\":\"voter\",\"count\":3,\"label_constraints\":[{\"key\":\"zone\",\"op\":\"in\",\"values\":[\"sh\"]}]},{\"group_id\":\"\",\"id\":\"\",\"start_key\":\"\",\"end_key\":\"\",\"role\":\"voter\",\"count\":4,\"label_constraints\":[{\"key\":\"zone\",\"op\":\"notIn\",\"values\":[\"sh\"]},{\"key\":\"zone\",\"op\":\"in\",\"values\":[\"bj\"]}]}]}", bundle.String()) + require.Equal(t, "{\"group_id\":\"TiDB_DDL_1\",\"group_index\":0,\"group_override\":false,\"rules\":[{\"group_id\":\"\",\"id\":\"\",\"start_key\":\"\",\"end_key\":\"\",\"role\":\"voter\",\"is_witness\":false,\"count\":3,\"label_constraints\":[{\"key\":\"zone\",\"op\":\"in\",\"values\":[\"sh\"]}]},{\"group_id\":\"\",\"id\":\"\",\"start_key\":\"\",\"end_key\":\"\",\"role\":\"voter\",\"is_witness\":false,\"count\":4,\"label_constraints\":[{\"key\":\"zone\",\"op\":\"notIn\",\"values\":[\"sh\"]},{\"key\":\"zone\",\"op\":\"in\",\"values\":[\"bj\"]}]}]}", bundle.String()) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/ddl/placement/MockMarshalFailure", `return(true)`)) defer func() { @@ -372,7 +373,7 @@ func TestNewBundleFromOptions(t *testing.T) { type TestCase struct { name string input *model.PlacementSettings - output []*Rule + output []*pd.Rule err error } var tests []TestCase @@ -380,8 +381,8 @@ func TestNewBundleFromOptions(t *testing.T) { tests = append(tests, TestCase{ name: "empty 1", input: &model.PlacementSettings{}, - output: []*Rule{ - NewRule(Voter, 3, NewConstraintsDirect()), + output: []*pd.Rule{ + NewRule(pd.Voter, 3, NewConstraintsDirect()), }, }) @@ -405,12 +406,12 @@ func TestNewBundleFromOptions(t *testing.T) { PrimaryRegion: "us", Regions: "us", }, - output: []*Rule{ - NewRule(Leader, 1, NewConstraintsDirect( - NewConstraintDirect("region", In, "us"), + output: []*pd.Rule{ + NewRule(pd.Leader, 1, NewConstraintsDirect( + NewConstraintDirect("region", pd.In, "us"), )), - NewRule(Voter, 2, NewConstraintsDirect( - NewConstraintDirect("region", In, "us"), + NewRule(pd.Voter, 2, NewConstraintsDirect( + NewConstraintDirect("region", pd.In, "us"), )), }, }) @@ -422,14 +423,14 @@ func TestNewBundleFromOptions(t *testing.T) { Regions: "us", Schedule: "majority_in_primary", }, - output: []*Rule{ - NewRule(Leader, 1, NewConstraintsDirect( - NewConstraintDirect("region", In, "us"), + output: []*pd.Rule{ + NewRule(pd.Leader, 1, NewConstraintsDirect( + NewConstraintDirect("region", pd.In, "us"), )), - NewRule(Voter, 1, NewConstraintsDirect( - NewConstraintDirect("region", In, "us"), + NewRule(pd.Voter, 1, NewConstraintsDirect( + NewConstraintDirect("region", pd.In, "us"), )), - NewRule(Voter, 1, NewConstraintsDirect()), + NewRule(pd.Voter, 1, NewConstraintsDirect()), }, }) @@ -440,12 +441,12 @@ func TestNewBundleFromOptions(t *testing.T) { Regions: "bj,sh,us", Followers: 1, }, - output: []*Rule{ - NewRule(Leader, 1, NewConstraintsDirect( - NewConstraintDirect("region", In, "us"), + output: []*pd.Rule{ + NewRule(pd.Leader, 1, NewConstraintsDirect( + NewConstraintDirect("region", pd.In, "us"), )), - NewRule(Voter, 1, NewConstraintsDirect( - NewConstraintDirect("region", In, "bj", "sh"), + NewRule(pd.Voter, 1, NewConstraintsDirect( + NewConstraintDirect("region", pd.In, "bj", "sh"), )), }, }) @@ -456,8 +457,8 @@ func TestNewBundleFromOptions(t *testing.T) { Followers: 2, Schedule: "even", }, - output: []*Rule{ - NewRule(Voter, 3, NewConstraintsDirect()), + output: []*pd.Rule{ + NewRule(pd.Voter, 3, NewConstraintsDirect()), }, }) @@ -467,8 +468,8 @@ func TestNewBundleFromOptions(t *testing.T) { Followers: 2, Schedule: "majority_in_primary", }, - output: []*Rule{ - NewRule(Voter, 3, NewConstraintsDirect()), + output: []*pd.Rule{ + NewRule(pd.Voter, 3, NewConstraintsDirect()), }, }) @@ -516,15 +517,15 @@ func TestNewBundleFromOptions(t *testing.T) { Regions: "sh,us", Followers: 5, }, - output: []*Rule{ - NewRule(Leader, 1, NewConstraintsDirect( - NewConstraintDirect("region", In, "us"), + output: []*pd.Rule{ + NewRule(pd.Leader, 1, NewConstraintsDirect( + NewConstraintDirect("region", pd.In, "us"), )), - NewRule(Voter, 2, NewConstraintsDirect( - NewConstraintDirect("region", In, "us"), + NewRule(pd.Voter, 2, NewConstraintsDirect( + NewConstraintDirect("region", pd.In, "us"), )), - NewRule(Voter, 3, NewConstraintsDirect( - NewConstraintDirect("region", In, "sh"), + NewRule(pd.Voter, 3, NewConstraintsDirect( + NewConstraintDirect("region", pd.In, "sh"), )), }, }) @@ -540,15 +541,15 @@ func TestNewBundleFromOptions(t *testing.T) { Followers: 4, Schedule: "majority_in_primary", }, - output: []*Rule{ - NewRule(Leader, 1, NewConstraintsDirect( - NewConstraintDirect("region", In, "sh"), + output: []*pd.Rule{ + NewRule(pd.Leader, 1, NewConstraintsDirect( + NewConstraintDirect("region", pd.In, "sh"), )), - NewRule(Voter, 2, NewConstraintsDirect( - NewConstraintDirect("region", In, "sh"), + NewRule(pd.Voter, 2, NewConstraintsDirect( + NewConstraintDirect("region", pd.In, "sh"), )), - NewRule(Voter, 2, NewConstraintsDirect( - NewConstraintDirect("region", In, "bj"), + NewRule(pd.Voter, 2, NewConstraintsDirect( + NewConstraintDirect("region", pd.In, "bj"), )), }, }) @@ -558,12 +559,12 @@ func TestNewBundleFromOptions(t *testing.T) { input: &model.PlacementSettings{ Constraints: "[+region=us]", }, - output: []*Rule{ - NewRule(Leader, 1, NewConstraintsDirect( - NewConstraintDirect("region", In, "us"), + output: []*pd.Rule{ + NewRule(pd.Leader, 1, NewConstraintsDirect( + NewConstraintDirect("region", pd.In, "us"), )), - NewRule(Voter, 2, NewConstraintsDirect( - NewConstraintDirect("region", In, "us"), + NewRule(pd.Voter, 2, NewConstraintsDirect( + NewConstraintDirect("region", pd.In, "us"), )), }, }) @@ -575,15 +576,15 @@ func TestNewBundleFromOptions(t *testing.T) { Followers: 2, Learners: 2, }, - output: []*Rule{ - NewRule(Leader, 1, NewConstraintsDirect( - NewConstraintDirect("region", In, "us"), + output: []*pd.Rule{ + NewRule(pd.Leader, 1, NewConstraintsDirect( + NewConstraintDirect("region", pd.In, "us"), )), - NewRule(Voter, 2, NewConstraintsDirect( - NewConstraintDirect("region", In, "us"), + NewRule(pd.Voter, 2, NewConstraintsDirect( + NewConstraintDirect("region", pd.In, "us"), )), - NewRule(Learner, 2, NewConstraintsDirect( - NewConstraintDirect("region", In, "us"), + NewRule(pd.Learner, 2, NewConstraintsDirect( + NewConstraintDirect("region", pd.In, "us"), )), }, }) @@ -593,9 +594,9 @@ func TestNewBundleFromOptions(t *testing.T) { input: &model.PlacementSettings{ LeaderConstraints: "[+region=as]", }, - output: []*Rule{ - NewRule(Leader, 1, NewConstraintsDirect(NewConstraintDirect("region", In, "as"))), - NewRule(Voter, 2, NewConstraintsDirect()), + output: []*pd.Rule{ + NewRule(pd.Leader, 1, NewConstraintsDirect(NewConstraintDirect("region", pd.In, "as"))), + NewRule(pd.Voter, 2, NewConstraintsDirect()), }, }) @@ -605,9 +606,9 @@ func TestNewBundleFromOptions(t *testing.T) { LeaderConstraints: "[+region=as]", Followers: 4, }, - output: []*Rule{ - NewRule(Leader, 1, NewConstraintsDirect(NewConstraintDirect("region", In, "as"))), - NewRule(Voter, 4, NewConstraintsDirect()), + output: []*pd.Rule{ + NewRule(pd.Leader, 1, NewConstraintsDirect(NewConstraintDirect("region", pd.In, "as"))), + NewRule(pd.Voter, 4, NewConstraintsDirect()), }, }) tests = append(tests, TestCase{ @@ -616,9 +617,9 @@ func TestNewBundleFromOptions(t *testing.T) { LeaderConstraints: "[+region=as]", FollowerConstraints: `{"+region=us": 2}`, }, - output: []*Rule{ - NewRule(Leader, 1, NewConstraintsDirect(NewConstraintDirect("region", In, "as"))), - NewRule(Voter, 2, NewConstraintsDirect(NewConstraintDirect("region", In, "us"))), + output: []*pd.Rule{ + NewRule(pd.Leader, 1, NewConstraintsDirect(NewConstraintDirect("region", pd.In, "as"))), + NewRule(pd.Voter, 2, NewConstraintsDirect(NewConstraintDirect("region", pd.In, "us"))), }, }) @@ -628,9 +629,9 @@ func TestNewBundleFromOptions(t *testing.T) { LeaderConstraints: "[+region=as]", FollowerConstraints: "[-region=us]", }, - output: []*Rule{ - NewRule(Leader, 1, NewConstraintsDirect(NewConstraintDirect("region", In, "as"))), - NewRule(Voter, 2, NewConstraintsDirect(NewConstraintDirect("region", NotIn, "us"))), + output: []*pd.Rule{ + NewRule(pd.Leader, 1, NewConstraintsDirect(NewConstraintDirect("region", pd.In, "as"))), + NewRule(pd.Voter, 2, NewConstraintsDirect(NewConstraintDirect("region", pd.NotIn, "us"))), }, }) @@ -649,9 +650,9 @@ func TestNewBundleFromOptions(t *testing.T) { Followers: 2, FollowerConstraints: "[+region=bj]", }, - output: []*Rule{ - NewRule(Leader, 1, NewConstraintsDirect()), - NewRule(Voter, 2, NewConstraintsDirect(NewConstraintDirect("region", In, "bj"))), + output: []*pd.Rule{ + NewRule(pd.Leader, 1, NewConstraintsDirect()), + NewRule(pd.Voter, 2, NewConstraintsDirect(NewConstraintDirect("region", pd.In, "bj"))), }, }) @@ -732,9 +733,9 @@ func TestNewBundleFromOptions(t *testing.T) { input: &model.PlacementSettings{ FollowerConstraints: "{+disk=ssd: 1}", }, - output: []*Rule{ - NewRule(Leader, 1, NewConstraintsDirect()), - NewRule(Voter, 1, NewConstraintsDirect(NewConstraintDirect("disk", In, "ssd"))), + output: []*pd.Rule{ + NewRule(pd.Leader, 1, NewConstraintsDirect()), + NewRule(pd.Voter, 1, NewConstraintsDirect(NewConstraintDirect("disk", pd.In, "ssd"))), }, }) @@ -752,10 +753,10 @@ func TestNewBundleFromOptions(t *testing.T) { input: &model.PlacementSettings{ LearnerConstraints: `{"+region=us": 2}`, }, - output: []*Rule{ - NewRule(Leader, 1, NewConstraintsDirect()), - NewRule(Voter, 2, NewConstraintsDirect()), - NewRule(Learner, 2, NewConstraintsDirect(NewConstraintDirect("region", In, "us"))), + output: []*pd.Rule{ + NewRule(pd.Leader, 1, NewConstraintsDirect()), + NewRule(pd.Voter, 2, NewConstraintsDirect()), + NewRule(pd.Learner, 2, NewConstraintsDirect(NewConstraintDirect("region", pd.In, "us"))), }, }) @@ -773,8 +774,8 @@ func TestNewBundleFromOptions(t *testing.T) { input: &model.PlacementSettings{ Constraints: `{"+region=us": 3}`, }, - output: []*Rule{ - NewRule(Voter, 3, NewConstraintsDirect(NewConstraintDirect("region", In, "us"))), + output: []*pd.Rule{ + NewRule(pd.Voter, 3, NewConstraintsDirect(NewConstraintDirect("region", pd.In, "us"))), }, }) @@ -783,10 +784,10 @@ func TestNewBundleFromOptions(t *testing.T) { input: &model.PlacementSettings{ Constraints: `{ "+region=us-east-1":2, "+region=us-east-2": 2, "+region=us-west-1": 1}`, }, - output: []*Rule{ - NewRule(Voter, 2, NewConstraintsDirect(NewConstraintDirect("region", In, "us-east-1"))), - NewRule(Voter, 2, NewConstraintsDirect(NewConstraintDirect("region", In, "us-east-2"))), - NewRule(Voter, 1, NewConstraintsDirect(NewConstraintDirect("region", In, "us-west-1"))), + output: []*pd.Rule{ + NewRule(pd.Voter, 2, NewConstraintsDirect(NewConstraintDirect("region", pd.In, "us-east-1"))), + NewRule(pd.Voter, 2, NewConstraintsDirect(NewConstraintDirect("region", pd.In, "us-east-2"))), + NewRule(pd.Voter, 1, NewConstraintsDirect(NewConstraintDirect("region", pd.In, "us-west-1"))), }, }) @@ -796,9 +797,9 @@ func TestNewBundleFromOptions(t *testing.T) { Constraints: `{"+region=us-east": 3}`, LearnerConstraints: `{"+region=us-west": 1}`, }, - output: []*Rule{ - NewRule(Voter, 3, NewConstraintsDirect(NewConstraintDirect("region", In, "us-east"))), - NewRule(Learner, 1, NewConstraintsDirect(NewConstraintDirect("region", In, "us-west"))), + output: []*pd.Rule{ + NewRule(pd.Voter, 3, NewConstraintsDirect(NewConstraintDirect("region", pd.In, "us-east"))), + NewRule(pd.Learner, 1, NewConstraintsDirect(NewConstraintDirect("region", pd.In, "us-west"))), }, }) @@ -819,7 +820,7 @@ func TestResetBundleWithSingleRule(t *testing.T) { ID: GroupID(1), } - rules, err := newRules(Voter, 3, `["+zone=sh", "+zone=sh"]`) + rules, err := newRules(pd.Voter, 3, `["+zone=sh", "+zone=sh"]`) require.NoError(t, err) bundle.Rules = rules @@ -936,15 +937,15 @@ func TestTidy(t *testing.T) { ID: GroupID(1), } - rules0, err := newRules(Voter, 1, `["+zone=sh", "+zone=sh"]`) + rules0, err := newRules(pd.Voter, 1, `["+zone=sh", "+zone=sh"]`) require.NoError(t, err) require.Len(t, rules0, 1) rules0[0].Count = 0 // test prune useless rules - rules1, err := newRules(Voter, 4, `["-zone=sh", "+zone=bj"]`) + rules1, err := newRules(pd.Voter, 4, `["-zone=sh", "+zone=bj"]`) require.NoError(t, err) require.Len(t, rules1, 1) - rules2, err := newRules(Voter, 0, `{"-zone=sh,+zone=bj": 4}}`) + rules2, err := newRules(pd.Voter, 0, `{"-zone=sh,+zone=bj": 4}}`) require.NoError(t, err) bundle.Rules = append(bundle.Rules, rules0...) bundle.Rules = append(bundle.Rules, rules1...) @@ -955,23 +956,23 @@ func TestTidy(t *testing.T) { require.NoError(t, err) require.Len(t, bundle.Rules, 1) require.Equal(t, "0", bundle.Rules[0].ID) - require.Len(t, bundle.Rules[0].Constraints, 3) - require.Equal(t, Constraint{ - Op: NotIn, + require.Len(t, bundle.Rules[0].LabelConstraints, 3) + require.Equal(t, pd.LabelConstraint{ + Op: pd.NotIn, Key: EngineLabelKey, Values: []string{EngineLabelTiFlash}, - }, bundle.Rules[0].Constraints[2]) + }, bundle.Rules[0].LabelConstraints[2]) // merge - rules3, err := newRules(Follower, 4, "") + rules3, err := newRules(pd.Follower, 4, "") require.NoError(t, err) require.Len(t, rules3, 1) - rules4, err := newRules(Follower, 5, "") + rules4, err := newRules(pd.Follower, 5, "") require.NoError(t, err) require.Len(t, rules4, 1) - rules0[0].Role = Voter + rules0[0].Role = pd.Voter bundle.Rules = append(bundle.Rules, rules0...) bundle.Rules = append(bundle.Rules, rules3...) bundle.Rules = append(bundle.Rules, rules4...) @@ -985,13 +986,13 @@ func TestTidy(t *testing.T) { require.Equal(t, "0", bundle.Rules[0].ID) require.Equal(t, "1", bundle.Rules[1].ID) require.Equal(t, 9, bundle.Rules[1].Count) - require.Equal(t, Constraints{ + require.Equal(t, []pd.LabelConstraint{ { - Op: NotIn, + Op: pd.NotIn, Key: EngineLabelKey, Values: []string{EngineLabelTiFlash}, }, - }, bundle.Rules[1].Constraints) + }, bundle.Rules[1].LabelConstraints) require.Equal(t, []string{"zone", "host"}, bundle.Rules[1].LocationLabels) } err = bundle.Tidy() @@ -1009,8 +1010,8 @@ func TestTidy(t *testing.T) { require.NoError(t, err) require.Equal(t, bundle, bundle2) - bundle.Rules[1].Constraints = append(bundle.Rules[1].Constraints, Constraint{ - Op: In, + bundle.Rules[1].LabelConstraints = append(bundle.Rules[1].LabelConstraints, pd.LabelConstraint{ + Op: pd.In, Key: EngineLabelKey, Values: []string{EngineLabelTiFlash}, }) @@ -1026,40 +1027,40 @@ func TestTidy2(t *testing.T) { { name: "Empty bundle", bundle: Bundle{ - Rules: []*Rule{}, + Rules: []*pd.Rule{}, }, expected: Bundle{ - Rules: []*Rule{}, + Rules: []*pd.Rule{}, }, }, { name: "Rules with empty constraints are merged", bundle: Bundle{ - Rules: []*Rule{ + Rules: []*pd.Rule{ { - ID: "1", - Role: Leader, - Count: 1, - Constraints: Constraints{}, - LocationLabels: []string{"region"}, + ID: "1", + Role: pd.Leader, + Count: 1, + LabelConstraints: []pd.LabelConstraint{}, + LocationLabels: []string{"region"}, }, { - ID: "2", - Role: Voter, - Count: 2, - Constraints: Constraints{}, - LocationLabels: []string{"region"}, + ID: "2", + Role: pd.Voter, + Count: 2, + LabelConstraints: []pd.LabelConstraint{}, + LocationLabels: []string{"region"}, }, }, }, expected: Bundle{ - Rules: []*Rule{ + Rules: []*pd.Rule{ { - ID: "0", - Role: Voter, - Count: 3, - Constraints: Constraints{}, - LocationLabels: []string{"region"}, + ID: "0", + Role: pd.Voter, + Count: 3, + LabelConstraints: []pd.LabelConstraint{}, + LocationLabels: []string{"region"}, }, }, }, @@ -1067,21 +1068,21 @@ func TestTidy2(t *testing.T) { { name: "Rules with same constraints are merged, Leader + Follower", bundle: Bundle{ - Rules: []*Rule{ + Rules: []*pd.Rule{ { ID: "1", - Role: Leader, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"1"}}, + Role: pd.Leader, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"1"}}, }, Count: 1, LocationLabels: []string{"region"}, }, { ID: "2", - Role: Follower, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"1"}}, + Role: pd.Follower, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"1"}}, }, Count: 2, LocationLabels: []string{"region"}, @@ -1089,12 +1090,12 @@ func TestTidy2(t *testing.T) { }, }, expected: Bundle{ - Rules: []*Rule{ + Rules: []*pd.Rule{ { ID: "0", - Role: Voter, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"1"}}, + Role: pd.Voter, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"1"}}, }, Count: 3, LocationLabels: []string{"region"}, @@ -1105,21 +1106,21 @@ func TestTidy2(t *testing.T) { { name: "Rules with same constraints are merged, Leader + Voter", bundle: Bundle{ - Rules: []*Rule{ + Rules: []*pd.Rule{ { ID: "1", - Role: Leader, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"1"}}, + Role: pd.Leader, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"1"}}, }, Count: 1, LocationLabels: []string{"region"}, }, { ID: "2", - Role: Voter, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"1"}}, + Role: pd.Voter, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"1"}}, }, Count: 2, LocationLabels: []string{"region"}, @@ -1127,12 +1128,12 @@ func TestTidy2(t *testing.T) { }, }, expected: Bundle{ - Rules: []*Rule{ + Rules: []*pd.Rule{ { ID: "0", - Role: Voter, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"1"}}, + Role: pd.Voter, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"1"}}, }, Count: 3, LocationLabels: []string{"region"}, @@ -1143,30 +1144,30 @@ func TestTidy2(t *testing.T) { { name: "Rules with same constraints and role are merged, Leader + Follower + Voter", bundle: Bundle{ - Rules: []*Rule{ + Rules: []*pd.Rule{ { ID: "1", - Role: Leader, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"1"}}, + Role: pd.Leader, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"1"}}, }, Count: 1, LocationLabels: []string{"region"}, }, { ID: "2", - Role: Follower, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"1"}}, + Role: pd.Follower, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"1"}}, }, Count: 1, LocationLabels: []string{"region"}, }, { ID: "3", - Role: Voter, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"1"}}, + Role: pd.Voter, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"1"}}, }, Count: 1, LocationLabels: []string{"region"}, @@ -1174,12 +1175,12 @@ func TestTidy2(t *testing.T) { }, }, expected: Bundle{ - Rules: []*Rule{ + Rules: []*pd.Rule{ { ID: "0", - Role: Voter, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"1"}}, + Role: pd.Voter, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"1"}}, }, Count: 3, LocationLabels: []string{"region"}, @@ -1190,39 +1191,39 @@ func TestTidy2(t *testing.T) { { name: "Rules with same constraints and role are merged, Leader + Follower + Voter + Learner", bundle: Bundle{ - Rules: []*Rule{ + Rules: []*pd.Rule{ { ID: "1", - Role: Leader, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"1"}}, + Role: pd.Leader, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"1"}}, }, Count: 1, LocationLabels: []string{"region"}, }, { ID: "2", - Role: Follower, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"1"}}, + Role: pd.Follower, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"1"}}, }, Count: 1, LocationLabels: []string{"region"}, }, { ID: "3", - Role: Voter, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"1"}}, + Role: pd.Voter, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"1"}}, }, Count: 1, LocationLabels: []string{"region"}, }, { ID: "4", - Role: Learner, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"1"}}, + Role: pd.Learner, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"1"}}, }, Count: 2, LocationLabels: []string{"region"}, @@ -1230,21 +1231,21 @@ func TestTidy2(t *testing.T) { }, }, expected: Bundle{ - Rules: []*Rule{ + Rules: []*pd.Rule{ { ID: "0", - Role: Voter, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"1"}}, + Role: pd.Voter, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"1"}}, }, Count: 3, LocationLabels: []string{"region"}, }, { ID: "3", - Role: Learner, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"1"}}, + Role: pd.Learner, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"1"}}, }, Count: 2, LocationLabels: []string{"region"}, @@ -1255,39 +1256,39 @@ func TestTidy2(t *testing.T) { { name: "Rules with same constraints and role are merged, Leader + Follower + Learner | Follower", bundle: Bundle{ - Rules: []*Rule{ + Rules: []*pd.Rule{ { ID: "1", - Role: Leader, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"1"}}, + Role: pd.Leader, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"1"}}, }, Count: 1, LocationLabels: []string{"region"}, }, { ID: "2", - Role: Follower, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"1"}}, + Role: pd.Follower, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"1"}}, }, Count: 1, LocationLabels: []string{"region"}, }, { ID: "3", - Role: Learner, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"1"}}, + Role: pd.Learner, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"1"}}, }, Count: 1, LocationLabels: []string{"region"}, }, { ID: "4", - Role: Follower, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"2"}}, + Role: pd.Follower, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"2"}}, }, Count: 1, LocationLabels: []string{"region"}, @@ -1295,30 +1296,30 @@ func TestTidy2(t *testing.T) { }, }, expected: Bundle{ - Rules: []*Rule{ + Rules: []*pd.Rule{ { ID: "0", - Role: Voter, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"1"}}, + Role: pd.Voter, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"1"}}, }, Count: 2, LocationLabels: []string{"region"}, }, { ID: "2", - Role: Learner, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"1"}}, + Role: pd.Learner, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"1"}}, }, Count: 1, LocationLabels: []string{"region"}, }, { ID: "3", - Role: Follower, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"2"}}, + Role: pd.Follower, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"2"}}, }, Count: 1, LocationLabels: []string{"region"}, @@ -1329,39 +1330,39 @@ func TestTidy2(t *testing.T) { { name: "Rules with same constraints and role are merged, Leader + Follower + Learner | Voter", bundle: Bundle{ - Rules: []*Rule{ + Rules: []*pd.Rule{ { ID: "1", - Role: Leader, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"1"}}, + Role: pd.Leader, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"1"}}, }, Count: 1, LocationLabels: []string{"region"}, }, { ID: "2", - Role: Follower, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"1"}}, + Role: pd.Follower, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"1"}}, }, Count: 1, LocationLabels: []string{"region"}, }, { ID: "3", - Role: Learner, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"1"}}, + Role: pd.Learner, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"1"}}, }, Count: 1, LocationLabels: []string{"region"}, }, { ID: "4", - Role: Voter, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"2"}}, + Role: pd.Voter, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"2"}}, }, Count: 1, LocationLabels: []string{"region"}, @@ -1369,39 +1370,39 @@ func TestTidy2(t *testing.T) { }, }, expected: Bundle{ - Rules: []*Rule{ + Rules: []*pd.Rule{ { ID: "0", - Role: Leader, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"1"}}, + Role: pd.Leader, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"1"}}, }, Count: 1, LocationLabels: []string{"region"}, }, { ID: "1", - Role: Follower, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"1"}}, + Role: pd.Follower, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"1"}}, }, Count: 1, LocationLabels: []string{"region"}, }, { ID: "2", - Role: Learner, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"1"}}, + Role: pd.Learner, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"1"}}, }, Count: 1, LocationLabels: []string{"region"}, }, { ID: "3", - Role: Voter, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"2"}}, + Role: pd.Voter, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"2"}}, }, Count: 1, LocationLabels: []string{"region"}, @@ -1412,21 +1413,21 @@ func TestTidy2(t *testing.T) { { name: "Rules with different constraints are kept separate", bundle: Bundle{ - Rules: []*Rule{ + Rules: []*pd.Rule{ { ID: "1", - Role: Leader, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"1"}}, + Role: pd.Leader, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"1"}}, }, Count: 1, LocationLabels: []string{"region"}, }, { ID: "2", - Role: Follower, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"2"}}, + Role: pd.Follower, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"2"}}, }, Count: 1, LocationLabels: []string{"region"}, @@ -1434,21 +1435,21 @@ func TestTidy2(t *testing.T) { }, }, expected: Bundle{ - Rules: []*Rule{ + Rules: []*pd.Rule{ { ID: "0", - Role: Leader, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"1"}}, + Role: pd.Leader, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"1"}}, }, Count: 1, LocationLabels: []string{"region"}, }, { ID: "1", - Role: Follower, - Constraints: Constraints{ - {Op: In, Key: "rack", Values: []string{"2"}}, + Role: pd.Follower, + LabelConstraints: []pd.LabelConstraint{ + {Op: pd.In, Key: "rack", Values: []string{"2"}}, }, Count: 1, LocationLabels: []string{"region"}, @@ -1468,8 +1469,8 @@ func TestTidy2(t *testing.T) { for i, rule := range tt.bundle.Rules { expectedRule := tt.expected.Rules[i] // Tiflash is always excluded from the constraints. - expectedRule.Constraints.Add(Constraint{ - Op: NotIn, + AddConstraint(&expectedRule.LabelConstraints, pd.LabelConstraint{ + Op: pd.NotIn, Key: EngineLabelKey, Values: []string{EngineLabelTiFlash}, }) diff --git a/pkg/ddl/placement/constraint.go b/pkg/ddl/placement/constraint.go index 49970eb31570d..a7463cd897f56 100644 --- a/pkg/ddl/placement/constraint.go +++ b/pkg/ddl/placement/constraint.go @@ -17,45 +17,24 @@ package placement import ( "fmt" "strings" -) - -// ConstraintOp defines how a Constraint matches a store. -type ConstraintOp string -const ( - // In restricts the store label value should in the value list. - // If label does not exist, `in` is always false. - In ConstraintOp = "in" - // NotIn restricts the store label value should not in the value list. - // If label does not exist, `notIn` is always true. - NotIn ConstraintOp = "notIn" - // Exists restricts the store should have the label. - Exists ConstraintOp = "exists" - // NotExists restricts the store should not have the label. - NotExists ConstraintOp = "notExists" + pd "github.com/tikv/pd/client/http" ) -// Constraint is used to filter store when trying to place peer of a region. -type Constraint struct { - Key string `json:"key,omitempty"` - Op ConstraintOp `json:"op,omitempty"` - Values []string `json:"values,omitempty"` -} - // NewConstraint will create a Constraint from a string. -func NewConstraint(label string) (Constraint, error) { - r := Constraint{} +func NewConstraint(label string) (pd.LabelConstraint, error) { + r := pd.LabelConstraint{} if len(label) < 4 { return r, fmt.Errorf("%w: %s", ErrInvalidConstraintFormat, label) } - var op ConstraintOp + var op pd.LabelConstraintOp switch label[0] { case '+': - op = In + op = pd.In case '-': - op = NotIn + op = pd.NotIn default: return r, fmt.Errorf("%w: %s", ErrInvalidConstraintFormat, label) } @@ -75,7 +54,7 @@ func NewConstraint(label string) (Constraint, error) { return r, fmt.Errorf("%w: %s", ErrInvalidConstraintFormat, label) } - if op == In && key == EngineLabelKey && strings.ToLower(val) == EngineLabelTiFlash { + if op == pd.In && key == EngineLabelKey && strings.ToLower(val) == EngineLabelTiFlash { return r, fmt.Errorf("%w: %s", ErrUnsupportedConstraint, label) } @@ -86,24 +65,24 @@ func NewConstraint(label string) (Constraint, error) { } // NewConstraintDirect will create a Constraint from argument directly. -func NewConstraintDirect(key string, op ConstraintOp, val ...string) Constraint { - return Constraint{ +func NewConstraintDirect(key string, op pd.LabelConstraintOp, val ...string) pd.LabelConstraint { + return pd.LabelConstraint{ Key: key, Op: op, Values: val, } } -// Restore converts a Constraint to a string. -func (c *Constraint) Restore() (string, error) { +// RestoreConstraint converts a Constraint to a string. +func RestoreConstraint(c *pd.LabelConstraint) (string, error) { var sb strings.Builder if len(c.Values) != 1 { return "", fmt.Errorf("%w: constraint should have exactly one label value, got %v", ErrInvalidConstraintFormat, c.Values) } switch c.Op { - case In: + case pd.In: sb.WriteString("+") - case NotIn: + case pd.NotIn: sb.WriteString("-") default: return "", fmt.Errorf("%w: disallowed operation '%s'", ErrInvalidConstraintFormat, c.Op) @@ -126,9 +105,9 @@ const ( ConstraintDuplicated ) -// CompatibleWith will check if two constraints are compatible. +// ConstraintCompatibleWith will check if two constraints are compatible. // Return (compatible, duplicated). -func (c *Constraint) CompatibleWith(o *Constraint) ConstraintCompatibility { +func ConstraintCompatibleWith(c *pd.LabelConstraint, o *pd.LabelConstraint) ConstraintCompatibility { sameKey := c.Key == o.Key if !sameKey { return ConstraintCompatible @@ -148,7 +127,7 @@ func (c *Constraint) CompatibleWith(o *Constraint) ConstraintCompatibility { // 3. can not match multiple instances: +dc=sh, +dc=bj if sameOp && sameVal { return ConstraintDuplicated - } else if (!sameOp && sameVal) || (sameOp && !sameVal && c.Op == In) { + } else if (!sameOp && sameVal) || (sameOp && !sameVal && c.Op == pd.In) { return ConstraintIncompatible } diff --git a/pkg/ddl/placement/constraint_test.go b/pkg/ddl/placement/constraint_test.go index 739d7bf6b5ba6..577cbf0d0f837 100644 --- a/pkg/ddl/placement/constraint_test.go +++ b/pkg/ddl/placement/constraint_test.go @@ -19,6 +19,7 @@ import ( "testing" "github.com/stretchr/testify/require" + pd "github.com/tikv/pd/client/http" ) func TestNewFromYaml(t *testing.T) { @@ -32,34 +33,34 @@ func TestNewConstraint(t *testing.T) { type TestCase struct { name string input string - label Constraint + label pd.LabelConstraint err error } tests := []TestCase{ { name: "normal", input: "+zone=bj", - label: Constraint{ + label: pd.LabelConstraint{ Key: "zone", - Op: In, + Op: pd.In, Values: []string{"bj"}, }, }, { name: "normal with spaces", input: "- dc = sh ", - label: Constraint{ + label: pd.LabelConstraint{ Key: "dc", - Op: NotIn, + Op: pd.NotIn, Values: []string{"sh"}, }, }, { name: "not tiflash", input: "-engine = tiflash ", - label: Constraint{ + label: pd.LabelConstraint{ Key: "engine", - Op: NotIn, + Op: pd.NotIn, Values: []string{"tiflash"}, }, }, @@ -126,7 +127,7 @@ func TestNewConstraint(t *testing.T) { func TestRestoreConstraint(t *testing.T) { type TestCase struct { name string - input Constraint + input pd.LabelConstraint output string err error } @@ -158,8 +159,8 @@ func TestRestoreConstraint(t *testing.T) { tests = append(tests, TestCase{ name: "no values", - input: Constraint{ - Op: In, + input: pd.LabelConstraint{ + Op: pd.In, Key: "dc", Values: []string{}, }, @@ -168,8 +169,8 @@ func TestRestoreConstraint(t *testing.T) { tests = append(tests, TestCase{ name: "multiple values", - input: Constraint{ - Op: In, + input: pd.LabelConstraint{ + Op: pd.In, Key: "dc", Values: []string{"dc1", "dc2"}, }, @@ -178,7 +179,7 @@ func TestRestoreConstraint(t *testing.T) { tests = append(tests, TestCase{ name: "invalid op", - input: Constraint{ + input: pd.LabelConstraint{ Op: "[", Key: "dc", Values: []string{}, @@ -187,7 +188,7 @@ func TestRestoreConstraint(t *testing.T) { }) for _, test := range tests { - output, err := test.input.Restore() + output, err := RestoreConstraint(&test.input) comment := fmt.Sprintf("%s: %v", test.name, err) if test.err == nil { require.NoError(t, err, comment) @@ -201,8 +202,8 @@ func TestRestoreConstraint(t *testing.T) { func TestCompatibleWith(t *testing.T) { type TestCase struct { name string - i1 Constraint - i2 Constraint + i1 pd.LabelConstraint + i2 pd.LabelConstraint output ConstraintCompatibility } var tests []TestCase @@ -258,6 +259,6 @@ func TestCompatibleWith(t *testing.T) { }) for _, test := range tests { - require.Equal(t, test.output, test.i1.CompatibleWith(&test.i2), test.name) + require.Equal(t, test.output, ConstraintCompatibleWith(&test.i1, &test.i2), test.name) } } diff --git a/pkg/ddl/placement/constraints.go b/pkg/ddl/placement/constraints.go index a62d2265c36fd..adb830adb034d 100644 --- a/pkg/ddl/placement/constraints.go +++ b/pkg/ddl/placement/constraints.go @@ -23,26 +23,24 @@ import ( "sort" "strings" + pd "github.com/tikv/pd/client/http" "gopkg.in/yaml.v2" ) -// Constraints is a slice of constraints. -type Constraints []Constraint - // NewConstraints will check each labels, and build the Constraints. -func NewConstraints(labels []string) (Constraints, error) { +func NewConstraints(labels []string) ([]pd.LabelConstraint, error) { if len(labels) == 0 { return nil, nil } - constraints := make(Constraints, 0, len(labels)) + constraints := make([]pd.LabelConstraint, 0, len(labels)) for _, str := range labels { label, err := NewConstraint(strings.TrimSpace(str)) if err != nil { return constraints, err } - err = constraints.Add(label) + err = AddConstraint(&constraints, label) if err != nil { return constraints, err } @@ -52,7 +50,7 @@ func NewConstraints(labels []string) (Constraints, error) { // preCheckDictConstraintStr will check the label string, and return the new labels and role. // role maybe be override by the label string, eg `#evict-leader`. -func preCheckDictConstraintStr(labelStr string, role PeerRoleType) ([]string, PeerRoleType, error) { +func preCheckDictConstraintStr(labelStr string, role pd.PeerRoleType) ([]string, pd.PeerRoleType, error) { innerLabels := strings.Split(labelStr, ",") overrideRole := role newLabels := make([]string, 0, len(innerLabels)) @@ -60,8 +58,8 @@ func preCheckDictConstraintStr(labelStr string, role PeerRoleType) ([]string, Pe if strings.HasPrefix(str, attributePrefix) { switch str[1:] { case attributeEvictLeader: - if role == Voter { - overrideRole = Follower + if role == pd.Voter { + overrideRole = pd.Follower } default: return newLabels, overrideRole, fmt.Errorf("%w: unsupported attribute '%s'", ErrUnsupportedConstraint, str) @@ -75,7 +73,7 @@ func preCheckDictConstraintStr(labelStr string, role PeerRoleType) ([]string, Pe // NewConstraintsFromYaml will transform parse the raw 'array' constraints and call NewConstraints. // Refer to https://github.com/pingcap/tidb/blob/master/docs/design/2020-06-24-placement-rules-in-sql.md. -func NewConstraintsFromYaml(c []byte) (Constraints, error) { +func NewConstraintsFromYaml(c []byte) ([]pd.LabelConstraint, error) { constraints := []string{} err := yaml.UnmarshalStrict(c, &constraints) if err != nil { @@ -85,19 +83,19 @@ func NewConstraintsFromYaml(c []byte) (Constraints, error) { } // NewConstraintsDirect is a helper for creating new constraints from individual constraint. -func NewConstraintsDirect(c ...Constraint) Constraints { +func NewConstraintsDirect(c ...pd.LabelConstraint) []pd.LabelConstraint { return c } -// Restore converts label constraints to a string. -func (constraints *Constraints) Restore() (string, error) { +// RestoreConstraints converts label constraints to a string. +func RestoreConstraints(constraints *[]pd.LabelConstraint) (string, error) { var sb strings.Builder for i, constraint := range *constraints { if i > 0 { sb.WriteByte(',') } sb.WriteByte('"') - conStr, err := constraint.Restore() + conStr, err := RestoreConstraint(&constraint) if err != nil { return "", err } @@ -107,14 +105,14 @@ func (constraints *Constraints) Restore() (string, error) { return sb.String(), nil } -// Add will add a new label constraint, with validation of all constraints. +// AddConstraint will add a new label constraint, with validation of all constraints. // Note that Add does not validate one single constraint. -func (constraints *Constraints) Add(label Constraint) error { +func AddConstraint(constraints *[]pd.LabelConstraint, label pd.LabelConstraint) error { pass := true for i := range *constraints { cnst := (*constraints)[i] - res := label.CompatibleWith(&cnst) + res := ConstraintCompatibleWith(&label, &cnst) if res == ConstraintCompatible { continue } @@ -122,11 +120,11 @@ func (constraints *Constraints) Add(label Constraint) error { pass = false continue } - s1, err := label.Restore() + s1, err := RestoreConstraint(&label) if err != nil { s1 = err.Error() } - s2, err := cnst.Restore() + s2, err := RestoreConstraint(&cnst) if err != nil { s2 = err.Error() } @@ -139,11 +137,11 @@ func (constraints *Constraints) Add(label Constraint) error { return nil } -// FingerPrint returns a unique string for the constraints. -func (constraints *Constraints) FingerPrint() string { - copied := make(Constraints, len(*constraints)) +// ConstraintsFingerPrint returns a unique string for the constraints. +func ConstraintsFingerPrint(constraints *[]pd.LabelConstraint) string { + copied := make([]pd.LabelConstraint, len(*constraints)) copy(copied, *constraints) - slices.SortStableFunc(copied, func(i, j Constraint) int { + slices.SortStableFunc(copied, func(i, j pd.LabelConstraint) int { a, b := constraintToString(&i), constraintToString(&j) return cmp.Compare(a, b) }) @@ -161,7 +159,7 @@ func (constraints *Constraints) FingerPrint() string { return hashStr } -func constraintToString(c *Constraint) string { +func constraintToString(c *pd.LabelConstraint) string { // Sort the values in the constraint sortedValues := make([]string, len(c.Values)) copy(sortedValues, c.Values) diff --git a/pkg/ddl/placement/constraints_test.go b/pkg/ddl/placement/constraints_test.go index 17a4b03843255..a8d9899999d2c 100644 --- a/pkg/ddl/placement/constraints_test.go +++ b/pkg/ddl/placement/constraints_test.go @@ -19,6 +19,7 @@ import ( "testing" "github.com/stretchr/testify/require" + pd "github.com/tikv/pd/client/http" ) func TestNewConstraints(t *testing.T) { @@ -38,8 +39,8 @@ func TestNewConstraints(t *testing.T) { func TestAdd(t *testing.T) { type TestCase struct { name string - labels Constraints - label Constraint + labels []pd.LabelConstraint + label pd.LabelConstraint err error } var tests []TestCase @@ -66,8 +67,8 @@ func TestAdd(t *testing.T) { tests = append(tests, TestCase{ "duplicated constraints should not stop conflicting constraints check", - append(labels, Constraint{ - Op: NotIn, + append(labels, pd.LabelConstraint{ + Op: pd.NotIn, Key: "zone", Values: []string{"sh"}, }), label, @@ -78,19 +79,19 @@ func TestAdd(t *testing.T) { require.NoError(t, err) tests = append(tests, TestCase{ "invalid label in operand", - labels, Constraint{Op: "["}, + labels, pd.LabelConstraint{Op: "["}, nil, }) tests = append(tests, TestCase{ "invalid label in operator", - Constraints{{Op: "["}}, label, + []pd.LabelConstraint{{Op: "["}}, label, nil, }) tests = append(tests, TestCase{ "invalid label in both, same key", - Constraints{{Op: "[", Key: "dc"}}, Constraint{Op: "]", Key: "dc"}, + []pd.LabelConstraint{{Op: "[", Key: "dc"}}, pd.LabelConstraint{Op: "]", Key: "dc"}, ErrConflictingConstraints, }) @@ -105,7 +106,7 @@ func TestAdd(t *testing.T) { }) for _, test := range tests { - err := test.labels.Add(test.label) + err := AddConstraint(&test.labels, test.label) comment := fmt.Sprintf("%s: %v", test.name, err) if test.err == nil { require.NoError(t, err, comment) @@ -119,7 +120,7 @@ func TestAdd(t *testing.T) { func TestRestoreConstraints(t *testing.T) { type TestCase struct { name string - input Constraints + input []pd.LabelConstraint output string err error } @@ -127,7 +128,7 @@ func TestRestoreConstraints(t *testing.T) { tests = append(tests, TestCase{ "normal1", - Constraints{}, + []pd.LabelConstraint{}, "", nil, }) @@ -138,14 +139,14 @@ func TestRestoreConstraints(t *testing.T) { require.NoError(t, err) tests = append(tests, TestCase{ "normal2", - Constraints{input1, input2}, + []pd.LabelConstraint{input1, input2}, `"+zone=bj","-zone=sh"`, nil, }) tests = append(tests, TestCase{ "error", - Constraints{{ + []pd.LabelConstraint{{ Op: "[", Key: "dc", Values: []string{"dc1"}, @@ -155,7 +156,7 @@ func TestRestoreConstraints(t *testing.T) { }) for _, test := range tests { - res, err := test.input.Restore() + res, err := RestoreConstraints(&test.input) comment := fmt.Sprintf("%s: %v", test.name, err) if test.err == nil { require.NoError(t, err, comment) diff --git a/pkg/ddl/placement/meta_bundle_test.go b/pkg/ddl/placement/meta_bundle_test.go index 093a3651e7f23..8af316db0d45a 100644 --- a/pkg/ddl/placement/meta_bundle_test.go +++ b/pkg/ddl/placement/meta_bundle_test.go @@ -29,6 +29,7 @@ import ( "github.com/pingcap/tidb/pkg/tablecodec" "github.com/pingcap/tidb/pkg/util/codec" "github.com/stretchr/testify/require" + pd "github.com/tikv/pd/client/http" ) type metaBundleSuite struct { @@ -342,9 +343,9 @@ func (s *metaBundleSuite) checkPartitionBundle(t *testing.T, def model.Partition s.checkTwoJSONObjectEquals(t, expected, got) } -func (s *metaBundleSuite) expectedRules(t *testing.T, ref *model.PolicyRefInfo) []*placement.Rule { +func (s *metaBundleSuite) expectedRules(t *testing.T, ref *model.PolicyRefInfo) []*pd.Rule { if ref == nil { - return []*placement.Rule{} + return []*pd.Rule{} } var policy *model.PolicyInfo diff --git a/pkg/ddl/placement/rule.go b/pkg/ddl/placement/rule.go index c52839c37bb32..5364607a1bb96 100644 --- a/pkg/ddl/placement/rule.go +++ b/pkg/ddl/placement/rule.go @@ -22,23 +22,10 @@ import ( "strings" "github.com/pingcap/tidb/pkg/util/codec" + pd "github.com/tikv/pd/client/http" "gopkg.in/yaml.v2" ) -// PeerRoleType is the expected peer type of the placement rule. -type PeerRoleType string - -const ( - // Voter can either match a leader peer or follower peer. - Voter PeerRoleType = "voter" - // Leader matches a leader. - Leader PeerRoleType = "leader" - // Follower matches a follower. - Follower PeerRoleType = "follower" - // Learner matches a learner. - Learner PeerRoleType = "learner" -) - const ( attributePrefix = "#" // AttributeEvictLeader is used to evict leader from a store. @@ -52,22 +39,10 @@ type RuleGroupConfig struct { Override bool `json:"override"` } -// Rule is the core placement rule struct. Check https://github.com/tikv/pd/blob/master/server/schedule/placement/rule.go. -type Rule struct { - GroupID string `json:"group_id"` - ID string `json:"id"` - Index int `json:"index,omitempty"` - Override bool `json:"override,omitempty"` - StartKeyHex string `json:"start_key"` - EndKeyHex string `json:"end_key"` - Role PeerRoleType `json:"role"` - Count int `json:"count"` - Constraints Constraints `json:"label_constraints,omitempty"` - LocationLabels []string `json:"location_labels,omitempty"` -} - -var _ json.Marshaler = (*TiFlashRule)(nil) -var _ json.Unmarshaler = (*TiFlashRule)(nil) +var ( + _ json.Marshaler = (*TiFlashRule)(nil) + _ json.Unmarshaler = (*TiFlashRule)(nil) +) // TiFlashRule extends Rule with other necessary fields. type TiFlashRule struct { @@ -75,9 +50,9 @@ type TiFlashRule struct { ID string Index int Override bool - Role PeerRoleType + Role pd.PeerRoleType Count int - Constraints Constraints + Constraints []pd.LabelConstraint LocationLabels []string IsolationLevel string StartKey []byte @@ -85,17 +60,17 @@ type TiFlashRule struct { } type tiFlashRule struct { - GroupID string `json:"group_id"` - ID string `json:"id"` - Index int `json:"index,omitempty"` - Override bool `json:"override,omitempty"` - Role PeerRoleType `json:"role"` - Count int `json:"count"` - Constraints Constraints `json:"label_constraints,omitempty"` - LocationLabels []string `json:"location_labels,omitempty"` - IsolationLevel string `json:"isolation_level,omitempty"` - StartKeyHex string `json:"start_key"` - EndKeyHex string `json:"end_key"` + GroupID string `json:"group_id"` + ID string `json:"id"` + Index int `json:"index,omitempty"` + Override bool `json:"override,omitempty"` + Role pd.PeerRoleType `json:"role"` + Count int `json:"count"` + Constraints []pd.LabelConstraint `json:"label_constraints,omitempty"` + LocationLabels []string `json:"location_labels,omitempty"` + IsolationLevel string `json:"isolation_level,omitempty"` + StartKeyHex string `json:"start_key"` + EndKeyHex string `json:"end_key"` } // MarshalJSON implements json.Marshaler interface for TiFlashRule. @@ -155,7 +130,7 @@ func (r *TiFlashRule) UnmarshalJSON(bytes []byte) error { // RuleBuilder is used to build the Rules from a constraint string. type RuleBuilder struct { - role PeerRoleType + role pd.PeerRoleType replicasNum uint64 skipCheckReplicasConsistent bool constraintStr string @@ -167,7 +142,7 @@ func NewRuleBuilder() *RuleBuilder { } // SetRole sets the role of the rule. -func (b *RuleBuilder) SetRole(role PeerRoleType) *RuleBuilder { +func (b *RuleBuilder) SetRole(role pd.PeerRoleType) *RuleBuilder { b.role = role return b } @@ -192,14 +167,14 @@ func (b *RuleBuilder) SetConstraintStr(constraintStr string) *RuleBuilder { // BuildRulesWithDictConstraintsOnly constructs []*Rule from a yaml-compatible representation of // 'dict' constraints. -func (b *RuleBuilder) BuildRulesWithDictConstraintsOnly() ([]*Rule, error) { +func (b *RuleBuilder) BuildRulesWithDictConstraintsOnly() ([]*pd.Rule, error) { return newRulesWithDictConstraints(b.role, b.constraintStr) } // BuildRules constructs []*Rule from a yaml-compatible representation of // 'array' or 'dict' constraints. // Refer to https://github.com/pingcap/tidb/blob/master/docs/design/2020-06-24-placement-rules-in-sql.md. -func (b *RuleBuilder) BuildRules() ([]*Rule, error) { +func (b *RuleBuilder) BuildRules() ([]*pd.Rule, error) { rules, err := newRules(b.role, b.replicasNum, b.constraintStr) // check if replicas is consistent if err == nil { @@ -219,11 +194,11 @@ func (b *RuleBuilder) BuildRules() ([]*Rule, error) { // NewRule constructs *Rule from role, count, and constraints. It is here to // consistent the behavior of creating new rules. -func NewRule(role PeerRoleType, replicas uint64, cnst Constraints) *Rule { - return &Rule{ - Role: role, - Count: int(replicas), - Constraints: cnst, +func NewRule(role pd.PeerRoleType, replicas uint64, cnst []pd.LabelConstraint) *pd.Rule { + return &pd.Rule{ + Role: role, + Count: int(replicas), + LabelConstraints: cnst, } } @@ -242,7 +217,7 @@ func getYamlMapFormatError(str string) error { // newRules constructs []*Rule from a yaml-compatible representation of // 'array' or 'dict' constraints. // Refer to https://github.com/pingcap/tidb/blob/master/docs/design/2020-06-24-placement-rules-in-sql.md. -func newRules(role PeerRoleType, replicas uint64, cnstr string) (rules []*Rule, err error) { +func newRules(role pd.PeerRoleType, replicas uint64, cnstr string) (rules []*pd.Rule, err error) { cnstbytes := []byte(cnstr) constraints1, err1 := NewConstraintsFromYaml(cnstbytes) if err1 == nil { @@ -268,8 +243,8 @@ func newRules(role PeerRoleType, replicas uint64, cnstr string) (rules []*Rule, // newRulesWithDictConstraints constructs []*Rule from a yaml-compatible representation of // 'dict' constraints. -func newRulesWithDictConstraints(role PeerRoleType, cnstr string) ([]*Rule, error) { - rules := []*Rule{} +func newRulesWithDictConstraints(role pd.PeerRoleType, cnstr string) ([]*pd.Rule, error) { + rules := []*pd.Rule{} cnstbytes := []byte(cnstr) constraints2 := map[string]int{} err2 := yaml.UnmarshalStrict(cnstbytes, &constraints2) @@ -302,15 +277,3 @@ func newRulesWithDictConstraints(role PeerRoleType, cnstr string) ([]*Rule, erro return nil, fmt.Errorf("%w: should be [constraint1, ...] or {constraint1: cnt1, ...}, error %s, or any yaml compatible representation", ErrInvalidConstraintsFormat, err2) } - -// Clone is used to duplicate a RuleOp for safe modification. -// Note that it is a shallow copy: Constraints is not cloned. -func (r *Rule) Clone() *Rule { - n := &Rule{} - *n = *r - return n -} - -func (r *Rule) String() string { - return fmt.Sprintf("%+v", *r) -} diff --git a/pkg/ddl/placement/rule_test.go b/pkg/ddl/placement/rule_test.go index dd6eadf4d29c5..89232e44fc759 100644 --- a/pkg/ddl/placement/rule_test.go +++ b/pkg/ddl/placement/rule_test.go @@ -21,18 +21,19 @@ import ( "testing" "github.com/stretchr/testify/require" + pd "github.com/tikv/pd/client/http" ) func TestClone(t *testing.T) { - rule := &Rule{ID: "434"} + rule := &pd.Rule{ID: "434"} newRule := rule.Clone() newRule.ID = "121" - require.Equal(t, &Rule{ID: "434"}, rule) - require.Equal(t, &Rule{ID: "121"}, newRule) + require.Equal(t, &pd.Rule{ID: "434"}, rule) + require.Equal(t, &pd.Rule{ID: "121"}, newRule) } -func matchRules(t1, t2 []*Rule, prefix string, t *testing.T) { +func matchRules(t1, t2 []*pd.Rule, prefix string, t *testing.T) { require.Equal(t, len(t2), len(t1), prefix) for i := range t1 { found := false @@ -52,7 +53,7 @@ func TestNewRuleAndNewRules(t *testing.T) { name string input string replicas uint64 - output []*Rule + output []*pd.Rule err error } var tests []TestCase @@ -61,8 +62,8 @@ func TestNewRuleAndNewRules(t *testing.T) { name: "empty constraints", input: "", replicas: 3, - output: []*Rule{ - NewRule(Voter, 3, NewConstraintsDirect()), + output: []*pd.Rule{ + NewRule(pd.Voter, 3, NewConstraintsDirect()), }, }) @@ -77,10 +78,10 @@ func TestNewRuleAndNewRules(t *testing.T) { name: "normal list constraints", input: `["+zone=sh", "+region=sh"]`, replicas: 3, - output: []*Rule{ - NewRule(Voter, 3, NewConstraintsDirect( - NewConstraintDirect("zone", In, "sh"), - NewConstraintDirect("region", In, "sh"), + output: []*pd.Rule{ + NewRule(pd.Voter, 3, NewConstraintsDirect( + NewConstraintDirect("zone", pd.In, "sh"), + NewConstraintDirect("region", pd.In, "sh"), )), }, }) @@ -88,13 +89,13 @@ func TestNewRuleAndNewRules(t *testing.T) { tests = append(tests, TestCase{ name: "normal dict constraints", input: `{"+zone=sh,-zone=bj":2, "+zone=sh": 1}`, - output: []*Rule{ - NewRule(Voter, 2, NewConstraintsDirect( - NewConstraintDirect("zone", In, "sh"), - NewConstraintDirect("zone", NotIn, "bj"), + output: []*pd.Rule{ + NewRule(pd.Voter, 2, NewConstraintsDirect( + NewConstraintDirect("zone", pd.In, "sh"), + NewConstraintDirect("zone", pd.NotIn, "bj"), )), - NewRule(Voter, 1, NewConstraintsDirect( - NewConstraintDirect("zone", In, "sh"), + NewRule(pd.Voter, 1, NewConstraintsDirect( + NewConstraintDirect("zone", pd.In, "sh"), )), }, }) @@ -102,13 +103,13 @@ func TestNewRuleAndNewRules(t *testing.T) { tests = append(tests, TestCase{ name: "normal dict constraints, with count", input: "{'+zone=sh,-zone=bj':2, '+zone=sh': 1}", - output: []*Rule{ - NewRule(Voter, 2, NewConstraintsDirect( - NewConstraintDirect("zone", In, "sh"), - NewConstraintDirect("zone", NotIn, "bj"), + output: []*pd.Rule{ + NewRule(pd.Voter, 2, NewConstraintsDirect( + NewConstraintDirect("zone", pd.In, "sh"), + NewConstraintDirect("zone", pd.NotIn, "bj"), )), - NewRule(Voter, 1, NewConstraintsDirect( - NewConstraintDirect("zone", In, "sh"), + NewRule(pd.Voter, 1, NewConstraintsDirect( + NewConstraintDirect("zone", pd.In, "sh"), )), }, }) @@ -147,13 +148,13 @@ func TestNewRuleAndNewRules(t *testing.T) { tests = append(tests, TestCase{ name: "normal dict constraint with evict leader attribute", input: `{"+zone=sh,-zone=bj":2, "+zone=sh,#evict-leader": 1}`, - output: []*Rule{ - NewRule(Voter, 2, NewConstraintsDirect( - NewConstraintDirect("zone", In, "sh"), - NewConstraintDirect("zone", NotIn, "bj"), + output: []*pd.Rule{ + NewRule(pd.Voter, 2, NewConstraintsDirect( + NewConstraintDirect("zone", pd.In, "sh"), + NewConstraintDirect("zone", pd.NotIn, "bj"), )), - NewRule(Follower, 1, NewConstraintsDirect( - NewConstraintDirect("zone", In, "sh"), + NewRule(pd.Follower, 1, NewConstraintsDirect( + NewConstraintDirect("zone", pd.In, "sh"), )), }, }) @@ -172,7 +173,7 @@ func TestNewRuleAndNewRules(t *testing.T) { for _, tt := range tests { comment := fmt.Sprintf("[%s]", tt.name) - output, err := newRules(Voter, tt.replicas, tt.input) + output, err := newRules(pd.Voter, tt.replicas, tt.input) if tt.err == nil { require.NoError(t, err, comment) matchRules(tt.output, output, comment, t) diff --git a/pkg/ddl/reorg.go b/pkg/ddl/reorg.go index 65089a81ddc1d..464e53c31058c 100644 --- a/pkg/ddl/reorg.go +++ b/pkg/ddl/reorg.go @@ -605,7 +605,8 @@ func buildCommonHandleFromChunkRow(sctx *stmtctx.StatementContext, tblInfo *mode tablecodec.TruncateIndexValues(tblInfo, idxInfo, datumRow) var handleBytes []byte - handleBytes, err := codec.EncodeKey(sctx, nil, datumRow...) + handleBytes, err := codec.EncodeKey(sctx.TimeZone(), nil, datumRow...) + err = sctx.HandleError(err) if err != nil { return nil, err } diff --git a/pkg/ddl/schematracker/dm_tracker.go b/pkg/ddl/schematracker/dm_tracker.go index e25b623210077..467f35ffcaad8 100644 --- a/pkg/ddl/schematracker/dm_tracker.go +++ b/pkg/ddl/schematracker/dm_tracker.go @@ -613,7 +613,7 @@ func (d SchemaTracker) renameColumn(_ sessionctx.Context, ident ast.Ident, spec if col.GeneratedExpr == nil { continue } - dependedColNames := ddl.FindColumnNamesInExpr(col.GeneratedExpr) + dependedColNames := ddl.FindColumnNamesInExpr(col.GeneratedExpr.Internal()) for _, name := range dependedColNames { if name.Name.L == oldColName.L { if col.Hidden { diff --git a/pkg/ddl/sequence.go b/pkg/ddl/sequence.go index e60043be6efe1..07595872dbee4 100644 --- a/pkg/ddl/sequence.go +++ b/pkg/ddl/sequence.go @@ -19,7 +19,6 @@ import ( "reflect" "github.com/pingcap/errors" - "github.com/pingcap/tidb/pkg/ddl/util" "github.com/pingcap/tidb/pkg/infoschema" "github.com/pingcap/tidb/pkg/meta" "github.com/pingcap/tidb/pkg/parser/ast" @@ -62,7 +61,6 @@ func onCreateSequence(d *ddlCtx, t *meta.Meta, job *model.Job) (ver int64, _ err } // Finish this job. job.FinishTableJob(model.JobStateDone, model.StatePublic, ver, tbInfo) - asyncNotifyEvent(d, &util.Event{Tp: model.ActionCreateSequence, TableInfo: tbInfo}) return ver, nil default: return ver, dbterror.ErrInvalidDDLState.GenWithStackByArgs("sequence", tbInfo.State) diff --git a/pkg/ddl/stat_test.go b/pkg/ddl/stat_test.go index 291b01e79f13e..8aaac9d9d913b 100644 --- a/pkg/ddl/stat_test.go +++ b/pkg/ddl/stat_test.go @@ -31,7 +31,7 @@ import ( "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/parser/terror" - "github.com/pingcap/tidb/pkg/session" + sessiontypes "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessiontxn" "github.com/pingcap/tidb/pkg/testkit" @@ -148,7 +148,7 @@ func TestGetDDLInfo(t *testing.T) { tk.MustExec("rollback") } -func addDDLJobs(sess session.Session, txn kv.Transaction, job *model.Job) error { +func addDDLJobs(sess sessiontypes.Session, txn kv.Transaction, job *model.Job) error { b, err := job.Encode(true) if err != nil { return err diff --git a/pkg/ddl/table.go b/pkg/ddl/table.go index b584cfafd6f55..efee1b9f21bed 100644 --- a/pkg/ddl/table.go +++ b/pkg/ddl/table.go @@ -27,7 +27,6 @@ import ( sess "github.com/pingcap/tidb/pkg/ddl/internal/session" "github.com/pingcap/tidb/pkg/ddl/label" "github.com/pingcap/tidb/pkg/ddl/placement" - "github.com/pingcap/tidb/pkg/ddl/util" "github.com/pingcap/tidb/pkg/domain/infosync" "github.com/pingcap/tidb/pkg/infoschema" "github.com/pingcap/tidb/pkg/kv" @@ -38,6 +37,7 @@ import ( "github.com/pingcap/tidb/pkg/parser/model" field_types "github.com/pingcap/tidb/pkg/parser/types" "github.com/pingcap/tidb/pkg/sessionctx/variable" + statsutil "github.com/pingcap/tidb/pkg/statistics/handle/util" "github.com/pingcap/tidb/pkg/table" "github.com/pingcap/tidb/pkg/table/tables" "github.com/pingcap/tidb/pkg/tablecodec" @@ -171,7 +171,10 @@ func onCreateTable(d *ddlCtx, t *meta.Meta, job *model.Job) (ver int64, _ error) // Finish this job. job.FinishTableJob(model.JobStateDone, model.StatePublic, ver, tbInfo) - asyncNotifyEvent(d, &util.Event{Tp: model.ActionCreateTable, TableInfo: tbInfo}) + createTableEvent := statsutil.NewCreateTableEvent( + tbInfo, + ) + asyncNotifyEvent(d, createTableEvent) return ver, errors.Trace(err) } @@ -242,7 +245,10 @@ func onCreateTables(d *ddlCtx, t *meta.Meta, job *model.Job) (int64, error) { job.BinlogInfo.SetTableInfos(ver, args) for i := range args { - asyncNotifyEvent(d, &util.Event{Tp: model.ActionCreateTable, TableInfo: args[i]}) + createTableEvent := statsutil.NewCreateTableEvent( + args[i], + ) + asyncNotifyEvent(d, createTableEvent) } return ver, errors.Trace(err) @@ -318,7 +324,6 @@ func onCreateView(d *ddlCtx, t *meta.Meta, job *model.Job) (ver int64, _ error) } // Finish this job. job.FinishTableJob(model.JobStateDone, model.StatePublic, ver, tbInfo) - asyncNotifyEvent(d, &util.Event{Tp: model.ActionCreateView, TableInfo: tbInfo}) return ver, nil default: return ver, dbterror.ErrInvalidDDLState.GenWithStackByArgs("table", tbInfo.State) @@ -388,10 +393,11 @@ func onDropTableOrView(d *ddlCtx, t *meta.Meta, job *model.Job) (ver int64, _ er job.FinishTableJob(model.JobStateDone, model.StateNone, ver, tblInfo) startKey := tablecodec.EncodeTablePrefix(job.TableID) job.Args = append(job.Args, startKey, oldIDs, ruleIDs) - if tblInfo.IsSequence() { - asyncNotifyEvent(d, &util.Event{Tp: model.ActionDropSequence, TableInfo: tblInfo}) - } else if !tblInfo.IsView() { - asyncNotifyEvent(d, &util.Event{Tp: model.ActionDropTable, TableInfo: tblInfo}) + if !tblInfo.IsSequence() && !tblInfo.IsView() { + dropTableEvent := statsutil.NewDropTableEvent( + tblInfo, + ) + asyncNotifyEvent(d, dropTableEvent) } default: return ver, errors.Trace(dbterror.ErrInvalidDDLState.GenWithStackByArgs("table", tblInfo.State)) @@ -706,6 +712,8 @@ func (w *worker) onTruncateTable(d *ddlCtx, t *meta.Meta, job *model.Job) (ver i job.State = model.JobStateCancelled return ver, infoschema.ErrTableNotExists.GenWithStackByArgs(job.SchemaName, tblInfo.Name.O) } + // Copy the old tableInfo for later usage. + oldTblInfo := tblInfo.Clone() err = checkTruncateTableHasForeignKeyReferredInOwner(d, t, job, tblInfo, fkCheck) if err != nil { return ver, err @@ -830,7 +838,11 @@ func (w *worker) onTruncateTable(d *ddlCtx, t *meta.Meta, job *model.Job) (ver i return ver, errors.Trace(err) } job.FinishTableJob(model.JobStateDone, model.StatePublic, ver, tblInfo) - asyncNotifyEvent(d, &util.Event{Tp: model.ActionTruncateTable, TableInfo: tblInfo}) + truncateTableEvent := statsutil.NewTruncateTableEvent( + tblInfo, + oldTblInfo, + ) + asyncNotifyEvent(d, truncateTableEvent) startKey := tablecodec.EncodeTablePrefix(tableID) job.Args = []interface{}{startKey, oldPartitionIDs} return ver, nil @@ -1623,7 +1635,6 @@ func onRepairTable(d *ddlCtx, t *meta.Meta, job *model.Job) (ver int64, _ error) } // Finish this job. job.FinishTableJob(model.JobStateDone, model.StatePublic, ver, tblInfo) - asyncNotifyEvent(d, &util.Event{Tp: model.ActionRepairTable, TableInfo: tblInfo}) return ver, nil default: return ver, dbterror.ErrInvalidDDLState.GenWithStackByArgs("table", tblInfo.State) diff --git a/pkg/ddl/table_modify_test.go b/pkg/ddl/table_modify_test.go index 975c09f518a55..1b69aed2d66e1 100644 --- a/pkg/ddl/table_modify_test.go +++ b/pkg/ddl/table_modify_test.go @@ -26,7 +26,7 @@ import ( "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/terror" - "github.com/pingcap/tidb/pkg/session" + sessiontypes "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/sessiontxn" "github.com/pingcap/tidb/pkg/testkit" "github.com/pingcap/tidb/pkg/util" @@ -127,7 +127,7 @@ func TestConcurrentLockTables(t *testing.T) { tk2.MustExec("unlock tables") } -func testParallelExecSQL(t *testing.T, store kv.Storage, dom *domain.Domain, sql1, sql2 string, se1, se2 session.Session, f func(t *testing.T, err1, err2 error)) { +func testParallelExecSQL(t *testing.T, store kv.Storage, dom *domain.Domain, sql1, sql2 string, se1, se2 sessiontypes.Session, f func(t *testing.T, err1, err2 error)) { callback := &callback.TestDDLCallback{} times := 0 callback.OnJobRunBeforeExported = func(job *model.Job) { diff --git a/pkg/ddl/tests/fk/BUILD.bazel b/pkg/ddl/tests/fk/BUILD.bazel index 22a339f714056..74117f2294ce4 100644 --- a/pkg/ddl/tests/fk/BUILD.bazel +++ b/pkg/ddl/tests/fk/BUILD.bazel @@ -8,7 +8,7 @@ go_test( "main_test.go", ], flaky = True, - shard_count = 25, + shard_count = 17, deps = [ "//pkg/config", "//pkg/ddl", diff --git a/pkg/ddl/tests/fk/foreign_key_test.go b/pkg/ddl/tests/fk/foreign_key_test.go index 210867ccc7529..fd83b7344a3cf 100644 --- a/pkg/ddl/tests/fk/foreign_key_test.go +++ b/pkg/ddl/tests/fk/foreign_key_test.go @@ -457,23 +457,6 @@ func TestRenameTableWithForeignKeyMetaInfo(t *testing.T) { ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin")) } -func TestCreateTableWithForeignKeyDML(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("set @@global.tidb_enable_foreign_key=1") - tk.MustExec("use test") - tk.MustExec("create table t1 (id int key, a int);") - tk.MustExec("begin") - tk.MustExec("insert into t1 values (1, 1)") - tk.MustExec("update t1 set a = 2 where id = 1") - - tk2 := testkit.NewTestKit(t, store) - tk2.MustExec("use test") - tk2.MustExec("create table t2 (id int key, b int, foreign key fk_b(b) references test.t1(id))") - - tk.MustExec("commit") -} - func TestCreateTableWithForeignKeyError(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) @@ -752,40 +735,6 @@ func TestCreateTableWithForeignKeyError(t *testing.T) { } } -func TestModifyColumnWithForeignKey(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("set @@global.tidb_enable_foreign_key=1") - tk.MustExec("set @@foreign_key_checks=1;") - tk.MustExec("use test") - - tk.MustExec("create table t1 (id int key, b varchar(10), index(b));") - tk.MustExec("create table t2 (a varchar(10), constraint fk foreign key (a) references t1(b));") - tk.MustExec("insert into t1 values (1, '123456789');") - tk.MustExec("insert into t2 values ('123456789');") - tk.MustGetErrMsg("alter table t1 modify column b varchar(5);", "[ddl:1833]Cannot change column 'b': used in a foreign key constraint 'fk' of table 'test.t2'") - tk.MustGetErrMsg("alter table t1 modify column b bigint;", "[ddl:3780]Referencing column 'a' and referenced column 'b' in foreign key constraint 'fk' are incompatible.") - tk.MustExec("alter table t1 modify column b varchar(20);") - tk.MustGetErrMsg("alter table t1 modify column b varchar(10);", "[ddl:1833]Cannot change column 'b': used in a foreign key constraint 'fk' of table 'test.t2'") - tk.MustExec("alter table t2 modify column a varchar(20);") - tk.MustExec("alter table t2 modify column a varchar(21);") - tk.MustGetErrMsg("alter table t2 modify column a varchar(5);", "[ddl:1832]Cannot change column 'a': used in a foreign key constraint 'fk'") - tk.MustGetErrMsg("alter table t2 modify column a bigint;", "[ddl:3780]Referencing column 'a' and referenced column 'b' in foreign key constraint 'fk' are incompatible.") - - tk.MustExec("drop table t2") - tk.MustExec("drop table t1") - tk.MustExec("create table t1 (id int key, b decimal(10, 5), index(b));") - tk.MustExec("create table t2 (a decimal(10, 5), constraint fk foreign key (a) references t1(b));") - tk.MustExec("insert into t1 values (1, 12345.67891);") - tk.MustExec("insert into t2 values (12345.67891);") - tk.MustGetErrMsg("alter table t1 modify column b decimal(10, 6);", "[ddl:1833]Cannot change column 'b': used in a foreign key constraint 'fk' of table 'test.t2'") - tk.MustGetErrMsg("alter table t1 modify column b decimal(10, 3);", "[ddl:1833]Cannot change column 'b': used in a foreign key constraint 'fk' of table 'test.t2'") - tk.MustGetErrMsg("alter table t1 modify column b decimal(5, 2);", "[ddl:1833]Cannot change column 'b': used in a foreign key constraint 'fk' of table 'test.t2'") - tk.MustGetErrMsg("alter table t1 modify column b decimal(20, 10);", "[ddl:1833]Cannot change column 'b': used in a foreign key constraint 'fk' of table 'test.t2'") - tk.MustGetErrMsg("alter table t2 modify column a decimal(30, 15);", "[ddl:1832]Cannot change column 'a': used in a foreign key constraint 'fk'") - tk.MustGetErrMsg("alter table t2 modify column a decimal(5, 2);", "[ddl:1832]Cannot change column 'a': used in a foreign key constraint 'fk'") -} - func TestDropChildTableForeignKeyMetaInfo(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) tk := testkit.NewTestKit(t, store) @@ -921,22 +870,6 @@ func TestTruncateOrDropTableWithForeignKeyReferred(t *testing.T) { } } -func TestDropTableWithForeignKeyReferred(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("set @@global.tidb_enable_foreign_key=1") - tk.MustExec("set @@foreign_key_checks=1;") - tk.MustExec("use test") - - tk.MustExec("create table t1 (id int key, b int, index(b));") - tk.MustExec("create table t2 (id int key, b int, foreign key fk_b(b) references t1(id));") - tk.MustExec("create table t3 (id int key, b int, foreign key fk_b(b) references t2(id));") - err := tk.ExecToErr("drop table if exists t1,t2;") - require.Error(t, err) - require.Equal(t, "[ddl:3730]Cannot drop table 't2' referenced by a foreign key constraint 'fk_b' on table 't3'.", err.Error()) - tk.MustQuery("show tables").Check(testkit.Rows("t1", "t2", "t3")) -} - func TestDropIndexNeededInForeignKey(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) @@ -1038,24 +971,6 @@ func getTableInfoReferredForeignKeys(t *testing.T, dom *domain.Domain, db, tb st return dom.InfoSchema().GetTableReferredForeignKeys(db, tb) } -func TestDropColumnWithForeignKey(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("set @@global.tidb_enable_foreign_key=1") - tk.MustExec("set @@foreign_key_checks=1;") - tk.MustExec("use test") - - tk.MustExec("create table t1 (id int key, a int, b int, index(b), CONSTRAINT fk foreign key (a) references t1(b))") - tk.MustGetErrMsg("alter table t1 drop column a;", "[ddl:1828]Cannot drop column 'a': needed in a foreign key constraint 'fk'") - tk.MustGetErrMsg("alter table t1 drop column b;", "[ddl:1829]Cannot drop column 'b': needed in a foreign key constraint 'fk' of table 't1'") - - tk.MustExec("drop table t1") - tk.MustExec("create table t1 (id int key, b int, index(b));") - tk.MustExec("create table t2 (a int, b int, constraint fk foreign key (a) references t1(b));") - tk.MustGetErrMsg("alter table t1 drop column b;", "[ddl:1829]Cannot drop column 'b': needed in a foreign key constraint 'fk' of table 't2'") - tk.MustGetErrMsg("alter table t2 drop column a;", "[ddl:1828]Cannot drop column 'a': needed in a foreign key constraint 'fk'") -} - func TestRenameColumnWithForeignKeyMetaInfo(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) tk := testkit.NewTestKit(t, store) @@ -1143,35 +1058,6 @@ func TestRenameColumnWithForeignKeyMetaInfo(t *testing.T) { ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin")) } -func TestDropDatabaseWithForeignKeyReferred(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("set @@global.tidb_enable_foreign_key=1") - tk.MustExec("set @@foreign_key_checks=1;") - tk.MustExec("use test") - - tk.MustExec("create table t1 (id int key, b int, index(b));") - tk.MustExec("create table t2 (id int key, b int, foreign key fk_b(b) references t1(id));") - tk.MustExec("create database test2") - tk.MustExec("create table test2.t3 (id int key, b int, foreign key fk_b(b) references test.t2(id));") - err := tk.ExecToErr("drop database test;") - require.Error(t, err) - require.Equal(t, "[ddl:3730]Cannot drop table 't2' referenced by a foreign key constraint 'fk_b' on table 't3'.", err.Error()) - tk.MustExec("set @@foreign_key_checks=0;") - tk.MustExec("drop database test") - - tk.MustExec("set @@foreign_key_checks=1;") - tk.MustExec("create database test") - tk.MustExec("use test") - tk.MustExec("create table t1 (id int key, b int, index(b));") - tk.MustExec("create table t2 (id int key, b int, foreign key fk_b(b) references t1(id));") - err = tk.ExecToErr("drop database test;") - require.Error(t, err) - require.Equal(t, "[ddl:3730]Cannot drop table 't2' referenced by a foreign key constraint 'fk_b' on table 't3'.", err.Error()) - tk.MustExec("drop table test2.t3") - tk.MustExec("drop database test") -} - func TestAddForeignKey(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) tk := testkit.NewTestKit(t, store) @@ -1621,35 +1507,6 @@ func getLatestSchemaDiff(t *testing.T, tk *testkit.TestKit) *model.SchemaDiff { return diff } -func TestMultiSchemaAddForeignKey(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("set @@foreign_key_checks=1;") - tk.MustExec("use test") - tk.MustExec("create table t1 (id int key);") - tk.MustExec("create table t2 (a int, b int);") - tk.MustExec("alter table t2 add foreign key (a) references t1(id), add foreign key (b) references t1(id)") - tk.MustExec("alter table t2 add column c int, add column d int") - tk.MustExec("alter table t2 add foreign key (c) references t1(id), add foreign key (d) references t1(id), add index(c), add index(d)") - tk.MustExec("drop table t2") - tk.MustExec("create table t2 (a int, b int, index idx1(a), index idx2(b));") - tk.MustGetErrMsg("alter table t2 drop index idx1, drop index idx2, add foreign key (a) references t1(id), add foreign key (b) references t1(id)", - "[ddl:1553]Cannot drop index 'idx1': needed in a foreign key constraint") - tk.MustExec("alter table t2 drop index idx1, drop index idx2") - tk.MustExec("alter table t2 add foreign key (a) references t1(id), add foreign key (b) references t1(id)") - tk.MustQuery("show create table t2").Check(testkit.Rows("t2 CREATE TABLE `t2` (\n" + - " `a` int(11) DEFAULT NULL,\n" + - " `b` int(11) DEFAULT NULL,\n" + - " KEY `fk_1` (`a`),\n" + - " KEY `fk_2` (`b`),\n" + - " CONSTRAINT `fk_1` FOREIGN KEY (`a`) REFERENCES `test`.`t1` (`id`),\n" + - " CONSTRAINT `fk_2` FOREIGN KEY (`b`) REFERENCES `test`.`t1` (`id`)\n" + - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin")) - tk.MustExec("drop table t2") - tk.MustExec("create table t2 (a int, b int, index idx0(a,b), index idx1(a), index idx2(b));") - tk.MustExec("alter table t2 drop index idx1, add foreign key (a) references t1(id), add foreign key (b) references t1(id)") -} - func TestAddForeignKeyInBigTable(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) @@ -1666,42 +1523,6 @@ func TestAddForeignKeyInBigTable(t *testing.T) { require.Less(t, time.Since(start), time.Minute) } -func TestForeignKeyWithCacheTable(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("set @@foreign_key_checks=1;") - tk.MustExec("use test") - // Test foreign key refer cache table. - tk.MustExec("create table t1 (id int key);") - tk.MustExec("insert into t1 values (1),(2),(3),(4)") - tk.MustExec("alter table t1 cache;") - tk.MustExec("create table t2 (b int);") - tk.MustExec("alter table t2 add constraint fk foreign key (b) references t1(id) on delete cascade on update cascade") - tk.MustExec("insert into t2 values (1),(2),(3),(4)") - tk.MustGetDBError("insert into t2 values (5)", plannercore.ErrNoReferencedRow2) - tk.MustExec("update t1 set id = id+10 where id=1") - tk.MustExec("delete from t1 where id<10") - tk.MustQuery("select * from t1").Check(testkit.Rows("11")) - tk.MustQuery("select * from t2").Check(testkit.Rows("11")) - tk.MustExec("alter table t1 nocache;") - tk.MustExec("drop table t1,t2;") - - // Test add foreign key on cache table. - tk.MustExec("create table t1 (id int key);") - tk.MustExec("create table t2 (b int);") - tk.MustExec("alter table t2 add constraint fk foreign key (b) references t1(id) on delete cascade on update cascade") - tk.MustExec("alter table t2 cache;") - tk.MustExec("insert into t1 values (1),(2),(3),(4)") - tk.MustExec("insert into t2 values (1),(2),(3),(4)") - tk.MustGetDBError("insert into t2 values (5)", plannercore.ErrNoReferencedRow2) - tk.MustExec("update t1 set id = id+10 where id=1") - tk.MustExec("delete from t1 where id<10") - tk.MustQuery("select * from t1").Check(testkit.Rows("11")) - tk.MustQuery("select * from t2").Check(testkit.Rows("11")) - tk.MustExec("alter table t2 nocache;") - tk.MustExec("drop table t1,t2;") -} - func TestForeignKeyAndConcurrentDDL(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) @@ -1810,28 +1631,3 @@ func TestForeignKeyAndConcurrentDDL(t *testing.T) { } } } - -func TestForeignKeyAndRenameIndex(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("set @@foreign_key_checks=1;") - tk.MustExec("use test") - tk.MustExec("create table t1 (id int key, b int, index idx1(b));") - tk.MustExec("create table t2 (id int key, b int, constraint fk foreign key (b) references t1(b));") - tk.MustExec("insert into t1 values (1,1),(2,2)") - tk.MustExec("insert into t2 values (1,1),(2,2)") - tk.MustGetDBError("insert into t2 values (3,3)", plannercore.ErrNoReferencedRow2) - tk.MustGetDBError("delete from t1 where id=1", plannercore.ErrRowIsReferenced2) - tk.MustExec("alter table t1 rename index idx1 to idx2") - tk.MustExec("alter table t2 rename index fk to idx") - tk.MustGetDBError("insert into t2 values (3,3)", plannercore.ErrNoReferencedRow2) - tk.MustGetDBError("delete from t1 where id=1", plannercore.ErrRowIsReferenced2) - tk.MustExec("alter table t2 drop foreign key fk") - tk.MustExec("alter table t2 add foreign key fk (b) references t1(b) on delete cascade on update cascade") - tk.MustExec("alter table t1 rename index idx2 to idx3") - tk.MustExec("alter table t2 rename index idx to idx0") - tk.MustExec("delete from t1 where id=1") - tk.MustQuery("select * from t1").Check(testkit.Rows("2 2")) - tk.MustQuery("select * from t2").Check(testkit.Rows("2 2")) - tk.MustExec("admin check table t1,t2") -} diff --git a/pkg/ddl/tests/indexmerge/merge_test.go b/pkg/ddl/tests/indexmerge/merge_test.go index 5b8445524d334..71081f2c3f4ac 100644 --- a/pkg/ddl/tests/indexmerge/merge_test.go +++ b/pkg/ddl/tests/indexmerge/merge_test.go @@ -97,7 +97,6 @@ func TestAddPrimaryKeyMergeProcess(t *testing.T) { originHook := dom.DDL().GetHook() callback := &callback.TestDDLCallback{ Do: nil, // We'll reload the schema manually. - } onJobUpdatedExportedFunc := func(job *model.Job) { if !runDML && job.Type == model.ActionAddPrimaryKey && job.SchemaState == model.StateWriteReorganization { diff --git a/pkg/ddl/tests/partition/BUILD.bazel b/pkg/ddl/tests/partition/BUILD.bazel index 6f9ba066a2d5c..c3db6c4abdd25 100644 --- a/pkg/ddl/tests/partition/BUILD.bazel +++ b/pkg/ddl/tests/partition/BUILD.bazel @@ -8,7 +8,7 @@ go_test( "main_test.go", ], flaky = True, - shard_count = 47, + shard_count = 48, deps = [ "//pkg/config", "//pkg/ddl", diff --git a/pkg/ddl/tests/partition/db_partition_test.go b/pkg/ddl/tests/partition/db_partition_test.go index 83acd8251234f..f315d3c5d25cd 100644 --- a/pkg/ddl/tests/partition/db_partition_test.go +++ b/pkg/ddl/tests/partition/db_partition_test.go @@ -3645,4 +3645,152 @@ func TestRemovePartitioningAutoIDs(t *testing.T) { "32 31 10", "35 34 21", "38 37 22", "41 40 23")) } +func TestAlterLastIntervalPartition(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec(`use test`) + tk.MustExec(`create table t (id int, create_time datetime) + partition by range columns (create_time) + interval (1 day) + first partition less than ('2023-01-01') + last partition less than ('2023-01-03');`) + ctx := tk.Session() + tbl, err := domain.GetDomain(ctx).InfoSchema().TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + pd := tbl.Meta().Partition.Definitions + require.Equal(t, 3, len(pd)) + require.Equal(t, "'2023-01-01 00:00:00'", pd[0].LessThan[0]) + require.Equal(t, "'2023-01-02 00:00:00'", pd[1].LessThan[0]) + require.Equal(t, "'2023-01-03 00:00:00'", pd[2].LessThan[0]) + tk.MustExec("alter table t last partition less than ('2024-01-04')") + tk.MustExec("alter table t last partition less than ('2025-01-01 00:00:00')") + tbl, err = domain.GetDomain(ctx).InfoSchema().TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + pd = tbl.Meta().Partition.Definitions + require.Equal(t, 732, len(pd)) + require.Equal(t, "'2023-01-01 00:00:00'", pd[0].LessThan[0]) + require.Equal(t, "'2023-01-02 00:00:00'", pd[1].LessThan[0]) + require.Equal(t, "'2023-01-03 00:00:00'", pd[2].LessThan[0]) + require.Equal(t, "'2024-12-31 00:00:00'", pd[730].LessThan[0]) + require.Equal(t, "'2025-01-01 00:00:00'", pd[731].LessThan[0]) + + // Test for interval 2 days. + tk.MustExec(`create table t2 (id int, create_time datetime) + partition by range columns (create_time) + interval (2 day) + first partition less than ('2023-01-01') + last partition less than ('2023-01-05');`) + tbl, err = domain.GetDomain(ctx).InfoSchema().TableByName(model.NewCIStr("test"), model.NewCIStr("t2")) + require.NoError(t, err) + pd = tbl.Meta().Partition.Definitions + require.Equal(t, 3, len(pd)) + require.Equal(t, "'2023-01-01 00:00:00'", pd[0].LessThan[0]) + require.Equal(t, "'2023-01-03 00:00:00'", pd[1].LessThan[0]) + require.Equal(t, "'2023-01-05 00:00:00'", pd[2].LessThan[0]) + tk.MustExec("alter table t2 last partition less than ('2023-01-09')") + tk.MustExec("alter table t2 last partition less than ('2023-01-11 00:00:00')") + tbl, err = domain.GetDomain(ctx).InfoSchema().TableByName(model.NewCIStr("test"), model.NewCIStr("t2")) + require.NoError(t, err) + pd = tbl.Meta().Partition.Definitions + require.Equal(t, 6, len(pd)) + require.Equal(t, "'2023-01-01 00:00:00'", pd[0].LessThan[0]) + require.Equal(t, "'2023-01-03 00:00:00'", pd[1].LessThan[0]) + require.Equal(t, "'2023-01-05 00:00:00'", pd[2].LessThan[0]) + require.Equal(t, "'2023-01-07 00:00:00'", pd[3].LessThan[0]) + require.Equal(t, "'2023-01-09 00:00:00'", pd[4].LessThan[0]) + require.Equal(t, "'2023-01-11 00:00:00'", pd[5].LessThan[0]) + + // Test for day with time. + tk.MustExec(`create table t3 (id int, create_time datetime) + partition by range columns (create_time) + interval (2 day) + first partition less than ('2023-01-01 12:01:02') + last partition less than ('2023-01-05 12:01:02');`) + tbl, err = domain.GetDomain(ctx).InfoSchema().TableByName(model.NewCIStr("test"), model.NewCIStr("t3")) + require.NoError(t, err) + pd = tbl.Meta().Partition.Definitions + require.Equal(t, 3, len(pd)) + require.Equal(t, "'2023-01-01 12:01:02'", pd[0].LessThan[0]) + require.Equal(t, "'2023-01-03 12:01:02'", pd[1].LessThan[0]) + require.Equal(t, "'2023-01-05 12:01:02'", pd[2].LessThan[0]) + tk.MustExec("alter table t3 last partition less than ('2023-01-09 12:01:02')") + tbl, err = domain.GetDomain(ctx).InfoSchema().TableByName(model.NewCIStr("test"), model.NewCIStr("t3")) + require.NoError(t, err) + pd = tbl.Meta().Partition.Definitions + require.Equal(t, 5, len(pd)) + require.Equal(t, "'2023-01-01 12:01:02'", pd[0].LessThan[0]) + require.Equal(t, "'2023-01-03 12:01:02'", pd[1].LessThan[0]) + require.Equal(t, "'2023-01-05 12:01:02'", pd[2].LessThan[0]) + require.Equal(t, "'2023-01-07 12:01:02'", pd[3].LessThan[0]) + require.Equal(t, "'2023-01-09 12:01:02'", pd[4].LessThan[0]) + + // Some other test. + tk.MustExec(`create table t4 (id int, create_time datetime) + partition by range columns (create_time) + interval (48 hour) + first partition less than ('2023-01-01') + last partition less than ('2023-01-05');`) + tbl, err = domain.GetDomain(ctx).InfoSchema().TableByName(model.NewCIStr("test"), model.NewCIStr("t4")) + require.NoError(t, err) + pd = tbl.Meta().Partition.Definitions + require.Equal(t, 3, len(pd)) + require.Equal(t, "'2023-01-01 00:00:00'", pd[0].LessThan[0]) + require.Equal(t, "'2023-01-03 00:00:00'", pd[1].LessThan[0]) + require.Equal(t, "'2023-01-05 00:00:00'", pd[2].LessThan[0]) + tk.MustExec("alter table t4 last partition less than ('2023-01-09 00:00:00')") + tbl, err = domain.GetDomain(ctx).InfoSchema().TableByName(model.NewCIStr("test"), model.NewCIStr("t4")) + require.NoError(t, err) + pd = tbl.Meta().Partition.Definitions + require.Equal(t, 5, len(pd)) + require.Equal(t, "'2023-01-01 00:00:00'", pd[0].LessThan[0]) + require.Equal(t, "'2023-01-03 00:00:00'", pd[1].LessThan[0]) + require.Equal(t, "'2023-01-05 00:00:00'", pd[2].LessThan[0]) + require.Equal(t, "'2023-01-07 00:00:00'", pd[3].LessThan[0]) + require.Equal(t, "'2023-01-09 00:00:00'", pd[4].LessThan[0]) + tk.MustQuery("show create table t4").Check(testkit.Rows("t4 CREATE TABLE `t4` (\n" + + " `id` int(11) DEFAULT NULL,\n" + + " `create_time` datetime DEFAULT NULL\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n" + + "PARTITION BY RANGE COLUMNS(`create_time`)\n" + + "(PARTITION `P_LT_2023-01-01 00:00:00` VALUES LESS THAN ('2023-01-01 00:00:00'),\n" + + " PARTITION `P_LT_2023-01-03 00:00:00` VALUES LESS THAN ('2023-01-03 00:00:00'),\n" + + " PARTITION `P_LT_2023-01-05 00:00:00` VALUES LESS THAN ('2023-01-05 00:00:00'),\n" + + " PARTITION `P_LT_2023-01-07 00:00:00` VALUES LESS THAN ('2023-01-07 00:00:00'),\n" + + " PARTITION `P_LT_2023-01-09 00:00:00` VALUES LESS THAN ('2023-01-09 00:00:00'))")) + + tk.MustExec(`create table t5 (id int, create_time datetime) + partition by range columns (create_time) + interval (1 month) + first partition less than ('2023-01-01') + last partition less than ('2023-05-01');`) + tk.MustQuery("show create table t5").Check(testkit.Rows("t5 CREATE TABLE `t5` (\n" + + " `id` int(11) DEFAULT NULL,\n" + + " `create_time` datetime DEFAULT NULL\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n" + + "PARTITION BY RANGE COLUMNS(`create_time`)\n" + + "(PARTITION `P_LT_2023-01-01 00:00:00` VALUES LESS THAN ('2023-01-01 00:00:00'),\n" + + " PARTITION `P_LT_2023-02-01 00:00:00` VALUES LESS THAN ('2023-02-01 00:00:00'),\n" + + " PARTITION `P_LT_2023-03-01 00:00:00` VALUES LESS THAN ('2023-03-01 00:00:00'),\n" + + " PARTITION `P_LT_2023-04-01 00:00:00` VALUES LESS THAN ('2023-04-01 00:00:00'),\n" + + " PARTITION `P_LT_2023-05-01 00:00:00` VALUES LESS THAN ('2023-05-01 00:00:00'))")) + + tk.MustExec("CREATE TABLE `t6` (\n" + + " `id` int(11) DEFAULT NULL,\n" + + " `create_time` datetime DEFAULT NULL\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n" + + "PARTITION BY RANGE COLUMNS(`create_time`)\n" + + "(PARTITION `P_LT_2023-01-01` VALUES LESS THAN ('2023-01-01'),\n" + + " PARTITION `P_LT_2023-01-02` VALUES LESS THAN ('2023-01-02'))") + tk.MustExec("alter table t6 last partition less than ('2023-01-04')") + tk.MustQuery("show create table t6").Check(testkit.Rows("t6 CREATE TABLE `t6` (\n" + + " `id` int(11) DEFAULT NULL,\n" + + " `create_time` datetime DEFAULT NULL\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n" + + "PARTITION BY RANGE COLUMNS(`create_time`)\n" + + "(PARTITION `P_LT_2023-01-01` VALUES LESS THAN ('2023-01-01'),\n" + + " PARTITION `P_LT_2023-01-02` VALUES LESS THAN ('2023-01-02'),\n" + + " PARTITION `P_LT_2023-01-03 00:00:00` VALUES LESS THAN ('2023-01-03 00:00:00'),\n" + + " PARTITION `P_LT_2023-01-04 00:00:00` VALUES LESS THAN ('2023-01-04 00:00:00'))")) +} + // TODO: check EXCHANGE how it handles null (for all types of partitioning!!!) diff --git a/pkg/ddl/tests/serial/main_test.go b/pkg/ddl/tests/serial/main_test.go index bb582f02785d0..73100516be9f6 100644 --- a/pkg/ddl/tests/serial/main_test.go +++ b/pkg/ddl/tests/serial/main_test.go @@ -58,7 +58,7 @@ func TestMain(m *testing.M) { conf.Experimental.AllowsExpressionIndex = true }) - _, err := infosync.GlobalInfoSyncerInit(context.Background(), "t", func() uint64 { return 1 }, nil, nil, nil, keyspace.CodecV1, true) + _, err := infosync.GlobalInfoSyncerInit(context.Background(), "t", func() uint64 { return 1 }, nil, nil, nil, nil, keyspace.CodecV1, true) 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 c309da045d59e..79818967e8e8c 100644 --- a/pkg/ddl/tests/serial/serial_test.go +++ b/pkg/ddl/tests/serial/serial_test.go @@ -217,6 +217,12 @@ func TestCreateTableWithLike(t *testing.T) { tk.MustExec("drop database ctwl_db") tk.MustExec("drop database ctwl_db1") + + // Test information_schema.columns copiability. + // See https://github.com/pingcap/tidb/issues/42030. + tk.MustExec("use test") + tk.MustExec("create table cc like information_schema.columns;") + tk.MustExec("insert into cc select * from information_schema.columns;") } func TestCreateTableWithLikeAtTemporaryMode(t *testing.T) { diff --git a/pkg/ddl/testutil/BUILD.bazel b/pkg/ddl/testutil/BUILD.bazel index 12628e9c102f2..54d11c7cc4084 100644 --- a/pkg/ddl/testutil/BUILD.bazel +++ b/pkg/ddl/testutil/BUILD.bazel @@ -10,6 +10,7 @@ go_library( "//pkg/kv", "//pkg/parser/model", "//pkg/session", + "//pkg/session/types", "//pkg/sessiontxn", "//pkg/table", "//pkg/table/tables", diff --git a/pkg/ddl/testutil/testutil.go b/pkg/ddl/testutil/testutil.go index 0fe58f7c34762..1e02e6a28d7a1 100644 --- a/pkg/ddl/testutil/testutil.go +++ b/pkg/ddl/testutil/testutil.go @@ -24,6 +24,7 @@ import ( "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/session" + sessiontypes "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/sessiontxn" "github.com/pingcap/tidb/pkg/table" "github.com/pingcap/tidb/pkg/table/tables" @@ -68,7 +69,7 @@ func ExecMultiSQLInGoroutine(s kv.Storage, dbName string, multiSQL []string, don } // ExtractAllTableHandles extracts all handles of a given table. -func ExtractAllTableHandles(se session.Session, dbName, tbName string) ([]int64, error) { +func ExtractAllTableHandles(se sessiontypes.Session, dbName, tbName string) ([]int64, error) { dom := domain.GetDomain(se) tbl, err := dom.InfoSchema().TableByName(model.NewCIStr(dbName), model.NewCIStr(tbName)) if err != nil { diff --git a/pkg/ddl/util/BUILD.bazel b/pkg/ddl/util/BUILD.bazel index 198b5249f4cf2..49cc6b2eae25e 100644 --- a/pkg/ddl/util/BUILD.bazel +++ b/pkg/ddl/util/BUILD.bazel @@ -4,7 +4,6 @@ go_library( name = "util", srcs = [ "dead_table_lock_checker.go", - "event.go", "mock.go", "util.go", ], diff --git a/pkg/ddl/util/event.go b/pkg/ddl/util/event.go deleted file mode 100644 index 512a702e09416..0000000000000 --- a/pkg/ddl/util/event.go +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2017 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 ( - "fmt" - - "github.com/pingcap/tidb/pkg/parser/model" -) - -// Event is an event that a ddl operation happened. -type Event struct { - TableInfo *model.TableInfo - PartInfo *model.PartitionInfo - IndexInfo *model.IndexInfo - ColumnInfos []*model.ColumnInfo - Tp model.ActionType -} - -// String implements fmt.Stringer interface. -func (e *Event) String() string { - ret := fmt.Sprintf("(Event Type: %s", e.Tp) - if e.TableInfo != nil { - ret += fmt.Sprintf(", Table ID: %d, Table Name %s", e.TableInfo.ID, e.TableInfo.Name) - } - if e.PartInfo != nil { - ids := make([]int64, 0, len(e.PartInfo.Definitions)) - for _, def := range e.PartInfo.Definitions { - ids = append(ids, def.ID) - } - ret += fmt.Sprintf(", Partition IDs: %v", ids) - } - for _, columnInfo := range e.ColumnInfos { - ret += fmt.Sprintf(", Column ID: %d, Column Name %s", columnInfo.ID, columnInfo.Name) - } - if e.IndexInfo != nil { - ret += fmt.Sprintf(", Index ID: %d, Index Name %s", e.IndexInfo.ID, e.IndexInfo.Name) - } - return ret -} diff --git a/pkg/distsql/BUILD.bazel b/pkg/distsql/BUILD.bazel index 64a0f10eb10e7..d7a6488e3c9ad 100644 --- a/pkg/distsql/BUILD.bazel +++ b/pkg/distsql/BUILD.bazel @@ -12,6 +12,7 @@ go_library( deps = [ "//pkg/config", "//pkg/ddl/placement", + "//pkg/errctx", "//pkg/errno", "//pkg/expression", "//pkg/infoschema", diff --git a/pkg/distsql/distsql_test.go b/pkg/distsql/distsql_test.go index 461b29285d11d..00da879d3f59b 100644 --- a/pkg/distsql/distsql_test.go +++ b/pkg/distsql/distsql_test.go @@ -234,7 +234,7 @@ func (resp *mockResponse) Next(context.Context) (kv.ResultSubset, error) { if !canUseChunkRPC(resp.ctx) { datum := types.NewIntDatum(1) bytes := make([]byte, 0, 100) - bytes, _ = codec.EncodeValue(nil, bytes, datum, datum, datum, datum) + bytes, _ = codec.EncodeValue(time.UTC, bytes, datum, datum, datum, datum) chunks = make([]tipb.Chunk, numRows) for i := range chunks { chkData := make([]byte, len(bytes)) diff --git a/pkg/distsql/request_builder.go b/pkg/distsql/request_builder.go index b4d5b81b880bb..ddf61ae60f125 100644 --- a/pkg/distsql/request_builder.go +++ b/pkg/distsql/request_builder.go @@ -19,10 +19,12 @@ import ( "math" "sort" "sync/atomic" + "time" "github.com/pingcap/failpoint" "github.com/pingcap/kvproto/pkg/metapb" "github.com/pingcap/tidb/pkg/ddl/placement" + "github.com/pingcap/tidb/pkg/errctx" "github.com/pingcap/tidb/pkg/infoschema" "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/parser/mysql" @@ -427,9 +429,10 @@ func (builder *RequestBuilder) SetClosestReplicaReadAdjuster(chkFn kv.CoprReques return builder } -// SetConnID sets connection id for the builder. -func (builder *RequestBuilder) SetConnID(connID uint64) *RequestBuilder { +// SetConnIDAndConnAlias sets connection id for the builder. +func (builder *RequestBuilder) SetConnIDAndConnAlias(connID uint64, connAlias string) *RequestBuilder { builder.ConnID = connID + builder.ConnAlias = connAlias return builder } @@ -742,14 +745,23 @@ func indexRangesToKVWithoutSplit(sc *stmtctx.StatementContext, tids []int64, idx // EncodeIndexKey gets encoded keys containing low and high func EncodeIndexKey(sc *stmtctx.StatementContext, ran *ranger.Range) ([]byte, []byte, error) { - low, err := codec.EncodeKey(sc, nil, ran.LowVal...) + tz := time.UTC + errCtx := errctx.StrictNoWarningContext + if sc != nil { + tz = sc.TimeZone() + errCtx = sc.ErrCtx() + } + + low, err := codec.EncodeKey(tz, nil, ran.LowVal...) + err = errCtx.HandleError(err) if err != nil { return nil, nil, err } if ran.LowExclude { low = kv.Key(low).PrefixNext() } - high, err := codec.EncodeKey(sc, nil, ran.HighVal...) + high, err := codec.EncodeKey(tz, nil, ran.HighVal...) + err = errCtx.HandleError(err) if err != nil { return nil, nil, err } diff --git a/pkg/disttask/framework/BUILD.bazel b/pkg/disttask/framework/BUILD.bazel index 600e605ce4383..a73a7a3a7d405 100644 --- a/pkg/disttask/framework/BUILD.bazel +++ b/pkg/disttask/framework/BUILD.bazel @@ -13,7 +13,7 @@ go_test( ], flaky = True, race = "off", - shard_count = 31, + shard_count = 32, deps = [ "//pkg/disttask/framework/dispatcher", "//pkg/disttask/framework/handle", @@ -26,6 +26,7 @@ go_test( "//pkg/testkit", "@com_github_pingcap_failpoint//:failpoint", "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//util", "@org_uber_go_mock//gomock", ], ) diff --git a/pkg/disttask/framework/dispatcher/dispatcher.go b/pkg/disttask/framework/dispatcher/dispatcher.go index 608488dbe0b54..4afbd196758f2 100644 --- a/pkg/disttask/framework/dispatcher/dispatcher.go +++ b/pkg/disttask/framework/dispatcher/dispatcher.go @@ -138,7 +138,7 @@ func (*BaseDispatcher) Close() { // refreshTask fetch task state from tidb_global_task table. func (d *BaseDispatcher) refreshTask() error { - newTask, err := d.taskMgr.GetGlobalTaskByID(d.Task.ID) + newTask, err := d.taskMgr.GetGlobalTaskByID(d.ctx, d.Task.ID) if err != nil { logutil.Logger(d.logCtx).Error("refresh task failed", zap.Error(err)) return err @@ -166,7 +166,7 @@ func (d *BaseDispatcher) scheduleTask() { } failpoint.Inject("cancelTaskAfterRefreshTask", func(val failpoint.Value) { if val.(bool) && d.Task.State == proto.TaskStateRunning { - err := d.taskMgr.CancelGlobalTask(d.Task.ID) + err := d.taskMgr.CancelGlobalTask(d.ctx, d.Task.ID) if err != nil { logutil.Logger(d.logCtx).Error("cancel task failed", zap.Error(err)) } @@ -175,7 +175,7 @@ func (d *BaseDispatcher) scheduleTask() { failpoint.Inject("pausePendingTask", func(val failpoint.Value) { if val.(bool) && d.Task.State == proto.TaskStatePending { - _, err := d.taskMgr.PauseTask(d.Task.Key) + _, err := d.taskMgr.PauseTask(d.ctx, d.Task.Key) if err != nil { logutil.Logger(d.logCtx).Error("pause task failed", zap.Error(err)) } @@ -185,7 +185,7 @@ func (d *BaseDispatcher) scheduleTask() { failpoint.Inject("pauseTaskAfterRefreshTask", func(val failpoint.Value) { if val.(bool) && d.Task.State == proto.TaskStateRunning { - _, err := d.taskMgr.PauseTask(d.Task.Key) + _, err := d.taskMgr.PauseTask(d.ctx, d.Task.Key) if err != nil { logutil.Logger(d.logCtx).Error("pause task failed", zap.Error(err)) } @@ -243,7 +243,7 @@ func (d *BaseDispatcher) onCancelling() error { // handle task in pausing state, cancel all running subtasks. func (d *BaseDispatcher) onPausing() error { logutil.Logger(d.logCtx).Info("on pausing state", zap.Stringer("state", d.Task.State), zap.Int64("stage", int64(d.Task.Step))) - cnt, err := d.taskMgr.GetSubtaskInStatesCnt(d.Task.ID, proto.TaskStateRunning, proto.TaskStatePending) + cnt, err := d.taskMgr.GetSubtaskInStatesCnt(d.ctx, d.Task.ID, proto.TaskStateRunning, proto.TaskStatePending) if err != nil { logutil.Logger(d.logCtx).Warn("check task failed", zap.Error(err)) return err @@ -276,7 +276,7 @@ var TestSyncChan = make(chan struct{}) // handle task in resuming state func (d *BaseDispatcher) onResuming() error { logutil.Logger(d.logCtx).Info("on resuming state", zap.Stringer("state", d.Task.State), zap.Int64("stage", int64(d.Task.Step))) - cnt, err := d.taskMgr.GetSubtaskInStatesCnt(d.Task.ID, proto.TaskStatePaused) + cnt, err := d.taskMgr.GetSubtaskInStatesCnt(d.ctx, d.Task.ID, proto.TaskStatePaused) if err != nil { logutil.Logger(d.logCtx).Warn("check task failed", zap.Error(err)) return err @@ -291,13 +291,13 @@ func (d *BaseDispatcher) onResuming() error { return err } - return d.taskMgr.ResumeSubtasks(d.Task.ID) + return d.taskMgr.ResumeSubtasks(d.ctx, d.Task.ID) } // handle task in reverting state, check all revert subtasks finished. func (d *BaseDispatcher) onReverting() error { logutil.Logger(d.logCtx).Debug("on reverting state", zap.Stringer("state", d.Task.State), zap.Int64("stage", int64(d.Task.Step))) - cnt, err := d.taskMgr.GetSubtaskInStatesCnt(d.Task.ID, proto.TaskStateRevertPending, proto.TaskStateReverting) + cnt, err := d.taskMgr.GetSubtaskInStatesCnt(d.ctx, d.Task.ID, proto.TaskStateRevertPending, proto.TaskStateReverting) if err != nil { logutil.Logger(d.logCtx).Warn("check task failed", zap.Error(err)) return err @@ -323,7 +323,7 @@ func (d *BaseDispatcher) onPending() error { // If subtasks finished, run into the next stage. func (d *BaseDispatcher) onRunning() error { logutil.Logger(d.logCtx).Debug("on running state", zap.Stringer("state", d.Task.State), zap.Int64("stage", int64(d.Task.Step))) - subTaskErrs, err := d.taskMgr.CollectSubTaskError(d.Task.ID) + subTaskErrs, err := d.taskMgr.CollectSubTaskError(d.ctx, d.Task.ID) if err != nil { logutil.Logger(d.logCtx).Warn("collect subtask error failed", zap.Error(err)) return err @@ -333,7 +333,7 @@ func (d *BaseDispatcher) onRunning() error { return d.onErrHandlingStage(subTaskErrs) } // check current stage finished. - cnt, err := d.taskMgr.GetSubtaskInStatesCnt(d.Task.ID, proto.TaskStatePending, proto.TaskStateRunning) + cnt, err := d.taskMgr.GetSubtaskInStatesCnt(d.ctx, d.Task.ID, proto.TaskStatePending, proto.TaskStateRunning) if err != nil { logutil.Logger(d.logCtx).Warn("check task failed", zap.Error(err)) return err @@ -355,13 +355,13 @@ func (d *BaseDispatcher) onRunning() error { func (d *BaseDispatcher) onFinished() error { metrics.UpdateMetricsForFinishTask(d.Task) logutil.Logger(d.logCtx).Debug("schedule task, task is finished", zap.Stringer("state", d.Task.State)) - return d.taskMgr.TransferSubTasks2History(d.Task.ID) + return d.taskMgr.TransferSubTasks2History(d.ctx, d.Task.ID) } func (d *BaseDispatcher) replaceDeadNodesIfAny() error { if len(d.taskNodes) == 0 { var err error - d.taskNodes, err = d.taskMgr.GetSchedulerIDsByTaskIDAndStep(d.Task.ID, d.Task.Step) + d.taskNodes, err = d.taskMgr.GetSchedulerIDsByTaskIDAndStep(d.ctx, d.Task.ID, d.Task.Step) if err != nil { return err } @@ -411,10 +411,10 @@ func (d *BaseDispatcher) replaceDeadNodesIfAny() error { } if len(replaceNodes) > 0 { logutil.Logger(d.logCtx).Info("reschedule subtasks to other nodes", zap.Int("node-cnt", len(replaceNodes))) - if err := d.taskMgr.UpdateFailedSchedulerIDs(d.Task.ID, replaceNodes); err != nil { + if err := d.taskMgr.UpdateFailedSchedulerIDs(d.ctx, d.Task.ID, replaceNodes); err != nil { return err } - if err := d.taskMgr.CleanUpMeta(cleanNodes); err != nil { + if err := d.taskMgr.CleanUpMeta(d.ctx, cleanNodes); err != nil { return err } // replace local cache. @@ -441,7 +441,7 @@ func (d *BaseDispatcher) updateTask(taskState proto.TaskState, newSubTasks []*pr } failpoint.Inject("cancelBeforeUpdate", func() { - err := d.taskMgr.CancelGlobalTask(d.Task.ID) + err := d.taskMgr.CancelGlobalTask(d.ctx, d.Task.ID) if err != nil { logutil.Logger(d.logCtx).Error("cancel task failed", zap.Error(err)) } @@ -449,7 +449,7 @@ func (d *BaseDispatcher) updateTask(taskState proto.TaskState, newSubTasks []*pr var retryable bool for i := 0; i < retryTimes; i++ { - retryable, err = d.taskMgr.UpdateGlobalTaskAndAddSubTasks(d.Task, newSubTasks, prevState) + retryable, err = d.taskMgr.UpdateGlobalTaskAndAddSubTasks(d.ctx, d.Task, newSubTasks, prevState) if err == nil || !retryable { break } @@ -480,16 +480,20 @@ func (d *BaseDispatcher) onErrHandlingStage(receiveErrs []error) error { } func (d *BaseDispatcher) dispatchSubTask4Revert(meta []byte) error { - instanceIDs, err := d.GetAllSchedulerIDs(d.ctx, d.Task) - if err != nil { - logutil.Logger(d.logCtx).Warn("get task's all instances failed", zap.Error(err)) - return err - } + var subTasks []*proto.Subtask + // when step of task is `StepInit`, no need to do revert + if d.Task.Step != proto.StepInit { + instanceIDs, err := d.GetAllSchedulerIDs(d.ctx, d.Task) + if err != nil { + logutil.Logger(d.logCtx).Warn("get task's all instances failed", zap.Error(err)) + return err + } - subTasks := make([]*proto.Subtask, 0, len(instanceIDs)) - for _, id := range instanceIDs { - // reverting subtasks belong to the same step as current active step. - subTasks = append(subTasks, proto.NewSubtask(d.Task.Step, d.Task.ID, d.Task.Type, id, meta)) + subTasks = make([]*proto.Subtask, 0, len(instanceIDs)) + for _, id := range instanceIDs { + // reverting subtasks belong to the same step as current active step. + subTasks = append(subTasks, proto.NewSubtask(d.Task.Step, d.Task.ID, d.Task.Type, id, meta)) + } } return d.updateTask(proto.TaskStateReverting, subTasks, RetrySQLTimes) } @@ -615,6 +619,10 @@ func (d *BaseDispatcher) dispatchSubTask( logutil.Logger(d.logCtx).Debug("create subtasks", zap.String("instanceID", instanceID)) subTasks = append(subTasks, proto.NewSubtask(subtaskStep, d.Task.ID, d.Task.Type, instanceID, meta)) } + failpoint.Inject("cancelBeforeUpdateTask", func() { + _ = d.updateTask(proto.TaskStateCancelling, subTasks, RetrySQLTimes) + }) + return d.updateTask(d.Task.State, subTasks, RetrySQLTimes) } @@ -658,13 +666,13 @@ func GenerateSchedulerNodes(ctx context.Context) (serverNodes []*infosync.Server } func (d *BaseDispatcher) filterByRole(infos []*infosync.ServerInfo) ([]*infosync.ServerInfo, error) { - nodes, err := d.taskMgr.GetNodesByRole("background") + nodes, err := d.taskMgr.GetNodesByRole(d.ctx, "background") if err != nil { return nil, err } if len(nodes) == 0 { - nodes, err = d.taskMgr.GetNodesByRole("") + nodes, err = d.taskMgr.GetNodesByRole(d.ctx, "") } if err != nil { @@ -693,7 +701,7 @@ func (d *BaseDispatcher) GetAllSchedulerIDs(ctx context.Context, task *proto.Tas return nil, nil } - schedulerIDs, err := d.taskMgr.GetSchedulerIDsByTaskID(task.ID) + schedulerIDs, err := d.taskMgr.GetSchedulerIDsByTaskID(d.ctx, task.ID) if err != nil { return nil, err } @@ -708,7 +716,7 @@ func (d *BaseDispatcher) GetAllSchedulerIDs(ctx context.Context, task *proto.Tas // GetPreviousSubtaskMetas get subtask metas from specific step. func (d *BaseDispatcher) GetPreviousSubtaskMetas(taskID int64, step proto.Step) ([][]byte, error) { - previousSubtasks, err := d.taskMgr.GetSucceedSubtasksByStep(taskID, step) + previousSubtasks, err := d.taskMgr.GetSucceedSubtasksByStep(d.ctx, taskID, step) if err != nil { logutil.Logger(d.logCtx).Warn("get previous succeed subtask failed", zap.Int64("step", int64(step))) return nil, err @@ -722,7 +730,7 @@ func (d *BaseDispatcher) GetPreviousSubtaskMetas(taskID int64, step proto.Step) // GetPreviousSchedulerIDs gets scheduler IDs that run previous step. func (d *BaseDispatcher) GetPreviousSchedulerIDs(_ context.Context, taskID int64, step proto.Step) ([]string, error) { - return d.taskMgr.GetSchedulerIDsByTaskIDAndStep(taskID, step) + return d.taskMgr.GetSchedulerIDsByTaskIDAndStep(d.ctx, taskID, step) } // WithNewSession executes the function with a new session. diff --git a/pkg/disttask/framework/dispatcher/dispatcher_manager.go b/pkg/disttask/framework/dispatcher/dispatcher_manager.go index 96cc551874452..0f147782153f6 100644 --- a/pkg/disttask/framework/dispatcher/dispatcher_manager.go +++ b/pkg/disttask/framework/dispatcher/dispatcher_manager.go @@ -169,6 +169,7 @@ func (dm *Manager) dispatchTaskLoop() { // TODO: Consider getting these tasks, in addition to the task being worked on.. tasks, err := dm.taskMgr.GetGlobalTasksInStates( + dm.ctx, proto.TaskStatePending, proto.TaskStateRunning, proto.TaskStateReverting, @@ -223,7 +224,7 @@ func (dm *Manager) failTask(task *proto.Task, err error) { prevState := task.State task.State = proto.TaskStateFailed task.Error = err - if _, err2 := dm.taskMgr.UpdateGlobalTaskAndAddSubTasks(task, nil, prevState); err2 != nil { + if _, err2 := dm.taskMgr.UpdateGlobalTaskAndAddSubTasks(dm.ctx, task, nil, prevState); err2 != nil { logutil.BgLogger().Warn("failed to update task state to failed", zap.Int64("task-id", task.ID), zap.Error(err2)) } @@ -248,7 +249,7 @@ func (dm *Manager) gcSubtaskHistoryTableLoop() { logutil.BgLogger().Info("subtask history table gc loop exits", zap.Error(dm.ctx.Err())) return case <-ticker.C: - err := dm.taskMgr.GCSubtasks() + err := dm.taskMgr.GCSubtasks(dm.ctx) if err != nil { logutil.BgLogger().Warn("subtask history table gc failed", zap.Error(err)) } else { @@ -318,6 +319,7 @@ func (dm *Manager) doCleanUpRoutine() { logutil.BgLogger().Info("clean up nodes in framework meta since nodes shutdown", zap.Int("cnt", cnt)) } tasks, err := dm.taskMgr.GetGlobalTasksInStates( + dm.ctx, proto.TaskStateFailed, proto.TaskStateReverted, proto.TaskStateSucceed, @@ -350,7 +352,7 @@ func (dm *Manager) CleanUpMeta() int { return 0 } - oldNodes, err := dm.taskMgr.GetAllNodes() + oldNodes, err := dm.taskMgr.GetAllNodes(dm.ctx) if err != nil { logutil.BgLogger().Warn("get all nodes met error") return 0 @@ -366,7 +368,7 @@ func (dm *Manager) CleanUpMeta() int { return 0 } logutil.BgLogger().Info("start to clean up dist_framework_meta") - err = dm.taskMgr.CleanUpMeta(cleanNodes) + err = dm.taskMgr.CleanUpMeta(dm.ctx, cleanNodes) if err != nil { logutil.BgLogger().Warn("clean up dist_framework_meta met error") return 0 @@ -396,7 +398,7 @@ func (dm *Manager) cleanUpFinishedTasks(tasks []*proto.Task) error { logutil.BgLogger().Warn("cleanUp routine failed", zap.Error(errors.Trace(firstErr))) } - return dm.taskMgr.TransferTasks2History(cleanedTasks) + return dm.taskMgr.TransferTasks2History(dm.ctx, cleanedTasks) } // MockDispatcher mock one dispatcher for one task, only used for tests. diff --git a/pkg/disttask/framework/dispatcher/dispatcher_manager_test.go b/pkg/disttask/framework/dispatcher/dispatcher_manager_test.go index d056961abc9d4..335b00f1dd4ad 100644 --- a/pkg/disttask/framework/dispatcher/dispatcher_manager_test.go +++ b/pkg/disttask/framework/dispatcher/dispatcher_manager_test.go @@ -25,6 +25,7 @@ import ( "github.com/pingcap/tidb/pkg/disttask/framework/proto" "github.com/pingcap/tidb/pkg/testkit" "github.com/stretchr/testify/require" + "github.com/tikv/client-go/v2/util" "go.uber.org/mock/gomock" ) @@ -37,6 +38,8 @@ func TestCleanUpRoutine(t *testing.T) { defer pool.Close() ctrl := gomock.NewController(t) defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher_manager") dsp, mgr := MockDispatcherManager(t, pool) mockCleanupRountine := mock.NewMockCleanUpRoutine(ctrl) @@ -53,16 +56,15 @@ func TestCleanUpRoutine(t *testing.T) { }) dsp.Start() defer dsp.Stop() - require.NoError(t, mgr.StartManager(":4000", "background")) - - taskID, err := mgr.AddNewGlobalTask("test", proto.TaskTypeExample, 1, nil) + require.NoError(t, mgr.StartManager(ctx, ":4000", "background")) + taskID, err := mgr.AddNewGlobalTask(ctx, "test", proto.TaskTypeExample, 1, nil) require.NoError(t, err) checkTaskRunningCnt := func() []*proto.Task { var tasks []*proto.Task require.Eventually(t, func() bool { var err error - tasks, err = mgr.GetGlobalTasksInStates(proto.TaskStateRunning) + tasks, err = mgr.GetGlobalTasksInStates(ctx, proto.TaskStateRunning) require.NoError(t, err) return len(tasks) == 1 }, time.Second, 50*time.Millisecond) @@ -71,7 +73,7 @@ func TestCleanUpRoutine(t *testing.T) { checkSubtaskCnt := func(tasks []*proto.Task, taskID int64) { require.Eventually(t, func() bool { - cnt, err := mgr.GetSubtaskInStatesCnt(taskID, proto.TaskStatePending) + cnt, err := mgr.GetSubtaskInStatesCnt(ctx, taskID, proto.TaskStatePending) require.NoError(t, err) return int64(subtaskCnt) == cnt }, time.Second, 50*time.Millisecond) @@ -80,12 +82,12 @@ func TestCleanUpRoutine(t *testing.T) { tasks := checkTaskRunningCnt() checkSubtaskCnt(tasks, taskID) for i := 1; i <= subtaskCnt; i++ { - err = mgr.UpdateSubtaskStateAndError(int64(i), proto.TaskStateSucceed, nil) + err = mgr.UpdateSubtaskStateAndError(ctx, ":4000", int64(i), proto.TaskStateSucceed, nil) require.NoError(t, err) } dsp.DoCleanUpRoutine() require.Eventually(t, func() bool { - tasks, err := mgr.GetGlobalTasksFromHistoryInStates(proto.TaskStateSucceed) + tasks, err := mgr.GetGlobalTasksFromHistoryInStates(ctx, proto.TaskStateSucceed) require.NoError(t, err) return len(tasks) != 0 }, time.Second*10, time.Millisecond*300) @@ -114,17 +116,17 @@ func TestCleanUpMeta(t *testing.T) { return mockCleanupRountine }) - mockTaskMgr.EXPECT().GetAllNodes().Return([]string{":4000", ":4001"}, nil) - mockTaskMgr.EXPECT().CleanUpMeta(gomock.Any()).Return(nil) + mockTaskMgr.EXPECT().GetAllNodes(gomock.Any()).Return([]string{":4000", ":4001"}, nil) + mockTaskMgr.EXPECT().CleanUpMeta(gomock.Any(), gomock.Any()).Return(nil) mockCleanupRountine.EXPECT().CleanUp(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() require.Equal(t, 1, dspMgr.CleanUpMeta()) - mockTaskMgr.EXPECT().GetAllNodes().Return([]string{":4000"}, nil) + mockTaskMgr.EXPECT().GetAllNodes(gomock.Any()).Return([]string{":4000"}, nil) mockCleanupRountine.EXPECT().CleanUp(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() require.Equal(t, 0, dspMgr.CleanUpMeta()) - mockTaskMgr.EXPECT().GetAllNodes().Return([]string{":4000", ":4001", ":4003"}, nil) - mockTaskMgr.EXPECT().CleanUpMeta(gomock.Any()).Return(nil) + mockTaskMgr.EXPECT().GetAllNodes(gomock.Any()).Return([]string{":4000", ":4001", ":4003"}, nil) + mockTaskMgr.EXPECT().CleanUpMeta(gomock.Any(), gomock.Any()).Return(nil) mockCleanupRountine.EXPECT().CleanUp(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() require.Equal(t, 2, dspMgr.CleanUpMeta()) } diff --git a/pkg/disttask/framework/dispatcher/dispatcher_test.go b/pkg/disttask/framework/dispatcher/dispatcher_test.go index 045f1a9314cc2..2b82142489e91 100644 --- a/pkg/disttask/framework/dispatcher/dispatcher_test.go +++ b/pkg/disttask/framework/dispatcher/dispatcher_test.go @@ -119,7 +119,7 @@ func (*numberExampleDispatcherExt) GetNextStep(task *proto.Task) proto.Step { func MockDispatcherManager(t *testing.T, pool *pools.ResourcePool) (*dispatcher.Manager, *storage.TaskManager) { ctx := context.WithValue(context.Background(), "etcd", true) - mgr := storage.NewTaskManager(util.WithInternalSourceType(ctx, "taskManager"), pool) + mgr := storage.NewTaskManager(pool) storage.SetTaskManager(mgr) dsp, err := dispatcher.NewManager(util.WithInternalSourceType(ctx, "dispatcher"), mgr, "host:port") require.NoError(t, err) @@ -152,6 +152,8 @@ func deleteTasks(t *testing.T, store kv.Storage, taskID int64) { func TestGetInstance(t *testing.T) { ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + store := testkit.CreateMockStore(t) gtk := testkit.NewTestKit(t, store) pool := pools.NewResourcePool(func() (pools.Resource, error) { @@ -197,7 +199,7 @@ func TestGetInstance(t *testing.T) { TaskID: task.ID, SchedulerID: serverIDs[1], } - err = mgr.AddNewSubTask(task.ID, proto.StepInit, subtask.SchedulerID, nil, subtask.Type, true) + err = mgr.AddNewSubTask(ctx, task.ID, proto.StepInit, subtask.SchedulerID, nil, subtask.Type, true) require.NoError(t, err) instanceIDs, err = dsp.GetAllSchedulerIDs(ctx, task) require.NoError(t, err) @@ -209,7 +211,7 @@ func TestGetInstance(t *testing.T) { TaskID: task.ID, SchedulerID: serverIDs[0], } - err = mgr.AddNewSubTask(task.ID, proto.StepInit, subtask.SchedulerID, nil, subtask.Type, true) + err = mgr.AddNewSubTask(ctx, task.ID, proto.StepInit, subtask.SchedulerID, nil, subtask.Type, true) require.NoError(t, err) instanceIDs, err = dsp.GetAllSchedulerIDs(ctx, task) require.NoError(t, err) @@ -227,6 +229,8 @@ func TestTaskFailInManager(t *testing.T) { defer pool.Close() ctrl := gomock.NewController(t) defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "handle_test") mockDispatcher := mock.NewMockDispatcher(ctrl) mockDispatcher.EXPECT().Init().Return(errors.New("mock dispatcher init error")) @@ -240,20 +244,20 @@ func TestTaskFailInManager(t *testing.T) { defer dspManager.Stop() // unknown task type - taskID, err := mgr.AddNewGlobalTask("test", "test-type", 1, nil) + taskID, err := mgr.AddNewGlobalTask(ctx, "test", "test-type", 1, nil) require.NoError(t, err) require.Eventually(t, func() bool { - task, err := mgr.GetGlobalTaskByID(taskID) + task, err := mgr.GetGlobalTaskByID(ctx, taskID) require.NoError(t, err) return task.State == proto.TaskStateFailed && strings.Contains(task.Error.Error(), "unknown task type") }, time.Second*10, time.Millisecond*300) // dispatcher init error - taskID, err = mgr.AddNewGlobalTask("test2", proto.TaskTypeExample, 1, nil) + taskID, err = mgr.AddNewGlobalTask(ctx, "test2", proto.TaskTypeExample, 1, nil) require.NoError(t, err) require.Eventually(t, func() bool { - task, err := mgr.GetGlobalTaskByID(taskID) + task, err := mgr.GetGlobalTaskByID(ctx, taskID) require.NoError(t, err) return task.State == proto.TaskStateFailed && strings.Contains(task.Error.Error(), "mock dispatcher init error") @@ -280,6 +284,9 @@ func checkDispatch(t *testing.T, taskCnt int, isSucc, isCancel, isSubtaskCancel, }, 1, 1, time.Second) defer pool.Close() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + dsp, mgr := MockDispatcherManager(t, pool) dispatcher.RegisterDispatcherFactory(proto.TaskTypeExample, func(ctx context.Context, taskMgr dispatcher.TaskManager, serverID string, task *proto.Task) dispatcher.Dispatcher { @@ -296,7 +303,7 @@ func checkDispatch(t *testing.T, taskCnt int, isSucc, isCancel, isSubtaskCancel, } }() - require.NoError(t, mgr.StartManager(":4000", "background")) + require.NoError(t, mgr.StartManager(ctx, ":4000", "background")) // 3s cnt := 60 @@ -310,7 +317,7 @@ func checkDispatch(t *testing.T, taskCnt int, isSucc, isCancel, isSubtaskCancel, var tasks []*proto.Task require.Eventually(t, func() bool { var err error - tasks, err = mgr.GetGlobalTasksInStates(proto.TaskStateRunning) + tasks, err = mgr.GetGlobalTasksInStates(ctx, proto.TaskStateRunning) require.NoError(t, err) return len(tasks) == taskCnt }, time.Second, 50*time.Millisecond) @@ -321,7 +328,7 @@ func checkDispatch(t *testing.T, taskCnt int, isSucc, isCancel, isSubtaskCancel, for i, taskID := range taskIDs { require.Equal(t, int64(i+1), tasks[i].ID) require.Eventually(t, func() bool { - cnt, err := mgr.GetSubtaskInStatesCnt(taskID, proto.TaskStatePending) + cnt, err := mgr.GetSubtaskInStatesCnt(ctx, taskID, proto.TaskStatePending) require.NoError(t, err) return int64(subtaskCnt) == cnt }, time.Second, 50*time.Millisecond) @@ -331,7 +338,7 @@ func checkDispatch(t *testing.T, taskCnt int, isSucc, isCancel, isSubtaskCancel, // Mock add tasks. taskIDs := make([]int64, 0, taskCnt) for i := 0; i < taskCnt; i++ { - taskID, err := mgr.AddNewGlobalTask(fmt.Sprintf("%d", i), proto.TaskTypeExample, 0, nil) + taskID, err := mgr.AddNewGlobalTask(ctx, fmt.Sprintf("%d", i), proto.TaskTypeExample, 0, nil) require.NoError(t, err) taskIDs = append(taskIDs, taskID) } @@ -341,7 +348,7 @@ func checkDispatch(t *testing.T, taskCnt int, isSucc, isCancel, isSubtaskCancel, checkSubtaskCnt(tasks, taskIDs) // test parallelism control if taskCnt == 1 { - taskID, err := mgr.AddNewGlobalTask(fmt.Sprintf("%d", taskCnt), proto.TaskTypeExample, 0, nil) + taskID, err := mgr.AddNewGlobalTask(ctx, fmt.Sprintf("%d", taskCnt), proto.TaskTypeExample, 0, nil) require.NoError(t, err) checkGetRunningTaskCnt(taskCnt) // Clean the task. @@ -353,12 +360,12 @@ func checkDispatch(t *testing.T, taskCnt int, isSucc, isCancel, isSubtaskCancel, checkGetTaskState := func(expectedState proto.TaskState) { i := 0 for ; i < cnt; i++ { - tasks, err := mgr.GetGlobalTasksInStates(expectedState) + tasks, err := mgr.GetGlobalTasksInStates(ctx, expectedState) require.NoError(t, err) if len(tasks) == taskCnt { break } - historyTasks, err := mgr.GetGlobalTasksFromHistoryInStates(expectedState) + historyTasks, err := mgr.GetGlobalTasksFromHistoryInStates(ctx, expectedState) require.NoError(t, err) if len(tasks)+len(historyTasks) == taskCnt { break @@ -372,7 +379,7 @@ func checkDispatch(t *testing.T, taskCnt int, isSucc, isCancel, isSubtaskCancel, if isSucc { // Mock subtasks succeed. for i := 1; i <= subtaskCnt*taskCnt; i++ { - err = mgr.UpdateSubtaskStateAndError(int64(i), proto.TaskStateSucceed, nil) + err = mgr.UpdateSubtaskStateAndError(ctx, ":4000", int64(i), proto.TaskStateSucceed, nil) require.NoError(t, err) } checkGetTaskState(proto.TaskStateSucceed) @@ -384,29 +391,29 @@ func checkDispatch(t *testing.T, taskCnt int, isSucc, isCancel, isSubtaskCancel, if isCancel { for i := 1; i <= taskCnt; i++ { - err = mgr.CancelGlobalTask(int64(i)) + err = mgr.CancelGlobalTask(ctx, int64(i)) require.NoError(t, err) } } else if isPauseAndResume { for i := 0; i < taskCnt; i++ { - found, err := mgr.PauseTask(fmt.Sprintf("%d", i)) + found, err := mgr.PauseTask(ctx, fmt.Sprintf("%d", i)) require.Equal(t, true, found) require.NoError(t, err) } for i := 1; i <= subtaskCnt*taskCnt; i++ { - err = mgr.UpdateSubtaskStateAndError(int64(i), proto.TaskStatePaused, nil) + err = mgr.UpdateSubtaskStateAndError(ctx, ":4000", int64(i), proto.TaskStatePaused, nil) require.NoError(t, err) } checkGetTaskState(proto.TaskStatePaused) for i := 0; i < taskCnt; i++ { - found, err := mgr.ResumeTask(fmt.Sprintf("%d", i)) + found, err := mgr.ResumeTask(ctx, fmt.Sprintf("%d", i)) require.Equal(t, true, found) require.NoError(t, err) } // Mock subtasks succeed. for i := 1; i <= subtaskCnt*taskCnt; i++ { - err = mgr.UpdateSubtaskStateAndError(int64(i), proto.TaskStateSucceed, nil) + err = mgr.UpdateSubtaskStateAndError(ctx, ":4000", int64(i), proto.TaskStateSucceed, nil) require.NoError(t, err) } checkGetTaskState(proto.TaskStateSucceed) @@ -421,13 +428,13 @@ func checkDispatch(t *testing.T, taskCnt int, isSucc, isCancel, isSubtaskCancel, if isSubtaskCancel { // Mock a subtask canceled for i := 1; i <= subtaskCnt*taskCnt; i += subtaskCnt { - err = mgr.UpdateSubtaskStateAndError(int64(i), proto.TaskStateCanceled, nil) + err = mgr.UpdateSubtaskStateAndError(ctx, ":4000", int64(i), proto.TaskStateCanceled, nil) require.NoError(t, err) } } else { // Mock a subtask fails. for i := 1; i <= subtaskCnt*taskCnt; i += subtaskCnt { - err = mgr.UpdateSubtaskStateAndError(int64(i), proto.TaskStateFailed, nil) + err = mgr.UpdateSubtaskStateAndError(ctx, ":4000", int64(i), proto.TaskStateFailed, nil) require.NoError(t, err) } } @@ -438,7 +445,7 @@ func checkDispatch(t *testing.T, taskCnt int, isSucc, isCancel, isSubtaskCancel, // Mock all subtask reverted. start := subtaskCnt * taskCnt for i := start; i <= start+subtaskCnt*taskCnt; i++ { - err = mgr.UpdateSubtaskStateAndError(int64(i), proto.TaskStateReverted, nil) + err = mgr.UpdateSubtaskStateAndError(ctx, ":4000", int64(i), proto.TaskStateReverted, nil) require.NoError(t, err) } checkGetTaskState(proto.TaskStateReverted) diff --git a/pkg/disttask/framework/dispatcher/interface.go b/pkg/disttask/framework/dispatcher/interface.go index 5e2c897ba187f..6fd5615ea47e6 100644 --- a/pkg/disttask/framework/dispatcher/interface.go +++ b/pkg/disttask/framework/dispatcher/interface.go @@ -25,24 +25,24 @@ import ( // TaskManager defines the interface to access task table. type TaskManager interface { - GetGlobalTasksInStates(states ...interface{}) (task []*proto.Task, err error) - GetGlobalTaskByID(taskID int64) (task *proto.Task, err error) - UpdateGlobalTaskAndAddSubTasks(gTask *proto.Task, subtasks []*proto.Subtask, prevState proto.TaskState) (bool, error) - GCSubtasks() error - GetAllNodes() ([]string, error) - CleanUpMeta(nodes []string) error - TransferTasks2History(tasks []*proto.Task) error - CancelGlobalTask(taskID int64) error - PauseTask(taskKey string) (bool, error) - GetSubtaskInStatesCnt(taskID int64, states ...interface{}) (int64, error) - ResumeSubtasks(taskID int64) error - CollectSubTaskError(taskID int64) ([]error, error) - TransferSubTasks2History(taskID int64) error - UpdateFailedSchedulerIDs(taskID int64, replaceNodes map[string]string) error - GetNodesByRole(role string) (map[string]bool, error) - GetSchedulerIDsByTaskID(taskID int64) ([]string, error) - GetSucceedSubtasksByStep(taskID int64, step proto.Step) ([]*proto.Subtask, error) - GetSchedulerIDsByTaskIDAndStep(taskID int64, step proto.Step) ([]string, error) + GetGlobalTasksInStates(ctx context.Context, states ...interface{}) (task []*proto.Task, err error) + GetGlobalTaskByID(ctx context.Context, taskID int64) (task *proto.Task, err error) + UpdateGlobalTaskAndAddSubTasks(ctx context.Context, gTask *proto.Task, subtasks []*proto.Subtask, prevState proto.TaskState) (bool, error) + GCSubtasks(ctx context.Context) error + GetAllNodes(ctx context.Context) ([]string, error) + CleanUpMeta(ctx context.Context, nodes []string) error + TransferTasks2History(ctx context.Context, tasks []*proto.Task) error + CancelGlobalTask(ctx context.Context, taskID int64) error + PauseTask(ctx context.Context, taskKey string) (bool, error) + GetSubtaskInStatesCnt(ctx context.Context, taskID int64, states ...interface{}) (int64, error) + ResumeSubtasks(ctx context.Context, taskID int64) error + CollectSubTaskError(ctx context.Context, taskID int64) ([]error, error) + TransferSubTasks2History(ctx context.Context, taskID int64) error + UpdateFailedSchedulerIDs(ctx context.Context, taskID int64, replaceNodes map[string]string) error + GetNodesByRole(ctx context.Context, role string) (map[string]bool, error) + GetSchedulerIDsByTaskID(ctx context.Context, taskID int64) ([]string, error) + GetSucceedSubtasksByStep(ctx context.Context, taskID int64, step proto.Step) ([]*proto.Subtask, error) + GetSchedulerIDsByTaskIDAndStep(ctx context.Context, taskID int64, step proto.Step) ([]string, error) WithNewSession(fn func(se sessionctx.Context) error) error WithNewTxn(ctx context.Context, fn func(se sessionctx.Context) error) error diff --git a/pkg/disttask/framework/framework_dynamic_dispatch_test.go b/pkg/disttask/framework/framework_dynamic_dispatch_test.go index 25b179d085a40..2f7d799ccdba6 100644 --- a/pkg/disttask/framework/framework_dynamic_dispatch_test.go +++ b/pkg/disttask/framework/framework_dynamic_dispatch_test.go @@ -26,6 +26,7 @@ import ( "github.com/pingcap/tidb/pkg/domain/infosync" "github.com/pingcap/tidb/pkg/testkit" "github.com/stretchr/testify/require" + "github.com/tikv/client-go/v2/util" "go.uber.org/mock/gomock" ) @@ -84,9 +85,12 @@ func TestFrameworkDynamicBasic(t *testing.T) { var m sync.Map ctrl := gomock.NewController(t) defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + RegisterTaskMeta(t, ctrl, &m, &testDynamicDispatcherExt{}) distContext := testkit.NewDistExecutionContext(t, 3) - DispatchTaskAndCheckSuccess("key1", t, &m) + DispatchTaskAndCheckSuccess(ctx, "key1", t, &m) distContext.Close() } @@ -94,18 +98,21 @@ func TestFrameworkDynamicHA(t *testing.T) { var m sync.Map ctrl := gomock.NewController(t) defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + RegisterTaskMeta(t, ctrl, &m, &testDynamicDispatcherExt{}) distContext := testkit.NewDistExecutionContext(t, 3) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/dispatcher/mockDynamicDispatchErr", "5*return()")) - DispatchTaskAndCheckSuccess("key1", t, &m) + DispatchTaskAndCheckSuccess(ctx, "key1", t, &m) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/dispatcher/mockDynamicDispatchErr")) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/dispatcher/mockDynamicDispatchErr1", "5*return()")) - DispatchTaskAndCheckSuccess("key2", t, &m) + DispatchTaskAndCheckSuccess(ctx, "key2", t, &m) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/dispatcher/mockDynamicDispatchErr1")) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/dispatcher/mockDynamicDispatchErr2", "5*return()")) - DispatchTaskAndCheckSuccess("key3", t, &m) + DispatchTaskAndCheckSuccess(ctx, "key3", t, &m) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/dispatcher/mockDynamicDispatchErr2")) distContext.Close() } diff --git a/pkg/disttask/framework/framework_err_handling_test.go b/pkg/disttask/framework/framework_err_handling_test.go index 8395382dbfb9f..817903a768e32 100644 --- a/pkg/disttask/framework/framework_err_handling_test.go +++ b/pkg/disttask/framework/framework_err_handling_test.go @@ -24,6 +24,7 @@ import ( "github.com/pingcap/tidb/pkg/disttask/framework/proto" "github.com/pingcap/tidb/pkg/domain/infosync" "github.com/pingcap/tidb/pkg/testkit" + "github.com/tikv/client-go/v2/util" "go.uber.org/mock/gomock" ) @@ -120,9 +121,12 @@ func TestPlanErr(t *testing.T) { m := sync.Map{} ctrl := gomock.NewController(t) defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + RegisterTaskMeta(t, ctrl, &m, &planErrDispatcherExt{0, 0}) distContext := testkit.NewDistExecutionContext(t, 2) - DispatchTaskAndCheckSuccess("key1", t, &m) + DispatchTaskAndCheckSuccess(ctx, "key1", t, &m) distContext.Close() } @@ -131,9 +135,12 @@ func TestRevertPlanErr(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + RegisterTaskMeta(t, ctrl, &m, &planErrDispatcherExt{0, 0}) distContext := testkit.NewDistExecutionContext(t, 2) - DispatchTaskAndCheckSuccess("key1", t, &m) + DispatchTaskAndCheckSuccess(ctx, "key1", t, &m) distContext.Close() } @@ -141,8 +148,11 @@ func TestPlanNotRetryableErr(t *testing.T) { m := sync.Map{} ctrl := gomock.NewController(t) defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + RegisterTaskMeta(t, ctrl, &m, &planNotRetryableErrDispatcherExt{}) distContext := testkit.NewDistExecutionContext(t, 2) - DispatchTaskAndCheckState("key1", t, &m, proto.TaskStateFailed) + DispatchTaskAndCheckState(ctx, "key1", t, &m, proto.TaskStateFailed) distContext.Close() } diff --git a/pkg/disttask/framework/framework_ha_test.go b/pkg/disttask/framework/framework_ha_test.go index 66456a753d942..fa8f7f0a30439 100644 --- a/pkg/disttask/framework/framework_ha_test.go +++ b/pkg/disttask/framework/framework_ha_test.go @@ -25,6 +25,7 @@ import ( "github.com/pingcap/tidb/pkg/domain/infosync" "github.com/pingcap/tidb/pkg/testkit" "github.com/stretchr/testify/require" + "github.com/tikv/client-go/v2/util" "go.uber.org/mock/gomock" ) @@ -93,12 +94,15 @@ func TestHABasic(t *testing.T) { var m sync.Map ctrl := gomock.NewController(t) defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + RegisterTaskMeta(t, ctrl, &m, &haTestDispatcherExt{}) distContext := testkit.NewDistExecutionContext(t, 4) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockCleanScheduler", "return()")) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockStopManager", "4*return()")) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockTiDBDown", "return(\":4000\")")) - DispatchTaskAndCheckSuccess("😊", t, &m) + DispatchTaskAndCheckSuccess(ctx, "😊", t, &m) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockTiDBDown")) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockStopManager")) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockCleanScheduler")) @@ -109,12 +113,15 @@ func TestHAManyNodes(t *testing.T) { var m sync.Map ctrl := gomock.NewController(t) defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + RegisterTaskMeta(t, ctrl, &m, &haTestDispatcherExt{}) distContext := testkit.NewDistExecutionContext(t, 30) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockCleanScheduler", "return()")) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockStopManager", "30*return()")) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockTiDBDown", "return(\":4000\")")) - DispatchTaskAndCheckSuccess("😊", t, &m) + DispatchTaskAndCheckSuccess(ctx, "😊", t, &m) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockTiDBDown")) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockStopManager")) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockCleanScheduler")) @@ -125,6 +132,9 @@ func TestHAFailInDifferentStage(t *testing.T) { var m sync.Map ctrl := gomock.NewController(t) defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + RegisterTaskMeta(t, ctrl, &m, &haTestDispatcherExt{}) distContext := testkit.NewDistExecutionContext(t, 6) // stage1 : server num from 6 to 3. @@ -134,7 +144,7 @@ func TestHAFailInDifferentStage(t *testing.T) { require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockTiDBDown", "return(\":4000\")")) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockTiDBDown2", "return()")) - DispatchTaskAndCheckSuccess("😊", t, &m) + DispatchTaskAndCheckSuccess(ctx, "😊", t, &m) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockTiDBDown")) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockTiDBDown2")) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockStopManager")) @@ -147,6 +157,9 @@ func TestHAFailInDifferentStageManyNodes(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + RegisterTaskMeta(t, ctrl, &m, &haTestDispatcherExt{}) distContext := testkit.NewDistExecutionContext(t, 30) // stage1 : server num from 30 to 27. @@ -156,7 +169,7 @@ func TestHAFailInDifferentStageManyNodes(t *testing.T) { require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockTiDBDown", "return(\":4000\")")) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockTiDBDown2", "return()")) - DispatchTaskAndCheckSuccess("😊", t, &m) + DispatchTaskAndCheckSuccess(ctx, "😊", t, &m) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockTiDBDown")) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockTiDBDown2")) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockStopManager")) @@ -169,10 +182,13 @@ func TestHAReplacedButRunning(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + RegisterTaskMeta(t, ctrl, &m, &haTestDispatcherExt{}) distContext := testkit.NewDistExecutionContext(t, 4) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockTiDBPartitionThenResume", "10*return(true)")) - DispatchTaskAndCheckSuccess("😊", t, &m) + DispatchTaskAndCheckSuccess(ctx, "😊", t, &m) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockTiDBPartitionThenResume")) distContext.Close() } @@ -182,10 +198,13 @@ func TestHAReplacedButRunningManyNodes(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + RegisterTaskMeta(t, ctrl, &m, &haTestDispatcherExt{}) distContext := testkit.NewDistExecutionContext(t, 30) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockTiDBPartitionThenResume", "30*return(true)")) - DispatchTaskAndCheckSuccess("😊", t, &m) + DispatchTaskAndCheckSuccess(ctx, "😊", t, &m) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockTiDBPartitionThenResume")) distContext.Close() } diff --git a/pkg/disttask/framework/framework_pause_and_resume_test.go b/pkg/disttask/framework/framework_pause_and_resume_test.go index 4d50c896c99ca..28ba8b4cefaa3 100644 --- a/pkg/disttask/framework/framework_pause_and_resume_test.go +++ b/pkg/disttask/framework/framework_pause_and_resume_test.go @@ -15,6 +15,7 @@ package framework_test import ( + "context" "sync" "testing" @@ -25,16 +26,17 @@ import ( "github.com/pingcap/tidb/pkg/disttask/framework/storage" "github.com/pingcap/tidb/pkg/testkit" "github.com/stretchr/testify/require" + "github.com/tikv/client-go/v2/util" "go.uber.org/mock/gomock" ) -func CheckSubtasksState(t *testing.T, taskID int64, state proto.TaskState, expectedCnt int64) { +func CheckSubtasksState(ctx context.Context, t *testing.T, taskID int64, state proto.TaskState, expectedCnt int64) { mgr, err := storage.GetTaskManager() require.NoError(t, err) - mgr.PrintSubtaskInfo(taskID) - cnt, err := mgr.GetSubtaskInStatesCnt(taskID, state) + mgr.PrintSubtaskInfo(ctx, taskID) + cnt, err := mgr.GetSubtaskInStatesCnt(ctx, taskID, state) require.NoError(t, err) - historySubTasksCnt, err := storage.GetSubtasksFromHistoryByTaskIDForTest(mgr, taskID) + historySubTasksCnt, err := storage.GetSubtasksFromHistoryByTaskIDForTest(ctx, mgr, taskID) require.NoError(t, err) require.Equal(t, expectedCnt, cnt+int64(historySubTasksCnt)) } @@ -43,40 +45,43 @@ func TestFrameworkPauseAndResume(t *testing.T) { var m sync.Map ctrl := gomock.NewController(t) defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + RegisterTaskMeta(t, ctrl, &m, &testDispatcherExt{}) distContext := testkit.NewDistExecutionContext(t, 3) // 1. dispatch and pause one running task. require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/dispatcher/pauseTaskAfterRefreshTask", "2*return(true)")) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/dispatcher/syncAfterResume", "return()")) - DispatchTaskAndCheckState("key1", t, &m, proto.TaskStatePaused) + DispatchTaskAndCheckState(ctx, "key1", t, &m, proto.TaskStatePaused) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/dispatcher/pauseTaskAfterRefreshTask")) // 4 subtask dispatched. - require.NoError(t, handle.ResumeTask("key1")) + require.NoError(t, handle.ResumeTask(ctx, "key1")) <-dispatcher.TestSyncChan - WaitTaskExit(t, "key1") - CheckSubtasksState(t, 1, proto.TaskStateSucceed, 4) + WaitTaskExit(ctx, t, "key1") + CheckSubtasksState(ctx, t, 1, proto.TaskStateSucceed, 4) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/dispatcher/syncAfterResume")) mgr, err := storage.GetTaskManager() require.NoError(t, err) - errs, err := mgr.CollectSubTaskError(1) + errs, err := mgr.CollectSubTaskError(ctx, 1) require.NoError(t, err) require.Empty(t, errs) // 2. pause pending task. require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/dispatcher/pausePendingTask", "2*return(true)")) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/dispatcher/syncAfterResume", "1*return()")) - DispatchTaskAndCheckState("key2", t, &m, proto.TaskStatePaused) + DispatchTaskAndCheckState(ctx, "key2", t, &m, proto.TaskStatePaused) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/dispatcher/pausePendingTask")) // 4 subtask dispatched. - require.NoError(t, handle.ResumeTask("key2")) + require.NoError(t, handle.ResumeTask(ctx, "key2")) <-dispatcher.TestSyncChan - WaitTaskExit(t, "key2") - CheckSubtasksState(t, 1, proto.TaskStateSucceed, 4) + WaitTaskExit(ctx, t, "key2") + CheckSubtasksState(ctx, t, 1, proto.TaskStateSucceed, 4) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/dispatcher/syncAfterResume")) - errs, err = mgr.CollectSubTaskError(1) + errs, err = mgr.CollectSubTaskError(ctx, 1) require.NoError(t, err) require.Empty(t, errs) distContext.Close() diff --git a/pkg/disttask/framework/framework_rollback_test.go b/pkg/disttask/framework/framework_rollback_test.go index 83138ac1485fa..3bb4d40f46576 100644 --- a/pkg/disttask/framework/framework_rollback_test.go +++ b/pkg/disttask/framework/framework_rollback_test.go @@ -28,6 +28,7 @@ import ( "github.com/pingcap/tidb/pkg/domain/infosync" "github.com/pingcap/tidb/pkg/testkit" "github.com/stretchr/testify/require" + "github.com/tikv/client-go/v2/util" "go.uber.org/mock/gomock" ) @@ -103,6 +104,9 @@ func TestFrameworkRollback(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + registerRollbackTaskMeta(t, ctrl, &m) distContext := testkit.NewDistExecutionContext(t, 2) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/dispatcher/cancelTaskAfterRefreshTask", "2*return(true)")) @@ -110,7 +114,7 @@ func TestFrameworkRollback(t *testing.T) { require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/dispatcher/cancelTaskAfterRefreshTask")) }() - DispatchTaskAndCheckState("key1", t, &m, proto.TaskStateReverted) + DispatchTaskAndCheckState(ctx, "key1", t, &m, proto.TaskStateReverted) require.Equal(t, int32(2), rollbackCnt.Load()) rollbackCnt.Store(0) distContext.Close() diff --git a/pkg/disttask/framework/framework_test.go b/pkg/disttask/framework/framework_test.go index 696301b058438..cc3a9424487f5 100644 --- a/pkg/disttask/framework/framework_test.go +++ b/pkg/disttask/framework/framework_test.go @@ -32,6 +32,7 @@ import ( "github.com/pingcap/tidb/pkg/domain/infosync" "github.com/pingcap/tidb/pkg/testkit" "github.com/stretchr/testify/require" + "github.com/tikv/client-go/v2/util" "go.uber.org/mock/gomock" ) @@ -197,15 +198,15 @@ func RegisterTaskMetaForExample3(t *testing.T, ctrl *gomock.Controller, m *sync. registerTaskMetaInner(t, proto.TaskTypeExample3, mockExtension, mockCleanupRountine, dispatcherHandle) } -func DispatchTask(taskKey string, t *testing.T) *proto.Task { +func DispatchTask(ctx context.Context, taskKey string, t *testing.T) *proto.Task { mgr, err := storage.GetTaskManager() require.NoError(t, err) - _, err = mgr.AddNewGlobalTask(taskKey, proto.TaskTypeExample, 8, nil) + _, err = mgr.AddNewGlobalTask(ctx, taskKey, proto.TaskTypeExample, 8, nil) require.NoError(t, err) - return WaitTaskExit(t, taskKey) + return WaitTaskExit(ctx, t, taskKey) } -func WaitTaskExit(t *testing.T, taskKey string) *proto.Task { +func WaitTaskExit(ctx context.Context, t *testing.T, taskKey string) *proto.Task { mgr, err := storage.GetTaskManager() require.NoError(t, err) var task *proto.Task @@ -216,7 +217,7 @@ func WaitTaskExit(t *testing.T, taskKey string) *proto.Task { } time.Sleep(time.Second) - task, err = mgr.GetGlobalTaskByKeyWithHistory(taskKey) + task, err = mgr.GetGlobalTaskByKeyWithHistory(ctx, taskKey) require.NoError(t, err) require.NotNil(t, task) if task.State != proto.TaskStatePending && task.State != proto.TaskStateRunning && task.State != proto.TaskStateCancelling && task.State != proto.TaskStateReverting && task.State != proto.TaskStatePausing { @@ -226,8 +227,8 @@ func WaitTaskExit(t *testing.T, taskKey string) *proto.Task { return task } -func DispatchTaskAndCheckSuccess(taskKey string, t *testing.T, m *sync.Map) { - task := DispatchTask(taskKey, t) +func DispatchTaskAndCheckSuccess(ctx context.Context, taskKey string, t *testing.T, m *sync.Map) { + task := DispatchTask(ctx, taskKey, t) require.Equal(t, proto.TaskStateSucceed, task.State) v, ok := m.Load("1") require.Equal(t, true, ok) @@ -238,12 +239,12 @@ func DispatchTaskAndCheckSuccess(taskKey string, t *testing.T, m *sync.Map) { m = &sync.Map{} } -func DispatchAndCancelTask(taskKey string, t *testing.T, m *sync.Map) { +func DispatchAndCancelTask(ctx context.Context, taskKey string, t *testing.T, m *sync.Map) { require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/MockExecutorRunCancel", "1*return(1)")) defer func() { require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/MockExecutorRunCancel")) }() - task := DispatchTask(taskKey, t) + task := DispatchTask(ctx, taskKey, t) require.Equal(t, proto.TaskStateReverted, task.State) m.Range(func(key, value interface{}) bool { m.Delete(key) @@ -251,8 +252,8 @@ func DispatchAndCancelTask(taskKey string, t *testing.T, m *sync.Map) { }) } -func DispatchTaskAndCheckState(taskKey string, t *testing.T, m *sync.Map, state proto.TaskState) { - task := DispatchTask(taskKey, t) +func DispatchTaskAndCheckState(ctx context.Context, taskKey string, t *testing.T, m *sync.Map, state proto.TaskState) { + task := DispatchTask(ctx, taskKey, t) require.Equal(t, state, task.State) m.Range(func(key, value interface{}) bool { m.Delete(key) @@ -260,7 +261,7 @@ func DispatchTaskAndCheckState(taskKey string, t *testing.T, m *sync.Map, state }) } -func DispatchMultiTasksAndOneFail(t *testing.T, num int, m []sync.Map) []*proto.Task { +func DispatchMultiTasksAndOneFail(ctx context.Context, t *testing.T, num int, m []sync.Map) []*proto.Task { var tasks []*proto.Task var taskID []int64 var start []time.Time @@ -273,7 +274,7 @@ func DispatchMultiTasksAndOneFail(t *testing.T, num int, m []sync.Map) []*proto. for i := 0; i < num; i++ { if i == 0 { require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/MockExecutorRunErr", "1*return(true)")) - taskID[0], err = mgr.AddNewGlobalTask("key0", "Example", 8, nil) + taskID[0], err = mgr.AddNewGlobalTask(ctx, "key0", "Example", 8, nil) require.NoError(t, err) start[0] = time.Now() var task *proto.Task @@ -282,7 +283,7 @@ func DispatchMultiTasksAndOneFail(t *testing.T, num int, m []sync.Map) []*proto. require.FailNow(t, "timeout") } time.Sleep(time.Second) - task, err = mgr.GetTaskByIDWithHistory(taskID[0]) + task, err = mgr.GetTaskByIDWithHistory(ctx, taskID[0]) require.NoError(t, err) require.NotNil(t, task) tasks[0] = task @@ -292,7 +293,7 @@ func DispatchMultiTasksAndOneFail(t *testing.T, num int, m []sync.Map) []*proto. } require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/MockExecutorRunErr")) } else { - taskID[i], err = mgr.AddNewGlobalTask(fmt.Sprintf("key%d", i), proto.Int2Type(i+2), 8, nil) + taskID[i], err = mgr.AddNewGlobalTask(ctx, fmt.Sprintf("key%d", i), proto.Int2Type(i+2), 8, nil) require.NoError(t, err) start[i] = time.Now() } @@ -305,7 +306,7 @@ func DispatchMultiTasksAndOneFail(t *testing.T, num int, m []sync.Map) []*proto. require.FailNow(t, "timeout") } time.Sleep(time.Second) - task, err = mgr.GetTaskByIDWithHistory(taskID[i]) + task, err = mgr.GetTaskByIDWithHistory(ctx, taskID[i]) require.NoError(t, err) require.NotNil(t, task) tasks[i] = task @@ -326,17 +327,20 @@ func TestFrameworkBasic(t *testing.T) { var m sync.Map ctrl := gomock.NewController(t) defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + RegisterTaskMeta(t, ctrl, &m, &testDispatcherExt{}) distContext := testkit.NewDistExecutionContext(t, 2) - DispatchTaskAndCheckSuccess("key1", t, &m) - DispatchTaskAndCheckSuccess("key2", t, &m) + DispatchTaskAndCheckSuccess(ctx, "key1", t, &m) + DispatchTaskAndCheckSuccess(ctx, "key2", t, &m) distContext.SetOwner(0) time.Sleep(2 * time.Second) // make sure owner changed - DispatchTaskAndCheckSuccess("key3", t, &m) - DispatchTaskAndCheckSuccess("key4", t, &m) + DispatchTaskAndCheckSuccess(ctx, "key3", t, &m) + DispatchTaskAndCheckSuccess(ctx, "key4", t, &m) distContext.SetOwner(1) time.Sleep(2 * time.Second) // make sure owner changed - DispatchTaskAndCheckSuccess("key5", t, &m) + DispatchTaskAndCheckSuccess(ctx, "key5", t, &m) distContext.Close() } @@ -344,14 +348,17 @@ func TestFramework3Server(t *testing.T) { var m sync.Map ctrl := gomock.NewController(t) defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + RegisterTaskMeta(t, ctrl, &m, &testDispatcherExt{}) distContext := testkit.NewDistExecutionContext(t, 3) - DispatchTaskAndCheckSuccess("key1", t, &m) - DispatchTaskAndCheckSuccess("key2", t, &m) + DispatchTaskAndCheckSuccess(ctx, "key1", t, &m) + DispatchTaskAndCheckSuccess(ctx, "key2", t, &m) distContext.SetOwner(0) time.Sleep(2 * time.Second) // make sure owner changed - DispatchTaskAndCheckSuccess("key3", t, &m) - DispatchTaskAndCheckSuccess("key4", t, &m) + DispatchTaskAndCheckSuccess(ctx, "key3", t, &m) + DispatchTaskAndCheckSuccess(ctx, "key4", t, &m) distContext.Close() } @@ -360,17 +367,20 @@ func TestFrameworkAddDomain(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + RegisterTaskMeta(t, ctrl, &m, &testDispatcherExt{}) distContext := testkit.NewDistExecutionContext(t, 2) - DispatchTaskAndCheckSuccess("key1", t, &m) + DispatchTaskAndCheckSuccess(ctx, "key1", t, &m) distContext.AddDomain() - DispatchTaskAndCheckSuccess("key2", t, &m) + DispatchTaskAndCheckSuccess(ctx, "key2", t, &m) distContext.SetOwner(1) time.Sleep(2 * time.Second) // make sure owner changed - DispatchTaskAndCheckSuccess("key3", t, &m) + DispatchTaskAndCheckSuccess(ctx, "key3", t, &m) distContext.Close() distContext.AddDomain() - DispatchTaskAndCheckSuccess("key4", t, &m) + DispatchTaskAndCheckSuccess(ctx, "key4", t, &m) } func TestFrameworkDeleteDomain(t *testing.T) { @@ -378,12 +388,15 @@ func TestFrameworkDeleteDomain(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + RegisterTaskMeta(t, ctrl, &m, &testDispatcherExt{}) distContext := testkit.NewDistExecutionContext(t, 2) - DispatchTaskAndCheckSuccess("key1", t, &m) + DispatchTaskAndCheckSuccess(ctx, "key1", t, &m) distContext.DeleteDomain(1) time.Sleep(2 * time.Second) // make sure the owner changed - DispatchTaskAndCheckSuccess("key2", t, &m) + DispatchTaskAndCheckSuccess(ctx, "key2", t, &m) distContext.Close() } @@ -392,9 +405,12 @@ func TestFrameworkWithQuery(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + RegisterTaskMeta(t, ctrl, &m, &testDispatcherExt{}) distContext := testkit.NewDistExecutionContext(t, 2) - DispatchTaskAndCheckSuccess("key1", t, &m) + DispatchTaskAndCheckSuccess(ctx, "key1", t, &m) tk := testkit.NewTestKit(t, distContext.Store) @@ -415,9 +431,12 @@ func TestFrameworkCancelGTask(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + RegisterTaskMeta(t, ctrl, &m, &testDispatcherExt{}) distContext := testkit.NewDistExecutionContext(t, 2) - DispatchAndCancelTask("key1", t, &m) + DispatchAndCancelTask(ctx, "key1", t, &m) distContext.Close() } @@ -426,13 +445,16 @@ func TestFrameworkSubTaskFailed(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + RegisterTaskMeta(t, ctrl, &m, &testDispatcherExt{}) distContext := testkit.NewDistExecutionContext(t, 1) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/MockExecutorRunErr", "1*return(true)")) defer func() { require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/MockExecutorRunErr")) }() - DispatchTaskAndCheckState("key1", t, &m, proto.TaskStateReverted) + DispatchTaskAndCheckState(ctx, "key1", t, &m, proto.TaskStateReverted) distContext.Close() } @@ -442,13 +464,16 @@ func TestFrameworkSubTaskInitEnvFailed(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + RegisterTaskMeta(t, ctrl, &m, &testDispatcherExt{}) distContext := testkit.NewDistExecutionContext(t, 1) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockExecSubtaskInitEnvErr", "return()")) defer func() { require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockExecSubtaskInitEnvErr")) }() - DispatchTaskAndCheckState("key1", t, &m, proto.TaskStateReverted) + DispatchTaskAndCheckState(ctx, "key1", t, &m, proto.TaskStateReverted) distContext.Close() } @@ -457,6 +482,9 @@ func TestOwnerChange(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + RegisterTaskMeta(t, ctrl, &m, &testDispatcherExt{}) distContext := testkit.NewDistExecutionContext(t, 3) @@ -464,7 +492,7 @@ func TestOwnerChange(t *testing.T) { distContext.SetOwner(0) } require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/dispatcher/mockOwnerChange", "1*return(true)")) - DispatchTaskAndCheckSuccess("😊", t, &m) + DispatchTaskAndCheckSuccess(ctx, "😊", t, &m) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/dispatcher/mockOwnerChange")) distContext.Close() } @@ -474,10 +502,13 @@ func TestFrameworkCancelThenSubmitSubTask(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + RegisterTaskMeta(t, ctrl, &m, &testDispatcherExt{}) distContext := testkit.NewDistExecutionContext(t, 3) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/dispatcher/cancelBeforeUpdate", "return()")) - DispatchTaskAndCheckState("😊", t, &m, proto.TaskStateReverted) + DispatchTaskAndCheckState(ctx, "😊", t, &m, proto.TaskStateReverted) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/dispatcher/cancelBeforeUpdate")) distContext.Close() } @@ -487,13 +518,16 @@ func TestSchedulerDownBasic(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + RegisterTaskMeta(t, ctrl, &m, &testDispatcherExt{}) distContext := testkit.NewDistExecutionContext(t, 4) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockCleanScheduler", "return()")) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockStopManager", "4*return(\":4000\")")) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockTiDBDown", "return(\":4000\")")) - DispatchTaskAndCheckSuccess("😊", t, &m) + DispatchTaskAndCheckSuccess(ctx, "😊", t, &m) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockCleanScheduler")) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockTiDBDown")) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockStopManager")) @@ -505,13 +539,16 @@ func TestSchedulerDownManyNodes(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + RegisterTaskMeta(t, ctrl, &m, &testDispatcherExt{}) distContext := testkit.NewDistExecutionContext(t, 30) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockCleanScheduler", "return()")) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockStopManager", "30*return(\":4000\")")) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockTiDBDown", "return(\":4000\")")) - DispatchTaskAndCheckSuccess("😊", t, &m) + DispatchTaskAndCheckSuccess(ctx, "😊", t, &m) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockCleanScheduler")) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockTiDBDown")) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockStopManager")) @@ -522,22 +559,25 @@ func TestFrameworkSetLabel(t *testing.T) { var m sync.Map ctrl := gomock.NewController(t) defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + RegisterTaskMeta(t, ctrl, &m, &testDispatcherExt{}) distContext := testkit.NewDistExecutionContext(t, 3) tk := testkit.NewTestKit(t, distContext.Store) // 1. all "" role. - DispatchTaskAndCheckSuccess("😁", t, &m) + DispatchTaskAndCheckSuccess(ctx, "😁", t, &m) // 2. one "background" role. tk.MustExec("set global tidb_service_scope=background") tk.MustQuery("select @@global.tidb_service_scope").Check(testkit.Rows("background")) tk.MustQuery("select @@tidb_service_scope").Check(testkit.Rows("background")) - DispatchTaskAndCheckSuccess("😊", t, &m) + DispatchTaskAndCheckSuccess(ctx, "😊", t, &m) // 3. 2 "background" role. tk.MustExec("update mysql.dist_framework_meta set role = \"background\" where host = \":4001\"") - DispatchTaskAndCheckSuccess("😆", t, &m) + DispatchTaskAndCheckSuccess(ctx, "😆", t, &m) // 4. set wrong sys var. tk.MustMatchErrMsg("set global tidb_service_scope=wrong", `incorrect value: .*. tidb_service_scope options: "", background`) @@ -557,12 +597,15 @@ func TestMultiTasks(t *testing.T) { m := make([]sync.Map, num) ctrl := gomock.NewController(t) defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + RegisterTaskMeta(t, ctrl, &(m[0]), &testDispatcherExt{}) RegisterTaskMetaForExample2(t, ctrl, &(m[1]), &testDispatcherExt{}) RegisterTaskMetaForExample3(t, ctrl, &(m[2]), &testDispatcherExt{}) distContext := testkit.NewDistExecutionContext(t, 3) - tasks := DispatchMultiTasksAndOneFail(t, num, m) + tasks := DispatchMultiTasksAndOneFail(ctx, t, num, m) require.Equal(t, proto.TaskStateReverted, tasks[0].State) v, ok := m[0].Load("0") require.Equal(t, false, ok) @@ -592,6 +635,9 @@ func TestGC(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + RegisterTaskMeta(t, ctrl, &m, &testDispatcherExt{}) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/storage/subtaskHistoryKeepSeconds", "return(1)")) @@ -602,14 +648,14 @@ func TestGC(t *testing.T) { }() distContext := testkit.NewDistExecutionContext(t, 3) - DispatchTaskAndCheckSuccess("😊", t, &m) + DispatchTaskAndCheckSuccess(ctx, "😊", t, &m) mgr, err := storage.GetTaskManager() require.NoError(t, err) var historySubTasksCnt int require.Eventually(t, func() bool { - historySubTasksCnt, err = storage.GetSubtasksFromHistoryForTest(mgr) + historySubTasksCnt, err = storage.GetSubtasksFromHistoryForTest(ctx, mgr) if err != nil { return false } @@ -619,7 +665,7 @@ func TestGC(t *testing.T) { dispatcher.WaitTaskFinished <- struct{}{} require.Eventually(t, func() bool { - historySubTasksCnt, err := storage.GetSubtasksFromHistoryForTest(mgr) + historySubTasksCnt, err := storage.GetSubtasksFromHistoryForTest(ctx, mgr) if err != nil { return false } @@ -634,13 +680,16 @@ func TestFrameworkSubtaskFinishedCancel(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + RegisterTaskMeta(t, ctrl, &m, &testDispatcherExt{}) distContext := testkit.NewDistExecutionContext(t, 3) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/MockSubtaskFinishedCancel", "1*return(true)")) defer func() { require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/MockSubtaskFinishedCancel")) }() - DispatchTaskAndCheckState("key1", t, &m, proto.TaskStateReverted) + DispatchTaskAndCheckState(ctx, "key1", t, &m, proto.TaskStateReverted) distContext.Close() } @@ -649,10 +698,13 @@ func TestFrameworkRunSubtaskCancel(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + RegisterTaskMeta(t, ctrl, &m, &testDispatcherExt{}) distContext := testkit.NewDistExecutionContext(t, 3) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/MockRunSubtaskCancel", "1*return(true)")) - DispatchTaskAndCheckState("key1", t, &m, proto.TaskStateReverted) + DispatchTaskAndCheckState(ctx, "key1", t, &m, proto.TaskStateReverted) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/MockRunSubtaskCancel")) distContext.Close() } @@ -661,15 +713,33 @@ func TestFrameworkCleanUpRoutine(t *testing.T) { var m sync.Map ctrl := gomock.NewController(t) defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + RegisterTaskMeta(t, ctrl, &m, &testDispatcherExt{}) distContext := testkit.NewDistExecutionContext(t, 3) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/dispatcher/WaitCleanUpFinished", "return()")) - DispatchTaskAndCheckSuccess("key1", t, &m) + DispatchTaskAndCheckSuccess(ctx, "key1", t, &m) <-dispatcher.WaitCleanUpFinished mgr, err := storage.GetTaskManager() require.NoError(t, err) - tasks, err := mgr.GetGlobalTaskByKeyWithHistory("key1") + tasks, err := mgr.GetGlobalTaskByKeyWithHistory(ctx, "key1") require.NoError(t, err) require.NotEmpty(t, tasks) distContext.Close() } + +func TestTaskCancelledBeforeUpdateTask(t *testing.T) { + var m sync.Map + ctrl := gomock.NewController(t) + defer ctrl.Finish() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "dispatcher") + + RegisterTaskMeta(t, ctrl, &m, &testDispatcherExt{}) + distContext := testkit.NewDistExecutionContext(t, 1) + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/dispatcher/cancelBeforeUpdateTask", "1*return(true)")) + DispatchTaskAndCheckState(ctx, "key1", t, &m, proto.TaskStateReverted) + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/dispatcher/cancelBeforeUpdateTask")) + distContext.Close() +} diff --git a/pkg/disttask/framework/handle/handle.go b/pkg/disttask/framework/handle/handle.go index ef67bd9e1a3c3..0f4d4630528a0 100644 --- a/pkg/disttask/framework/handle/handle.go +++ b/pkg/disttask/framework/handle/handle.go @@ -32,23 +32,23 @@ var ( ) // SubmitGlobalTask submits a global task. -func SubmitGlobalTask(taskKey string, taskType proto.TaskType, concurrency int, taskMeta []byte) (*proto.Task, error) { +func SubmitGlobalTask(ctx context.Context, taskKey string, taskType proto.TaskType, concurrency int, taskMeta []byte) (*proto.Task, error) { globalTaskManager, err := storage.GetTaskManager() if err != nil { return nil, err } - globalTask, err := globalTaskManager.GetGlobalTaskByKey(taskKey) + globalTask, err := globalTaskManager.GetGlobalTaskByKey(ctx, taskKey) if err != nil { return nil, err } if globalTask == nil { - taskID, err := globalTaskManager.AddNewGlobalTask(taskKey, taskType, concurrency, taskMeta) + taskID, err := globalTaskManager.AddNewGlobalTask(ctx, taskKey, taskType, concurrency, taskMeta) if err != nil { return nil, err } - globalTask, err = globalTaskManager.GetGlobalTaskByID(taskID) + globalTask, err = globalTaskManager.GetGlobalTaskByID(ctx, taskID) if err != nil { return nil, err } @@ -75,7 +75,7 @@ func WaitGlobalTask(ctx context.Context, globalTask *proto.Task) error { case <-ctx.Done(): return ctx.Err() case <-ticker.C: - found, err := globalTaskManager.GetTaskByIDWithHistory(globalTask.ID) + found, err := globalTaskManager.GetTaskByIDWithHistory(ctx, globalTask.ID) if err != nil { logutil.Logger(ctx).Error("cannot get global task during waiting", zap.Int64("task-id", globalTask.ID), @@ -104,7 +104,7 @@ func WaitGlobalTask(ctx context.Context, globalTask *proto.Task) error { // SubmitAndRunGlobalTask submits a global task and wait for it to finish. func SubmitAndRunGlobalTask(ctx context.Context, taskKey string, taskType proto.TaskType, concurrency int, taskMeta []byte) error { - globalTask, err := SubmitGlobalTask(taskKey, taskType, concurrency, taskMeta) + globalTask, err := SubmitGlobalTask(ctx, taskKey, taskType, concurrency, taskMeta) if err != nil { return err } @@ -112,12 +112,12 @@ func SubmitAndRunGlobalTask(ctx context.Context, taskKey string, taskType proto. } // CancelGlobalTask cancels a global task. -func CancelGlobalTask(taskKey string) error { +func CancelGlobalTask(ctx context.Context, taskKey string) error { taskManager, err := storage.GetTaskManager() if err != nil { return err } - task, err := taskManager.GetGlobalTaskByKey(taskKey) + task, err := taskManager.GetGlobalTaskByKey(ctx, taskKey) if err != nil { return err } @@ -126,16 +126,16 @@ func CancelGlobalTask(taskKey string) error { return nil } - return taskManager.CancelGlobalTask(task.ID) + return taskManager.CancelGlobalTask(ctx, task.ID) } // PauseTask pauses a task. -func PauseTask(taskKey string) error { +func PauseTask(ctx context.Context, taskKey string) error { taskManager, err := storage.GetTaskManager() if err != nil { return err } - found, err := taskManager.PauseTask(taskKey) + found, err := taskManager.PauseTask(ctx, taskKey) if !found { logutil.BgLogger().Info("task not pausable", zap.String("taskKey", taskKey)) return nil @@ -144,12 +144,12 @@ func PauseTask(taskKey string) error { } // ResumeTask resumes a task. -func ResumeTask(taskKey string) error { +func ResumeTask(ctx context.Context, taskKey string) error { taskManager, err := storage.GetTaskManager() if err != nil { return err } - found, err := taskManager.ResumeTask(taskKey) + found, err := taskManager.ResumeTask(ctx, taskKey) if !found { logutil.BgLogger().Info("task not resumable", zap.String("taskKey", taskKey)) return nil diff --git a/pkg/disttask/framework/handle/handle_test.go b/pkg/disttask/framework/handle/handle_test.go index 89ffc31f1d821..65e2eaa52c42b 100644 --- a/pkg/disttask/framework/handle/handle_test.go +++ b/pkg/disttask/framework/handle/handle_test.go @@ -35,20 +35,22 @@ import ( func TestHandle(t *testing.T) { ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "handle_test") + store := testkit.CreateMockStore(t) gtk := testkit.NewTestKit(t, store) pool := pools.NewResourcePool(func() (pools.Resource, error) { return gtk.Session(), nil }, 1, 1, time.Second) defer pool.Close() - mgr := storage.NewTaskManager(util.WithInternalSourceType(ctx, "taskManager"), pool) + mgr := storage.NewTaskManager(pool) storage.SetTaskManager(mgr) // no dispatcher registered err := handle.SubmitAndRunGlobalTask(ctx, "1", proto.TaskTypeExample, 2, []byte("byte")) require.Error(t, err) - task, err := mgr.GetGlobalTaskByID(1) + task, err := mgr.GetGlobalTaskByID(ctx, 1) require.NoError(t, err) require.Equal(t, int64(1), task.ID) require.Equal(t, "1", task.Key) @@ -59,12 +61,12 @@ func TestHandle(t *testing.T) { require.Equal(t, uint64(2), task.Concurrency) require.Equal(t, []byte("byte"), task.Meta) - require.NoError(t, handle.CancelGlobalTask("1")) + require.NoError(t, handle.CancelGlobalTask(ctx, "1")) - task, err = handle.SubmitGlobalTask("2", proto.TaskTypeExample, 2, []byte("byte")) + task, err = handle.SubmitGlobalTask(ctx, "2", proto.TaskTypeExample, 2, []byte("byte")) require.NoError(t, err) - require.NoError(t, handle.PauseTask("2")) - require.NoError(t, handle.ResumeTask("2")) + require.NoError(t, handle.PauseTask(ctx, "2")) + require.NoError(t, handle.ResumeTask(ctx, "2")) } func TestRunWithRetry(t *testing.T) { diff --git a/pkg/disttask/framework/mock/dispatcher_mock.go b/pkg/disttask/framework/mock/dispatcher_mock.go index f4085d45dcd36..fc1e11f60a5e8 100644 --- a/pkg/disttask/framework/mock/dispatcher_mock.go +++ b/pkg/disttask/framework/mock/dispatcher_mock.go @@ -135,97 +135,97 @@ func (m *MockTaskManager) EXPECT() *MockTaskManagerMockRecorder { } // CancelGlobalTask mocks base method. -func (m *MockTaskManager) CancelGlobalTask(arg0 int64) error { +func (m *MockTaskManager) CancelGlobalTask(arg0 context.Context, arg1 int64) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CancelGlobalTask", arg0) + ret := m.ctrl.Call(m, "CancelGlobalTask", arg0, arg1) ret0, _ := ret[0].(error) return ret0 } // CancelGlobalTask indicates an expected call of CancelGlobalTask. -func (mr *MockTaskManagerMockRecorder) CancelGlobalTask(arg0 interface{}) *gomock.Call { +func (mr *MockTaskManagerMockRecorder) CancelGlobalTask(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CancelGlobalTask", reflect.TypeOf((*MockTaskManager)(nil).CancelGlobalTask), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CancelGlobalTask", reflect.TypeOf((*MockTaskManager)(nil).CancelGlobalTask), arg0, arg1) } // CleanUpMeta mocks base method. -func (m *MockTaskManager) CleanUpMeta(arg0 []string) error { +func (m *MockTaskManager) CleanUpMeta(arg0 context.Context, arg1 []string) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CleanUpMeta", arg0) + ret := m.ctrl.Call(m, "CleanUpMeta", arg0, arg1) ret0, _ := ret[0].(error) return ret0 } // CleanUpMeta indicates an expected call of CleanUpMeta. -func (mr *MockTaskManagerMockRecorder) CleanUpMeta(arg0 interface{}) *gomock.Call { +func (mr *MockTaskManagerMockRecorder) CleanUpMeta(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CleanUpMeta", reflect.TypeOf((*MockTaskManager)(nil).CleanUpMeta), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CleanUpMeta", reflect.TypeOf((*MockTaskManager)(nil).CleanUpMeta), arg0, arg1) } // CollectSubTaskError mocks base method. -func (m *MockTaskManager) CollectSubTaskError(arg0 int64) ([]error, error) { +func (m *MockTaskManager) CollectSubTaskError(arg0 context.Context, arg1 int64) ([]error, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CollectSubTaskError", arg0) + ret := m.ctrl.Call(m, "CollectSubTaskError", arg0, arg1) ret0, _ := ret[0].([]error) ret1, _ := ret[1].(error) return ret0, ret1 } // CollectSubTaskError indicates an expected call of CollectSubTaskError. -func (mr *MockTaskManagerMockRecorder) CollectSubTaskError(arg0 interface{}) *gomock.Call { +func (mr *MockTaskManagerMockRecorder) CollectSubTaskError(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CollectSubTaskError", reflect.TypeOf((*MockTaskManager)(nil).CollectSubTaskError), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CollectSubTaskError", reflect.TypeOf((*MockTaskManager)(nil).CollectSubTaskError), arg0, arg1) } // GCSubtasks mocks base method. -func (m *MockTaskManager) GCSubtasks() error { +func (m *MockTaskManager) GCSubtasks(arg0 context.Context) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GCSubtasks") + ret := m.ctrl.Call(m, "GCSubtasks", arg0) ret0, _ := ret[0].(error) return ret0 } // GCSubtasks indicates an expected call of GCSubtasks. -func (mr *MockTaskManagerMockRecorder) GCSubtasks() *gomock.Call { +func (mr *MockTaskManagerMockRecorder) GCSubtasks(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GCSubtasks", reflect.TypeOf((*MockTaskManager)(nil).GCSubtasks)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GCSubtasks", reflect.TypeOf((*MockTaskManager)(nil).GCSubtasks), arg0) } // GetAllNodes mocks base method. -func (m *MockTaskManager) GetAllNodes() ([]string, error) { +func (m *MockTaskManager) GetAllNodes(arg0 context.Context) ([]string, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetAllNodes") + ret := m.ctrl.Call(m, "GetAllNodes", arg0) ret0, _ := ret[0].([]string) ret1, _ := ret[1].(error) return ret0, ret1 } // GetAllNodes indicates an expected call of GetAllNodes. -func (mr *MockTaskManagerMockRecorder) GetAllNodes() *gomock.Call { +func (mr *MockTaskManagerMockRecorder) GetAllNodes(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAllNodes", reflect.TypeOf((*MockTaskManager)(nil).GetAllNodes)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAllNodes", reflect.TypeOf((*MockTaskManager)(nil).GetAllNodes), arg0) } // GetGlobalTaskByID mocks base method. -func (m *MockTaskManager) GetGlobalTaskByID(arg0 int64) (*proto.Task, error) { +func (m *MockTaskManager) GetGlobalTaskByID(arg0 context.Context, arg1 int64) (*proto.Task, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetGlobalTaskByID", arg0) + ret := m.ctrl.Call(m, "GetGlobalTaskByID", arg0, arg1) ret0, _ := ret[0].(*proto.Task) ret1, _ := ret[1].(error) return ret0, ret1 } // GetGlobalTaskByID indicates an expected call of GetGlobalTaskByID. -func (mr *MockTaskManagerMockRecorder) GetGlobalTaskByID(arg0 interface{}) *gomock.Call { +func (mr *MockTaskManagerMockRecorder) GetGlobalTaskByID(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetGlobalTaskByID", reflect.TypeOf((*MockTaskManager)(nil).GetGlobalTaskByID), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetGlobalTaskByID", reflect.TypeOf((*MockTaskManager)(nil).GetGlobalTaskByID), arg0, arg1) } // GetGlobalTasksInStates mocks base method. -func (m *MockTaskManager) GetGlobalTasksInStates(arg0 ...interface{}) ([]*proto.Task, error) { +func (m *MockTaskManager) GetGlobalTasksInStates(arg0 context.Context, arg1 ...interface{}) ([]*proto.Task, error) { m.ctrl.T.Helper() - varargs := []interface{}{} - for _, a := range arg0 { + varargs := []interface{}{arg0} + for _, a := range arg1 { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "GetGlobalTasksInStates", varargs...) @@ -235,61 +235,62 @@ func (m *MockTaskManager) GetGlobalTasksInStates(arg0 ...interface{}) ([]*proto. } // GetGlobalTasksInStates indicates an expected call of GetGlobalTasksInStates. -func (mr *MockTaskManagerMockRecorder) GetGlobalTasksInStates(arg0 ...interface{}) *gomock.Call { +func (mr *MockTaskManagerMockRecorder) GetGlobalTasksInStates(arg0 interface{}, arg1 ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetGlobalTasksInStates", reflect.TypeOf((*MockTaskManager)(nil).GetGlobalTasksInStates), arg0...) + varargs := append([]interface{}{arg0}, arg1...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetGlobalTasksInStates", reflect.TypeOf((*MockTaskManager)(nil).GetGlobalTasksInStates), varargs...) } // GetNodesByRole mocks base method. -func (m *MockTaskManager) GetNodesByRole(arg0 string) (map[string]bool, error) { +func (m *MockTaskManager) GetNodesByRole(arg0 context.Context, arg1 string) (map[string]bool, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetNodesByRole", arg0) + ret := m.ctrl.Call(m, "GetNodesByRole", arg0, arg1) ret0, _ := ret[0].(map[string]bool) ret1, _ := ret[1].(error) return ret0, ret1 } // GetNodesByRole indicates an expected call of GetNodesByRole. -func (mr *MockTaskManagerMockRecorder) GetNodesByRole(arg0 interface{}) *gomock.Call { +func (mr *MockTaskManagerMockRecorder) GetNodesByRole(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNodesByRole", reflect.TypeOf((*MockTaskManager)(nil).GetNodesByRole), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNodesByRole", reflect.TypeOf((*MockTaskManager)(nil).GetNodesByRole), arg0, arg1) } // GetSchedulerIDsByTaskID mocks base method. -func (m *MockTaskManager) GetSchedulerIDsByTaskID(arg0 int64) ([]string, error) { +func (m *MockTaskManager) GetSchedulerIDsByTaskID(arg0 context.Context, arg1 int64) ([]string, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetSchedulerIDsByTaskID", arg0) + ret := m.ctrl.Call(m, "GetSchedulerIDsByTaskID", arg0, arg1) ret0, _ := ret[0].([]string) ret1, _ := ret[1].(error) return ret0, ret1 } // GetSchedulerIDsByTaskID indicates an expected call of GetSchedulerIDsByTaskID. -func (mr *MockTaskManagerMockRecorder) GetSchedulerIDsByTaskID(arg0 interface{}) *gomock.Call { +func (mr *MockTaskManagerMockRecorder) GetSchedulerIDsByTaskID(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSchedulerIDsByTaskID", reflect.TypeOf((*MockTaskManager)(nil).GetSchedulerIDsByTaskID), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSchedulerIDsByTaskID", reflect.TypeOf((*MockTaskManager)(nil).GetSchedulerIDsByTaskID), arg0, arg1) } // GetSchedulerIDsByTaskIDAndStep mocks base method. -func (m *MockTaskManager) GetSchedulerIDsByTaskIDAndStep(arg0 int64, arg1 proto.Step) ([]string, error) { +func (m *MockTaskManager) GetSchedulerIDsByTaskIDAndStep(arg0 context.Context, arg1 int64, arg2 proto.Step) ([]string, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetSchedulerIDsByTaskIDAndStep", arg0, arg1) + ret := m.ctrl.Call(m, "GetSchedulerIDsByTaskIDAndStep", arg0, arg1, arg2) ret0, _ := ret[0].([]string) ret1, _ := ret[1].(error) return ret0, ret1 } // GetSchedulerIDsByTaskIDAndStep indicates an expected call of GetSchedulerIDsByTaskIDAndStep. -func (mr *MockTaskManagerMockRecorder) GetSchedulerIDsByTaskIDAndStep(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockTaskManagerMockRecorder) GetSchedulerIDsByTaskIDAndStep(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSchedulerIDsByTaskIDAndStep", reflect.TypeOf((*MockTaskManager)(nil).GetSchedulerIDsByTaskIDAndStep), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSchedulerIDsByTaskIDAndStep", reflect.TypeOf((*MockTaskManager)(nil).GetSchedulerIDsByTaskIDAndStep), arg0, arg1, arg2) } // GetSubtaskInStatesCnt mocks base method. -func (m *MockTaskManager) GetSubtaskInStatesCnt(arg0 int64, arg1 ...interface{}) (int64, error) { +func (m *MockTaskManager) GetSubtaskInStatesCnt(arg0 context.Context, arg1 int64, arg2 ...interface{}) (int64, error) { m.ctrl.T.Helper() - varargs := []interface{}{arg0} - for _, a := range arg1 { + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "GetSubtaskInStatesCnt", varargs...) @@ -299,111 +300,111 @@ func (m *MockTaskManager) GetSubtaskInStatesCnt(arg0 int64, arg1 ...interface{}) } // GetSubtaskInStatesCnt indicates an expected call of GetSubtaskInStatesCnt. -func (mr *MockTaskManagerMockRecorder) GetSubtaskInStatesCnt(arg0 interface{}, arg1 ...interface{}) *gomock.Call { +func (mr *MockTaskManagerMockRecorder) GetSubtaskInStatesCnt(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{arg0}, arg1...) + varargs := append([]interface{}{arg0, arg1}, arg2...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSubtaskInStatesCnt", reflect.TypeOf((*MockTaskManager)(nil).GetSubtaskInStatesCnt), varargs...) } // GetSucceedSubtasksByStep mocks base method. -func (m *MockTaskManager) GetSucceedSubtasksByStep(arg0 int64, arg1 proto.Step) ([]*proto.Subtask, error) { +func (m *MockTaskManager) GetSucceedSubtasksByStep(arg0 context.Context, arg1 int64, arg2 proto.Step) ([]*proto.Subtask, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetSucceedSubtasksByStep", arg0, arg1) + ret := m.ctrl.Call(m, "GetSucceedSubtasksByStep", arg0, arg1, arg2) ret0, _ := ret[0].([]*proto.Subtask) ret1, _ := ret[1].(error) return ret0, ret1 } // GetSucceedSubtasksByStep indicates an expected call of GetSucceedSubtasksByStep. -func (mr *MockTaskManagerMockRecorder) GetSucceedSubtasksByStep(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockTaskManagerMockRecorder) GetSucceedSubtasksByStep(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSucceedSubtasksByStep", reflect.TypeOf((*MockTaskManager)(nil).GetSucceedSubtasksByStep), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSucceedSubtasksByStep", reflect.TypeOf((*MockTaskManager)(nil).GetSucceedSubtasksByStep), arg0, arg1, arg2) } // PauseTask mocks base method. -func (m *MockTaskManager) PauseTask(arg0 string) (bool, error) { +func (m *MockTaskManager) PauseTask(arg0 context.Context, arg1 string) (bool, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "PauseTask", arg0) + ret := m.ctrl.Call(m, "PauseTask", arg0, arg1) ret0, _ := ret[0].(bool) ret1, _ := ret[1].(error) return ret0, ret1 } // PauseTask indicates an expected call of PauseTask. -func (mr *MockTaskManagerMockRecorder) PauseTask(arg0 interface{}) *gomock.Call { +func (mr *MockTaskManagerMockRecorder) PauseTask(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PauseTask", reflect.TypeOf((*MockTaskManager)(nil).PauseTask), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PauseTask", reflect.TypeOf((*MockTaskManager)(nil).PauseTask), arg0, arg1) } // ResumeSubtasks mocks base method. -func (m *MockTaskManager) ResumeSubtasks(arg0 int64) error { +func (m *MockTaskManager) ResumeSubtasks(arg0 context.Context, arg1 int64) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ResumeSubtasks", arg0) + ret := m.ctrl.Call(m, "ResumeSubtasks", arg0, arg1) ret0, _ := ret[0].(error) return ret0 } // ResumeSubtasks indicates an expected call of ResumeSubtasks. -func (mr *MockTaskManagerMockRecorder) ResumeSubtasks(arg0 interface{}) *gomock.Call { +func (mr *MockTaskManagerMockRecorder) ResumeSubtasks(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ResumeSubtasks", reflect.TypeOf((*MockTaskManager)(nil).ResumeSubtasks), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ResumeSubtasks", reflect.TypeOf((*MockTaskManager)(nil).ResumeSubtasks), arg0, arg1) } // TransferSubTasks2History mocks base method. -func (m *MockTaskManager) TransferSubTasks2History(arg0 int64) error { +func (m *MockTaskManager) TransferSubTasks2History(arg0 context.Context, arg1 int64) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "TransferSubTasks2History", arg0) + ret := m.ctrl.Call(m, "TransferSubTasks2History", arg0, arg1) ret0, _ := ret[0].(error) return ret0 } // TransferSubTasks2History indicates an expected call of TransferSubTasks2History. -func (mr *MockTaskManagerMockRecorder) TransferSubTasks2History(arg0 interface{}) *gomock.Call { +func (mr *MockTaskManagerMockRecorder) TransferSubTasks2History(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TransferSubTasks2History", reflect.TypeOf((*MockTaskManager)(nil).TransferSubTasks2History), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TransferSubTasks2History", reflect.TypeOf((*MockTaskManager)(nil).TransferSubTasks2History), arg0, arg1) } // TransferTasks2History mocks base method. -func (m *MockTaskManager) TransferTasks2History(arg0 []*proto.Task) error { +func (m *MockTaskManager) TransferTasks2History(arg0 context.Context, arg1 []*proto.Task) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "TransferTasks2History", arg0) + ret := m.ctrl.Call(m, "TransferTasks2History", arg0, arg1) ret0, _ := ret[0].(error) return ret0 } // TransferTasks2History indicates an expected call of TransferTasks2History. -func (mr *MockTaskManagerMockRecorder) TransferTasks2History(arg0 interface{}) *gomock.Call { +func (mr *MockTaskManagerMockRecorder) TransferTasks2History(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TransferTasks2History", reflect.TypeOf((*MockTaskManager)(nil).TransferTasks2History), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TransferTasks2History", reflect.TypeOf((*MockTaskManager)(nil).TransferTasks2History), arg0, arg1) } // UpdateFailedSchedulerIDs mocks base method. -func (m *MockTaskManager) UpdateFailedSchedulerIDs(arg0 int64, arg1 map[string]string) error { +func (m *MockTaskManager) UpdateFailedSchedulerIDs(arg0 context.Context, arg1 int64, arg2 map[string]string) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateFailedSchedulerIDs", arg0, arg1) + ret := m.ctrl.Call(m, "UpdateFailedSchedulerIDs", arg0, arg1, arg2) ret0, _ := ret[0].(error) return ret0 } // UpdateFailedSchedulerIDs indicates an expected call of UpdateFailedSchedulerIDs. -func (mr *MockTaskManagerMockRecorder) UpdateFailedSchedulerIDs(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockTaskManagerMockRecorder) UpdateFailedSchedulerIDs(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFailedSchedulerIDs", reflect.TypeOf((*MockTaskManager)(nil).UpdateFailedSchedulerIDs), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFailedSchedulerIDs", reflect.TypeOf((*MockTaskManager)(nil).UpdateFailedSchedulerIDs), arg0, arg1, arg2) } // UpdateGlobalTaskAndAddSubTasks mocks base method. -func (m *MockTaskManager) UpdateGlobalTaskAndAddSubTasks(arg0 *proto.Task, arg1 []*proto.Subtask, arg2 proto.TaskState) (bool, error) { +func (m *MockTaskManager) UpdateGlobalTaskAndAddSubTasks(arg0 context.Context, arg1 *proto.Task, arg2 []*proto.Subtask, arg3 proto.TaskState) (bool, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateGlobalTaskAndAddSubTasks", arg0, arg1, arg2) + ret := m.ctrl.Call(m, "UpdateGlobalTaskAndAddSubTasks", arg0, arg1, arg2, arg3) ret0, _ := ret[0].(bool) ret1, _ := ret[1].(error) return ret0, ret1 } // UpdateGlobalTaskAndAddSubTasks indicates an expected call of UpdateGlobalTaskAndAddSubTasks. -func (mr *MockTaskManagerMockRecorder) UpdateGlobalTaskAndAddSubTasks(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockTaskManagerMockRecorder) UpdateGlobalTaskAndAddSubTasks(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateGlobalTaskAndAddSubTasks", reflect.TypeOf((*MockTaskManager)(nil).UpdateGlobalTaskAndAddSubTasks), arg0, arg1, arg2) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateGlobalTaskAndAddSubTasks", reflect.TypeOf((*MockTaskManager)(nil).UpdateGlobalTaskAndAddSubTasks), arg0, arg1, arg2, arg3) } // WithNewSession mocks base method. diff --git a/pkg/disttask/framework/mock/scheduler_mock.go b/pkg/disttask/framework/mock/scheduler_mock.go index b34f04f631a92..3639eb4f7a631 100644 --- a/pkg/disttask/framework/mock/scheduler_mock.go +++ b/pkg/disttask/framework/mock/scheduler_mock.go @@ -37,24 +37,24 @@ func (m *MockTaskTable) EXPECT() *MockTaskTableMockRecorder { } // FinishSubtask mocks base method. -func (m *MockTaskTable) FinishSubtask(arg0 int64, arg1 []byte) error { +func (m *MockTaskTable) FinishSubtask(arg0 context.Context, arg1 string, arg2 int64, arg3 []byte) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "FinishSubtask", arg0, arg1) + ret := m.ctrl.Call(m, "FinishSubtask", arg0, arg1, arg2, arg3) ret0, _ := ret[0].(error) return ret0 } // FinishSubtask indicates an expected call of FinishSubtask. -func (mr *MockTaskTableMockRecorder) FinishSubtask(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockTaskTableMockRecorder) FinishSubtask(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinishSubtask", reflect.TypeOf((*MockTaskTable)(nil).FinishSubtask), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinishSubtask", reflect.TypeOf((*MockTaskTable)(nil).FinishSubtask), arg0, arg1, arg2, arg3) } // GetFirstSubtaskInStates mocks base method. -func (m *MockTaskTable) GetFirstSubtaskInStates(arg0 string, arg1 int64, arg2 proto.Step, arg3 ...interface{}) (*proto.Subtask, error) { +func (m *MockTaskTable) GetFirstSubtaskInStates(arg0 context.Context, arg1 string, arg2 int64, arg3 proto.Step, arg4 ...interface{}) (*proto.Subtask, error) { m.ctrl.T.Helper() - varargs := []interface{}{arg0, arg1, arg2} - for _, a := range arg3 { + varargs := []interface{}{arg0, arg1, arg2, arg3} + for _, a := range arg4 { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "GetFirstSubtaskInStates", varargs...) @@ -64,32 +64,32 @@ func (m *MockTaskTable) GetFirstSubtaskInStates(arg0 string, arg1 int64, arg2 pr } // GetFirstSubtaskInStates indicates an expected call of GetFirstSubtaskInStates. -func (mr *MockTaskTableMockRecorder) GetFirstSubtaskInStates(arg0, arg1, arg2 interface{}, arg3 ...interface{}) *gomock.Call { +func (mr *MockTaskTableMockRecorder) GetFirstSubtaskInStates(arg0, arg1, arg2, arg3 interface{}, arg4 ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{arg0, arg1, arg2}, arg3...) + varargs := append([]interface{}{arg0, arg1, arg2, arg3}, arg4...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetFirstSubtaskInStates", reflect.TypeOf((*MockTaskTable)(nil).GetFirstSubtaskInStates), varargs...) } // GetGlobalTaskByID mocks base method. -func (m *MockTaskTable) GetGlobalTaskByID(arg0 int64) (*proto.Task, error) { +func (m *MockTaskTable) GetGlobalTaskByID(arg0 context.Context, arg1 int64) (*proto.Task, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetGlobalTaskByID", arg0) + ret := m.ctrl.Call(m, "GetGlobalTaskByID", arg0, arg1) ret0, _ := ret[0].(*proto.Task) ret1, _ := ret[1].(error) return ret0, ret1 } // GetGlobalTaskByID indicates an expected call of GetGlobalTaskByID. -func (mr *MockTaskTableMockRecorder) GetGlobalTaskByID(arg0 interface{}) *gomock.Call { +func (mr *MockTaskTableMockRecorder) GetGlobalTaskByID(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetGlobalTaskByID", reflect.TypeOf((*MockTaskTable)(nil).GetGlobalTaskByID), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetGlobalTaskByID", reflect.TypeOf((*MockTaskTable)(nil).GetGlobalTaskByID), arg0, arg1) } // GetGlobalTasksInStates mocks base method. -func (m *MockTaskTable) GetGlobalTasksInStates(arg0 ...interface{}) ([]*proto.Task, error) { +func (m *MockTaskTable) GetGlobalTasksInStates(arg0 context.Context, arg1 ...interface{}) ([]*proto.Task, error) { m.ctrl.T.Helper() - varargs := []interface{}{} - for _, a := range arg0 { + varargs := []interface{}{arg0} + for _, a := range arg1 { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "GetGlobalTasksInStates", varargs...) @@ -99,16 +99,17 @@ func (m *MockTaskTable) GetGlobalTasksInStates(arg0 ...interface{}) ([]*proto.Ta } // GetGlobalTasksInStates indicates an expected call of GetGlobalTasksInStates. -func (mr *MockTaskTableMockRecorder) GetGlobalTasksInStates(arg0 ...interface{}) *gomock.Call { +func (mr *MockTaskTableMockRecorder) GetGlobalTasksInStates(arg0 interface{}, arg1 ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetGlobalTasksInStates", reflect.TypeOf((*MockTaskTable)(nil).GetGlobalTasksInStates), arg0...) + varargs := append([]interface{}{arg0}, arg1...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetGlobalTasksInStates", reflect.TypeOf((*MockTaskTable)(nil).GetGlobalTasksInStates), varargs...) } // GetSubtasksInStates mocks base method. -func (m *MockTaskTable) GetSubtasksInStates(arg0 string, arg1 int64, arg2 proto.Step, arg3 ...interface{}) ([]*proto.Subtask, error) { +func (m *MockTaskTable) GetSubtasksInStates(arg0 context.Context, arg1 string, arg2 int64, arg3 proto.Step, arg4 ...interface{}) ([]*proto.Subtask, error) { m.ctrl.T.Helper() - varargs := []interface{}{arg0, arg1, arg2} - for _, a := range arg3 { + varargs := []interface{}{arg0, arg1, arg2, arg3} + for _, a := range arg4 { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "GetSubtasksInStates", varargs...) @@ -118,17 +119,17 @@ func (m *MockTaskTable) GetSubtasksInStates(arg0 string, arg1 int64, arg2 proto. } // GetSubtasksInStates indicates an expected call of GetSubtasksInStates. -func (mr *MockTaskTableMockRecorder) GetSubtasksInStates(arg0, arg1, arg2 interface{}, arg3 ...interface{}) *gomock.Call { +func (mr *MockTaskTableMockRecorder) GetSubtasksInStates(arg0, arg1, arg2, arg3 interface{}, arg4 ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{arg0, arg1, arg2}, arg3...) + varargs := append([]interface{}{arg0, arg1, arg2, arg3}, arg4...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSubtasksInStates", reflect.TypeOf((*MockTaskTable)(nil).GetSubtasksInStates), varargs...) } // HasSubtasksInStates mocks base method. -func (m *MockTaskTable) HasSubtasksInStates(arg0 string, arg1 int64, arg2 proto.Step, arg3 ...interface{}) (bool, error) { +func (m *MockTaskTable) HasSubtasksInStates(arg0 context.Context, arg1 string, arg2 int64, arg3 proto.Step, arg4 ...interface{}) (bool, error) { m.ctrl.T.Helper() - varargs := []interface{}{arg0, arg1, arg2} - for _, a := range arg3 { + varargs := []interface{}{arg0, arg1, arg2, arg3} + for _, a := range arg4 { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "HasSubtasksInStates", varargs...) @@ -138,95 +139,95 @@ func (m *MockTaskTable) HasSubtasksInStates(arg0 string, arg1 int64, arg2 proto. } // HasSubtasksInStates indicates an expected call of HasSubtasksInStates. -func (mr *MockTaskTableMockRecorder) HasSubtasksInStates(arg0, arg1, arg2 interface{}, arg3 ...interface{}) *gomock.Call { +func (mr *MockTaskTableMockRecorder) HasSubtasksInStates(arg0, arg1, arg2, arg3 interface{}, arg4 ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{arg0, arg1, arg2}, arg3...) + varargs := append([]interface{}{arg0, arg1, arg2, arg3}, arg4...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "HasSubtasksInStates", reflect.TypeOf((*MockTaskTable)(nil).HasSubtasksInStates), varargs...) } // IsSchedulerCanceled mocks base method. -func (m *MockTaskTable) IsSchedulerCanceled(arg0 string, arg1 int64) (bool, error) { +func (m *MockTaskTable) IsSchedulerCanceled(arg0 context.Context, arg1 string, arg2 int64) (bool, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "IsSchedulerCanceled", arg0, arg1) + ret := m.ctrl.Call(m, "IsSchedulerCanceled", arg0, arg1, arg2) ret0, _ := ret[0].(bool) ret1, _ := ret[1].(error) return ret0, ret1 } // IsSchedulerCanceled indicates an expected call of IsSchedulerCanceled. -func (mr *MockTaskTableMockRecorder) IsSchedulerCanceled(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockTaskTableMockRecorder) IsSchedulerCanceled(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsSchedulerCanceled", reflect.TypeOf((*MockTaskTable)(nil).IsSchedulerCanceled), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsSchedulerCanceled", reflect.TypeOf((*MockTaskTable)(nil).IsSchedulerCanceled), arg0, arg1, arg2) } // PauseSubtasks mocks base method. -func (m *MockTaskTable) PauseSubtasks(arg0 string, arg1 int64) error { +func (m *MockTaskTable) PauseSubtasks(arg0 context.Context, arg1 string, arg2 int64) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "PauseSubtasks", arg0, arg1) + ret := m.ctrl.Call(m, "PauseSubtasks", arg0, arg1, arg2) ret0, _ := ret[0].(error) return ret0 } // PauseSubtasks indicates an expected call of PauseSubtasks. -func (mr *MockTaskTableMockRecorder) PauseSubtasks(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockTaskTableMockRecorder) PauseSubtasks(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PauseSubtasks", reflect.TypeOf((*MockTaskTable)(nil).PauseSubtasks), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PauseSubtasks", reflect.TypeOf((*MockTaskTable)(nil).PauseSubtasks), arg0, arg1, arg2) } // StartManager mocks base method. -func (m *MockTaskTable) StartManager(arg0, arg1 string) error { +func (m *MockTaskTable) StartManager(arg0 context.Context, arg1, arg2 string) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "StartManager", arg0, arg1) + ret := m.ctrl.Call(m, "StartManager", arg0, arg1, arg2) ret0, _ := ret[0].(error) return ret0 } // StartManager indicates an expected call of StartManager. -func (mr *MockTaskTableMockRecorder) StartManager(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockTaskTableMockRecorder) StartManager(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StartManager", reflect.TypeOf((*MockTaskTable)(nil).StartManager), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StartManager", reflect.TypeOf((*MockTaskTable)(nil).StartManager), arg0, arg1, arg2) } // StartSubtask mocks base method. -func (m *MockTaskTable) StartSubtask(arg0 int64) error { +func (m *MockTaskTable) StartSubtask(arg0 context.Context, arg1 int64) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "StartSubtask", arg0) + ret := m.ctrl.Call(m, "StartSubtask", arg0, arg1) ret0, _ := ret[0].(error) return ret0 } // StartSubtask indicates an expected call of StartSubtask. -func (mr *MockTaskTableMockRecorder) StartSubtask(arg0 interface{}) *gomock.Call { +func (mr *MockTaskTableMockRecorder) StartSubtask(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StartSubtask", reflect.TypeOf((*MockTaskTable)(nil).StartSubtask), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StartSubtask", reflect.TypeOf((*MockTaskTable)(nil).StartSubtask), arg0, arg1) } // UpdateErrorToSubtask mocks base method. -func (m *MockTaskTable) UpdateErrorToSubtask(arg0 string, arg1 int64, arg2 error) error { +func (m *MockTaskTable) UpdateErrorToSubtask(arg0 context.Context, arg1 string, arg2 int64, arg3 error) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateErrorToSubtask", arg0, arg1, arg2) + ret := m.ctrl.Call(m, "UpdateErrorToSubtask", arg0, arg1, arg2, arg3) ret0, _ := ret[0].(error) return ret0 } // UpdateErrorToSubtask indicates an expected call of UpdateErrorToSubtask. -func (mr *MockTaskTableMockRecorder) UpdateErrorToSubtask(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockTaskTableMockRecorder) UpdateErrorToSubtask(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateErrorToSubtask", reflect.TypeOf((*MockTaskTable)(nil).UpdateErrorToSubtask), arg0, arg1, arg2) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateErrorToSubtask", reflect.TypeOf((*MockTaskTable)(nil).UpdateErrorToSubtask), arg0, arg1, arg2, arg3) } // UpdateSubtaskStateAndError mocks base method. -func (m *MockTaskTable) UpdateSubtaskStateAndError(arg0 int64, arg1 proto.TaskState, arg2 error) error { +func (m *MockTaskTable) UpdateSubtaskStateAndError(arg0 context.Context, arg1 string, arg2 int64, arg3 proto.TaskState, arg4 error) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateSubtaskStateAndError", arg0, arg1, arg2) + ret := m.ctrl.Call(m, "UpdateSubtaskStateAndError", arg0, arg1, arg2, arg3, arg4) ret0, _ := ret[0].(error) return ret0 } // UpdateSubtaskStateAndError indicates an expected call of UpdateSubtaskStateAndError. -func (mr *MockTaskTableMockRecorder) UpdateSubtaskStateAndError(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockTaskTableMockRecorder) UpdateSubtaskStateAndError(arg0, arg1, arg2, arg3, arg4 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateSubtaskStateAndError", reflect.TypeOf((*MockTaskTable)(nil).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. diff --git a/pkg/disttask/framework/planner/BUILD.bazel b/pkg/disttask/framework/planner/BUILD.bazel index 03ae2cbd1f081..3f28cede80197 100644 --- a/pkg/disttask/framework/planner/BUILD.bazel +++ b/pkg/disttask/framework/planner/BUILD.bazel @@ -27,6 +27,7 @@ go_test( ":planner", "//pkg/disttask/framework/mock", "//pkg/disttask/framework/storage", + "//pkg/kv", "//pkg/testkit", "@com_github_ngaut_pools//:pools", "@com_github_stretchr_testify//require", diff --git a/pkg/disttask/framework/planner/planner.go b/pkg/disttask/framework/planner/planner.go index d2d5988d7b695..eadd73208d630 100644 --- a/pkg/disttask/framework/planner/planner.go +++ b/pkg/disttask/framework/planner/planner.go @@ -37,6 +37,7 @@ func (*Planner) Run(planCtx PlanCtx, plan LogicalPlan) (int64, error) { } return globalTaskManager.AddGlobalTaskWithSession( + planCtx.Ctx, planCtx.SessionCtx, planCtx.TaskKey, planCtx.TaskType, diff --git a/pkg/disttask/framework/planner/planner_test.go b/pkg/disttask/framework/planner/planner_test.go index 22e68787857c8..e515c3e0e266f 100644 --- a/pkg/disttask/framework/planner/planner_test.go +++ b/pkg/disttask/framework/planner/planner_test.go @@ -23,6 +23,7 @@ import ( "github.com/pingcap/tidb/pkg/disttask/framework/mock" "github.com/pingcap/tidb/pkg/disttask/framework/planner" "github.com/pingcap/tidb/pkg/disttask/framework/storage" + "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/testkit" "github.com/stretchr/testify/require" "github.com/tikv/client-go/v2/util" @@ -34,13 +35,15 @@ func TestPlanner(t *testing.T) { defer ctrl.Finish() ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, kv.InternalDistTask) + store := testkit.CreateMockStore(t) gtk := testkit.NewTestKit(t, store) pool := pools.NewResourcePool(func() (pools.Resource, error) { return gtk.Session(), nil }, 1, 1, time.Second) defer pool.Close() - mgr := storage.NewTaskManager(util.WithInternalSourceType(ctx, "taskManager"), pool) + mgr := storage.NewTaskManager(pool) storage.SetTaskManager(mgr) p := &planner.Planner{} diff --git a/pkg/disttask/framework/scheduler/BUILD.bazel b/pkg/disttask/framework/scheduler/BUILD.bazel index 71840da1e0f84..9ff3449a5411d 100644 --- a/pkg/disttask/framework/scheduler/BUILD.bazel +++ b/pkg/disttask/framework/scheduler/BUILD.bazel @@ -32,8 +32,6 @@ go_library( "//pkg/util/memory", "@com_github_pingcap_errors//:errors", "@com_github_pingcap_failpoint//:failpoint", - "@org_golang_google_grpc//codes", - "@org_golang_google_grpc//status", "@org_uber_go_zap//:zap", ], ) diff --git a/pkg/disttask/framework/scheduler/execute/summary.go b/pkg/disttask/framework/scheduler/execute/summary.go index bc0c4bf4cb46d..5bd1924800cc1 100644 --- a/pkg/disttask/framework/scheduler/execute/summary.go +++ b/pkg/disttask/framework/scheduler/execute/summary.go @@ -80,7 +80,7 @@ func (s *Summary) PersistRowCount(ctx context.Context, taskMgr *storage.TaskMana s.mu.Unlock() for subtaskID, rowCount := range copiedRowCount { - err := taskMgr.UpdateSubtaskRowCount(subtaskID, rowCount) + err := taskMgr.UpdateSubtaskRowCount(ctx, subtaskID, rowCount) if err != nil { logutil.Logger(ctx).Warn("update subtask row count failed", zap.Error(err)) } diff --git a/pkg/disttask/framework/scheduler/interface.go b/pkg/disttask/framework/scheduler/interface.go index 688634c98843e..dc2c4aa9375af 100644 --- a/pkg/disttask/framework/scheduler/interface.go +++ b/pkg/disttask/framework/scheduler/interface.go @@ -23,20 +23,20 @@ import ( // TaskTable defines the interface to access task table. type TaskTable interface { - GetGlobalTasksInStates(states ...interface{}) (task []*proto.Task, err error) - GetGlobalTaskByID(taskID int64) (task *proto.Task, err error) - - GetSubtasksInStates(tidbID string, taskID int64, step proto.Step, states ...interface{}) ([]*proto.Subtask, error) - GetFirstSubtaskInStates(instanceID string, taskID int64, step proto.Step, states ...interface{}) (*proto.Subtask, error) - StartManager(tidbID string, role string) error - StartSubtask(subtaskID int64) error - UpdateSubtaskStateAndError(subtaskID int64, state proto.TaskState, err error) error - FinishSubtask(subtaskID int64, meta []byte) error - - HasSubtasksInStates(tidbID string, taskID int64, step proto.Step, states ...interface{}) (bool, error) - UpdateErrorToSubtask(tidbID string, taskID int64, err error) error - IsSchedulerCanceled(tidbID string, taskID int64) (bool, error) - PauseSubtasks(tidbID string, taskID int64) error + GetGlobalTasksInStates(ctx context.Context, states ...interface{}) (task []*proto.Task, err error) + GetGlobalTaskByID(ctx context.Context, taskID int64) (task *proto.Task, err error) + + GetSubtasksInStates(ctx context.Context, tidbID string, taskID int64, step proto.Step, states ...interface{}) ([]*proto.Subtask, error) + GetFirstSubtaskInStates(ctx context.Context, instanceID string, taskID int64, step proto.Step, states ...interface{}) (*proto.Subtask, error) + StartManager(ctx context.Context, tidbID string, role string) error + StartSubtask(ctx context.Context, subtaskID int64) error + UpdateSubtaskStateAndError(ctx context.Context, tidbID string, subtaskID int64, state proto.TaskState, err error) error + FinishSubtask(ctx context.Context, tidbID string, subtaskID int64, meta []byte) error + + HasSubtasksInStates(ctx context.Context, tidbID string, taskID int64, step proto.Step, states ...interface{}) (bool, error) + UpdateErrorToSubtask(ctx context.Context, tidbID string, taskID int64, err error) error + IsSchedulerCanceled(ctx context.Context, tidbID string, taskID int64) (bool, error) + PauseSubtasks(ctx context.Context, tidbID string, taskID int64) error } // Pool defines the interface of a pool. diff --git a/pkg/disttask/framework/scheduler/manager.go b/pkg/disttask/framework/scheduler/manager.go index 57625440199fd..32723622b1f16 100644 --- a/pkg/disttask/framework/scheduler/manager.go +++ b/pkg/disttask/framework/scheduler/manager.go @@ -103,7 +103,7 @@ func (b *ManagerBuilder) BuildManager(ctx context.Context, id string, taskTable func (m *Manager) initMeta() (err error) { for i := 0; i < retrySQLTimes; i++ { - err = m.taskTable.StartManager(m.id, config.GetGlobalConfig().Instance.TiDBServiceScope) + err = m.taskTable.StartManager(m.ctx, m.id, config.GetGlobalConfig().Instance.TiDBServiceScope) if err == nil { break } @@ -148,12 +148,12 @@ func (m *Manager) fetchAndHandleRunnableTasksLoop() { logutil.Logger(m.logCtx).Info("fetchAndHandleRunnableTasksLoop done") return case <-ticker.C: - tasks, err := m.taskTable.GetGlobalTasksInStates(proto.TaskStateRunning, proto.TaskStateReverting) + tasks, err := m.taskTable.GetGlobalTasksInStates(m.ctx, proto.TaskStateRunning, proto.TaskStateReverting) if err != nil { m.logErr(err) continue } - m.onRunnableTasks(m.ctx, tasks) + m.onRunnableTasks(tasks) } } } @@ -170,7 +170,7 @@ func (m *Manager) fetchAndFastCancelTasksLoop() { logutil.Logger(m.logCtx).Info("fetchAndFastCancelTasksLoop done") return case <-ticker.C: - tasks, err := m.taskTable.GetGlobalTasksInStates(proto.TaskStateReverting) + tasks, err := m.taskTable.GetGlobalTasksInStates(m.ctx, proto.TaskStateReverting) if err != nil { m.logErr(err) continue @@ -178,7 +178,7 @@ func (m *Manager) fetchAndFastCancelTasksLoop() { m.onCanceledTasks(m.ctx, tasks) // cancel pending/running subtasks, and mark them as paused. - pausingTasks, err := m.taskTable.GetGlobalTasksInStates(proto.TaskStatePausing) + pausingTasks, err := m.taskTable.GetGlobalTasksInStates(m.ctx, proto.TaskStatePausing) if err != nil { m.logErr(err) continue @@ -192,13 +192,13 @@ func (m *Manager) fetchAndFastCancelTasksLoop() { } // onRunnableTasks handles runnable tasks. -func (m *Manager) onRunnableTasks(ctx context.Context, tasks []*proto.Task) { +func (m *Manager) onRunnableTasks(tasks []*proto.Task) { if len(tasks) == 0 { return } tasks = m.filterAlreadyHandlingTasks(tasks) for _, task := range tasks { - exist, err := m.taskTable.HasSubtasksInStates(m.id, task.ID, task.Step, + exist, err := m.taskTable.HasSubtasksInStates(m.ctx, m.id, task.ID, task.Step, proto.TaskStatePending, proto.TaskStateRevertPending, // for the case that the tidb is restarted when the subtask is running. proto.TaskStateRunning, proto.TaskStateReverting) @@ -214,7 +214,7 @@ func (m *Manager) onRunnableTasks(ctx context.Context, tasks []*proto.Task) { m.addHandlingTask(task.ID) t := task err = m.schedulerPool.Run(func() { - m.onRunnableTask(ctx, t) + m.onRunnableTask(t) m.removeHandlingTask(t.ID) }) // pool closed. @@ -256,7 +256,7 @@ func (m *Manager) onPausingTasks(tasks []*proto.Task) error { // Should not change the subtask's state. cancel(nil) } - if err := m.taskTable.PauseSubtasks(m.id, task.ID); err != nil { + if err := m.taskTable.PauseSubtasks(m.ctx, m.id, task.ID); err != nil { return err } } @@ -323,7 +323,7 @@ type TestContext struct { var testContexts sync.Map // onRunnableTask handles a runnable task. -func (m *Manager) onRunnableTask(ctx context.Context, task *proto.Task) { +func (m *Manager) onRunnableTask(task *proto.Task) { logutil.Logger(m.logCtx).Info("onRunnableTask", zap.Int64("task-id", task.ID), zap.Stringer("type", task.Type)) // runCtx only used in scheduler.Run, cancel in m.fetchAndFastCancelTasks. factory := getSchedulerFactory(task.Type) @@ -332,11 +332,11 @@ func (m *Manager) onRunnableTask(ctx context.Context, task *proto.Task) { m.logErrAndPersist(err, task.ID) return } - scheduler := factory(ctx, m.id, task, m.taskTable) - taskCtx, taskCancel := context.WithCancelCause(ctx) + scheduler := factory(m.ctx, m.id, task, m.taskTable) + taskCtx, taskCancel := context.WithCancelCause(m.ctx) m.registerCancelFunc(task.ID, taskCancel) defer taskCancel(nil) - + // scheduler should init before run()/pause()/rollback(). err := scheduler.Init(taskCtx) if err != nil { m.logErrAndPersist(err, task.ID) @@ -345,7 +345,8 @@ func (m *Manager) onRunnableTask(ctx context.Context, task *proto.Task) { defer scheduler.Close() for { select { - case <-ctx.Done(): + case <-m.ctx.Done(): + logutil.Logger(m.logCtx).Info("onRunnableTask exit for cancel", zap.Int64("task-id", task.ID), zap.Stringer("type", task.Type)) return case <-time.After(checkTime): } @@ -360,7 +361,7 @@ func (m *Manager) onRunnableTask(ctx context.Context, task *proto.Task) { } }() }) - task, err := m.taskTable.GetGlobalTaskByID(task.ID) + task, err := m.taskTable.GetGlobalTaskByID(m.ctx, task.ID) if err != nil { m.logErr(err) return @@ -373,7 +374,9 @@ func (m *Manager) onRunnableTask(ctx context.Context, task *proto.Task) { zap.Int64("task-id", task.ID), zap.Int64("step", int64(task.Step)), zap.Stringer("state", task.State)) return } - if exist, err := m.taskTable.HasSubtasksInStates(m.id, task.ID, task.Step, + if exist, err := m.taskTable.HasSubtasksInStates( + m.ctx, + m.id, task.ID, task.Step, proto.TaskStatePending, proto.TaskStateRevertPending, // for the case that the tidb is restarted when the subtask is running. proto.TaskStateRunning, proto.TaskStateReverting); err != nil { @@ -384,11 +387,14 @@ func (m *Manager) onRunnableTask(ctx context.Context, task *proto.Task) { } switch task.State { case proto.TaskStateRunning: + // use taskCtx for canceling. err = scheduler.Run(taskCtx, task) case proto.TaskStatePausing: - err = scheduler.Pause(taskCtx, task) + // use m.ctx since this process should not be canceled. + err = scheduler.Pause(m.ctx, task) case proto.TaskStateReverting: - err = scheduler.Rollback(taskCtx, task) + // use m.ctx since this process should not be canceled. + err = scheduler.Rollback(m.ctx, task) } if err != nil { logutil.Logger(m.logCtx).Error("failed to handle task", zap.Error(err)) @@ -427,7 +433,7 @@ func (m *Manager) logErrAndPersist(err error, taskID int64) { if common.IsRetryableError(err) || isRetryableError(err) { return } - err1 := m.taskTable.UpdateErrorToSubtask(m.id, taskID, err) + err1 := m.taskTable.UpdateErrorToSubtask(m.ctx, m.id, taskID, err) if err1 != nil { logutil.Logger(m.logCtx).Error("update to subtask failed", zap.Error(err1), zap.Stack("stack")) } diff --git a/pkg/disttask/framework/scheduler/manager_test.go b/pkg/disttask/framework/scheduler/manager_test.go index 7c87843f315dd..ab2727b06da93 100644 --- a/pkg/disttask/framework/scheduler/manager_test.go +++ b/pkg/disttask/framework/scheduler/manager_test.go @@ -91,7 +91,7 @@ func TestManageTask(t *testing.T) { m.addHandlingTask(3) ctx4, cancel4 := context.WithCancelCause(context.Background()) m.registerCancelFunc(1, cancel4) - mockTaskTable.EXPECT().PauseSubtasks("test", int64(1)).Return(nil) + mockTaskTable.EXPECT().PauseSubtasks(m.ctx, "test", int64(1)).Return(nil) m.onPausingTasks([]*proto.Task{{ID: 1}}) require.Equal(t, context.Canceled, ctx4.Err()) } @@ -102,6 +102,7 @@ func TestOnRunnableTasks(t *testing.T) { mockTaskTable := mock.NewMockTaskTable(ctrl) mockInternalScheduler := mock.NewMockScheduler(ctrl) mockPool := mock.NewMockPool(ctrl) + ctx := context.Background() b := NewManagerBuilder() b.setPoolFactory(func(name string, size int32, component util.Component, options ...spool.Option) (Pool, error) { @@ -111,11 +112,11 @@ func TestOnRunnableTasks(t *testing.T) { taskID := int64(1) task := &proto.Task{ID: taskID, State: proto.TaskStateRunning, Step: proto.StepOne, Type: "type"} - m, err := b.BuildManager(context.Background(), id, mockTaskTable) + m, err := b.BuildManager(ctx, id, mockTaskTable) require.NoError(t, err) // no task - m.onRunnableTasks(context.Background(), nil) + m.onRunnableTasks(nil) RegisterTaskType("type", func(ctx context.Context, id string, task *proto.Task, taskTable TaskTable) Scheduler { @@ -124,50 +125,50 @@ func TestOnRunnableTasks(t *testing.T) { // get subtask failed mockInternalScheduler.EXPECT().Init(gomock.Any()).Return(nil) - mockTaskTable.EXPECT().HasSubtasksInStates(id, taskID, proto.StepOne, + mockTaskTable.EXPECT().HasSubtasksInStates(m.ctx, id, taskID, proto.StepOne, unfinishedSubtaskStates...). Return(false, errors.New("get subtask failed")) mockInternalScheduler.EXPECT().Close() - m.onRunnableTasks(context.Background(), []*proto.Task{task}) + m.onRunnableTasks([]*proto.Task{task}) // no subtask - mockTaskTable.EXPECT().HasSubtasksInStates(id, taskID, proto.StepOne, + mockTaskTable.EXPECT().HasSubtasksInStates(m.ctx, id, taskID, proto.StepOne, unfinishedSubtaskStates...).Return(false, nil) - m.onRunnableTasks(context.Background(), []*proto.Task{task}) + m.onRunnableTasks([]*proto.Task{task}) // pool error - mockTaskTable.EXPECT().HasSubtasksInStates(id, taskID, proto.StepOne, + mockTaskTable.EXPECT().HasSubtasksInStates(m.ctx, id, taskID, proto.StepOne, unfinishedSubtaskStates...).Return(true, nil) mockPool.EXPECT().Run(gomock.Any()).Return(errors.New("pool error")) - m.onRunnableTasks(context.Background(), []*proto.Task{task}) + m.onRunnableTasks([]*proto.Task{task}) // StepOne succeed wg, runFn := getPoolRunFn() - mockTaskTable.EXPECT().HasSubtasksInStates(id, taskID, proto.StepOne, + mockTaskTable.EXPECT().HasSubtasksInStates(m.ctx, id, taskID, proto.StepOne, unfinishedSubtaskStates...).Return(true, nil) mockPool.EXPECT().Run(gomock.Any()).DoAndReturn(runFn) - mockTaskTable.EXPECT().GetGlobalTaskByID(taskID).Return(task, nil) - mockTaskTable.EXPECT().HasSubtasksInStates(id, taskID, proto.StepOne, + mockTaskTable.EXPECT().GetGlobalTaskByID(m.ctx, taskID).Return(task, nil) + mockTaskTable.EXPECT().HasSubtasksInStates(m.ctx, id, taskID, proto.StepOne, unfinishedSubtaskStates...).Return(true, nil) mockInternalScheduler.EXPECT().Run(gomock.Any(), task).Return(nil) // StepTwo failed task1 := &proto.Task{ID: taskID, State: proto.TaskStateRunning, Step: proto.StepTwo} - mockTaskTable.EXPECT().GetGlobalTaskByID(taskID).Return(task1, nil) - mockTaskTable.EXPECT().HasSubtasksInStates(id, taskID, proto.StepTwo, + mockTaskTable.EXPECT().GetGlobalTaskByID(m.ctx, taskID).Return(task1, nil) + mockTaskTable.EXPECT().HasSubtasksInStates(m.ctx, id, taskID, proto.StepTwo, unfinishedSubtaskStates...).Return(true, nil) mockInternalScheduler.EXPECT().Run(gomock.Any(), task1).Return(errors.New("run err")) task2 := &proto.Task{ID: taskID, State: proto.TaskStateReverting, Step: proto.StepTwo} - mockTaskTable.EXPECT().GetGlobalTaskByID(taskID).Return(task2, nil) - mockTaskTable.EXPECT().HasSubtasksInStates(id, taskID, proto.StepTwo, + mockTaskTable.EXPECT().GetGlobalTaskByID(m.ctx, taskID).Return(task2, nil) + mockTaskTable.EXPECT().HasSubtasksInStates(m.ctx, id, taskID, proto.StepTwo, unfinishedSubtaskStates...).Return(true, nil) mockInternalScheduler.EXPECT().Rollback(gomock.Any(), task2).Return(nil) task3 := &proto.Task{ID: taskID, State: proto.TaskStateReverted, Step: proto.StepTwo} - mockTaskTable.EXPECT().GetGlobalTaskByID(taskID).Return(task3, nil) + mockTaskTable.EXPECT().GetGlobalTaskByID(m.ctx, taskID).Return(task3, nil) - m.onRunnableTasks(context.Background(), []*proto.Task{task}) + m.onRunnableTasks([]*proto.Task{task}) wg.Wait() } @@ -187,6 +188,10 @@ func TestManager(t *testing.T) { return mockInternalScheduler }) id := "test" + + m, err := b.BuildManager(context.Background(), id, mockTaskTable) + require.NoError(t, err) + taskID1 := int64(1) taskID2 := int64(2) taskID3 := int64(3) @@ -194,54 +199,53 @@ func TestManager(t *testing.T) { task2 := &proto.Task{ID: taskID2, State: proto.TaskStateReverting, Step: proto.StepOne, Type: "type"} task3 := &proto.Task{ID: taskID3, State: proto.TaskStatePausing, Step: proto.StepOne, Type: "type"} - mockTaskTable.EXPECT().StartManager("test", "").Return(nil).Times(1) - mockTaskTable.EXPECT().GetGlobalTasksInStates(proto.TaskStateRunning, proto.TaskStateReverting). + mockTaskTable.EXPECT().StartManager(m.ctx, "test", "").Return(nil).Times(1) + mockTaskTable.EXPECT().GetGlobalTasksInStates(m.ctx, proto.TaskStateRunning, proto.TaskStateReverting). Return([]*proto.Task{task1, task2}, nil).AnyTimes() - mockTaskTable.EXPECT().GetGlobalTasksInStates(proto.TaskStateReverting). + mockTaskTable.EXPECT().GetGlobalTasksInStates(m.ctx, proto.TaskStateReverting). Return([]*proto.Task{task2}, nil).AnyTimes() - mockTaskTable.EXPECT().GetGlobalTasksInStates(proto.TaskStatePausing). + mockTaskTable.EXPECT().GetGlobalTasksInStates(m.ctx, proto.TaskStatePausing). Return([]*proto.Task{task3}, nil).AnyTimes() mockInternalScheduler.EXPECT().Init(gomock.Any()).Return(nil) // task1 - mockTaskTable.EXPECT().HasSubtasksInStates(id, taskID1, proto.StepOne, + mockTaskTable.EXPECT().HasSubtasksInStates(m.ctx, id, taskID1, proto.StepOne, unfinishedSubtaskStates...). Return(true, nil) wg, runFn := getPoolRunFn() mockPool.EXPECT().Run(gomock.Any()).DoAndReturn(runFn) - mockTaskTable.EXPECT().GetGlobalTaskByID(taskID1).Return(task1, nil).AnyTimes() - mockTaskTable.EXPECT().HasSubtasksInStates(id, taskID1, proto.StepOne, + mockTaskTable.EXPECT().GetGlobalTaskByID(m.ctx, taskID1).Return(task1, nil).AnyTimes() + mockTaskTable.EXPECT().HasSubtasksInStates(m.ctx, id, taskID1, proto.StepOne, unfinishedSubtaskStates...). Return(true, nil) mockInternalScheduler.EXPECT().Run(gomock.Any(), task1).Return(nil) - mockTaskTable.EXPECT().HasSubtasksInStates(id, taskID1, proto.StepOne, + mockTaskTable.EXPECT().HasSubtasksInStates(m.ctx, id, taskID1, proto.StepOne, unfinishedSubtaskStates...). Return(false, nil).AnyTimes() mockInternalScheduler.EXPECT().Close() // task2 - mockTaskTable.EXPECT().HasSubtasksInStates(id, taskID2, proto.StepOne, + mockTaskTable.EXPECT().HasSubtasksInStates(m.ctx, id, taskID2, proto.StepOne, unfinishedSubtaskStates...). Return(true, nil) mockPool.EXPECT().Run(gomock.Any()).DoAndReturn(runFn) - mockTaskTable.EXPECT().GetGlobalTaskByID(taskID2).Return(task2, nil).AnyTimes() - mockTaskTable.EXPECT().HasSubtasksInStates(id, taskID2, proto.StepOne, + mockTaskTable.EXPECT().GetGlobalTaskByID(m.ctx, taskID2).Return(task2, nil).AnyTimes() + mockTaskTable.EXPECT().HasSubtasksInStates(m.ctx, id, taskID2, proto.StepOne, unfinishedSubtaskStates...). Return(true, nil) mockInternalScheduler.EXPECT().Init(gomock.Any()).Return(nil) mockInternalScheduler.EXPECT().Rollback(gomock.Any(), task2).Return(nil) - mockTaskTable.EXPECT().HasSubtasksInStates(id, taskID2, proto.StepOne, + mockTaskTable.EXPECT().HasSubtasksInStates(m.ctx, id, taskID2, proto.StepOne, unfinishedSubtaskStates...). Return(false, nil).AnyTimes() mockInternalScheduler.EXPECT().Close() // task3 - mockTaskTable.EXPECT().PauseSubtasks(id, taskID3).Return(nil).AnyTimes() + mockTaskTable.EXPECT().PauseSubtasks(m.ctx, id, taskID3).Return(nil).AnyTimes() // for scheduler pool mockPool.EXPECT().ReleaseAndWait().Do(func() { wg.Wait() }) - m, err := b.BuildManager(context.Background(), id, mockTaskTable) - require.NoError(t, err) + require.NoError(t, m.Start()) time.Sleep(5 * time.Second) m.Stop() diff --git a/pkg/disttask/framework/scheduler/scheduler.go b/pkg/disttask/framework/scheduler/scheduler.go index eeb9b8c754890..6ad8835abeb4e 100644 --- a/pkg/disttask/framework/scheduler/scheduler.go +++ b/pkg/disttask/framework/scheduler/scheduler.go @@ -37,8 +37,6 @@ import ( "github.com/pingcap/tidb/pkg/util/logutil" "github.com/pingcap/tidb/pkg/util/memory" "go.uber.org/zap" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" ) const ( @@ -65,6 +63,8 @@ type BaseScheduler struct { taskID int64 taskTable TaskTable logCtx context.Context + // ctx from manager + ctx context.Context Extension mu struct { @@ -78,11 +78,12 @@ type BaseScheduler struct { } // NewBaseScheduler creates a new BaseScheduler. -func NewBaseScheduler(_ context.Context, id string, taskID int64, taskTable TaskTable) *BaseScheduler { +func NewBaseScheduler(ctx context.Context, id string, taskID int64, taskTable TaskTable) *BaseScheduler { schedulerImpl := &BaseScheduler{ id: id, taskID: taskID, taskTable: taskTable, + ctx: ctx, logCtx: logutil.WithFields(context.Background(), zap.Int64("task-id", taskID)), } return schedulerImpl @@ -100,7 +101,7 @@ func (s *BaseScheduler) startCancelCheck(ctx context.Context, wg *sync.WaitGroup logutil.Logger(s.logCtx).Info("scheduler exits", zap.Error(ctx.Err())) return case <-ticker.C: - canceled, err := s.taskTable.IsSchedulerCanceled(s.id, s.taskID) + canceled, err := s.taskTable.IsSchedulerCanceled(ctx, s.id, s.taskID) if err != nil { continue } @@ -128,7 +129,7 @@ func (s *BaseScheduler) Run(ctx context.Context, task *proto.Task) (err error) { if r := recover(); r != nil { logutil.Logger(s.logCtx).Error("BaseScheduler panicked", zap.Any("recover", r), zap.Stack("stack")) err4Panic := errors.Errorf("%v", r) - err1 := s.updateErrorToSubtask(task.ID, err4Panic) + err1 := s.updateErrorToSubtask(ctx, task.ID, err4Panic) if err == nil { err = err1 } @@ -141,7 +142,7 @@ func (s *BaseScheduler) Run(ctx context.Context, task *proto.Task) (err error) { if err == nil { return nil } - return s.updateErrorToSubtask(task.ID, err) + return s.updateErrorToSubtask(ctx, task.ID, err) } func (s *BaseScheduler) run(ctx context.Context, task *proto.Task) (resErr error) { @@ -198,7 +199,7 @@ func (s *BaseScheduler) run(ctx context.Context, task *proto.Task) (resErr error wg.Wait() }() - subtasks, err := s.taskTable.GetSubtasksInStates(s.id, task.ID, task.Step, + subtasks, err := s.taskTable.GetSubtasksInStates(runCtx, s.id, task.ID, task.Step, proto.TaskStatePending, proto.TaskStateRunning) if err != nil { s.onError(err) @@ -218,15 +219,19 @@ func (s *BaseScheduler) run(ctx context.Context, task *proto.Task) (resErr error if err := s.getError(); err != nil { break } + if runCtx.Err() != nil { + logutil.Logger(s.logCtx).Info("scheduler runSubtask loop exit") + break + } - subtask, err := s.taskTable.GetFirstSubtaskInStates(s.id, task.ID, task.Step, + subtask, err := s.taskTable.GetFirstSubtaskInStates(runCtx, s.id, task.ID, task.Step, proto.TaskStatePending, proto.TaskStateRunning) if err != nil { logutil.Logger(s.logCtx).Warn("GetFirstSubtaskInStates meets error", zap.Error(err)) continue } if subtask == nil { - newTask, err := s.taskTable.GetGlobalTaskByID(task.ID) + newTask, err := s.taskTable.GetGlobalTaskByID(runCtx, task.ID) if err != nil { logutil.Logger(s.logCtx).Warn("GetGlobalTaskByID meets error", zap.Error(err)) continue @@ -245,13 +250,13 @@ func (s *BaseScheduler) run(ctx context.Context, task *proto.Task) (resErr error zap.Int64("subtask-id", subtask.ID)) subtaskErr := errors.New("subtask in running state and is not idempotent") s.onError(subtaskErr) - s.updateSubtaskStateAndError(subtask, proto.TaskStateFailed, subtaskErr) + s.updateSubtaskStateAndError(runCtx, subtask, proto.TaskStateFailed, subtaskErr) s.markErrorHandled() break } } else { // subtask.State == proto.TaskStatePending - s.startSubtaskAndUpdateState(ctx, subtask) + s.startSubtaskAndUpdateState(runCtx, subtask) if err := s.getError(); err != nil { logutil.Logger(s.logCtx).Warn("startSubtaskAndUpdateState meets error", zap.Error(err)) continue @@ -267,6 +272,10 @@ func (s *BaseScheduler) run(ctx context.Context, task *proto.Task) (resErr error } }) + failpoint.Inject("cancelBeforeRunSubtask", func() { + runCancel(nil) + }) + s.runSubtask(runCtx, executor, subtask) } return s.getError() @@ -338,7 +347,7 @@ func (s *BaseScheduler) runSubtask(ctx context.Context, executor execute.Subtask if err != nil { logutil.BgLogger().Error("get task manager failed", zap.Error(err)) } else { - err = mgr.CancelGlobalTask(int64(taskID)) + err = mgr.CancelGlobalTask(ctx, int64(taskID)) if err != nil { logutil.BgLogger().Error("cancel global task failed", zap.Error(err)) } @@ -389,7 +398,7 @@ func (s *BaseScheduler) Rollback(ctx context.Context, task *proto.Task) error { // We should cancel all subtasks before rolling back for { - subtask, err := s.taskTable.GetFirstSubtaskInStates(s.id, task.ID, task.Step, + subtask, err := s.taskTable.GetFirstSubtaskInStates(ctx, s.id, task.ID, task.Step, proto.TaskStatePending, proto.TaskStateRunning) if err != nil { s.onError(err) @@ -400,7 +409,7 @@ func (s *BaseScheduler) Rollback(ctx context.Context, task *proto.Task) error { break } - s.updateSubtaskStateAndError(subtask, proto.TaskStateCanceled, nil) + s.updateSubtaskStateAndError(ctx, subtask, proto.TaskStateCanceled, nil) if err = s.getError(); err != nil { return err } @@ -411,7 +420,7 @@ func (s *BaseScheduler) Rollback(ctx context.Context, task *proto.Task) error { s.onError(err) return s.getError() } - subtask, err := s.taskTable.GetFirstSubtaskInStates(s.id, task.ID, task.Step, + subtask, err := s.taskTable.GetFirstSubtaskInStates(ctx, s.id, task.ID, task.Step, proto.TaskStateRevertPending, proto.TaskStateReverting) if err != nil { s.onError(err) @@ -422,7 +431,7 @@ func (s *BaseScheduler) Rollback(ctx context.Context, task *proto.Task) error { return nil } if subtask.State == proto.TaskStateRevertPending { - s.updateSubtaskStateAndError(subtask, proto.TaskStateReverting, nil) + s.updateSubtaskStateAndError(ctx, subtask, proto.TaskStateReverting, nil) } if err := s.getError(); err != nil { return err @@ -432,19 +441,19 @@ func (s *BaseScheduler) Rollback(ctx context.Context, task *proto.Task) error { // will try to remove this rollback completely in the future. err = executor.Rollback(rollbackCtx) if err != nil { - s.updateSubtaskStateAndError(subtask, proto.TaskStateRevertFailed, nil) + s.updateSubtaskStateAndError(ctx, subtask, proto.TaskStateRevertFailed, nil) s.onError(err) } else { - s.updateSubtaskStateAndError(subtask, proto.TaskStateReverted, nil) + s.updateSubtaskStateAndError(ctx, subtask, proto.TaskStateReverted, nil) } return s.getError() } // Pause pause the scheduler task. -func (s *BaseScheduler) Pause(_ context.Context, task *proto.Task) error { +func (s *BaseScheduler) Pause(ctx context.Context, task *proto.Task) error { logutil.Logger(s.logCtx).Info("scheduler pause subtasks") // pause all running subtasks. - if err := s.taskTable.PauseSubtasks(s.id, task.ID); err != nil { + if err := s.taskTable.PauseSubtasks(ctx, s.id, task.ID); err != nil { s.onError(err) return s.getError() } @@ -530,14 +539,13 @@ func (s *BaseScheduler) startSubtaskAndUpdateState(ctx context.Context, subtask metrics.StartDistTaskSubTask(subtask) } -func (s *BaseScheduler) updateSubtaskStateAndErrorImpl(subtaskID int64, state proto.TaskState, subTaskErr error) { +func (s *BaseScheduler) updateSubtaskStateAndErrorImpl(ctx context.Context, tidbID string, subtaskID int64, state proto.TaskState, subTaskErr error) { // retry for 3+6+12+24+(30-4)*30 ~= 825s ~= 14 minutes logger := logutil.Logger(s.logCtx) backoffer := backoff.NewExponential(dispatcher.RetrySQLInterval, 2, dispatcher.RetrySQLMaxInterval) - ctx := context.Background() err := handle.RunWithRetry(ctx, dispatcher.RetrySQLTimes, backoffer, logger, func(ctx context.Context) (bool, error) { - return true, s.taskTable.UpdateSubtaskStateAndError(subtaskID, state, subTaskErr) + return true, s.taskTable.UpdateSubtaskStateAndError(ctx, tidbID, subtaskID, state, subTaskErr) }, ) if err != nil { @@ -551,7 +559,7 @@ func (s *BaseScheduler) startSubtask(ctx context.Context, subtaskID int64) { backoffer := backoff.NewExponential(dispatcher.RetrySQLInterval, 2, dispatcher.RetrySQLMaxInterval) err := handle.RunWithRetry(ctx, dispatcher.RetrySQLTimes, backoffer, logger, func(ctx context.Context) (bool, error) { - return true, s.taskTable.StartSubtask(subtaskID) + return true, s.taskTable.StartSubtask(ctx, subtaskID) }, ) if err != nil { @@ -564,7 +572,7 @@ func (s *BaseScheduler) finishSubtask(ctx context.Context, subtask *proto.Subtas backoffer := backoff.NewExponential(dispatcher.RetrySQLInterval, 2, dispatcher.RetrySQLMaxInterval) err := handle.RunWithRetry(ctx, dispatcher.RetrySQLTimes, backoffer, logger, func(ctx context.Context) (bool, error) { - return true, s.taskTable.FinishSubtask(subtask.ID, subtask.Meta) + return true, s.taskTable.FinishSubtask(ctx, subtask.SchedulerID, subtask.ID, subtask.Meta) }, ) if err != nil { @@ -572,10 +580,10 @@ func (s *BaseScheduler) finishSubtask(ctx context.Context, subtask *proto.Subtas } } -func (s *BaseScheduler) updateSubtaskStateAndError(subtask *proto.Subtask, state proto.TaskState, subTaskErr error) { +func (s *BaseScheduler) updateSubtaskStateAndError(ctx context.Context, subtask *proto.Subtask, state proto.TaskState, subTaskErr error) { metrics.DecDistTaskSubTaskCnt(subtask) metrics.EndDistTaskSubTask(subtask) - s.updateSubtaskStateAndErrorImpl(subtask.ID, state, subTaskErr) + s.updateSubtaskStateAndErrorImpl(ctx, subtask.SchedulerID, subtask.ID, state, subTaskErr) subtask.State = state metrics.IncDistTaskSubTaskCnt(subtask) if !subtask.IsFinished() { @@ -612,14 +620,14 @@ func (s *BaseScheduler) markSubTaskCanceledOrFailed(ctx context.Context, subtask err := errors.Cause(err) if ctx.Err() != nil && context.Cause(ctx) == ErrCancelSubtask { logutil.Logger(s.logCtx).Warn("subtask canceled", zap.Error(err)) - s.updateSubtaskStateAndError(subtask, proto.TaskStateCanceled, nil) + s.updateSubtaskStateAndError(s.ctx, subtask, proto.TaskStateCanceled, nil) } else if common.IsRetryableError(err) || isRetryableError(err) { logutil.Logger(s.logCtx).Warn("met retryable error", zap.Error(err)) - } else if errors.Cause(err) != context.Canceled && status.Code(err) != codes.Canceled { - logutil.Logger(s.logCtx).Warn("subtask failed", zap.Error(err)) - s.updateSubtaskStateAndError(subtask, proto.TaskStateFailed, err) - } else { + } else if common.IsContextCanceledError(err) { logutil.Logger(s.logCtx).Info("met context canceled for gracefully shutdown", zap.Error(err)) + } else { + logutil.Logger(s.logCtx).Warn("subtask failed", zap.Error(err)) + s.updateSubtaskStateAndError(s.ctx, subtask, proto.TaskStateFailed, err) } s.markErrorHandled() return true @@ -627,12 +635,12 @@ func (s *BaseScheduler) markSubTaskCanceledOrFailed(ctx context.Context, subtask return false } -func (s *BaseScheduler) updateErrorToSubtask(taskID int64, err error) error { +func (s *BaseScheduler) updateErrorToSubtask(ctx context.Context, taskID int64, err error) error { logger := logutil.Logger(s.logCtx) backoffer := backoff.NewExponential(dispatcher.RetrySQLInterval, 2, dispatcher.RetrySQLMaxInterval) err1 := handle.RunWithRetry(s.logCtx, dispatcher.RetrySQLTimes, backoffer, logger, func(_ context.Context) (bool, error) { - return true, s.taskTable.UpdateErrorToSubtask(s.id, taskID, err) + return true, s.taskTable.UpdateErrorToSubtask(ctx, s.id, taskID, err) }, ) if err1 == nil { diff --git a/pkg/disttask/framework/scheduler/scheduler_test.go b/pkg/disttask/framework/scheduler/scheduler_test.go index df2b7f70e3e32..508cdcfae1a13 100644 --- a/pkg/disttask/framework/scheduler/scheduler_test.go +++ b/pkg/disttask/framework/scheduler/scheduler_test.go @@ -50,7 +50,7 @@ func TestSchedulerRun(t *testing.T) { mockExtension := mock.NewMockExtension(ctrl) // we don't test cancelCheck here, but in case the test is slow and trigger it. - mockSubtaskTable.EXPECT().IsSchedulerCanceled(gomock.Any(), gomock.Any()).Return(false, nil).AnyTimes() + mockSubtaskTable.EXPECT().IsSchedulerCanceled(ctx, gomock.Any(), gomock.Any()).Return(false, nil).AnyTimes() // 1. no scheduler constructor schedulerRegisterErr := errors.Errorf("constructor of scheduler for key not found") @@ -59,7 +59,7 @@ func TestSchedulerRun(t *testing.T) { scheduler.Extension = mockExtension err := scheduler.run(runCtx, &proto.Task{Step: proto.StepOne, Type: tp}) require.EqualError(t, err, schedulerRegisterErr.Error()) - mockSubtaskTable.EXPECT().UpdateErrorToSubtask(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes() + mockSubtaskTable.EXPECT().UpdateErrorToSubtask(runCtx, gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes() err = scheduler.Run(runCtx, &proto.Task{Step: proto.StepOne, Type: tp}) require.NoError(t, err) @@ -78,15 +78,15 @@ func TestSchedulerRun(t *testing.T) { // 3. run subtask failed runSubtaskErr := errors.New("run subtask error") mockSubtaskExecutor.EXPECT().Init(gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().GetSubtasksInStates("id", taskID, proto.StepOne, + mockSubtaskTable.EXPECT().GetSubtasksInStates(gomock.Any(), "id", taskID, proto.StepOne, unfinishedNormalSubtaskStates...).Return([]*proto.Subtask{{ - ID: 1, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending}}, nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates("id", taskID, proto.StepOne, + ID: 1, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending, SchedulerID: "id"}}, nil) + mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", taskID, proto.StepOne, unfinishedNormalSubtaskStates...).Return(&proto.Subtask{ - ID: 1, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending}, nil) - mockSubtaskTable.EXPECT().StartSubtask(taskID).Return(nil) + ID: 1, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending, SchedulerID: "id"}, nil) + mockSubtaskTable.EXPECT().StartSubtask(gomock.Any(), taskID).Return(nil) mockSubtaskExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).Return(runSubtaskErr) - mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(taskID, proto.TaskStateFailed, gomock.Any()).Return(nil) + mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(gomock.Any(), "id", taskID, proto.TaskStateFailed, gomock.Any()).Return(nil) mockSubtaskExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) err = scheduler.Run(runCtx, task) @@ -94,51 +94,51 @@ func TestSchedulerRun(t *testing.T) { // 4. run subtask success mockSubtaskExecutor.EXPECT().Init(gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().GetSubtasksInStates("id", taskID, proto.StepOne, + mockSubtaskTable.EXPECT().GetSubtasksInStates(gomock.Any(), "id", taskID, proto.StepOne, unfinishedNormalSubtaskStates...).Return([]*proto.Subtask{{ - ID: 1, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending}}, nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates("id", taskID, proto.StepOne, + ID: 1, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending, SchedulerID: "id"}}, nil) + mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", taskID, proto.StepOne, unfinishedNormalSubtaskStates...).Return(&proto.Subtask{ - ID: 1, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending}, nil) - mockSubtaskTable.EXPECT().StartSubtask(taskID).Return(nil) + ID: 1, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending, SchedulerID: "id"}, nil) + mockSubtaskTable.EXPECT().StartSubtask(gomock.Any(), taskID).Return(nil) mockSubtaskExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).Return(nil) mockSubtaskExecutor.EXPECT().OnFinished(gomock.Any(), gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().FinishSubtask(int64(1), gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates("id", taskID, proto.StepOne, + 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) - mockSubtaskTable.EXPECT().GetGlobalTaskByID(gomock.Any()).Return(&proto.Task{ID: taskID, Step: proto.StepTwo}, nil) + mockSubtaskTable.EXPECT().GetGlobalTaskByID(gomock.Any(), gomock.Any()).Return(&proto.Task{ID: taskID, Step: proto.StepTwo}, nil) mockSubtaskExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) err = scheduler.Run(runCtx, task) require.NoError(t, err) // 5. run subtask one by one mockSubtaskExecutor.EXPECT().Init(gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().GetSubtasksInStates("id", taskID, proto.StepOne, + mockSubtaskTable.EXPECT().GetSubtasksInStates(gomock.Any(), "id", taskID, proto.StepOne, unfinishedNormalSubtaskStates...).Return( []*proto.Subtask{ - {ID: 1, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending}, - {ID: 2, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending}, + {ID: 1, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending, SchedulerID: "id"}, + {ID: 2, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending, SchedulerID: "id"}, }, nil) // first round of the run loop - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates("id", taskID, proto.StepOne, + mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", taskID, proto.StepOne, unfinishedNormalSubtaskStates...).Return(&proto.Subtask{ - ID: 1, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending}, nil) - mockSubtaskTable.EXPECT().StartSubtask(int64(1)).Return(nil) + ID: 1, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending, SchedulerID: "id"}, nil) + mockSubtaskTable.EXPECT().StartSubtask(gomock.Any(), int64(1)).Return(nil) mockSubtaskExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).Return(nil) mockSubtaskExecutor.EXPECT().OnFinished(gomock.Any(), gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().FinishSubtask(int64(1), 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("id", taskID, proto.StepOne, + mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", taskID, proto.StepOne, unfinishedNormalSubtaskStates...).Return(&proto.Subtask{ - ID: 2, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending}, nil) - mockSubtaskTable.EXPECT().StartSubtask(int64(2)).Return(nil) + ID: 2, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending, SchedulerID: "id"}, nil) + mockSubtaskTable.EXPECT().StartSubtask(gomock.Any(), int64(2)).Return(nil) mockSubtaskExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).Return(nil) mockSubtaskExecutor.EXPECT().OnFinished(gomock.Any(), gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().FinishSubtask(int64(2), 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("id", taskID, proto.StepOne, + mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", taskID, proto.StepOne, unfinishedNormalSubtaskStates...).Return(nil, nil) - mockSubtaskTable.EXPECT().GetGlobalTaskByID(gomock.Any()).Return(&proto.Task{ID: taskID, Step: proto.StepTwo}, nil) + mockSubtaskTable.EXPECT().GetGlobalTaskByID(gomock.Any(), gomock.Any()).Return(&proto.Task{ID: taskID, Step: proto.StepTwo}, nil) mockSubtaskExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) err = scheduler.Run(runCtx, task) require.NoError(t, err) @@ -146,77 +146,77 @@ func TestSchedulerRun(t *testing.T) { // run previous left subtask in running state again, but the subtask is not // idempotent, so fail it. subtaskID := int64(2) - theSubtask := &proto.Subtask{ID: subtaskID, Type: tp, Step: proto.StepOne, State: proto.TaskStateRunning} - mockSubtaskTable.EXPECT().GetSubtasksInStates("id", taskID, proto.StepOne, + theSubtask := &proto.Subtask{ID: subtaskID, Type: tp, Step: proto.StepOne, State: proto.TaskStateRunning, SchedulerID: "id"} + mockSubtaskTable.EXPECT().GetSubtasksInStates(gomock.Any(), "id", taskID, proto.StepOne, unfinishedNormalSubtaskStates...).Return([]*proto.Subtask{theSubtask}, nil) mockSubtaskExecutor.EXPECT().Init(gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates("id", taskID, proto.StepOne, + mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", taskID, proto.StepOne, unfinishedNormalSubtaskStates...).Return(theSubtask, nil) mockExtension.EXPECT().IsIdempotent(gomock.Any()).Return(false) - mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(subtaskID, proto.TaskStateFailed, gomock.Any()).Return(nil) + mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(gomock.Any(), "id", subtaskID, proto.TaskStateFailed, gomock.Any()).Return(nil) mockSubtaskExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) err = scheduler.Run(runCtx, task) require.ErrorContains(t, err, "subtask in running state and is not idempotent") // run previous left subtask in running state again, but the subtask idempotent, // run it again. - theSubtask = &proto.Subtask{ID: subtaskID, Type: tp, Step: proto.StepOne, State: proto.TaskStateRunning} - mockSubtaskTable.EXPECT().GetSubtasksInStates("id", taskID, proto.StepOne, + theSubtask = &proto.Subtask{ID: subtaskID, Type: tp, Step: proto.StepOne, State: proto.TaskStateRunning, SchedulerID: "id"} + mockSubtaskTable.EXPECT().GetSubtasksInStates(gomock.Any(), "id", taskID, proto.StepOne, unfinishedNormalSubtaskStates...).Return([]*proto.Subtask{theSubtask}, nil) mockSubtaskExecutor.EXPECT().Init(gomock.Any()).Return(nil) // first round of the run loop - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates("id", taskID, proto.StepOne, + mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", taskID, proto.StepOne, unfinishedNormalSubtaskStates...).Return(theSubtask, nil) mockExtension.EXPECT().IsIdempotent(gomock.Any()).Return(true) mockSubtaskExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).Return(nil) mockSubtaskExecutor.EXPECT().OnFinished(gomock.Any(), gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().FinishSubtask(subtaskID, gomock.Any()).Return(nil) + mockSubtaskTable.EXPECT().FinishSubtask(gomock.Any(), "id", subtaskID, gomock.Any()).Return(nil) // second round of the run loop - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates("id", taskID, proto.StepOne, + mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", taskID, proto.StepOne, unfinishedNormalSubtaskStates...).Return(nil, nil) - mockSubtaskTable.EXPECT().GetGlobalTaskByID(gomock.Any()).Return(&proto.Task{ID: taskID, Step: proto.StepTwo}, nil) + mockSubtaskTable.EXPECT().GetGlobalTaskByID(gomock.Any(), gomock.Any()).Return(&proto.Task{ID: taskID, Step: proto.StepTwo}, nil) mockSubtaskExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) err = scheduler.Run(runCtx, task) require.NoError(t, err) // 6. cancel - mockSubtaskTable.EXPECT().GetSubtasksInStates("id", taskID, proto.StepOne, + mockSubtaskTable.EXPECT().GetSubtasksInStates(gomock.Any(), "id", taskID, proto.StepOne, unfinishedNormalSubtaskStates...).Return([]*proto.Subtask{{ - ID: 2, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending}}, nil) + ID: 2, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending, SchedulerID: "id"}}, nil) mockSubtaskExecutor.EXPECT().Init(gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates("id", taskID, proto.StepOne, + mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", taskID, proto.StepOne, unfinishedNormalSubtaskStates...).Return(&proto.Subtask{ - ID: 1, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending}, nil) - mockSubtaskTable.EXPECT().StartSubtask(taskID).Return(nil) + ID: 1, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending, SchedulerID: "id"}, nil) + mockSubtaskTable.EXPECT().StartSubtask(gomock.Any(), taskID).Return(nil) mockSubtaskExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).Return(ErrCancelSubtask) - mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(taskID, proto.TaskStateCanceled, gomock.Any()).Return(nil) + mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(gomock.Any(), "id", taskID, proto.TaskStateCanceled, gomock.Any()).Return(nil) mockSubtaskExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) err = scheduler.Run(runCtx, task) require.EqualError(t, err, ErrCancelSubtask.Error()) // 7. RunSubtask return context.Canceled - mockSubtaskTable.EXPECT().GetSubtasksInStates("id", taskID, proto.StepOne, + mockSubtaskTable.EXPECT().GetSubtasksInStates(gomock.Any(), "id", taskID, proto.StepOne, unfinishedNormalSubtaskStates...).Return([]*proto.Subtask{{ - ID: 2, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending}}, nil) + ID: 2, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending, SchedulerID: "id"}}, nil) mockSubtaskExecutor.EXPECT().Init(gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates("id", taskID, proto.StepOne, + mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", taskID, proto.StepOne, unfinishedNormalSubtaskStates...).Return(&proto.Subtask{ - ID: 1, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending}, nil) - mockSubtaskTable.EXPECT().StartSubtask(taskID).Return(nil) + ID: 1, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending, SchedulerID: "id"}, nil) + mockSubtaskTable.EXPECT().StartSubtask(gomock.Any(), taskID).Return(nil) mockSubtaskExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).Return(context.Canceled) mockSubtaskExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) err = scheduler.Run(runCtx, task) require.EqualError(t, err, context.Canceled.Error()) // 8. grpc cancel - mockSubtaskTable.EXPECT().GetSubtasksInStates("id", taskID, proto.StepOne, + mockSubtaskTable.EXPECT().GetSubtasksInStates(gomock.Any(), "id", taskID, proto.StepOne, unfinishedNormalSubtaskStates...).Return([]*proto.Subtask{{ - ID: 2, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending}}, nil) + ID: 2, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending, SchedulerID: "id"}}, nil) mockSubtaskExecutor.EXPECT().Init(gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates("id", taskID, proto.StepOne, + mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", taskID, proto.StepOne, unfinishedNormalSubtaskStates...).Return(&proto.Subtask{ - ID: 1, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending}, nil) - mockSubtaskTable.EXPECT().StartSubtask(taskID).Return(nil) + ID: 1, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending, SchedulerID: "id"}, nil) + mockSubtaskTable.EXPECT().StartSubtask(gomock.Any(), taskID).Return(nil) grpcErr := status.Error(codes.Canceled, "test cancel") mockSubtaskExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).Return(grpcErr) mockSubtaskExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) @@ -224,14 +224,14 @@ func TestSchedulerRun(t *testing.T) { require.EqualError(t, err, grpcErr.Error()) // 9. annotate grpc cancel - mockSubtaskTable.EXPECT().GetSubtasksInStates("id", taskID, proto.StepOne, + mockSubtaskTable.EXPECT().GetSubtasksInStates(gomock.Any(), "id", taskID, proto.StepOne, unfinishedNormalSubtaskStates...).Return([]*proto.Subtask{{ - ID: 2, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending}}, nil) + ID: 2, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending, SchedulerID: "id"}}, nil) mockSubtaskExecutor.EXPECT().Init(gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates("id", taskID, proto.StepOne, + mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", taskID, proto.StepOne, unfinishedNormalSubtaskStates...).Return(&proto.Subtask{ - ID: 1, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending}, nil) - mockSubtaskTable.EXPECT().StartSubtask(taskID).Return(nil) + ID: 1, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending, SchedulerID: "id"}, nil) + mockSubtaskTable.EXPECT().StartSubtask(gomock.Any(), taskID).Return(nil) grpcErr = status.Error(codes.Canceled, "test cancel") annotatedError := errors.Annotatef( grpcErr, @@ -263,7 +263,7 @@ func TestSchedulerRollback(t *testing.T) { mockExtension.EXPECT().GetSubtaskExecutor(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil, schedulerRegisterErr) scheduler := NewBaseScheduler(ctx, "id", 1, mockSubtaskTable) scheduler.Extension = mockExtension - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates("id", int64(1), proto.StepOne, + mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(runCtx, "id", int64(1), proto.StepOne, unfinishedNormalSubtaskStates...).Return(nil, nil) err := scheduler.Rollback(runCtx, &proto.Task{Step: proto.StepOne, ID: 1, Type: tp}) require.EqualError(t, err, schedulerRegisterErr.Error()) @@ -273,57 +273,57 @@ func TestSchedulerRollback(t *testing.T) { // 2. get subtask failed getSubtaskErr := errors.New("get subtask error") var taskID int64 = 1 - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates("id", taskID, proto.StepOne, + mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(runCtx, "id", taskID, proto.StepOne, unfinishedNormalSubtaskStates...).Return(nil, nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates("id", taskID, proto.StepOne, + mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(runCtx, "id", taskID, proto.StepOne, unfinishedRevertSubtaskStates...).Return(nil, getSubtaskErr) err = scheduler.Rollback(runCtx, &proto.Task{Step: proto.StepOne, Type: tp, ID: taskID}) require.EqualError(t, err, getSubtaskErr.Error()) // 3. no subtask - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates("id", taskID, proto.StepOne, + mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(runCtx, "id", taskID, proto.StepOne, unfinishedNormalSubtaskStates...).Return(nil, nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates("id", taskID, proto.StepOne, + mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(runCtx, "id", taskID, proto.StepOne, unfinishedRevertSubtaskStates...).Return(nil, nil) err = scheduler.Rollback(runCtx, &proto.Task{Step: proto.StepOne, Type: tp, ID: taskID}) require.NoError(t, err) // 4. rollback failed rollbackErr := errors.New("rollback error") - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates("id", taskID, proto.StepOne, + mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(runCtx, "id", taskID, proto.StepOne, unfinishedNormalSubtaskStates...).Return(nil, nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates("id", taskID, proto.StepOne, - unfinishedRevertSubtaskStates...).Return(&proto.Subtask{ID: 1, State: proto.TaskStateRevertPending}, nil) - mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(taskID, proto.TaskStateReverting, nil).Return(nil) + mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(runCtx, "id", taskID, proto.StepOne, + unfinishedRevertSubtaskStates...).Return(&proto.Subtask{ID: 1, State: proto.TaskStateRevertPending, SchedulerID: "id"}, nil) + mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(runCtx, "id", taskID, proto.TaskStateReverting, nil).Return(nil) mockSubtaskExecutor.EXPECT().Rollback(gomock.Any()).Return(rollbackErr) - mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(taskID, proto.TaskStateRevertFailed, nil).Return(nil) + mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(runCtx, "id", taskID, proto.TaskStateRevertFailed, nil).Return(nil) err = scheduler.Rollback(runCtx, &proto.Task{Step: proto.StepOne, Type: tp, ID: taskID}) require.EqualError(t, err, rollbackErr.Error()) // 5. rollback success - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates("id", taskID, proto.StepOne, - unfinishedNormalSubtaskStates...).Return(&proto.Subtask{ID: 1}, nil) - mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(int64(1), proto.TaskStateCanceled, nil).Return(nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates("id", taskID, proto.StepOne, - unfinishedNormalSubtaskStates...).Return(&proto.Subtask{ID: 2}, nil) - mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(int64(2), proto.TaskStateCanceled, nil).Return(nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates("id", taskID, proto.StepOne, + mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(runCtx, "id", taskID, proto.StepOne, + unfinishedNormalSubtaskStates...).Return(&proto.Subtask{ID: 1, SchedulerID: "id"}, nil) + mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(runCtx, "id", int64(1), proto.TaskStateCanceled, nil).Return(nil) + mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(runCtx, "id", taskID, proto.StepOne, + unfinishedNormalSubtaskStates...).Return(&proto.Subtask{ID: 2, SchedulerID: "id"}, nil) + mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(runCtx, "id", int64(2), proto.TaskStateCanceled, nil).Return(nil) + mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(runCtx, "id", taskID, proto.StepOne, unfinishedNormalSubtaskStates...).Return(nil, nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates("id", taskID, proto.StepOne, - unfinishedRevertSubtaskStates...).Return(&proto.Subtask{ID: 3, State: proto.TaskStateRevertPending}, nil) - mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(int64(3), proto.TaskStateReverting, nil).Return(nil) + mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(runCtx, "id", taskID, proto.StepOne, + unfinishedRevertSubtaskStates...).Return(&proto.Subtask{ID: 3, State: proto.TaskStateRevertPending, SchedulerID: "id"}, nil) + mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(runCtx, "id", int64(3), proto.TaskStateReverting, nil).Return(nil) mockSubtaskExecutor.EXPECT().Rollback(gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(int64(3), proto.TaskStateReverted, nil).Return(nil) + mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(runCtx, "id", int64(3), proto.TaskStateReverted, nil).Return(nil) err = scheduler.Rollback(runCtx, &proto.Task{Step: proto.StepOne, Type: tp, ID: taskID}) require.NoError(t, err) // rollback again for previous left subtask in TaskStateReverting state - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates("id", taskID, proto.StepOne, + mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(runCtx, "id", taskID, proto.StepOne, unfinishedNormalSubtaskStates...).Return(nil, nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates("id", taskID, proto.StepOne, - unfinishedRevertSubtaskStates...).Return(&proto.Subtask{ID: 3, State: proto.TaskStateReverting}, nil) + mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(runCtx, "id", taskID, proto.StepOne, + unfinishedRevertSubtaskStates...).Return(&proto.Subtask{ID: 3, State: proto.TaskStateReverting, SchedulerID: "id"}, nil) mockSubtaskExecutor.EXPECT().Rollback(gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(int64(3), proto.TaskStateReverted, nil).Return(nil) + mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(runCtx, "id", int64(3), proto.TaskStateReverted, nil).Return(nil) err = scheduler.Rollback(runCtx, &proto.Task{Step: proto.StepOne, Type: tp, ID: taskID}) require.NoError(t, err) } @@ -342,12 +342,12 @@ func TestSchedulerPause(t *testing.T) { // pause success. scheduler := NewBaseScheduler(ctx, "id", 1, mockSubtaskTable) scheduler.Extension = mockExtension - mockSubtaskTable.EXPECT().PauseSubtasks("id", int64(1)).Return(nil) + mockSubtaskTable.EXPECT().PauseSubtasks(runCtx, "id", int64(1)).Return(nil) require.NoError(t, scheduler.Pause(runCtx, &proto.Task{Step: proto.StepOne, ID: 1, Type: tp})) // pause error. pauseErr := errors.New("pause error") - mockSubtaskTable.EXPECT().PauseSubtasks("id", int64(1)).Return(pauseErr) + mockSubtaskTable.EXPECT().PauseSubtasks(runCtx, "id", int64(1)).Return(pauseErr) err := scheduler.Pause(runCtx, &proto.Task{Step: proto.StepOne, ID: 1, Type: tp}) require.EqualError(t, err, pauseErr.Error()) } @@ -365,8 +365,8 @@ func TestScheduler(t *testing.T) { mockSubtaskTable := mock.NewMockTaskTable(ctrl) mockSubtaskExecutor := mockexecute.NewMockSubtaskExecutor(ctrl) mockExtension := mock.NewMockExtension(ctrl) - mockSubtaskTable.EXPECT().IsSchedulerCanceled(gomock.Any(), gomock.Any()).Return(false, nil).AnyTimes() - mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(taskID, proto.TaskStateFailed, gomock.Any()).Return(nil) + mockSubtaskTable.EXPECT().IsSchedulerCanceled(gomock.Any(), gomock.Any(), gomock.Any()).Return(false, nil).AnyTimes() + mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(gomock.Any(), "id", taskID, proto.TaskStateFailed, gomock.Any()).Return(nil) mockExtension.EXPECT().GetSubtaskExecutor(gomock.Any(), gomock.Any(), gomock.Any()).Return(mockSubtaskExecutor, nil).AnyTimes() scheduler := NewBaseScheduler(ctx, "id", 1, mockSubtaskTable) @@ -375,26 +375,26 @@ func TestScheduler(t *testing.T) { // 1. run failed. runSubtaskErr := errors.New("run subtask error") mockSubtaskExecutor.EXPECT().Init(gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().GetSubtasksInStates("id", taskID, proto.StepOne, + mockSubtaskTable.EXPECT().GetSubtasksInStates(gomock.Any(), "id", taskID, proto.StepOne, unfinishedNormalSubtaskStates...).Return([]*proto.Subtask{{ - ID: 1, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending}}, nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates("id", taskID, proto.StepOne, + ID: 1, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending, SchedulerID: "id"}}, nil) + mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", taskID, proto.StepOne, unfinishedNormalSubtaskStates...).Return(&proto.Subtask{ - ID: 1, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending}, nil) - mockSubtaskTable.EXPECT().StartSubtask(taskID).Return(nil) + ID: 1, Type: tp, Step: proto.StepOne, State: proto.TaskStatePending, SchedulerID: "id"}, nil) + mockSubtaskTable.EXPECT().StartSubtask(gomock.Any(), taskID).Return(nil) mockSubtaskExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).Return(runSubtaskErr) mockSubtaskExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) err := scheduler.run(runCtx, &proto.Task{Step: proto.StepOne, Type: tp, ID: taskID, Concurrency: concurrency}) require.EqualError(t, err, runSubtaskErr.Error()) // 2. rollback success. - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates("id", taskID, proto.StepOne, + mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(runCtx, "id", taskID, proto.StepOne, unfinishedNormalSubtaskStates...).Return(nil, nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates("id", taskID, proto.StepOne, - unfinishedRevertSubtaskStates...).Return(&proto.Subtask{ID: 1, Type: tp, State: proto.TaskStateRevertPending}, nil) - mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(taskID, proto.TaskStateReverting, nil).Return(nil) + mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(runCtx, "id", taskID, proto.StepOne, + unfinishedRevertSubtaskStates...).Return(&proto.Subtask{ID: 1, Type: tp, State: proto.TaskStateRevertPending, SchedulerID: "id"}, nil) + mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(runCtx, "id", taskID, proto.TaskStateReverting, nil).Return(nil) mockSubtaskExecutor.EXPECT().Rollback(gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(taskID, proto.TaskStateReverted, nil).Return(nil) + mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(runCtx, "id", taskID, proto.TaskStateReverted, nil).Return(nil) err = scheduler.Rollback(runCtx, &proto.Task{Step: proto.StepOne, Type: tp, ID: taskID}) require.NoError(t, err) } diff --git a/pkg/disttask/framework/storage/BUILD.bazel b/pkg/disttask/framework/storage/BUILD.bazel index 913ece6c9ea6f..5486695a078a4 100644 --- a/pkg/disttask/framework/storage/BUILD.bazel +++ b/pkg/disttask/framework/storage/BUILD.bazel @@ -32,7 +32,7 @@ go_test( srcs = ["table_test.go"], flaky = True, race = "on", - shard_count = 7, + shard_count = 8, deps = [ ":storage", "//pkg/disttask/framework/proto", @@ -42,6 +42,7 @@ go_test( "@com_github_pingcap_errors//:errors", "@com_github_pingcap_failpoint//:failpoint", "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//util", "@org_uber_go_goleak//:goleak", ], ) diff --git a/pkg/disttask/framework/storage/table_test.go b/pkg/disttask/framework/storage/table_test.go index ae88f887660fd..c008cbab8848b 100644 --- a/pkg/disttask/framework/storage/table_test.go +++ b/pkg/disttask/framework/storage/table_test.go @@ -27,6 +27,7 @@ import ( "github.com/pingcap/tidb/pkg/testkit" "github.com/pingcap/tidb/pkg/testkit/testsetup" "github.com/stretchr/testify/require" + "github.com/tikv/client-go/v2/util" "go.uber.org/goleak" ) @@ -51,7 +52,7 @@ func GetResourcePool(t *testing.T) *pools.ResourcePool { } func GetTaskManager(t *testing.T, pool *pools.ResourcePool) *storage.TaskManager { - manager := storage.NewTaskManager(context.Background(), pool) + manager := storage.NewTaskManager(pool) storage.SetTaskManager(manager) manager, err := storage.GetTaskManager() require.NoError(t, err) @@ -62,11 +63,14 @@ func TestGlobalTaskTable(t *testing.T) { pool := GetResourcePool(t) gm := GetTaskManager(t, pool) defer pool.Close() - id, err := gm.AddNewGlobalTask("key1", "test", 4, []byte("test")) + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "table_test") + + id, err := gm.AddNewGlobalTask(ctx, "key1", "test", 4, []byte("test")) require.NoError(t, err) require.Equal(t, int64(1), id) - task, err := gm.GetNewGlobalTask() + task, err := gm.GetNewGlobalTask(ctx) require.NoError(t, err) require.Equal(t, int64(1), task.ID) require.Equal(t, "key1", task.Key) @@ -75,16 +79,16 @@ func TestGlobalTaskTable(t *testing.T) { require.Equal(t, uint64(4), task.Concurrency) require.Equal(t, []byte("test"), task.Meta) - task2, err := gm.GetGlobalTaskByID(1) + task2, err := gm.GetGlobalTaskByID(ctx, 1) require.NoError(t, err) require.Equal(t, task, task2) - task3, err := gm.GetGlobalTasksInStates(proto.TaskStatePending) + task3, err := gm.GetGlobalTasksInStates(ctx, proto.TaskStatePending) require.NoError(t, err) require.Len(t, task3, 1) require.Equal(t, task, task3[0]) - task4, err := gm.GetGlobalTasksInStates(proto.TaskStatePending, proto.TaskStateRunning) + task4, err := gm.GetGlobalTasksInStates(ctx, proto.TaskStatePending, proto.TaskStateRunning) require.NoError(t, err) require.Len(t, task4, 1) require.Equal(t, task, task4[0]) @@ -92,34 +96,34 @@ func TestGlobalTaskTable(t *testing.T) { prevState := task.State task.State = proto.TaskStateRunning - retryable, err := gm.UpdateGlobalTaskAndAddSubTasks(task, nil, prevState) + retryable, err := gm.UpdateGlobalTaskAndAddSubTasks(ctx, task, nil, prevState) require.NoError(t, err) require.Equal(t, true, retryable) - task5, err := gm.GetGlobalTasksInStates(proto.TaskStateRunning) + task5, err := gm.GetGlobalTasksInStates(ctx, proto.TaskStateRunning) require.NoError(t, err) require.Len(t, task5, 1) require.Equal(t, task.State, task5[0].State) - task6, err := gm.GetGlobalTaskByKey("key1") + task6, err := gm.GetGlobalTaskByKey(ctx, "key1") require.NoError(t, err) require.Len(t, task5, 1) require.Equal(t, task.State, task6.State) // test cannot insert task with dup key - _, err = gm.AddNewGlobalTask("key1", "test2", 4, []byte("test2")) + _, err = gm.AddNewGlobalTask(ctx, "key1", "test2", 4, []byte("test2")) require.EqualError(t, err, "[kv:1062]Duplicate entry 'key1' for key 'tidb_global_task.task_key'") // test cancel global task - id, err = gm.AddNewGlobalTask("key2", "test", 4, []byte("test")) + id, err = gm.AddNewGlobalTask(ctx, "key2", "test", 4, []byte("test")) require.NoError(t, err) - cancelling, err := gm.IsGlobalTaskCancelling(id) + cancelling, err := gm.IsGlobalTaskCancelling(ctx, id) require.NoError(t, err) require.False(t, cancelling) - require.NoError(t, gm.CancelGlobalTask(id)) - cancelling, err = gm.IsGlobalTaskCancelling(id) + require.NoError(t, gm.CancelGlobalTask(ctx, id)) + cancelling, err = gm.IsGlobalTaskCancelling(ctx, id) require.NoError(t, err) require.True(t, cancelling) } @@ -128,15 +132,17 @@ func TestSubTaskTable(t *testing.T) { pool := GetResourcePool(t) sm := GetTaskManager(t, pool) defer pool.Close() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "table_test") - err := sm.AddNewSubTask(1, proto.StepInit, "tidb1", []byte("test"), proto.TaskTypeExample, false) + err := sm.AddNewSubTask(ctx, 1, proto.StepInit, "tidb1", []byte("test"), proto.TaskTypeExample, false) require.NoError(t, err) - nilTask, err := sm.GetFirstSubtaskInStates("tidb2", 1, proto.StepInit, proto.TaskStatePending) + nilTask, err := sm.GetFirstSubtaskInStates(ctx, "tidb2", 1, proto.StepInit, proto.TaskStatePending) require.NoError(t, err) require.Nil(t, nilTask) - subtask, err := sm.GetFirstSubtaskInStates("tidb1", 1, proto.StepInit, proto.TaskStatePending) + subtask, err := sm.GetFirstSubtaskInStates(ctx, "tidb1", 1, proto.StepInit, proto.TaskStatePending) require.NoError(t, err) require.Equal(t, proto.TaskTypeExample, subtask.Type) require.Equal(t, int64(1), subtask.TaskID) @@ -146,40 +152,40 @@ func TestSubTaskTable(t *testing.T) { require.Zero(t, subtask.StartTime) require.Zero(t, subtask.UpdateTime) - subtask2, err := sm.GetFirstSubtaskInStates("tidb1", 1, proto.StepInit, proto.TaskStatePending, proto.TaskStateReverted) + subtask2, err := sm.GetFirstSubtaskInStates(ctx, "tidb1", 1, proto.StepInit, proto.TaskStatePending, proto.TaskStateReverted) require.NoError(t, err) require.Equal(t, subtask, subtask2) - ids, err := sm.GetSchedulerIDsByTaskID(1) + ids, err := sm.GetSchedulerIDsByTaskID(ctx, 1) require.NoError(t, err) require.Len(t, ids, 1) require.Equal(t, "tidb1", ids[0]) - ids, err = sm.GetSchedulerIDsByTaskID(3) + ids, err = sm.GetSchedulerIDsByTaskID(ctx, 3) require.NoError(t, err) require.Len(t, ids, 0) - cnt, err := sm.GetSubtaskInStatesCnt(1, proto.TaskStatePending) + cnt, err := sm.GetSubtaskInStatesCnt(ctx, 1, proto.TaskStatePending) require.NoError(t, err) require.Equal(t, int64(1), cnt) - cnt, err = sm.GetSubtaskInStatesCnt(1, proto.TaskStatePending, proto.TaskStateRevertPending) + cnt, err = sm.GetSubtaskInStatesCnt(ctx, 1, proto.TaskStatePending, proto.TaskStateRevertPending) require.NoError(t, err) require.Equal(t, int64(1), cnt) - ok, err := sm.HasSubtasksInStates("tidb1", 1, proto.StepInit, proto.TaskStatePending) + ok, err := sm.HasSubtasksInStates(ctx, "tidb1", 1, proto.StepInit, proto.TaskStatePending) require.NoError(t, err) require.True(t, ok) ts := time.Now() time.Sleep(time.Second) - require.NoError(t, sm.StartSubtask(1)) + require.NoError(t, sm.StartSubtask(ctx, 1)) - subtask, err = sm.GetFirstSubtaskInStates("tidb1", 1, proto.StepInit, proto.TaskStatePending) + subtask, err = sm.GetFirstSubtaskInStates(ctx, "tidb1", 1, proto.StepInit, proto.TaskStatePending) require.NoError(t, err) require.Nil(t, subtask) - subtask, err = sm.GetFirstSubtaskInStates("tidb1", 1, proto.StepInit, proto.TaskStateRunning) + subtask, err = sm.GetFirstSubtaskInStates(ctx, "tidb1", 1, proto.StepInit, proto.TaskStateRunning) require.NoError(t, err) require.Equal(t, proto.TaskTypeExample, subtask.Type) require.Equal(t, int64(1), subtask.TaskID) @@ -191,105 +197,105 @@ func TestSubTaskTable(t *testing.T) { // check update time after state change to cancel time.Sleep(time.Second) - require.NoError(t, sm.UpdateSubtaskStateAndError(1, proto.TaskStateCancelling, nil)) - subtask2, err = sm.GetFirstSubtaskInStates("tidb1", 1, proto.StepInit, proto.TaskStateCancelling) + require.NoError(t, sm.UpdateSubtaskStateAndError(ctx, "tidb1", 1, proto.TaskStateCancelling, nil)) + subtask2, err = sm.GetFirstSubtaskInStates(ctx, "tidb1", 1, proto.StepInit, proto.TaskStateCancelling) require.NoError(t, err) require.Equal(t, proto.TaskStateCancelling, subtask2.State) require.Greater(t, subtask2.UpdateTime, subtask.UpdateTime) - cnt, err = sm.GetSubtaskInStatesCnt(1, proto.TaskStatePending) + cnt, err = sm.GetSubtaskInStatesCnt(ctx, 1, proto.TaskStatePending) require.NoError(t, err) require.Equal(t, int64(0), cnt) - ok, err = sm.HasSubtasksInStates("tidb1", 1, proto.StepInit, proto.TaskStatePending) + ok, err = sm.HasSubtasksInStates(ctx, "tidb1", 1, proto.StepInit, proto.TaskStatePending) require.NoError(t, err) require.False(t, ok) - err = sm.DeleteSubtasksByTaskID(1) + err = sm.DeleteSubtasksByTaskID(ctx, 1) require.NoError(t, err) - ok, err = sm.HasSubtasksInStates("tidb1", 1, proto.StepInit, proto.TaskStatePending, proto.TaskStateRunning) + ok, err = sm.HasSubtasksInStates(ctx, "tidb1", 1, proto.StepInit, proto.TaskStatePending, proto.TaskStateRunning) require.NoError(t, err) require.False(t, ok) - err = sm.AddNewSubTask(2, proto.StepInit, "tidb1", []byte("test"), proto.TaskTypeExample, true) + err = sm.AddNewSubTask(ctx, 2, proto.StepInit, "tidb1", []byte("test"), proto.TaskTypeExample, true) require.NoError(t, err) - cnt, err = sm.GetSubtaskInStatesCnt(2, proto.TaskStateRevertPending) + cnt, err = sm.GetSubtaskInStatesCnt(ctx, 2, proto.TaskStateRevertPending) require.NoError(t, err) require.Equal(t, int64(1), cnt) - subtasks, err := sm.GetSucceedSubtasksByStep(2, proto.StepInit) + subtasks, err := sm.GetSucceedSubtasksByStep(ctx, 2, proto.StepInit) require.NoError(t, err) require.Len(t, subtasks, 0) - err = sm.FinishSubtask(2, []byte{}) + err = sm.FinishSubtask(ctx, "tidb1", 2, []byte{}) require.NoError(t, err) - subtasks, err = sm.GetSucceedSubtasksByStep(2, proto.StepInit) + subtasks, err = sm.GetSucceedSubtasksByStep(ctx, 2, proto.StepInit) require.NoError(t, err) require.Len(t, subtasks, 1) - rowCount, err := sm.GetSubtaskRowCount(2, proto.StepInit) + rowCount, err := sm.GetSubtaskRowCount(ctx, 2, proto.StepInit) require.NoError(t, err) require.Equal(t, int64(0), rowCount) - err = sm.UpdateSubtaskRowCount(2, 100) + err = sm.UpdateSubtaskRowCount(ctx, 2, 100) require.NoError(t, err) - rowCount, err = sm.GetSubtaskRowCount(2, proto.StepInit) + rowCount, err = sm.GetSubtaskRowCount(ctx, 2, proto.StepInit) require.NoError(t, err) require.Equal(t, int64(100), rowCount) // test UpdateErrorToSubtask do update start/update time - err = sm.AddNewSubTask(3, proto.StepInit, "for_test", []byte("test"), proto.TaskTypeExample, false) + err = sm.AddNewSubTask(ctx, 3, proto.StepInit, "for_test", []byte("test"), proto.TaskTypeExample, false) require.NoError(t, err) - require.NoError(t, sm.UpdateErrorToSubtask("for_test", 3, errors.New("fail"))) - subtask, err = sm.GetFirstSubtaskInStates("for_test", 3, proto.StepInit, proto.TaskStateFailed) + require.NoError(t, sm.UpdateErrorToSubtask(ctx, "for_test", 3, errors.New("fail"))) + subtask, err = sm.GetFirstSubtaskInStates(ctx, "for_test", 3, proto.StepInit, proto.TaskStateFailed) require.NoError(t, err) require.Equal(t, proto.TaskStateFailed, subtask.State) require.Greater(t, subtask.StartTime, ts) require.Greater(t, subtask.UpdateTime, ts) // test FinishSubtask do update update time - err = sm.AddNewSubTask(4, proto.StepInit, "for_test1", []byte("test"), proto.TaskTypeExample, false) + err = sm.AddNewSubTask(ctx, 4, proto.StepInit, "for_test1", []byte("test"), proto.TaskTypeExample, false) require.NoError(t, err) - subtask, err = sm.GetFirstSubtaskInStates("for_test1", 4, proto.StepInit, proto.TaskStatePending) + subtask, err = sm.GetFirstSubtaskInStates(ctx, "for_test1", 4, proto.StepInit, proto.TaskStatePending) require.NoError(t, err) - require.NoError(t, sm.StartSubtask(subtask.ID)) - subtask, err = sm.GetFirstSubtaskInStates("for_test1", 4, proto.StepInit, proto.TaskStateRunning) + require.NoError(t, sm.StartSubtask(ctx, subtask.ID)) + subtask, err = sm.GetFirstSubtaskInStates(ctx, "for_test1", 4, proto.StepInit, proto.TaskStateRunning) require.NoError(t, err) require.Greater(t, subtask.StartTime, ts) require.Greater(t, subtask.UpdateTime, ts) time.Sleep(time.Second) - require.NoError(t, sm.FinishSubtask(subtask.ID, []byte{})) - subtask2, err = sm.GetFirstSubtaskInStates("for_test1", 4, proto.StepInit, proto.TaskStateSucceed) + require.NoError(t, sm.FinishSubtask(ctx, "for_test1", subtask.ID, []byte{})) + subtask2, err = sm.GetFirstSubtaskInStates(ctx, "for_test1", 4, proto.StepInit, proto.TaskStateSucceed) require.NoError(t, err) require.Equal(t, subtask2.StartTime, subtask.StartTime) require.Greater(t, subtask2.UpdateTime, subtask.UpdateTime) // test UpdateFailedSchedulerIDs and IsSchedulerCanceled - canceled, err := sm.IsSchedulerCanceled("for_test999", 4) + canceled, err := sm.IsSchedulerCanceled(ctx, "for_test999", 4) require.NoError(t, err) require.True(t, canceled) - canceled, err = sm.IsSchedulerCanceled("for_test1", 4) + canceled, err = sm.IsSchedulerCanceled(ctx, "for_test1", 4) require.NoError(t, err) require.False(t, canceled) - canceled, err = sm.IsSchedulerCanceled("for_test2", 4) + canceled, err = sm.IsSchedulerCanceled(ctx, "for_test2", 4) require.NoError(t, err) require.True(t, canceled) - require.NoError(t, sm.UpdateSubtaskStateAndError(4, proto.TaskStateRunning, nil)) - require.NoError(t, sm.UpdateFailedSchedulerIDs(4, map[string]string{ + require.NoError(t, sm.UpdateSubtaskStateAndError(ctx, "for_test1", 4, proto.TaskStateRunning, nil)) + require.NoError(t, sm.UpdateFailedSchedulerIDs(ctx, 4, map[string]string{ "for_test1": "for_test999", "for_test2": "for_test999", })) - canceled, err = sm.IsSchedulerCanceled("for_test1", 4) + canceled, err = sm.IsSchedulerCanceled(ctx, "for_test1", 4) require.NoError(t, err) require.True(t, canceled) - canceled, err = sm.IsSchedulerCanceled("for_test2", 4) + canceled, err = sm.IsSchedulerCanceled(ctx, "for_test2", 4) require.NoError(t, err) require.True(t, canceled) - canceled, err = sm.IsSchedulerCanceled("for_test999", 4) + canceled, err = sm.IsSchedulerCanceled(ctx, "for_test999", 4) require.NoError(t, err) require.False(t, canceled) } @@ -298,12 +304,14 @@ func TestBothGlobalAndSubTaskTable(t *testing.T) { pool := GetResourcePool(t) sm := GetTaskManager(t, pool) defer pool.Close() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "table_test") - id, err := sm.AddNewGlobalTask("key1", "test", 4, []byte("test")) + id, err := sm.AddNewGlobalTask(ctx, "key1", "test", 4, []byte("test")) require.NoError(t, err) require.Equal(t, int64(1), id) - task, err := sm.GetNewGlobalTask() + task, err := sm.GetNewGlobalTask(ctx) require.NoError(t, err) require.Equal(t, proto.TaskStatePending, task.State) @@ -324,27 +332,27 @@ func TestBothGlobalAndSubTaskTable(t *testing.T) { Meta: []byte("m2"), }, } - retryable, err := sm.UpdateGlobalTaskAndAddSubTasks(task, subTasks, prevState) + retryable, err := sm.UpdateGlobalTaskAndAddSubTasks(ctx, task, subTasks, prevState) require.NoError(t, err) require.Equal(t, true, retryable) - task, err = sm.GetGlobalTaskByID(1) + task, err = sm.GetGlobalTaskByID(ctx, 1) require.NoError(t, err) require.Equal(t, proto.TaskStateRunning, task.State) - subtask1, err := sm.GetFirstSubtaskInStates("instance1", 1, proto.StepInit, proto.TaskStatePending) + subtask1, err := sm.GetFirstSubtaskInStates(ctx, "instance1", 1, proto.StepInit, proto.TaskStatePending) require.NoError(t, err) require.Equal(t, int64(1), subtask1.ID) require.Equal(t, proto.TaskTypeExample, subtask1.Type) require.Equal(t, []byte("m1"), subtask1.Meta) - subtask2, err := sm.GetFirstSubtaskInStates("instance2", 1, proto.StepInit, proto.TaskStatePending) + subtask2, err := sm.GetFirstSubtaskInStates(ctx, "instance2", 1, proto.StepInit, proto.TaskStatePending) require.NoError(t, err) require.Equal(t, int64(2), subtask2.ID) require.Equal(t, proto.TaskTypeExample, subtask2.Type) require.Equal(t, []byte("m2"), subtask2.Meta) - cnt, err := sm.GetSubtaskInStatesCnt(1, proto.TaskStatePending) + cnt, err := sm.GetSubtaskInStatesCnt(ctx, 1, proto.TaskStatePending) require.NoError(t, err) require.Equal(t, int64(2), cnt) @@ -365,47 +373,47 @@ func TestBothGlobalAndSubTaskTable(t *testing.T) { Meta: []byte("m4"), }, } - retryable, err = sm.UpdateGlobalTaskAndAddSubTasks(task, subTasks, prevState) + retryable, err = sm.UpdateGlobalTaskAndAddSubTasks(ctx, task, subTasks, prevState) require.NoError(t, err) require.Equal(t, true, retryable) - task, err = sm.GetGlobalTaskByID(1) + task, err = sm.GetGlobalTaskByID(ctx, 1) require.NoError(t, err) require.Equal(t, proto.TaskStateReverting, task.State) - subtask1, err = sm.GetFirstSubtaskInStates("instance3", 1, proto.StepInit, proto.TaskStateRevertPending) + subtask1, err = sm.GetFirstSubtaskInStates(ctx, "instance3", 1, proto.StepInit, proto.TaskStateRevertPending) require.NoError(t, err) require.Equal(t, int64(3), subtask1.ID) require.Equal(t, proto.TaskTypeExample, subtask1.Type) require.Equal(t, []byte("m3"), subtask1.Meta) - subtask2, err = sm.GetFirstSubtaskInStates("instance4", 1, proto.StepInit, proto.TaskStateRevertPending) + subtask2, err = sm.GetFirstSubtaskInStates(ctx, "instance4", 1, proto.StepInit, proto.TaskStateRevertPending) require.NoError(t, err) require.Equal(t, int64(4), subtask2.ID) require.Equal(t, proto.TaskTypeExample, subtask2.Type) require.Equal(t, []byte("m4"), subtask2.Meta) - cnt, err = sm.GetSubtaskInStatesCnt(1, proto.TaskStateRevertPending) + cnt, err = sm.GetSubtaskInStatesCnt(ctx, 1, proto.TaskStateRevertPending) require.NoError(t, err) require.Equal(t, int64(2), cnt) // test transactional - require.NoError(t, sm.DeleteSubtasksByTaskID(1)) + require.NoError(t, sm.DeleteSubtasksByTaskID(ctx, 1)) failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/storage/MockUpdateTaskErr", "1*return(true)") defer func() { require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/storage/MockUpdateTaskErr")) }() prevState = task.State task.State = proto.TaskStateFailed - retryable, err = sm.UpdateGlobalTaskAndAddSubTasks(task, subTasks, prevState) + retryable, err = sm.UpdateGlobalTaskAndAddSubTasks(ctx, task, subTasks, prevState) require.EqualError(t, err, "updateTaskErr") require.Equal(t, true, retryable) - task, err = sm.GetGlobalTaskByID(1) + task, err = sm.GetGlobalTaskByID(ctx, 1) require.NoError(t, err) require.Equal(t, proto.TaskStateReverting, task.State) - cnt, err = sm.GetSubtaskInStatesCnt(1, proto.TaskStateRevertPending) + cnt, err = sm.GetSubtaskInStatesCnt(ctx, 1, proto.TaskStateRevertPending) require.NoError(t, err) require.Equal(t, int64(0), cnt) } @@ -414,38 +422,40 @@ func TestDistFrameworkMeta(t *testing.T) { pool := GetResourcePool(t) sm := GetTaskManager(t, pool) defer pool.Close() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "table_test") - require.NoError(t, sm.StartManager(":4000", "background")) - require.NoError(t, sm.StartManager(":4001", "")) - require.NoError(t, sm.StartManager(":4002", "")) - require.NoError(t, sm.StartManager(":4002", "background")) + require.NoError(t, sm.StartManager(ctx, ":4000", "background")) + require.NoError(t, sm.StartManager(ctx, ":4001", "")) + require.NoError(t, sm.StartManager(ctx, ":4002", "")) + require.NoError(t, sm.StartManager(ctx, ":4002", "background")) - allNodes, err := sm.GetAllNodes() + allNodes, err := sm.GetAllNodes(ctx) require.NoError(t, err) require.Equal(t, []string{":4000", ":4001", ":4002"}, allNodes) - nodes, err := sm.GetNodesByRole("background") + nodes, err := sm.GetNodesByRole(ctx, "background") require.NoError(t, err) require.Equal(t, map[string]bool{ ":4000": true, ":4002": true, }, nodes) - nodes, err = sm.GetNodesByRole("") + nodes, err = sm.GetNodesByRole(ctx, "") require.NoError(t, err) require.Equal(t, map[string]bool{ ":4001": true, }, nodes) - require.NoError(t, sm.CleanUpMeta([]string{":4000"})) - nodes, err = sm.GetNodesByRole("background") + require.NoError(t, sm.CleanUpMeta(ctx, []string{":4000"})) + nodes, err = sm.GetNodesByRole(ctx, "background") require.NoError(t, err) require.Equal(t, map[string]bool{ ":4002": true, }, nodes) - require.NoError(t, sm.CleanUpMeta([]string{":4002"})) - nodes, err = sm.GetNodesByRole("background") + require.NoError(t, sm.CleanUpMeta(ctx, []string{":4002"})) + nodes, err = sm.GetNodesByRole(ctx, "background") require.NoError(t, err) require.Equal(t, map[string]bool{}, nodes) } @@ -454,6 +464,8 @@ func TestSubtaskHistoryTable(t *testing.T) { pool := GetResourcePool(t) sm := GetTaskManager(t, pool) defer pool.Close() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "table_test") const ( taskID = 1 @@ -469,33 +481,33 @@ func TestSubtaskHistoryTable(t *testing.T) { finishedMeta = "finished" ) - require.NoError(t, sm.AddNewSubTask(taskID, proto.StepInit, tidb1, []byte(meta), proto.TaskTypeExample, false)) - require.NoError(t, sm.FinishSubtask(subTask1, []byte(finishedMeta))) - require.NoError(t, sm.AddNewSubTask(taskID, proto.StepInit, tidb2, []byte(meta), proto.TaskTypeExample, false)) - require.NoError(t, sm.UpdateSubtaskStateAndError(subTask2, proto.TaskStateCanceled, nil)) - require.NoError(t, sm.AddNewSubTask(taskID, proto.StepInit, tidb3, []byte(meta), proto.TaskTypeExample, false)) - require.NoError(t, sm.UpdateSubtaskStateAndError(subTask3, proto.TaskStateFailed, nil)) + require.NoError(t, sm.AddNewSubTask(ctx, taskID, proto.StepInit, tidb1, []byte(meta), proto.TaskTypeExample, false)) + require.NoError(t, sm.FinishSubtask(ctx, tidb1, subTask1, []byte(finishedMeta))) + require.NoError(t, sm.AddNewSubTask(ctx, taskID, proto.StepInit, tidb2, []byte(meta), proto.TaskTypeExample, false)) + require.NoError(t, sm.UpdateSubtaskStateAndError(ctx, tidb2, subTask2, proto.TaskStateCanceled, nil)) + require.NoError(t, sm.AddNewSubTask(ctx, taskID, proto.StepInit, tidb3, []byte(meta), proto.TaskTypeExample, false)) + require.NoError(t, sm.UpdateSubtaskStateAndError(ctx, tidb3, subTask3, proto.TaskStateFailed, nil)) - subTasks, err := storage.GetSubtasksByTaskIDForTest(sm, taskID) + subTasks, err := storage.GetSubtasksByTaskIDForTest(ctx, sm, taskID) require.NoError(t, err) require.Len(t, subTasks, 3) - historySubTasksCnt, err := storage.GetSubtasksFromHistoryForTest(sm) + historySubTasksCnt, err := storage.GetSubtasksFromHistoryForTest(ctx, sm) require.NoError(t, err) require.Equal(t, 0, historySubTasksCnt) - subTasks, err = sm.GetSubtasksForImportInto(taskID, proto.StepInit) + subTasks, err = sm.GetSubtasksForImportInto(ctx, taskID, proto.StepInit) require.NoError(t, err) require.Len(t, subTasks, 3) // test TransferSubTasks2History - require.NoError(t, sm.TransferSubTasks2History(taskID)) + require.NoError(t, sm.TransferSubTasks2History(ctx, taskID)) - subTasks, err = storage.GetSubtasksByTaskIDForTest(sm, taskID) + subTasks, err = storage.GetSubtasksByTaskIDForTest(ctx, sm, taskID) require.NoError(t, err) require.Len(t, subTasks, 0) - historySubTasksCnt, err = storage.GetSubtasksFromHistoryForTest(sm) + historySubTasksCnt, err = storage.GetSubtasksFromHistoryForTest(ctx, sm) require.NoError(t, err) require.Equal(t, 3, historySubTasksCnt) - subTasks, err = sm.GetSubtasksForImportInto(taskID, proto.StepInit) + subTasks, err = sm.GetSubtasksForImportInto(ctx, taskID, proto.StepInit) require.NoError(t, err) require.Len(t, subTasks, 3) @@ -506,13 +518,13 @@ func TestSubtaskHistoryTable(t *testing.T) { }() time.Sleep(2 * time.Second) - require.NoError(t, sm.AddNewSubTask(taskID2, proto.StepInit, tidb1, []byte(meta), proto.TaskTypeExample, false)) - require.NoError(t, sm.UpdateSubtaskStateAndError(subTask4, proto.TaskStateFailed, nil)) - require.NoError(t, sm.TransferSubTasks2History(taskID2)) + require.NoError(t, sm.AddNewSubTask(ctx, taskID2, proto.StepInit, tidb1, []byte(meta), proto.TaskTypeExample, false)) + require.NoError(t, sm.UpdateSubtaskStateAndError(ctx, tidb1, subTask4, proto.TaskStateFailed, nil)) + require.NoError(t, sm.TransferSubTasks2History(ctx, taskID2)) - require.NoError(t, sm.GCSubtasks()) + require.NoError(t, sm.GCSubtasks(ctx)) - historySubTasksCnt, err = storage.GetSubtasksFromHistoryForTest(sm) + historySubTasksCnt, err = storage.GetSubtasksFromHistoryForTest(ctx, sm) require.NoError(t, err) require.Equal(t, 1, historySubTasksCnt) } @@ -521,42 +533,44 @@ func TestTaskHistoryTable(t *testing.T) { pool := GetResourcePool(t) gm := GetTaskManager(t, pool) defer pool.Close() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "table_test") - _, err := gm.AddNewGlobalTask("1", proto.TaskTypeExample, 1, nil) + _, err := gm.AddNewGlobalTask(ctx, "1", proto.TaskTypeExample, 1, nil) require.NoError(t, err) - taskID, err := gm.AddNewGlobalTask("2", proto.TaskTypeExample, 1, nil) + taskID, err := gm.AddNewGlobalTask(ctx, "2", proto.TaskTypeExample, 1, nil) require.NoError(t, err) - tasks, err := gm.GetGlobalTasksInStates(proto.TaskStatePending) + tasks, err := gm.GetGlobalTasksInStates(ctx, proto.TaskStatePending) require.NoError(t, err) require.Equal(t, 2, len(tasks)) - require.NoError(t, gm.TransferTasks2History(tasks)) + require.NoError(t, gm.TransferTasks2History(ctx, tasks)) - tasks, err = gm.GetGlobalTasksInStates(proto.TaskStatePending) + tasks, err = gm.GetGlobalTasksInStates(ctx, proto.TaskStatePending) require.NoError(t, err) require.Equal(t, 0, len(tasks)) - num, err := storage.GetTasksFromHistoryForTest(gm) + num, err := storage.GetTasksFromHistoryForTest(ctx, gm) require.NoError(t, err) require.Equal(t, 2, num) - task, err := gm.GetTaskByIDWithHistory(taskID) + task, err := gm.GetTaskByIDWithHistory(ctx, taskID) require.NoError(t, err) require.NotNil(t, task) - task, err = gm.GetGlobalTaskByKeyWithHistory("1") + task, err = gm.GetGlobalTaskByKeyWithHistory(ctx, "1") require.NoError(t, err) require.NotNil(t, task) // task with fail transfer - _, err = gm.AddNewGlobalTask("3", proto.TaskTypeExample, 1, nil) + _, err = gm.AddNewGlobalTask(ctx, "3", proto.TaskTypeExample, 1, nil) require.NoError(t, err) - tasks, err = gm.GetGlobalTasksInStates(proto.TaskStatePending) + tasks, err = gm.GetGlobalTasksInStates(ctx, proto.TaskStatePending) require.NoError(t, err) require.Equal(t, 1, len(tasks)) tasks[0].Error = errors.New("mock err") - require.NoError(t, gm.TransferTasks2History(tasks)) - num, err = storage.GetTasksFromHistoryForTest(gm) + require.NoError(t, gm.TransferTasks2History(ctx, tasks)) + num, err = storage.GetTasksFromHistoryForTest(ctx, gm) require.NoError(t, err) require.Equal(t, 3, num) } @@ -565,29 +579,63 @@ func TestPauseAndResume(t *testing.T) { pool := GetResourcePool(t) sm := GetTaskManager(t, pool) defer pool.Close() - require.NoError(t, sm.AddNewSubTask(1, proto.StepInit, "tidb1", []byte("test"), proto.TaskTypeExample, false)) - require.NoError(t, sm.AddNewSubTask(1, proto.StepInit, "tidb1", []byte("test"), proto.TaskTypeExample, false)) - require.NoError(t, sm.AddNewSubTask(1, proto.StepInit, "tidb1", []byte("test"), proto.TaskTypeExample, false)) + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "table_test") + + require.NoError(t, sm.AddNewSubTask(ctx, 1, proto.StepInit, "tidb1", []byte("test"), proto.TaskTypeExample, false)) + require.NoError(t, sm.AddNewSubTask(ctx, 1, proto.StepInit, "tidb1", []byte("test"), proto.TaskTypeExample, false)) + require.NoError(t, sm.AddNewSubTask(ctx, 1, proto.StepInit, "tidb1", []byte("test"), proto.TaskTypeExample, false)) // 1.1 pause all subtasks. - require.NoError(t, sm.PauseSubtasks("tidb1", 1)) - cnt, err := sm.GetSubtaskInStatesCnt(1, proto.TaskStatePaused) + require.NoError(t, sm.PauseSubtasks(ctx, "tidb1", 1)) + cnt, err := sm.GetSubtaskInStatesCnt(ctx, 1, proto.TaskStatePaused) require.NoError(t, err) require.Equal(t, int64(3), cnt) // 1.2 resume all subtasks. - require.NoError(t, sm.ResumeSubtasks(1)) - cnt, err = sm.GetSubtaskInStatesCnt(1, proto.TaskStatePending) + require.NoError(t, sm.ResumeSubtasks(ctx, 1)) + cnt, err = sm.GetSubtaskInStatesCnt(ctx, 1, proto.TaskStatePending) require.NoError(t, err) require.Equal(t, int64(3), cnt) // 2.1 pause 2 subtasks. - sm.UpdateSubtaskStateAndError(1, proto.TaskStateSucceed, nil) - require.NoError(t, sm.PauseSubtasks("tidb1", 1)) - cnt, err = sm.GetSubtaskInStatesCnt(1, proto.TaskStatePaused) + sm.UpdateSubtaskStateAndError(ctx, "tidb1", 1, proto.TaskStateSucceed, nil) + require.NoError(t, sm.PauseSubtasks(ctx, "tidb1", 1)) + cnt, err = sm.GetSubtaskInStatesCnt(ctx, 1, proto.TaskStatePaused) require.NoError(t, err) require.Equal(t, int64(2), cnt) // 2.2 resume 2 subtasks. - require.NoError(t, sm.ResumeSubtasks(1)) - cnt, err = sm.GetSubtaskInStatesCnt(1, proto.TaskStatePending) + require.NoError(t, sm.ResumeSubtasks(ctx, 1)) + cnt, err = sm.GetSubtaskInStatesCnt(ctx, 1, proto.TaskStatePending) require.NoError(t, err) require.Equal(t, int64(2), cnt) } + +func TestCancelAndExecIdChanged(t *testing.T) { + pool := GetResourcePool(t) + sm := GetTaskManager(t, pool) + defer pool.Close() + ctx, cancel := context.WithCancel(context.Background()) + ctx = util.WithInternalSourceType(ctx, "table_test") + + require.NoError(t, sm.AddNewSubTask(ctx, 1, proto.StepInit, "tidb1", []byte("test"), proto.TaskTypeExample, false)) + subtask, err := sm.GetFirstSubtaskInStates(ctx, "tidb1", 1, proto.StepInit, proto.TaskStatePending) + require.NoError(t, err) + // 1. cancel the ctx, then update subtask state. + cancel() + require.ErrorIs(t, sm.UpdateSubtaskStateAndError(ctx, "tidb1", subtask.ID, proto.TaskStateFailed, nil), context.Canceled) + ctx = context.Background() + ctx = util.WithInternalSourceType(ctx, "table_test") + subtask, err = sm.GetFirstSubtaskInStates(ctx, "tidb1", 1, proto.StepInit, proto.TaskStatePending) + // task state not changed + require.NoError(t, err) + require.Equal(t, subtask.State, proto.TaskStatePending) + + // 2. change the exec_id + // exec_id changed + require.NoError(t, sm.UpdateSubtaskExecID(ctx, "tidb2", subtask.ID)) + // exec_id in memory unchanged, call UpdateSubtaskStateAndError. + require.NoError(t, sm.UpdateSubtaskStateAndError(ctx, subtask.SchedulerID, subtask.ID, proto.TaskStateFailed, nil)) + subtask, err = sm.GetFirstSubtaskInStates(ctx, "tidb2", 1, proto.StepInit, proto.TaskStatePending) + require.NoError(t, err) + // state unchanged + require.NotNil(t, subtask) +} diff --git a/pkg/disttask/framework/storage/task_table.go b/pkg/disttask/framework/storage/task_table.go index cb25dc1662f12..9a1d7ccc04959 100644 --- a/pkg/disttask/framework/storage/task_table.go +++ b/pkg/disttask/framework/storage/task_table.go @@ -50,7 +50,6 @@ type SessionExecutor interface { // TaskManager is the manager of global/sub task. type TaskManager struct { - ctx context.Context sePool sessionPool } @@ -69,10 +68,8 @@ var ( ) // NewTaskManager creates a new task manager. -func NewTaskManager(ctx context.Context, sePool sessionPool) *TaskManager { - ctx = util.WithInternalSourceType(ctx, kv.InternalDistTask) +func NewTaskManager(sePool sessionPool) *TaskManager { return &TaskManager{ - ctx: ctx, sePool: sePool, } } @@ -188,18 +185,18 @@ func (stm *TaskManager) executeSQLWithNewSession(ctx context.Context, sql string } // AddNewGlobalTask adds a new task to global task table. -func (stm *TaskManager) AddNewGlobalTask(key string, tp proto.TaskType, concurrency int, meta []byte) (taskID int64, err error) { +func (stm *TaskManager) AddNewGlobalTask(ctx context.Context, key string, tp proto.TaskType, concurrency int, meta []byte) (taskID int64, err error) { err = stm.WithNewSession(func(se sessionctx.Context) error { var err2 error - taskID, err2 = stm.AddGlobalTaskWithSession(se, key, tp, concurrency, meta) + taskID, err2 = stm.AddGlobalTaskWithSession(ctx, se, key, tp, concurrency, meta) return err2 }) return } // AddGlobalTaskWithSession adds a new task to global task table with session. -func (stm *TaskManager) AddGlobalTaskWithSession(se sessionctx.Context, key string, tp proto.TaskType, concurrency int, meta []byte) (taskID int64, err error) { - _, err = ExecSQL(stm.ctx, se, +func (stm *TaskManager) AddGlobalTaskWithSession(ctx context.Context, se sessionctx.Context, key string, tp proto.TaskType, concurrency int, meta []byte) (taskID int64, err error) { + _, err = ExecSQL(ctx, se, `insert into mysql.tidb_global_task(task_key, type, state, concurrency, step, meta, start_time, state_update_time) values (%?, %?, %?, %?, %?, %?, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP())`, key, tp, proto.TaskStatePending, concurrency, proto.StepInit, meta) @@ -207,7 +204,7 @@ func (stm *TaskManager) AddGlobalTaskWithSession(se sessionctx.Context, key stri return 0, err } - rs, err := ExecSQL(stm.ctx, se, "select @@last_insert_id") + rs, err := ExecSQL(ctx, se, "select @@last_insert_id") if err != nil { return 0, err } @@ -219,8 +216,8 @@ func (stm *TaskManager) AddGlobalTaskWithSession(se sessionctx.Context, key stri } // GetNewGlobalTask get a new task from global task table, it's used by dispatcher only. -func (stm *TaskManager) GetNewGlobalTask() (task *proto.Task, err error) { - rs, err := stm.executeSQLWithNewSession(stm.ctx, "select id, task_key, type, dispatcher_id, state, start_time, state_update_time, meta, concurrency, step, error from mysql.tidb_global_task where state = %? limit 1", proto.TaskStatePending) +func (stm *TaskManager) GetNewGlobalTask(ctx context.Context) (task *proto.Task, err error) { + rs, err := stm.executeSQLWithNewSession(ctx, "select id, task_key, type, dispatcher_id, state, start_time, state_update_time, meta, concurrency, step, error from mysql.tidb_global_task where state = %? limit 1", proto.TaskStatePending) if err != nil { return task, err } @@ -233,12 +230,12 @@ func (stm *TaskManager) GetNewGlobalTask() (task *proto.Task, err error) { } // GetGlobalTasksInStates gets the tasks in the states. -func (stm *TaskManager) GetGlobalTasksInStates(states ...interface{}) (task []*proto.Task, err error) { +func (stm *TaskManager) GetGlobalTasksInStates(ctx context.Context, states ...interface{}) (task []*proto.Task, err error) { if len(states) == 0 { return task, nil } - rs, err := stm.executeSQLWithNewSession(stm.ctx, "select id, task_key, type, dispatcher_id, state, start_time, state_update_time, meta, concurrency, step, error from mysql.tidb_global_task where state in ("+strings.Repeat("%?,", len(states)-1)+"%?)", states...) + rs, err := stm.executeSQLWithNewSession(ctx, "select id, task_key, type, dispatcher_id, state, start_time, state_update_time, meta, concurrency, step, error from mysql.tidb_global_task where state in ("+strings.Repeat("%?,", len(states)-1)+"%?)", states...) if err != nil { return task, err } @@ -250,12 +247,12 @@ func (stm *TaskManager) GetGlobalTasksInStates(states ...interface{}) (task []*p } // GetGlobalTasksFromHistoryInStates gets the tasks in history table in the states. -func (stm *TaskManager) GetGlobalTasksFromHistoryInStates(states ...interface{}) (task []*proto.Task, err error) { +func (stm *TaskManager) GetGlobalTasksFromHistoryInStates(ctx context.Context, states ...interface{}) (task []*proto.Task, err error) { if len(states) == 0 { return task, nil } - rs, err := stm.executeSQLWithNewSession(stm.ctx, "select id, task_key, type, dispatcher_id, state, start_time, state_update_time, meta, concurrency, step, error from mysql.tidb_global_task_history where state in ("+strings.Repeat("%?,", len(states)-1)+"%?)", states...) + rs, err := stm.executeSQLWithNewSession(ctx, "select id, task_key, type, dispatcher_id, state, start_time, state_update_time, meta, concurrency, step, error from mysql.tidb_global_task_history where state in ("+strings.Repeat("%?,", len(states)-1)+"%?)", states...) if err != nil { return task, err } @@ -267,8 +264,8 @@ func (stm *TaskManager) GetGlobalTasksFromHistoryInStates(states ...interface{}) } // GetGlobalTaskByID gets the task by the global task ID. -func (stm *TaskManager) GetGlobalTaskByID(taskID int64) (task *proto.Task, err error) { - rs, err := stm.executeSQLWithNewSession(stm.ctx, "select id, task_key, type, dispatcher_id, state, start_time, state_update_time, meta, concurrency, step, error from mysql.tidb_global_task where id = %?", taskID) +func (stm *TaskManager) GetGlobalTaskByID(ctx context.Context, taskID int64) (task *proto.Task, err error) { + rs, err := stm.executeSQLWithNewSession(ctx, "select id, task_key, type, dispatcher_id, state, start_time, state_update_time, meta, concurrency, step, error from mysql.tidb_global_task where id = %?", taskID) if err != nil { return task, err } @@ -280,8 +277,8 @@ func (stm *TaskManager) GetGlobalTaskByID(taskID int64) (task *proto.Task, err e } // GetTaskByIDWithHistory gets the task by the global task ID from both tidb_global_task and tidb_global_task_history. -func (stm *TaskManager) GetTaskByIDWithHistory(taskID int64) (task *proto.Task, err error) { - rs, err := stm.executeSQLWithNewSession(stm.ctx, "select id, task_key, type, dispatcher_id, state, start_time, state_update_time, meta, concurrency, step, error from mysql.tidb_global_task where id = %? "+ +func (stm *TaskManager) GetTaskByIDWithHistory(ctx context.Context, taskID int64) (task *proto.Task, err error) { + rs, err := stm.executeSQLWithNewSession(ctx, "select id, task_key, type, dispatcher_id, state, start_time, state_update_time, meta, concurrency, step, error from mysql.tidb_global_task where id = %? "+ "union select id, task_key, type, dispatcher_id, state, start_time, state_update_time, meta, concurrency, step, error from mysql.tidb_global_task_history where id = %?", taskID, taskID) if err != nil { return task, err @@ -294,8 +291,8 @@ func (stm *TaskManager) GetTaskByIDWithHistory(taskID int64) (task *proto.Task, } // GetGlobalTaskByKey gets the task by the task key. -func (stm *TaskManager) GetGlobalTaskByKey(key string) (task *proto.Task, err error) { - rs, err := stm.executeSQLWithNewSession(stm.ctx, "select id, task_key, type, dispatcher_id, state, start_time, state_update_time, meta, concurrency, step, error from mysql.tidb_global_task where task_key = %?", key) +func (stm *TaskManager) GetGlobalTaskByKey(ctx context.Context, key string) (task *proto.Task, err error) { + rs, err := stm.executeSQLWithNewSession(ctx, "select id, task_key, type, dispatcher_id, state, start_time, state_update_time, meta, concurrency, step, error from mysql.tidb_global_task where task_key = %?", key) if err != nil { return task, err } @@ -307,8 +304,8 @@ func (stm *TaskManager) GetGlobalTaskByKey(key string) (task *proto.Task, err er } // GetGlobalTaskByKeyWithHistory gets the task from history table by the task key. -func (stm *TaskManager) GetGlobalTaskByKeyWithHistory(key string) (task *proto.Task, err error) { - rs, err := stm.executeSQLWithNewSession(stm.ctx, "select id, task_key, type, dispatcher_id, state, start_time, state_update_time, meta, concurrency, step, error from mysql.tidb_global_task where task_key = %?"+ +func (stm *TaskManager) GetGlobalTaskByKeyWithHistory(ctx context.Context, key string) (task *proto.Task, err error) { + rs, err := stm.executeSQLWithNewSession(ctx, "select id, task_key, type, dispatcher_id, state, start_time, state_update_time, meta, concurrency, step, error from mysql.tidb_global_task where task_key = %?"+ "union select id, task_key, type, dispatcher_id, state, start_time, state_update_time, meta, concurrency, step, error from mysql.tidb_global_task_history where task_key = %?", key, key) if err != nil { return task, err @@ -353,13 +350,13 @@ func row2SubTask(r chunk.Row) *proto.Subtask { } // AddNewSubTask adds a new task to subtask table. -func (stm *TaskManager) AddNewSubTask(globalTaskID int64, step proto.Step, designatedTiDBID string, meta []byte, tp proto.TaskType, isRevert bool) error { +func (stm *TaskManager) AddNewSubTask(ctx context.Context, globalTaskID int64, step proto.Step, designatedTiDBID string, meta []byte, tp proto.TaskType, isRevert bool) error { st := proto.TaskStatePending if isRevert { st = proto.TaskStateRevertPending } - _, err := stm.executeSQLWithNewSession(stm.ctx, `insert into mysql.tidb_background_subtask + _, err := stm.executeSQLWithNewSession(ctx, `insert into mysql.tidb_background_subtask (task_key, step, exec_id, meta, state, type, checkpoint, summary) values (%?, %?, %?, %?, %?, %?, %?, %?)`, globalTaskID, step, designatedTiDBID, meta, st, proto.Type2Int(tp), []byte{}, "{}") @@ -371,10 +368,10 @@ func (stm *TaskManager) AddNewSubTask(globalTaskID int64, step proto.Step, desig } // GetSubtasksInStates gets all subtasks by given states. -func (stm *TaskManager) GetSubtasksInStates(tidbID string, taskID int64, step proto.Step, states ...interface{}) ([]*proto.Subtask, error) { +func (stm *TaskManager) GetSubtasksInStates(ctx context.Context, tidbID string, taskID int64, step proto.Step, states ...interface{}) ([]*proto.Subtask, error) { args := []interface{}{tidbID, taskID, step} args = append(args, states...) - rs, err := stm.executeSQLWithNewSession(stm.ctx, `select * from mysql.tidb_background_subtask + rs, err := stm.executeSQLWithNewSession(ctx, `select * from mysql.tidb_background_subtask where exec_id = %? and task_key = %? and step = %? and state in (`+strings.Repeat("%?,", len(states)-1)+"%?)", args...) if err != nil { @@ -389,10 +386,10 @@ func (stm *TaskManager) GetSubtasksInStates(tidbID string, taskID int64, step pr } // GetFirstSubtaskInStates gets the first subtask by given states. -func (stm *TaskManager) GetFirstSubtaskInStates(tidbID string, taskID int64, step proto.Step, states ...interface{}) (*proto.Subtask, error) { +func (stm *TaskManager) GetFirstSubtaskInStates(ctx context.Context, tidbID string, taskID int64, step proto.Step, states ...interface{}) (*proto.Subtask, error) { args := []interface{}{tidbID, taskID, step} args = append(args, states...) - rs, err := stm.executeSQLWithNewSession(stm.ctx, `select * from mysql.tidb_background_subtask + rs, err := stm.executeSQLWithNewSession(ctx, `select * 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 { @@ -405,12 +402,20 @@ func (stm *TaskManager) GetFirstSubtaskInStates(tidbID string, taskID int64, ste return row2SubTask(rs[0]), nil } +// UpdateSubtaskExecID updates the subtask's exec_id, used for testing now. +func (stm *TaskManager) UpdateSubtaskExecID(ctx context.Context, tidbID string, subtaskID int64) error { + _, err := stm.executeSQLWithNewSession(ctx, `update mysql.tidb_background_subtask + set exec_id = %?, state_update_time = unix_timestamp() where id = %?`, + tidbID, subtaskID) + return err +} + // UpdateErrorToSubtask updates the error to subtask. -func (stm *TaskManager) UpdateErrorToSubtask(tidbID string, taskID int64, err error) error { +func (stm *TaskManager) UpdateErrorToSubtask(ctx context.Context, tidbID string, taskID int64, err error) error { if err == nil { return nil } - _, err1 := stm.executeSQLWithNewSession(stm.ctx, `update mysql.tidb_background_subtask + _, err1 := stm.executeSQLWithNewSession(ctx, `update mysql.tidb_background_subtask set state = %?, error = %?, start_time = unix_timestamp(), state_update_time = unix_timestamp() where exec_id = %? and task_key = %? and state in (%?, %?) limit 1;`, proto.TaskStateFailed, serializeErr(err), tidbID, taskID, proto.TaskStatePending, proto.TaskStateRunning) @@ -418,10 +423,10 @@ func (stm *TaskManager) UpdateErrorToSubtask(tidbID string, taskID int64, err er } // PrintSubtaskInfo log the subtask info by taskKey. Only used for UT. -func (stm *TaskManager) PrintSubtaskInfo(taskID int64) { - rs, _ := stm.executeSQLWithNewSession(stm.ctx, +func (stm *TaskManager) PrintSubtaskInfo(ctx context.Context, taskID int64) { + rs, _ := stm.executeSQLWithNewSession(ctx, "select * from mysql.tidb_background_subtask_history where task_key = %?", taskID) - rs2, _ := stm.executeSQLWithNewSession(stm.ctx, + rs2, _ := stm.executeSQLWithNewSession(ctx, "select * from mysql.tidb_background_subtask where task_key = %?", taskID) rs = append(rs, rs2...) @@ -442,8 +447,8 @@ func (stm *TaskManager) PrintSubtaskInfo(taskID int64) { } // GetSucceedSubtasksByStep gets the subtask in the success state. -func (stm *TaskManager) GetSucceedSubtasksByStep(taskID int64, step proto.Step) ([]*proto.Subtask, error) { - rs, err := stm.executeSQLWithNewSession(stm.ctx, `select * from mysql.tidb_background_subtask +func (stm *TaskManager) GetSucceedSubtasksByStep(ctx context.Context, taskID int64, step proto.Step) ([]*proto.Subtask, error) { + rs, err := stm.executeSQLWithNewSession(ctx, `select * from mysql.tidb_background_subtask where task_key = %? and state = %? and step = %?`, taskID, proto.TaskStateSucceed, step) if err != nil { @@ -460,8 +465,8 @@ func (stm *TaskManager) GetSucceedSubtasksByStep(taskID int64, step proto.Step) } // GetSubtaskRowCount gets the subtask row count. -func (stm *TaskManager) GetSubtaskRowCount(taskID int64, step proto.Step) (int64, error) { - rs, err := stm.executeSQLWithNewSession(stm.ctx, `select +func (stm *TaskManager) GetSubtaskRowCount(ctx context.Context, taskID int64, step proto.Step) (int64, error) { + rs, err := stm.executeSQLWithNewSession(ctx, `select cast(sum(json_extract(summary, '$.row_count')) as signed) as row_count from mysql.tidb_background_subtask where task_key = %? and step = %?`, taskID, step) @@ -475,18 +480,18 @@ func (stm *TaskManager) GetSubtaskRowCount(taskID int64, step proto.Step) (int64 } // UpdateSubtaskRowCount updates the subtask row count. -func (stm *TaskManager) UpdateSubtaskRowCount(subtaskID int64, rowCount int64) error { - _, err := stm.executeSQLWithNewSession(stm.ctx, `update mysql.tidb_background_subtask +func (stm *TaskManager) UpdateSubtaskRowCount(ctx context.Context, subtaskID int64, rowCount int64) error { + _, err := stm.executeSQLWithNewSession(ctx, `update mysql.tidb_background_subtask set summary = json_set(summary, '$.row_count', %?) where id = %?`, rowCount, subtaskID) return err } // GetSubtaskInStatesCnt gets the subtask count in the states. -func (stm *TaskManager) GetSubtaskInStatesCnt(taskID int64, states ...interface{}) (int64, error) { +func (stm *TaskManager) GetSubtaskInStatesCnt(ctx context.Context, taskID int64, states ...interface{}) (int64, error) { args := []interface{}{taskID} args = append(args, states...) - rs, err := stm.executeSQLWithNewSession(stm.ctx, `select count(*) from mysql.tidb_background_subtask + rs, err := stm.executeSQLWithNewSession(ctx, `select count(*) from mysql.tidb_background_subtask where task_key = %? and state in (`+strings.Repeat("%?,", len(states)-1)+"%?)", args...) if err != nil { return 0, err @@ -496,8 +501,8 @@ func (stm *TaskManager) GetSubtaskInStatesCnt(taskID int64, states ...interface{ } // CollectSubTaskError collects the subtask error. -func (stm *TaskManager) CollectSubTaskError(taskID int64) ([]error, error) { - rs, err := stm.executeSQLWithNewSession(stm.ctx, +func (stm *TaskManager) CollectSubTaskError(ctx context.Context, taskID int64) ([]error, error) { + rs, err := stm.executeSQLWithNewSession(ctx, `select error from mysql.tidb_background_subtask where task_key = %? AND state in (%?, %?)`, taskID, proto.TaskStateFailed, proto.TaskStateCanceled) if err != nil { @@ -526,10 +531,10 @@ func (stm *TaskManager) CollectSubTaskError(taskID int64) ([]error, error) { } // HasSubtasksInStates checks if there are subtasks in the states. -func (stm *TaskManager) HasSubtasksInStates(tidbID string, taskID int64, step proto.Step, states ...interface{}) (bool, error) { +func (stm *TaskManager) HasSubtasksInStates(ctx context.Context, tidbID string, taskID int64, step proto.Step, states ...interface{}) (bool, error) { args := []interface{}{tidbID, taskID, step} args = append(args, states...) - rs, err := stm.executeSQLWithNewSession(stm.ctx, `select 1 from mysql.tidb_background_subtask + rs, err := stm.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 { @@ -540,8 +545,8 @@ func (stm *TaskManager) HasSubtasksInStates(tidbID string, taskID int64, step pr } // StartSubtask updates the subtask state to running. -func (stm *TaskManager) StartSubtask(subtaskID int64) error { - _, err := stm.executeSQLWithNewSession(stm.ctx, `update mysql.tidb_background_subtask +func (stm *TaskManager) StartSubtask(ctx context.Context, subtaskID int64) error { + _, err := stm.executeSQLWithNewSession(ctx, `update mysql.tidb_background_subtask set state = %?, start_time = unix_timestamp(), state_update_time = unix_timestamp() where id = %?`, proto.TaskStateRunning, subtaskID) @@ -549,30 +554,30 @@ func (stm *TaskManager) StartSubtask(subtaskID int64) error { } // StartManager insert the manager information into dist_framework_meta. -func (stm *TaskManager) StartManager(tidbID string, role string) error { - _, err := stm.executeSQLWithNewSession(stm.ctx, `replace into mysql.dist_framework_meta values(%?, %?, DEFAULT)`, tidbID, role) +func (stm *TaskManager) StartManager(ctx context.Context, tidbID string, role string) error { + _, err := stm.executeSQLWithNewSession(ctx, `replace into mysql.dist_framework_meta values(%?, %?, DEFAULT)`, tidbID, role) return err } // UpdateSubtaskStateAndError updates the subtask state. -func (stm *TaskManager) UpdateSubtaskStateAndError(id int64, state proto.TaskState, subTaskErr error) error { - _, err := stm.executeSQLWithNewSession(stm.ctx, `update mysql.tidb_background_subtask - set state = %?, error = %?, state_update_time = unix_timestamp() where id = %?`, - state, serializeErr(subTaskErr), id) +func (stm *TaskManager) UpdateSubtaskStateAndError(ctx context.Context, tidbID string, id int64, state proto.TaskState, subTaskErr error) error { + _, err := stm.executeSQLWithNewSession(ctx, `update mysql.tidb_background_subtask + set state = %?, error = %?, state_update_time = unix_timestamp() where id = %? and exec_id = %?`, + state, serializeErr(subTaskErr), id, tidbID) return err } // FinishSubtask updates the subtask meta and mark state to succeed. -func (stm *TaskManager) FinishSubtask(id int64, meta []byte) error { - _, err := stm.executeSQLWithNewSession(stm.ctx, `update mysql.tidb_background_subtask - set meta = %?, state = %?, state_update_time = unix_timestamp() where id = %?`, - meta, proto.TaskStateSucceed, id) +func (stm *TaskManager) FinishSubtask(ctx context.Context, tidbID string, id int64, meta []byte) error { + _, err := stm.executeSQLWithNewSession(ctx, `update mysql.tidb_background_subtask + set meta = %?, state = %?, state_update_time = unix_timestamp() where id = %? and exec_id = %?`, + meta, proto.TaskStateSucceed, id, tidbID) return err } // DeleteSubtasksByTaskID deletes the subtask of the given global task ID. -func (stm *TaskManager) DeleteSubtasksByTaskID(taskID int64) error { - _, err := stm.executeSQLWithNewSession(stm.ctx, `delete from mysql.tidb_background_subtask +func (stm *TaskManager) DeleteSubtasksByTaskID(ctx context.Context, taskID int64) error { + _, err := stm.executeSQLWithNewSession(ctx, `delete from mysql.tidb_background_subtask where task_key = %?`, taskID) if err != nil { return err @@ -582,8 +587,8 @@ func (stm *TaskManager) DeleteSubtasksByTaskID(taskID int64) error { } // GetSchedulerIDsByTaskID gets the scheduler IDs of the given global task ID. -func (stm *TaskManager) GetSchedulerIDsByTaskID(taskID int64) ([]string, error) { - rs, err := stm.executeSQLWithNewSession(stm.ctx, `select distinct(exec_id) from mysql.tidb_background_subtask +func (stm *TaskManager) GetSchedulerIDsByTaskID(ctx context.Context, taskID int64) ([]string, error) { + rs, err := stm.executeSQLWithNewSession(ctx, `select distinct(exec_id) from mysql.tidb_background_subtask where task_key = %?`, taskID) if err != nil { return nil, err @@ -602,8 +607,8 @@ func (stm *TaskManager) GetSchedulerIDsByTaskID(taskID int64) ([]string, error) } // GetSchedulerIDsByTaskIDAndStep gets the scheduler IDs of the given global task ID and step. -func (stm *TaskManager) GetSchedulerIDsByTaskIDAndStep(taskID int64, step proto.Step) ([]string, error) { - rs, err := stm.executeSQLWithNewSession(stm.ctx, `select distinct(exec_id) from mysql.tidb_background_subtask +func (stm *TaskManager) GetSchedulerIDsByTaskIDAndStep(ctx context.Context, taskID int64, step proto.Step) ([]string, error) { + rs, err := stm.executeSQLWithNewSession(ctx, `select distinct(exec_id) from mysql.tidb_background_subtask where task_key = %? and step = %?`, taskID, step) if err != nil { return nil, err @@ -622,8 +627,8 @@ func (stm *TaskManager) GetSchedulerIDsByTaskIDAndStep(taskID int64, step proto. } // IsSchedulerCanceled checks if subtask 'execID' of task 'taskID' has been canceled somehow. -func (stm *TaskManager) IsSchedulerCanceled(execID string, taskID int64) (bool, error) { - rs, err := stm.executeSQLWithNewSession(stm.ctx, "select 1 from mysql.tidb_background_subtask where task_key = %? and exec_id = %?", taskID, execID) +func (stm *TaskManager) IsSchedulerCanceled(ctx context.Context, execID string, taskID int64) (bool, error) { + rs, err := stm.executeSQLWithNewSession(ctx, "select 1 from mysql.tidb_background_subtask where task_key = %? and exec_id = %?", taskID, execID) if err != nil { return false, err } @@ -631,7 +636,7 @@ func (stm *TaskManager) IsSchedulerCanceled(execID string, taskID int64) (bool, } // UpdateFailedSchedulerIDs replace failed scheduler nodes with alive nodes. -func (stm *TaskManager) UpdateFailedSchedulerIDs(taskID int64, replaceNodes map[string]string) error { +func (stm *TaskManager) UpdateFailedSchedulerIDs(ctx context.Context, taskID int64, replaceNodes map[string]string) error { // skip if len(replaceNodes) == 0 { return nil @@ -665,16 +670,16 @@ func (stm *TaskManager) UpdateFailedSchedulerIDs(taskID int64, replaceNodes map[ return err } - _, err := stm.executeSQLWithNewSession(stm.ctx, sql.String()) + _, err := stm.executeSQLWithNewSession(ctx, sql.String()) return err } // CleanUpMeta cleanup the outdated row in dist_framework_meta when some tidb down. -func (stm *TaskManager) CleanUpMeta(nodes []string) error { +func (stm *TaskManager) CleanUpMeta(ctx context.Context, nodes []string) error { if len(nodes) == 0 { return nil } - return stm.WithNewTxn(stm.ctx, func(se sessionctx.Context) error { + return stm.WithNewTxn(ctx, func(se sessionctx.Context) error { deleteSQL := new(strings.Builder) if err := sqlescape.FormatSQL(deleteSQL, "delete from mysql.dist_framework_meta where host in("); err != nil { return err @@ -686,30 +691,30 @@ func (stm *TaskManager) CleanUpMeta(nodes []string) error { deleteSQL.WriteString(strings.Join(deleteElems, ", ")) deleteSQL.WriteString(")") - _, err := ExecSQL(stm.ctx, se, deleteSQL.String()) + _, err := ExecSQL(ctx, se, deleteSQL.String()) return err }) } // PauseSubtasks update all running/pending subtasks to pasued state. -func (stm *TaskManager) PauseSubtasks(tidbID string, taskID int64) error { - _, err := stm.executeSQLWithNewSession(stm.ctx, +func (stm *TaskManager) PauseSubtasks(ctx context.Context, tidbID string, taskID int64) error { + _, err := stm.executeSQLWithNewSession(ctx, `update mysql.tidb_background_subtask set state = "paused" where task_key = %? and state in ("running", "pending") and exec_id = %?`, taskID, tidbID) return err } // ResumeSubtasks update all paused subtasks to pending state. -func (stm *TaskManager) ResumeSubtasks(taskID int64) error { - _, err := stm.executeSQLWithNewSession(stm.ctx, +func (stm *TaskManager) ResumeSubtasks(ctx context.Context, taskID int64) error { + _, err := stm.executeSQLWithNewSession(ctx, `update mysql.tidb_background_subtask set state = "pending", error = null where task_key = %? and state = "paused"`, taskID) return err } // UpdateGlobalTaskAndAddSubTasks update the global task and add new subtasks -func (stm *TaskManager) UpdateGlobalTaskAndAddSubTasks(gTask *proto.Task, subtasks []*proto.Subtask, prevState proto.TaskState) (bool, error) { +func (stm *TaskManager) UpdateGlobalTaskAndAddSubTasks(ctx context.Context, gTask *proto.Task, subtasks []*proto.Subtask, prevState proto.TaskState) (bool, error) { retryable := true - err := stm.WithNewTxn(stm.ctx, func(se sessionctx.Context) error { - _, err := ExecSQL(stm.ctx, se, "update mysql.tidb_global_task "+ + err := stm.WithNewTxn(ctx, func(se sessionctx.Context) error { + _, err := ExecSQL(ctx, se, "update mysql.tidb_global_task "+ "set state = %?, dispatcher_id = %?, step = %?, concurrency = %?, meta = %?, error = %?, state_update_time = CURRENT_TIMESTAMP()"+ "where id = %? and state = %?", gTask.State, gTask.DispatcherID, gTask.Step, gTask.Concurrency, gTask.Meta, serializeErr(gTask.Error), gTask.ID, prevState) @@ -732,7 +737,7 @@ func (stm *TaskManager) UpdateGlobalTaskAndAddSubTasks(gTask *proto.Task, subtas // // For now, we update nothing in proto.Task in UT's OnNextSubtasksBatch, so the AffectedRows will be 0. So UT can't fully compatible // with current UpdateGlobalTaskAndAddSubTasks implementation. - rs, err := ExecSQL(stm.ctx, se, "select id from mysql.tidb_global_task where id = %? and state = %?", gTask.ID, prevState) + rs, err := ExecSQL(ctx, se, "select id from mysql.tidb_global_task where id = %? and state = %?", gTask.ID, prevState) if err != nil { return err } @@ -770,7 +775,7 @@ func (stm *TaskManager) UpdateGlobalTaskAndAddSubTasks(gTask *proto.Task, subtas return err } } - _, err := ExecSQL(stm.ctx, se, sql.String()) + _, err := ExecSQL(ctx, se, sql.String()) if err != nil { return nil } @@ -798,8 +803,8 @@ func serializeErr(err error) []byte { } // CancelGlobalTask cancels global task. -func (stm *TaskManager) CancelGlobalTask(taskID int64) error { - _, err := stm.executeSQLWithNewSession(stm.ctx, +func (stm *TaskManager) CancelGlobalTask(ctx context.Context, taskID int64) error { + _, err := stm.executeSQLWithNewSession(ctx, "update mysql.tidb_global_task set state=%?, state_update_time = CURRENT_TIMESTAMP() "+ "where id=%? and state in (%?, %?)", proto.TaskStateCancelling, taskID, proto.TaskStatePending, proto.TaskStateRunning, @@ -808,8 +813,8 @@ func (stm *TaskManager) CancelGlobalTask(taskID int64) error { } // CancelGlobalTaskByKeySession cancels global task by key using input session. -func (stm *TaskManager) CancelGlobalTaskByKeySession(se sessionctx.Context, taskKey string) error { - _, err := ExecSQL(stm.ctx, se, +func (stm *TaskManager) CancelGlobalTaskByKeySession(ctx context.Context, se sessionctx.Context, taskKey string) error { + _, err := ExecSQL(ctx, se, "update mysql.tidb_global_task set state=%?, state_update_time = CURRENT_TIMESTAMP() "+ "where task_key=%? and state in (%?, %?)", proto.TaskStateCancelling, taskKey, proto.TaskStatePending, proto.TaskStateRunning) @@ -817,8 +822,8 @@ func (stm *TaskManager) CancelGlobalTaskByKeySession(se sessionctx.Context, task } // IsGlobalTaskCancelling checks whether the task state is cancelling. -func (stm *TaskManager) IsGlobalTaskCancelling(taskID int64) (bool, error) { - rs, err := stm.executeSQLWithNewSession(stm.ctx, "select 1 from mysql.tidb_global_task where id=%? and state = %?", +func (stm *TaskManager) IsGlobalTaskCancelling(ctx context.Context, taskID int64) (bool, error) { + rs, err := stm.executeSQLWithNewSession(ctx, "select 1 from mysql.tidb_global_task where id=%? and state = %?", taskID, proto.TaskStateCancelling, ) @@ -830,10 +835,10 @@ func (stm *TaskManager) IsGlobalTaskCancelling(taskID int64) (bool, error) { } // PauseTask pauses the task. -func (stm *TaskManager) PauseTask(taskKey string) (bool, error) { +func (stm *TaskManager) PauseTask(ctx context.Context, taskKey string) (bool, error) { found := false err := stm.WithNewSession(func(se sessionctx.Context) error { - _, err := ExecSQL(stm.ctx, se, + _, err := ExecSQL(ctx, se, "update mysql.tidb_global_task set state=%?, state_update_time = CURRENT_TIMESTAMP() "+ "where task_key = %? and state in (%?, %?)", proto.TaskStatePausing, taskKey, proto.TaskStatePending, proto.TaskStateRunning, @@ -853,10 +858,10 @@ func (stm *TaskManager) PauseTask(taskKey string) (bool, error) { } // ResumeTask resumes the task. -func (stm *TaskManager) ResumeTask(taskKey string) (bool, error) { +func (stm *TaskManager) ResumeTask(ctx context.Context, taskKey string) (bool, error) { found := false err := stm.WithNewSession(func(se sessionctx.Context) error { - _, err := ExecSQL(stm.ctx, se, + _, err := ExecSQL(ctx, se, "update mysql.tidb_global_task set state=%?, state_update_time = CURRENT_TIMESTAMP() "+ "where task_key = %? and state = %?", proto.TaskStateResuming, taskKey, proto.TaskStatePaused, @@ -876,13 +881,13 @@ func (stm *TaskManager) ResumeTask(taskKey string) (bool, error) { } // GetSubtasksForImportInto gets the subtasks for import into(show import jobs). -func (stm *TaskManager) GetSubtasksForImportInto(taskID int64, step proto.Step) ([]*proto.Subtask, error) { +func (stm *TaskManager) GetSubtasksForImportInto(ctx context.Context, taskID int64, step proto.Step) ([]*proto.Subtask, error) { var ( rs []chunk.Row err error ) - err = stm.WithNewTxn(stm.ctx, func(se sessionctx.Context) error { - rs, err = ExecSQL(stm.ctx, se, + err = stm.WithNewTxn(ctx, func(se sessionctx.Context) error { + rs, err = ExecSQL(ctx, se, "select * from mysql.tidb_background_subtask where task_key = %? and step = %?", taskID, step, ) @@ -892,7 +897,7 @@ func (stm *TaskManager) GetSubtasksForImportInto(taskID int64, step proto.Step) // To avoid the situation that the subtasks has been `TransferSubTasks2History` // when the user show import jobs, we need to check the history table. - rsFromHistory, err := ExecSQL(stm.ctx, se, + rsFromHistory, err := ExecSQL(ctx, se, "select * from mysql.tidb_background_subtask_history where task_key = %? and step = %?", taskID, step, ) @@ -918,21 +923,21 @@ func (stm *TaskManager) GetSubtasksForImportInto(taskID int64, step proto.Step) } // TransferSubTasks2History move all the finished subTask to tidb_background_subtask_history by taskID -func (stm *TaskManager) TransferSubTasks2History(taskID int64) error { - return stm.WithNewTxn(stm.ctx, func(se sessionctx.Context) error { - _, err := ExecSQL(stm.ctx, se, "insert into mysql.tidb_background_subtask_history select * from mysql.tidb_background_subtask where task_key = %?", taskID) +func (stm *TaskManager) TransferSubTasks2History(ctx context.Context, taskID int64) error { + return stm.WithNewTxn(ctx, func(se sessionctx.Context) error { + _, err := ExecSQL(ctx, se, "insert into mysql.tidb_background_subtask_history select * from mysql.tidb_background_subtask where task_key = %?", taskID) if err != nil { return err } // delete taskID subtask - _, err = ExecSQL(stm.ctx, se, "delete from mysql.tidb_background_subtask where task_key = %?", taskID) + _, err = ExecSQL(ctx, se, "delete from mysql.tidb_background_subtask where task_key = %?", taskID) return err }) } // GCSubtasks deletes the history subtask which is older than the given days. -func (stm *TaskManager) GCSubtasks() error { +func (stm *TaskManager) GCSubtasks(ctx context.Context) error { subtaskHistoryKeepSeconds := defaultSubtaskKeepDays * 24 * 60 * 60 failpoint.Inject("subtaskHistoryKeepSeconds", func(val failpoint.Value) { if val, ok := val.(int); ok { @@ -940,18 +945,18 @@ func (stm *TaskManager) GCSubtasks() error { } }) _, err := stm.executeSQLWithNewSession( - stm.ctx, + ctx, fmt.Sprintf("DELETE FROM mysql.tidb_background_subtask_history WHERE state_update_time < UNIX_TIMESTAMP() - %d ;", subtaskHistoryKeepSeconds), ) return err } // TransferTasks2History transfer the selected tasks into tidb_global_task_history table by taskIDs. -func (stm *TaskManager) TransferTasks2History(tasks []*proto.Task) error { +func (stm *TaskManager) TransferTasks2History(ctx context.Context, tasks []*proto.Task) error { if len(tasks) == 0 { return nil } - return stm.WithNewTxn(stm.ctx, func(se sessionctx.Context) error { + return stm.WithNewTxn(ctx, func(se sessionctx.Context) error { insertSQL := new(strings.Builder) if err := sqlescape.FormatSQL(insertSQL, "replace into mysql.tidb_global_task_history"+ "(id, task_key, type, dispatcher_id, state, start_time, state_update_time,"+ @@ -972,7 +977,7 @@ func (stm *TaskManager) TransferTasks2History(tasks []*proto.Task) error { return err } } - _, err := ExecSQL(stm.ctx, se, insertSQL.String()) + _, err := ExecSQL(ctx, se, insertSQL.String()) if err != nil { return err } @@ -989,14 +994,14 @@ func (stm *TaskManager) TransferTasks2History(tasks []*proto.Task) error { deleteSQL.WriteString(strings.Join(deleteElems, ", ")) deleteSQL.WriteString(")") - _, err = ExecSQL(stm.ctx, se, deleteSQL.String()) + _, err = ExecSQL(ctx, se, deleteSQL.String()) return err }) } // GetNodesByRole gets nodes map from dist_framework_meta by role. -func (stm *TaskManager) GetNodesByRole(role string) (map[string]bool, error) { - rs, err := stm.executeSQLWithNewSession(stm.ctx, +func (stm *TaskManager) GetNodesByRole(ctx context.Context, role string) (map[string]bool, error) { + rs, err := stm.executeSQLWithNewSession(ctx, "select host from mysql.dist_framework_meta where role = %?", role) if err != nil { return nil, err @@ -1009,8 +1014,8 @@ func (stm *TaskManager) GetNodesByRole(role string) (map[string]bool, error) { } // GetAllNodes gets nodes in dist_framework_meta. -func (stm *TaskManager) GetAllNodes() ([]string, error) { - rs, err := stm.executeSQLWithNewSession(stm.ctx, +func (stm *TaskManager) GetAllNodes(ctx context.Context) ([]string, error) { + rs, err := stm.executeSQLWithNewSession(ctx, "select host from mysql.dist_framework_meta") if err != nil { return nil, err diff --git a/pkg/disttask/framework/storage/util.go b/pkg/disttask/framework/storage/util.go index cdd181950f5cf..9784dfb121c28 100644 --- a/pkg/disttask/framework/storage/util.go +++ b/pkg/disttask/framework/storage/util.go @@ -14,11 +14,15 @@ package storage -import "github.com/pingcap/tidb/pkg/disttask/framework/proto" +import ( + "context" + + "github.com/pingcap/tidb/pkg/disttask/framework/proto" +) // GetSubtasksFromHistoryForTest gets subtasks from history table for test. -func GetSubtasksFromHistoryForTest(stm *TaskManager) (int, error) { - rs, err := stm.executeSQLWithNewSession(stm.ctx, +func GetSubtasksFromHistoryForTest(ctx context.Context, stm *TaskManager) (int, error) { + rs, err := stm.executeSQLWithNewSession(ctx, "select * from mysql.tidb_background_subtask_history") if err != nil { return 0, err @@ -27,8 +31,8 @@ func GetSubtasksFromHistoryForTest(stm *TaskManager) (int, error) { } // GetSubtasksFromHistoryByTaskIDForTest gets subtasks by taskID from history table for test. -func GetSubtasksFromHistoryByTaskIDForTest(stm *TaskManager, taskID int64) (int, error) { - rs, err := stm.executeSQLWithNewSession(stm.ctx, +func GetSubtasksFromHistoryByTaskIDForTest(ctx context.Context, stm *TaskManager, taskID int64) (int, error) { + rs, err := stm.executeSQLWithNewSession(ctx, "select * from mysql.tidb_background_subtask_history where task_key = %?", taskID) if err != nil { return 0, err @@ -37,8 +41,8 @@ func GetSubtasksFromHistoryByTaskIDForTest(stm *TaskManager, taskID int64) (int, } // GetSubtasksByTaskIDForTest gets subtasks by taskID for test. -func GetSubtasksByTaskIDForTest(stm *TaskManager, taskID int64) ([]*proto.Subtask, error) { - rs, err := stm.executeSQLWithNewSession(stm.ctx, +func GetSubtasksByTaskIDForTest(ctx context.Context, stm *TaskManager, taskID int64) ([]*proto.Subtask, error) { + rs, err := stm.executeSQLWithNewSession(ctx, "select * from mysql.tidb_background_subtask where task_key = %?", taskID) if err != nil { return nil, err @@ -54,8 +58,8 @@ func GetSubtasksByTaskIDForTest(stm *TaskManager, taskID int64) ([]*proto.Subtas } // GetTasksFromHistoryForTest gets tasks from history table for test. -func GetTasksFromHistoryForTest(stm *TaskManager) (int, error) { - rs, err := stm.executeSQLWithNewSession(stm.ctx, +func GetTasksFromHistoryForTest(ctx context.Context, stm *TaskManager) (int, error) { + rs, err := stm.executeSQLWithNewSession(ctx, "select * from mysql.tidb_global_task_history") if err != nil { return 0, err diff --git a/pkg/disttask/importinto/BUILD.bazel b/pkg/disttask/importinto/BUILD.bazel index d759b014e95e4..92b5fa9f9f654 100644 --- a/pkg/disttask/importinto/BUILD.bazel +++ b/pkg/disttask/importinto/BUILD.bazel @@ -110,6 +110,7 @@ go_test( "//pkg/disttask/operator", "//pkg/domain/infosync", "//pkg/executor/importer", + "//pkg/kv", "//pkg/meta/autoid", "//pkg/parser", "//pkg/parser/ast", diff --git a/pkg/disttask/importinto/dispatcher_testkit_test.go b/pkg/disttask/importinto/dispatcher_testkit_test.go index 84bebaceb8b73..5b3e6159a7bf4 100644 --- a/pkg/disttask/importinto/dispatcher_testkit_test.go +++ b/pkg/disttask/importinto/dispatcher_testkit_test.go @@ -45,7 +45,8 @@ func TestDispatcherExtLocalSort(t *testing.T) { }, 1, 1, time.Second) defer pool.Close() ctx := context.WithValue(context.Background(), "etcd", true) - mgr := storage.NewTaskManager(util.WithInternalSourceType(ctx, "taskManager"), pool) + ctx = util.WithInternalSourceType(ctx, "taskManager") + mgr := storage.NewTaskManager(pool) storage.SetTaskManager(mgr) dsp, err := dispatcher.NewManager(util.WithInternalSourceType(ctx, "dispatcher"), mgr, "host:port") require.NoError(t, err) @@ -84,7 +85,7 @@ func TestDispatcherExtLocalSort(t *testing.T) { require.NoError(t, err) taskMeta, err := json.Marshal(task) require.NoError(t, err) - taskID, err := manager.AddNewGlobalTask(importinto.TaskKey(jobID), proto.ImportInto, 1, taskMeta) + taskID, err := manager.AddNewGlobalTask(ctx, importinto.TaskKey(jobID), proto.ImportInto, 1, taskMeta) require.NoError(t, err) task.ID = taskID @@ -106,12 +107,12 @@ func TestDispatcherExtLocalSort(t *testing.T) { for _, m := range subtaskMetas { subtasks = append(subtasks, proto.NewSubtask(task.Step, task.ID, task.Type, "", m)) } - _, err = manager.UpdateGlobalTaskAndAddSubTasks(task, subtasks, proto.TaskStatePending) + _, err = manager.UpdateGlobalTaskAndAddSubTasks(ctx, task, subtasks, proto.TaskStatePending) require.NoError(t, err) - gotSubtasks, err := manager.GetSubtasksForImportInto(taskID, importinto.StepImport) + gotSubtasks, err := manager.GetSubtasksForImportInto(ctx, taskID, importinto.StepImport) require.NoError(t, err) for _, s := range gotSubtasks { - require.NoError(t, manager.FinishSubtask(s.ID, []byte("{}"))) + require.NoError(t, manager.FinishSubtask(ctx, s.SchedulerID, s.ID, []byte("{}"))) } // to post-process stage, job should be running and in validating step subtaskMetas, err = ext.OnNextSubtasksBatch(ctx, d, task, serverInfos, ext.GetNextStep(task)) @@ -165,7 +166,8 @@ func TestDispatcherExtGlobalSort(t *testing.T) { }, 1, 1, time.Second) defer pool.Close() ctx := context.WithValue(context.Background(), "etcd", true) - mgr := storage.NewTaskManager(util.WithInternalSourceType(ctx, "taskManager"), pool) + ctx = util.WithInternalSourceType(ctx, "taskManager") + mgr := storage.NewTaskManager(pool) storage.SetTaskManager(mgr) dsp, err := dispatcher.NewManager(util.WithInternalSourceType(ctx, "dispatcher"), mgr, "host:port") require.NoError(t, err) @@ -212,7 +214,7 @@ func TestDispatcherExtGlobalSort(t *testing.T) { require.NoError(t, err) taskMeta, err := json.Marshal(task) require.NoError(t, err) - taskID, err := manager.AddNewGlobalTask(importinto.TaskKey(jobID), proto.ImportInto, 1, taskMeta) + taskID, err := manager.AddNewGlobalTask(ctx, importinto.TaskKey(jobID), proto.ImportInto, 1, taskMeta) require.NoError(t, err) task.ID = taskID @@ -237,9 +239,9 @@ func TestDispatcherExtGlobalSort(t *testing.T) { for _, m := range subtaskMetas { subtasks = append(subtasks, proto.NewSubtask(task.Step, task.ID, task.Type, "", m)) } - _, err = manager.UpdateGlobalTaskAndAddSubTasks(task, subtasks, proto.TaskStatePending) + _, err = manager.UpdateGlobalTaskAndAddSubTasks(ctx, task, subtasks, proto.TaskStatePending) require.NoError(t, err) - gotSubtasks, err := manager.GetSubtasksForImportInto(taskID, task.Step) + gotSubtasks, err := manager.GetSubtasksForImportInto(ctx, taskID, task.Step) require.NoError(t, err) sortStepMeta := &importinto.ImportStepMeta{ SortedDataMeta: &external.SortedKVMeta{ @@ -272,7 +274,7 @@ func TestDispatcherExtGlobalSort(t *testing.T) { sortStepMetaBytes, err := json.Marshal(sortStepMeta) require.NoError(t, err) for _, s := range gotSubtasks { - require.NoError(t, manager.FinishSubtask(s.ID, sortStepMetaBytes)) + require.NoError(t, manager.FinishSubtask(ctx, s.SchedulerID, s.ID, sortStepMetaBytes)) } // to merge-sort stage @@ -294,9 +296,9 @@ func TestDispatcherExtGlobalSort(t *testing.T) { for _, m := range subtaskMetas { subtasks = append(subtasks, proto.NewSubtask(task.Step, task.ID, task.Type, "", m)) } - _, err = manager.UpdateGlobalTaskAndAddSubTasks(task, subtasks, proto.TaskStatePending) + _, err = manager.UpdateGlobalTaskAndAddSubTasks(ctx, task, subtasks, proto.TaskStatePending) require.NoError(t, err) - gotSubtasks, err = manager.GetSubtasksForImportInto(taskID, task.Step) + gotSubtasks, err = manager.GetSubtasksForImportInto(ctx, taskID, task.Step) require.NoError(t, err) mergeSortStepMeta := &importinto.MergeSortStepMeta{ KVGroup: "data", @@ -310,7 +312,7 @@ func TestDispatcherExtGlobalSort(t *testing.T) { mergeSortStepMetaBytes, err := json.Marshal(mergeSortStepMeta) require.NoError(t, err) for _, s := range gotSubtasks { - require.NoError(t, manager.FinishSubtask(s.ID, mergeSortStepMetaBytes)) + require.NoError(t, manager.FinishSubtask(ctx, s.SchedulerID, s.ID, mergeSortStepMetaBytes)) } // to write-and-ingest stage diff --git a/pkg/disttask/importinto/job.go b/pkg/disttask/importinto/job.go index ec12961fe45f0..e0253a0a8778e 100644 --- a/pkg/disttask/importinto/job.go +++ b/pkg/disttask/importinto/job.go @@ -28,10 +28,13 @@ import ( "github.com/pingcap/tidb/pkg/disttask/framework/storage" "github.com/pingcap/tidb/pkg/domain/infosync" "github.com/pingcap/tidb/pkg/executor/importer" + "github.com/pingcap/tidb/pkg/kv" + "github.com/pingcap/tidb/pkg/metrics" "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/util/dbterror/exeerrors" "github.com/pingcap/tidb/pkg/util/logutil" "github.com/pingcap/tidb/pkg/util/sqlexec" + "github.com/tikv/client-go/v2/util" "go.uber.org/zap" ) @@ -111,9 +114,9 @@ func (ti *DistImporter) ImportTask(task *proto.Task) { } // Result implements JobImporter.Result. -func (ti *DistImporter) Result() importer.JobImportResult { +func (ti *DistImporter) Result(ctx context.Context) importer.JobImportResult { var result importer.JobImportResult - taskMeta, err := getTaskMeta(ti.jobID) + taskMeta, err := getTaskMeta(ctx, ti.jobID) if err != nil { return result } @@ -137,6 +140,7 @@ func (ti *DistImporter) SubmitTask(ctx context.Context) (int64, *proto.Task, err } // we use globalTaskManager to submit task, user might not have the privilege to system tables. globalTaskManager, err := storage.GetTaskManager() + ctx = util.WithInternalSourceType(ctx, kv.InternalDistTask) if err != nil { return 0, nil, err } @@ -189,14 +193,15 @@ func (ti *DistImporter) SubmitTask(ctx context.Context) (int64, *proto.Task, err }); err != nil { return 0, nil, err } - - globalTask, err := globalTaskManager.GetGlobalTaskByID(taskID) + globalTask, err := globalTaskManager.GetGlobalTaskByID(ctx, taskID) if err != nil { return 0, nil, err } if globalTask == nil { return 0, nil, errors.Errorf("cannot find global task with ID %d", taskID) } + + metrics.UpdateMetricsForAddTask(globalTask) // update logger with task id. ti.jobID = jobID ti.taskID = taskID @@ -218,13 +223,14 @@ func (ti *DistImporter) JobID() int64 { return ti.jobID } -func getTaskMeta(jobID int64) (*TaskMeta, error) { +func getTaskMeta(ctx context.Context, jobID int64) (*TaskMeta, error) { globalTaskManager, err := storage.GetTaskManager() + ctx = util.WithInternalSourceType(ctx, kv.InternalDistTask) if err != nil { return nil, err } taskKey := TaskKey(jobID) - globalTask, err := globalTaskManager.GetGlobalTaskByKey(taskKey) + globalTask, err := globalTaskManager.GetGlobalTaskByKey(ctx, taskKey) if err != nil { return nil, err } @@ -240,13 +246,14 @@ func getTaskMeta(jobID int64) (*TaskMeta, error) { // GetTaskImportedRows gets the number of imported rows of a job. // Note: for finished job, we can get the number of imported rows from task meta. -func GetTaskImportedRows(jobID int64) (uint64, error) { +func GetTaskImportedRows(ctx context.Context, jobID int64) (uint64, error) { globalTaskManager, err := storage.GetTaskManager() + ctx = util.WithInternalSourceType(ctx, kv.InternalDistTask) if err != nil { return 0, err } taskKey := TaskKey(jobID) - task, err := globalTaskManager.GetGlobalTaskByKey(taskKey) + task, err := globalTaskManager.GetGlobalTaskByKey(ctx, taskKey) if err != nil { return 0, err } @@ -259,7 +266,7 @@ func GetTaskImportedRows(jobID int64) (uint64, error) { } var importedRows uint64 if taskMeta.Plan.CloudStorageURI == "" { - subtasks, err := globalTaskManager.GetSubtasksForImportInto(task.ID, StepImport) + subtasks, err := globalTaskManager.GetSubtasksForImportInto(ctx, task.ID, StepImport) if err != nil { return 0, err } @@ -271,7 +278,7 @@ func GetTaskImportedRows(jobID int64) (uint64, error) { importedRows += subtaskMeta.Result.LoadedRowCnt } } else { - subtasks, err := globalTaskManager.GetSubtasksForImportInto(task.ID, StepWriteAndIngest) + subtasks, err := globalTaskManager.GetSubtasksForImportInto(ctx, task.ID, StepWriteAndIngest) if err != nil { return 0, err } diff --git a/pkg/disttask/importinto/job_testkit_test.go b/pkg/disttask/importinto/job_testkit_test.go index 3b2873d470f7a..f9583b72e5989 100644 --- a/pkg/disttask/importinto/job_testkit_test.go +++ b/pkg/disttask/importinto/job_testkit_test.go @@ -25,6 +25,7 @@ import ( "github.com/pingcap/tidb/pkg/disttask/framework/storage" "github.com/pingcap/tidb/pkg/disttask/importinto" "github.com/pingcap/tidb/pkg/executor/importer" + "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/testkit" "github.com/stretchr/testify/require" "github.com/tikv/client-go/v2/util" @@ -38,7 +39,9 @@ func TestGetTaskImportedRows(t *testing.T) { }, 1, 1, time.Second) defer pool.Close() ctx := context.WithValue(context.Background(), "etcd", true) - mgr := storage.NewTaskManager(util.WithInternalSourceType(ctx, "taskManager"), pool) + ctx = util.WithInternalSourceType(ctx, kv.InternalDistTask) + + mgr := storage.NewTaskManager(pool) storage.SetTaskManager(mgr) manager, err := storage.GetTaskManager() require.NoError(t, err) @@ -49,7 +52,7 @@ func TestGetTaskImportedRows(t *testing.T) { } bytes, err := json.Marshal(taskMeta) require.NoError(t, err) - taskID, err := manager.AddNewGlobalTask(importinto.TaskKey(111), proto.ImportInto, 1, bytes) + taskID, err := manager.AddNewGlobalTask(ctx, importinto.TaskKey(111), proto.ImportInto, 1, bytes) require.NoError(t, err) importStepMetas := []*importinto.ImportStepMeta{ { @@ -66,10 +69,10 @@ func TestGetTaskImportedRows(t *testing.T) { for _, m := range importStepMetas { bytes, err := json.Marshal(m) require.NoError(t, err) - require.NoError(t, manager.AddNewSubTask(taskID, importinto.StepImport, + require.NoError(t, manager.AddNewSubTask(ctx, taskID, importinto.StepImport, "", bytes, proto.ImportInto, false)) } - rows, err := importinto.GetTaskImportedRows(111) + rows, err := importinto.GetTaskImportedRows(ctx, 111) require.NoError(t, err) require.Equal(t, uint64(3), rows) @@ -81,7 +84,7 @@ func TestGetTaskImportedRows(t *testing.T) { } bytes, err = json.Marshal(taskMeta) require.NoError(t, err) - taskID, err = manager.AddNewGlobalTask(importinto.TaskKey(222), proto.ImportInto, 1, bytes) + taskID, err = manager.AddNewGlobalTask(ctx, importinto.TaskKey(222), proto.ImportInto, 1, bytes) require.NoError(t, err) ingestStepMetas := []*importinto.WriteIngestStepMeta{ { @@ -98,10 +101,10 @@ func TestGetTaskImportedRows(t *testing.T) { for _, m := range ingestStepMetas { bytes, err := json.Marshal(m) require.NoError(t, err) - require.NoError(t, manager.AddNewSubTask(taskID, importinto.StepWriteAndIngest, + require.NoError(t, manager.AddNewSubTask(ctx, taskID, importinto.StepWriteAndIngest, "", bytes, proto.ImportInto, false)) } - rows, err = importinto.GetTaskImportedRows(222) + rows, err = importinto.GetTaskImportedRows(ctx, 222) require.NoError(t, err) require.Equal(t, uint64(33), rows) } diff --git a/pkg/disttask/importinto/scheduler.go b/pkg/disttask/importinto/scheduler.go index 6645e597d50a4..2afa6ea412960 100644 --- a/pkg/disttask/importinto/scheduler.go +++ b/pkg/disttask/importinto/scheduler.go @@ -266,6 +266,7 @@ type mergeSortStepExecutor struct { // subtask of a task is run in serial now, so we don't need lock here. // change to SyncMap when we support parallel subtask in the future. subtaskSortedKVMeta *external.SortedKVMeta + partSize int64 } var _ execute.SubtaskExecutor = &mergeSortStepExecutor{} @@ -279,6 +280,8 @@ func (m *mergeSortStepExecutor) Init(ctx context.Context) error { return err } m.controller = controller + // 10000 = max part num + m.partSize = int64(getWriterMemorySizeLimit(&m.taskMeta.Plan) / 10000 * uint64(external.MergeSortOverlapThreshold)) return nil } @@ -305,7 +308,9 @@ func (m *mergeSortStepExecutor) RunSubtask(ctx context.Context, subtask *proto.S prefix := subtaskPrefix(m.taskID, subtask.ID) - return external.MergeOverlappingFiles(ctx, sm.DataFiles, m.controller.GlobalSortStore, 64*1024, + logger.Info("merge sort partSize", zap.String("size", units.BytesSize(float64(m.partSize)))) + + return external.MergeOverlappingFiles(ctx, sm.DataFiles, m.controller.GlobalSortStore, m.partSize, 64*1024, prefix, getKVGroupBlockSize(sm.KVGroup), 8*1024, 1*size.MB, 8*1024, onClose, int(m.taskMeta.Plan.ThreadCnt), false) } diff --git a/pkg/disttask/importinto/subtask_executor.go b/pkg/disttask/importinto/subtask_executor.go index 39ee4a1cd6c05..9eb203b2f9514 100644 --- a/pkg/disttask/importinto/subtask_executor.go +++ b/pkg/disttask/importinto/subtask_executor.go @@ -34,6 +34,7 @@ import ( "github.com/pingcap/tidb/pkg/executor/importer" "github.com/pingcap/tidb/pkg/keyspace" "github.com/pingcap/tidb/pkg/kv" + "github.com/pingcap/tidb/pkg/meta/autoid" "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/util/etcd" @@ -135,6 +136,7 @@ func verifyChecksum(ctx context.Context, taskMeta *TaskMeta, subtaskMeta *PostPr }) globalTaskManager, err := storage.GetTaskManager() + ctx = util.WithInternalSourceType(ctx, kv.InternalDistTask) if err != nil { return err } @@ -245,16 +247,16 @@ func setBackoffWeight(se sessionctx.Context, taskMeta *TaskMeta, logger *zap.Log } type autoIDRequirement struct { - store kv.Storage - etcdCli *clientv3.Client + store kv.Storage + autoidCli *autoid.ClientDiscover } func (r *autoIDRequirement) Store() kv.Storage { return r.store } -func (r *autoIDRequirement) GetEtcdClient() *clientv3.Client { - return r.etcdCli +func (r *autoIDRequirement) AutoIDClient() *autoid.ClientDiscover { + return r.autoidCli } func rebaseAllocatorBases(ctx context.Context, taskMeta *TaskMeta, subtaskMeta *PostProcessStepMeta, logger *zap.Logger) (err error) { @@ -294,10 +296,12 @@ func rebaseAllocatorBases(ctx context.Context, taskMeta *TaskMeta, subtaskMeta * return errors.Trace(err) } etcd.SetEtcdCliByNamespace(etcdCli, keyspace.MakeKeyspaceEtcdNamespace(kvStore.GetCodec())) - r := autoIDRequirement{store: kvStore, etcdCli: etcdCli} + autoidCli := autoid.NewClientDiscover(etcdCli) + r := autoIDRequirement{store: kvStore, autoidCli: autoidCli} err = common.RebaseTableAllocators(ctx, subtaskMeta.MaxIDs, &r, taskMeta.Plan.DBID, taskMeta.Plan.DesiredTableInfo) if err1 := etcdCli.Close(); err1 != nil { logger.Info("close etcd client error", zap.Error(err1)) } + autoidCli.ResetConn(nil) return errors.Trace(err) } diff --git a/pkg/disttask/importinto/subtask_executor_test.go b/pkg/disttask/importinto/subtask_executor_test.go index 61fb3bc0602db..1dca40acba4ce 100644 --- a/pkg/disttask/importinto/subtask_executor_test.go +++ b/pkg/disttask/importinto/subtask_executor_test.go @@ -29,7 +29,6 @@ import ( "github.com/pingcap/tidb/pkg/testkit" "github.com/pingcap/tidb/pkg/util/logutil" "github.com/stretchr/testify/require" - "github.com/tikv/client-go/v2/util" ) func TestChecksumTable(t *testing.T) { @@ -40,7 +39,7 @@ func TestChecksumTable(t *testing.T) { return gtk.Session(), nil }, 1, 1, time.Second) defer pool.Close() - mgr := storage.NewTaskManager(util.WithInternalSourceType(ctx, "taskManager"), pool) + mgr := storage.NewTaskManager(pool) taskMeta := &importinto.TaskMeta{ Plan: importer.Plan{ diff --git a/pkg/domain/BUILD.bazel b/pkg/domain/BUILD.bazel index 0641165203a8a..4f588f1209827 100644 --- a/pkg/domain/BUILD.bazel +++ b/pkg/domain/BUILD.bazel @@ -43,6 +43,7 @@ go_library( "//pkg/keyspace", "//pkg/kv", "//pkg/meta", + "//pkg/meta/autoid", "//pkg/metrics", "//pkg/owner", "//pkg/parser/ast", @@ -96,6 +97,7 @@ go_library( "@com_github_tikv_client_go_v2//tikv", "@com_github_tikv_client_go_v2//txnkv/transaction", "@com_github_tikv_pd_client//:client", + "@com_github_tikv_pd_client//http", "@com_github_tikv_pd_client//resource_group/controller", "@io_etcd_go_etcd_client_v3//:client", "@io_etcd_go_etcd_client_v3//concurrency", diff --git a/pkg/domain/db_test.go b/pkg/domain/db_test.go index bcb0d3f53c3dc..983e526745c93 100644 --- a/pkg/domain/db_test.go +++ b/pkg/domain/db_test.go @@ -74,7 +74,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, keyspace.CodecV1, true) + info, err1 := infosync.GlobalInfoSyncerInit(context.Background(), "t", func() uint64 { return 1 }, nil, nil, nil, nil, keyspace.CodecV1, true) require.NoError(t, err1) conf := config.GetGlobalConfig() conf.Socket = "" @@ -107,7 +107,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, keyspace.CodecV1, true) + info, err1 := infosync.GlobalInfoSyncerInit(context.Background(), "t", func() uint64 { return 1 }, nil, nil, nil, nil, keyspace.CodecV1, true) require.NoError(t, err1) conf := config.GetGlobalConfig() conf.Socket = "" diff --git a/pkg/domain/domain.go b/pkg/domain/domain.go index 967073d197347..f24d22574ca5f 100644 --- a/pkg/domain/domain.go +++ b/pkg/domain/domain.go @@ -53,6 +53,7 @@ import ( "github.com/pingcap/tidb/pkg/keyspace" "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/meta" + "github.com/pingcap/tidb/pkg/meta/autoid" "github.com/pingcap/tidb/pkg/metrics" "github.com/pingcap/tidb/pkg/owner" "github.com/pingcap/tidb/pkg/parser/ast" @@ -90,6 +91,7 @@ import ( "github.com/tikv/client-go/v2/tikv" "github.com/tikv/client-go/v2/txnkv/transaction" pd "github.com/tikv/pd/client" + pdhttp "github.com/tikv/pd/client/http" rmclient "github.com/tikv/pd/client/resource_group/controller" clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/client/v3/concurrency" @@ -141,6 +143,8 @@ type Domain struct { exit chan struct{} // `etcdClient` must be used when keyspace is not set, or when the logic to each etcd path needs to be separated by keyspace. etcdClient *clientv3.Client + // autoidClient is used when there are tables with AUTO_ID_CACHE=1, it is the client to the autoid service. + autoidClient *autoid.ClientDiscover // `unprefixedEtcdCli` will never set the etcd namespace prefix by keyspace. // It is only used in storeMinStartTS and RemoveMinStartTS now. // It must be used when the etcd path isn't needed to separate by keyspace. @@ -1138,6 +1142,8 @@ func (do *Domain) Init( do.etcdClient = cli + do.autoidClient = autoid.NewClientDiscover(cli) + unprefixedEtcdCli, err := newEtcdCli(addrs, ebd) if err != nil { return errors.Trace(err) @@ -1169,6 +1175,7 @@ func (do *Domain) Init( ctx, ddl.WithEtcdClient(do.etcdClient), ddl.WithStore(do.store), + ddl.WithAutoIDClient(do.autoidClient), ddl.WithInfoCache(do.infoCache), ddl.WithHook(callback), ddl.WithLease(ddlLease), @@ -1186,11 +1193,11 @@ func (do *Domain) Init( } // step 1: prepare the info/schema syncer which domain reload needed. - pdCli := do.GetPDClient() + pdCli, pdHTTPCli := do.GetPDClient(), do.GetPDHTTPClient() skipRegisterToDashboard := config.GetGlobalConfig().SkipRegisterToDashboard do.info, err = infosync.GlobalInfoSyncerInit(ctx, do.ddl.GetID(), do.ServerID, - do.etcdClient, do.unprefixedEtcdCli, pdCli, do.Store().GetCodec(), - skipRegisterToDashboard) + do.etcdClient, do.unprefixedEtcdCli, pdCli, pdHTTPCli, + do.Store().GetCodec(), skipRegisterToDashboard) if err != nil { return err } @@ -1457,7 +1464,7 @@ func (do *Domain) InitDistTaskLoop(ctx context.Context) error { } }) - taskManager := storage.NewTaskManager(ctx, do.sysSessionPool) + taskManager := storage.NewTaskManager(do.sysSessionPool) var serverID string if intest.InTest { do.InitInfo4Test() @@ -1621,6 +1628,11 @@ func (do *Domain) GetEtcdClient() *clientv3.Client { return do.etcdClient } +// AutoIDClient returns the autoid client. +func (do *Domain) AutoIDClient() *autoid.ClientDiscover { + return do.autoidClient +} + // GetPDClient returns the PD client. func (do *Domain) GetPDClient() pd.Client { if store, ok := do.store.(kv.StorageWithPD); ok { @@ -1629,6 +1641,14 @@ func (do *Domain) GetPDClient() pd.Client { return nil } +// GetPDHTTPClient returns the PD HTTP client. +func (do *Domain) GetPDHTTPClient() pdhttp.Client { + if store, ok := do.store.(kv.StorageWithPD); ok { + return store.GetPDHTTPClient() + } + return nil +} + // 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 { @@ -1907,7 +1927,7 @@ func (do *Domain) handleEvolvePlanTasksLoop(ctx sessionctx.Context, owner owner. // in BootstrapSession. func (do *Domain) TelemetryReportLoop(ctx sessionctx.Context) { ctx.GetSessionVars().InRestrictedSQL = true - err := telemetry.InitialRun(ctx, do.GetEtcdClient()) + err := telemetry.InitialRun(ctx, do.etcdClient) if err != nil { logutil.BgLogger().Warn("Initial telemetry run failed", zap.Error(err)) } @@ -1928,7 +1948,7 @@ func (do *Domain) TelemetryReportLoop(ctx sessionctx.Context) { if !owner.IsOwner() { continue } - err := telemetry.ReportUsageData(ctx, do.GetEtcdClient()) + err := telemetry.ReportUsageData(ctx, do.etcdClient) if err != nil { // Only status update errors will be printed out logutil.BgLogger().Warn("TelemetryReportLoop status update failed", zap.Error(err)) @@ -2407,7 +2427,9 @@ func (do *Domain) updateStatsWorker(ctx sessionctx.Context, owner owner.Manager) defer util.Recover(metrics.LabelDomain, "updateStatsWorker", nil, false) logutil.BgLogger().Info("updateStatsWorker started.") lease := do.statsLease - deltaUpdateTicker := time.NewTicker(20 * lease) + // We need to have different nodes trigger tasks at different times to avoid the herd effect. + randDuration := time.Duration(rand.Int63n(int64(time.Minute))) + deltaUpdateTicker := time.NewTicker(20*lease + randDuration) gcStatsTicker := time.NewTicker(100 * lease) dumpColStatsUsageTicker := time.NewTicker(100 * lease) readMemTricker := time.NewTicker(memory.ReadMemInterval) diff --git a/pkg/domain/infosync/BUILD.bazel b/pkg/domain/infosync/BUILD.bazel index b128dfc06ee37..2680731b34312 100644 --- a/pkg/domain/infosync/BUILD.bazel +++ b/pkg/domain/infosync/BUILD.bazel @@ -36,7 +36,6 @@ go_library( "//pkg/util/dbterror", "//pkg/util/hack", "//pkg/util/logutil", - "//pkg/util/pdapi", "//pkg/util/syncutil", "//pkg/util/versioninfo", "@com_github_golang_protobuf//proto", @@ -50,6 +49,7 @@ go_library( "@com_github_tikv_client_go_v2//oracle", "@com_github_tikv_client_go_v2//tikv", "@com_github_tikv_pd_client//:client", + "@com_github_tikv_pd_client//http", "@io_etcd_go_etcd_client_v3//:client", "@io_etcd_go_etcd_client_v3//concurrency", "@org_uber_go_zap//:zap", diff --git a/pkg/domain/infosync/info.go b/pkg/domain/infosync/info.go index 3fa8ccec5d2c9..5b53adc260cff 100644 --- a/pkg/domain/infosync/info.go +++ b/pkg/domain/infosync/info.go @@ -23,7 +23,6 @@ import ( "net/http" "os" "path" - "regexp" "strconv" "strings" "sync" @@ -47,16 +46,15 @@ import ( "github.com/pingcap/tidb/pkg/parser/terror" "github.com/pingcap/tidb/pkg/sessionctx/binloginfo" "github.com/pingcap/tidb/pkg/sessionctx/variable" - "github.com/pingcap/tidb/pkg/store/helper" util2 "github.com/pingcap/tidb/pkg/util" "github.com/pingcap/tidb/pkg/util/dbterror" "github.com/pingcap/tidb/pkg/util/hack" "github.com/pingcap/tidb/pkg/util/logutil" - "github.com/pingcap/tidb/pkg/util/pdapi" "github.com/pingcap/tidb/pkg/util/versioninfo" "github.com/tikv/client-go/v2/oracle" "github.com/tikv/client-go/v2/tikv" pd "github.com/tikv/pd/client" + pdhttp "github.com/tikv/pd/client/http" clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/client/v3/concurrency" "go.uber.org/zap" @@ -196,7 +194,7 @@ func GlobalInfoSyncerInit( id string, serverIDGetter func() uint64, etcdCli, unprefixedEtcdCli *clientv3.Client, - pdCli pd.Client, + pdCli pd.Client, pdHTTPCli pdhttp.Client, codec tikv.Codec, skipRegisterToDashBoard bool, ) (*InfoSyncer, error) { @@ -211,8 +209,11 @@ func GlobalInfoSyncerInit( if err != nil { return nil, err } - is.labelRuleManager = initLabelRuleManager(etcdCli) - is.placementManager = initPlacementManager(etcdCli) + if pdHTTPCli != nil { + pdHTTPCli = pdHTTPCli.WithRespHandler(pdResponseHandler) + } + is.labelRuleManager = initLabelRuleManager(pdHTTPCli) + is.placementManager = initPlacementManager(pdHTTPCli) is.scheduleManager = initScheduleManager(etcdCli) is.tiflashReplicaManager = initTiFlashReplicaManager(etcdCli, codec) is.resourceManagerClient = initResourceManagerClient(pdCli) @@ -246,18 +247,18 @@ func (is *InfoSyncer) GetSessionManager() util2.SessionManager { return is.managerMu.SessionManager } -func initLabelRuleManager(etcdCli *clientv3.Client) LabelRuleManager { - if etcdCli == nil { +func initLabelRuleManager(pdHTTPCli pdhttp.Client) LabelRuleManager { + if pdHTTPCli == nil { return &mockLabelManager{labelRules: map[string][]byte{}} } - return &PDLabelManager{etcdCli: etcdCli} + return &PDLabelManager{pdHTTPCli} } -func initPlacementManager(etcdCli *clientv3.Client) PlacementManager { - if etcdCli == nil { +func initPlacementManager(pdHTTPCli pdhttp.Client) PlacementManager { + if pdHTTPCli == nil { return &mockPlacementManager{} } - return &PDPlacementManager{etcdCli: etcdCli} + return &PDPlacementManager{pdHTTPCli} } func initResourceManagerClient(pdCli pd.Client) (cli pd.ResourceManagerClient) { @@ -411,7 +412,7 @@ func DeleteTiFlashTableSyncProgress(tableInfo *model.TableInfo) error { } // MustGetTiFlashProgress gets tiflash replica progress from tiflashProgressCache, if cache not exist, it calculates progress from PD and TiFlash and inserts progress into cache. -func MustGetTiFlashProgress(tableID int64, replicaCount uint64, tiFlashStores *map[int64]helper.StoreStat) (float64, error) { +func MustGetTiFlashProgress(tableID int64, replicaCount uint64, tiFlashStores *map[int64]pdhttp.StoreInfo) (float64, error) { is, err := getGlobalInfoSyncer() if err != nil { return 0, err @@ -428,7 +429,7 @@ func MustGetTiFlashProgress(tableID int64, replicaCount uint64, tiFlashStores *m if err != nil { return 0, err } - stores := make(map[int64]helper.StoreStat) + stores := make(map[int64]pdhttp.StoreInfo) for _, store := range tikvStats.Stores { for _, l := range store.Store.Labels { if l.Key == "engine" && l.Value == "tiflash" { @@ -448,10 +449,39 @@ func MustGetTiFlashProgress(tableID int64, replicaCount uint64, tiFlashStores *m return progress, nil } +// pdResponseHandler will be injected into the PD HTTP client to handle the response, +// this is to maintain consistency with the logic in the `doRequest`. +func pdResponseHandler(resp *http.Response, res interface{}) error { + defer func() { terror.Log(resp.Body.Close()) }() + bodyBytes, err := io.ReadAll(resp.Body) + if err != nil { + return err + } + if resp.StatusCode == http.StatusOK { + if res != nil && bodyBytes != nil { + return json.Unmarshal(bodyBytes, res) + } + return nil + } + logutil.BgLogger().Warn("response not 200", + zap.String("method", resp.Request.Method), + zap.String("host", resp.Request.URL.Host), + zap.String("url", resp.Request.URL.RequestURI()), + zap.Int("http status", resp.StatusCode), + ) + if resp.StatusCode != http.StatusNotFound && resp.StatusCode != http.StatusPreconditionFailed { + return ErrHTTPServiceError.FastGen("%s", bodyBytes) + } + return nil +} + +// TODO: replace with the unified PD HTTP client. func doRequest(ctx context.Context, apiName string, addrs []string, route, method string, body io.Reader) ([]byte, error) { - var err error - var req *http.Request - var res *http.Response + var ( + err error + req *http.Request + res *http.Response + ) for idx, addr := range addrs { url := util2.ComposeURL(addr, route) req, err = http.NewRequestWithContext(ctx, method, url, body) @@ -501,16 +531,6 @@ func doRequest(ctx context.Context, apiName string, addrs []string, route, metho return nil, err } -func removeVAndHash(v string) string { - if v == "" { - return v - } - versionHash := regexp.MustCompile("-[0-9]+-g[0-9a-f]{7,}(-dev)?") - v = versionHash.ReplaceAllLiteralString(v, "") - v = strings.TrimSuffix(v, "-dirty") - return strings.TrimPrefix(v, "v") -} - func doRequestWithFailpoint(req *http.Request) (resp *http.Response, err error) { fpEnabled := false failpoint.Inject("FailPlacement", func(val failpoint.Value) { @@ -928,8 +948,8 @@ func (is *InfoSyncer) getPrometheusAddr() (string, error) { if !clientAvailable || len(pdAddrs) == 0 { return "", errors.Errorf("pd unavailable") } - // Get prometheus address from pdApi. - url := util2.ComposeURL(pdAddrs[0], pdapi.Config) + // Get prometheus address from pdhttp. + url := util2.ComposeURL(pdAddrs[0], pdhttp.Config) resp, err := util2.InternalHTTPClient().Get(url) if err != nil { return "", err @@ -1063,7 +1083,7 @@ func PutLabelRule(ctx context.Context, rule *label.Rule) error { } // UpdateLabelRules synchronizes the label rule to PD. -func UpdateLabelRules(ctx context.Context, patch *label.RulePatch) error { +func UpdateLabelRules(ctx context.Context, patch *pdhttp.LabelRulePatch) error { if patch == nil || (len(patch.DeleteRules) == 0 && len(patch.SetRules) == 0) { return nil } @@ -1107,7 +1127,7 @@ func GetLabelRules(ctx context.Context, ruleIDs []string) (map[string]*label.Rul } // CalculateTiFlashProgress calculates TiFlash replica progress -func CalculateTiFlashProgress(tableID int64, replicaCount uint64, TiFlashStores map[int64]helper.StoreStat) (float64, error) { +func CalculateTiFlashProgress(tableID int64, replicaCount uint64, TiFlashStores map[int64]pdhttp.StoreInfo) (float64, error) { is, err := getGlobalInfoSyncer() if err != nil { return 0, errors.Trace(err) @@ -1195,7 +1215,7 @@ func GetTiFlashRegionCountFromPD(ctx context.Context, tableID int64, regionCount } // GetTiFlashStoresStat gets the TiKV store information by accessing PD's api. -func GetTiFlashStoresStat(ctx context.Context) (*helper.StoresStat, error) { +func GetTiFlashStoresStat(ctx context.Context) (*pdhttp.StoresInfo, error) { is, err := getGlobalInfoSyncer() if err != nil { return nil, errors.Trace(err) diff --git a/pkg/domain/infosync/info_test.go b/pkg/domain/infosync/info_test.go index e56aebb054d7a..79c8ebf37e0a6 100644 --- a/pkg/domain/infosync/info_test.go +++ b/pkg/domain/infosync/info_test.go @@ -69,7 +69,7 @@ func TestTopology(t *testing.T) { require.NoError(t, err) }() - info, err := GlobalInfoSyncerInit(ctx, currentID, func() uint64 { return 1 }, client, client, nil, keyspace.CodecV1, false) + info, err := GlobalInfoSyncerInit(ctx, currentID, func() uint64 { return 1 }, client, client, nil, nil, keyspace.CodecV1, false) require.NoError(t, err) err = info.newTopologySessionAndStoreServerInfo(ctx, util2.NewSessionDefaultRetryCnt) @@ -154,7 +154,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, keyspace.CodecV1, false) + _, err := GlobalInfoSyncerInit(context.TODO(), "test", func() uint64 { return 1 }, nil, nil, nil, nil, keyspace.CodecV1, false) require.NoError(t, err) bundle, err := placement.NewBundleFromOptions(&model.PlacementSettings{PrimaryRegion: "r1", Regions: "r1,r2"}) @@ -218,7 +218,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, keyspace.CodecV1, false) + _, err := GlobalInfoSyncerInit(ctx, "test", func() uint64 { return 1 }, nil, nil, nil, nil, keyspace.CodecV1, false) tiflash := NewMockTiFlash() SetMockTiFlash(tiflash) diff --git a/pkg/domain/infosync/label_manager.go b/pkg/domain/infosync/label_manager.go index 30560346244e3..0c5d0296136a4 100644 --- a/pkg/domain/infosync/label_manager.go +++ b/pkg/domain/infosync/label_manager.go @@ -15,79 +15,59 @@ package infosync import ( - "bytes" "context" "encoding/json" - "path" "sync" "github.com/pingcap/tidb/pkg/ddl/label" - "github.com/pingcap/tidb/pkg/util/pdapi" - clientv3 "go.etcd.io/etcd/client/v3" + pd "github.com/tikv/pd/client/http" ) // LabelRuleManager manages label rules type LabelRuleManager interface { PutLabelRule(ctx context.Context, rule *label.Rule) error - UpdateLabelRules(ctx context.Context, patch *label.RulePatch) error + UpdateLabelRules(ctx context.Context, patch *pd.LabelRulePatch) error GetAllLabelRules(ctx context.Context) ([]*label.Rule, error) GetLabelRules(ctx context.Context, ruleIDs []string) (map[string]*label.Rule, error) } // PDLabelManager manages rules with pd type PDLabelManager struct { - etcdCli *clientv3.Client + pdHTTPCli pd.Client } // PutLabelRule implements PutLabelRule func (lm *PDLabelManager) PutLabelRule(ctx context.Context, rule *label.Rule) error { - r, err := json.Marshal(rule) - if err != nil { - return err - } - _, err = doRequest(ctx, "PutLabelRule", lm.etcdCli.Endpoints(), path.Join(pdapi.Config, "region-label", "rule"), "POST", bytes.NewReader(r)) - return err + return lm.pdHTTPCli.SetRegionLabelRule(ctx, (*pd.LabelRule)(rule)) } // UpdateLabelRules implements UpdateLabelRules -func (lm *PDLabelManager) UpdateLabelRules(ctx context.Context, patch *label.RulePatch) error { - r, err := json.Marshal(patch) - if err != nil { - return err - } - - _, err = doRequest(ctx, "UpdateLabelRules", lm.etcdCli.Endpoints(), path.Join(pdapi.Config, "region-label", "rules"), "PATCH", bytes.NewReader(r)) - return err +func (lm *PDLabelManager) UpdateLabelRules(ctx context.Context, patch *pd.LabelRulePatch) error { + return lm.pdHTTPCli.PatchRegionLabelRules(ctx, patch) } // GetAllLabelRules implements GetAllLabelRules func (lm *PDLabelManager) GetAllLabelRules(ctx context.Context) ([]*label.Rule, error) { - var rules []*label.Rule - res, err := doRequest(ctx, "GetAllLabelRules", lm.etcdCli.Endpoints(), path.Join(pdapi.Config, "region-label", "rules"), "GET", nil) - - if err == nil && res != nil { - err = json.Unmarshal(res, &rules) + labelRules, err := lm.pdHTTPCli.GetAllRegionLabelRules(ctx) + if err != nil { + return nil, err } - return rules, err + r := make([]*label.Rule, 0, len(labelRules)) + for _, labelRule := range labelRules { + r = append(r, (*label.Rule)(labelRule)) + } + return r, nil } // GetLabelRules implements GetLabelRules func (lm *PDLabelManager) GetLabelRules(ctx context.Context, ruleIDs []string) (map[string]*label.Rule, error) { - ids, err := json.Marshal(ruleIDs) + labelRules, err := lm.pdHTTPCli.GetAllRegionLabelRules(ctx) if err != nil { return nil, err } - - rules := []*label.Rule{} - res, err := doRequest(ctx, "GetLabelRules", lm.etcdCli.Endpoints(), path.Join(pdapi.Config, "region-label", "rules", "ids"), "GET", bytes.NewReader(ids)) - - if err == nil && res != nil { - err = json.Unmarshal(res, &rules) - } - - ruleMap := make(map[string]*label.Rule, len((rules))) - for _, r := range rules { - ruleMap[r.ID] = r + ruleMap := make(map[string]*label.Rule, len((labelRules))) + for _, r := range labelRules { + ruleMap[r.ID] = (*label.Rule)(r) } return ruleMap, err } @@ -113,7 +93,7 @@ func (mm *mockLabelManager) PutLabelRule(ctx context.Context, rule *label.Rule) } // UpdateLabelRules implements UpdateLabelRules -func (mm *mockLabelManager) UpdateLabelRules(ctx context.Context, patch *label.RulePatch) error { +func (mm *mockLabelManager) UpdateLabelRules(ctx context.Context, patch *pd.LabelRulePatch) error { mm.Lock() defer mm.Unlock() if patch == nil { diff --git a/pkg/domain/infosync/placement_manager.go b/pkg/domain/infosync/placement_manager.go index 3368869a4e38d..2d9de6a24d3e4 100644 --- a/pkg/domain/infosync/placement_manager.go +++ b/pkg/domain/infosync/placement_manager.go @@ -15,17 +15,11 @@ package infosync import ( - "bytes" "context" - "encoding/json" - "path" "sync" - "github.com/pingcap/log" "github.com/pingcap/tidb/pkg/ddl/placement" - "github.com/pingcap/tidb/pkg/util/pdapi" - clientv3 "go.etcd.io/etcd/client/v3" - "go.uber.org/zap" + pd "github.com/tikv/pd/client/http" ) // PlacementManager manages placement settings @@ -40,27 +34,30 @@ type PlacementManager interface { // PDPlacementManager manages placement with pd type PDPlacementManager struct { - etcdCli *clientv3.Client + pdHTTPCli pd.Client } // GetRuleBundle is used to get one specific rule bundle from PD. func (m *PDPlacementManager) GetRuleBundle(ctx context.Context, name string) (*placement.Bundle, error) { - bundle := &placement.Bundle{ID: name} - res, err := doRequest(ctx, "GetPlacementRule", m.etcdCli.Endpoints(), path.Join(pdapi.Config, "placement-rule", name), "GET", nil) - if err == nil && res != nil { - err = json.Unmarshal(res, bundle) + groupBundle, err := m.pdHTTPCli.GetPlacementRuleBundleByGroup(ctx, name) + if err != nil { + return nil, err } - return bundle, err + groupBundle.ID = name + return (*placement.Bundle)(groupBundle), err } // GetAllRuleBundles is used to get all rule bundles from PD. It is used to load full rules from PD while fullload infoschema. func (m *PDPlacementManager) GetAllRuleBundles(ctx context.Context) ([]*placement.Bundle, error) { - var bundles []*placement.Bundle - res, err := doRequest(ctx, "GetAllPlacementRules", m.etcdCli.Endpoints(), path.Join(pdapi.Config, "placement-rule"), "GET", nil) - if err == nil && res != nil { - err = json.Unmarshal(res, &bundles) + bundles, err := m.pdHTTPCli.GetAllPlacementRuleBundles(ctx) + if err != nil { + return nil, err + } + rules := make([]*placement.Bundle, 0, len(bundles)) + for _, bundle := range bundles { + rules = append(rules, (*placement.Bundle)(bundle)) } - return bundles, err + return rules, nil } // PutRuleBundles is used to post specific rule bundles to PD. @@ -68,15 +65,11 @@ func (m *PDPlacementManager) PutRuleBundles(ctx context.Context, bundles []*plac if len(bundles) == 0 { return nil } - - b, err := json.Marshal(bundles) - if err != nil { - return err + ruleBundles := make([]*pd.GroupBundle, 0, len(bundles)) + for _, bundle := range bundles { + ruleBundles = append(ruleBundles, (*pd.GroupBundle)(bundle)) } - - log.Debug("Put placement rule bundles", zap.String("rules", string(b))) - _, err = doRequest(ctx, "PutPlacementRules", m.etcdCli.Endpoints(), path.Join(pdapi.Config, "placement-rule")+"?partial=true", "POST", bytes.NewReader(b)) - return err + return m.pdHTTPCli.SetPlacementRuleBundles(ctx, ruleBundles, true) } type mockPlacementManager struct { diff --git a/pkg/domain/infosync/region.go b/pkg/domain/infosync/region.go index 76134557a8595..17208ecb6e153 100644 --- a/pkg/domain/infosync/region.go +++ b/pkg/domain/infosync/region.go @@ -21,7 +21,7 @@ import ( "fmt" "github.com/pingcap/errors" - "github.com/pingcap/tidb/pkg/util/pdapi" + pd "github.com/tikv/pd/client/http" ) // PlacementScheduleState is the returned third-valued state from GetReplicationState(). For convenience, the string of PD is deserialized into an enum first. @@ -66,7 +66,7 @@ func GetReplicationState(ctx context.Context, startKey []byte, endKey []byte) (P return PlacementScheduleStatePending, errors.Errorf("pd unavailable") } - res, err := doRequest(ctx, "GetReplicationState", addrs, fmt.Sprintf("%s/replicated?startKey=%s&endKey=%s", pdapi.Regions, hex.EncodeToString(startKey), hex.EncodeToString(endKey)), "GET", nil) + res, err := doRequest(ctx, "GetReplicationState", addrs, fmt.Sprintf("%s/replicated?startKey=%s&endKey=%s", pd.Regions, hex.EncodeToString(startKey), hex.EncodeToString(endKey)), "GET", nil) if err == nil && res != nil { st := PlacementScheduleStatePending // it should not fail diff --git a/pkg/domain/infosync/resource_manager_client.go b/pkg/domain/infosync/resource_manager_client.go index b183daebece5a..3cf1a2e51be68 100644 --- a/pkg/domain/infosync/resource_manager_client.go +++ b/pkg/domain/infosync/resource_manager_client.go @@ -15,6 +15,7 @@ package infosync import ( + "bytes" "context" "fmt" "math" @@ -144,5 +145,8 @@ func (m *mockResourceManagerClient) LoadResourceGroups(ctx context.Context) ([]* } func (m *mockResourceManagerClient) Watch(ctx context.Context, key []byte, opts ...pd.OpOption) (chan []*meta_storagepb.Event, error) { - return m.eventCh, nil + if bytes.Equal(pd.GroupSettingsPathPrefixBytes, key) { + return m.eventCh, nil + } + return nil, nil } diff --git a/pkg/domain/infosync/schedule_manager.go b/pkg/domain/infosync/schedule_manager.go index 7b71a8423edf7..1578007deb4d7 100644 --- a/pkg/domain/infosync/schedule_manager.go +++ b/pkg/domain/infosync/schedule_manager.go @@ -22,7 +22,7 @@ import ( "sync" "github.com/pingcap/errors" - "github.com/pingcap/tidb/pkg/util/pdapi" + pd "github.com/tikv/pd/client/http" clientv3 "go.etcd.io/etcd/client/v3" ) @@ -39,7 +39,7 @@ type PDScheduleManager struct { // GetPDScheduleConfig get schedule config from pd func (sm *PDScheduleManager) GetPDScheduleConfig(ctx context.Context) (map[string]interface{}, error) { - ret, err := doRequest(ctx, "GetPDSchedule", sm.etcdCli.Endpoints(), path.Join(pdapi.Config, "schedule"), "GET", nil) + ret, err := doRequest(ctx, "GetPDSchedule", sm.etcdCli.Endpoints(), path.Join(pd.Config, "schedule"), "GET", nil) if err != nil { return nil, errors.Trace(err) } @@ -59,7 +59,7 @@ func (sm *PDScheduleManager) SetPDScheduleConfig(ctx context.Context, config map return err } - _, err = doRequest(ctx, "SetPDSchedule", sm.etcdCli.Endpoints(), path.Join(pdapi.Config, "schedule"), "POST", bytes.NewReader(configJSON)) + _, err = doRequest(ctx, "SetPDSchedule", sm.etcdCli.Endpoints(), path.Join(pd.Config, "schedule"), "POST", bytes.NewReader(configJSON)) if err != nil { return errors.Trace(err) } diff --git a/pkg/domain/infosync/tiflash_manager.go b/pkg/domain/infosync/tiflash_manager.go index 73500f9eea65c..f4ea36b21c63a 100644 --- a/pkg/domain/infosync/tiflash_manager.go +++ b/pkg/domain/infosync/tiflash_manager.go @@ -22,7 +22,6 @@ import ( "fmt" "net/http" "net/http/httptest" - "net/url" "path" "strconv" "strings" @@ -38,9 +37,9 @@ import ( "github.com/pingcap/tidb/pkg/tablecodec" "github.com/pingcap/tidb/pkg/util/codec" "github.com/pingcap/tidb/pkg/util/logutil" - "github.com/pingcap/tidb/pkg/util/pdapi" "github.com/pingcap/tidb/pkg/util/syncutil" "github.com/tikv/client-go/v2/tikv" + pd "github.com/tikv/pd/client/http" clientv3 "go.etcd.io/etcd/client/v3" "go.uber.org/zap" ) @@ -67,9 +66,9 @@ type TiFlashReplicaManager interface { // GetRegionCountFromPD is a helper function calling `/stats/region`. GetRegionCountFromPD(ctx context.Context, tableID int64, regionCount *int) error // GetStoresStat gets the TiKV store information by accessing PD's api. - GetStoresStat(ctx context.Context) (*helper.StoresStat, error) + GetStoresStat(ctx context.Context) (*pd.StoresInfo, error) // CalculateTiFlashProgress calculates TiFlash replica progress - CalculateTiFlashProgress(tableID int64, replicaCount uint64, TiFlashStores map[int64]helper.StoreStat) (float64, error) + CalculateTiFlashProgress(tableID int64, replicaCount uint64, TiFlashStores map[int64]pd.StoreInfo) (float64, error) // UpdateTiFlashProgressCache updates tiflashProgressCache UpdateTiFlashProgressCache(tableID int64, progress float64) // GetTiFlashProgressFromCache gets tiflash replica progress from tiflashProgressCache @@ -91,11 +90,9 @@ type TiFlashReplicaManagerCtx struct { } // Close is called to close TiFlashReplicaManagerCtx. -func (m *TiFlashReplicaManagerCtx) Close(ctx context.Context) { +func (m *TiFlashReplicaManagerCtx) Close(context.Context) {} -} - -func getTiFlashPeerWithoutLagCount(tiFlashStores map[int64]helper.StoreStat, keyspaceID tikv.KeyspaceID, tableID int64) (int, error) { +func getTiFlashPeerWithoutLagCount(tiFlashStores map[int64]pd.StoreInfo, keyspaceID tikv.KeyspaceID, tableID int64) (int, error) { // storeIDs -> regionID, PD will not create two peer on the same store var flashPeerCount int for _, store := range tiFlashStores { @@ -121,7 +118,7 @@ func getTiFlashPeerWithoutLagCount(tiFlashStores map[int64]helper.StoreStat, key } // calculateTiFlashProgress calculates progress based on the region status from PD and TiFlash. -func calculateTiFlashProgress(keyspaceID tikv.KeyspaceID, tableID int64, replicaCount uint64, tiFlashStores map[int64]helper.StoreStat) (float64, error) { +func calculateTiFlashProgress(keyspaceID tikv.KeyspaceID, tableID int64, replicaCount uint64, tiFlashStores map[int64]pd.StoreInfo) (float64, error) { var regionCount int if err := GetTiFlashRegionCountFromPD(context.Background(), tableID, ®ionCount); err != nil { logutil.BgLogger().Error("Fail to get regionCount from PD.", @@ -172,7 +169,7 @@ func encodeRuleID(c tikv.Codec, ruleID string) string { } // CalculateTiFlashProgress calculates TiFlash replica progress. -func (m *TiFlashReplicaManagerCtx) CalculateTiFlashProgress(tableID int64, replicaCount uint64, tiFlashStores map[int64]helper.StoreStat) (float64, error) { +func (m *TiFlashReplicaManagerCtx) CalculateTiFlashProgress(tableID int64, replicaCount uint64, tiFlashStores map[int64]pd.StoreInfo) (float64, error) { return calculateTiFlashProgress(m.codec.GetKeyspaceID(), tableID, replicaCount, tiFlashStores) } @@ -210,7 +207,7 @@ func (m *TiFlashReplicaManagerCtx) SetTiFlashGroupConfig(ctx context.Context) er res, err := doRequest(ctx, "GetRuleGroupConfig", m.etcdCli.Endpoints(), - path.Join(pdapi.Config, "rule_group", placement.TiFlashRuleGroupID), + path.Join(pd.Config, "rule_group", placement.TiFlashRuleGroupID), "GET", nil, ) @@ -244,7 +241,7 @@ func (m *TiFlashReplicaManagerCtx) SetTiFlashGroupConfig(ctx context.Context) er _, err = doRequest(ctx, "SetRuleGroupConfig", m.etcdCli.Endpoints(), - path.Join(pdapi.Config, "rule_group"), + path.Join(pd.Config, "rule_group"), "POST", bytes.NewBuffer(body), ) @@ -276,7 +273,7 @@ func (m *TiFlashReplicaManagerCtx) doSetPlacementRule(ctx context.Context, rule return errors.Trace(err) } buf := bytes.NewBuffer(j) - res, err := doRequest(ctx, "SetPlacementRule", m.etcdCli.Endpoints(), path.Join(pdapi.Config, "rule"), "POST", buf) + res, err := doRequest(ctx, "SetPlacementRule", m.etcdCli.Endpoints(), path.Join(pd.Config, "rule"), "POST", buf) if err != nil { return errors.Trace(err) } @@ -317,19 +314,19 @@ var _ json.Marshaler = (*RuleOp)(nil) var _ json.Unmarshaler = (*RuleOp)(nil) type ruleOp struct { - GroupID string `json:"group_id"` - ID string `json:"id"` - Index int `json:"index,omitempty"` - Override bool `json:"override,omitempty"` - Role placement.PeerRoleType `json:"role"` - Count int `json:"count"` - Constraints placement.Constraints `json:"label_constraints,omitempty"` - LocationLabels []string `json:"location_labels,omitempty"` - IsolationLevel string `json:"isolation_level,omitempty"` - StartKeyHex string `json:"start_key"` - EndKeyHex string `json:"end_key"` - Action RuleOpType `json:"action"` - DeleteByIDPrefix bool `json:"delete_by_id_prefix"` + GroupID string `json:"group_id"` + ID string `json:"id"` + Index int `json:"index,omitempty"` + Override bool `json:"override,omitempty"` + Role pd.PeerRoleType `json:"role"` + Count int `json:"count"` + Constraints []pd.LabelConstraint `json:"label_constraints,omitempty"` + LocationLabels []string `json:"location_labels,omitempty"` + IsolationLevel string `json:"isolation_level,omitempty"` + StartKeyHex string `json:"start_key"` + EndKeyHex string `json:"end_key"` + Action RuleOpType `json:"action"` + DeleteByIDPrefix bool `json:"delete_by_id_prefix"` } // MarshalJSON implements json.Marshaler interface for RuleOp. @@ -416,7 +413,7 @@ func (m *TiFlashReplicaManagerCtx) doSetPlacementRuleBatch(ctx context.Context, return errors.Trace(err) } buf := bytes.NewBuffer(j) - res, err := doRequest(ctx, "SetPlacementRuleBatch", m.etcdCli.Endpoints(), path.Join(pdapi.Config, "rules", "batch"), "POST", buf) + res, err := doRequest(ctx, "SetPlacementRuleBatch", m.etcdCli.Endpoints(), path.Join(pd.Config, "rules", "batch"), "POST", buf) if err != nil { return errors.Trace(err) } @@ -433,7 +430,7 @@ func (m *TiFlashReplicaManagerCtx) DeletePlacementRule(ctx context.Context, grou } func (m *TiFlashReplicaManagerCtx) doDeletePlacementRule(ctx context.Context, group string, ruleID string) error { - res, err := doRequest(ctx, "DeletePlacementRule", m.etcdCli.Endpoints(), path.Join(pdapi.Config, "rule", group, ruleID), "DELETE", nil) + res, err := doRequest(ctx, "DeletePlacementRule", m.etcdCli.Endpoints(), path.Join(pd.Config, "rule", group, ruleID), "DELETE", nil) if err != nil { return errors.Trace(err) } @@ -445,7 +442,7 @@ func (m *TiFlashReplicaManagerCtx) doDeletePlacementRule(ctx context.Context, gr // GetGroupRules to get all placement rule in a certain group. func (m *TiFlashReplicaManagerCtx) GetGroupRules(ctx context.Context, group string) ([]placement.TiFlashRule, error) { - res, err := doRequest(ctx, "GetGroupRules", m.etcdCli.Endpoints(), path.Join(pdapi.Config, "rules", "group", group), "GET", nil) + res, err := doRequest(ctx, "GetGroupRules", m.etcdCli.Endpoints(), path.Join(pd.Config, "rules", "group", group), "GET", nil) if err != nil { return nil, errors.Trace(err) } @@ -482,7 +479,7 @@ func (m *TiFlashReplicaManagerCtx) PostAccelerateScheduleBatch(ctx context.Conte return errors.Trace(err) } buf := bytes.NewBuffer(j) - res, err := doRequest(ctx, "PostAccelerateScheduleBatch", m.etcdCli.Endpoints(), path.Join(pdapi.Regions, "accelerate-schedule", "batch"), "POST", buf) + res, err := doRequest(ctx, "PostAccelerateScheduleBatch", m.etcdCli.Endpoints(), path.Join(pd.Regions, "accelerate-schedule", "batch"), http.MethodPost, buf) if err != nil { return errors.Trace(err) } @@ -498,11 +495,7 @@ func (m *TiFlashReplicaManagerCtx) GetRegionCountFromPD(ctx context.Context, tab endKey := tablecodec.EncodeTablePrefix(tableID + 1) startKey, endKey = m.codec.EncodeRegionRange(startKey, endKey) - p := fmt.Sprintf("%s&count", - pdapi.RegionStatsByStartEndKey( - url.QueryEscape(string(startKey)), - url.QueryEscape(string(endKey)), - )) + p := fmt.Sprintf("%s&count", pd.RegionStatsByKeyRange(pd.NewKeyRange(startKey, endKey))) res, err := doRequest(ctx, "GetPDRegionStats", m.etcdCli.Endpoints(), p, "GET", nil) if err != nil { return errors.Trace(err) @@ -510,7 +503,7 @@ func (m *TiFlashReplicaManagerCtx) GetRegionCountFromPD(ctx context.Context, tab if res == nil { return fmt.Errorf("TiFlashReplicaManagerCtx returns error in GetRegionCountFromPD") } - var stats helper.PDRegionStats + var stats pd.RegionStats err = json.Unmarshal(res, &stats) if err != nil { return errors.Trace(err) @@ -520,9 +513,9 @@ func (m *TiFlashReplicaManagerCtx) GetRegionCountFromPD(ctx context.Context, tab } // GetStoresStat gets the TiKV store information by accessing PD's api. -func (m *TiFlashReplicaManagerCtx) GetStoresStat(ctx context.Context) (*helper.StoresStat, error) { - var storesStat helper.StoresStat - res, err := doRequest(ctx, "GetStoresStat", m.etcdCli.Endpoints(), pdapi.Stores, "GET", nil) +func (m *TiFlashReplicaManagerCtx) GetStoresStat(ctx context.Context) (*pd.StoresInfo, error) { + var storesStat pd.StoresInfo + res, err := doRequest(ctx, "GetStoresStat", m.etcdCli.Endpoints(), pd.Stores, "GET", nil) if err != nil { return nil, errors.Trace(err) } @@ -551,12 +544,12 @@ func makeBaseRule() placement.TiFlashRule { ID: "", Index: placement.RuleIndexTiFlash, Override: false, - Role: placement.Learner, + Role: pd.Learner, Count: 2, - Constraints: []placement.Constraint{ + Constraints: []pd.LabelConstraint{ { Key: "engine", - Op: placement.In, + Op: pd.In, Values: []string{"tiflash"}, }, }, @@ -610,7 +603,7 @@ type MockTiFlash struct { StatusAddr string StatusServer *httptest.Server SyncStatus map[int]mockTiFlashTableInfo - StoreInfo map[uint64]helper.StoreBaseStat + StoreInfo map[uint64]pd.MetaStore GlobalTiFlashPlacementRules map[string]placement.TiFlashRule PdEnabled bool TiflashDelay time.Duration @@ -672,7 +665,7 @@ func NewMockTiFlash() *MockTiFlash { StatusAddr: "", StatusServer: nil, SyncStatus: make(map[int]mockTiFlashTableInfo), - StoreInfo: make(map[uint64]helper.StoreBaseStat), + StoreInfo: make(map[uint64]pd.MetaStore), GlobalTiFlashPlacementRules: make(map[string]placement.TiFlashRule), PdEnabled: true, TiflashDelay: 0, @@ -796,15 +789,15 @@ func (tiflash *MockTiFlash) HandlePostAccelerateSchedule(endKey string) error { // HandleGetPDRegionRecordStats is mock function for GetRegionCountFromPD. // It currently always returns 1 Region for convenience. -func (tiflash *MockTiFlash) HandleGetPDRegionRecordStats(_ int64) helper.PDRegionStats { - return helper.PDRegionStats{ +func (tiflash *MockTiFlash) HandleGetPDRegionRecordStats(_ int64) pd.RegionStats { + return pd.RegionStats{ Count: 1, } } // AddStore is mock function for adding store info into MockTiFlash. func (tiflash *MockTiFlash) AddStore(storeID uint64, address string) { - tiflash.StoreInfo[storeID] = helper.StoreBaseStat{ + tiflash.StoreInfo[storeID] = pd.MetaStore{ ID: int64(storeID), Address: address, State: 0, @@ -813,7 +806,7 @@ func (tiflash *MockTiFlash) AddStore(storeID uint64, address string) { StatusAddress: tiflash.StatusAddr, GitHash: "mock-tikv-githash", StartTimestamp: tiflash.StartTime.Unix(), - Labels: []helper.StoreLabel{{ + Labels: []pd.StoreLabel{{ Key: "engine", Value: "tiflash", }}, @@ -822,16 +815,16 @@ func (tiflash *MockTiFlash) AddStore(storeID uint64, address string) { // HandleGetStoresStat is mock function for GetStoresStat. // It returns address of our mocked TiFlash server. -func (tiflash *MockTiFlash) HandleGetStoresStat() *helper.StoresStat { +func (tiflash *MockTiFlash) HandleGetStoresStat() *pd.StoresInfo { tiflash.Lock() defer tiflash.Unlock() if len(tiflash.StoreInfo) == 0 { // default Store - return &helper.StoresStat{ + return &pd.StoresInfo{ Count: 1, - Stores: []helper.StoreStat{ + Stores: []pd.StoreInfo{ { - Store: helper.StoreBaseStat{ + Store: pd.MetaStore{ ID: 1, Address: "127.0.0.1:3930", State: 0, @@ -840,7 +833,7 @@ func (tiflash *MockTiFlash) HandleGetStoresStat() *helper.StoresStat { StatusAddress: tiflash.StatusAddr, GitHash: "mock-tikv-githash", StartTimestamp: tiflash.StartTime.Unix(), - Labels: []helper.StoreLabel{{ + Labels: []pd.StoreLabel{{ Key: "engine", Value: "tiflash", }}, @@ -849,11 +842,11 @@ func (tiflash *MockTiFlash) HandleGetStoresStat() *helper.StoresStat { }, } } - stores := make([]helper.StoreStat, 0, len(tiflash.StoreInfo)) + stores := make([]pd.StoreInfo, 0, len(tiflash.StoreInfo)) for _, storeInfo := range tiflash.StoreInfo { - stores = append(stores, helper.StoreStat{Store: storeInfo, Status: helper.StoreDetailStat{}}) + stores = append(stores, pd.StoreInfo{Store: storeInfo, Status: pd.StoreStatus{}}) } - return &helper.StoresStat{ + return &pd.StoresInfo{ Count: len(tiflash.StoreInfo), Stores: stores, } @@ -881,7 +874,7 @@ func isRuleMatch(rule placement.TiFlashRule, startKey []byte, endKey []byte, cou } ok := false for _, c := range rule.Constraints { - if c.Key == "engine" && len(c.Values) == 1 && c.Values[0] == "tiflash" && c.Op == placement.In { + if c.Key == "engine" && len(c.Values) == 1 && c.Values[0] == "tiflash" && c.Op == pd.In { ok = true break } @@ -901,7 +894,7 @@ func isRuleMatch(rule placement.TiFlashRule, startKey []byte, endKey []byte, cou if rule.Count != count { return false } - if rule.Role != placement.Learner { + if rule.Role != pd.Learner { return false } return true @@ -970,7 +963,7 @@ func (tiflash *MockTiFlash) SetNetworkError(e bool) { } // CalculateTiFlashProgress return truncated string to avoid float64 comparison. -func (m *mockTiFlashReplicaManagerCtx) CalculateTiFlashProgress(tableID int64, replicaCount uint64, tiFlashStores map[int64]helper.StoreStat) (float64, error) { +func (m *mockTiFlashReplicaManagerCtx) CalculateTiFlashProgress(tableID int64, replicaCount uint64, tiFlashStores map[int64]pd.StoreInfo) (float64, error) { return calculateTiFlashProgress(tikv.NullspaceID, tableID, replicaCount, tiFlashStores) } @@ -1093,7 +1086,7 @@ func (m *mockTiFlashReplicaManagerCtx) GetRegionCountFromPD(ctx context.Context, } // GetStoresStat gets the TiKV store information by accessing PD's api. -func (m *mockTiFlashReplicaManagerCtx) GetStoresStat(ctx context.Context) (*helper.StoresStat, error) { +func (m *mockTiFlashReplicaManagerCtx) GetStoresStat(ctx context.Context) (*pd.StoresInfo, error) { m.Lock() defer m.Unlock() if m.tiflash == nil { diff --git a/pkg/errctx/BUILD.bazel b/pkg/errctx/BUILD.bazel new file mode 100644 index 0000000000000..ef0f7368ccd79 --- /dev/null +++ b/pkg/errctx/BUILD.bazel @@ -0,0 +1,27 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "errctx", + srcs = ["context.go"], + importpath = "github.com/pingcap/tidb/pkg/errctx", + visibility = ["//visibility:public"], + deps = [ + "//pkg/errno", + "//pkg/util/intest", + "@com_github_pingcap_errors//:errors", + ], +) + +go_test( + name = "errctx_test", + timeout = "short", + srcs = ["context_test.go"], + flaky = True, + deps = [ + ":errctx", + "//pkg/types", + "@com_github_pingcap_errors//:errors", + "@com_github_stretchr_testify//require", + "@org_uber_go_multierr//:multierr", + ], +) diff --git a/pkg/errctx/context.go b/pkg/errctx/context.go new file mode 100644 index 0000000000000..18dd3e5b22c1a --- /dev/null +++ b/pkg/errctx/context.go @@ -0,0 +1,182 @@ +// Copyright 2023 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 errctx + +import ( + "github.com/pingcap/errors" + "github.com/pingcap/tidb/pkg/errno" + "github.com/pingcap/tidb/pkg/util/intest" +) + +// Level defines the behavior for each error +type Level uint8 + +const ( + // LevelError means the error will be returned + LevelError Level = iota + // LevelWarn means it will be regarded as a warning + LevelWarn + // LevelIgnore means the error will be ignored + LevelIgnore +) + +// Context defines how to handle an error +type Context struct { + levelMap [errGroupCount]Level + appendWarningFn func(err error) +} + +// WithStrictErrGroupLevel makes the context to return the error directly for any kinds of errors. +func (ctx *Context) WithStrictErrGroupLevel() Context { + newCtx := Context{ + appendWarningFn: ctx.appendWarningFn, + } + + return newCtx +} + +// WithErrGroupLevel sets a `Level` for an `ErrGroup` +func (ctx *Context) WithErrGroupLevel(eg ErrGroup, l Level) Context { + newCtx := Context{ + levelMap: ctx.levelMap, + appendWarningFn: ctx.appendWarningFn, + } + newCtx.levelMap[eg] = l + + return newCtx +} + +// appendWarning appends the error to warning. If the inner `appendWarningFn` is nil, do nothing. +func (ctx *Context) appendWarning(err error) { + intest.Assert(ctx.appendWarningFn != nil) + if fn := ctx.appendWarningFn; fn != nil { + // appendWarningFn should always not be nil, check fn != nil here to just make code safe. + fn(err) + } +} + +// HandleError handles the error according to the context. See the comment of `HandleErrorWithAlias` for detailed logic. +// +// It also allows using `errors.ErrorGroup`, in this case, it'll handle each error in order, and return the first error +// it founds. +func (ctx *Context) HandleError(err error) error { + // The function of handling `errors.ErrorGroup` is placed in `HandleError` but not in `HandleErrorWithAlias`, because + // it's hard to give a proper error and warn alias for an error group. + if errs, ok := err.(errors.ErrorGroup); ok { + for _, singleErr := range errs.Errors() { + singleErr = ctx.HandleError(singleErr) + // If the one error is found, just return it. + // TODO: consider whether it's more appropriate to continue to handle other errors. For example, other errors + // may need to append warnings. The current behavior is same with TiDB original behavior before using + // `errctx` to handle multiple errors. + if singleErr != nil { + return singleErr + } + } + + return nil + } + + return ctx.HandleErrorWithAlias(err, err, err) +} + +// HandleErrorWithAlias handles the error according to the context. +// 1. If the `internalErr` is not `"pingcap/errors".Error`, or the error code is not defined in the `errGroupMap`, or the error +// level is set to `LevelError`(0), the `err` will be returned directly. +// 2. If the error level is set to `LevelWarn`, the `warnErr` will be appended as a warning. +// 3. If the error level is set to `LevelIgnore`, this function will return a `nil`. +// +// In most cases, these three should be the same. If there are many different kinds of error internally, but they are expected +// to give the same error to users, the `err` can be different form `internalErr`. Also, if the warning is expected to be +// different from the initial error, you can also use the `warnErr` argument. +// +// TODO: is it good to give an error code for internal only errors? Or should we use another way to distinguish different +// group of errors? +// TODO: both `types.Context` and `errctx.Context` can handle truncate error now. Refractor them. +func (ctx *Context) HandleErrorWithAlias(internalErr error, err error, warnErr error) error { + if internalErr == nil { + return nil + } + + internalErr = errors.Cause(internalErr) + + e, ok := internalErr.(*errors.Error) + if !ok { + return err + } + + eg, ok := errGroupMap[e.Code()] + if !ok { + return err + } + + switch ctx.levelMap[eg] { + case LevelError: + return err + case LevelWarn: + ctx.appendWarning(warnErr) + case LevelIgnore: + } + + return nil +} + +// NewContext creates an error context to handle the errors and warnings +func NewContext(appendWarningFn func(err error)) Context { + intest.Assert(appendWarningFn != nil) + return Context{ + appendWarningFn: appendWarningFn, + } +} + +// StrictNoWarningContext returns all errors directly, and ignore all errors +var StrictNoWarningContext = NewContext(func(_ error) { + // the error is ignored +}) + +var errGroupMap = make(map[errors.ErrCode]ErrGroup) + +// ErrGroup groups the error according to the behavior of handling errors +type ErrGroup int + +const ( + // ErrGroupTruncate is the group of truncated errors + ErrGroupTruncate ErrGroup = iota + // ErrGroupOverflow is the group of overflow errors + ErrGroupOverflow + + // errGroupCount is the count of all `ErrGroup`. Please leave it at the end of the list. + errGroupCount +) + +func init() { + truncateErrCodes := []errors.ErrCode{ + errno.ErrTruncatedWrongValue, + errno.ErrDataTooLong, + errno.ErrTruncatedWrongValueForField, + errno.ErrWarnDataOutOfRange, + errno.ErrDataOutOfRange, + errno.ErrBadNumber, + errno.ErrWrongValueForType, + errno.ErrDatetimeFunctionOverflow, + errno.WarnDataTruncated, + errno.ErrIncorrectDatetimeValue, + } + for _, errCode := range truncateErrCodes { + errGroupMap[errCode] = ErrGroupTruncate + } + + errGroupMap[errno.ErrDataOutOfRange] = ErrGroupOverflow +} diff --git a/pkg/errctx/context_test.go b/pkg/errctx/context_test.go new file mode 100644 index 0000000000000..e78cbb09c7640 --- /dev/null +++ b/pkg/errctx/context_test.go @@ -0,0 +1,63 @@ +// Copyright 2023 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 errctx_test + +import ( + "testing" + + "github.com/pingcap/errors" + "github.com/pingcap/tidb/pkg/errctx" + "github.com/pingcap/tidb/pkg/types" + "github.com/stretchr/testify/require" + "go.uber.org/multierr" +) + +func TestContext(t *testing.T) { + var warn error + ctx := errctx.NewContext(func(err error) { + warn = err + }) + + testInternalErr := types.ErrOverflow + testErr := errors.New("error") + testWarn := errors.New("warn") + // by default, all errors will be returned directly + require.Equal(t, ctx.HandleErrorWithAlias(testInternalErr, testErr, testWarn), testErr) + + // set level to "warn" + newCtx := ctx.WithErrGroupLevel(errctx.ErrGroupOverflow, errctx.LevelWarn) + // ctx is not affected + require.Equal(t, ctx.HandleErrorWithAlias(testInternalErr, testErr, testWarn), testErr) + // newCtx will handle the error as a warn + require.NoError(t, newCtx.HandleErrorWithAlias(testInternalErr, testErr, testWarn)) + require.Equal(t, warn, testWarn) + + warn = nil + newCtx2 := newCtx.WithStrictErrGroupLevel() + // newCtx is not affected + require.NoError(t, newCtx.HandleErrorWithAlias(testInternalErr, testErr, testWarn)) + require.Equal(t, warn, testWarn) + // newCtx2 will return all errors + require.Equal(t, newCtx2.HandleErrorWithAlias(testInternalErr, testErr, testWarn), testErr) + + // test `multierr` + testErrs := multierr.Append(testInternalErr, testErr) + require.Equal(t, ctx.HandleError(testErrs), testInternalErr) + require.Equal(t, newCtx.HandleError(testErrs), testErr) + require.Equal(t, warn, testInternalErr) + + // test nil + require.Nil(t, ctx.HandleError(nil)) +} diff --git a/pkg/executor/BUILD.bazel b/pkg/executor/BUILD.bazel index 247972dd8dbef..5cf987f160f5b 100644 --- a/pkg/executor/BUILD.bazel +++ b/pkg/executor/BUILD.bazel @@ -121,6 +121,7 @@ go_library( "//pkg/executor/internal/mpp", "//pkg/executor/internal/pdhelper", "//pkg/executor/internal/querywatch", + "//pkg/executor/internal/testutil", "//pkg/executor/internal/util", "//pkg/executor/internal/vecgroupchecker", "//pkg/executor/lockstats", @@ -208,7 +209,6 @@ go_library( "//pkg/util/memory", "//pkg/util/mvmap", "//pkg/util/password-validation", - "//pkg/util/pdapi", "//pkg/util/plancodec", "//pkg/util/printer", "//pkg/util/ranger", @@ -269,6 +269,7 @@ go_library( "@com_github_tikv_client_go_v2//txnkv/txnsnapshot", "@com_github_tikv_client_go_v2//util", "@com_github_tikv_pd_client//:client", + "@com_github_tikv_pd_client//http", "@com_github_twmb_murmur3//:murmur3", "@com_sourcegraph_sourcegraph_appdash//:appdash", "@com_sourcegraph_sourcegraph_appdash//opentracing", @@ -277,7 +278,6 @@ go_library( "@org_golang_google_grpc//credentials", "@org_golang_google_grpc//credentials/insecure", "@org_golang_google_grpc//status", - "@org_golang_x_exp//maps", "@org_golang_x_sync//errgroup", "@org_uber_go_atomic//:atomic", "@org_uber_go_zap//:zap", @@ -380,6 +380,7 @@ go_test( "//pkg/executor/importer", "//pkg/executor/internal/builder", "//pkg/executor/internal/exec", + "//pkg/executor/internal/testutil", "//pkg/executor/sortexec", "//pkg/expression", "//pkg/expression/aggregation", @@ -400,6 +401,7 @@ go_test( "//pkg/planner/util", "//pkg/server", "//pkg/session", + "//pkg/session/types", "//pkg/sessionctx", "//pkg/sessionctx/binloginfo", "//pkg/sessionctx/stmtctx", @@ -438,7 +440,6 @@ go_test( "//pkg/util/memory", "//pkg/util/mock", "//pkg/util/paging", - "//pkg/util/pdapi", "//pkg/util/ranger", "//pkg/util/sem", "//pkg/util/set", @@ -467,6 +468,7 @@ go_test( "@com_github_tikv_client_go_v2//tikv", "@com_github_tikv_client_go_v2//tikvrpc", "@com_github_tikv_client_go_v2//util", + "@com_github_tikv_pd_client//http", "@org_golang_google_grpc//:grpc", "@org_uber_go_atomic//:atomic", "@org_uber_go_goleak//:goleak", diff --git a/pkg/executor/admin.go b/pkg/executor/admin.go index ae4e4217bda5f..a340de24058de 100644 --- a/pkg/executor/admin.go +++ b/pkg/executor/admin.go @@ -128,7 +128,7 @@ func (e *CheckIndexRangeExec) Open(ctx context.Context) error { SetKeepOrder(true). SetFromSessionVars(e.Ctx().GetSessionVars()). SetFromInfoSchema(e.Ctx().GetInfoSchema()). - SetConnID(e.Ctx().GetSessionVars().ConnectionID). + SetConnIDAndConnAlias(e.Ctx().GetSessionVars().ConnectionID, e.Ctx().GetSessionVars().SessionAlias). Build() if err != nil { return err @@ -280,7 +280,7 @@ func (e *RecoverIndexExec) buildTableScan(ctx context.Context, txn kv.Transactio SetKeepOrder(true). SetFromSessionVars(e.Ctx().GetSessionVars()). SetFromInfoSchema(e.Ctx().GetInfoSchema()). - SetConnID(e.Ctx().GetSessionVars().ConnectionID). + SetConnIDAndConnAlias(e.Ctx().GetSessionVars().ConnectionID, e.Ctx().GetSessionVars().SessionAlias). Build() if err != nil { return nil, err @@ -416,9 +416,10 @@ func (e *RecoverIndexExec) buildIndexedValues(row chunk.Row, idxVals []types.Dat idxVals = idxVals[:idxValLen] } + sctx := e.Ctx() for i, col := range e.index.Meta().Columns { if e.table.Meta().Columns[col.Offset].IsGenerated() { - val, err := e.cols[col.Offset].EvalVirtualColumn(row) + val, err := e.cols[col.Offset].EvalVirtualColumn(sctx, row) if err != nil { return nil, err } @@ -809,7 +810,7 @@ func (e *CleanupIndexExec) buildIndexScan(ctx context.Context, txn kv.Transactio SetKeepOrder(true). SetFromSessionVars(e.Ctx().GetSessionVars()). SetFromInfoSchema(e.Ctx().GetInfoSchema()). - SetConnID(e.Ctx().GetSessionVars().ConnectionID). + SetConnIDAndConnAlias(e.Ctx().GetSessionVars().ConnectionID, e.Ctx().GetSessionVars().SessionAlias). Build() if err != nil { return nil, err diff --git a/pkg/executor/aggfuncs/aggfunc_test.go b/pkg/executor/aggfuncs/aggfunc_test.go index 7b24739078281..4157adf9212ed 100644 --- a/pkg/executor/aggfuncs/aggfunc_test.go +++ b/pkg/executor/aggfuncs/aggfunc_test.go @@ -214,7 +214,7 @@ func rowMemDeltaGens(srcChk *chunk.Chunk, dataType *types.FieldType) (memDeltas return memDeltas, nil } -type multiArgsUpdateMemDeltaGens func(*chunk.Chunk, []*types.FieldType, []*util.ByItems) (memDeltas []int64, err error) +type multiArgsUpdateMemDeltaGens func(sessionctx.Context, *chunk.Chunk, []*types.FieldType, []*util.ByItems) (memDeltas []int64, err error) type aggMemTest struct { aggTest aggTest @@ -789,7 +789,7 @@ func testMultiArgsAggMemFunc(t *testing.T, p multiArgsAggMemTest) { finalPr, memDelta := finalFunc.AllocPartialResult() require.Equal(t, p.allocMemDelta, memDelta) - updateMemDeltas, err := p.multiArgsUpdateMemDeltaGens(srcChk, p.multiArgsAggTest.dataTypes, desc.OrderByItems) + updateMemDeltas, err := p.multiArgsUpdateMemDeltaGens(ctx, srcChk, p.multiArgsAggTest.dataTypes, desc.OrderByItems) require.NoError(t, err) iter := chunk.NewIterator4Chunk(srcChk) i := 0 diff --git a/pkg/executor/aggfuncs/builder.go b/pkg/executor/aggfuncs/builder.go index ab759e9cf6764..9965976eda5b2 100644 --- a/pkg/executor/aggfuncs/builder.go +++ b/pkg/executor/aggfuncs/builder.go @@ -92,9 +92,9 @@ func BuildWindowFunctions(ctx sessionctx.Context, windowFuncDesc *aggregation.Ag case ast.WindowFuncCumeDist: return buildCumeDist(ordinal, orderByCols) case ast.WindowFuncNthValue: - return buildNthValue(windowFuncDesc, ordinal) + return buildNthValue(ctx, windowFuncDesc, ordinal) case ast.WindowFuncNtile: - return buildNtile(windowFuncDesc, ordinal) + return buildNtile(ctx, windowFuncDesc, ordinal) case ast.WindowFuncPercentRank: return buildPercentRank(ordinal, orderByCols) case ast.WindowFuncLead: @@ -457,7 +457,7 @@ func buildGroupConcat(ctx sessionctx.Context, aggFuncDesc *aggregation.AggFuncDe default: // The last arg is promised to be a not-null string constant, so the error can be ignored. c, _ := aggFuncDesc.Args[len(aggFuncDesc.Args)-1].(*expression.Constant) - sep, _, err := c.EvalString(nil, chunk.Row{}) + sep, _, err := c.EvalString(ctx, chunk.Row{}) // This err should never happen. if err != nil { panic(fmt.Sprintf("Error happened when buildGroupConcat: %s", err.Error())) @@ -668,22 +668,22 @@ func buildCumeDist(ordinal int, orderByCols []*expression.Column) AggFunc { return r } -func buildNthValue(aggFuncDesc *aggregation.AggFuncDesc, ordinal int) AggFunc { +func buildNthValue(ctx sessionctx.Context, aggFuncDesc *aggregation.AggFuncDesc, ordinal int) AggFunc { base := baseAggFunc{ args: aggFuncDesc.Args, ordinal: ordinal, } // Already checked when building the function description. - nth, _, _ := expression.GetUint64FromConstant(aggFuncDesc.Args[1]) + nth, _, _ := expression.GetUint64FromConstant(ctx, aggFuncDesc.Args[1]) return &nthValue{baseAggFunc: base, tp: aggFuncDesc.RetTp, nth: nth} } -func buildNtile(aggFuncDes *aggregation.AggFuncDesc, ordinal int) AggFunc { +func buildNtile(ctx sessionctx.Context, aggFuncDes *aggregation.AggFuncDesc, ordinal int) AggFunc { base := baseAggFunc{ args: aggFuncDes.Args, ordinal: ordinal, } - n, _, _ := expression.GetUint64FromConstant(aggFuncDes.Args[0]) + n, _, _ := expression.GetUint64FromConstant(ctx, aggFuncDes.Args[0]) return &ntile{baseAggFunc: base, n: n} } @@ -697,7 +697,7 @@ func buildPercentRank(ordinal int, orderByCols []*expression.Column) AggFunc { func buildLeadLag(ctx sessionctx.Context, aggFuncDesc *aggregation.AggFuncDesc, ordinal int) baseLeadLag { offset := uint64(1) if len(aggFuncDesc.Args) >= 2 { - offset, _, _ = expression.GetUint64FromConstant(aggFuncDesc.Args[1]) + offset, _, _ = expression.GetUint64FromConstant(ctx, aggFuncDesc.Args[1]) } var defaultExpr expression.Expression defaultExpr = expression.NewNull() diff --git a/pkg/executor/aggfuncs/func_first_row.go b/pkg/executor/aggfuncs/func_first_row.go index d7188987702e0..a4b2d7353a617 100644 --- a/pkg/executor/aggfuncs/func_first_row.go +++ b/pkg/executor/aggfuncs/func_first_row.go @@ -513,13 +513,13 @@ func (*firstRow4Enum) ResetPartialResult(pr PartialResult) { p.isNull, p.gotFirstRow = false, false } -func (e *firstRow4Enum) UpdatePartialResult(_ sessionctx.Context, rowsInGroup []chunk.Row, pr PartialResult) (memDelta int64, err error) { +func (e *firstRow4Enum) UpdatePartialResult(ctx sessionctx.Context, rowsInGroup []chunk.Row, pr PartialResult) (memDelta int64, err error) { p := (*partialResult4FirstRowEnum)(pr) if p.gotFirstRow { return memDelta, nil } if len(rowsInGroup) > 0 { - d, err := e.args[0].Eval(rowsInGroup[0]) + d, err := e.args[0].Eval(ctx, rowsInGroup[0]) if err != nil { return memDelta, err } @@ -560,13 +560,13 @@ func (*firstRow4Set) ResetPartialResult(pr PartialResult) { p.isNull, p.gotFirstRow = false, false } -func (e *firstRow4Set) UpdatePartialResult(_ sessionctx.Context, rowsInGroup []chunk.Row, pr PartialResult) (memDelta int64, err error) { +func (e *firstRow4Set) UpdatePartialResult(ctx sessionctx.Context, rowsInGroup []chunk.Row, pr PartialResult) (memDelta int64, err error) { p := (*partialResult4FirstRowSet)(pr) if p.gotFirstRow { return memDelta, nil } if len(rowsInGroup) > 0 { - d, err := e.args[0].Eval(rowsInGroup[0]) + d, err := e.args[0].Eval(ctx, rowsInGroup[0]) if err != nil { return memDelta, err } diff --git a/pkg/executor/aggfuncs/func_group_concat.go b/pkg/executor/aggfuncs/func_group_concat.go index c67a6d7805972..4412c029ab26c 100644 --- a/pkg/executor/aggfuncs/func_group_concat.go +++ b/pkg/executor/aggfuncs/func_group_concat.go @@ -461,7 +461,7 @@ func (e *groupConcatOrder) UpdatePartialResult(sctx sessionctx.Context, rowsInGr byItems: make([]*types.Datum, 0, len(e.byItems)), } for _, byItem := range e.byItems { - d, err := byItem.Expr.Eval(row) + d, err := byItem.Expr.Eval(sctx, row) if err != nil { return memDelta, err } @@ -585,7 +585,7 @@ func (e *groupConcatDistinctOrder) UpdatePartialResult(sctx sessionctx.Context, byItems: make([]*types.Datum, 0, len(e.byItems)), } for _, byItem := range e.byItems { - d, err := byItem.Expr.Eval(row) + d, err := byItem.Expr.Eval(sctx, row) if err != nil { return memDelta, err } diff --git a/pkg/executor/aggfuncs/func_group_concat_test.go b/pkg/executor/aggfuncs/func_group_concat_test.go index ba564372d4e5d..dc3e805440cbc 100644 --- a/pkg/executor/aggfuncs/func_group_concat_test.go +++ b/pkg/executor/aggfuncs/func_group_concat_test.go @@ -23,6 +23,7 @@ import ( "github.com/pingcap/tidb/pkg/parser/ast" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/planner/util" + "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/chunk" @@ -83,7 +84,7 @@ func TestMemGroupConcat(t *testing.T) { } } -func groupConcatMultiArgsUpdateMemDeltaGens(srcChk *chunk.Chunk, dataType []*types.FieldType, byItems []*util.ByItems) (memDeltas []int64, err error) { +func groupConcatMultiArgsUpdateMemDeltaGens(ctx sessionctx.Context, srcChk *chunk.Chunk, dataType []*types.FieldType, byItems []*util.ByItems) (memDeltas []int64, err error) { memDeltas = make([]int64, 0) buffer := new(bytes.Buffer) valBuffer := new(bytes.Buffer) @@ -112,7 +113,7 @@ func groupConcatMultiArgsUpdateMemDeltaGens(srcChk *chunk.Chunk, dataType []*typ return memDeltas, nil } -func groupConcatOrderMultiArgsUpdateMemDeltaGens(srcChk *chunk.Chunk, dataType []*types.FieldType, byItems []*util.ByItems) (memDeltas []int64, err error) { +func groupConcatOrderMultiArgsUpdateMemDeltaGens(ctx sessionctx.Context, srcChk *chunk.Chunk, dataType []*types.FieldType, byItems []*util.ByItems) (memDeltas []int64, err error) { memDeltas = make([]int64, 0) for i := 0; i < srcChk.NumRows(); i++ { buffer := new(bytes.Buffer) @@ -128,7 +129,7 @@ func groupConcatOrderMultiArgsUpdateMemDeltaGens(srcChk *chunk.Chunk, dataType [ } memDelta := int64(buffer.Cap() - oldMemSize) for _, byItem := range byItems { - fdt, _ := byItem.Expr.Eval(row) + fdt, _ := byItem.Expr.Eval(ctx, row) datumMem := aggfuncs.GetDatumMemSize(&fdt) memDelta += datumMem } @@ -137,7 +138,7 @@ func groupConcatOrderMultiArgsUpdateMemDeltaGens(srcChk *chunk.Chunk, dataType [ return memDeltas, nil } -func groupConcatDistinctMultiArgsUpdateMemDeltaGens(srcChk *chunk.Chunk, dataType []*types.FieldType, byItems []*util.ByItems) (memDeltas []int64, err error) { +func groupConcatDistinctMultiArgsUpdateMemDeltaGens(ctx sessionctx.Context, srcChk *chunk.Chunk, dataType []*types.FieldType, byItems []*util.ByItems) (memDeltas []int64, err error) { valSet := set.NewStringSet() buffer := new(bytes.Buffer) valsBuf := new(bytes.Buffer) @@ -175,7 +176,7 @@ func groupConcatDistinctMultiArgsUpdateMemDeltaGens(srcChk *chunk.Chunk, dataTyp return memDeltas, nil } -func groupConcatDistinctOrderMultiArgsUpdateMemDeltaGens(srcChk *chunk.Chunk, dataType []*types.FieldType, byItems []*util.ByItems) (memDeltas []int64, err error) { +func groupConcatDistinctOrderMultiArgsUpdateMemDeltaGens(ctx sessionctx.Context, srcChk *chunk.Chunk, dataType []*types.FieldType, byItems []*util.ByItems) (memDeltas []int64, err error) { valSet := set.NewStringSet() var encodeBytesBuffer []byte for i := 0; i < srcChk.NumRows(); i++ { @@ -201,7 +202,7 @@ func groupConcatDistinctOrderMultiArgsUpdateMemDeltaGens(srcChk *chunk.Chunk, da valSet.Insert(joinedVal) memDelta := int64(len(joinedVal) + (valsBuf.Cap() + cap(encodeBytesBuffer) - oldMemSize)) for _, byItem := range byItems { - fdt, _ := byItem.Expr.Eval(row) + fdt, _ := byItem.Expr.Eval(ctx, row) datumMem := aggfuncs.GetDatumMemSize(&fdt) memDelta += datumMem } diff --git a/pkg/executor/aggfuncs/func_json_arrayagg.go b/pkg/executor/aggfuncs/func_json_arrayagg.go index 46c33aa3b3ab8..ee73184bcb0d3 100644 --- a/pkg/executor/aggfuncs/func_json_arrayagg.go +++ b/pkg/executor/aggfuncs/func_json_arrayagg.go @@ -62,10 +62,10 @@ func (e *jsonArrayagg) AppendFinalResult2Chunk(_ sessionctx.Context, pr PartialR return nil } -func (e *jsonArrayagg) UpdatePartialResult(_ sessionctx.Context, rowsInGroup []chunk.Row, pr PartialResult) (memDelta int64, err error) { +func (e *jsonArrayagg) UpdatePartialResult(ctx sessionctx.Context, rowsInGroup []chunk.Row, pr PartialResult) (memDelta int64, err error) { p := (*partialResult4JsonArrayagg)(pr) for _, row := range rowsInGroup { - item, err := e.args[0].Eval(row) + item, err := e.args[0].Eval(ctx, row) if err != nil { return 0, errors.Trace(err) } diff --git a/pkg/executor/aggfuncs/func_json_objectagg.go b/pkg/executor/aggfuncs/func_json_objectagg.go index 1df217e11f3ae..6c44e5f999eb7 100644 --- a/pkg/executor/aggfuncs/func_json_objectagg.go +++ b/pkg/executor/aggfuncs/func_json_objectagg.go @@ -86,7 +86,7 @@ func (e *jsonObjectAgg) UpdatePartialResult(sctx sessionctx.Context, rowsInGroup } key = strings.Clone(key) - value, err := e.args[1].Eval(row) + value, err := e.args[1].Eval(sctx, row) if err != nil { return 0, errors.Trace(err) } diff --git a/pkg/executor/aggfuncs/func_json_objectagg_test.go b/pkg/executor/aggfuncs/func_json_objectagg_test.go index ef6cfc73ec8be..dd3d3ed0bd62a 100644 --- a/pkg/executor/aggfuncs/func_json_objectagg_test.go +++ b/pkg/executor/aggfuncs/func_json_objectagg_test.go @@ -23,6 +23,7 @@ import ( "github.com/pingcap/tidb/pkg/parser/charset" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/planner/util" + "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/hack" @@ -205,7 +206,7 @@ func TestMemJsonObjectagg(t *testing.T) { } } -func jsonMultiArgsMemDeltaGens(srcChk *chunk.Chunk, dataTypes []*types.FieldType, byItems []*util.ByItems) (memDeltas []int64, err error) { +func jsonMultiArgsMemDeltaGens(_ sessionctx.Context, srcChk *chunk.Chunk, dataTypes []*types.FieldType, byItems []*util.ByItems) (memDeltas []int64, err error) { memDeltas = make([]int64, 0) m := make(map[string]bool) for i := 0; i < srcChk.NumRows(); i++ { diff --git a/pkg/executor/aggfuncs/func_max_min.go b/pkg/executor/aggfuncs/func_max_min.go index 17ec3de9cdb5a..9240dfd385e6b 100644 --- a/pkg/executor/aggfuncs/func_max_min.go +++ b/pkg/executor/aggfuncs/func_max_min.go @@ -1478,10 +1478,10 @@ func (e *maxMin4Enum) AppendFinalResult2Chunk(_ sessionctx.Context, pr PartialRe return nil } -func (e *maxMin4Enum) UpdatePartialResult(_ sessionctx.Context, rowsInGroup []chunk.Row, pr PartialResult) (memDelta int64, err error) { +func (e *maxMin4Enum) UpdatePartialResult(ctx sessionctx.Context, rowsInGroup []chunk.Row, pr PartialResult) (memDelta int64, err error) { p := (*partialResult4MaxMinEnum)(pr) for _, row := range rowsInGroup { - d, err := e.args[0].Eval(row) + d, err := e.args[0].Eval(ctx, row) if err != nil { return memDelta, err } @@ -1545,10 +1545,10 @@ func (e *maxMin4Set) AppendFinalResult2Chunk(_ sessionctx.Context, pr PartialRes return nil } -func (e *maxMin4Set) UpdatePartialResult(_ sessionctx.Context, rowsInGroup []chunk.Row, pr PartialResult) (memDelta int64, err error) { +func (e *maxMin4Set) UpdatePartialResult(ctx sessionctx.Context, rowsInGroup []chunk.Row, pr PartialResult) (memDelta int64, err error) { p := (*partialResult4MaxMinSet)(pr) for _, row := range rowsInGroup { - d, err := e.args[0].Eval(row) + d, err := e.args[0].Eval(ctx, row) if err != nil { return memDelta, err } diff --git a/pkg/executor/aggregate/agg_util.go b/pkg/executor/aggregate/agg_util.go index 5508fa0b2665e..5dce3eb5f7db8 100644 --- a/pkg/executor/aggregate/agg_util.go +++ b/pkg/executor/aggregate/agg_util.go @@ -71,6 +71,7 @@ func GetGroupKey(ctx sessionctx.Context, input *chunk.Chunk, groupKey [][]byte, groupKey = append(groupKey, make([]byte, 0, 10*len(groupByItems))) } + errCtx := ctx.GetSessionVars().StmtCtx.ErrCtx() for _, item := range groupByItems { tp := item.GetType() @@ -102,7 +103,8 @@ func GetGroupKey(ctx sessionctx.Context, input *chunk.Chunk, groupKey [][]byte, tp = &newTp } - groupKey, err = codec.HashGroupKey(ctx.GetSessionVars().StmtCtx, input.NumRows(), buf, groupKey, tp) + groupKey, err = codec.HashGroupKey(ctx.GetSessionVars().StmtCtx.TimeZone(), input.NumRows(), buf, groupKey, tp) + err = errCtx.HandleError(err) if err != nil { expression.PutColumn(buf) return nil, err diff --git a/pkg/executor/analyze_col.go b/pkg/executor/analyze_col.go index 3d592e1506bb8..5727d4ef2e7c2 100644 --- a/pkg/executor/analyze_col.go +++ b/pkg/executor/analyze_col.go @@ -266,7 +266,7 @@ func (e *AnalyzeColumnsExec) buildStats(ranges []*ranger.Range, needExtStats boo if e.StatsVersion < 2 { hg, err = statistics.BuildColumn(e.ctx, int64(e.opts[ast.AnalyzeOptNumBuckets]), col.ID, collectors[i], &col.FieldType) } else { - hg, topn, err = statistics.BuildHistAndTopN(e.ctx, int(e.opts[ast.AnalyzeOptNumBuckets]), int(e.opts[ast.AnalyzeOptNumTopN]), col.ID, collectors[i], &col.FieldType, true, nil) + hg, topn, err = statistics.BuildHistAndTopN(e.ctx, int(e.opts[ast.AnalyzeOptNumBuckets]), int(e.opts[ast.AnalyzeOptNumTopN]), col.ID, collectors[i], &col.FieldType, true, nil, true) topNs = append(topNs, topn) } if err != nil { diff --git a/pkg/executor/analyze_col_v2.go b/pkg/executor/analyze_col_v2.go index fb81b5e9f568f..279b2ea997e91 100644 --- a/pkg/executor/analyze_col_v2.go +++ b/pkg/executor/analyze_col_v2.go @@ -795,6 +795,7 @@ workLoop: // 8 is size of reference, 8 is the size of "b := make([]byte, 0, 8)" collectorMemSize := int64(sampleNum) * (8 + statistics.EmptySampleItemSize + 8) e.memTracker.Consume(collectorMemSize) + errCtx := e.ctx.GetSessionVars().StmtCtx.ErrCtx() indexSampleCollectLoop: for _, row := range task.rootRowCollector.Base().Samples { if len(idx.Columns) == 1 && row.Columns[idx.Columns[0].Offset].IsNull() { @@ -809,14 +810,16 @@ workLoop: if col.Length != types.UnspecifiedLength { row.Columns[col.Offset].Copy(&tmpDatum) ranger.CutDatumByPrefixLen(&tmpDatum, col.Length, &e.colsInfo[col.Offset].FieldType) - b, err = codec.EncodeKey(e.ctx.GetSessionVars().StmtCtx, b, tmpDatum) + b, err = codec.EncodeKey(e.ctx.GetSessionVars().StmtCtx.TimeZone(), b, tmpDatum) + err = errCtx.HandleError(err) if err != nil { resultCh <- err continue workLoop } continue } - b, err = codec.EncodeKey(e.ctx.GetSessionVars().StmtCtx, b, row.Columns[col.Offset]) + b, err = codec.EncodeKey(e.ctx.GetSessionVars().StmtCtx.TimeZone(), b, row.Columns[col.Offset]) + err = errCtx.HandleError(err) if err != nil { resultCh <- err continue workLoop @@ -847,7 +850,7 @@ workLoop: e.memTracker.Release(collector.MemSize) } } - hist, topn, err := statistics.BuildHistAndTopN(e.ctx, int(e.opts[ast.AnalyzeOptNumBuckets]), int(e.opts[ast.AnalyzeOptNumTopN]), task.id, collector, task.tp, task.isColumn, e.memTracker) + hist, topn, err := statistics.BuildHistAndTopN(e.ctx, int(e.opts[ast.AnalyzeOptNumBuckets]), int(e.opts[ast.AnalyzeOptNumTopN]), task.id, collector, task.tp, task.isColumn, e.memTracker, e.ctx.GetSessionVars().EnableExtendedStats) if err != nil { resultCh <- err releaseCollectorMemory() diff --git a/pkg/executor/analyze_global_stats.go b/pkg/executor/analyze_global_stats.go index 3aed3bb4f986a..59d01638524be 100644 --- a/pkg/executor/analyze_global_stats.go +++ b/pkg/executor/analyze_global_stats.go @@ -26,7 +26,6 @@ import ( "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/logutil" "go.uber.org/zap" - "golang.org/x/exp/maps" ) type globalStatsKey struct { @@ -48,17 +47,15 @@ type globalStatsInfo struct { type globalStatsMap map[globalStatsKey]globalStatsInfo func (e *AnalyzeExec) handleGlobalStats(ctx context.Context, globalStatsMap globalStatsMap) error { - globalStatsTableIDs := make(map[int64]int, len(globalStatsMap)) + globalStatsTableIDs := make(map[int64]struct{}, len(globalStatsMap)) for globalStatsID := range globalStatsMap { - globalStatsTableIDs[globalStatsID.tableID]++ + globalStatsTableIDs[globalStatsID.tableID] = struct{}{} } statsHandle := domain.GetDomain(e.Ctx()).StatsHandle() tableIDs := make(map[int64]struct{}, len(globalStatsTableIDs)) - tableAllPartitionStats := make(map[int64]*statistics.Table) - for tableID, count := range globalStatsTableIDs { + for tableID := range globalStatsTableIDs { tableIDs[tableID] = struct{}{} - maps.Clear(tableAllPartitionStats) for globalStatsID, info := range globalStatsMap { if globalStatsID.tableID != tableID { continue @@ -78,20 +75,12 @@ func (e *AnalyzeExec) handleGlobalStats(ctx context.Context, globalStatsMap glob globalOpts = v2Options.FilledOpts } } - var cache map[int64]*statistics.Table - if count > 1 { - cache = tableAllPartitionStats - } else { - cache = nil - } - globalStatsI, err := statsHandle.MergePartitionStats2GlobalStatsByTableID( e.Ctx(), globalOpts, e.Ctx().GetInfoSchema().(infoschema.InfoSchema), globalStatsID.tableID, info.isIndex == 1, info.histIDs, - cache, ) if err != nil { logutil.BgLogger().Warn("merge global stats failed", @@ -132,9 +121,6 @@ func (e *AnalyzeExec) handleGlobalStats(ctx context.Context, globalStatsMap glob }() FinishAnalyzeMergeJob(e.Ctx(), job, mergeStatsErr) } - for _, value := range tableAllPartitionStats { - value.ReleaseAndPutToPool() - } } for tableID := range tableIDs { diff --git a/pkg/executor/analyze_test.go b/pkg/executor/analyze_test.go index d97003a305308..0dd1448acfe05 100644 --- a/pkg/executor/analyze_test.go +++ b/pkg/executor/analyze_test.go @@ -85,10 +85,10 @@ func TestAnalyzeIndexExtractTopN(t *testing.T) { // Construct TopN, should be (1, 1) -> 2 and (1, 2) -> 2 topn := statistics.NewTopN(2) { - key1, err := codec.EncodeKey(tk.Session().GetSessionVars().StmtCtx, nil, types.NewIntDatum(1), types.NewIntDatum(1)) + key1, err := codec.EncodeKey(tk.Session().GetSessionVars().StmtCtx.TimeZone(), nil, types.NewIntDatum(1), types.NewIntDatum(1)) require.NoError(t, err) topn.AppendTopN(key1, 2) - key2, err := codec.EncodeKey(tk.Session().GetSessionVars().StmtCtx, nil, types.NewIntDatum(1), types.NewIntDatum(2)) + key2, err := codec.EncodeKey(tk.Session().GetSessionVars().StmtCtx.TimeZone(), nil, types.NewIntDatum(1), types.NewIntDatum(2)) require.NoError(t, err) topn.AppendTopN(key2, 2) } diff --git a/pkg/executor/batch_checker.go b/pkg/executor/batch_checker.go index 0970145c7dae6..29d48bf345d56 100644 --- a/pkg/executor/batch_checker.go +++ b/pkg/executor/batch_checker.go @@ -234,7 +234,8 @@ func buildHandleFromDatumRow(sctx *stmtctx.StatementContext, row []types.Datum, } pkDts = append(pkDts, d) } - handleBytes, err := codec.EncodeKey(sctx, nil, pkDts...) + handleBytes, err := codec.EncodeKey(sctx.TimeZone(), nil, pkDts...) + err = sctx.HandleError(err) if err != nil { return nil, err } @@ -287,7 +288,7 @@ func getOldRow(ctx context.Context, sctx sessionctx.Context, txn kv.Transaction, // only the virtual column needs fill back. // Insert doesn't fill the generated columns at non-public state. if !col.GeneratedStored { - val, err := genExprs[gIdx].Eval(chunk.MutRowFromDatums(oldRow).ToRow()) + val, err := genExprs[gIdx].Eval(sctx, chunk.MutRowFromDatums(oldRow).ToRow()) if err != nil { return nil, err } diff --git a/pkg/executor/benchmark_test.go b/pkg/executor/benchmark_test.go index 533faf835644e..9aab5de3c2a5d 100644 --- a/pkg/executor/benchmark_test.go +++ b/pkg/executor/benchmark_test.go @@ -16,11 +16,8 @@ package executor import ( "context" - "encoding/base64" "fmt" - "math/rand" "os" - "sort" "strconv" "strings" "sync" @@ -31,6 +28,7 @@ import ( "github.com/pingcap/tidb/pkg/executor/aggfuncs" "github.com/pingcap/tidb/pkg/executor/aggregate" "github.com/pingcap/tidb/pkg/executor/internal/exec" + "github.com/pingcap/tidb/pkg/executor/internal/testutil" "github.com/pingcap/tidb/pkg/executor/sortexec" "github.com/pingcap/tidb/pkg/expression" "github.com/pingcap/tidb/pkg/expression/aggregation" @@ -46,250 +44,15 @@ import ( "github.com/pingcap/tidb/pkg/util/disk" "github.com/pingcap/tidb/pkg/util/memory" "github.com/pingcap/tidb/pkg/util/mock" - "github.com/pingcap/tidb/pkg/util/stringutil" "go.uber.org/zap/zapcore" ) var ( - _ exec.Executor = &mockDataSource{} - _ core.PhysicalPlan = &mockDataPhysicalPlan{} + _ exec.Executor = &testutil.MockDataSource{} + _ core.PhysicalPlan = &testutil.MockDataPhysicalPlan{} wideString = strings.Repeat("x", 5*1024) ) -type mockDataSourceParameters struct { - schema *expression.Schema - genDataFunc func(row int, typ *types.FieldType) interface{} - ndvs []int // number of distinct values on columns[i] and zero represents no limit - orders []bool // columns[i] should be ordered if orders[i] is true - rows int // number of rows the DataSource should output - ctx sessionctx.Context -} - -type mockDataSource struct { - exec.BaseExecutor - p mockDataSourceParameters - genData []*chunk.Chunk - chunks []*chunk.Chunk - chunkPtr int -} - -type mockDataPhysicalPlan struct { - MockPhysicalPlan - schema *expression.Schema - exec exec.Executor -} - -func (mp *mockDataPhysicalPlan) GetExecutor() exec.Executor { - return mp.exec -} - -func (mp *mockDataPhysicalPlan) Schema() *expression.Schema { - return mp.schema -} - -func (mp *mockDataPhysicalPlan) ExplainID() fmt.Stringer { - return stringutil.MemoizeStr(func() string { - return "mockData_0" - }) -} - -func (mp *mockDataPhysicalPlan) ID() int { - return 0 -} - -func (mp *mockDataPhysicalPlan) Stats() *property.StatsInfo { - return nil -} - -func (mp *mockDataPhysicalPlan) SelectBlockOffset() int { - return 0 -} - -// MemoryUsage of mockDataPhysicalPlan is only for testing -func (mp *mockDataPhysicalPlan) MemoryUsage() (sum int64) { - return -} - -func buildMockDataPhysicalPlan(ctx sessionctx.Context, srcExec exec.Executor) *mockDataPhysicalPlan { - return &mockDataPhysicalPlan{ - schema: srcExec.Schema(), - exec: srcExec, - } -} - -func (mds *mockDataSource) genColDatums(col int) (results []interface{}) { - typ := mds.RetFieldTypes()[col] - order := false - if col < len(mds.p.orders) { - order = mds.p.orders[col] - } - rows := mds.p.rows - NDV := 0 - if col < len(mds.p.ndvs) { - NDV = mds.p.ndvs[col] - } - results = make([]interface{}, 0, rows) - if NDV == 0 { - if mds.p.genDataFunc == nil { - for i := 0; i < rows; i++ { - results = append(results, mds.randDatum(typ)) - } - } else { - for i := 0; i < rows; i++ { - results = append(results, mds.p.genDataFunc(i, typ)) - } - } - } else { - datumSet := make(map[string]bool, NDV) - datums := make([]interface{}, 0, NDV) - for len(datums) < NDV { - d := mds.randDatum(typ) - str := fmt.Sprintf("%v", d) - if datumSet[str] { - continue - } - datumSet[str] = true - datums = append(datums, d) - } - - for i := 0; i < rows; i++ { - results = append(results, datums[rand.Intn(NDV)]) - } - } - - if order { - sort.Slice(results, func(i, j int) bool { - switch typ.GetType() { - case mysql.TypeLong, mysql.TypeLonglong: - return results[i].(int64) < results[j].(int64) - case mysql.TypeDouble: - return results[i].(float64) < results[j].(float64) - case mysql.TypeVarString: - return results[i].(string) < results[j].(string) - default: - panic("not implement") - } - }) - } - - return -} - -func (mds *mockDataSource) randDatum(typ *types.FieldType) interface{} { - switch typ.GetType() { - case mysql.TypeLong, mysql.TypeLonglong: - return int64(rand.Int()) - case mysql.TypeFloat: - return rand.Float32() - case mysql.TypeDouble: - return rand.Float64() - case mysql.TypeNewDecimal: - var d types.MyDecimal - return d.FromInt(int64(rand.Int())) - case mysql.TypeVarString: - buff := make([]byte, 10) - rand.Read(buff) - return base64.RawURLEncoding.EncodeToString(buff) - default: - panic("not implement") - } -} - -func (mds *mockDataSource) prepareChunks() { - mds.chunks = make([]*chunk.Chunk, len(mds.genData)) - for i := range mds.chunks { - mds.chunks[i] = mds.genData[i].CopyConstruct() - } - mds.chunkPtr = 0 -} - -func (mds *mockDataSource) Next(ctx context.Context, req *chunk.Chunk) error { - if mds.chunkPtr >= len(mds.chunks) { - req.Reset() - return nil - } - dataChk := mds.chunks[mds.chunkPtr] - dataChk.SwapColumns(req) - mds.chunkPtr++ - return nil -} - -func buildMockDataSource(opt mockDataSourceParameters) *mockDataSource { - baseExec := exec.NewBaseExecutor(opt.ctx, opt.schema, 0) - m := &mockDataSource{baseExec, opt, nil, nil, 0} - rTypes := exec.RetTypes(m) - colData := make([][]interface{}, len(rTypes)) - for i := 0; i < len(rTypes); i++ { - colData[i] = m.genColDatums(i) - } - - m.genData = make([]*chunk.Chunk, (m.p.rows+m.MaxChunkSize()-1)/m.MaxChunkSize()) - for i := range m.genData { - m.genData[i] = chunk.NewChunkWithCapacity(exec.RetTypes(m), m.MaxChunkSize()) - } - - for i := 0; i < m.p.rows; i++ { - idx := i / m.MaxChunkSize() - retTypes := exec.RetTypes(m) - for colIdx := 0; colIdx < len(rTypes); colIdx++ { - switch retTypes[colIdx].GetType() { - case mysql.TypeLong, mysql.TypeLonglong: - m.genData[idx].AppendInt64(colIdx, colData[colIdx][i].(int64)) - case mysql.TypeFloat: - m.genData[idx].AppendFloat32(colIdx, colData[colIdx][i].(float32)) - case mysql.TypeDouble: - m.genData[idx].AppendFloat64(colIdx, colData[colIdx][i].(float64)) - case mysql.TypeNewDecimal: - m.genData[idx].AppendMyDecimal(colIdx, colData[colIdx][i].(*types.MyDecimal)) - case mysql.TypeVarString: - m.genData[idx].AppendString(colIdx, colData[colIdx][i].(string)) - default: - panic("not implement") - } - } - } - return m -} - -func buildMockDataSourceWithIndex(opt mockDataSourceParameters, index []int) *mockDataSource { - opt.orders = make([]bool, len(opt.schema.Columns)) - for _, idx := range index { - opt.orders[idx] = true - } - return buildMockDataSource(opt) -} - -// aggTestCase has a fixed schema (aggCol Double, groupBy LongLong). -type aggTestCase struct { - execType string // "hash" or "stream" - aggFunc string // sum, avg, count .... - groupByNDV int // the number of distinct group-by keys - hasDistinct bool - rows int - concurrency int - dataSourceSorted bool - ctx sessionctx.Context -} - -func (a aggTestCase) columns() []*expression.Column { - return []*expression.Column{ - {Index: 0, RetType: types.NewFieldType(mysql.TypeDouble)}, - {Index: 1, RetType: types.NewFieldType(mysql.TypeLonglong)}, - } -} - -func (a aggTestCase) String() string { - return fmt.Sprintf("(execType:%v, aggFunc:%v, ndv:%v, hasDistinct:%v, rows:%v, concurrency:%v, sorted:%v)", - a.execType, a.aggFunc, a.groupByNDV, a.hasDistinct, a.rows, a.concurrency, a.dataSourceSorted) -} - -func defaultAggTestCase(exec string) *aggTestCase { - ctx := mock.NewContext() - ctx.GetSessionVars().InitChunkSize = variable.DefInitChunkSize - ctx.GetSessionVars().MaxChunkSize = variable.DefMaxChunkSize - return &aggTestCase{exec, ast.AggFuncSum, 1000, false, 10000000, 4, true, ctx} -} - func buildHashAggExecutor(ctx sessionctx.Context, src exec.Executor, schema *expression.Schema, aggFuncs []*aggregation.AggFuncDesc, groupItems []expression.Expression) exec.Executor { plan := new(core.PhysicalHashAgg) @@ -307,7 +70,7 @@ func buildHashAggExecutor(ctx sessionctx.Context, src exec.Executor, schema *exp func buildStreamAggExecutor(ctx sessionctx.Context, srcExec exec.Executor, schema *expression.Schema, aggFuncs []*aggregation.AggFuncDesc, groupItems []expression.Expression, concurrency int, dataSourceSorted bool) exec.Executor { - src := buildMockDataPhysicalPlan(ctx, srcExec) + src := testutil.BuildMockDataPhysicalPlan(ctx, srcExec) sg := new(core.PhysicalStreamAgg) sg.AggFuncs = aggFuncs @@ -354,54 +117,54 @@ func buildStreamAggExecutor(ctx sessionctx.Context, srcExec exec.Executor, schem return b.build(plan) } -func buildAggExecutor(b *testing.B, testCase *aggTestCase, child exec.Executor) exec.Executor { - ctx := testCase.ctx - if testCase.execType == "stream" { - if err := ctx.GetSessionVars().SetSystemVar(variable.TiDBStreamAggConcurrency, fmt.Sprintf("%v", testCase.concurrency)); err != nil { +func buildAggExecutor(b *testing.B, testCase *testutil.AggTestCase, child exec.Executor) exec.Executor { + ctx := testCase.Ctx + if testCase.ExecType == "stream" { + if err := ctx.GetSessionVars().SetSystemVar(variable.TiDBStreamAggConcurrency, fmt.Sprintf("%v", testCase.Concurrency)); err != nil { b.Fatal(err) } } else { - if err := ctx.GetSessionVars().SetSystemVar(variable.TiDBHashAggFinalConcurrency, fmt.Sprintf("%v", testCase.concurrency)); err != nil { + if err := ctx.GetSessionVars().SetSystemVar(variable.TiDBHashAggFinalConcurrency, fmt.Sprintf("%v", testCase.Concurrency)); err != nil { b.Fatal(err) } - if err := ctx.GetSessionVars().SetSystemVar(variable.TiDBHashAggPartialConcurrency, fmt.Sprintf("%v", testCase.concurrency)); err != nil { + if err := ctx.GetSessionVars().SetSystemVar(variable.TiDBHashAggPartialConcurrency, fmt.Sprintf("%v", testCase.Concurrency)); err != nil { b.Fatal(err) } } - childCols := testCase.columns() + childCols := testCase.Columns() schema := expression.NewSchema(childCols...) groupBy := []expression.Expression{childCols[1]} - aggFunc, err := aggregation.NewAggFuncDesc(testCase.ctx, testCase.aggFunc, []expression.Expression{childCols[0]}, testCase.hasDistinct) + aggFunc, err := aggregation.NewAggFuncDesc(testCase.Ctx, testCase.AggFunc, []expression.Expression{childCols[0]}, testCase.HasDistinct) if err != nil { b.Fatal(err) } aggFuncs := []*aggregation.AggFuncDesc{aggFunc} var aggExec exec.Executor - switch testCase.execType { + switch testCase.ExecType { case "hash": - aggExec = buildHashAggExecutor(testCase.ctx, child, schema, aggFuncs, groupBy) + aggExec = buildHashAggExecutor(testCase.Ctx, child, schema, aggFuncs, groupBy) case "stream": - aggExec = buildStreamAggExecutor(testCase.ctx, child, schema, aggFuncs, groupBy, testCase.concurrency, testCase.dataSourceSorted) + aggExec = buildStreamAggExecutor(testCase.Ctx, child, schema, aggFuncs, groupBy, testCase.Concurrency, testCase.DataSourceSorted) default: b.Fatal("not implement") } return aggExec } -func benchmarkAggExecWithCase(b *testing.B, casTest *aggTestCase) { - if err := casTest.ctx.GetSessionVars().SetSystemVar(variable.TiDBStreamAggConcurrency, fmt.Sprintf("%v", casTest.concurrency)); err != nil { +func benchmarkAggExecWithCase(b *testing.B, casTest *testutil.AggTestCase) { + if err := casTest.Ctx.GetSessionVars().SetSystemVar(variable.TiDBStreamAggConcurrency, fmt.Sprintf("%v", casTest.Concurrency)); err != nil { b.Fatal(err) } - cols := casTest.columns() - dataSource := buildMockDataSource(mockDataSourceParameters{ - schema: expression.NewSchema(cols...), - ndvs: []int{0, casTest.groupByNDV}, - orders: []bool{false, casTest.dataSourceSorted}, - rows: casTest.rows, - ctx: casTest.ctx, + cols := casTest.Columns() + dataSource := testutil.BuildMockDataSource(testutil.MockDataSourceParameters{ + DataSchema: expression.NewSchema(cols...), + Ndvs: []int{0, casTest.GroupByNDV}, + Orders: []bool{false, casTest.DataSourceSorted}, + Rows: casTest.Rows, + Ctx: casTest.Ctx, }) b.ResetTimer() @@ -410,7 +173,7 @@ func benchmarkAggExecWithCase(b *testing.B, casTest *aggTestCase) { aggExec := buildAggExecutor(b, casTest, dataSource) tmpCtx := context.Background() chk := exec.NewFirstChunk(aggExec) - dataSource.prepareChunks() + dataSource.PrepareChunks() b.StartTimer() if err := aggExec.Open(tmpCtx); err != nil { @@ -440,10 +203,10 @@ func BenchmarkShuffleStreamAggRows(b *testing.B) { for _, row := range rows { for _, con := range concurrencies { for _, sorted := range sortTypes { - cas := defaultAggTestCase("stream") - cas.rows = row - cas.dataSourceSorted = sorted - cas.concurrency = con + cas := testutil.DefaultAggTestCase("stream") + cas.Rows = row + cas.DataSourceSorted = sorted + cas.Concurrency = con b.Run(fmt.Sprintf("%v", cas), func(b *testing.B) { benchmarkAggExecWithCase(b, cas) }) @@ -457,9 +220,9 @@ func BenchmarkHashAggRows(b *testing.B) { concurrencies := []int{1, 4, 8, 15, 20, 30, 40} for _, row := range rows { for _, con := range concurrencies { - cas := defaultAggTestCase("hash") - cas.rows = row - cas.concurrency = con + cas := testutil.DefaultAggTestCase("hash") + cas.Rows = row + cas.Concurrency = con b.Run(fmt.Sprintf("%v", cas), func(b *testing.B) { benchmarkAggExecWithCase(b, cas) }) @@ -471,8 +234,8 @@ func BenchmarkAggGroupByNDV(b *testing.B) { NDVs := []int{10, 100, 1000, 10000, 100000, 1000000, 10000000} for _, NDV := range NDVs { for _, exec := range []string{"hash", "stream"} { - cas := defaultAggTestCase(exec) - cas.groupByNDV = NDV + cas := testutil.DefaultAggTestCase(exec) + cas.GroupByNDV = NDV b.Run(fmt.Sprintf("%v", cas), func(b *testing.B) { benchmarkAggExecWithCase(b, cas) }) @@ -484,8 +247,8 @@ func BenchmarkAggConcurrency(b *testing.B) { concs := []int{1, 4, 8, 15, 20, 30, 40} for _, con := range concs { for _, exec := range []string{"hash", "stream"} { - cas := defaultAggTestCase(exec) - cas.concurrency = con + cas := testutil.DefaultAggTestCase(exec) + cas.Concurrency = con b.Run(fmt.Sprintf("%v", cas), func(b *testing.B) { benchmarkAggExecWithCase(b, cas) }) @@ -499,9 +262,9 @@ func BenchmarkAggDistinct(b *testing.B) { for _, row := range rows { for _, exec := range []string{"hash", "stream"} { for _, distinct := range distincts { - cas := defaultAggTestCase(exec) - cas.rows = row - cas.hasDistinct = distinct + cas := testutil.DefaultAggTestCase(exec) + cas.Rows = row + cas.HasDistinct = distinct b.Run(fmt.Sprintf("%v", cas), func(b *testing.B) { benchmarkAggExecWithCase(b, cas) }) @@ -511,7 +274,7 @@ func BenchmarkAggDistinct(b *testing.B) { } func buildWindowExecutor(ctx sessionctx.Context, windowFunc string, funcs int, frame *core.WindowFrame, srcExec exec.Executor, schema *expression.Schema, partitionBy []*expression.Column, concurrency int, dataSourceSorted bool) exec.Executor { - src := buildMockDataPhysicalPlan(ctx, srcExec) + src := testutil.BuildMockDataPhysicalPlan(ctx, srcExec) win := new(core.PhysicalWindow) win.WindowFuncDescs = make([]*aggregation.WindowFuncDesc, 0) winSchema := schema.Clone() @@ -588,66 +351,33 @@ func buildWindowExecutor(ctx sessionctx.Context, windowFunc string, funcs int, f return exec } -// windowTestCase has a fixed schema (col Double, partitionBy LongLong, rawData VarString(16), col LongLong). -type windowTestCase struct { - windowFunc string - numFunc int // The number of windowFuncs. Default: 1. - frame *core.WindowFrame - ndv int // the number of distinct group-by keys - rows int - concurrency int - pipelined int - dataSourceSorted bool - ctx sessionctx.Context - rawDataSmall string - columns []*expression.Column // the columns of mock schema -} - -func (a windowTestCase) String() string { - return fmt.Sprintf("(func:%v, aggColType:%s, numFunc:%v, ndv:%v, rows:%v, sorted:%v, concurrency:%v, pipelined:%v)", - a.windowFunc, a.columns[0].RetType, a.numFunc, a.ndv, a.rows, a.dataSourceSorted, a.concurrency, a.pipelined) -} - -func defaultWindowTestCase() *windowTestCase { - ctx := mock.NewContext() - ctx.GetSessionVars().InitChunkSize = variable.DefInitChunkSize - ctx.GetSessionVars().MaxChunkSize = variable.DefMaxChunkSize - return &windowTestCase{ast.WindowFuncRowNumber, 1, nil, 1000, 10000000, 1, 0, true, ctx, strings.Repeat("x", 16), - []*expression.Column{ - {Index: 0, RetType: types.NewFieldType(mysql.TypeDouble)}, - {Index: 1, RetType: types.NewFieldType(mysql.TypeLonglong)}, - {Index: 2, RetType: types.NewFieldType(mysql.TypeVarString)}, - {Index: 3, RetType: types.NewFieldType(mysql.TypeLonglong)}, - }} -} - -func benchmarkWindowExecWithCase(b *testing.B, casTest *windowTestCase) { - ctx := casTest.ctx - if err := ctx.GetSessionVars().SetSystemVar(variable.TiDBWindowConcurrency, fmt.Sprintf("%v", casTest.concurrency)); err != nil { +func benchmarkWindowExecWithCase(b *testing.B, casTest *testutil.WindowTestCase) { + ctx := casTest.Ctx + if err := ctx.GetSessionVars().SetSystemVar(variable.TiDBWindowConcurrency, fmt.Sprintf("%v", casTest.Concurrency)); err != nil { b.Fatal(err) } - if err := ctx.GetSessionVars().SetSystemVar(variable.TiDBEnablePipelinedWindowFunction, fmt.Sprintf("%v", casTest.pipelined)); err != nil { + if err := ctx.GetSessionVars().SetSystemVar(variable.TiDBEnablePipelinedWindowFunction, fmt.Sprintf("%v", casTest.Pipelined)); err != nil { b.Fatal(err) } - cols := casTest.columns - dataSource := buildMockDataSource(mockDataSourceParameters{ - schema: expression.NewSchema(cols...), - ndvs: []int{0, casTest.ndv, 0, 0}, - orders: []bool{false, casTest.dataSourceSorted, false, false}, - rows: casTest.rows, - ctx: casTest.ctx, + cols := casTest.Columns + dataSource := testutil.BuildMockDataSource(testutil.MockDataSourceParameters{ + DataSchema: expression.NewSchema(cols...), + Ndvs: []int{0, casTest.Ndv, 0, 0}, + Orders: []bool{false, casTest.DataSourceSorted, false, false}, + Rows: casTest.Rows, + Ctx: casTest.Ctx, }) b.ResetTimer() for i := 0; i < b.N; i++ { b.StopTimer() // prepare a new window-executor - childCols := casTest.columns + childCols := casTest.Columns schema := expression.NewSchema(childCols...) - windowExec := buildWindowExecutor(casTest.ctx, casTest.windowFunc, casTest.numFunc, casTest.frame, dataSource, schema, childCols[1:2], casTest.concurrency, casTest.dataSourceSorted) + windowExec := buildWindowExecutor(casTest.Ctx, casTest.WindowFunc, casTest.NumFunc, casTest.Frame, dataSource, schema, childCols[1:2], casTest.Concurrency, casTest.DataSourceSorted) tmpCtx := context.Background() chk := exec.NewFirstChunk(windowExec) - dataSource.prepareChunks() + dataSource.PrepareChunks() b.StartTimer() if err := windowExec.Open(tmpCtx); err != nil { @@ -677,13 +407,13 @@ func baseBenchmarkWindowRows(b *testing.B, pipelined int) { for _, row := range rows { for _, ndv := range ndvs { for _, con := range concs { - cas := defaultWindowTestCase() - cas.rows = row - cas.ndv = ndv - cas.concurrency = con - cas.dataSourceSorted = false - cas.windowFunc = ast.WindowFuncRowNumber // cheapest - cas.pipelined = pipelined + cas := testutil.DefaultWindowTestCase() + cas.Rows = row + cas.Ndv = ndv + cas.Concurrency = con + cas.DataSourceSorted = false + cas.WindowFunc = ast.WindowFuncRowNumber // cheapest + cas.Pipelined = pipelined b.Run(fmt.Sprintf("%v", cas), func(b *testing.B) { benchmarkWindowExecWithCase(b, cas) }) @@ -715,13 +445,13 @@ func baseBenchmarkWindowFunctions(b *testing.B, pipelined int) { concs := []int{1, 4} for _, windowFunc := range windowFuncs { for _, con := range concs { - cas := defaultWindowTestCase() - cas.rows = 100000 - cas.ndv = 1000 - cas.concurrency = con - cas.dataSourceSorted = false - cas.windowFunc = windowFunc - cas.pipelined = pipelined + cas := testutil.DefaultWindowTestCase() + cas.Rows = 100000 + cas.Ndv = 1000 + cas.Concurrency = con + cas.DataSourceSorted = false + cas.WindowFunc = windowFunc + cas.Pipelined = pipelined b.Run(fmt.Sprintf("%v", cas), func(b *testing.B) { benchmarkWindowExecWithCase(b, cas) }) @@ -750,17 +480,17 @@ func baseBenchmarkWindowFunctionsWithFrame(b *testing.B, pipelined int) { for _, sorted := range sortTypes { for _, numFunc := range numFuncs { for _, con := range concs { - cas := defaultWindowTestCase() - cas.rows = 100000 - cas.ndv = 1000 - cas.concurrency = con - cas.dataSourceSorted = sorted - cas.windowFunc = windowFunc - cas.numFunc = numFunc + cas := testutil.DefaultWindowTestCase() + cas.Rows = 100000 + cas.Ndv = 1000 + cas.Concurrency = con + cas.DataSourceSorted = sorted + cas.WindowFunc = windowFunc + cas.NumFunc = numFunc if i < len(frames) { - cas.frame = frames[i] + cas.Frame = frames[i] } - cas.pipelined = pipelined + cas.Pipelined = pipelined b.Run(fmt.Sprintf("%v", cas), func(b *testing.B) { benchmarkWindowExecWithCase(b, cas) }) @@ -779,15 +509,15 @@ func baseBenchmarkWindowFunctionsAggWindowProcessorAboutFrame(b *testing.B, pipe b.ReportAllocs() windowFunc := ast.AggFuncMax frame := &core.WindowFrame{Type: ast.Rows, Start: &core.FrameBound{UnBounded: true}, End: &core.FrameBound{UnBounded: true}} - cas := defaultWindowTestCase() - cas.rows = 10000 - cas.ndv = 10 - cas.concurrency = 1 - cas.dataSourceSorted = false - cas.windowFunc = windowFunc - cas.numFunc = 1 - cas.frame = frame - cas.pipelined = pipelined + cas := testutil.DefaultWindowTestCase() + cas.Rows = 10000 + cas.Ndv = 10 + cas.Concurrency = 1 + cas.DataSourceSorted = false + cas.WindowFunc = windowFunc + cas.NumFunc = 1 + cas.Frame = frame + cas.Pipelined = pipelined b.Run(fmt.Sprintf("%v", cas), func(b *testing.B) { benchmarkWindowExecWithCase(b, cas) }) @@ -823,14 +553,14 @@ func baseBenchmarkWindowFunctionsWithSlidingWindow(b *testing.B, frameType ast.F End: &core.FrameBound{Type: ast.Following, Num: 10}, } for _, windowFunc := range windowFuncs { - cas := defaultWindowTestCase() - cas.ctx.GetSessionVars().WindowingUseHighPrecision = false - cas.rows = row - cas.ndv = ndv - cas.windowFunc = windowFunc.aggFunc - cas.frame = frame - cas.columns[0].RetType.SetType(windowFunc.aggColTypes) - cas.pipelined = pipelined + cas := testutil.DefaultWindowTestCase() + cas.Ctx.GetSessionVars().WindowingUseHighPrecision = false + cas.Rows = row + cas.Ndv = ndv + cas.WindowFunc = windowFunc.aggFunc + cas.Frame = frame + cas.Columns[0].RetType.SetType(windowFunc.aggColTypes) + cas.Pipelined = pipelined b.Run(fmt.Sprintf("%v", cas), func(b *testing.B) { benchmarkWindowExecWithCase(b, cas) }) @@ -934,7 +664,7 @@ func prepare4HashJoin(testCase *hashJoinTestCase, innerExec, outerExec exec.Exec }, } - childrenUsedSchema := markChildrenUsedColsForTest(e.Schema(), e.Children(0).Schema(), e.Children(1).Schema()) + childrenUsedSchema := markChildrenUsedColsForTest(testCase.ctx, e.Schema(), e.Children(0).Schema(), e.Children(1).Schema()) defaultValues := make([]types.Datum, e.buildWorker.buildSideExec.Schema().Len()) lhsTypes, rhsTypes := exec.RetTypes(innerExec), exec.RetTypes(outerExec) for i := uint(0); i < e.concurrency; i++ { @@ -963,7 +693,7 @@ func prepare4HashJoin(testCase *hashJoinTestCase, innerExec, outerExec exec.Exec // markChildrenUsedColsForTest compares each child with the output schema, and mark // each column of the child is used by output or not. -func markChildrenUsedColsForTest(outputSchema *expression.Schema, childSchemas ...*expression.Schema) (childrenUsed [][]bool) { +func markChildrenUsedColsForTest(ctx sessionctx.Context, outputSchema *expression.Schema, childSchemas ...*expression.Schema) (childrenUsed [][]bool) { childrenUsed = make([][]bool, 0, len(childSchemas)) markedOffsets := make(map[int]struct{}) for _, col := range outputSchema.Columns { @@ -980,17 +710,17 @@ func markChildrenUsedColsForTest(outputSchema *expression.Schema, childSchemas . childrenUsed = append(childrenUsed, used) } for _, child := range childSchemas { - used := expression.GetUsedList(outputSchema.Columns, child) + used := expression.GetUsedList(ctx, outputSchema.Columns, child) childrenUsed = append(childrenUsed, used) } return } func benchmarkHashJoinExecWithCase(b *testing.B, casTest *hashJoinTestCase) { - opt1 := mockDataSourceParameters{ - rows: casTest.rows, - ctx: casTest.ctx, - genDataFunc: func(row int, typ *types.FieldType) interface{} { + opt1 := testutil.MockDataSourceParameters{ + Rows: casTest.rows, + Ctx: casTest.ctx, + GenDataFunc: func(row int, typ *types.FieldType) interface{} { switch typ.GetType() { case mysql.TypeLong, mysql.TypeLonglong: return int64(row) @@ -1004,10 +734,10 @@ func benchmarkHashJoinExecWithCase(b *testing.B, casTest *hashJoinTestCase) { }, } opt2 := opt1 - opt1.schema = expression.NewSchema(casTest.columns()...) - opt2.schema = expression.NewSchema(casTest.columns()...) - dataSource1 := buildMockDataSource(opt1) - dataSource2 := buildMockDataSource(opt2) + opt1.DataSchema = expression.NewSchema(casTest.columns()...) + opt2.DataSchema = expression.NewSchema(casTest.columns()...) + dataSource1 := testutil.BuildMockDataSource(opt1) + dataSource2 := testutil.BuildMockDataSource(opt2) // Test spill result. benchmarkHashJoinExec(b, casTest, dataSource1, dataSource2, true) b.ResetTimer() @@ -1016,13 +746,13 @@ func benchmarkHashJoinExecWithCase(b *testing.B, casTest *hashJoinTestCase) { } } -func benchmarkHashJoinExec(b *testing.B, casTest *hashJoinTestCase, opt1, opt2 *mockDataSource, testResult bool) { +func benchmarkHashJoinExec(b *testing.B, casTest *hashJoinTestCase, opt1, opt2 *testutil.MockDataSource, testResult bool) { b.StopTimer() executor := prepare4HashJoin(casTest, opt1, opt2) tmpCtx := context.Background() chk := exec.NewFirstChunk(executor) - opt1.prepareChunks() - opt2.prepareChunks() + opt1.PrepareChunks() + opt2.PrepareChunks() totalRow := 0 b.StartTimer() @@ -1197,11 +927,11 @@ func BenchmarkOuterHashJoinExec(b *testing.B) { } func benchmarkBuildHashTableForList(b *testing.B, casTest *hashJoinTestCase) { - opt := mockDataSourceParameters{ - schema: expression.NewSchema(casTest.columns()...), - rows: casTest.rows, - ctx: casTest.ctx, - genDataFunc: func(row int, typ *types.FieldType) interface{} { + opt := testutil.MockDataSourceParameters{ + DataSchema: expression.NewSchema(casTest.columns()...), + Rows: casTest.rows, + Ctx: casTest.ctx, + GenDataFunc: func(row int, typ *types.FieldType) interface{} { switch typ.GetType() { case mysql.TypeLong, mysql.TypeLonglong: return int64(row) @@ -1212,10 +942,10 @@ func benchmarkBuildHashTableForList(b *testing.B, casTest *hashJoinTestCase) { } }, } - dataSource1 := buildMockDataSource(opt) - dataSource2 := buildMockDataSource(opt) + dataSource1 := testutil.BuildMockDataSource(opt) + dataSource2 := testutil.BuildMockDataSource(opt) - dataSource1.prepareChunks() + dataSource1.PrepareChunks() benchmarkBuildHashTable(b, casTest, dataSource1, dataSource2, true) b.ResetTimer() for i := 0; i < b.N; i++ { @@ -1223,7 +953,7 @@ func benchmarkBuildHashTableForList(b *testing.B, casTest *hashJoinTestCase) { } } -func benchmarkBuildHashTable(b *testing.B, casTest *hashJoinTestCase, dataSource1, dataSource2 *mockDataSource, testResult bool) { +func benchmarkBuildHashTable(b *testing.B, casTest *hashJoinTestCase, dataSource1, dataSource2 *testutil.MockDataSource, testResult bool) { b.StopTimer() exec := prepare4HashJoin(casTest, dataSource1, dataSource2) tmpCtx := context.Background() @@ -1232,8 +962,8 @@ func benchmarkBuildHashTable(b *testing.B, casTest *hashJoinTestCase, dataSource } exec.prepared = true - innerResultCh := make(chan *chunk.Chunk, len(dataSource1.chunks)) - for _, chk := range dataSource1.chunks { + innerResultCh := make(chan *chunk.Chunk, len(dataSource1.Chunks)) + for _, chk := range dataSource1.Chunks { innerResultCh <- chk } close(innerResultCh) @@ -1285,21 +1015,21 @@ func BenchmarkBuildHashTableForList(b *testing.B) { } } -type indexJoinTestCase struct { - outerRows int - innerRows int - concurrency int - ctx sessionctx.Context - outerJoinKeyIdx []int - innerJoinKeyIdx []int - outerHashKeyIdx []int - innerHashKeyIdx []int - innerIdx []int - needOuterSort bool - rawData string +type IndexJoinTestCase struct { + OuterRows int + InnerRows int + Concurrency int + Ctx sessionctx.Context + OuterJoinKeyIdx []int + InnerJoinKeyIdx []int + OuterHashKeyIdx []int + InnerHashKeyIdx []int + InnerIdx []int + NeedOuterSort bool + RawData string } -func (tc indexJoinTestCase) columns() []*expression.Column { +func (tc IndexJoinTestCase) Columns() []*expression.Column { return []*expression.Column{ {Index: 0, RetType: types.NewFieldType(mysql.TypeLonglong)}, {Index: 1, RetType: types.NewFieldType(mysql.TypeDouble)}, @@ -1307,45 +1037,45 @@ func (tc indexJoinTestCase) columns() []*expression.Column { } } -func defaultIndexJoinTestCase() *indexJoinTestCase { +func defaultIndexJoinTestCase() *IndexJoinTestCase { ctx := mock.NewContext() ctx.GetSessionVars().InitChunkSize = variable.DefInitChunkSize ctx.GetSessionVars().MaxChunkSize = variable.DefMaxChunkSize ctx.GetSessionVars().SnapshotTS = 1 ctx.GetSessionVars().StmtCtx.MemTracker = memory.NewTracker(-1, -1) ctx.GetSessionVars().StmtCtx.DiskTracker = disk.NewTracker(-1, -1) - tc := &indexJoinTestCase{ - outerRows: 100000, - innerRows: variable.DefMaxChunkSize * 100, - concurrency: 4, - ctx: ctx, - outerJoinKeyIdx: []int{0, 1}, - innerJoinKeyIdx: []int{0, 1}, - outerHashKeyIdx: []int{0, 1}, - innerHashKeyIdx: []int{0, 1}, - innerIdx: []int{0, 1}, - rawData: wideString, + tc := &IndexJoinTestCase{ + OuterRows: 100000, + InnerRows: variable.DefMaxChunkSize * 100, + Concurrency: 4, + Ctx: ctx, + OuterJoinKeyIdx: []int{0, 1}, + InnerJoinKeyIdx: []int{0, 1}, + OuterHashKeyIdx: []int{0, 1}, + InnerHashKeyIdx: []int{0, 1}, + InnerIdx: []int{0, 1}, + RawData: wideString, } return tc } -func (tc indexJoinTestCase) String() string { +func (tc IndexJoinTestCase) String() string { return fmt.Sprintf("(outerRows:%v, innerRows:%v, concurency:%v, outerJoinKeyIdx: %v, innerJoinKeyIdx: %v, NeedOuterSort:%v)", - tc.outerRows, tc.innerRows, tc.concurrency, tc.outerJoinKeyIdx, tc.innerJoinKeyIdx, tc.needOuterSort) -} -func (tc indexJoinTestCase) getMockDataSourceOptByRows(rows int) mockDataSourceParameters { - return mockDataSourceParameters{ - schema: expression.NewSchema(tc.columns()...), - rows: rows, - ctx: tc.ctx, - genDataFunc: func(row int, typ *types.FieldType) interface{} { + tc.OuterRows, tc.InnerRows, tc.Concurrency, tc.OuterJoinKeyIdx, tc.InnerJoinKeyIdx, tc.NeedOuterSort) +} +func (tc IndexJoinTestCase) GetMockDataSourceOptByRows(rows int) testutil.MockDataSourceParameters { + return testutil.MockDataSourceParameters{ + DataSchema: expression.NewSchema(tc.Columns()...), + Rows: rows, + Ctx: tc.Ctx, + GenDataFunc: func(row int, typ *types.FieldType) interface{} { switch typ.GetType() { case mysql.TypeLong, mysql.TypeLonglong: return int64(row) case mysql.TypeDouble: return float64(row) case mysql.TypeVarString: - return tc.rawData + return tc.RawData default: panic("not implement") } @@ -1353,8 +1083,8 @@ func (tc indexJoinTestCase) getMockDataSourceOptByRows(rows int) mockDataSourceP } } -func prepare4IndexInnerHashJoin(tc *indexJoinTestCase, outerDS *mockDataSource, innerDS *mockDataSource) (exec.Executor, error) { - outerCols, innerCols := tc.columns(), tc.columns() +func prepare4IndexInnerHashJoin(tc *IndexJoinTestCase, outerDS *testutil.MockDataSource, innerDS *testutil.MockDataSource) (exec.Executor, error) { + outerCols, innerCols := tc.Columns(), tc.Columns() joinSchema := expression.NewSchema(outerCols...) joinSchema.Append(innerCols...) leftTypes, rightTypes := exec.RetTypes(outerDS), exec.RetTypes(innerDS) @@ -1363,33 +1093,33 @@ func prepare4IndexInnerHashJoin(tc *indexJoinTestCase, outerDS *mockDataSource, for i := range colLens { colLens[i] = types.UnspecifiedLength } - keyOff2IdxOff := make([]int, len(tc.outerJoinKeyIdx)) + keyOff2IdxOff := make([]int, len(tc.OuterJoinKeyIdx)) for i := range keyOff2IdxOff { keyOff2IdxOff[i] = i } - readerBuilder, err := newExecutorBuilder(tc.ctx, nil, nil). + readerBuilder, err := newExecutorBuilder(tc.Ctx, nil, nil). newDataReaderBuilder(&mockPhysicalIndexReader{e: innerDS}) if err != nil { return nil, err } e := &IndexLookUpJoin{ - BaseExecutor: exec.NewBaseExecutor(tc.ctx, joinSchema, 1, outerDS), + BaseExecutor: exec.NewBaseExecutor(tc.Ctx, joinSchema, 1, outerDS), outerCtx: outerCtx{ rowTypes: leftTypes, - keyCols: tc.outerJoinKeyIdx, - hashCols: tc.outerHashKeyIdx, + keyCols: tc.OuterJoinKeyIdx, + hashCols: tc.OuterHashKeyIdx, }, innerCtx: innerCtx{ readerBuilder: readerBuilder, rowTypes: rightTypes, colLens: colLens, - keyCols: tc.innerJoinKeyIdx, - hashCols: tc.innerHashKeyIdx, + keyCols: tc.InnerJoinKeyIdx, + hashCols: tc.InnerHashKeyIdx, }, workerWg: new(sync.WaitGroup), - joiner: newJoiner(tc.ctx, 0, false, defaultValues, nil, leftTypes, rightTypes, nil, false), + joiner: newJoiner(tc.Ctx, 0, false, defaultValues, nil, leftTypes, rightTypes, nil, false), isOuterJoin: false, keyOff2IdxOff: keyOff2IdxOff, lastColHelper: nil, @@ -1398,13 +1128,13 @@ func prepare4IndexInnerHashJoin(tc *indexJoinTestCase, outerDS *mockDataSource, return e, nil } -func prepare4IndexOuterHashJoin(tc *indexJoinTestCase, outerDS *mockDataSource, innerDS *mockDataSource) (exec.Executor, error) { +func prepare4IndexOuterHashJoin(tc *IndexJoinTestCase, outerDS *testutil.MockDataSource, innerDS *testutil.MockDataSource) (exec.Executor, error) { e, err := prepare4IndexInnerHashJoin(tc, outerDS, innerDS) if err != nil { return nil, err } idxHash := &IndexNestedLoopHashJoin{IndexLookUpJoin: *e.(*IndexLookUpJoin)} - concurrency := tc.concurrency + concurrency := tc.Concurrency idxHash.joiners = make([]joiner, concurrency) for i := 0; i < concurrency; i++ { idxHash.joiners[i] = e.(*IndexLookUpJoin).joiner.Clone() @@ -1412,16 +1142,16 @@ func prepare4IndexOuterHashJoin(tc *indexJoinTestCase, outerDS *mockDataSource, return idxHash, nil } -func prepare4IndexMergeJoin(tc *indexJoinTestCase, outerDS *mockDataSource, innerDS *mockDataSource) (exec.Executor, error) { - outerCols, innerCols := tc.columns(), tc.columns() +func prepare4IndexMergeJoin(tc *IndexJoinTestCase, outerDS *testutil.MockDataSource, innerDS *testutil.MockDataSource) (exec.Executor, error) { + outerCols, innerCols := tc.Columns(), tc.Columns() joinSchema := expression.NewSchema(outerCols...) joinSchema.Append(innerCols...) - outerJoinKeys := make([]*expression.Column, 0, len(tc.outerJoinKeyIdx)) - innerJoinKeys := make([]*expression.Column, 0, len(tc.innerJoinKeyIdx)) - for _, keyIdx := range tc.outerJoinKeyIdx { + outerJoinKeys := make([]*expression.Column, 0, len(tc.OuterJoinKeyIdx)) + innerJoinKeys := make([]*expression.Column, 0, len(tc.InnerJoinKeyIdx)) + for _, keyIdx := range tc.OuterJoinKeyIdx { outerJoinKeys = append(outerJoinKeys, outerCols[keyIdx]) } - for _, keyIdx := range tc.innerJoinKeyIdx { + for _, keyIdx := range tc.InnerJoinKeyIdx { innerJoinKeys = append(innerJoinKeys, innerCols[keyIdx]) } leftTypes, rightTypes := exec.RetTypes(outerDS), exec.RetTypes(innerDS) @@ -1442,19 +1172,19 @@ func prepare4IndexMergeJoin(tc *indexJoinTestCase, outerDS *mockDataSource, inne outerCompareFuncs = append(outerCompareFuncs, expression.GetCmpFunction(nil, outerJoinKeys[i], outerJoinKeys[i])) } - readerBuilder, err := newExecutorBuilder(tc.ctx, nil, nil). + readerBuilder, err := newExecutorBuilder(tc.Ctx, nil, nil). newDataReaderBuilder(&mockPhysicalIndexReader{e: innerDS}) if err != nil { return nil, err } e := &IndexLookUpMergeJoin{ - BaseExecutor: exec.NewBaseExecutor(tc.ctx, joinSchema, 2, outerDS), + BaseExecutor: exec.NewBaseExecutor(tc.Ctx, joinSchema, 2, outerDS), outerMergeCtx: outerMergeCtx{ rowTypes: leftTypes, - keyCols: tc.outerJoinKeyIdx, + keyCols: tc.OuterJoinKeyIdx, joinKeys: outerJoinKeys, - needOuterSort: tc.needOuterSort, + needOuterSort: tc.NeedOuterSort, compareFuncs: outerCompareFuncs, }, innerMergeCtx: innerMergeCtx{ @@ -1462,7 +1192,7 @@ func prepare4IndexMergeJoin(tc *indexJoinTestCase, outerDS *mockDataSource, inne rowTypes: rightTypes, joinKeys: innerJoinKeys, colLens: colLens, - keyCols: tc.innerJoinKeyIdx, + keyCols: tc.InnerJoinKeyIdx, compareFuncs: compareFuncs, }, workerWg: new(sync.WaitGroup), @@ -1473,7 +1203,7 @@ func prepare4IndexMergeJoin(tc *indexJoinTestCase, outerDS *mockDataSource, inne concurrency := e.Ctx().GetSessionVars().IndexLookupJoinConcurrency() joiners := make([]joiner, concurrency) for i := 0; i < concurrency; i++ { - joiners[i] = newJoiner(tc.ctx, 0, false, defaultValues, nil, leftTypes, rightTypes, nil, false) + joiners[i] = newJoiner(tc.Ctx, 0, false, defaultValues, nil, leftTypes, rightTypes, nil, false) } e.joiners = joiners return e, nil @@ -1489,9 +1219,9 @@ const ( func benchmarkIndexJoinExecWithCase( b *testing.B, - tc *indexJoinTestCase, - outerDS *mockDataSource, - innerDS *mockDataSource, + tc *IndexJoinTestCase, + outerDS *testutil.MockDataSource, + innerDS *testutil.MockDataSource, execType indexJoinType, ) { b.ResetTimer() @@ -1514,8 +1244,8 @@ func benchmarkIndexJoinExecWithCase( tmpCtx := context.Background() chk := exec.NewFirstChunk(executor) - outerDS.prepareChunks() - innerDS.prepareChunks() + outerDS.PrepareChunks() + innerDS.PrepareChunks() b.StartTimer() if err = executor.Open(tmpCtx); err != nil { @@ -1544,17 +1274,17 @@ func BenchmarkIndexJoinExec(b *testing.B) { b.ReportAllocs() tc := defaultIndexJoinTestCase() - outerOpt := tc.getMockDataSourceOptByRows(tc.outerRows) - innerOpt := tc.getMockDataSourceOptByRows(tc.innerRows) - outerDS := buildMockDataSourceWithIndex(outerOpt, tc.innerIdx) - innerDS := buildMockDataSourceWithIndex(innerOpt, tc.innerIdx) + outerOpt := tc.GetMockDataSourceOptByRows(tc.OuterRows) + innerOpt := tc.GetMockDataSourceOptByRows(tc.InnerRows) + outerDS := testutil.BuildMockDataSourceWithIndex(outerOpt, tc.InnerIdx) + innerDS := testutil.BuildMockDataSourceWithIndex(innerOpt, tc.InnerIdx) - tc.needOuterSort = true + tc.NeedOuterSort = true b.Run(fmt.Sprintf("index merge join need outer sort %v", tc), func(b *testing.B) { benchmarkIndexJoinExecWithCase(b, tc, outerDS, innerDS, indexMergeJoin) }) - tc.needOuterSort = false + tc.NeedOuterSort = false b.Run(fmt.Sprintf("index merge join %v", tc), func(b *testing.B) { benchmarkIndexJoinExecWithCase(b, tc, outerDS, innerDS, indexMergeJoin) }) @@ -1569,7 +1299,7 @@ func BenchmarkIndexJoinExec(b *testing.B) { } type mergeJoinTestCase struct { - indexJoinTestCase + IndexJoinTestCase childrenUsedSchema [][]bool } @@ -1577,14 +1307,14 @@ func prepareMergeJoinExec(tc *mergeJoinTestCase, joinSchema *expression.Schema, compareFuncs []expression.CompareFunc, innerJoinKeys []*expression.Column, outerJoinKeys []*expression.Column) *MergeJoinExec { // only benchmark inner join mergeJoinExec := &MergeJoinExec{ - stmtCtx: tc.ctx.GetSessionVars().StmtCtx, - BaseExecutor: exec.NewBaseExecutor(tc.ctx, joinSchema, 3, leftExec, rightExec), + stmtCtx: tc.Ctx.GetSessionVars().StmtCtx, + BaseExecutor: exec.NewBaseExecutor(tc.Ctx, joinSchema, 3, leftExec, rightExec), compareFuncs: compareFuncs, isOuterJoin: false, } mergeJoinExec.joiner = newJoiner( - tc.ctx, + tc.Ctx, 0, false, defaultValues, @@ -1610,8 +1340,8 @@ func prepareMergeJoinExec(tc *mergeJoinTestCase, joinSchema *expression.Schema, return mergeJoinExec } -func prepare4MergeJoin(tc *mergeJoinTestCase, innerDS, outerDS *mockDataSource, sorted bool, concurrency int) exec.Executor { - outerCols, innerCols := tc.columns(), tc.columns() +func prepare4MergeJoin(tc *mergeJoinTestCase, innerDS, outerDS *testutil.MockDataSource, sorted bool, concurrency int) exec.Executor { + outerCols, innerCols := tc.Columns(), tc.Columns() joinSchema := expression.NewSchema() if tc.childrenUsedSchema != nil { @@ -1630,12 +1360,12 @@ func prepare4MergeJoin(tc *mergeJoinTestCase, innerDS, outerDS *mockDataSource, joinSchema.Append(innerCols...) } - outerJoinKeys := make([]*expression.Column, 0, len(tc.outerJoinKeyIdx)) - innerJoinKeys := make([]*expression.Column, 0, len(tc.innerJoinKeyIdx)) - for _, keyIdx := range tc.outerJoinKeyIdx { + outerJoinKeys := make([]*expression.Column, 0, len(tc.OuterJoinKeyIdx)) + innerJoinKeys := make([]*expression.Column, 0, len(tc.InnerJoinKeyIdx)) + for _, keyIdx := range tc.OuterJoinKeyIdx { outerJoinKeys = append(outerJoinKeys, outerCols[keyIdx]) } - for _, keyIdx := range tc.innerJoinKeyIdx { + for _, keyIdx := range tc.InnerJoinKeyIdx { innerJoinKeys = append(innerJoinKeys, innerCols[keyIdx]) } compareFuncs := make([]expression.CompareFunc, 0, len(outerJoinKeys)) @@ -1648,8 +1378,8 @@ func prepare4MergeJoin(tc *mergeJoinTestCase, innerDS, outerDS *mockDataSource, var leftExec, rightExec exec.Executor if sorted { leftSortExec := &sortexec.SortExec{ - BaseExecutor: exec.NewBaseExecutor(tc.ctx, innerDS.Schema(), 3, innerDS), - ByItems: make([]*util.ByItems, 0, len(tc.innerJoinKeyIdx)), + BaseExecutor: exec.NewBaseExecutor(tc.Ctx, innerDS.Schema(), 3, innerDS), + ByItems: make([]*util.ByItems, 0, len(tc.InnerJoinKeyIdx)), ExecSchema: innerDS.Schema(), } for _, key := range innerJoinKeys { @@ -1658,8 +1388,8 @@ func prepare4MergeJoin(tc *mergeJoinTestCase, innerDS, outerDS *mockDataSource, leftExec = leftSortExec rightSortExec := &sortexec.SortExec{ - BaseExecutor: exec.NewBaseExecutor(tc.ctx, outerDS.Schema(), 4, outerDS), - ByItems: make([]*util.ByItems, 0, len(tc.outerJoinKeyIdx)), + BaseExecutor: exec.NewBaseExecutor(tc.Ctx, outerDS.Schema(), 4, outerDS), + ByItems: make([]*util.ByItems, 0, len(tc.OuterJoinKeyIdx)), ExecSchema: outerDS.Schema(), } for _, key := range outerJoinKeys { @@ -1698,7 +1428,7 @@ func prepare4MergeJoin(tc *mergeJoinTestCase, innerDS, outerDS *mockDataSource, } // build ShuffleMergeJoinExec shuffle := &ShuffleExec{ - BaseExecutor: exec.NewBaseExecutor(tc.ctx, joinSchema, 4), + BaseExecutor: exec.NewBaseExecutor(tc.Ctx, joinSchema, 4), concurrency: concurrency, dataSources: dataSources, splitters: splitters, @@ -1708,10 +1438,10 @@ func prepare4MergeJoin(tc *mergeJoinTestCase, innerDS, outerDS *mockDataSource, shuffle.workers = make([]*shuffleWorker, shuffle.concurrency) for i := range shuffle.workers { leftReceiver := shuffleReceiver{ - BaseExecutor: exec.NewBaseExecutor(tc.ctx, leftExec.Schema(), 0), + BaseExecutor: exec.NewBaseExecutor(tc.Ctx, leftExec.Schema(), 0), } rightReceiver := shuffleReceiver{ - BaseExecutor: exec.NewBaseExecutor(tc.ctx, rightExec.Schema(), 0), + BaseExecutor: exec.NewBaseExecutor(tc.Ctx, rightExec.Schema(), 0), } w := &shuffleWorker{ receivers: []*shuffleReceiver{&leftReceiver, &rightReceiver}, @@ -1726,7 +1456,7 @@ func prepare4MergeJoin(tc *mergeJoinTestCase, innerDS, outerDS *mockDataSource, return e } -func newMergeJoinBenchmark(numOuterRows, numInnerDup, numInnerRedundant int) (tc *mergeJoinTestCase, innerDS, outerDS *mockDataSource) { +func newMergeJoinBenchmark(numOuterRows, numInnerDup, numInnerRedundant int) (tc *mergeJoinTestCase, innerDS, outerDS *testutil.MockDataSource) { ctx := mock.NewContext() ctx.GetSessionVars().InitChunkSize = variable.DefInitChunkSize ctx.GetSessionVars().MaxChunkSize = variable.DefMaxChunkSize @@ -1735,42 +1465,42 @@ func newMergeJoinBenchmark(numOuterRows, numInnerDup, numInnerRedundant int) (tc ctx.GetSessionVars().StmtCtx.DiskTracker = disk.NewTracker(-1, -1) numInnerRows := numOuterRows*numInnerDup + numInnerRedundant - itc := &indexJoinTestCase{ - outerRows: numOuterRows, - innerRows: numInnerRows, - concurrency: 4, - ctx: ctx, - outerJoinKeyIdx: []int{0, 1}, - innerJoinKeyIdx: []int{0, 1}, - outerHashKeyIdx: []int{0, 1}, - innerHashKeyIdx: []int{0, 1}, - innerIdx: []int{0, 1}, - rawData: wideString, + itc := &IndexJoinTestCase{ + OuterRows: numOuterRows, + InnerRows: numInnerRows, + Concurrency: 4, + Ctx: ctx, + OuterJoinKeyIdx: []int{0, 1}, + InnerJoinKeyIdx: []int{0, 1}, + OuterHashKeyIdx: []int{0, 1}, + InnerHashKeyIdx: []int{0, 1}, + InnerIdx: []int{0, 1}, + RawData: wideString, } tc = &mergeJoinTestCase{*itc, nil} - outerOpt := mockDataSourceParameters{ - schema: expression.NewSchema(tc.columns()...), - rows: numOuterRows, - ctx: tc.ctx, - genDataFunc: func(row int, typ *types.FieldType) interface{} { + outerOpt := testutil.MockDataSourceParameters{ + DataSchema: expression.NewSchema(tc.Columns()...), + Rows: numOuterRows, + Ctx: tc.Ctx, + GenDataFunc: func(row int, typ *types.FieldType) interface{} { switch typ.GetType() { case mysql.TypeLong, mysql.TypeLonglong: return int64(row) case mysql.TypeDouble: return float64(row) case mysql.TypeVarString: - return tc.rawData + return tc.RawData default: panic("not implement") } }, } - innerOpt := mockDataSourceParameters{ - schema: expression.NewSchema(tc.columns()...), - rows: numInnerRows, - ctx: tc.ctx, - genDataFunc: func(row int, typ *types.FieldType) interface{} { + innerOpt := testutil.MockDataSourceParameters{ + DataSchema: expression.NewSchema(tc.Columns()...), + Rows: numInnerRows, + Ctx: tc.Ctx, + GenDataFunc: func(row int, typ *types.FieldType) interface{} { row = row / numInnerDup switch typ.GetType() { case mysql.TypeLong, mysql.TypeLonglong: @@ -1778,15 +1508,15 @@ func newMergeJoinBenchmark(numOuterRows, numInnerDup, numInnerRedundant int) (tc case mysql.TypeDouble: return float64(row) case mysql.TypeVarString: - return tc.rawData + return tc.RawData default: panic("not implement") } }, } - innerDS = buildMockDataSource(innerOpt) - outerDS = buildMockDataSource(outerOpt) + innerDS = testutil.BuildMockDataSource(innerOpt) + outerDS = testutil.BuildMockDataSource(outerOpt) return } @@ -1797,7 +1527,7 @@ const ( innerMergeJoin mergeJoinType = iota ) -func benchmarkMergeJoinExecWithCase(b *testing.B, tc *mergeJoinTestCase, innerDS, outerDS *mockDataSource, joinType mergeJoinType) { +func benchmarkMergeJoinExecWithCase(b *testing.B, tc *mergeJoinTestCase, innerDS, outerDS *testutil.MockDataSource, joinType mergeJoinType) { b.ResetTimer() for i := 0; i < b.N; i++ { b.StopTimer() @@ -1809,8 +1539,8 @@ func benchmarkMergeJoinExecWithCase(b *testing.B, tc *mergeJoinTestCase, innerDS tmpCtx := context.Background() chk := exec.NewFirstChunk(executor) - outerDS.prepareChunks() - innerDS.prepareChunks() + outerDS.PrepareChunks() + innerDS.PrepareChunks() b.StartTimer() if err := executor.Open(tmpCtx); err != nil { @@ -1872,186 +1602,23 @@ func BenchmarkMergeJoinExec(b *testing.B) { } } -type sortCase struct { - rows int - orderByIdx []int - ndvs []int - ctx sessionctx.Context -} - -func (tc sortCase) columns() []*expression.Column { - return []*expression.Column{ - {Index: 0, RetType: types.NewFieldType(mysql.TypeLonglong)}, - {Index: 1, RetType: types.NewFieldType(mysql.TypeLonglong)}, - } -} - -func (tc sortCase) String() string { - return fmt.Sprintf("(rows:%v, orderBy:%v, ndvs: %v)", tc.rows, tc.orderByIdx, tc.ndvs) -} - -func defaultSortTestCase() *sortCase { - ctx := mock.NewContext() - ctx.GetSessionVars().InitChunkSize = variable.DefInitChunkSize - ctx.GetSessionVars().MaxChunkSize = variable.DefMaxChunkSize - ctx.GetSessionVars().StmtCtx.MemTracker = memory.NewTracker(-1, -1) - tc := &sortCase{rows: 300000, orderByIdx: []int{0, 1}, ndvs: []int{0, 0}, ctx: ctx} - return tc -} - -func sortTestCaseWithMemoryLimit(bytesLimit int64) *sortCase { - ctx := mock.NewContext() - ctx.GetSessionVars().InitChunkSize = variable.DefInitChunkSize - ctx.GetSessionVars().MaxChunkSize = variable.DefMaxChunkSize - ctx.GetSessionVars().MemTracker = memory.NewTracker(-1, bytesLimit) - ctx.GetSessionVars().StmtCtx.MemTracker = memory.NewTracker(-1, bytesLimit) - ctx.GetSessionVars().StmtCtx.MemTracker.AttachTo(ctx.GetSessionVars().MemTracker) - tc := &sortCase{rows: 300000, orderByIdx: []int{0, 1}, ndvs: []int{0, 0}, ctx: ctx} - return tc -} - -func benchmarkSortExec(b *testing.B, cas *sortCase) { - opt := mockDataSourceParameters{ - schema: expression.NewSchema(cas.columns()...), - rows: cas.rows, - ctx: cas.ctx, - ndvs: cas.ndvs, - } - dataSource := buildMockDataSource(opt) - executor := &sortexec.SortExec{ - BaseExecutor: exec.NewBaseExecutor(cas.ctx, dataSource.Schema(), 4, dataSource), - ByItems: make([]*util.ByItems, 0, len(cas.orderByIdx)), - ExecSchema: dataSource.Schema(), - } - for _, idx := range cas.orderByIdx { - executor.ByItems = append(executor.ByItems, &util.ByItems{Expr: cas.columns()[idx]}) - } - b.ResetTimer() - for i := 0; i < b.N; i++ { - b.StopTimer() - tmpCtx := context.Background() - chk := exec.NewFirstChunk(executor) - dataSource.prepareChunks() - - b.StartTimer() - if err := executor.Open(tmpCtx); err != nil { - b.Fatal(err) - } - for { - if err := executor.Next(tmpCtx, chk); err != nil { - b.Fatal(err) - } - if chk.NumRows() == 0 { - break - } - } - - if err := executor.Close(); err != nil { - b.Fatal(err) - } - b.StopTimer() - } -} - -func BenchmarkSortExec(b *testing.B) { - b.ReportAllocs() - cas := defaultSortTestCase() - benchmarkSortExecDerivateCases(b, cas) -} - -func BenchmarkSortExecSpillToDisk(b *testing.B) { - enableTmpStorageOnOOMCurrentVal := variable.EnableTmpStorageOnOOM.Load() - variable.EnableTmpStorageOnOOM.Store(true) - defer variable.EnableTmpStorageOnOOM.Store(enableTmpStorageOnOOMCurrentVal) - - b.ReportAllocs() - cas := sortTestCaseWithMemoryLimit(1) - benchmarkSortExecDerivateCases(b, cas) -} - -func benchmarkSortExecDerivateCases(b *testing.B, cas *sortCase) { - cas.ndvs = []int{0, 0} - cas.orderByIdx = []int{0, 1} - b.Run(fmt.Sprintf("%v", cas), func(b *testing.B) { - benchmarkSortExec(b, cas) - }) - - ndvs := []int{1, 10000} - for _, ndv := range ndvs { - cas.ndvs = []int{ndv, 0} - cas.orderByIdx = []int{0, 1} - b.Run(fmt.Sprintf("%v", cas), func(b *testing.B) { - benchmarkSortExec(b, cas) - }) - - cas.ndvs = []int{ndv, 0} - cas.orderByIdx = []int{0} - b.Run(fmt.Sprintf("%v", cas), func(b *testing.B) { - benchmarkSortExec(b, cas) - }) - - cas.ndvs = []int{ndv, 0} - cas.orderByIdx = []int{1} - b.Run(fmt.Sprintf("%v", cas), func(b *testing.B) { - benchmarkSortExec(b, cas) - }) - } -} - -type limitCase struct { - rows int - offset int - count int - childUsedSchema []bool - usingInlineProjection bool - ctx sessionctx.Context -} - -func (tc limitCase) columns() []*expression.Column { - return []*expression.Column{ - {Index: 0, RetType: types.NewFieldType(mysql.TypeLonglong)}, - {Index: 1, RetType: types.NewFieldType(mysql.TypeLonglong)}, - } -} - -func (tc limitCase) String() string { - return fmt.Sprintf("(rows:%v, offset:%v, count:%v, inline_projection:%v)", - tc.rows, tc.offset, tc.count, tc.usingInlineProjection) -} - -func defaultLimitTestCase() *limitCase { - ctx := mock.NewContext() - ctx.GetSessionVars().InitChunkSize = variable.DefInitChunkSize - ctx.GetSessionVars().MaxChunkSize = variable.DefMaxChunkSize - ctx.GetSessionVars().StmtCtx.MemTracker = memory.NewTracker(-1, -1) - tc := &limitCase{ - rows: 30000, - offset: 10000, - count: 10000, - childUsedSchema: []bool{false, true}, - usingInlineProjection: false, - ctx: ctx, - } - return tc -} - -func benchmarkLimitExec(b *testing.B, cas *limitCase) { - opt := mockDataSourceParameters{ - schema: expression.NewSchema(cas.columns()...), - rows: cas.rows, - ctx: cas.ctx, +func benchmarkLimitExec(b *testing.B, cas *testutil.LimitCase) { + opt := testutil.MockDataSourceParameters{ + DataSchema: expression.NewSchema(cas.Columns()...), + Rows: cas.Rows, + Ctx: cas.Ctx, } - dataSource := buildMockDataSource(opt) + dataSource := testutil.BuildMockDataSource(opt) var exe exec.Executor limit := &LimitExec{ - BaseExecutor: exec.NewBaseExecutor(cas.ctx, dataSource.Schema(), 4, dataSource), - begin: uint64(cas.offset), - end: uint64(cas.offset + cas.count), - } - if cas.usingInlineProjection { - if len(cas.childUsedSchema) > 0 { - limit.columnIdxsUsedByChild = make([]int, 0, len(cas.childUsedSchema)) - for i, used := range cas.childUsedSchema { + BaseExecutor: exec.NewBaseExecutor(cas.Ctx, dataSource.Schema(), 4, dataSource), + begin: uint64(cas.Offset), + end: uint64(cas.Offset + cas.Count), + } + if cas.UsingInlineProjection { + if len(cas.ChildUsedSchema) > 0 { + limit.columnIdxsUsedByChild = make([]int, 0, len(cas.ChildUsedSchema)) + for i, used := range cas.ChildUsedSchema { if used { limit.columnIdxsUsedByChild = append(limit.columnIdxsUsedByChild, i) } @@ -2059,17 +1626,17 @@ func benchmarkLimitExec(b *testing.B, cas *limitCase) { } exe = limit } else { - columns := cas.columns() + columns := cas.Columns() usedCols := make([]*expression.Column, 0, len(columns)) exprs := make([]expression.Expression, 0, len(columns)) - for i, used := range cas.childUsedSchema { + for i, used := range cas.ChildUsedSchema { if used { usedCols = append(usedCols, columns[i]) exprs = append(exprs, columns[i]) } } proj := &ProjectionExec{ - BaseExecutor: exec.NewBaseExecutor(cas.ctx, expression.NewSchema(usedCols...), 0, limit), + BaseExecutor: exec.NewBaseExecutor(cas.Ctx, expression.NewSchema(usedCols...), 0, limit), numWorkers: 1, evaluatorSuit: expression.NewEvaluatorSuite(exprs, false), } @@ -2081,7 +1648,7 @@ func benchmarkLimitExec(b *testing.B, cas *limitCase) { b.StopTimer() tmpCtx := context.Background() chk := exec.NewFirstChunk(exe) - dataSource.prepareChunks() + dataSource.PrepareChunks() b.StartTimer() if err := exe.Open(tmpCtx); err != nil { @@ -2105,10 +1672,10 @@ func benchmarkLimitExec(b *testing.B, cas *limitCase) { func BenchmarkLimitExec(b *testing.B) { b.ReportAllocs() - cas := defaultLimitTestCase() + cas := testutil.DefaultLimitTestCase() usingInlineProjection := []bool{false, true} for _, inlineProjection := range usingInlineProjection { - cas.usingInlineProjection = inlineProjection + cas.UsingInlineProjection = inlineProjection b.Run(fmt.Sprintf("%v", cas), func(b *testing.B) { benchmarkLimitExec(b, cas) }) diff --git a/pkg/executor/brie.go b/pkg/executor/brie.go index 953d725225a20..b4c3577e0adff 100644 --- a/pkg/executor/brie.go +++ b/pkg/executor/brie.go @@ -236,7 +236,7 @@ func (bq *brieQueue) clearTask(sc *stmtctx.StatementContext) { func (b *executorBuilder) parseTSString(ts string) (uint64, error) { sc := stmtctx.NewStmtCtxWithTimeZone(b.ctx.GetSessionVars().Location()) - t, err := types.ParseTime(sc.TypeCtx(), ts, mysql.TypeTimestamp, types.MaxFsp, nil) + t, err := types.ParseTime(sc.TypeCtx(), ts, mysql.TypeTimestamp, types.MaxFsp) if err != nil { return 0, err } diff --git a/pkg/executor/builder.go b/pkg/executor/builder.go index a28e0d12bc8ca..f2078aa6858f6 100644 --- a/pkg/executor/builder.go +++ b/pkg/executor/builder.go @@ -44,6 +44,7 @@ import ( "github.com/pingcap/tidb/pkg/executor/internal/exec" "github.com/pingcap/tidb/pkg/executor/internal/pdhelper" "github.com/pingcap/tidb/pkg/executor/internal/querywatch" + "github.com/pingcap/tidb/pkg/executor/internal/testutil" "github.com/pingcap/tidb/pkg/executor/internal/vecgroupchecker" "github.com/pingcap/tidb/pkg/executor/lockstats" executor_metrics "github.com/pingcap/tidb/pkg/executor/metrics" @@ -135,13 +136,6 @@ func newExecutorBuilder(ctx sessionctx.Context, is infoschema.InfoSchema, ti *Te } } -// MockPhysicalPlan is used to return a specified executor in when build. -// It is mainly used for testing. -type MockPhysicalPlan interface { - plannercore.PhysicalPlan - GetExecutor() exec.Executor -} - // MockExecutorBuilder is a wrapper for executorBuilder. // ONLY used in test. type MockExecutorBuilder struct { @@ -317,8 +311,10 @@ func (b *executorBuilder) build(p plannercore.Plan) exec.Executor { return b.buildCTETableReader(v) case *plannercore.CompactTable: return b.buildCompactTable(v) + case *plannercore.AdminShowBDRRole: + return b.buildAdminShowBDRRole(v) default: - if mp, ok := p.(MockPhysicalPlan); ok { + if mp, ok := p.(testutil.MockPhysicalPlan); ok { return mp.GetExecutor() } @@ -879,7 +875,7 @@ func (b *executorBuilder) buildShow(v *plannercore.PhysicalShow) exec.Executor { Extractor: v.Extractor, ImportJobID: v.ImportJobID, } - if e.Tp == ast.ShowMasterStatus { + if e.Tp == ast.ShowMasterStatus || e.Tp == ast.ShowBinlogStatus { // show master status need start ts. if _, err := e.Ctx().Txn(true); err != nil { b.err = err @@ -2123,7 +2119,8 @@ func (b *executorBuilder) buildMemTable(v *plannercore.PhysicalMemTable) exec.Ex strings.ToLower(infoschema.ClusterTableMemoryUsageOpsHistory), strings.ToLower(infoschema.TableResourceGroups), strings.ToLower(infoschema.TableRunawayWatches), - strings.ToLower(infoschema.TableCheckConstraints): + strings.ToLower(infoschema.TableCheckConstraints), + strings.ToLower(infoschema.TableTiDBCheckConstraints): return &MemTableReaderExec{ BaseExecutor: exec.NewBaseExecutor(b.ctx, v.Schema(), v.ID()), table: v.Table, @@ -2799,7 +2796,7 @@ func (b *executorBuilder) getAdjustedSampleRate(task plannercore.AnalyzeColumnsT } func (b *executorBuilder) getApproximateTableCountFromStorage(tid int64, task plannercore.AnalyzeColumnsTask) (float64, bool) { - return pdhelper.GlobalPDHelper.GetApproximateTableCountFromStorage(b.ctx, tid, task.DBName, task.TableName, task.PartitionName) + return pdhelper.GlobalPDHelper.GetApproximateTableCountFromStorage(context.Background(), b.ctx, tid, task.DBName, task.TableName, task.PartitionName) } func (b *executorBuilder) buildAnalyzeColumnsPushdown( @@ -4370,7 +4367,7 @@ func (builder *dataReaderBuilder) buildTableReaderBase(ctx context.Context, e *T SetFromInfoSchema(e.Ctx().GetInfoSchema()). SetClosestReplicaReadAdjuster(newClosestReadAdjuster(e.Ctx(), &reqBuilderWithRange.Request, e.netDataSize)). SetPaging(e.paging). - SetConnID(e.Ctx().GetSessionVars().ConnectionID). + SetConnIDAndConnAlias(e.Ctx().GetSessionVars().ConnectionID, e.Ctx().GetSessionVars().SessionAlias). Build() if err != nil { return nil, err @@ -5488,3 +5485,7 @@ func (b *executorBuilder) buildCompactTable(v *plannercore.CompactTable) exec.Ex tikvStore: tikvStore, } } + +func (b *executorBuilder) buildAdminShowBDRRole(v *plannercore.AdminShowBDRRole) exec.Executor { + return &AdminShowBDRRoleExec{BaseExecutor: exec.NewBaseExecutor(b.ctx, v.Schema(), v.ID())} +} diff --git a/pkg/executor/chunk_size_control_test.go b/pkg/executor/chunk_size_control_test.go index ac4e9b78f1d93..9862eb11b4185 100644 --- a/pkg/executor/chunk_size_control_test.go +++ b/pkg/executor/chunk_size_control_test.go @@ -179,7 +179,7 @@ func generateIndexSplitKeyForInt(tid, idx int64, splitNum []int) [][]byte { for _, num := range splitNum { d := new(types.Datum) d.SetInt64(int64(num)) - b, err := codec.EncodeKey(nil, nil, *d) + b, err := codec.EncodeKey(time.UTC, nil, *d) if err != nil { panic(err) } diff --git a/pkg/executor/coprocessor.go b/pkg/executor/coprocessor.go index 64423caf561a7..644c92e8fad15 100644 --- a/pkg/executor/coprocessor.go +++ b/pkg/executor/coprocessor.go @@ -277,11 +277,13 @@ func (h *CoprocessorDAGHandler) encodeDefault(chk *chunk.Chunk, tps []*types.Fie stmtCtx := h.sctx.GetSessionVars().StmtCtx requestedRow := make([]byte, 0) chunks := []tipb.Chunk{} + errCtx := stmtCtx.ErrCtx() for i := 0; i < chk.NumRows(); i++ { requestedRow = requestedRow[:0] row := chk.GetRow(i) for _, ordinal := range colOrdinal { - data, err := codec.EncodeValue(stmtCtx, nil, row.GetDatum(int(ordinal), tps[ordinal])) + data, err := codec.EncodeValue(stmtCtx.TimeZone(), nil, row.GetDatum(int(ordinal), tps[ordinal])) + err = errCtx.HandleError(err) if err != nil { return nil, err } diff --git a/pkg/executor/cte.go b/pkg/executor/cte.go index 184de2f5e557d..66835d53f1101 100644 --- a/pkg/executor/cte.go +++ b/pkg/executor/cte.go @@ -552,7 +552,7 @@ func (p *cteProducer) computeChunkHash(chk *chunk.Chunk) (sel []int, err error) } for i := 0; i < chk.NumCols(); i++ { - if err = codec.HashChunkSelected(p.ctx.GetSessionVars().StmtCtx, p.hCtx.hashVals, + if err = codec.HashChunkSelected(p.ctx.GetSessionVars().StmtCtx.TypeCtx(), p.hCtx.hashVals, chk, p.hCtx.allTypes[i], i, p.hCtx.buf, p.hCtx.hasNull, hashBitMap, false); err != nil { return nil, err @@ -647,7 +647,7 @@ func (p *cteProducer) checkHasDup(probeKey uint64, if err != nil { return false, err } - isEqual, err := codec.EqualChunkRow(p.ctx.GetSessionVars().StmtCtx, + isEqual, err := codec.EqualChunkRow(p.ctx.GetSessionVars().StmtCtx.TypeCtx(), row, p.hCtx.allTypes, p.hCtx.keyColIdx, matchedRow, p.hCtx.allTypes, p.hCtx.keyColIdx) if err != nil { diff --git a/pkg/executor/ddl.go b/pkg/executor/ddl.go index 3a447d1be551c..6766742fbdab5 100644 --- a/pkg/executor/ddl.go +++ b/pkg/executor/ddl.go @@ -540,6 +540,12 @@ func (e *DDLExec) getRecoverTableByTableName(tableName *ast.TableName) (*model.J } func (e *DDLExec) executeFlashBackCluster(s *ast.FlashBackToTimestampStmt) error { + // Check `TO TSO` clause + if s.FlashbackTSO > 0 { + return domain.GetDomain(e.Ctx()).DDL().FlashbackCluster(e.Ctx(), s.FlashbackTSO) + } + + // Check `TO TIMESTAMP` clause flashbackTS, err := staleread.CalculateAsOfTsExpr(context.Background(), e.Ctx(), s.FlashbackTS) if err != nil { return err diff --git a/pkg/executor/distsql.go b/pkg/executor/distsql.go index 7d4cfc9c3ab15..9beede5aa2ad0 100644 --- a/pkg/executor/distsql.go +++ b/pkg/executor/distsql.go @@ -151,7 +151,7 @@ func closeAll(objs ...Closeable) error { func rebuildIndexRanges(ctx sessionctx.Context, is *plannercore.PhysicalIndexScan, idxCols []*expression.Column, colLens []int) (ranges []*ranger.Range, err error) { access := make([]expression.Expression, 0, len(is.AccessCondition)) for _, cond := range is.AccessCondition { - newCond, err1 := expression.SubstituteCorCol2Constant(cond) + newCond, err1 := expression.SubstituteCorCol2Constant(ctx, cond) if err1 != nil { return nil, err1 } @@ -307,7 +307,7 @@ func (e *IndexReaderExecutor) buildKVReq(r []kv.KeyRange) (*kv.Request, error) { SetFromInfoSchema(e.Ctx().GetInfoSchema()). SetMemTracker(e.memTracker). SetClosestReplicaReadAdjuster(newClosestReadAdjuster(e.Ctx(), &builder.Request, e.netDataSize)). - SetConnID(e.Ctx().GetSessionVars().ConnectionID) + SetConnIDAndConnAlias(e.Ctx().GetSessionVars().ConnectionID, e.Ctx().GetSessionVars().SessionAlias) kvReq, err := builder.Build() return kvReq, err } @@ -339,7 +339,7 @@ func (e *IndexReaderExecutor) open(ctx context.Context, kvRanges []kv.KeyRange) if err != nil { return err } - pbConditions, err := expression.ExpressionsToPBList(e.Ctx().GetSessionVars().StmtCtx, []expression.Expression{inCondition}, e.Ctx().GetClient()) + pbConditions, err := expression.ExpressionsToPBList(e.Ctx(), []expression.Expression{inCondition}, e.Ctx().GetClient()) if err != nil { return err } @@ -711,7 +711,7 @@ func (e *IndexLookUpExecutor) startIndexWorker(ctx context.Context, workCh chan< SetFromInfoSchema(e.Ctx().GetInfoSchema()). SetClosestReplicaReadAdjuster(newClosestReadAdjuster(e.Ctx(), &builder.Request, e.idxNetDataSize/float64(len(kvRanges)))). SetMemTracker(tracker). - SetConnID(e.Ctx().GetSessionVars().ConnectionID) + SetConnIDAndConnAlias(e.Ctx().GetSessionVars().ConnectionID, e.Ctx().GetSessionVars().SessionAlias) results := make([]distsql.SelectResult, 0, len(kvRanges)) for _, kvRange := range kvRanges { @@ -1216,7 +1216,8 @@ func (e *IndexLookUpExecutor) getHandle(row chunk.Row, handleIdx []int, datums = append(datums, row.GetDatum(idx, e.handleCols[i].RetType)) } tablecodec.TruncateIndexValues(e.table.Meta(), e.primaryKeyIndex, datums) - handleEncoded, err = codec.EncodeKey(e.Ctx().GetSessionVars().StmtCtx, nil, datums...) + handleEncoded, err = codec.EncodeKey(e.Ctx().GetSessionVars().StmtCtx.TimeZone(), nil, datums...) + err = e.Ctx().GetSessionVars().StmtCtx.HandleError(err) if err != nil { return nil, err } diff --git a/pkg/executor/executor.go b/pkg/executor/executor.go index 5e3b3c6c1f103..09f7b62626d7d 100644 --- a/pkg/executor/executor.go +++ b/pkg/executor/executor.go @@ -112,6 +112,7 @@ var ( _ exec.Executor = &sortexec.TopNExec{} _ exec.Executor = &UnionExec{} _ exec.Executor = &FastCheckTableExec{} + _ exec.Executor = &AdminShowBDRRoleExec{} // GlobalMemoryUsageTracker is the ancestor of all the Executors' memory tracker and GlobalMemory Tracker GlobalMemoryUsageTracker *memory.Tracker @@ -2572,13 +2573,15 @@ func (w *checkIndexWorker) HandleTask(task checkIndexTask, _ func(workerpool.Non return } + errCtx := w.sctx.GetSessionVars().StmtCtx.ErrCtx() getHandleFromRow := func(row chunk.Row) (kv.Handle, error) { handleDatum := make([]types.Datum, 0) for i, t := range pkTypes { handleDatum = append(handleDatum, row.GetDatum(i, t)) } if w.table.Meta().IsCommonHandle { - handleBytes, err := codec.EncodeKey(w.sctx.GetSessionVars().StmtCtx, nil, handleDatum...) + handleBytes, err := codec.EncodeKey(w.sctx.GetSessionVars().StmtCtx.TimeZone(), nil, handleDatum...) + err = errCtx.HandleError(err) if err != nil { return nil, err } @@ -2751,3 +2754,33 @@ func ColumnName(column string) string { func escapeName(name string) string { return strings.ReplaceAll(name, "`", "``") } + +// AdminShowBDRRoleExec represents a show BDR role executor. +type AdminShowBDRRoleExec struct { + exec.BaseExecutor + + done bool +} + +// Next implements the Executor Next interface. +func (e *AdminShowBDRRoleExec) Next(ctx context.Context, req *chunk.Chunk) error { + req.Reset() + if e.done { + return nil + } + + return kv.RunInNewTxn(kv.WithInternalSourceType(ctx, kv.InternalTxnAdmin), e.Ctx().GetStore(), true, func(ctx context.Context, txn kv.Transaction) error { + role, err := meta.NewMeta(txn).GetBDRRole() + if err != nil { + return err + } + + if role == "" { + role = string(ast.BDRRoleNone) + } + + req.AppendString(0, role) + e.done = true + return nil + }) +} diff --git a/pkg/executor/executor_pkg_test.go b/pkg/executor/executor_pkg_test.go index 5e4fe027952a2..f3e75088696f3 100644 --- a/pkg/executor/executor_pkg_test.go +++ b/pkg/executor/executor_pkg_test.go @@ -15,21 +15,15 @@ package executor import ( - "context" "runtime" "strconv" "testing" "time" "unsafe" - "github.com/pingcap/failpoint" "github.com/pingcap/tidb/pkg/executor/aggfuncs" "github.com/pingcap/tidb/pkg/executor/aggregate" - "github.com/pingcap/tidb/pkg/executor/internal/exec" - "github.com/pingcap/tidb/pkg/executor/sortexec" - "github.com/pingcap/tidb/pkg/expression" "github.com/pingcap/tidb/pkg/kv" - plannerutil "github.com/pingcap/tidb/pkg/planner/util" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/tablecodec" "github.com/pingcap/tidb/pkg/types" @@ -270,144 +264,3 @@ func TestFilterTemporaryTableKeys(t *testing.T) { res := filterTemporaryTableKeys(vars, []kv.Key{tablecodec.EncodeTablePrefix(tableID), tablecodec.EncodeTablePrefix(42)}) require.Len(t, res, 1) } - -func TestSortSpillDisk(t *testing.T) { - require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/executor/sortexec/testSortedRowContainerSpill", "return(true)")) - defer func() { - require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/executor/sortexec/testSortedRowContainerSpill")) - }() - ctx := mock.NewContext() - ctx.GetSessionVars().MemQuota.MemQuotaQuery = 1 - ctx.GetSessionVars().InitChunkSize = variable.DefMaxChunkSize - ctx.GetSessionVars().MaxChunkSize = variable.DefMaxChunkSize - ctx.GetSessionVars().MemTracker = memory.NewTracker(memory.LabelForSession, -1) - ctx.GetSessionVars().StmtCtx.MemTracker = memory.NewTracker(memory.LabelForSQLText, -1) - ctx.GetSessionVars().StmtCtx.MemTracker.AttachTo(ctx.GetSessionVars().MemTracker) - cas := &sortCase{rows: 2048, orderByIdx: []int{0, 1}, ndvs: []int{0, 0}, ctx: ctx} - opt := mockDataSourceParameters{ - schema: expression.NewSchema(cas.columns()...), - rows: cas.rows, - ctx: cas.ctx, - ndvs: cas.ndvs, - } - dataSource := buildMockDataSource(opt) - exe := &sortexec.SortExec{ - BaseExecutor: exec.NewBaseExecutor(cas.ctx, dataSource.Schema(), 0, dataSource), - ByItems: make([]*plannerutil.ByItems, 0, len(cas.orderByIdx)), - ExecSchema: dataSource.Schema(), - } - for _, idx := range cas.orderByIdx { - exe.ByItems = append(exe.ByItems, &plannerutil.ByItems{Expr: cas.columns()[idx]}) - } - tmpCtx := context.Background() - chk := exec.NewFirstChunk(exe) - dataSource.prepareChunks() - err := exe.Open(tmpCtx) - require.NoError(t, err) - for { - err = exe.Next(tmpCtx, chk) - require.NoError(t, err) - if chk.NumRows() == 0 { - break - } - } - // Test only 1 partition and all data in memory. - require.Len(t, exe.PartitionList, 1) - require.Equal(t, false, exe.PartitionList[0].AlreadySpilledSafeForTest()) - require.Equal(t, 2048, exe.PartitionList[0].NumRow()) - err = exe.Close() - require.NoError(t, err) - - ctx.GetSessionVars().MemTracker = memory.NewTracker(memory.LabelForSession, 1) - ctx.GetSessionVars().StmtCtx.MemTracker = memory.NewTracker(memory.LabelForSQLText, -1) - ctx.GetSessionVars().StmtCtx.MemTracker.AttachTo(ctx.GetSessionVars().MemTracker) - dataSource.prepareChunks() - err = exe.Open(tmpCtx) - require.NoError(t, err) - for { - err = exe.Next(tmpCtx, chk) - require.NoError(t, err) - if chk.NumRows() == 0 { - break - } - } - // Test 2 partitions and all data in disk. - // Now spilling is in parallel. - // Maybe the second add() will called before spilling, depends on - // Golang goroutine scheduling. So the result has two possibilities. - if len(exe.PartitionList) == 2 { - require.Len(t, exe.PartitionList, 2) - require.Equal(t, true, exe.PartitionList[0].AlreadySpilledSafeForTest()) - require.Equal(t, true, exe.PartitionList[1].AlreadySpilledSafeForTest()) - require.Equal(t, 1024, exe.PartitionList[0].NumRow()) - require.Equal(t, 1024, exe.PartitionList[1].NumRow()) - } else { - require.Len(t, exe.PartitionList, 1) - require.Equal(t, true, exe.PartitionList[0].AlreadySpilledSafeForTest()) - require.Equal(t, 2048, exe.PartitionList[0].NumRow()) - } - - err = exe.Close() - require.NoError(t, err) - - ctx.GetSessionVars().MemTracker = memory.NewTracker(memory.LabelForSession, 28000) - ctx.GetSessionVars().StmtCtx.MemTracker = memory.NewTracker(memory.LabelForSQLText, -1) - ctx.GetSessionVars().StmtCtx.MemTracker.AttachTo(ctx.GetSessionVars().MemTracker) - dataSource.prepareChunks() - err = exe.Open(tmpCtx) - require.NoError(t, err) - for { - err = exe.Next(tmpCtx, chk) - require.NoError(t, err) - if chk.NumRows() == 0 { - break - } - } - // Test only 1 partition but spill disk. - require.Len(t, exe.PartitionList, 1) - require.Equal(t, true, exe.PartitionList[0].AlreadySpilledSafeForTest()) - require.Equal(t, 2048, exe.PartitionList[0].NumRow()) - err = exe.Close() - require.NoError(t, err) - - // Test partition nums. - ctx = mock.NewContext() - ctx.GetSessionVars().InitChunkSize = variable.DefMaxChunkSize - ctx.GetSessionVars().MaxChunkSize = variable.DefMaxChunkSize - ctx.GetSessionVars().MemTracker = memory.NewTracker(memory.LabelForSession, 16864*50) - ctx.GetSessionVars().MemTracker.Consume(16864 * 45) - ctx.GetSessionVars().StmtCtx.MemTracker = memory.NewTracker(memory.LabelForSQLText, -1) - ctx.GetSessionVars().StmtCtx.MemTracker.AttachTo(ctx.GetSessionVars().MemTracker) - cas = &sortCase{rows: 20480, orderByIdx: []int{0, 1}, ndvs: []int{0, 0}, ctx: ctx} - opt = mockDataSourceParameters{ - schema: expression.NewSchema(cas.columns()...), - rows: cas.rows, - ctx: cas.ctx, - ndvs: cas.ndvs, - } - dataSource = buildMockDataSource(opt) - exe = &sortexec.SortExec{ - BaseExecutor: exec.NewBaseExecutor(cas.ctx, dataSource.Schema(), 0, dataSource), - ByItems: make([]*plannerutil.ByItems, 0, len(cas.orderByIdx)), - ExecSchema: dataSource.Schema(), - } - for _, idx := range cas.orderByIdx { - exe.ByItems = append(exe.ByItems, &plannerutil.ByItems{Expr: cas.columns()[idx]}) - } - tmpCtx = context.Background() - chk = exec.NewFirstChunk(exe) - dataSource.prepareChunks() - err = exe.Open(tmpCtx) - require.NoError(t, err) - for { - err = exe.Next(tmpCtx, chk) - require.NoError(t, err) - if chk.NumRows() == 0 { - break - } - } - // Don't spill too many partitions. - require.True(t, len(exe.PartitionList) <= 4) - err = exe.Close() - require.NoError(t, err) -} diff --git a/pkg/executor/executor_required_rows_test.go b/pkg/executor/executor_required_rows_test.go index 1aef3d44b7b67..d94566e2233bf 100644 --- a/pkg/executor/executor_required_rows_test.go +++ b/pkg/executor/executor_required_rows_test.go @@ -24,6 +24,7 @@ import ( "github.com/pingcap/tidb/pkg/domain" "github.com/pingcap/tidb/pkg/executor/internal/exec" + "github.com/pingcap/tidb/pkg/executor/internal/testutil" "github.com/pingcap/tidb/pkg/executor/sortexec" "github.com/pingcap/tidb/pkg/expression" "github.com/pingcap/tidb/pkg/expression/aggregation" @@ -740,7 +741,7 @@ func buildMergeJoinExec(ctx sessionctx.Context, joinType plannercore.JoinType, i } type mockPlan struct { - MockPhysicalPlan + testutil.MockPhysicalPlan exec exec.Executor } diff --git a/pkg/executor/explain_test.go b/pkg/executor/explain_test.go index cb6048953f701..1feaae20a5dbb 100644 --- a/pkg/executor/explain_test.go +++ b/pkg/executor/explain_test.go @@ -83,6 +83,57 @@ func checkMemoryInfo(t *testing.T, tk *testkit.TestKit, sql string) { } } +func TestIssue47331(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( + id1 varchar(2) DEFAULT '00', + id2 varchar(30) NOT NULL, + id3 datetime DEFAULT NULL, + id4 varchar(100) NOT NULL DEFAULT 'ecifdata', + id5 datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + id6 int(11) DEFAULT NULL, + id7 int(11) DEFAULT NULL, + UNIQUE KEY UI_id2 (id2), + KEY ix_id1 (id1) + )`) + tk.MustExec("drop table if exists t2") + tk.MustExec(`create table t2( + id10 varchar(40) NOT NULL, + id2 varchar(30) NOT NULL, + KEY IX_id2 (id2), + PRIMARY KEY (id10) + )`) + tk.MustExec("drop table if exists t3") + tk.MustExec(`create table t3( + id20 varchar(40) DEFAULT NULL, + UNIQUE KEY IX_id20 (id20) + )`) + tk.MustExec(` + explain + UPDATE t1 a + SET a.id1 = '04', + a.id3 = CURRENT_TIMESTAMP, + a.id4 = SUBSTRING_INDEX(USER(), '@', 1), + a.id5 = CURRENT_TIMESTAMP + WHERE a.id1 = '03' + AND a.id6 - IFNULL(a.id7, 0) = + ( + SELECT COUNT(1) + FROM t2 b, t3 c + WHERE b.id10 = c.id20 + AND b.id2 = a.id2 + AND b.id2 in ( + SELECT rn.id2 + FROM t1 rn + WHERE rn.id1 = '03' + ) + ); + `) +} + func TestMemoryAndDiskUsageAfterClose(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) diff --git a/pkg/executor/foreign_key.go b/pkg/executor/foreign_key.go index 55f34f8b02b64..6013baa6f0787 100644 --- a/pkg/executor/foreign_key.go +++ b/pkg/executor/foreign_key.go @@ -292,7 +292,8 @@ func (fkc *FKCheckExec) buildHandleFromFKValues(sc *stmtctx.StatementContext, va if len(vals) == 1 && fkc.Idx == nil { return kv.IntHandle(vals[0].GetInt64()), nil } - handleBytes, err := codec.EncodeKey(sc, nil, vals...) + handleBytes, err := codec.EncodeKey(sc.TimeZone(), nil, vals...) + err = sc.HandleError(err) if err != nil { return nil, err } @@ -464,7 +465,8 @@ func (h *fkValueHelper) fetchFKValuesWithCheck(sc *stmtctx.StatementContext, row if err != nil || h.hasNullValue(vals) { return nil, err } - keyBuf, err := codec.EncodeKey(sc, nil, vals...) + keyBuf, err := codec.EncodeKey(sc.TimeZone(), nil, vals...) + err = sc.HandleError(err) if err != nil { return nil, err } @@ -687,7 +689,8 @@ func (fkc *FKCascadeExec) onUpdateRow(sc *stmtctx.StatementContext, oldRow, newR if err != nil { return err } - newValsKey, err := codec.EncodeKey(sc, nil, newVals...) + newValsKey, err := codec.EncodeKey(sc.TimeZone(), nil, newVals...) + err = sc.HandleError(err) if err != nil { return err } diff --git a/pkg/executor/hash_table.go b/pkg/executor/hash_table.go index dbc9744c93e91..0537a42fdc352 100644 --- a/pkg/executor/hash_table.go +++ b/pkg/executor/hash_table.go @@ -245,7 +245,7 @@ func (c *hashRowContainer) GetAllMatchedRows(probeHCtx *hashContext, probeSideRo } if probeKeyNullBits != nil && len(probeHCtx.naKeyColIdx) > 1 { // check the idxs-th value of the join columns. - ok, err = codec.EqualChunkRow(c.sc, mayMatchedRow, needCheckBuildTypes, needCheckBuildColPos, probeSideRow, needCheckProbeTypes, needCheckProbeColPos) + ok, err = codec.EqualChunkRow(c.sc.TypeCtx(), mayMatchedRow, needCheckBuildTypes, needCheckBuildColPos, probeSideRow, needCheckProbeTypes, needCheckProbeColPos) if err != nil { return nil, err } @@ -381,7 +381,7 @@ func (c *hashRowContainer) GetNullBucketRows(probeHCtx *hashContext, probeSideRo needCheckProbeTypes = append(needCheckProbeTypes, probeHCtx.allTypes[i]) } // check the idxs-th value of the join columns. - ok, err = codec.EqualChunkRow(c.sc, mayMatchedRow, needCheckBuildTypes, needCheckBuildColPos, probeSideRow, needCheckProbeTypes, needCheckProbeColPos) + ok, err = codec.EqualChunkRow(c.sc.TypeCtx(), mayMatchedRow, needCheckBuildTypes, needCheckBuildColPos, probeSideRow, needCheckProbeTypes, needCheckProbeColPos) if err != nil { return nil, err } @@ -404,7 +404,7 @@ func (c *hashRowContainer) GetNullBucketRows(probeHCtx *hashContext, probeSideRo needCheckProbeTypes = append(needCheckProbeTypes, probeHCtx.allTypes[i]) } // check the idxs-th value of the join columns. - ok, err = codec.EqualChunkRow(c.sc, mayMatchedRow, needCheckBuildTypes, needCheckBuildColPos, probeSideRow, needCheckProbeTypes, needCheckProbeColPos) + ok, err = codec.EqualChunkRow(c.sc.TypeCtx(), mayMatchedRow, needCheckBuildTypes, needCheckBuildColPos, probeSideRow, needCheckProbeTypes, needCheckProbeColPos) if err != nil { return nil, err } @@ -421,11 +421,11 @@ func (c *hashRowContainer) GetNullBucketRows(probeHCtx *hashContext, probeSideRo // matchJoinKey checks if join keys of buildRow and probeRow are logically equal. func (c *hashRowContainer) matchJoinKey(buildRow, probeRow chunk.Row, probeHCtx *hashContext) (ok bool, err error) { if len(c.hCtx.naKeyColIdx) > 0 { - return codec.EqualChunkRow(c.sc, + return codec.EqualChunkRow(c.sc.TypeCtx(), buildRow, c.hCtx.allTypes, c.hCtx.naKeyColIdx, probeRow, probeHCtx.allTypes, probeHCtx.naKeyColIdx) } - return codec.EqualChunkRow(c.sc, + return codec.EqualChunkRow(c.sc.TypeCtx(), buildRow, c.hCtx.allTypes, c.hCtx.keyColIdx, probeRow, probeHCtx.allTypes, probeHCtx.keyColIdx) } @@ -463,7 +463,7 @@ func (c *hashRowContainer) PutChunkSelected(chk *chunk.Chunk, selected, ignoreNu // 1: write the row data of join key to hashVals. (normal EQ key should ignore the null values.) null-EQ for Except statement is an exception. for keyIdx, colIdx := range c.hCtx.keyColIdx { ignoreNull := len(ignoreNulls) > keyIdx && ignoreNulls[keyIdx] - err := codec.HashChunkSelected(c.sc, hCtx.hashVals, chk, hCtx.allTypes[keyIdx], colIdx, hCtx.buf, hCtx.hasNull, selected, ignoreNull) + err := codec.HashChunkSelected(c.sc.TypeCtx(), hCtx.hashVals, chk, hCtx.allTypes[keyIdx], colIdx, hCtx.buf, hCtx.hasNull, selected, ignoreNull) if err != nil { return errors.Trace(err) } @@ -473,7 +473,7 @@ func (c *hashRowContainer) PutChunkSelected(chk *chunk.Chunk, selected, ignoreNu hasNullMark := make([]bool, len(hCtx.hasNull)) for keyIdx, colIdx := range c.hCtx.naKeyColIdx { // NAAJ won't ignore any null values, but collect them as one hash bucket. - err := codec.HashChunkSelected(c.sc, hCtx.hashVals, chk, hCtx.allTypes[keyIdx], colIdx, hCtx.buf, hCtx.hasNull, selected, false) + err := codec.HashChunkSelected(c.sc.TypeCtx(), hCtx.hashVals, chk, hCtx.allTypes[keyIdx], colIdx, hCtx.buf, hCtx.hasNull, selected, false) if err != nil { return errors.Trace(err) } diff --git a/pkg/executor/hot_regions_history_table_test.go b/pkg/executor/hot_regions_history_table_test.go index ce6138458eda3..31b5d74a6645e 100644 --- a/pkg/executor/hot_regions_history_table_test.go +++ b/pkg/executor/hot_regions_history_table_test.go @@ -37,8 +37,8 @@ import ( "github.com/pingcap/tidb/pkg/store/helper" "github.com/pingcap/tidb/pkg/testkit" "github.com/pingcap/tidb/pkg/testkit/external" - "github.com/pingcap/tidb/pkg/util/pdapi" "github.com/stretchr/testify/require" + pd "github.com/tikv/pd/client/http" ) type mockStoreWithMultiPD struct { @@ -140,7 +140,7 @@ func (s *hotRegionsHistoryTableSuite) setUpMockPDHTTPServer() (*httptest.Server, server := httptest.NewServer(router) mockAddr := strings.TrimPrefix(server.URL, "http://") // mock PD API - router.Handle(pdapi.Status, fn.Wrap(func() (interface{}, error) { + router.Handle(pd.Status, fn.Wrap(func() (interface{}, error) { return struct { Version string `json:"version"` GitHash string `json:"git_hash"` @@ -152,7 +152,7 @@ func (s *hotRegionsHistoryTableSuite) setUpMockPDHTTPServer() (*httptest.Server, }, nil })) // mock history hot regions response - router.HandleFunc(pdapi.HotHistory, hisHotRegionsHandler) + router.HandleFunc(pd.HotHistory, hisHotRegionsHandler) return server, mockAddr } diff --git a/pkg/executor/import_into.go b/pkg/executor/import_into.go index bf23de1e84387..cc10e3aaa9e0f 100644 --- a/pkg/executor/import_into.go +++ b/pkg/executor/import_into.go @@ -40,6 +40,7 @@ import ( "github.com/pingcap/tidb/pkg/util/dbterror/exeerrors" "github.com/pingcap/tidb/pkg/util/logutil" "github.com/pingcap/tidb/pkg/util/sqlexec" + "github.com/tikv/client-go/v2/util" "go.uber.org/zap" "golang.org/x/sync/errgroup" ) @@ -127,6 +128,8 @@ func (e *ImportIntoExec) Next(ctx context.Context, req *chunk.Chunk) (err error) parentCtx = context.Background() } group, groupCtx := errgroup.WithContext(parentCtx) + groupCtx = kv.WithInternalSourceType(groupCtx, kv.InternalDistTask) + param := &importer.JobImportParam{ Job: &asyncloaddata.Job{}, Group: group, @@ -174,6 +177,7 @@ func (e *ImportIntoExec) fillJobInfo(ctx context.Context, jobID int64, req *chun e.dataFilled = true // we use globalTaskManager to get job, user might not have the privilege to system tables. globalTaskManager, err := fstorage.GetTaskManager() + ctx = util.WithInternalSourceType(ctx, kv.InternalDistTask) if err != nil { return err } @@ -225,7 +229,7 @@ func (e *ImportIntoExec) doImport(ctx context.Context, se sessionctx.Context, di // use background, since ctx is canceled already. return cancelImportJob(context.Background(), globalTaskManager, distImporter.JobID()) } - if err2 := flushStats(ctx, se, e.importPlan.TableInfo.ID, distImporter.Result()); err2 != nil { + if err2 := flushStats(ctx, se, e.importPlan.TableInfo.ID, distImporter.Result(ctx)); err2 != nil { logutil.Logger(ctx).Error("flush stats failed", zap.Error(err2)) } return err @@ -252,6 +256,7 @@ func (e *ImportIntoActionExec) Next(ctx context.Context, _ *chunk.Chunk) error { } // we use sessionCtx from GetTaskManager, user ctx might not have enough privileges. globalTaskManager, err := fstorage.GetTaskManager() + ctx = util.WithInternalSourceType(ctx, kv.InternalDistTask) if err != nil { return err } @@ -301,6 +306,7 @@ func cancelImportJob(ctx context.Context, manager *fstorage.TaskManager, jobID i if err2 := importer.CancelJob(ctx, exec, jobID); err2 != nil { return err2 } - return manager.CancelGlobalTaskByKeySession(se, importinto.TaskKey(jobID)) + ctx = util.WithInternalSourceType(ctx, kv.InternalDistTask) + return manager.CancelGlobalTaskByKeySession(ctx, se, importinto.TaskKey(jobID)) }) } diff --git a/pkg/executor/importer/kv_encode.go b/pkg/executor/importer/kv_encode.go index 65e1931380a29..f39e9c69a179d 100644 --- a/pkg/executor/importer/kv_encode.go +++ b/pkg/executor/importer/kv_encode.go @@ -142,7 +142,7 @@ func (en *tableKVEncoder) parserData2TableData(parserData []types.Datum, rowID i } for i := 0; i < len(en.columnAssignments); i++ { // eval expression of `SET` clause - d, err := en.columnAssignments[i].Eval(chunk.Row{}) + d, err := en.columnAssignments[i].Eval(en.SessionCtx, chunk.Row{}) if err != nil { return nil, err } diff --git a/pkg/executor/index_lookup_hash_join.go b/pkg/executor/index_lookup_hash_join.go index 8d8ae2862a328..4e2b52a0da925 100644 --- a/pkg/executor/index_lookup_hash_join.go +++ b/pkg/executor/index_lookup_hash_join.go @@ -581,7 +581,7 @@ func (iw *indexHashJoinInnerWorker) buildHashTableForOuterResult(task *indexHash } } h.Reset() - err := codec.HashChunkRow(iw.ctx.GetSessionVars().StmtCtx, h, row, iw.outerCtx.hashTypes, hashColIdx, buf) + err := codec.HashChunkRow(iw.ctx.GetSessionVars().StmtCtx.TypeCtx(), h, row, iw.outerCtx.hashTypes, hashColIdx, buf) failpoint.Inject("testIndexHashJoinBuildErr", func() { err = errors.New("mockIndexHashJoinBuildErr") }) @@ -709,7 +709,7 @@ func (iw *indexHashJoinInnerWorker) doJoinUnordered(ctx context.Context, task *i func (iw *indexHashJoinInnerWorker) getMatchedOuterRows(innerRow chunk.Row, task *indexHashJoinTask, h hash.Hash64, buf []byte) (matchedRows []chunk.Row, matchedRowPtr []chunk.RowPtr, err error) { h.Reset() - err = codec.HashChunkRow(iw.ctx.GetSessionVars().StmtCtx, h, innerRow, iw.hashTypes, iw.hashCols, buf) + err = codec.HashChunkRow(iw.ctx.GetSessionVars().StmtCtx.TypeCtx(), h, innerRow, iw.hashTypes, iw.hashCols, buf) if err != nil { return nil, nil, err } @@ -722,7 +722,7 @@ func (iw *indexHashJoinInnerWorker) getMatchedOuterRows(innerRow chunk.Row, task for ; matchedOuterEntry != nil; matchedOuterEntry = matchedOuterEntry.next { ptr := matchedOuterEntry.ptr outerRow := task.outerResult.GetRow(ptr) - ok, err := codec.EqualChunkRow(iw.ctx.GetSessionVars().StmtCtx, innerRow, iw.hashTypes, iw.hashCols, outerRow, iw.outerCtx.hashTypes, iw.outerCtx.hashCols) + ok, err := codec.EqualChunkRow(iw.ctx.GetSessionVars().StmtCtx.TypeCtx(), innerRow, iw.hashTypes, iw.hashCols, outerRow, iw.outerCtx.hashTypes, iw.outerCtx.hashCols) if err != nil { return nil, nil, err } diff --git a/pkg/executor/index_lookup_join.go b/pkg/executor/index_lookup_join.go index c0c746f035f00..93ac46d962328 100644 --- a/pkg/executor/index_lookup_join.go +++ b/pkg/executor/index_lookup_join.go @@ -576,7 +576,8 @@ func (iw *innerWorker) constructLookupContent(task *lookUpJoinTask) ([]*indexJoi continue } keyBuf = keyBuf[:0] - keyBuf, err = codec.EncodeKey(iw.ctx.GetSessionVars().StmtCtx, keyBuf, dHashKey...) + keyBuf, err = codec.EncodeKey(iw.ctx.GetSessionVars().StmtCtx.TimeZone(), keyBuf, dHashKey...) + err = iw.ctx.GetSessionVars().StmtCtx.HandleError(err) if err != nil { if terror.ErrorEqual(err, types.ErrWrongValue) { // we ignore rows with invalid datetime @@ -747,7 +748,8 @@ func (iw *innerWorker) buildLookUpMap(task *lookUpJoinTask) error { for _, keyCol := range iw.hashCols { d := innerRow.GetDatum(keyCol, iw.rowTypes[keyCol]) var err error - keyBuf, err = codec.EncodeKey(iw.ctx.GetSessionVars().StmtCtx, keyBuf, d) + keyBuf, err = codec.EncodeKey(iw.ctx.GetSessionVars().StmtCtx.TimeZone(), keyBuf, d) + err = iw.ctx.GetSessionVars().StmtCtx.HandleError(err) if err != nil { return err } diff --git a/pkg/executor/index_merge_reader.go b/pkg/executor/index_merge_reader.go index b1fb6fe0b9f4d..20062fb1a719b 100644 --- a/pkg/executor/index_merge_reader.go +++ b/pkg/executor/index_merge_reader.go @@ -388,7 +388,7 @@ func (e *IndexMergeReaderExecutor) startPartialIndexWorker(ctx context.Context, SetPaging(e.paging). SetFromInfoSchema(e.Ctx().GetInfoSchema()). SetClosestReplicaReadAdjuster(newClosestReadAdjuster(e.Ctx(), &builder.Request, e.partialNetDataSizes[workID])). - SetConnID(e.Ctx().GetSessionVars().ConnectionID) + SetConnIDAndConnAlias(e.Ctx().GetSessionVars().ConnectionID, e.Ctx().GetSessionVars().SessionAlias) tps := worker.getRetTpsForIndexScan(e.handleCols) results := make([]distsql.SelectResult, 0, len(keyRanges)) diff --git a/pkg/executor/infoschema_cluster_table_test.go b/pkg/executor/infoschema_cluster_table_test.go index f4050860e4125..332bcfa52221f 100644 --- a/pkg/executor/infoschema_cluster_table_test.go +++ b/pkg/executor/infoschema_cluster_table_test.go @@ -34,10 +34,13 @@ import ( "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/server" "github.com/pingcap/tidb/pkg/store/helper" + "github.com/pingcap/tidb/pkg/store/mockstore" "github.com/pingcap/tidb/pkg/testkit" + "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util" - "github.com/pingcap/tidb/pkg/util/pdapi" "github.com/stretchr/testify/require" + "github.com/tikv/client-go/v2/tikv" + pd "github.com/tikv/pd/client/http" "google.golang.org/grpc" ) @@ -53,9 +56,12 @@ type infosSchemaClusterTableSuite struct { func createInfosSchemaClusterTableSuite(t *testing.T) *infosSchemaClusterTableSuite { s := new(infosSchemaClusterTableSuite) - s.store, s.dom = testkit.CreateMockStoreAndDomain(t) - s.rpcServer, s.listenAddr = setUpRPCService(t, s.dom, "127.0.0.1:0") s.httpServer, s.mockAddr = s.setUpMockPDHTTPServer() + s.store, s.dom = testkit.CreateMockStoreAndDomain( + t, + mockstore.WithTiKVOptions(tikv.WithPDHTTPClient([]string{s.mockAddr})), + ) + s.rpcServer, s.listenAddr = setUpRPCService(t, s.dom, "127.0.0.1:0") s.startTime = time.Now() t.Cleanup(func() { if s.rpcServer != nil { @@ -101,12 +107,12 @@ func (s *infosSchemaClusterTableSuite) setUpMockPDHTTPServer() (*httptest.Server srv := httptest.NewServer(router) // mock store stats stat mockAddr := strings.TrimPrefix(srv.URL, "http://") - router.Handle(pdapi.Stores, fn.Wrap(func() (*helper.StoresStat, error) { - return &helper.StoresStat{ + router.Handle(pd.Stores, fn.Wrap(func() (*pd.StoresInfo, error) { + return &pd.StoresInfo{ Count: 1, - Stores: []helper.StoreStat{ + Stores: []pd.StoreInfo{ { - Store: helper.StoreBaseStat{ + Store: pd.MetaStore{ ID: 1, Address: "127.0.0.1:20160", State: 0, @@ -121,15 +127,15 @@ func (s *infosSchemaClusterTableSuite) setUpMockPDHTTPServer() (*httptest.Server }, nil })) // mock regions - router.Handle(pdapi.Regions, fn.Wrap(func() (*helper.RegionsInfo, error) { - return &helper.RegionsInfo{ + router.Handle(pd.Regions, fn.Wrap(func() (*pd.RegionsInfo, error) { + return &pd.RegionsInfo{ Count: 1, - Regions: []helper.RegionInfo{ + Regions: []pd.RegionInfo{ { ID: 1, StartKey: "", EndKey: "", - Epoch: helper.RegionEpoch{ + Epoch: pd.RegionEpoch{ ConfVer: 1, Version: 2, }, @@ -142,7 +148,7 @@ func (s *infosSchemaClusterTableSuite) setUpMockPDHTTPServer() (*httptest.Server }, nil })) // mock PD API - router.Handle(pdapi.Status, fn.Wrap(func() (interface{}, error) { + router.Handle(pd.Status, fn.Wrap(func() (interface{}, error) { return struct { Version string `json:"version"` GitHash string `json:"git_hash"` @@ -172,12 +178,12 @@ func (s *infosSchemaClusterTableSuite) setUpMockPDHTTPServer() (*httptest.Server return configuration, nil } // PD config. - router.Handle(pdapi.Config, fn.Wrap(mockConfig)) + router.Handle(pd.Config, fn.Wrap(mockConfig)) // TiDB/TiKV config. router.Handle("/config", fn.Wrap(mockConfig)) // PD region. - router.Handle(pdapi.RegionStats, fn.Wrap(func() (*helper.PDRegionStats, error) { - return &helper.PDRegionStats{ + router.Handle(pd.StatsRegion, fn.Wrap(func() (*pd.RegionStats, error) { + return &pd.RegionStats{ Count: 1, EmptyCount: 1, StorageSize: 1, @@ -218,10 +224,10 @@ func TestTiDBClusterInfo(t *testing.T) { row("pd", mockAddr, mockAddr, "4.0.0-alpha", "mock-pd-githash"), row("tikv", "store1", "", "", ""), )) - startTime := s.startTime.Format(time.RFC3339) + startTime := types.NewTime(types.FromGoTime(s.startTime), mysql.TypeDatetime, 0).String() tk.MustQuery("select type, instance, start_time from information_schema.cluster_info where type != 'tidb'").Check(testkit.Rows( row("pd", mockAddr, startTime), - row("tikv", "store1", ""), + row("tikv", "store1", startTime), )) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/infoschema/mockStoreTombstone", `return(true)`)) diff --git a/pkg/executor/infoschema_reader.go b/pkg/executor/infoschema_reader.go index d16f1b6620492..bf3747e0d410f 100644 --- a/pkg/executor/infoschema_reader.go +++ b/pkg/executor/infoschema_reader.go @@ -70,7 +70,6 @@ import ( "github.com/pingcap/tidb/pkg/util/keydecoder" "github.com/pingcap/tidb/pkg/util/logutil" "github.com/pingcap/tidb/pkg/util/memory" - "github.com/pingcap/tidb/pkg/util/pdapi" "github.com/pingcap/tidb/pkg/util/resourcegrouptag" "github.com/pingcap/tidb/pkg/util/sem" "github.com/pingcap/tidb/pkg/util/servermemorylimit" @@ -81,6 +80,7 @@ import ( "github.com/tikv/client-go/v2/tikv" "github.com/tikv/client-go/v2/tikvrpc" "github.com/tikv/client-go/v2/txnkv/txnlock" + pd "github.com/tikv/pd/client/http" "go.uber.org/zap" ) @@ -152,9 +152,9 @@ func (e *memtableRetriever) retrieve(ctx context.Context, sctx sessionctx.Contex case infoschema.TableUserPrivileges: e.setDataFromUserPrivileges(sctx) case infoschema.TableTiKVRegionStatus: - err = e.setDataForTiKVRegionStatus(sctx) + err = e.setDataForTiKVRegionStatus(ctx, sctx) case infoschema.TableTiDBHotRegions: - err = e.setDataForTiDBHotRegions(sctx) + err = e.setDataForTiDBHotRegions(ctx, sctx) case infoschema.TableConstraints: e.setDataFromTableConstraints(sctx, dbs) case infoschema.TableSessionVar: @@ -164,7 +164,7 @@ func (e *memtableRetriever) retrieve(ctx context.Context, sctx sessionctx.Contex case infoschema.TableTiFlashReplica: e.dataForTableTiFlashReplica(sctx, dbs) case infoschema.TableTiKVStoreStatus: - err = e.dataForTiKVStoreStatus(sctx) + err = e.dataForTiKVStoreStatus(ctx, sctx) case infoschema.TableClientErrorsSummaryGlobal, infoschema.TableClientErrorsSummaryByUser, infoschema.TableClientErrorsSummaryByHost: @@ -195,6 +195,8 @@ func (e *memtableRetriever) retrieve(ctx context.Context, sctx sessionctx.Contex err = e.setDataFromRunawayWatches(sctx) case infoschema.TableCheckConstraints: err = e.setDataFromCheckConstraints(sctx, dbs) + case infoschema.TableTiDBCheckConstraints: + err = e.setDataFromTiDBCheckConstraints(sctx, dbs) } if err != nil { return nil, err @@ -628,6 +630,8 @@ func (e *memtableRetriever) setDataFromTables(sctx sessionctx.Context, schemas [ return nil } +// Data for inforation_schema.CHECK_CONSTRAINTS +// This is standards (ISO/IEC 9075-11) compliant and is compatible with the implementation in MySQL as well. func (e *memtableRetriever) setDataFromCheckConstraints(sctx sessionctx.Context, schemas []*model.DBInfo) error { var rows [][]types.Datum checker := privilege.GetPrivilegeManager(sctx) @@ -656,6 +660,38 @@ func (e *memtableRetriever) setDataFromCheckConstraints(sctx sessionctx.Context, return nil } +// Data for inforation_schema.TIDB_CHECK_CONSTRAINTS +// This has non-standard TiDB specific extensions. +func (e *memtableRetriever) setDataFromTiDBCheckConstraints(sctx sessionctx.Context, schemas []*model.DBInfo) error { + var rows [][]types.Datum + checker := privilege.GetPrivilegeManager(sctx) + for _, schema := range schemas { + for _, table := range schema.Tables { + if len(table.Constraints) > 0 { + if checker != nil && !checker.RequestVerification(sctx.GetSessionVars().ActiveRoles, schema.Name.L, table.Name.L, "", mysql.SelectPriv) { + continue + } + for _, constraint := range table.Constraints { + if constraint.State != model.StatePublic { + continue + } + record := types.MakeDatums( + infoschema.CatalogVal, // CONSTRAINT_CATALOG + schema.Name.O, // CONSTRAINT_SCHEMA + constraint.Name.O, // CONSTRAINT_NAME + fmt.Sprintf("(%s)", constraint.ExprString), // CHECK_CLAUSE + table.Name.O, // TABLE_NAME + table.ID, // TABLE_ID + ) + rows = append(rows, record) + } + } + } + } + e.rows = rows + return nil +} + func (e *hugeMemTableRetriever) setDataForColumns(ctx context.Context, sctx sessionctx.Context, extractor *plannercore.ColumnsTableExtractor) error { checker := privilege.GetPrivilegeManager(sctx) e.rows = e.rows[:0] @@ -1172,8 +1208,8 @@ func (e *memtableRetriever) setDataFromViews(ctx sessionctx.Context, schemas []* e.rows = rows } -func (e *memtableRetriever) dataForTiKVStoreStatus(ctx sessionctx.Context) (err error) { - tikvStore, ok := ctx.GetStore().(helper.Storage) +func (e *memtableRetriever) dataForTiKVStoreStatus(ctx context.Context, sctx sessionctx.Context) (err error) { + tikvStore, ok := sctx.GetStore().(helper.Storage) if !ok { return errors.New("Information about TiKV store status can be gotten only when the storage is TiKV") } @@ -1181,7 +1217,11 @@ func (e *memtableRetriever) dataForTiKVStoreStatus(ctx sessionctx.Context) (err Store: tikvStore, RegionCache: tikvStore.GetRegionCache(), } - storesStat, err := tikvHelper.GetStoresStat() + pdCli, err := tikvHelper.TryGetPDHTTPClient() + if err != nil { + return err + } + storesStat, err := pdCli.GetStores(ctx) if err != nil { return err } @@ -1211,15 +1251,15 @@ func (e *memtableRetriever) dataForTiKVStoreStatus(ctx sessionctx.Context) (err row[13].SetFloat64(storeStat.Status.RegionWeight) row[14].SetFloat64(storeStat.Status.RegionScore) row[15].SetInt64(storeStat.Status.RegionSize) - startTs := types.NewTime(types.FromGoTime(storeStat.Status.StartTs), mysql.TypeDatetime, types.DefaultFsp) + startTs := types.NewTime(types.FromGoTime(storeStat.Status.StartTS), mysql.TypeDatetime, types.DefaultFsp) row[16].SetMysqlTime(startTs) - lastHeartbeatTs := types.NewTime(types.FromGoTime(storeStat.Status.LastHeartbeatTs), mysql.TypeDatetime, types.DefaultFsp) + lastHeartbeatTs := types.NewTime(types.FromGoTime(storeStat.Status.LastHeartbeatTS), mysql.TypeDatetime, types.DefaultFsp) row[17].SetMysqlTime(lastHeartbeatTs) row[18].SetString(storeStat.Status.Uptime, mysql.DefaultCollationName) if sem.IsEnabled() { // Patch out IP addresses etc if the user does not have the RESTRICTED_TABLES_ADMIN privilege - checker := privilege.GetPrivilegeManager(ctx) - if checker == nil || !checker.RequestDynamicVerification(ctx.GetSessionVars().ActiveRoles, "RESTRICTED_TABLES_ADMIN", false) { + checker := privilege.GetPrivilegeManager(sctx) + if checker == nil || !checker.RequestDynamicVerification(sctx.GetSessionVars().ActiveRoles, "RESTRICTED_TABLES_ADMIN", false) { row[1].SetString(strconv.FormatInt(storeStat.Store.ID, 10), mysql.DefaultCollationName) row[1].SetNull() row[6].SetNull() @@ -1380,11 +1420,11 @@ func (e *memtableRetriever) dataForTiDBClusterInfo(ctx sessionctx.Context) error } rows := make([][]types.Datum, 0, len(servers)) for _, server := range servers { - startTimeStr := "" upTimeStr := "" + startTimeNative := types.NewTime(types.FromGoTime(time.Now()), mysql.TypeDatetime, 0) if server.StartTimestamp > 0 { startTime := time.Unix(server.StartTimestamp, 0) - startTimeStr = startTime.Format(time.RFC3339) + startTimeNative = types.NewTime(types.FromGoTime(startTime), mysql.TypeDatetime, 0) upTimeStr = time.Since(startTime).String() } serverType := server.ServerType @@ -1397,7 +1437,7 @@ func (e *memtableRetriever) dataForTiDBClusterInfo(ctx sessionctx.Context) error server.StatusAddr, server.Version, server.GitHash, - startTimeStr, + startTimeNative, upTimeStr, server.ServerID, ) @@ -1580,7 +1620,7 @@ func keyColumnUsageInTable(schema *model.DBInfo, table *model.TableInfo) [][]typ return rows } -func (e *memtableRetriever) setDataForTiKVRegionStatus(sctx sessionctx.Context) (err error) { +func (e *memtableRetriever) setDataForTiKVRegionStatus(ctx context.Context, sctx sessionctx.Context) (err error) { checker := privilege.GetPrivilegeManager(sctx) var extractorTableIDs []int64 tikvStore, ok := sctx.GetStore().(helper.Storage) @@ -1592,14 +1632,14 @@ func (e *memtableRetriever) setDataForTiKVRegionStatus(sctx sessionctx.Context) RegionCache: tikvStore.GetRegionCache(), } requestByTableRange := false - allRegionsInfo := helper.NewRegionsInfo() + var allRegionsInfo *pd.RegionsInfo is := sctx.GetDomainInfoSchema().(infoschema.InfoSchema) if e.extractor != nil { extractor, ok := e.extractor.(*plannercore.TiKVRegionStatusExtractor) if ok && len(extractor.GetTablesID()) > 0 { extractorTableIDs = extractor.GetTablesID() for _, tableID := range extractorTableIDs { - regionsInfo, err := e.getRegionsInfoForTable(tikvHelper, is, tableID) + regionsInfo, err := e.getRegionsInfoForTable(ctx, tikvHelper, is, tableID) if err != nil { if errors.ErrorEqual(err, infoschema.ErrTableExists) { continue @@ -1612,7 +1652,11 @@ func (e *memtableRetriever) setDataForTiKVRegionStatus(sctx sessionctx.Context) } } if !requestByTableRange { - allRegionsInfo, err = tikvHelper.GetRegionsInfo() + pdCli, err := tikvHelper.TryGetPDHTTPClient() + if err != nil { + return err + } + allRegionsInfo, err = pdCli.GetRegions(ctx) if err != nil { return err } @@ -1638,7 +1682,7 @@ func (e *memtableRetriever) setDataForTiKVRegionStatus(sctx sessionctx.Context) return nil } -func (e *memtableRetriever) getRegionsInfoForTable(h *helper.Helper, is infoschema.InfoSchema, tableID int64) (*helper.RegionsInfo, error) { +func (e *memtableRetriever) getRegionsInfoForTable(ctx context.Context, h *helper.Helper, is infoschema.InfoSchema, tableID int64) (*pd.RegionsInfo, error) { tbl, _ := is.TableByID(tableID) if tbl == nil { return nil, infoschema.ErrTableExists.GenWithStackByArgs(tableID) @@ -1646,16 +1690,16 @@ func (e *memtableRetriever) getRegionsInfoForTable(h *helper.Helper, is infosche pt := tbl.Meta().GetPartitionInfo() if pt == nil { - regionsInfo, err := e.getRegionsInfoForSingleTable(h, tableID) + regionsInfo, err := e.getRegionsInfoForSingleTable(ctx, h, tableID) if err != nil { return nil, err } return regionsInfo, nil } - allRegionsInfo := helper.NewRegionsInfo() + var allRegionsInfo *pd.RegionsInfo for _, def := range pt.Definitions { - regionsInfo, err := e.getRegionsInfoForSingleTable(h, def.ID) + regionsInfo, err := e.getRegionsInfoForSingleTable(ctx, h, def.ID) if err != nil { return nil, err } @@ -1664,13 +1708,17 @@ func (e *memtableRetriever) getRegionsInfoForTable(h *helper.Helper, is infosche return allRegionsInfo, nil } -func (*memtableRetriever) getRegionsInfoForSingleTable(helper *helper.Helper, tableID int64) (*helper.RegionsInfo, error) { +func (*memtableRetriever) getRegionsInfoForSingleTable(ctx context.Context, helper *helper.Helper, tableID int64) (*pd.RegionsInfo, error) { + pdCli, err := helper.TryGetPDHTTPClient() + if err != nil { + return nil, err + } sk, ek := tablecodec.GetTableHandleKeyRange(tableID) - sRegion, err := helper.GetRegionByKey(codec.EncodeBytes(nil, sk)) + sRegion, err := pdCli.GetRegionByKey(ctx, codec.EncodeBytes(nil, sk)) if err != nil { return nil, err } - eRegion, err := helper.GetRegionByKey(codec.EncodeBytes(nil, ek)) + eRegion, err := pdCli.GetRegionByKey(ctx, codec.EncodeBytes(nil, ek)) if err != nil { return nil, err } @@ -1682,10 +1730,10 @@ func (*memtableRetriever) getRegionsInfoForSingleTable(helper *helper.Helper, ta if err != nil { return nil, err } - return helper.GetRegionsInfoByRange(sk, ek) + return pdCli.GetRegionsByKeyRange(ctx, pd.NewKeyRange(sk, ek), -1) } -func (e *memtableRetriever) setNewTiKVRegionStatusCol(region *helper.RegionInfo, table *helper.TableInfo) { +func (e *memtableRetriever) setNewTiKVRegionStatusCol(region *pd.RegionInfo, table *helper.TableInfo) { row := make([]types.Datum, len(infoschema.TableTiKVRegionStatusCols)) row[0].SetInt64(region.ID) row[1].SetString(region.StartKey, mysql.DefaultCollationName) @@ -1731,22 +1779,22 @@ const ( downPeer = "DOWN" ) -func (e *memtableRetriever) setDataForTiDBHotRegions(ctx sessionctx.Context) error { - tikvStore, ok := ctx.GetStore().(helper.Storage) +func (e *memtableRetriever) setDataForTiDBHotRegions(ctx context.Context, sctx sessionctx.Context) error { + tikvStore, ok := sctx.GetStore().(helper.Storage) if !ok { return errors.New("Information about hot region can be gotten only when the storage is TiKV") } - allSchemas := ctx.GetInfoSchema().(infoschema.InfoSchema).AllSchemas() + allSchemas := sctx.GetInfoSchema().(infoschema.InfoSchema).AllSchemas() tikvHelper := &helper.Helper{ Store: tikvStore, RegionCache: tikvStore.GetRegionCache(), } - metrics, err := tikvHelper.ScrapeHotInfo(pdapi.HotRead, allSchemas) + metrics, err := tikvHelper.ScrapeHotInfo(ctx, helper.HotRead, allSchemas) if err != nil { return err } e.setDataForHotRegionByMetrics(metrics, "read") - metrics, err = tikvHelper.ScrapeHotInfo(pdapi.HotWrite, allSchemas) + metrics, err = tikvHelper.ScrapeHotInfo(ctx, helper.HotWrite, allSchemas) if err != nil { return err } @@ -1855,10 +1903,10 @@ type tableStorageStatsRetriever struct { initialTables []*initialTable curTable int helper *helper.Helper - stats helper.PDRegionStats + stats *pd.RegionStats } -func (e *tableStorageStatsRetriever) retrieve(_ context.Context, sctx sessionctx.Context) ([][]types.Datum, error) { +func (e *tableStorageStatsRetriever) retrieve(ctx context.Context, sctx sessionctx.Context) ([][]types.Datum, error) { if e.retrieved { return nil, nil } @@ -1873,7 +1921,7 @@ func (e *tableStorageStatsRetriever) retrieve(_ context.Context, sctx sessionctx return nil, nil } - rows, err := e.setDataForTableStorageStats() + rows, err := e.setDataForTableStorageStats(ctx) if err != nil { return nil, err } @@ -1961,7 +2009,7 @@ func (e *tableStorageStatsRetriever) initialize(sctx sessionctx.Context) error { return nil } -func (e *tableStorageStatsRetriever) setDataForTableStorageStats() ([][]types.Datum, error) { +func (e *tableStorageStatsRetriever) setDataForTableStorageStats(ctx context.Context) ([][]types.Datum, error) { rows := make([][]types.Datum, 0, 1024) count := 0 for e.curTable < len(e.initialTables) && count < 1024 { @@ -1973,9 +2021,9 @@ func (e *tableStorageStatsRetriever) setDataForTableStorageStats() ([][]types.Da tblIDs = append(tblIDs, partDef.ID) } } - + var err error for _, tableID := range tblIDs { - err := e.helper.GetPDRegionStats(tableID, &e.stats, false) + e.stats, err = e.helper.GetPDRegionStats(ctx, tableID, false) if err != nil { return nil, err } @@ -2051,7 +2099,7 @@ func dataForAnalyzeStatusHelper(ctx context.Context, sctx sessionctx.Context) (r } var remainDurationStr, progressDouble, estimatedRowCntStr interface{} - if state == statistics.AnalyzeRunning { + if state == statistics.AnalyzeRunning && !strings.HasPrefix(jobInfo, "merge global stats") { startTime, ok := startTime.(types.Time) if !ok { return nil, errors.New("invalid start time") @@ -2131,7 +2179,7 @@ func getRemainDurationForAnalyzeStatusHelper( } } if tid > 0 && totalCnt == 0 { - totalCnt, _ = pdhelper.GlobalPDHelper.GetApproximateTableCountFromStorage(sctx, tid, dbName, tableName, partitionName) + totalCnt, _ = pdhelper.GlobalPDHelper.GetApproximateTableCountFromStorage(ctx, sctx, tid, dbName, tableName, partitionName) } remainingDuration, percentage = calRemainInfoForAnalyzeStatus(ctx, int64(totalCnt), processedRows, duration) } @@ -2256,9 +2304,11 @@ func (e *memtableRetriever) setDataFromSequences(ctx sessionctx.Context, schemas // dataForTableTiFlashReplica constructs data for table tiflash replica info. func (e *memtableRetriever) dataForTableTiFlashReplica(ctx sessionctx.Context, schemas []*model.DBInfo) { - checker := privilege.GetPrivilegeManager(ctx) - var rows [][]types.Datum - var tiFlashStores map[int64]helper.StoreStat + var ( + checker = privilege.GetPrivilegeManager(ctx) + rows [][]types.Datum + tiFlashStores map[int64]pd.StoreInfo + ) for _, schema := range schemas { for _, tbl := range schema.Tables { if tbl.TiFlashReplica == nil { @@ -3150,7 +3200,7 @@ func (e *memtableRetriever) setDataForAttributes(ctx sessionctx.Context, is info rules = []*label.Rule{ { ID: "schema/test/test_label", - Labels: []label.Label{{Key: "merge_option", Value: "allow"}, {Key: "db", Value: "test"}, {Key: "table", Value: "test_label"}}, + Labels: []pd.RegionLabel{{Key: "merge_option", Value: "allow"}, {Key: "db", Value: "test"}, {Key: "table", Value: "test_label"}}, RuleType: "key-range", Data: convert(map[string]interface{}{ "start_key": "7480000000000000ff395f720000000000fa", @@ -3159,7 +3209,7 @@ func (e *memtableRetriever) setDataForAttributes(ctx sessionctx.Context, is info }, { ID: "invalidIDtest", - Labels: []label.Label{{Key: "merge_option", Value: "allow"}, {Key: "db", Value: "test"}, {Key: "table", Value: "test_label"}}, + Labels: []pd.RegionLabel{{Key: "merge_option", Value: "allow"}, {Key: "db", Value: "test"}, {Key: "table", Value: "test_label"}}, RuleType: "key-range", Data: convert(map[string]interface{}{ "start_key": "7480000000000000ff395f720000000000fa", @@ -3168,7 +3218,7 @@ func (e *memtableRetriever) setDataForAttributes(ctx sessionctx.Context, is info }, { ID: "schema/test/test_label", - Labels: []label.Label{{Key: "merge_option", Value: "allow"}, {Key: "db", Value: "test"}, {Key: "table", Value: "test_label"}}, + Labels: []pd.RegionLabel{{Key: "merge_option", Value: "allow"}, {Key: "db", Value: "test"}, {Key: "table", Value: "test_label"}}, RuleType: "key-range", Data: convert(map[string]interface{}{ "start_key": "aaaaa", @@ -3209,9 +3259,9 @@ func (e *memtableRetriever) setDataForAttributes(ctx sessionctx.Context, is info continue } - labels := rule.Labels.Restore() + labels := label.RestoreRegionLabels(&rule.Labels) var ranges []string - for _, data := range rule.Data { + for _, data := range rule.Data.([]interface{}) { if kv, ok := data.(map[string]interface{}); ok { startKey := kv["start_key"] endKey := kv["end_key"] @@ -3412,11 +3462,12 @@ func checkRule(rule *label.Rule) (dbName, tableName string, partitionName string } func decodeTableIDFromRule(rule *label.Rule) (tableID int64, err error) { - if len(rule.Data) == 0 { + datas := rule.Data.([]interface{}) + if len(datas) == 0 { err = fmt.Errorf("there is no data in rule %s", rule.ID) return } - data := rule.Data[0] + data := datas[0] dataMap, ok := data.(map[string]interface{}) if !ok { err = fmt.Errorf("get the label rules %s failed", rule.ID) diff --git a/pkg/executor/infoschema_reader_internal_test.go b/pkg/executor/infoschema_reader_internal_test.go index 3585c50e3787d..df9a0336c9dfd 100644 --- a/pkg/executor/infoschema_reader_internal_test.go +++ b/pkg/executor/infoschema_reader_internal_test.go @@ -71,3 +71,55 @@ func TestSetDataFromCheckConstraints(t *testing.T) { require.Equal(t, types.NewStringDatum("t2_c1"), mt.rows[0][2]) require.Equal(t, types.NewStringDatum("(id<10)"), mt.rows[0][3]) } + +func TestSetDataFromTiDBCheckConstraints(t *testing.T) { + mt := memtableRetriever{} + sctx := defaultCtx() + dbs := []*model.DBInfo{ + { + ID: 1, + Name: model.NewCIStr("test"), + Tables: []*model.TableInfo{ + { + ID: 1, + Name: model.NewCIStr("t1"), + }, + { + ID: 2, + Name: model.NewCIStr("t2"), + Constraints: []*model.ConstraintInfo{ + { + Name: model.NewCIStr("t2_c1"), + Table: model.NewCIStr("t2"), + ExprString: "id<10", + State: model.StatePublic, + }, + }, + }, + { + ID: 3, + Name: model.NewCIStr("t3"), + Constraints: []*model.ConstraintInfo{ + { + Name: model.NewCIStr("t3_c1"), + Table: model.NewCIStr("t3"), + ExprString: "id<10", + State: model.StateDeleteOnly, + }, + }, + }, + }, + }, + } + err := mt.setDataFromTiDBCheckConstraints(sctx, dbs) + require.NoError(t, err) + + require.Equal(t, 1, len(mt.rows)) // 1 row + require.Equal(t, 6, len(mt.rows[0])) // 6 columns + require.Equal(t, types.NewStringDatum("def"), mt.rows[0][0]) + require.Equal(t, types.NewStringDatum("test"), mt.rows[0][1]) + require.Equal(t, types.NewStringDatum("t2_c1"), mt.rows[0][2]) + require.Equal(t, types.NewStringDatum("(id<10)"), mt.rows[0][3]) + require.Equal(t, types.NewStringDatum("t2"), mt.rows[0][4]) + require.Equal(t, types.NewIntDatum(2), mt.rows[0][5]) +} diff --git a/pkg/executor/insert.go b/pkg/executor/insert.go index 570ef2c7fec44..a1a5e8836c370 100644 --- a/pkg/executor/insert.go +++ b/pkg/executor/insert.go @@ -398,19 +398,20 @@ func (e *InsertExec) doDupRowUpdate(ctx context.Context, handle kv.Handle, oldRo // Update old row when the key is duplicated. e.evalBuffer4Dup.SetDatums(e.row4Update...) - sc := e.Ctx().GetSessionVars().StmtCtx + sctx := e.Ctx() + sc := sctx.GetSessionVars().StmtCtx warnCnt := int(sc.WarningCount()) for _, col := range cols { if col.LazyErr != nil { return col.LazyErr } - val, err1 := col.Expr.Eval(e.evalBuffer4Dup.ToRow()) + val, err1 := col.Expr.Eval(sctx, e.evalBuffer4Dup.ToRow()) if err1 != nil { return err1 } c := col.Col.ToInfo() c.Name = col.ColName - e.row4Update[col.Col.Index], err1 = table.CastValue(e.Ctx(), val, c, false, false) + e.row4Update[col.Col.Index], err1 = table.CastValue(sctx, val, c, false, false) if err1 != nil { return err1 } diff --git a/pkg/executor/insert_common.go b/pkg/executor/insert_common.go index 9a2d4d25ceef3..35464cf7df89d 100644 --- a/pkg/executor/insert_common.go +++ b/pkg/executor/insert_common.go @@ -347,14 +347,15 @@ func (e *InsertValues) evalRow(ctx context.Context, list []expression.Expression } e.evalBuffer.SetDatums(row...) - sc := e.Ctx().GetSessionVars().StmtCtx + sctx := e.Ctx() + sc := sctx.GetSessionVars().StmtCtx warnCnt := int(sc.WarningCount()) for i, expr := range list { - val, err := expr.Eval(e.evalBuffer.ToRow()) + val, err := expr.Eval(sctx, e.evalBuffer.ToRow()) if err != nil { return nil, err } - val1, err := table.CastValue(e.Ctx(), val, e.insertColumns[i].ToInfo(), false, false) + val1, err := table.CastValue(sctx, val, e.insertColumns[i].ToInfo(), false, false) if err = e.handleErr(e.insertColumns[i], &val, rowIdx, err); err != nil { return nil, err } @@ -386,15 +387,16 @@ func (e *InsertValues) fastEvalRow(ctx context.Context, list []expression.Expres } row := make([]types.Datum, rowLen) hasValue := make([]bool, rowLen) - sc := e.Ctx().GetSessionVars().StmtCtx + sctx := e.Ctx() + sc := sctx.GetSessionVars().StmtCtx warnCnt := int(sc.WarningCount()) for i, expr := range list { con := expr.(*expression.Constant) - val, err := con.Eval(emptyRow) + val, err := con.Eval(sctx, emptyRow) if err = e.handleErr(e.insertColumns[i], &val, rowIdx, err); err != nil { return nil, err } - val1, err := table.CastValue(e.Ctx(), val, e.insertColumns[i].ToInfo(), false, false) + val1, err := table.CastValue(sctx, val, e.insertColumns[i].ToInfo(), false, false) if err = e.handleErr(e.insertColumns[i], &val, rowIdx, err); err != nil { return nil, err } @@ -698,11 +700,12 @@ func (e *InsertValues) fillRow(ctx context.Context, row []types.Datum, hasValue } } - sc := e.Ctx().GetSessionVars().StmtCtx + sctx := e.Ctx() + sc := sctx.GetSessionVars().StmtCtx warnCnt := int(sc.WarningCount()) for i, gCol := range gCols { colIdx := gCol.ColumnInfo.Offset - val, err := e.GenExprs[i].Eval(chunk.MutRowFromDatums(row).ToRow()) + val, err := e.GenExprs[i].Eval(sctx, chunk.MutRowFromDatums(row).ToRow()) if err != nil && gCol.FieldType.IsArray() { return nil, completeError(tbl, gCol.Offset, rowIdx, err) } @@ -721,7 +724,7 @@ func (e *InsertValues) fillRow(ctx context.Context, row []types.Datum, hasValue warnCnt += len(newWarnings) } // Handle the bad null error. - if err = gCol.HandleBadNull(&row[colIdx], e.Ctx().GetSessionVars().StmtCtx, rowCntInLoadData); err != nil { + if err = gCol.HandleBadNull(&row[colIdx], sc, rowCntInLoadData); err != nil { return nil, err } } diff --git a/pkg/executor/insert_test.go b/pkg/executor/insert_test.go index aef0018a08660..6b0733ed5426f 100644 --- a/pkg/executor/insert_test.go +++ b/pkg/executor/insert_test.go @@ -30,12 +30,6 @@ import ( "github.com/stretchr/testify/require" ) -func TestInsertOnDuplicateKey(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - testInsertOnDuplicateKey(t, tk) -} - func TestInsertOnDuplicateKeyWithBinlog(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) diff --git a/pkg/executor/inspection_result_test.go b/pkg/executor/inspection_result_test.go index 462290347e446..29638352b75e3 100644 --- a/pkg/executor/inspection_result_test.go +++ b/pkg/executor/inspection_result_test.go @@ -21,13 +21,14 @@ import ( "path/filepath" "strings" "testing" + "time" "github.com/pingcap/failpoint" "github.com/pingcap/kvproto/pkg/diagnosticspb" "github.com/pingcap/sysutil" "github.com/pingcap/tidb/pkg/infoschema" "github.com/pingcap/tidb/pkg/parser/mysql" - "github.com/pingcap/tidb/pkg/session" + sessiontypes "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/testkit" "github.com/pingcap/tidb/pkg/types" @@ -178,8 +179,8 @@ func TestInspectionResult(t *testing.T) { } } -func parseTime(t *testing.T, se session.Session, str string) types.Time { - time, err := types.ParseTime(se.GetSessionVars().StmtCtx.TypeCtx(), str, mysql.TypeDatetime, types.MaxFsp, nil) +func parseTime(t *testing.T, se sessiontypes.Session, str string) types.Time { + time, err := types.ParseTime(se.GetSessionVars().StmtCtx.TypeCtx(), str, mysql.TypeDatetime, types.MaxFsp) require.NoError(t, err) return time } @@ -204,14 +205,16 @@ func createInspectionContext(t *testing.T, mockData map[string][][]types.Datum, }, } // mock cluster information + timeNow := types.NewTime(types.FromGoTime(time.Now()), mysql.TypeDatetime, 0) configurations[infoschema.TableClusterInfo] = variable.TableSnapshot{ Rows: [][]types.Datum{ - types.MakeDatums("pd", "pd-0", "pd-0", "4.0", "a234c", "", ""), - types.MakeDatums("tidb", "tidb-0", "tidb-0s", "4.0", "a234c", "", ""), - types.MakeDatums("tidb", "tidb-1", "tidb-1s", "4.0", "a234c", "", ""), - types.MakeDatums("tikv", "tikv-0", "tikv-0s", "4.0", "a234c", "", ""), - types.MakeDatums("tikv", "tikv-1", "tikv-1s", "4.0", "a234c", "", ""), - types.MakeDatums("tikv", "tikv-2", "tikv-2s", "4.0", "a234c", "", ""), + // Columns: TYPE, INSTANCE, STATUS_ADDRESS, VERSION, GIT_HASH, START_TIME, UPTIME + types.MakeDatums("pd", "pd-0", "pd-0", "4.0", "a234c", timeNow, ""), + types.MakeDatums("tidb", "tidb-0", "tidb-0s", "4.0", "a234c", timeNow, ""), + types.MakeDatums("tidb", "tidb-1", "tidb-1s", "4.0", "a234c", timeNow, ""), + types.MakeDatums("tikv", "tikv-0", "tikv-0s", "4.0", "a234c", timeNow, ""), + types.MakeDatums("tikv", "tikv-1", "tikv-1s", "4.0", "a234c", timeNow, ""), + types.MakeDatums("tikv", "tikv-2", "tikv-2s", "4.0", "a234c", timeNow, ""), }, } // mock cluster system information @@ -338,7 +341,7 @@ func TestThresholdCheckInspection2(t *testing.T) { tk := testkit.NewTestKit(t, store) tk.MustExec("use test") datetime := func(s string) types.Time { - time, err := types.ParseTime(tk.Session().GetSessionVars().StmtCtx.TypeCtx(), s, mysql.TypeDatetime, types.MaxFsp, nil) + time, err := types.ParseTime(tk.Session().GetSessionVars().StmtCtx.TypeCtx(), s, mysql.TypeDatetime, types.MaxFsp) require.NoError(t, err) return time } @@ -421,7 +424,7 @@ func TestThresholdCheckInspection3(t *testing.T) { tk := testkit.NewTestKit(t, store) tk.MustExec("use test") datetime := func(s string) types.Time { - time, err := types.ParseTime(tk.Session().GetSessionVars().StmtCtx.TypeCtx(), s, mysql.TypeDatetime, types.MaxFsp, nil) + time, err := types.ParseTime(tk.Session().GetSessionVars().StmtCtx.TypeCtx(), s, mysql.TypeDatetime, types.MaxFsp) require.NoError(t, err) return time } @@ -628,7 +631,7 @@ func TestNodeLoadInspection(t *testing.T) { tk := testkit.NewTestKit(t, store) tk.MustExec("use test") datetime := func(s string) types.Time { - time, err := types.ParseTime(tk.Session().GetSessionVars().StmtCtx.TypeCtx(), s, mysql.TypeDatetime, types.MaxFsp, nil) + time, err := types.ParseTime(tk.Session().GetSessionVars().StmtCtx.TypeCtx(), s, mysql.TypeDatetime, types.MaxFsp) require.NoError(t, err) return time } @@ -704,7 +707,7 @@ func TestConfigCheckOfStorageBlockCacheSize(t *testing.T) { tk := testkit.NewTestKit(t, store) tk.MustExec("use test") datetime := func(s string) types.Time { - time, err := types.ParseTime(tk.Session().GetSessionVars().StmtCtx.TypeCtx(), s, mysql.TypeDatetime, types.MaxFsp, nil) + time, err := types.ParseTime(tk.Session().GetSessionVars().StmtCtx.TypeCtx(), s, mysql.TypeDatetime, types.MaxFsp) require.NoError(t, err) return time } diff --git a/pkg/executor/inspection_summary_test.go b/pkg/executor/inspection_summary_test.go index e36cc44db715c..25e84b77c2589 100644 --- a/pkg/executor/inspection_summary_test.go +++ b/pkg/executor/inspection_summary_test.go @@ -51,7 +51,7 @@ func TestInspectionSummary(t *testing.T) { defer func() { require.NoError(t, failpoint.Disable(fpName)) }() datetime := func(s string) types.Time { - time, err := types.ParseTime(tk.Session().GetSessionVars().StmtCtx.TypeCtx(), s, mysql.TypeDatetime, types.MaxFsp, nil) + time, err := types.ParseTime(tk.Session().GetSessionVars().StmtCtx.TypeCtx(), s, mysql.TypeDatetime, types.MaxFsp) require.NoError(t, err) return time } diff --git a/pkg/executor/internal/BUILD.bazel b/pkg/executor/internal/BUILD.bazel index 240510f070017..e69de29bb2d1d 100644 --- a/pkg/executor/internal/BUILD.bazel +++ b/pkg/executor/internal/BUILD.bazel @@ -1,9 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") - -go_library( - name = "internal", - srcs = ["testkit.go"], - importpath = "github.com/pingcap/tidb/pkg/executor/internal", - visibility = ["//pkg/executor:__subpackages__"], - deps = ["//pkg/testkit"], -) diff --git a/pkg/executor/internal/calibrateresource/BUILD.bazel b/pkg/executor/internal/calibrateresource/BUILD.bazel index 40912760507ef..579adff6fceab 100644 --- a/pkg/executor/internal/calibrateresource/BUILD.bazel +++ b/pkg/executor/internal/calibrateresource/BUILD.bazel @@ -45,6 +45,7 @@ go_test( "//pkg/types", "@com_github_pingcap_errors//:errors", "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/meta_storagepb", "@com_github_stretchr_testify//require", "@com_github_tikv_client_go_v2//tikv", "@com_github_tikv_pd_client//:client", diff --git a/pkg/executor/internal/calibrateresource/calibrate_resource_test.go b/pkg/executor/internal/calibrateresource/calibrate_resource_test.go index af3a017fcb1ae..6fb9467454c7e 100644 --- a/pkg/executor/internal/calibrateresource/calibrate_resource_test.go +++ b/pkg/executor/internal/calibrateresource/calibrate_resource_test.go @@ -15,6 +15,7 @@ package calibrateresource_test import ( + "bytes" "context" "encoding/json" "testing" @@ -22,6 +23,7 @@ import ( "github.com/pingcap/errors" "github.com/pingcap/failpoint" + "github.com/pingcap/kvproto/pkg/meta_storagepb" "github.com/pingcap/tidb/pkg/domain" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/testkit" @@ -87,7 +89,7 @@ func TestCalibrateResource(t *testing.T) { }() datetime := func(s string) types.Time { - time, err := types.ParseTime(tk.Session().GetSessionVars().StmtCtx.TypeCtx(), s, mysql.TypeDatetime, types.MaxFsp, nil) + time, err := types.ParseTime(tk.Session().GetSessionVars().StmtCtx.TypeCtx(), s, mysql.TypeDatetime, types.MaxFsp) require.NoError(t, err) return time } @@ -783,13 +785,18 @@ type mockResourceGroupProvider struct { cfg rmclient.Config } -func (p *mockResourceGroupProvider) LoadGlobalConfig(ctx context.Context, names []string, configPath string) ([]pd.GlobalConfigItem, int64, error) { - if configPath != "resource_group/controller" { - return nil, 0, errors.New("unsupported configPath") +func (p *mockResourceGroupProvider) Get(ctx context.Context, key []byte, opts ...pd.OpOption) (*meta_storagepb.GetResponse, error) { + if !bytes.Equal(pd.ControllerConfigPathPrefixBytes, key) { + return nil, errors.New("unsupported configPath") } payload, _ := json.Marshal(&p.cfg) - item := pd.GlobalConfigItem{ - PayLoad: payload, - } - return []pd.GlobalConfigItem{item}, 0, nil + return &meta_storagepb.GetResponse{ + Count: 1, + Kvs: []*meta_storagepb.KeyValue{ + { + Key: key, + Value: payload, + }, + }, + }, nil } diff --git a/pkg/executor/internal/mpp/local_mpp_coordinator.go b/pkg/executor/internal/mpp/local_mpp_coordinator.go index 53621e4bf7223..f18f48658cbad 100644 --- a/pkg/executor/internal/mpp/local_mpp_coordinator.go +++ b/pkg/executor/internal/mpp/local_mpp_coordinator.go @@ -237,6 +237,8 @@ func (c *localMppCoordinator) appendMPPDispatchReq(pf *plannercore.Fragment) err ReportExecutionSummary: c.reportExecutionInfo, State: kv.MppTaskReady, ResourceGroupName: rgName, + ConnectionID: c.sessionCtx.GetSessionVars().ConnectionID, + ConnectionAlias: c.sessionCtx.ShowProcess().SessionAlias, } c.reqMap[req.ID] = &mppRequestReport{mppReq: req, receivedReport: false, errMsg: "", executionSummaries: nil} c.mppReqs = append(c.mppReqs, req) diff --git a/pkg/executor/internal/pdhelper/pd.go b/pkg/executor/internal/pdhelper/pd.go index 2dfd04a9c558b..1a24e29016f3f 100644 --- a/pkg/executor/internal/pdhelper/pd.go +++ b/pkg/executor/internal/pdhelper/pd.go @@ -39,7 +39,7 @@ var globalPDHelperOnce sync.Once type PDHelper struct { cacheForApproximateTableCountFromStorage *ttlcache.Cache[string, float64] - getApproximateTableCountFromStorageFunc func(sctx sessionctx.Context, tid int64, dbName, tableName, partitionName string) (float64, bool) + getApproximateTableCountFromStorageFunc func(ctx context.Context, sctx sessionctx.Context, tid int64, dbName, tableName, partitionName string) (float64, bool) wg util.WaitGroupWrapper } @@ -72,24 +72,28 @@ func approximateTableCountKey(tid int64, dbName, tableName, partitionName string } // GetApproximateTableCountFromStorage gets the approximate count of the table. -func (p *PDHelper) GetApproximateTableCountFromStorage(sctx sessionctx.Context, tid int64, dbName, tableName, partitionName string) (float64, bool) { +func (p *PDHelper) GetApproximateTableCountFromStorage( + ctx context.Context, sctx sessionctx.Context, + tid int64, dbName, tableName, partitionName string, +) (float64, bool) { key := approximateTableCountKey(tid, dbName, tableName, partitionName) if item := p.cacheForApproximateTableCountFromStorage.Get(key); item != nil { return item.Value(), true } - result, hasPD := p.getApproximateTableCountFromStorageFunc(sctx, tid, dbName, tableName, partitionName) + result, hasPD := p.getApproximateTableCountFromStorageFunc(ctx, sctx, tid, dbName, tableName, partitionName) p.cacheForApproximateTableCountFromStorage.Set(key, result, ttlcache.DefaultTTL) return result, hasPD } -func getApproximateTableCountFromStorage(sctx sessionctx.Context, tid int64, dbName, tableName, partitionName string) (float64, bool) { +func getApproximateTableCountFromStorage( + ctx context.Context, sctx sessionctx.Context, + tid int64, dbName, tableName, partitionName string, +) (float64, bool) { tikvStore, ok := sctx.GetStore().(helper.Storage) if !ok { return 0, false } - regionStats := &helper.PDRegionStats{} - pdHelper := helper.NewHelper(tikvStore) - err := pdHelper.GetPDRegionStats(tid, regionStats, true) + regionStats, err := helper.NewHelper(tikvStore).GetPDRegionStats(ctx, tid, true) failpoint.Inject("calcSampleRateByStorageCount", func() { // Force the TiDB thinking that there's PD and the count of region is small. err = nil @@ -112,7 +116,7 @@ func getApproximateTableCountFromStorage(sctx sessionctx.Context, tid int64, dbN if partitionName != "" { sqlescape.MustFormatSQL(sql, " partition(%n)", partitionName) } - ctx := kv.WithInternalSourceType(context.Background(), kv.InternalTxnStats) + ctx = kv.WithInternalSourceType(ctx, kv.InternalTxnStats) rows, _, err := sctx.(sqlexec.RestrictedSQLExecutor).ExecRestrictedSQL(ctx, nil, sql.String()) if err != nil { return 0, false diff --git a/pkg/executor/internal/pdhelper/pd_test.go b/pkg/executor/internal/pdhelper/pd_test.go index 134cbdced5786..f35c9c9e5a93f 100644 --- a/pkg/executor/internal/pdhelper/pd_test.go +++ b/pkg/executor/internal/pdhelper/pd_test.go @@ -15,6 +15,7 @@ package pdhelper import ( + "context" "testing" "time" @@ -33,7 +34,7 @@ func (m *mockClient) getMissCnt() int { return m.missCnt } -func (m *mockClient) getFakeApproximateTableCountFromStorage(_ sessionctx.Context, _ int64, _, _, _ string) (float64, bool) { +func (m *mockClient) getFakeApproximateTableCountFromStorage(_ context.Context, _ sessionctx.Context, _ int64, _, _, _ string) (float64, bool) { m.missCnt++ return 1.0, true } @@ -47,21 +48,22 @@ func TestTTLCache(t *testing.T) { cacheForApproximateTableCountFromStorage: cache, getApproximateTableCountFromStorageFunc: globalMockClient.getFakeApproximateTableCountFromStorage, } - helper.GetApproximateTableCountFromStorage(nil, 1, "db", "table", "partition") // Miss + ctx := context.Background() + helper.GetApproximateTableCountFromStorage(ctx, nil, 1, "db", "table", "partition") // Miss require.Equal(t, 1, globalMockClient.getMissCnt()) - helper.GetApproximateTableCountFromStorage(nil, 1, "db", "table", "partition") // Hit + helper.GetApproximateTableCountFromStorage(ctx, nil, 1, "db", "table", "partition") // Hit require.Equal(t, 1, globalMockClient.getMissCnt()) - helper.GetApproximateTableCountFromStorage(nil, 2, "db1", "table1", "partition") // Miss + helper.GetApproximateTableCountFromStorage(ctx, nil, 2, "db1", "table1", "partition") // Miss require.Equal(t, 2, globalMockClient.getMissCnt()) - helper.GetApproximateTableCountFromStorage(nil, 3, "db2", "table2", "partition") // Miss - helper.GetApproximateTableCountFromStorage(nil, 1, "db", "table", "partition") // Miss + helper.GetApproximateTableCountFromStorage(ctx, nil, 3, "db2", "table2", "partition") // Miss + helper.GetApproximateTableCountFromStorage(ctx, nil, 1, "db", "table", "partition") // Miss require.Equal(t, 4, globalMockClient.getMissCnt()) - helper.GetApproximateTableCountFromStorage(nil, 3, "db2", "table2", "partition") // Hit + helper.GetApproximateTableCountFromStorage(ctx, nil, 3, "db2", "table2", "partition") // Hit require.Equal(t, 4, globalMockClient.getMissCnt()) time.Sleep(200 * time.Millisecond) // All is miss. - helper.GetApproximateTableCountFromStorage(nil, 1, "db", "table", "partition") - helper.GetApproximateTableCountFromStorage(nil, 2, "db1", "table1", "partition") - helper.GetApproximateTableCountFromStorage(nil, 3, "db2", "table2", "partition") + helper.GetApproximateTableCountFromStorage(ctx, nil, 1, "db", "table", "partition") + helper.GetApproximateTableCountFromStorage(ctx, nil, 2, "db1", "table1", "partition") + helper.GetApproximateTableCountFromStorage(ctx, nil, 3, "db2", "table2", "partition") require.Equal(t, 7, globalMockClient.getMissCnt()) } diff --git a/pkg/executor/internal/testutil/BUILD.bazel b/pkg/executor/internal/testutil/BUILD.bazel new file mode 100644 index 0000000000000..62764c8c5c033 --- /dev/null +++ b/pkg/executor/internal/testutil/BUILD.bazel @@ -0,0 +1,29 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "testutil", + srcs = [ + "agg.go", + "limit.go", + "sort.go", + "testutil.go", + "window.go", + ], + importpath = "github.com/pingcap/tidb/pkg/executor/internal/testutil", + visibility = ["//pkg/executor:__subpackages__"], + deps = [ + "//pkg/executor/internal/exec", + "//pkg/expression", + "//pkg/parser/ast", + "//pkg/parser/mysql", + "//pkg/planner/core", + "//pkg/planner/property", + "//pkg/sessionctx", + "//pkg/sessionctx/variable", + "//pkg/types", + "//pkg/util/chunk", + "//pkg/util/memory", + "//pkg/util/mock", + "//pkg/util/stringutil", + ], +) diff --git a/pkg/executor/internal/testutil/agg.go b/pkg/executor/internal/testutil/agg.go new file mode 100644 index 0000000000000..4905cdc090d63 --- /dev/null +++ b/pkg/executor/internal/testutil/agg.go @@ -0,0 +1,71 @@ +// Copyright 2023 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 testutil + +import ( + "fmt" + + "github.com/pingcap/tidb/pkg/expression" + "github.com/pingcap/tidb/pkg/parser/ast" + "github.com/pingcap/tidb/pkg/parser/mysql" + "github.com/pingcap/tidb/pkg/sessionctx" + "github.com/pingcap/tidb/pkg/sessionctx/variable" + "github.com/pingcap/tidb/pkg/types" + "github.com/pingcap/tidb/pkg/util/mock" +) + +// AggTestCase has a fixed schema (aggCol Double, groupBy LongLong). +type AggTestCase struct { + Ctx sessionctx.Context + ExecType string + AggFunc string + GroupByNDV int + Rows int + Concurrency int + DataSourceSorted bool + HasDistinct bool +} + +// Columns creates columns +func (AggTestCase) Columns() []*expression.Column { + return []*expression.Column{ + {Index: 0, RetType: types.NewFieldType(mysql.TypeDouble)}, + {Index: 1, RetType: types.NewFieldType(mysql.TypeLonglong)}, + } +} + +// String gets case content +func (a AggTestCase) String() string { + return fmt.Sprintf("(execType:%v, aggFunc:%v, ndv:%v, hasDistinct:%v, rows:%v, concurrency:%v, sorted:%v)", + a.ExecType, a.AggFunc, a.GroupByNDV, a.HasDistinct, a.Rows, a.Concurrency, a.DataSourceSorted) +} + +// DefaultAggTestCase returns default agg test case +func DefaultAggTestCase(exec string) *AggTestCase { + ctx := mock.NewContext() + ctx.GetSessionVars().InitChunkSize = variable.DefInitChunkSize + ctx.GetSessionVars().MaxChunkSize = variable.DefMaxChunkSize + // return &AggTestCase{exec, ast.AggFuncSum, 1000, false, 10000000, 4, true, ctx} + return &AggTestCase{ + ExecType: exec, + AggFunc: ast.AggFuncSum, + GroupByNDV: 1000, + HasDistinct: false, + Rows: 10000000, + Concurrency: 4, + DataSourceSorted: true, + Ctx: ctx, + } +} diff --git a/pkg/executor/internal/testutil/limit.go b/pkg/executor/internal/testutil/limit.go new file mode 100644 index 0000000000000..9f83a8eec4b25 --- /dev/null +++ b/pkg/executor/internal/testutil/limit.go @@ -0,0 +1,68 @@ +// Copyright 2023 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 testutil + +import ( + "fmt" + + "github.com/pingcap/tidb/pkg/expression" + "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/types" + "github.com/pingcap/tidb/pkg/util/memory" + "github.com/pingcap/tidb/pkg/util/mock" +) + +// LimitCase is the limit case +type LimitCase struct { + Ctx sessionctx.Context + ChildUsedSchema []bool + Rows int + Offset int + Count int + UsingInlineProjection bool +} + +// Columns creates columns +func (LimitCase) Columns() []*expression.Column { + return []*expression.Column{ + {Index: 0, RetType: types.NewFieldType(mysql.TypeLonglong)}, + {Index: 1, RetType: types.NewFieldType(mysql.TypeLonglong)}, + } +} + +// String gets case content +func (tc LimitCase) String() string { + return fmt.Sprintf("(rows:%v, offset:%v, count:%v, inline_projection:%v)", + tc.Rows, tc.Offset, tc.Count, tc.UsingInlineProjection) +} + +// DefaultLimitTestCase returns default limit test case +func DefaultLimitTestCase() *LimitCase { + ctx := mock.NewContext() + ctx.GetSessionVars().InitChunkSize = variable.DefInitChunkSize + ctx.GetSessionVars().MaxChunkSize = variable.DefMaxChunkSize + ctx.GetSessionVars().StmtCtx.MemTracker = memory.NewTracker(-1, -1) + tc := &LimitCase{ + Rows: 30000, + Offset: 10000, + Count: 10000, + ChildUsedSchema: []bool{false, true}, + UsingInlineProjection: false, + Ctx: ctx, + } + return tc +} diff --git a/pkg/executor/internal/testutil/sort.go b/pkg/executor/internal/testutil/sort.go new file mode 100644 index 0000000000000..edefea8cbc57f --- /dev/null +++ b/pkg/executor/internal/testutil/sort.go @@ -0,0 +1,70 @@ +// Copyright 2023 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 testutil + +import ( + "fmt" + + "github.com/pingcap/tidb/pkg/expression" + "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/types" + "github.com/pingcap/tidb/pkg/util/memory" + "github.com/pingcap/tidb/pkg/util/mock" +) + +// SortCase is the sort case +type SortCase struct { + Ctx sessionctx.Context + OrderByIdx []int + Ndvs []int + Rows int +} + +// Columns creates column +func (SortCase) Columns() []*expression.Column { + return []*expression.Column{ + {Index: 0, RetType: types.NewFieldType(mysql.TypeLonglong)}, + {Index: 1, RetType: types.NewFieldType(mysql.TypeLonglong)}, + } +} + +// String gets case content +func (tc SortCase) String() string { + return fmt.Sprintf("(rows:%v, orderBy:%v, ndvs: %v)", tc.Rows, tc.OrderByIdx, tc.Ndvs) +} + +// DefaultSortTestCase returns default sort test case +func DefaultSortTestCase() *SortCase { + ctx := mock.NewContext() + ctx.GetSessionVars().InitChunkSize = variable.DefInitChunkSize + ctx.GetSessionVars().MaxChunkSize = variable.DefMaxChunkSize + ctx.GetSessionVars().StmtCtx.MemTracker = memory.NewTracker(-1, -1) + tc := &SortCase{Rows: 300000, OrderByIdx: []int{0, 1}, Ndvs: []int{0, 0}, Ctx: ctx} + return tc +} + +// SortTestCaseWithMemoryLimit returns sort test case +func SortTestCaseWithMemoryLimit(bytesLimit int64) *SortCase { + ctx := mock.NewContext() + ctx.GetSessionVars().InitChunkSize = variable.DefInitChunkSize + ctx.GetSessionVars().MaxChunkSize = variable.DefMaxChunkSize + ctx.GetSessionVars().MemTracker = memory.NewTracker(-1, bytesLimit) + ctx.GetSessionVars().StmtCtx.MemTracker = memory.NewTracker(-1, bytesLimit) + ctx.GetSessionVars().StmtCtx.MemTracker.AttachTo(ctx.GetSessionVars().MemTracker) + tc := &SortCase{Rows: 300000, OrderByIdx: []int{0, 1}, Ndvs: []int{0, 0}, Ctx: ctx} + return tc +} diff --git a/pkg/executor/internal/testutil/testutil.go b/pkg/executor/internal/testutil/testutil.go new file mode 100644 index 0000000000000..57aa75acb034a --- /dev/null +++ b/pkg/executor/internal/testutil/testutil.go @@ -0,0 +1,275 @@ +// Copyright 2023 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 testutil + +import ( + "context" + "crypto/rand" + "encoding/base64" + "fmt" + "math/big" + "sort" + + "github.com/pingcap/tidb/pkg/executor/internal/exec" + "github.com/pingcap/tidb/pkg/expression" + "github.com/pingcap/tidb/pkg/parser/mysql" + plannercore "github.com/pingcap/tidb/pkg/planner/core" + "github.com/pingcap/tidb/pkg/planner/property" + "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/stringutil" +) + +// MockDataSourceParameters mpcks data source parameters +type MockDataSourceParameters struct { + Ctx sessionctx.Context + DataSchema *expression.Schema + GenDataFunc func(row int, typ *types.FieldType) interface{} + Ndvs []int + Orders []bool + Rows int +} + +// MockDataSource mocks data source +type MockDataSource struct { + P MockDataSourceParameters + GenData []*chunk.Chunk + Chunks []*chunk.Chunk + exec.BaseExecutor + ChunkPtr int +} + +// GenColDatums get column datums +func (mds *MockDataSource) GenColDatums(col int) (results []interface{}) { + typ := mds.RetFieldTypes()[col] + order := false + if col < len(mds.P.Orders) { + order = mds.P.Orders[col] + } + rows := mds.P.Rows + ndv := 0 + if col < len(mds.P.Ndvs) { + ndv = mds.P.Ndvs[col] + } + results = make([]interface{}, 0, rows) + if ndv == 0 { + if mds.P.GenDataFunc == nil { + for i := 0; i < rows; i++ { + results = append(results, mds.RandDatum(typ)) + } + } else { + for i := 0; i < rows; i++ { + results = append(results, mds.P.GenDataFunc(i, typ)) + } + } + } else { + datumSet := make(map[string]bool, ndv) + datums := make([]interface{}, 0, ndv) + for len(datums) < ndv { + d := mds.RandDatum(typ) + str := fmt.Sprintf("%v", d) + if datumSet[str] { + continue + } + datumSet[str] = true + datums = append(datums, d) + } + + for i := 0; i < rows; i++ { + val, err := rand.Int(rand.Reader, big.NewInt(int64(ndv))) + if err != nil { + panic("Fail to generate int number") + } + results = append(results, datums[val.Int64()]) + } + } + + if order { + sort.Slice(results, func(i, j int) bool { + switch typ.GetType() { + case mysql.TypeLong, mysql.TypeLonglong: + return results[i].(int64) < results[j].(int64) + case mysql.TypeDouble: + return results[i].(float64) < results[j].(float64) + case mysql.TypeVarString: + return results[i].(string) < results[j].(string) + default: + panic("not implement") + } + }) + } + + return +} + +// RandDatum rand datum +func (*MockDataSource) RandDatum(typ *types.FieldType) interface{} { + val, _ := rand.Int(rand.Reader, big.NewInt(1000000)) + switch typ.GetType() { + case mysql.TypeLong, mysql.TypeLonglong: + return val.Int64() + case mysql.TypeFloat: + floatVal, _ := val.Float64() + return float32(floatVal / 1000) + case mysql.TypeDouble: + floatVal, _ := val.Float64() + return floatVal / 1000 + case mysql.TypeNewDecimal: + var d types.MyDecimal + return d.FromInt(val.Int64()) + case mysql.TypeVarString: + buff := make([]byte, 10) + _, err := rand.Read(buff) + if err != nil { + panic("rand.Read returns error") + } + return base64.RawURLEncoding.EncodeToString(buff) + default: + panic("not implement") + } +} + +// PrepareChunks prepares chunks +func (mds *MockDataSource) PrepareChunks() { + mds.Chunks = make([]*chunk.Chunk, len(mds.GenData)) + for i := range mds.Chunks { + mds.Chunks[i] = mds.GenData[i].CopyConstruct() + } + mds.ChunkPtr = 0 +} + +// Next get next chunk +func (mds *MockDataSource) Next(_ context.Context, req *chunk.Chunk) error { + if mds.ChunkPtr >= len(mds.Chunks) { + req.Reset() + return nil + } + dataChk := mds.Chunks[mds.ChunkPtr] + dataChk.SwapColumns(req) + mds.ChunkPtr++ + return nil +} + +// MockPhysicalPlan is used to return a specified executor in when build. +// It is mainly used for testing. +type MockPhysicalPlan interface { + plannercore.PhysicalPlan + GetExecutor() exec.Executor +} + +// MockDataPhysicalPlan mocks physical plan +type MockDataPhysicalPlan struct { + MockPhysicalPlan + DataSchema *expression.Schema + Exec exec.Executor +} + +// GetExecutor gets executor +func (mp *MockDataPhysicalPlan) GetExecutor() exec.Executor { + return mp.Exec +} + +// Schema returns schema +func (mp *MockDataPhysicalPlan) Schema() *expression.Schema { + return mp.DataSchema +} + +// ExplainID returns explain id +func (*MockDataPhysicalPlan) ExplainID() fmt.Stringer { + return stringutil.MemoizeStr(func() string { + return "mockData_0" + }) +} + +// ID returns 0 +func (*MockDataPhysicalPlan) ID() int { + return 0 +} + +// Stats returns nil +func (*MockDataPhysicalPlan) Stats() *property.StatsInfo { + return nil +} + +// SelectBlockOffset returns 0 +func (*MockDataPhysicalPlan) SelectBlockOffset() int { + return 0 +} + +// MemoryUsage of mockDataPhysicalPlan is only for testing +func (*MockDataPhysicalPlan) MemoryUsage() (sum int64) { + return +} + +// BuildMockDataPhysicalPlan builds MockDataPhysicalPlan +func BuildMockDataPhysicalPlan(_ sessionctx.Context, srcExec exec.Executor) *MockDataPhysicalPlan { + return &MockDataPhysicalPlan{ + DataSchema: srcExec.Schema(), + Exec: srcExec, + } +} + +// BuildMockDataSource builds MockDataSource +func BuildMockDataSource(opt MockDataSourceParameters) *MockDataSource { + baseExec := exec.NewBaseExecutor(opt.Ctx, opt.DataSchema, 0) + m := &MockDataSource{ + BaseExecutor: baseExec, + ChunkPtr: 0, + P: opt, + GenData: nil, + Chunks: nil} + rTypes := exec.RetTypes(m) + colData := make([][]interface{}, len(rTypes)) + for i := 0; i < len(rTypes); i++ { + colData[i] = m.GenColDatums(i) + } + + m.GenData = make([]*chunk.Chunk, (m.P.Rows+m.MaxChunkSize()-1)/m.MaxChunkSize()) + for i := range m.GenData { + m.GenData[i] = chunk.NewChunkWithCapacity(exec.RetTypes(m), m.MaxChunkSize()) + } + + for i := 0; i < m.P.Rows; i++ { + idx := i / m.MaxChunkSize() + retTypes := exec.RetTypes(m) + for colIdx := 0; colIdx < len(rTypes); colIdx++ { + switch retTypes[colIdx].GetType() { + case mysql.TypeLong, mysql.TypeLonglong: + m.GenData[idx].AppendInt64(colIdx, colData[colIdx][i].(int64)) + case mysql.TypeFloat: + m.GenData[idx].AppendFloat32(colIdx, colData[colIdx][i].(float32)) + case mysql.TypeDouble: + m.GenData[idx].AppendFloat64(colIdx, colData[colIdx][i].(float64)) + case mysql.TypeNewDecimal: + m.GenData[idx].AppendMyDecimal(colIdx, colData[colIdx][i].(*types.MyDecimal)) + case mysql.TypeVarString: + m.GenData[idx].AppendString(colIdx, colData[colIdx][i].(string)) + default: + panic("not implement") + } + } + } + return m +} + +// BuildMockDataSourceWithIndex builds MockDataSourceWithIndex +func BuildMockDataSourceWithIndex(opt MockDataSourceParameters, index []int) *MockDataSource { + opt.Orders = make([]bool, len(opt.DataSchema.Columns)) + for _, idx := range index { + opt.Orders[idx] = true + } + return BuildMockDataSource(opt) +} diff --git a/pkg/executor/internal/testutil/window.go b/pkg/executor/internal/testutil/window.go new file mode 100644 index 0000000000000..d80d4560648ec --- /dev/null +++ b/pkg/executor/internal/testutil/window.go @@ -0,0 +1,75 @@ +// Copyright 2023 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 testutil + +import ( + "fmt" + "strings" + + "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" + "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/mock" +) + +// WindowTestCase has a fixed schema (col Double, partitionBy LongLong, rawData VarString(16), col LongLong). +type WindowTestCase struct { + Ctx sessionctx.Context + Frame *core.WindowFrame + WindowFunc string + RawDataSmall string + Columns []*expression.Column + NumFunc int + Ndv int + Rows int + Concurrency int + Pipelined int + DataSourceSorted bool +} + +// String gets case content +func (a WindowTestCase) String() string { + return fmt.Sprintf("(func:%v, aggColType:%s, numFunc:%v, ndv:%v, rows:%v, sorted:%v, concurrency:%v, pipelined:%v)", + a.WindowFunc, a.Columns[0].RetType, a.NumFunc, a.Ndv, a.Rows, a.DataSourceSorted, a.Concurrency, a.Pipelined) +} + +// DefaultWindowTestCase returns default window test case +func DefaultWindowTestCase() *WindowTestCase { + ctx := mock.NewContext() + ctx.GetSessionVars().InitChunkSize = variable.DefInitChunkSize + ctx.GetSessionVars().MaxChunkSize = variable.DefMaxChunkSize + return &WindowTestCase{ + WindowFunc: ast.WindowFuncRowNumber, + NumFunc: 1, + Frame: nil, + Ndv: 1000, + Rows: 10000000, + Concurrency: 1, + Pipelined: 0, + DataSourceSorted: true, + Ctx: ctx, + RawDataSmall: strings.Repeat("x", 16), + Columns: []*expression.Column{ + {Index: 0, RetType: types.NewFieldType(mysql.TypeDouble)}, + {Index: 1, RetType: types.NewFieldType(mysql.TypeLonglong)}, + {Index: 2, RetType: types.NewFieldType(mysql.TypeVarString)}, + {Index: 3, RetType: types.NewFieldType(mysql.TypeLonglong)}, + }, + } +} diff --git a/pkg/executor/internal/vecgroupchecker/vec_group_checker.go b/pkg/executor/internal/vecgroupchecker/vec_group_checker.go index 65c2707b9722e..afa0c11a35b46 100644 --- a/pkg/executor/internal/vecgroupchecker/vec_group_checker.go +++ b/pkg/executor/internal/vecgroupchecker/vec_group_checker.go @@ -93,12 +93,14 @@ func (e *VecGroupChecker) SplitIntoGroups(chk *chunk.Chunk) (isFirstGroupSameAsP return false, err } } - e.firstGroupKey, err = codec.EncodeValue(e.ctx.GetSessionVars().StmtCtx, e.firstGroupKey, e.firstRowDatums...) + e.firstGroupKey, err = codec.EncodeValue(e.ctx.GetSessionVars().StmtCtx.TimeZone(), e.firstGroupKey, e.firstRowDatums...) + err = e.ctx.GetSessionVars().StmtCtx.HandleError(err) if err != nil { return false, err } - e.lastGroupKey, err = codec.EncodeValue(e.ctx.GetSessionVars().StmtCtx, e.lastGroupKey, e.lastRowDatums...) + e.lastGroupKey, err = codec.EncodeValue(e.ctx.GetSessionVars().StmtCtx.TimeZone(), e.lastGroupKey, e.lastRowDatums...) + err = e.ctx.GetSessionVars().StmtCtx.HandleError(err) if err != nil { return false, err } diff --git a/pkg/executor/internal/vecgroupchecker/vec_group_checker_test.go b/pkg/executor/internal/vecgroupchecker/vec_group_checker_test.go index 9dda0d27b6acc..b1a26fb7776fa 100644 --- a/pkg/executor/internal/vecgroupchecker/vec_group_checker_test.go +++ b/pkg/executor/internal/vecgroupchecker/vec_group_checker_test.go @@ -18,7 +18,6 @@ import ( "fmt" "math/rand" "testing" - "time" "github.com/pingcap/tidb/pkg/expression" "github.com/pingcap/tidb/pkg/parser/mysql" @@ -109,7 +108,6 @@ func genTestChunk4VecGroupChecker(chkRows []int, sameNum int) (expr []expression numGroups = numRows/sameNum + 1 } - rand.Seed(time.Now().Unix()) nullPos := rand.Intn(numGroups) cnt := 0 val := rand.Int63() diff --git a/pkg/executor/join.go b/pkg/executor/join.go index 3b87d9be7a246..af8bbfbe66a98 100644 --- a/pkg/executor/join.go +++ b/pkg/executor/join.go @@ -999,7 +999,7 @@ func (w *probeWorker) join2Chunk(probeSideChk *chunk.Chunk, hCtx *hashContext, j // 1: write the row data of join key to hashVals. (normal EQ key should ignore the null values.) null-EQ for Except statement is an exception. for keyIdx, i := range hCtx.keyColIdx { ignoreNull := len(w.hashJoinCtx.isNullEQ) > keyIdx && w.hashJoinCtx.isNullEQ[keyIdx] - err = codec.HashChunkSelected(w.rowContainerForProbe.sc, hCtx.hashVals, probeSideChk, hCtx.allTypes[keyIdx], i, hCtx.buf, hCtx.hasNull, selected, ignoreNull) + err = codec.HashChunkSelected(w.rowContainerForProbe.sc.TypeCtx(), hCtx.hashVals, probeSideChk, hCtx.allTypes[keyIdx], i, hCtx.buf, hCtx.hasNull, selected, ignoreNull) if err != nil { joinResult.err = err return false, joinResult @@ -1009,7 +1009,7 @@ func (w *probeWorker) join2Chunk(probeSideChk *chunk.Chunk, hCtx *hashContext, j isNAAJ := len(hCtx.naKeyColIdx) > 0 for keyIdx, i := range hCtx.naKeyColIdx { // NAAJ won't ignore any null values, but collect them up to probe. - err = codec.HashChunkSelected(w.rowContainerForProbe.sc, hCtx.hashVals, probeSideChk, hCtx.allTypes[keyIdx], i, hCtx.buf, hCtx.hasNull, selected, false) + err = codec.HashChunkSelected(w.rowContainerForProbe.sc.TypeCtx(), hCtx.hashVals, probeSideChk, hCtx.allTypes[keyIdx], i, hCtx.buf, hCtx.hasNull, selected, false) if err != nil { joinResult.err = err return false, joinResult @@ -1086,7 +1086,7 @@ func (w *probeWorker) join2Chunk(probeSideChk *chunk.Chunk, hCtx *hashContext, j func (w *probeWorker) join2ChunkForOuterHashJoin(probeSideChk *chunk.Chunk, hCtx *hashContext, joinResult *hashjoinWorkerResult) (ok bool, _ *hashjoinWorkerResult) { hCtx.initHash(probeSideChk.NumRows()) for keyIdx, i := range hCtx.keyColIdx { - err := codec.HashChunkColumns(w.rowContainerForProbe.sc, hCtx.hashVals, probeSideChk, hCtx.allTypes[keyIdx], i, hCtx.buf, hCtx.hasNull) + err := codec.HashChunkColumns(w.rowContainerForProbe.sc.TypeCtx(), hCtx.hashVals, probeSideChk, hCtx.allTypes[keyIdx], i, hCtx.buf, hCtx.hasNull) if err != nil { joinResult.err = err return false, joinResult @@ -1478,7 +1478,8 @@ func (e *NestedLoopApplyExec) Next(ctx context.Context, req *chunk.Chunk) (err e var key []byte for _, col := range e.outerSchema { *col.Data = e.outerRow.GetDatum(col.Index, col.RetType) - key, err = codec.EncodeKey(e.Ctx().GetSessionVars().StmtCtx, key, *col.Data) + key, err = codec.EncodeKey(e.Ctx().GetSessionVars().StmtCtx.TimeZone(), key, *col.Data) + err = e.Ctx().GetSessionVars().StmtCtx.HandleError(err) if err != nil { return err } diff --git a/pkg/executor/join_pkg_test.go b/pkg/executor/join_pkg_test.go index 1599204e2335b..2df978750d13e 100644 --- a/pkg/executor/join_pkg_test.go +++ b/pkg/executor/join_pkg_test.go @@ -21,6 +21,7 @@ import ( "github.com/pingcap/failpoint" "github.com/pingcap/tidb/pkg/executor/internal/exec" + "github.com/pingcap/tidb/pkg/executor/internal/testutil" "github.com/pingcap/tidb/pkg/expression" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/types" @@ -39,10 +40,10 @@ func TestJoinExec(t *testing.T) { casTest := defaultHashJoinTestCase(colTypes, 0, false) runTest := func() { - opt1 := mockDataSourceParameters{ - rows: casTest.rows, - ctx: casTest.ctx, - genDataFunc: func(row int, typ *types.FieldType) interface{} { + opt1 := testutil.MockDataSourceParameters{ + Rows: casTest.rows, + Ctx: casTest.ctx, + GenDataFunc: func(row int, typ *types.FieldType) interface{} { switch typ.GetType() { case mysql.TypeLong, mysql.TypeLonglong: return int64(row) @@ -54,12 +55,12 @@ func TestJoinExec(t *testing.T) { }, } opt2 := opt1 - opt1.schema = expression.NewSchema(casTest.columns()...) - opt2.schema = expression.NewSchema(casTest.columns()...) - dataSource1 := buildMockDataSource(opt1) - dataSource2 := buildMockDataSource(opt2) - dataSource1.prepareChunks() - dataSource2.prepareChunks() + opt1.DataSchema = expression.NewSchema(casTest.columns()...) + opt2.DataSchema = expression.NewSchema(casTest.columns()...) + dataSource1 := testutil.BuildMockDataSource(opt1) + dataSource2 := testutil.BuildMockDataSource(opt2) + dataSource1.PrepareChunks() + dataSource2.PrepareChunks() executor := prepare4HashJoin(casTest, dataSource1, dataSource2) result := exec.NewFirstChunk(executor) diff --git a/pkg/executor/load_data.go b/pkg/executor/load_data.go index cd0ac1dc2bc9a..c613324943a72 100644 --- a/pkg/executor/load_data.go +++ b/pkg/executor/load_data.go @@ -490,7 +490,7 @@ func (w *encodeWorker) parserData2TableData( } for i := 0; i < len(w.colAssignExprs); i++ { // eval expression of `SET` clause - d, err := w.colAssignExprs[i].Eval(chunk.Row{}) + d, err := w.colAssignExprs[i].Eval(w.Ctx(), chunk.Row{}) if err != nil { if w.controller.Restrictive { return nil, err diff --git a/pkg/executor/lockstats/BUILD.bazel b/pkg/executor/lockstats/BUILD.bazel index 7e9bb0b700c7c..59888276e9c40 100644 --- a/pkg/executor/lockstats/BUILD.bazel +++ b/pkg/executor/lockstats/BUILD.bazel @@ -14,7 +14,7 @@ go_library( "//pkg/infoschema", "//pkg/parser/ast", "//pkg/parser/model", - "//pkg/statistics/handle/util", + "//pkg/statistics/handle/types", "//pkg/table/tables", "//pkg/util/chunk", "@com_github_pingcap_errors//:errors", diff --git a/pkg/executor/lockstats/lock_stats_executor.go b/pkg/executor/lockstats/lock_stats_executor.go index 50852883882ed..2a59ee41fdb80 100644 --- a/pkg/executor/lockstats/lock_stats_executor.go +++ b/pkg/executor/lockstats/lock_stats_executor.go @@ -24,7 +24,7 @@ import ( "github.com/pingcap/tidb/pkg/infoschema" "github.com/pingcap/tidb/pkg/parser/ast" "github.com/pingcap/tidb/pkg/parser/model" - "github.com/pingcap/tidb/pkg/statistics/handle/util" + "github.com/pingcap/tidb/pkg/statistics/handle/types" "github.com/pingcap/tidb/pkg/table/tables" "github.com/pingcap/tidb/pkg/util/chunk" ) @@ -135,11 +135,11 @@ func populatePartitionIDAndNames( func populateTableAndPartitionIDs( tables []*ast.TableName, is infoschema.InfoSchema, -) (map[int64]*util.StatsLockTable, error) { +) (map[int64]*types.StatsLockTable, error) { if len(tables) == 0 { return nil, errors.New("table list should not be empty") } - tableWithPartitions := make(map[int64]*util.StatsLockTable, len(tables)) + tableWithPartitions := make(map[int64]*types.StatsLockTable, len(tables)) for _, table := range tables { tbl, err := is.TableByName(table.Schema, table.Name) @@ -147,7 +147,7 @@ func populateTableAndPartitionIDs( return nil, err } tid := tbl.Meta().ID - tableWithPartitions[tid] = &util.StatsLockTable{ + tableWithPartitions[tid] = &types.StatsLockTable{ FullName: fmt.Sprintf("%s.%s", table.Schema.L, table.Name.L), } diff --git a/pkg/executor/mem_reader.go b/pkg/executor/mem_reader.go index 6fad3d09b9a26..38fab12f728a2 100644 --- a/pkg/executor/mem_reader.go +++ b/pkg/executor/mem_reader.go @@ -91,15 +91,31 @@ func buildMemIndexReader(ctx context.Context, us *UnionScanExec, idxReader *Inde } func (m *memIndexReader) getMemRowsIter(ctx context.Context) (memRowsIter, error) { - data, err := m.getMemRows(ctx) + if m.keepOrder && m.table.GetPartitionInfo() != nil { + data, err := m.getMemRows(ctx) + if err != nil { + return nil, errors.Trace(err) + } + return &defaultRowsIter{data: data}, nil + } + + kvIter, err := newTxnMemBufferIter(m.ctx, m.cacheTable, m.kvRanges, m.desc) if err != nil { return nil, errors.Trace(err) } - return &defaultRowsIter{data: data}, nil + tps := m.getTypes() + colInfos := tables.BuildRowcodecColInfoForIndexColumns(m.index, m.table) + colInfos = tables.TryAppendCommonHandleRowcodecColInfos(colInfos, m.table) + return &memRowsIterForIndex{ + kvIter: kvIter, + tps: tps, + mutableRow: chunk.MutRowFromTypes(m.retFieldTypes), + memIndexReader: m, + colInfos: colInfos, + }, nil } -func (m *memIndexReader) getMemRows(ctx context.Context) ([][]types.Datum, error) { - defer tracing.StartRegion(ctx, "memIndexReader.getMemRows").End() +func (m *memIndexReader) getTypes() []*types.FieldType { tps := make([]*types.FieldType, 0, len(m.index.Columns)+1) cols := m.table.Columns for _, col := range m.index.Columns { @@ -122,10 +138,18 @@ func (m *memIndexReader) getMemRows(ctx context.Context) ([][]types.Datum, error default: // ExtraHandle Column tp. tps = append(tps, types.NewFieldType(mysql.TypeLonglong)) } + return tps +} + +func (m *memIndexReader) getMemRows(ctx context.Context) ([][]types.Datum, error) { + defer tracing.StartRegion(ctx, "memIndexReader.getMemRows").End() + tps := m.getTypes() + colInfos := tables.BuildRowcodecColInfoForIndexColumns(m.index, m.table) + colInfos = tables.TryAppendCommonHandleRowcodecColInfos(colInfos, m.table) mutableRow := chunk.MutRowFromTypes(m.retFieldTypes) err := iterTxnMemBuffer(m.ctx, m.cacheTable, m.kvRanges, m.desc, func(key, value []byte) error { - data, err := m.decodeIndexKeyValue(key, value, tps) + data, err := m.decodeIndexKeyValue(key, value, tps, colInfos) if err != nil { return err } @@ -156,13 +180,11 @@ func (m *memIndexReader) getMemRows(ctx context.Context) ([][]types.Datum, error return m.addedRows, nil } -func (m *memIndexReader) decodeIndexKeyValue(key, value []byte, tps []*types.FieldType) ([]types.Datum, error) { +func (m *memIndexReader) decodeIndexKeyValue(key, value []byte, tps []*types.FieldType, colInfos []rowcodec.ColInfo) ([]types.Datum, error) { hdStatus := tablecodec.HandleDefault if mysql.HasUnsignedFlag(tps[len(tps)-1].GetFlag()) { hdStatus = tablecodec.HandleIsUnsigned } - colInfos := tables.BuildRowcodecColInfoForIndexColumns(m.index, m.table) - colInfos = tables.TryAppendCommonHandleRowcodecColInfos(colInfos, m.table) values, err := tablecodec.DecodeIndexKV(key, value, len(m.index.Columns), hdStatus, colInfos) if err != nil { return nil, errors.Trace(err) @@ -230,7 +252,9 @@ func buildMemTableReader(ctx context.Context, us *UnionScanExec, kvRanges []kv.K if err != nil { return nil, err } - return tablecodec.EncodeValue(us.Ctx().GetSessionVars().StmtCtx, nil, d) + sctx := us.Ctx().GetSessionVars().StmtCtx + buf, err := tablecodec.EncodeValue(sctx.TimeZone(), nil, d) + return buf, sctx.HandleError(err) } cd := NewRowDecoder(us.Ctx(), us.Schema(), us.table.Meta()) rd := rowcodec.NewByteDecoder(colInfo, pkColIDs, defVal, us.Ctx().GetSessionVars().Location()) @@ -259,108 +283,91 @@ func buildMemTableReader(ctx context.Context, us *UnionScanExec, kvRanges []kv.K } } +// txnMemBufferIter implements a kv.Iterator, it is an iterator that combines the membuffer data and snapshot data. type txnMemBufferIter struct { - *memTableReader - txn kv.Transaction - idx int - curr kv.Iterator - - reverse bool - cd *rowcodec.ChunkDecoder - chk *chunk.Chunk - datumRow []types.Datum + sctx sessionctx.Context + kvRanges []kv.KeyRange + cacheTable kv.MemBuffer + txn kv.Transaction + idx int + curr kv.Iterator + reverse bool + err error } -func (iter *txnMemBufferIter) Next() ([]types.Datum, error) { - var ret []types.Datum - for iter.idx < len(iter.kvRanges) { - if iter.curr == nil { - rg := iter.kvRanges[iter.idx] - var tmp kv.Iterator - if !iter.reverse { - tmp = iter.txn.GetMemBuffer().SnapshotIter(rg.StartKey, rg.EndKey) - } else { - tmp = iter.txn.GetMemBuffer().SnapshotIterReverse(rg.EndKey, rg.StartKey) - } - snapCacheIter, err := getSnapIter(iter.ctx, iter.cacheTable, rg, iter.reverse) - if err != nil { - return nil, err - } - if snapCacheIter != nil { - tmp, err = transaction.NewUnionIter(tmp, snapCacheIter, iter.reverse) - if err != nil { - return nil, err - } - } - iter.curr = tmp - } else { - var err error - ret, err = iter.next() - if err != nil { - return nil, errors.Trace(err) - } - if ret != nil { - break - } - iter.idx++ - iter.curr = nil - } +func newTxnMemBufferIter(sctx sessionctx.Context, cacheTable kv.MemBuffer, kvRanges []kv.KeyRange, reverse bool) (*txnMemBufferIter, error) { + txn, err := sctx.Txn(true) + if err != nil { + return nil, errors.Trace(err) } - return ret, nil + return &txnMemBufferIter{ + sctx: sctx, + txn: txn, + kvRanges: kvRanges, + cacheTable: cacheTable, + reverse: reverse, + }, nil } -func (iter *txnMemBufferIter) next() ([]types.Datum, error) { - var err error - curr := iter.curr - for ; err == nil && curr.Valid(); err = curr.Next() { - // check whether the key was been deleted. - if len(curr.Value()) == 0 { - continue +func (iter *txnMemBufferIter) Valid() bool { + if iter.curr != nil { + if iter.curr.Valid() { + return true } - - handle, err := tablecodec.DecodeRowKey(curr.Key()) + iter.curr = nil + iter.idx++ + } + for iter.idx < len(iter.kvRanges) { + rg := iter.kvRanges[iter.idx] + var tmp kv.Iterator + if !iter.reverse { + tmp = iter.txn.GetMemBuffer().SnapshotIter(rg.StartKey, rg.EndKey) + } else { + tmp = iter.txn.GetMemBuffer().SnapshotIterReverse(rg.EndKey, rg.StartKey) + } + snapCacheIter, err := getSnapIter(iter.sctx, iter.cacheTable, rg, iter.reverse) if err != nil { - return nil, errors.Trace(err) + iter.err = errors.Trace(err) + return true } - iter.chk.Reset() - - if !rowcodec.IsNewFormat(curr.Value()) { - // TODO: remove the legacy code! - // fallback to the old way. - iter.datumRow, err = iter.decodeRecordKeyValue(curr.Key(), curr.Value(), &iter.datumRow) - if err != nil { - return nil, errors.Trace(err) - } - - mutableRow := chunk.MutRowFromTypes(iter.retFieldTypes) - mutableRow.SetDatums(iter.datumRow...) - matched, _, err := expression.EvalBool(iter.ctx, iter.conditions, mutableRow.ToRow()) + if snapCacheIter != nil { + tmp, err = transaction.NewUnionIter(tmp, snapCacheIter, iter.reverse) if err != nil { - return nil, errors.Trace(err) + iter.err = errors.Trace(err) + return true } - if !matched { - continue - } - return iter.datumRow, curr.Next() } - - err = iter.cd.DecodeToChunk(curr.Value(), handle, iter.chk) - if err != nil { - return nil, errors.Trace(err) + iter.curr = tmp + if iter.curr.Valid() { + return true } + iter.curr = nil + iter.idx++ + } + return false +} - row := iter.chk.GetRow(0) - matched, _, err := expression.EvalBool(iter.ctx, iter.conditions, row) - if err != nil { - return nil, errors.Trace(err) - } - if !matched { - continue +func (iter *txnMemBufferIter) Next() error { + if iter.err != nil { + return errors.Trace(iter.err) + } + if iter.curr != nil { + if iter.curr.Valid() { + return iter.curr.Next() } - ret := row.GetDatumRowWithBuffer(iter.retFieldTypes, iter.datumRow) - return ret, curr.Next() } - return nil, err + return nil +} + +func (iter *txnMemBufferIter) Key() kv.Key { + return iter.curr.Key() +} + +func (iter *txnMemBufferIter) Value() []byte { + return iter.curr.Value() +} + +func (*txnMemBufferIter) Close() { } func (m *memTableReader) getMemRowsIter(ctx context.Context) (memRowsIter, error) { @@ -377,22 +384,20 @@ func (m *memTableReader) getMemRowsIter(ctx context.Context) (memRowsIter, error for i, col := range m.columns { m.offsets[i] = m.colIDs[col.ID] } - txn, err := m.ctx.Txn(true) + + kvIter, err := newTxnMemBufferIter(m.ctx, m.cacheTable, m.kvRanges, m.desc) if err != nil { - return nil, err + return nil, errors.Trace(err) } - - return &txnMemBufferIter{ - memTableReader: m, - txn: txn, + return &memRowsIterForTable{ + kvIter: kvIter, cd: m.buffer.cd, chk: chunk.New(m.retFieldTypes, 1, 1), datumRow: make([]types.Datum, len(m.retFieldTypes)), - reverse: m.desc, + memTableReader: m, }, nil } -// TODO: Try to make memXXXReader lazy, There is no need to decode many rows when parent operator only need 1 row. func (m *memTableReader) getMemRows(ctx context.Context) ([][]types.Datum, error) { defer tracing.StartRegion(ctx, "memTableReader.getMemRows").End() mutableRow := chunk.MutRowFromTypes(m.retFieldTypes) @@ -499,7 +504,8 @@ func (m *memTableReader) getRowData(handle kv.Handle, value []byte) ([][]byte, e } else { handleDatum = types.NewIntDatum(handle.IntValue()) } - handleData, err1 := codec.EncodeValue(ctx, buffer.handleBytes, handleDatum) + handleData, err1 := codec.EncodeValue(ctx.TimeZone(), buffer.handleBytes, handleDatum) + err1 = ctx.HandleError(err1) if err1 != nil { return nil, errors.Trace(err1) } @@ -620,7 +626,8 @@ func (m *memIndexReader) getMemRowsHandle() ([]kv.Handle, error) { // For https://github.com/pingcap/tidb/issues/41827, // When handle type is year, tablecodec.DecodeIndexHandle will convert it to IntHandle instead of CommonHandle if m.table.IsCommonHandle && handle.IsInt() { - b, err := codec.EncodeKey(m.ctx.GetSessionVars().StmtCtx, nil, types.NewDatum(handle.IntValue())) + b, err := codec.EncodeKey(m.ctx.GetSessionVars().StmtCtx.TimeZone(), nil, types.NewDatum(handle.IntValue())) + err = m.ctx.GetSessionVars().StmtCtx.HandleError(err) if err != nil { return err } @@ -859,6 +866,115 @@ func (iter *defaultRowsIter) Next() ([]types.Datum, error) { return nil, nil } +// memRowsIterForTable combine a kv.Iterator and a kv decoder to get a memRowsIter. +type memRowsIterForTable struct { + kvIter *txnMemBufferIter // txnMemBufferIter is the kv.Iterator + cd *rowcodec.ChunkDecoder + chk *chunk.Chunk + datumRow []types.Datum + *memTableReader +} + +func (iter *memRowsIterForTable) Next() ([]types.Datum, error) { + curr := iter.kvIter + var ret []types.Datum + for curr.Valid() { + key := curr.Key() + value := curr.Value() + if err := curr.Next(); err != nil { + return nil, errors.Trace(err) + } + + // check whether the key was been deleted. + if len(value) == 0 { + continue + } + handle, err := tablecodec.DecodeRowKey(key) + if err != nil { + return nil, errors.Trace(err) + } + iter.chk.Reset() + + if !rowcodec.IsNewFormat(value) { + // TODO: remove the legacy code! + // fallback to the old way. + iter.datumRow, err = iter.memTableReader.decodeRecordKeyValue(key, value, &iter.datumRow) + if err != nil { + return nil, errors.Trace(err) + } + + mutableRow := chunk.MutRowFromTypes(iter.retFieldTypes) + mutableRow.SetDatums(iter.datumRow...) + matched, _, err := expression.EvalBool(iter.ctx, iter.conditions, mutableRow.ToRow()) + if err != nil { + return nil, errors.Trace(err) + } + if !matched { + continue + } + return iter.datumRow, nil + } + + err = iter.cd.DecodeToChunk(value, handle, iter.chk) + if err != nil { + return nil, errors.Trace(err) + } + + row := iter.chk.GetRow(0) + matched, _, err := expression.EvalBool(iter.ctx, iter.conditions, row) + if err != nil { + return nil, errors.Trace(err) + } + if !matched { + continue + } + ret = row.GetDatumRowWithBuffer(iter.retFieldTypes, iter.datumRow) + break + } + return ret, nil +} + +type memRowsIterForIndex struct { + kvIter *txnMemBufferIter + tps []*types.FieldType + mutableRow chunk.MutRow + *memIndexReader + colInfos []rowcodec.ColInfo +} + +func (iter *memRowsIterForIndex) Next() ([]types.Datum, error) { + var ret []types.Datum + curr := iter.kvIter + for curr.Valid() { + key := curr.Key() + value := curr.Value() + if err := curr.Next(); err != nil { + return nil, errors.Trace(err) + } + // check whether the key was been deleted. + if len(value) == 0 { + continue + } + + data, err := iter.memIndexReader.decodeIndexKeyValue(key, value, iter.tps, iter.colInfos) + if err != nil { + return nil, err + } + + iter.mutableRow.SetDatums(data...) + matched, _, err := expression.EvalBool(iter.memIndexReader.ctx, iter.memIndexReader.conditions, iter.mutableRow.ToRow()) + if err != nil { + return nil, errors.Trace(err) + } + if !matched { + continue + } + ret = data + break + } + return ret, nil +} + func (m *memIndexMergeReader) getMemRowsIter(ctx context.Context) (memRowsIter, error) { data, err := m.getMemRows(ctx) if err != nil { @@ -1050,7 +1166,8 @@ func getColIDAndPkColIDs(ctx sessionctx.Context, tbl table.Table, columns []*mod if err != nil { return nil, err } - return tablecodec.EncodeValue(ctx.GetSessionVars().StmtCtx, nil, d) + buf, err := tablecodec.EncodeValue(ctx.GetSessionVars().StmtCtx.TimeZone(), nil, d) + return buf, ctx.GetSessionVars().StmtCtx.HandleError(err) } rd := rowcodec.NewByteDecoder(colInfos, pkColIDs, defVal, ctx.GetSessionVars().Location()) return colIDs, pkColIDs, rd diff --git a/pkg/executor/memtable_reader.go b/pkg/executor/memtable_reader.go index b0cdbe40d2a12..2093a8c137be3 100644 --- a/pkg/executor/memtable_reader.go +++ b/pkg/executor/memtable_reader.go @@ -47,8 +47,8 @@ import ( "github.com/pingcap/tidb/pkg/util" "github.com/pingcap/tidb/pkg/util/chunk" "github.com/pingcap/tidb/pkg/util/execdetails" - "github.com/pingcap/tidb/pkg/util/pdapi" "github.com/pingcap/tidb/pkg/util/set" + pd "github.com/tikv/pd/client/http" "google.golang.org/grpc" "google.golang.org/grpc/credentials" "google.golang.org/grpc/credentials/insecure" @@ -198,7 +198,7 @@ func fetchClusterConfig(sctx sessionctx.Context, nodeTypes, nodeAddrs set.String var url string switch typ { case "pd": - url = fmt.Sprintf("%s://%s%s", util.InternalHTTPSchema(), statusAddr, pdapi.Config) + url = fmt.Sprintf("%s://%s%s", util.InternalHTTPSchema(), statusAddr, pd.Config) case "tikv", "tidb", "tiflash": url = fmt.Sprintf("%s://%s/config", util.InternalHTTPSchema(), statusAddr) case "tiproxy": @@ -714,7 +714,7 @@ func (e *hotRegionsHistoryRetriver) startRetrieving( go func(ch chan hotRegionsResult, address string, body *bytes.Buffer) { util.WithRecovery(func() { defer close(ch) - url := fmt.Sprintf("%s://%s%s", util.InternalHTTPSchema(), address, pdapi.HotHistory) + url := fmt.Sprintf("%s://%s%s", util.InternalHTTPSchema(), address, pd.HotHistory) req, err := http.NewRequest(http.MethodGet, url, body) if err != nil { ch <- hotRegionsResult{err: errors.Trace(err)} @@ -812,7 +812,7 @@ func (*hotRegionsHistoryRetriver) getHotRegionRowWithSchemaInfo( tables []helper.TableInfoWithKeyRange, tz *time.Location, ) ([][]types.Datum, error) { - regionsInfo := []*helper.RegionInfo{ + regionsInfo := []*pd.RegionInfo{ { ID: int64(hisHotRegion.RegionID), StartKey: hisHotRegion.StartKey, @@ -872,7 +872,7 @@ type tikvRegionPeersRetriever struct { retrieved bool } -func (e *tikvRegionPeersRetriever) retrieve(_ context.Context, sctx sessionctx.Context) ([][]types.Datum, error) { +func (e *tikvRegionPeersRetriever) retrieve(ctx context.Context, sctx sessionctx.Context) ([][]types.Datum, error) { if e.extractor.SkipRequest || e.retrieved { return nil, nil } @@ -885,13 +885,17 @@ func (e *tikvRegionPeersRetriever) retrieve(_ context.Context, sctx sessionctx.C Store: tikvStore, RegionCache: tikvStore.GetRegionCache(), } + pdCli, err := tikvHelper.TryGetPDHTTPClient() + if err != nil { + return nil, err + } - var regionsInfo, regionsInfoByStoreID []helper.RegionInfo - regionMap := make(map[int64]*helper.RegionInfo) + var regionsInfo, regionsInfoByStoreID []pd.RegionInfo + regionMap := make(map[int64]*pd.RegionInfo) storeMap := make(map[int64]struct{}) if len(e.extractor.StoreIDs) == 0 && len(e.extractor.RegionIDs) == 0 { - regionsInfo, err := tikvHelper.GetRegionsInfo() + regionsInfo, err := pdCli.GetRegions(ctx) if err != nil { return nil, err } @@ -902,7 +906,7 @@ func (e *tikvRegionPeersRetriever) retrieve(_ context.Context, sctx sessionctx.C // if a region_id located in 1, 4, 7 store we will get all of them when request any store_id, // storeMap is used to filter peers on unexpected stores. storeMap[int64(storeID)] = struct{}{} - storeRegionsInfo, err := tikvHelper.GetStoreRegionsInfo(storeID) + storeRegionsInfo, err := pdCli.GetRegionsByStoreID(ctx, storeID) if err != nil { return nil, err } @@ -925,7 +929,7 @@ func (e *tikvRegionPeersRetriever) retrieve(_ context.Context, sctx sessionctx.C // if there is storeIDs, target region_id is fetched by storeIDs, // otherwise we need to fetch it from PD. if len(e.extractor.StoreIDs) == 0 { - regionInfo, err := tikvHelper.GetRegionInfoByID(regionID) + regionInfo, err := pdCli.GetRegionByID(ctx, regionID) if err != nil { return nil, err } @@ -950,7 +954,7 @@ func (e *tikvRegionPeersRetriever) isUnexpectedStoreID(storeID int64, storeMap m } func (e *tikvRegionPeersRetriever) packTiKVRegionPeersRows( - regionsInfo []helper.RegionInfo, storeMap map[int64]struct{}) ([][]types.Datum, error) { + regionsInfo []pd.RegionInfo, storeMap map[int64]struct{}) ([][]types.Datum, error) { //nolint: prealloc var rows [][]types.Datum for _, region := range regionsInfo { diff --git a/pkg/executor/memtable_reader_test.go b/pkg/executor/memtable_reader_test.go index e0f3cae8dde1d..75451234920c1 100644 --- a/pkg/executor/memtable_reader_test.go +++ b/pkg/executor/memtable_reader_test.go @@ -31,9 +31,9 @@ import ( "github.com/pingcap/sysutil" "github.com/pingcap/tidb/pkg/executor" "github.com/pingcap/tidb/pkg/testkit" - "github.com/pingcap/tidb/pkg/util/pdapi" pmodel "github.com/prometheus/common/model" "github.com/stretchr/testify/require" + pd "github.com/tikv/pd/client/http" "google.golang.org/grpc" ) @@ -149,7 +149,7 @@ func TestTiDBClusterConfig(t *testing.T) { } // pd config - router.Handle(pdapi.Config, fn.Wrap(mockConfig)) + router.Handle(pd.Config, fn.Wrap(mockConfig)) // TiDB/TiKV config router.Handle("/config", fn.Wrap(mockConfig)) // Tiproxy config diff --git a/pkg/executor/parallel_apply.go b/pkg/executor/parallel_apply.go index 1c727838da193..a35ca4b3306fc 100644 --- a/pkg/executor/parallel_apply.go +++ b/pkg/executor/parallel_apply.go @@ -282,7 +282,9 @@ func (e *ParallelNestedLoopApplyExec) fetchAllInners(ctx context.Context, id int for _, col := range e.corCols[id] { *col.Data = e.outerRow[id].GetDatum(col.Index, col.RetType) if e.useCache { - if key, err = codec.EncodeKey(e.Ctx().GetSessionVars().StmtCtx, key, *col.Data); err != nil { + key, err = codec.EncodeKey(e.Ctx().GetSessionVars().StmtCtx.TimeZone(), key, *col.Data) + err = e.Ctx().GetSessionVars().StmtCtx.HandleError(err) + if err != nil { return err } } diff --git a/pkg/executor/pkg_test.go b/pkg/executor/pkg_test.go index 05a20d6e43814..469c7367cc462 100644 --- a/pkg/executor/pkg_test.go +++ b/pkg/executor/pkg_test.go @@ -20,6 +20,7 @@ import ( "testing" "github.com/pingcap/tidb/pkg/executor/internal/exec" + "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" @@ -37,26 +38,26 @@ func TestNestedLoopApply(t *testing.T) { col1 := &expression.Column{Index: 1, RetType: types.NewFieldType(mysql.TypeLong)} con := &expression.Constant{Value: types.NewDatum(6), RetType: types.NewFieldType(mysql.TypeLong)} outerSchema := expression.NewSchema(col0) - outerExec := buildMockDataSource(mockDataSourceParameters{ - schema: outerSchema, - rows: 6, - ctx: sctx, - genDataFunc: func(row int, typ *types.FieldType) interface{} { + outerExec := testutil.BuildMockDataSource(testutil.MockDataSourceParameters{ + DataSchema: outerSchema, + Rows: 6, + Ctx: sctx, + GenDataFunc: func(row int, typ *types.FieldType) interface{} { return int64(row + 1) }, }) - outerExec.prepareChunks() + outerExec.PrepareChunks() innerSchema := expression.NewSchema(col1) - innerExec := buildMockDataSource(mockDataSourceParameters{ - schema: innerSchema, - rows: 6, - ctx: sctx, - genDataFunc: func(row int, typ *types.FieldType) interface{} { + innerExec := testutil.BuildMockDataSource(testutil.MockDataSourceParameters{ + DataSchema: innerSchema, + Rows: 6, + Ctx: sctx, + GenDataFunc: func(row int, typ *types.FieldType) interface{} { return int64(row + 1) }, }) - innerExec.prepareChunks() + innerExec.PrepareChunks() outerFilter := expression.NewFunctionInternal(sctx, ast.LT, types.NewFieldType(mysql.TypeTiny), col0, con) innerFilter := outerFilter.Clone() diff --git a/pkg/executor/point_get.go b/pkg/executor/point_get.go index 688872de67c51..c7f20258874d3 100644 --- a/pkg/executor/point_get.go +++ b/pkg/executor/point_get.go @@ -571,7 +571,8 @@ func EncodeUniqueIndexValuesForKey(ctx sessionctx.Context, tblInfo *model.TableI } } - encodedIdxVals, err := codec.EncodeKey(sc, nil, idxVals...) + encodedIdxVals, err := codec.EncodeKey(sc.TimeZone(), nil, idxVals...) + err = sc.HandleError(err) if err != nil { return nil, err } diff --git a/pkg/executor/point_get_test.go b/pkg/executor/point_get_test.go index f068f2981262f..1bd1cb476e49f 100644 --- a/pkg/executor/point_get_test.go +++ b/pkg/executor/point_get_test.go @@ -23,7 +23,6 @@ import ( "github.com/pingcap/tidb/pkg/config" "github.com/pingcap/tidb/pkg/domain" - "github.com/pingcap/tidb/pkg/errno" "github.com/pingcap/tidb/pkg/parser/terror" "github.com/pingcap/tidb/pkg/session" "github.com/pingcap/tidb/pkg/sessionctx/variable" @@ -38,26 +37,6 @@ import ( "github.com/tikv/client-go/v2/tikv" ) -func TestForUpdateRetry(t *testing.T) { - store := testkit.CreateMockStore(t) - setTxnTk := testkit.NewTestKit(t, store) - setTxnTk.MustExec("set global tidb_txn_mode=''") - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - _, err := tk.Exec("drop table if exists t") - require.NoError(t, err) - tk.MustExec("create table t(pk int primary key, c int)") - tk.MustExec("insert into t values (1, 1), (2, 2)") - tk.MustExec("set @@tidb_disable_txn_auto_retry = 0") - tk.MustExec("begin") - tk.MustQuery("select * from t where pk = 1 for update") - tk2 := testkit.NewTestKit(t, store) - tk2.MustExec("use test") - tk2.MustExec("update t set c = c + 1 where pk = 1") - tk.MustExec("update t set c = c + 1 where pk = 2") - tk.MustGetErrCode("commit", errno.ErrForUpdateCantRetry) -} - func TestSelectCheckVisibility(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) @@ -103,7 +82,7 @@ func TestReturnValues(t *testing.T) { tk.MustExec("begin pessimistic") tk.MustQuery("select * from t where a = 'b' for update").Check(testkit.Rows("b 2")) tid := external.GetTableByName(t, tk, "test", "t").Meta().ID - idxVal, err := codec.EncodeKey(tk.Session().GetSessionVars().StmtCtx, nil, types.NewStringDatum("b")) + idxVal, err := codec.EncodeKey(tk.Session().GetSessionVars().StmtCtx.TimeZone(), nil, types.NewStringDatum("b")) require.NoError(t, err) pk := tablecodec.EncodeIndexSeekKey(tid, 1, idxVal) txnCtx := tk.Session().GetSessionVars().TxnCtx diff --git a/pkg/executor/recover_test.go b/pkg/executor/recover_test.go index 315a84d5d8cc9..c57c71dc61af9 100644 --- a/pkg/executor/recover_test.go +++ b/pkg/executor/recover_test.go @@ -476,19 +476,19 @@ func TestFlashbackTSOWithSafeTs(t *testing.T) { }{ { name: "5 seconds ago to now, safeTS 5 secs ago", - sql: fmt.Sprintf("flashback cluster to timestamp '%d'", ts), + sql: fmt.Sprintf("flashback cluster to tso %d", ts), injectSafeTS: oracle.GoTimeToTS(flashbackTs), compareWithSafeTS: 0, }, { name: "10 seconds ago to now, safeTS 5 secs ago", - sql: fmt.Sprintf("flashback cluster to timestamp '%d'", ts), + sql: fmt.Sprintf("flashback cluster to tso %d", ts), injectSafeTS: oracle.GoTimeToTS(flashbackTs.Add(10 * time.Second)), compareWithSafeTS: -1, }, { name: "5 seconds ago to now, safeTS 10 secs ago", - sql: fmt.Sprintf("flashback cluster to timestamp '%d'", ts), + sql: fmt.Sprintf("flashback cluster to tso %d", ts), injectSafeTS: oracle.GoTimeToTS(flashbackTs.Add(-10 * time.Second)), compareWithSafeTS: 1, }, diff --git a/pkg/executor/set.go b/pkg/executor/set.go index 27288b32f6c63..60259a409a2b9 100644 --- a/pkg/executor/set.go +++ b/pkg/executor/set.go @@ -57,7 +57,8 @@ func (e *SetExecutor) Next(ctx context.Context, req *chunk.Chunk) error { return nil } e.done = true - sessionVars := e.Ctx().GetSessionVars() + sctx := e.Ctx() + sessionVars := sctx.GetSessionVars() for _, v := range e.vars { // Variable is case insensitive, we use lower case. if v.Name == ast.SetNames || v.Name == ast.SetCharset { @@ -69,7 +70,7 @@ func (e *SetExecutor) Next(ctx context.Context, req *chunk.Chunk) error { } continue } - dt, err := v.Expr.(*expression.Constant).Eval(chunk.Row{}) + dt, err := v.Expr.(*expression.Constant).Eval(sctx, chunk.Row{}) if err != nil { return err } @@ -87,7 +88,7 @@ func (e *SetExecutor) Next(ctx context.Context, req *chunk.Chunk) error { name := strings.ToLower(v.Name) if !v.IsSystem { // Set user variable. - value, err := v.Expr.Eval(chunk.Row{}) + value, err := v.Expr.Eval(sctx, chunk.Row{}) if err != nil { return err } @@ -161,7 +162,11 @@ func (e *SetExecutor) setSysVariable(ctx context.Context, name string, v *expres } return nil }) - logutil.BgLogger().Info("set global var", zap.Uint64("conn", sessionVars.ConnectionID), zap.String("name", name), zap.String("val", valStr)) + showValStr := valStr + if name == variable.TiDBCloudStorageURI { + showValStr = ast.RedactURL(showValStr) + } + logutil.BgLogger().Info("set global var", zap.Uint64("conn", sessionVars.ConnectionID), zap.String("name", name), zap.String("val", showValStr)) if name == variable.TiDBServiceScope { dom := domain.GetDomain(e.Ctx()) serverID := disttaskutil.GenerateSubtaskExecID(ctx, dom.DDL().GetID()) @@ -290,7 +295,7 @@ func (e *SetExecutor) getVarValue(ctx context.Context, v *expression.VarAssignme } return e.Ctx().GetSessionVars().GetGlobalSystemVar(ctx, v.Name) } - nativeVal, err := v.Expr.Eval(chunk.Row{}) + nativeVal, err := v.Expr.Eval(e.Ctx(), chunk.Row{}) if err != nil || nativeVal.IsNull() { return "", err } diff --git a/pkg/executor/set_config.go b/pkg/executor/set_config.go index ca9cebd4dd949..c9a47cd4e4ef3 100644 --- a/pkg/executor/set_config.go +++ b/pkg/executor/set_config.go @@ -33,9 +33,9 @@ import ( "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util" "github.com/pingcap/tidb/pkg/util/chunk" - "github.com/pingcap/tidb/pkg/util/pdapi" "github.com/pingcap/tidb/pkg/util/set" "github.com/pingcap/tidb/pkg/util/stringutil" + pd "github.com/tikv/pd/client/http" ) // SetConfigExec executes 'SET CONFIG' statement. @@ -112,7 +112,7 @@ func (s *SetConfigExec) Next(_ context.Context, req *chunk.Chunk) error { var url string switch serverInfo.ServerType { case "pd": - url = fmt.Sprintf("%s://%s%s", util.InternalHTTPSchema(), serverInfo.StatusAddr, pdapi.Config) + url = fmt.Sprintf("%s://%s%s", util.InternalHTTPSchema(), serverInfo.StatusAddr, pd.Config) case "tikv": url = fmt.Sprintf("%s://%s/config", util.InternalHTTPSchema(), serverInfo.StatusAddr) case "tiflash": diff --git a/pkg/executor/set_test.go b/pkg/executor/set_test.go index 2cab2decee195..2cb8d413cecdd 100644 --- a/pkg/executor/set_test.go +++ b/pkg/executor/set_test.go @@ -809,13 +809,13 @@ func TestSetVar(t *testing.T) { tk.MustQuery("select @@global.tidb_opt_force_inline_cte").Check(testkit.Rows("1")) // test tidb_auto_analyze_partition_batch_size - tk.MustQuery("select @@global.tidb_auto_analyze_partition_batch_size").Check(testkit.Rows("1")) // default value is 1 + tk.MustQuery("select @@global.tidb_auto_analyze_partition_batch_size").Check(testkit.Rows("128")) // default value is 128 tk.MustExec("set global tidb_auto_analyze_partition_batch_size = 2") tk.MustQuery("select @@global.tidb_auto_analyze_partition_batch_size").Check(testkit.Rows("2")) tk.MustExec("set global tidb_auto_analyze_partition_batch_size = 0") tk.MustQuery("select @@global.tidb_auto_analyze_partition_batch_size").Check(testkit.Rows("1")) // min value is 1 tk.MustExec("set global tidb_auto_analyze_partition_batch_size = 9999") - tk.MustQuery("select @@global.tidb_auto_analyze_partition_batch_size").Check(testkit.Rows("1024")) // max value is 1024 + tk.MustQuery("select @@global.tidb_auto_analyze_partition_batch_size").Check(testkit.Rows("8192")) // max value is 8192 // test variable 'tidb_opt_prefix_index_single_scan' // global scope diff --git a/pkg/executor/show.go b/pkg/executor/show.go index cc9fe3831d5d1..0ac276bbea05c 100644 --- a/pkg/executor/show.go +++ b/pkg/executor/show.go @@ -253,7 +253,7 @@ func (e *ShowExec) fetchAll(ctx context.Context) error { return e.fetchShowPlugins() case ast.ShowProfiles: // empty result - case ast.ShowMasterStatus: + case ast.ShowMasterStatus, ast.ShowBinlogStatus: return e.fetchShowMasterStatus() case ast.ShowPrivileges: return e.fetchShowPrivileges() @@ -2285,11 +2285,11 @@ func fillOneImportJobInfo(info *importer.JobInfo, result *chunk.Chunk, importedR result.AppendString(12, info.CreatedBy) } -func handleImportJobInfo(info *importer.JobInfo, result *chunk.Chunk) error { +func handleImportJobInfo(ctx context.Context, info *importer.JobInfo, result *chunk.Chunk) error { var importedRowCount int64 = -1 if info.Summary == nil && info.Status == importer.JobStatusRunning { // for running jobs, need get from distributed framework. - rows, err := importinto.GetTaskImportedRows(info.ID) + rows, err := importinto.GetTaskImportedRows(ctx, info.ID) if err != nil { return err } @@ -2310,6 +2310,7 @@ func (e *ShowExec) fetchShowImportJobs(ctx context.Context) error { } // we use sessionCtx from GetTaskManager, user ctx might not have system table privileges. globalTaskManager, err := fstorage.GetTaskManager() + ctx = kv.WithInternalSourceType(ctx, kv.InternalDistTask) if err != nil { return err } @@ -2323,7 +2324,7 @@ func (e *ShowExec) fetchShowImportJobs(ctx context.Context) error { }); err != nil { return err } - return handleImportJobInfo(info, e.result) + return handleImportJobInfo(ctx, info, e.result) } var infos []*importer.JobInfo if err = globalTaskManager.WithNewSession(func(se sessionctx.Context) error { @@ -2335,7 +2336,7 @@ func (e *ShowExec) fetchShowImportJobs(ctx context.Context) error { return err } for _, info := range infos { - if err2 := handleImportJobInfo(info, e.result); err2 != nil { + if err2 := handleImportJobInfo(ctx, info, e.result); err2 != nil { return err2 } } diff --git a/pkg/executor/show_placement.go b/pkg/executor/show_placement.go index 6af87d39bf3ce..29c8e221a2f5d 100644 --- a/pkg/executor/show_placement.go +++ b/pkg/executor/show_placement.go @@ -31,12 +31,12 @@ import ( "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/privilege" - "github.com/pingcap/tidb/pkg/store/helper" "github.com/pingcap/tidb/pkg/table" "github.com/pingcap/tidb/pkg/tablecodec" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/codec" "github.com/pingcap/tidb/pkg/util/sqlexec" + pd "github.com/tikv/pd/client/http" ) type showPlacementLabelsResultBuilder struct { @@ -61,7 +61,7 @@ func (b *showPlacementLabelsResultBuilder) AppendStoreLabels(bj types.BinaryJSON return errors.New("only array or null type is allowed") } - labels := make([]*helper.StoreLabel, 0, bj.GetElemCount()) + labels := make([]*pd.StoreLabel, 0, bj.GetElemCount()) err = gjson.Unmarshal(data, &labels) if err != nil { return errors.Trace(err) diff --git a/pkg/executor/show_placement_labels_test.go b/pkg/executor/show_placement_labels_test.go index 33bf42b611d55..5ffab3b3eb3f5 100644 --- a/pkg/executor/show_placement_labels_test.go +++ b/pkg/executor/show_placement_labels_test.go @@ -18,14 +18,14 @@ import ( gjson "encoding/json" "testing" - "github.com/pingcap/tidb/pkg/store/helper" "github.com/pingcap/tidb/pkg/types" "github.com/stretchr/testify/require" + pd "github.com/tikv/pd/client/http" ) func TestShowPlacementLabelsBuilder(t *testing.T) { cases := []struct { - stores [][]*helper.StoreLabel + stores [][]*pd.StoreLabel expects [][]interface{} }{ { @@ -33,7 +33,7 @@ func TestShowPlacementLabelsBuilder(t *testing.T) { expects: nil, }, { - stores: [][]*helper.StoreLabel{ + stores: [][]*pd.StoreLabel{ {{Key: "zone", Value: "z1"}, {Key: "rack", Value: "r3"}, {Key: "host", Value: "h1"}}, {{Key: "zone", Value: "z1"}, {Key: "rack", Value: "r1"}, {Key: "host", Value: "h2"}}, {{Key: "zone", Value: "z1"}, {Key: "rack", Value: "r2"}, {Key: "host", Value: "h2"}}, diff --git a/pkg/executor/simple.go b/pkg/executor/simple.go index 03d3675dadbb4..8715d9d14f23b 100644 --- a/pkg/executor/simple.go +++ b/pkg/executor/simple.go @@ -41,6 +41,7 @@ import ( "github.com/pingcap/tidb/pkg/expression" "github.com/pingcap/tidb/pkg/infoschema" "github.com/pingcap/tidb/pkg/kv" + "github.com/pingcap/tidb/pkg/meta" "github.com/pingcap/tidb/pkg/parser/ast" "github.com/pingcap/tidb/pkg/parser/auth" "github.com/pingcap/tidb/pkg/parser/model" @@ -2786,6 +2787,8 @@ func (e *SimpleExec) executeAdmin(s *ast.AdminStmt) error { return e.executeAdminReloadStatistics(s) case ast.AdminFlushPlanCache: return e.executeAdminFlushPlanCache(s) + case ast.AdminSetBDRRole: + return e.executeAdminSetBDRRole(s) } return nil } @@ -2822,6 +2825,16 @@ func (e *SimpleExec) executeAdminFlushPlanCache(s *ast.AdminStmt) error { return nil } +func (e *SimpleExec) executeAdminSetBDRRole(s *ast.AdminStmt) error { + if s.Tp != ast.AdminSetBDRRole { + return errors.New("This AdminStmt is not ADMIN SET BDR_ROLE") + } + + return kv.RunInNewTxn(kv.WithInternalSourceType(context.Background(), kv.InternalTxnAdmin), e.Ctx().GetStore(), true, func(ctx context.Context, txn kv.Transaction) error { + return errors.Trace(meta.NewMeta(txn).SetBDRRole(string(s.BDRRole))) + }) +} + func (e *SimpleExec) executeSetResourceGroupName(s *ast.SetResourceGroupStmt) error { if s.Name.L != "" { if _, ok := e.is.ResourceGroupByName(s.Name); !ok { diff --git a/pkg/executor/sortexec/BUILD.bazel b/pkg/executor/sortexec/BUILD.bazel index 81d3caed95b91..5c1470e61c09e 100644 --- a/pkg/executor/sortexec/BUILD.bazel +++ b/pkg/executor/sortexec/BUILD.bazel @@ -2,7 +2,10 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") go_library( name = "sortexec", - srcs = ["sort.go"], + srcs = [ + "sort.go", + "topn.go", + ], importpath = "github.com/pingcap/tidb/pkg/executor/sortexec", visibility = ["//visibility:public"], deps = [ @@ -24,6 +27,7 @@ go_test( timeout = "short", srcs = ["sort_test.go"], flaky = True, + shard_count = 3, deps = [ "//pkg/config", "//pkg/sessionctx/variable", @@ -36,12 +40,23 @@ go_test( go_test( name = "sortexec_test", - srcs = ["sort_test.go"], + srcs = [ + "benchmark_test.go", + "sort_spill_test.go", + "sort_test.go", + ], deps = [ + ":sortexec", "//pkg/config", + "//pkg/executor/internal/exec", + "//pkg/executor/internal/testutil", + "//pkg/expression", + "//pkg/planner/util", "//pkg/sessionctx/variable", "//pkg/testkit", "//pkg/util", + "//pkg/util/memory", + "//pkg/util/mock", "@com_github_pingcap_failpoint//:failpoint", "@com_github_stretchr_testify//require", ], diff --git a/pkg/executor/sortexec/benchmark_test.go b/pkg/executor/sortexec/benchmark_test.go new file mode 100644 index 0000000000000..e1e50a4c0ef61 --- /dev/null +++ b/pkg/executor/sortexec/benchmark_test.go @@ -0,0 +1,116 @@ +// Copyright 2023 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 sortexec_test + +import ( + "context" + "fmt" + "testing" + + "github.com/pingcap/tidb/pkg/executor/internal/exec" + "github.com/pingcap/tidb/pkg/executor/internal/testutil" + "github.com/pingcap/tidb/pkg/executor/sortexec" + "github.com/pingcap/tidb/pkg/expression" + "github.com/pingcap/tidb/pkg/planner/util" + "github.com/pingcap/tidb/pkg/sessionctx/variable" +) + +func benchmarkSortExec(b *testing.B, cas *testutil.SortCase) { + opt := testutil.MockDataSourceParameters{ + DataSchema: expression.NewSchema(cas.Columns()...), + Rows: cas.Rows, + Ctx: cas.Ctx, + Ndvs: cas.Ndvs, + } + dataSource := testutil.BuildMockDataSource(opt) + executor := &sortexec.SortExec{ + BaseExecutor: exec.NewBaseExecutor(cas.Ctx, dataSource.Schema(), 4, dataSource), + ByItems: make([]*util.ByItems, 0, len(cas.OrderByIdx)), + ExecSchema: dataSource.Schema(), + } + for _, idx := range cas.OrderByIdx { + executor.ByItems = append(executor.ByItems, &util.ByItems{Expr: cas.Columns()[idx]}) + } + b.ResetTimer() + for i := 0; i < b.N; i++ { + b.StopTimer() + tmpCtx := context.Background() + chk := exec.NewFirstChunk(executor) + dataSource.PrepareChunks() + + b.StartTimer() + if err := executor.Open(tmpCtx); err != nil { + b.Fatal(err) + } + for { + if err := executor.Next(tmpCtx, chk); err != nil { + b.Fatal(err) + } + if chk.NumRows() == 0 { + break + } + } + + if err := executor.Close(); err != nil { + b.Fatal(err) + } + b.StopTimer() + } +} + +func benchmarkSortExecDerivateCases(b *testing.B, cas *testutil.SortCase) { + cas.Ndvs = []int{0, 0} + cas.OrderByIdx = []int{0, 1} + b.Run(fmt.Sprintf("%v", cas), func(b *testing.B) { + benchmarkSortExec(b, cas) + }) + + ndvs := []int{1, 10000} + for _, ndv := range ndvs { + cas.Ndvs = []int{ndv, 0} + cas.OrderByIdx = []int{0, 1} + b.Run(fmt.Sprintf("%v", cas), func(b *testing.B) { + benchmarkSortExec(b, cas) + }) + + cas.Ndvs = []int{ndv, 0} + cas.OrderByIdx = []int{0} + b.Run(fmt.Sprintf("%v", cas), func(b *testing.B) { + benchmarkSortExec(b, cas) + }) + + cas.Ndvs = []int{ndv, 0} + cas.OrderByIdx = []int{1} + b.Run(fmt.Sprintf("%v", cas), func(b *testing.B) { + benchmarkSortExec(b, cas) + }) + } +} + +func BenchmarkSortExec(b *testing.B) { + b.ReportAllocs() + cas := testutil.DefaultSortTestCase() + benchmarkSortExecDerivateCases(b, cas) +} + +func BenchmarkSortExecSpillToDisk(b *testing.B) { + enableTmpStorageOnOOMCurrentVal := variable.EnableTmpStorageOnOOM.Load() + variable.EnableTmpStorageOnOOM.Store(true) + defer variable.EnableTmpStorageOnOOM.Store(enableTmpStorageOnOOMCurrentVal) + + b.ReportAllocs() + cas := testutil.SortTestCaseWithMemoryLimit(1) + benchmarkSortExecDerivateCases(b, cas) +} diff --git a/pkg/executor/sortexec/sort.go b/pkg/executor/sortexec/sort.go index 030ec2b426fca..ce26bac26b802 100644 --- a/pkg/executor/sortexec/sort.go +++ b/pkg/executor/sortexec/sort.go @@ -18,12 +18,10 @@ import ( "container/heap" "context" "errors" - "slices" "github.com/pingcap/failpoint" "github.com/pingcap/tidb/pkg/executor/internal/exec" "github.com/pingcap/tidb/pkg/expression" - plannercore "github.com/pingcap/tidb/pkg/planner/core" "github.com/pingcap/tidb/pkg/planner/util" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/util/chunk" @@ -328,223 +326,3 @@ func (h *multiWayMerge) Pop() interface{} { func (h *multiWayMerge) Swap(i, j int) { h.elements[i], h.elements[j] = h.elements[j], h.elements[i] } - -// TopNExec implements a Top-N algorithm and it is built from a SELECT statement with ORDER BY and LIMIT. -// Instead of sorting all the rows fetched from the table, it keeps the Top-N elements only in a heap to reduce memory usage. -type TopNExec struct { - SortExec - Limit *plannercore.PhysicalLimit - totalLimit uint64 - - // rowChunks is the chunks to store row values. - rowChunks *chunk.List - // rowPointer store the chunk index and row index for each row. - rowPtrs []chunk.RowPtr - - chkHeap *topNChunkHeap -} - -// topNChunkHeap implements heap.Interface. -type topNChunkHeap struct { - *TopNExec -} - -// Less implement heap.Interface, but since we mantains a max heap, -// this function returns true if row i is greater than row j. -func (h *topNChunkHeap) Less(i, j int) bool { - rowI := h.rowChunks.GetRow(h.rowPtrs[i]) - rowJ := h.rowChunks.GetRow(h.rowPtrs[j]) - return h.greaterRow(rowI, rowJ) -} - -func (h *topNChunkHeap) greaterRow(rowI, rowJ chunk.Row) bool { - for i, colIdx := range h.keyColumns { - cmpFunc := h.keyCmpFuncs[i] - cmp := cmpFunc(rowI, colIdx, rowJ, colIdx) - if h.ByItems[i].Desc { - cmp = -cmp - } - if cmp > 0 { - return true - } else if cmp < 0 { - return false - } - } - return false -} - -func (h *topNChunkHeap) Len() int { - return len(h.rowPtrs) -} - -func (*topNChunkHeap) Push(interface{}) { - // Should never be called. -} - -func (h *topNChunkHeap) Pop() interface{} { - h.rowPtrs = h.rowPtrs[:len(h.rowPtrs)-1] - // We don't need the popped value, return nil to avoid memory allocation. - return nil -} - -func (h *topNChunkHeap) Swap(i, j int) { - h.rowPtrs[i], h.rowPtrs[j] = h.rowPtrs[j], h.rowPtrs[i] -} - -// keyColumnsLess is the less function for key columns. -func (e *TopNExec) keyColumnsLess(i, j chunk.RowPtr) bool { - rowI := e.rowChunks.GetRow(i) - rowJ := e.rowChunks.GetRow(j) - return e.lessRow(rowI, rowJ) -} - -func (e *TopNExec) keyColumnsCompare(i, j chunk.RowPtr) int { - rowI := e.rowChunks.GetRow(i) - rowJ := e.rowChunks.GetRow(j) - return e.compressRow(rowI, rowJ) -} - -func (e *TopNExec) initPointers() { - e.rowPtrs = make([]chunk.RowPtr, 0, e.rowChunks.Len()) - e.memTracker.Consume(int64(8 * e.rowChunks.Len())) - for chkIdx := 0; chkIdx < e.rowChunks.NumChunks(); chkIdx++ { - rowChk := e.rowChunks.GetChunk(chkIdx) - for rowIdx := 0; rowIdx < rowChk.NumRows(); rowIdx++ { - e.rowPtrs = append(e.rowPtrs, chunk.RowPtr{ChkIdx: uint32(chkIdx), RowIdx: uint32(rowIdx)}) - } - } -} - -// Open implements the Executor Open interface. -func (e *TopNExec) Open(ctx context.Context) error { - e.memTracker = memory.NewTracker(e.ID(), -1) - e.memTracker.AttachTo(e.Ctx().GetSessionVars().StmtCtx.MemTracker) - - e.fetched = false - e.Idx = 0 - - return exec.Open(ctx, e.Children(0)) -} - -// Next implements the Executor Next interface. -func (e *TopNExec) Next(ctx context.Context, req *chunk.Chunk) error { - req.Reset() - if !e.fetched { - e.totalLimit = e.Limit.Offset + e.Limit.Count - e.Idx = int(e.Limit.Offset) - err := e.loadChunksUntilTotalLimit(ctx) - if err != nil { - return err - } - err = e.executeTopN(ctx) - if err != nil { - return err - } - e.fetched = true - } - if e.Idx >= len(e.rowPtrs) { - return nil - } - if !req.IsFull() { - numToAppend := min(len(e.rowPtrs)-e.Idx, req.RequiredRows()-req.NumRows()) - rows := make([]chunk.Row, numToAppend) - for index := 0; index < numToAppend; index++ { - rows[index] = e.rowChunks.GetRow(e.rowPtrs[e.Idx]) - e.Idx++ - } - req.AppendRows(rows) - } - return nil -} - -func (e *TopNExec) loadChunksUntilTotalLimit(ctx context.Context) error { - e.chkHeap = &topNChunkHeap{e} - e.rowChunks = chunk.NewList(exec.RetTypes(e), e.InitCap(), e.MaxChunkSize()) - e.rowChunks.GetMemTracker().AttachTo(e.memTracker) - e.rowChunks.GetMemTracker().SetLabel(memory.LabelForRowChunks) - for uint64(e.rowChunks.Len()) < e.totalLimit { - srcChk := exec.TryNewCacheChunk(e.Children(0)) - // adjust required rows by total limit - srcChk.SetRequiredRows(int(e.totalLimit-uint64(e.rowChunks.Len())), e.MaxChunkSize()) - err := exec.Next(ctx, e.Children(0), srcChk) - if err != nil { - return err - } - if srcChk.NumRows() == 0 { - break - } - e.rowChunks.Add(srcChk) - } - e.initPointers() - e.initCompareFuncs() - e.buildKeyColumns() - return nil -} - -const topNCompactionFactor = 4 - -func (e *TopNExec) executeTopN(ctx context.Context) error { - heap.Init(e.chkHeap) - for uint64(len(e.rowPtrs)) > e.totalLimit { - // The number of rows we loaded may exceeds total limit, remove greatest rows by Pop. - heap.Pop(e.chkHeap) - } - childRowChk := exec.TryNewCacheChunk(e.Children(0)) - for { - err := exec.Next(ctx, e.Children(0), childRowChk) - if err != nil { - return err - } - if childRowChk.NumRows() == 0 { - break - } - err = e.processChildChk(childRowChk) - if err != nil { - return err - } - if e.rowChunks.Len() > len(e.rowPtrs)*topNCompactionFactor { - err = e.doCompaction() - if err != nil { - return err - } - } - } - slices.SortFunc(e.rowPtrs, e.keyColumnsCompare) - return nil -} - -func (e *TopNExec) processChildChk(childRowChk *chunk.Chunk) error { - for i := 0; i < childRowChk.NumRows(); i++ { - heapMaxPtr := e.rowPtrs[0] - var heapMax, next chunk.Row - heapMax = e.rowChunks.GetRow(heapMaxPtr) - next = childRowChk.GetRow(i) - if e.chkHeap.greaterRow(heapMax, next) { - // Evict heap max, keep the next row. - e.rowPtrs[0] = e.rowChunks.AppendRow(childRowChk.GetRow(i)) - heap.Fix(e.chkHeap, 0) - } - } - return nil -} - -// doCompaction rebuild the chunks and row pointers to release memory. -// If we don't do compaction, in a extreme case like the child data is already ascending sorted -// but we want descending top N, then we will keep all data in memory. -// But if data is distributed randomly, this function will be called log(n) times. -func (e *TopNExec) doCompaction() error { - newRowChunks := chunk.NewList(exec.RetTypes(e), e.InitCap(), e.MaxChunkSize()) - newRowPtrs := make([]chunk.RowPtr, 0, e.rowChunks.Len()) - for _, rowPtr := range e.rowPtrs { - newRowPtr := newRowChunks.AppendRow(e.rowChunks.GetRow(rowPtr)) - newRowPtrs = append(newRowPtrs, newRowPtr) - } - newRowChunks.GetMemTracker().SetLabel(memory.LabelForRowChunks) - e.memTracker.ReplaceChild(e.rowChunks.GetMemTracker(), newRowChunks.GetMemTracker()) - e.rowChunks = newRowChunks - - e.memTracker.Consume(int64(-8 * len(e.rowPtrs))) - e.memTracker.Consume(int64(8 * len(newRowPtrs))) - e.rowPtrs = newRowPtrs - return nil -} diff --git a/pkg/executor/sortexec/sort_spill_test.go b/pkg/executor/sortexec/sort_spill_test.go new file mode 100644 index 0000000000000..628032a5cb23f --- /dev/null +++ b/pkg/executor/sortexec/sort_spill_test.go @@ -0,0 +1,172 @@ +// Copyright 2023 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 sortexec_test + +import ( + "context" + "testing" + + "github.com/pingcap/failpoint" + "github.com/pingcap/tidb/pkg/executor/internal/exec" + "github.com/pingcap/tidb/pkg/executor/internal/testutil" + "github.com/pingcap/tidb/pkg/executor/sortexec" + "github.com/pingcap/tidb/pkg/expression" + plannerutil "github.com/pingcap/tidb/pkg/planner/util" + "github.com/pingcap/tidb/pkg/sessionctx/variable" + "github.com/pingcap/tidb/pkg/util/memory" + "github.com/pingcap/tidb/pkg/util/mock" + "github.com/stretchr/testify/require" +) + +func TestSortSpillDisk(t *testing.T) { + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/executor/sortexec/testSortedRowContainerSpill", "return(true)")) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/executor/sortexec/testSortedRowContainerSpill")) + }() + ctx := mock.NewContext() + ctx.GetSessionVars().MemQuota.MemQuotaQuery = 1 + ctx.GetSessionVars().InitChunkSize = variable.DefMaxChunkSize + ctx.GetSessionVars().MaxChunkSize = variable.DefMaxChunkSize + ctx.GetSessionVars().MemTracker = memory.NewTracker(memory.LabelForSession, -1) + ctx.GetSessionVars().StmtCtx.MemTracker = memory.NewTracker(memory.LabelForSQLText, -1) + ctx.GetSessionVars().StmtCtx.MemTracker.AttachTo(ctx.GetSessionVars().MemTracker) + cas := &testutil.SortCase{Rows: 2048, OrderByIdx: []int{0, 1}, Ndvs: []int{0, 0}, Ctx: ctx} + opt := testutil.MockDataSourceParameters{ + DataSchema: expression.NewSchema(cas.Columns()...), + Rows: cas.Rows, + Ctx: cas.Ctx, + Ndvs: cas.Ndvs, + } + dataSource := testutil.BuildMockDataSource(opt) + exe := &sortexec.SortExec{ + BaseExecutor: exec.NewBaseExecutor(cas.Ctx, dataSource.Schema(), 0, dataSource), + ByItems: make([]*plannerutil.ByItems, 0, len(cas.OrderByIdx)), + ExecSchema: dataSource.Schema(), + } + for _, idx := range cas.OrderByIdx { + exe.ByItems = append(exe.ByItems, &plannerutil.ByItems{Expr: cas.Columns()[idx]}) + } + tmpCtx := context.Background() + chk := exec.NewFirstChunk(exe) + dataSource.PrepareChunks() + err := exe.Open(tmpCtx) + require.NoError(t, err) + for { + err = exe.Next(tmpCtx, chk) + require.NoError(t, err) + if chk.NumRows() == 0 { + break + } + } + // Test only 1 partition and all data in memory. + require.Len(t, exe.PartitionList, 1) + require.Equal(t, false, exe.PartitionList[0].AlreadySpilledSafeForTest()) + require.Equal(t, 2048, exe.PartitionList[0].NumRow()) + err = exe.Close() + require.NoError(t, err) + + ctx.GetSessionVars().MemTracker = memory.NewTracker(memory.LabelForSession, 1) + ctx.GetSessionVars().StmtCtx.MemTracker = memory.NewTracker(memory.LabelForSQLText, -1) + ctx.GetSessionVars().StmtCtx.MemTracker.AttachTo(ctx.GetSessionVars().MemTracker) + dataSource.PrepareChunks() + err = exe.Open(tmpCtx) + require.NoError(t, err) + for { + err = exe.Next(tmpCtx, chk) + require.NoError(t, err) + if chk.NumRows() == 0 { + break + } + } + // Test 2 partitions and all data in disk. + // Now spilling is in parallel. + // Maybe the second add() will called before spilling, depends on + // Golang goroutine scheduling. So the result has two possibilities. + if len(exe.PartitionList) == 2 { + require.Len(t, exe.PartitionList, 2) + require.Equal(t, true, exe.PartitionList[0].AlreadySpilledSafeForTest()) + require.Equal(t, true, exe.PartitionList[1].AlreadySpilledSafeForTest()) + require.Equal(t, 1024, exe.PartitionList[0].NumRow()) + require.Equal(t, 1024, exe.PartitionList[1].NumRow()) + } else { + require.Len(t, exe.PartitionList, 1) + require.Equal(t, true, exe.PartitionList[0].AlreadySpilledSafeForTest()) + require.Equal(t, 2048, exe.PartitionList[0].NumRow()) + } + + err = exe.Close() + require.NoError(t, err) + + ctx.GetSessionVars().MemTracker = memory.NewTracker(memory.LabelForSession, 28000) + ctx.GetSessionVars().StmtCtx.MemTracker = memory.NewTracker(memory.LabelForSQLText, -1) + ctx.GetSessionVars().StmtCtx.MemTracker.AttachTo(ctx.GetSessionVars().MemTracker) + dataSource.PrepareChunks() + err = exe.Open(tmpCtx) + require.NoError(t, err) + for { + err = exe.Next(tmpCtx, chk) + require.NoError(t, err) + if chk.NumRows() == 0 { + break + } + } + // Test only 1 partition but spill disk. + require.Len(t, exe.PartitionList, 1) + require.Equal(t, true, exe.PartitionList[0].AlreadySpilledSafeForTest()) + require.Equal(t, 2048, exe.PartitionList[0].NumRow()) + err = exe.Close() + require.NoError(t, err) + + // Test partition nums. + ctx = mock.NewContext() + ctx.GetSessionVars().InitChunkSize = variable.DefMaxChunkSize + ctx.GetSessionVars().MaxChunkSize = variable.DefMaxChunkSize + ctx.GetSessionVars().MemTracker = memory.NewTracker(memory.LabelForSession, 16864*50) + ctx.GetSessionVars().MemTracker.Consume(16864 * 45) + ctx.GetSessionVars().StmtCtx.MemTracker = memory.NewTracker(memory.LabelForSQLText, -1) + ctx.GetSessionVars().StmtCtx.MemTracker.AttachTo(ctx.GetSessionVars().MemTracker) + cas = &testutil.SortCase{Rows: 20480, OrderByIdx: []int{0, 1}, Ndvs: []int{0, 0}, Ctx: ctx} + opt = testutil.MockDataSourceParameters{ + DataSchema: expression.NewSchema(cas.Columns()...), + Rows: cas.Rows, + Ctx: cas.Ctx, + Ndvs: cas.Ndvs, + } + dataSource = testutil.BuildMockDataSource(opt) + exe = &sortexec.SortExec{ + BaseExecutor: exec.NewBaseExecutor(cas.Ctx, dataSource.Schema(), 0, dataSource), + ByItems: make([]*plannerutil.ByItems, 0, len(cas.OrderByIdx)), + ExecSchema: dataSource.Schema(), + } + for _, idx := range cas.OrderByIdx { + exe.ByItems = append(exe.ByItems, &plannerutil.ByItems{Expr: cas.Columns()[idx]}) + } + tmpCtx = context.Background() + chk = exec.NewFirstChunk(exe) + dataSource.PrepareChunks() + err = exe.Open(tmpCtx) + require.NoError(t, err) + for { + err = exe.Next(tmpCtx, chk) + require.NoError(t, err) + if chk.NumRows() == 0 { + break + } + } + // Don't spill too many partitions. + require.True(t, len(exe.PartitionList) <= 4) + err = exe.Close() + require.NoError(t, err) +} diff --git a/pkg/executor/sortexec/topn.go b/pkg/executor/sortexec/topn.go new file mode 100644 index 0000000000000..a52de50c42f3c --- /dev/null +++ b/pkg/executor/sortexec/topn.go @@ -0,0 +1,246 @@ +// Copyright 2023 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 sortexec + +import ( + "container/heap" + "context" + "slices" + + "github.com/pingcap/tidb/pkg/executor/internal/exec" + plannercore "github.com/pingcap/tidb/pkg/planner/core" + "github.com/pingcap/tidb/pkg/util/chunk" + "github.com/pingcap/tidb/pkg/util/memory" +) + +// TopNExec implements a Top-N algorithm and it is built from a SELECT statement with ORDER BY and LIMIT. +// Instead of sorting all the rows fetched from the table, it keeps the Top-N elements only in a heap to reduce memory usage. +type TopNExec struct { + SortExec + Limit *plannercore.PhysicalLimit + totalLimit uint64 + + // rowChunks is the chunks to store row values. + rowChunks *chunk.List + // rowPointer store the chunk index and row index for each row. + rowPtrs []chunk.RowPtr + + chkHeap *topNChunkHeap +} + +// topNChunkHeap implements heap.Interface. +type topNChunkHeap struct { + *TopNExec +} + +// Less implement heap.Interface, but since we mantains a max heap, +// this function returns true if row i is greater than row j. +func (h *topNChunkHeap) Less(i, j int) bool { + rowI := h.rowChunks.GetRow(h.rowPtrs[i]) + rowJ := h.rowChunks.GetRow(h.rowPtrs[j]) + return h.greaterRow(rowI, rowJ) +} + +func (h *topNChunkHeap) greaterRow(rowI, rowJ chunk.Row) bool { + for i, colIdx := range h.keyColumns { + cmpFunc := h.keyCmpFuncs[i] + cmp := cmpFunc(rowI, colIdx, rowJ, colIdx) + if h.ByItems[i].Desc { + cmp = -cmp + } + if cmp > 0 { + return true + } else if cmp < 0 { + return false + } + } + return false +} + +func (h *topNChunkHeap) Len() int { + return len(h.rowPtrs) +} + +func (*topNChunkHeap) Push(interface{}) { + // Should never be called. +} + +func (h *topNChunkHeap) Pop() interface{} { + h.rowPtrs = h.rowPtrs[:len(h.rowPtrs)-1] + // We don't need the popped value, return nil to avoid memory allocation. + return nil +} + +func (h *topNChunkHeap) Swap(i, j int) { + h.rowPtrs[i], h.rowPtrs[j] = h.rowPtrs[j], h.rowPtrs[i] +} + +// keyColumnsLess is the less function for key columns. +func (e *TopNExec) keyColumnsLess(i, j chunk.RowPtr) bool { + rowI := e.rowChunks.GetRow(i) + rowJ := e.rowChunks.GetRow(j) + return e.lessRow(rowI, rowJ) +} + +func (e *TopNExec) keyColumnsCompare(i, j chunk.RowPtr) int { + rowI := e.rowChunks.GetRow(i) + rowJ := e.rowChunks.GetRow(j) + return e.compressRow(rowI, rowJ) +} + +func (e *TopNExec) initPointers() { + e.rowPtrs = make([]chunk.RowPtr, 0, e.rowChunks.Len()) + e.memTracker.Consume(int64(8 * e.rowChunks.Len())) + for chkIdx := 0; chkIdx < e.rowChunks.NumChunks(); chkIdx++ { + rowChk := e.rowChunks.GetChunk(chkIdx) + for rowIdx := 0; rowIdx < rowChk.NumRows(); rowIdx++ { + e.rowPtrs = append(e.rowPtrs, chunk.RowPtr{ChkIdx: uint32(chkIdx), RowIdx: uint32(rowIdx)}) + } + } +} + +// Open implements the Executor Open interface. +func (e *TopNExec) Open(ctx context.Context) error { + e.memTracker = memory.NewTracker(e.ID(), -1) + e.memTracker.AttachTo(e.Ctx().GetSessionVars().StmtCtx.MemTracker) + + e.fetched = false + e.Idx = 0 + + return exec.Open(ctx, e.Children(0)) +} + +// Next implements the Executor Next interface. +func (e *TopNExec) Next(ctx context.Context, req *chunk.Chunk) error { + req.Reset() + if !e.fetched { + e.totalLimit = e.Limit.Offset + e.Limit.Count + e.Idx = int(e.Limit.Offset) + err := e.loadChunksUntilTotalLimit(ctx) + if err != nil { + return err + } + err = e.executeTopN(ctx) + if err != nil { + return err + } + e.fetched = true + } + if e.Idx >= len(e.rowPtrs) { + return nil + } + if !req.IsFull() { + numToAppend := min(len(e.rowPtrs)-e.Idx, req.RequiredRows()-req.NumRows()) + rows := make([]chunk.Row, numToAppend) + for index := 0; index < numToAppend; index++ { + rows[index] = e.rowChunks.GetRow(e.rowPtrs[e.Idx]) + e.Idx++ + } + req.AppendRows(rows) + } + return nil +} + +func (e *TopNExec) loadChunksUntilTotalLimit(ctx context.Context) error { + e.chkHeap = &topNChunkHeap{e} + e.rowChunks = chunk.NewList(exec.RetTypes(e), e.InitCap(), e.MaxChunkSize()) + e.rowChunks.GetMemTracker().AttachTo(e.memTracker) + e.rowChunks.GetMemTracker().SetLabel(memory.LabelForRowChunks) + for uint64(e.rowChunks.Len()) < e.totalLimit { + srcChk := exec.TryNewCacheChunk(e.Children(0)) + // adjust required rows by total limit + srcChk.SetRequiredRows(int(e.totalLimit-uint64(e.rowChunks.Len())), e.MaxChunkSize()) + err := exec.Next(ctx, e.Children(0), srcChk) + if err != nil { + return err + } + if srcChk.NumRows() == 0 { + break + } + e.rowChunks.Add(srcChk) + } + e.initPointers() + e.initCompareFuncs() + e.buildKeyColumns() + return nil +} + +const topNCompactionFactor = 4 + +func (e *TopNExec) executeTopN(ctx context.Context) error { + heap.Init(e.chkHeap) + for uint64(len(e.rowPtrs)) > e.totalLimit { + // The number of rows we loaded may exceeds total limit, remove greatest rows by Pop. + heap.Pop(e.chkHeap) + } + childRowChk := exec.TryNewCacheChunk(e.Children(0)) + for { + err := exec.Next(ctx, e.Children(0), childRowChk) + if err != nil { + return err + } + if childRowChk.NumRows() == 0 { + break + } + err = e.processChildChk(childRowChk) + if err != nil { + return err + } + if e.rowChunks.Len() > len(e.rowPtrs)*topNCompactionFactor { + err = e.doCompaction() + if err != nil { + return err + } + } + } + slices.SortFunc(e.rowPtrs, e.keyColumnsCompare) + return nil +} + +func (e *TopNExec) processChildChk(childRowChk *chunk.Chunk) error { + for i := 0; i < childRowChk.NumRows(); i++ { + heapMaxPtr := e.rowPtrs[0] + var heapMax, next chunk.Row + heapMax = e.rowChunks.GetRow(heapMaxPtr) + next = childRowChk.GetRow(i) + if e.chkHeap.greaterRow(heapMax, next) { + // Evict heap max, keep the next row. + e.rowPtrs[0] = e.rowChunks.AppendRow(childRowChk.GetRow(i)) + heap.Fix(e.chkHeap, 0) + } + } + return nil +} + +// doCompaction rebuild the chunks and row pointers to release memory. +// If we don't do compaction, in a extreme case like the child data is already ascending sorted +// but we want descending top N, then we will keep all data in memory. +// But if data is distributed randomly, this function will be called log(n) times. +func (e *TopNExec) doCompaction() error { + newRowChunks := chunk.NewList(exec.RetTypes(e), e.InitCap(), e.MaxChunkSize()) + newRowPtrs := make([]chunk.RowPtr, 0, e.rowChunks.Len()) + for _, rowPtr := range e.rowPtrs { + newRowPtr := newRowChunks.AppendRow(e.rowChunks.GetRow(rowPtr)) + newRowPtrs = append(newRowPtrs, newRowPtr) + } + newRowChunks.GetMemTracker().SetLabel(memory.LabelForRowChunks) + e.memTracker.ReplaceChild(e.rowChunks.GetMemTracker(), newRowChunks.GetMemTracker()) + e.rowChunks = newRowChunks + + e.memTracker.Consume(int64(-8 * len(e.rowPtrs))) + e.memTracker.Consume(int64(8 * len(newRowPtrs))) + e.rowPtrs = newRowPtrs + return nil +} diff --git a/pkg/executor/split.go b/pkg/executor/split.go index e2830894589a7..04c38b9588e15 100644 --- a/pkg/executor/split.go +++ b/pkg/executor/split.go @@ -823,8 +823,12 @@ func getRegionInfo(store helper.Storage, regions []regionMeta) ([]regionMeta, er Store: store, RegionCache: store.GetRegionCache(), } + pdCli, err := tikvHelper.TryGetPDHTTPClient() + if err != nil { + return regions, err + } for i := range regions { - regionInfo, err := tikvHelper.GetRegionInfoByID(regions[i].region.Id) + regionInfo, err := pdCli.GetRegionByID(context.TODO(), regions[i].region.Id) if err != nil { return nil, err } diff --git a/pkg/executor/stale_txn_test.go b/pkg/executor/stale_txn_test.go index 4b30125453be9..8a880e31febb6 100644 --- a/pkg/executor/stale_txn_test.go +++ b/pkg/executor/stale_txn_test.go @@ -1315,21 +1315,6 @@ func TestPlanCacheWithStaleReadByBinaryProto(t *testing.T) { tk.ResultSetToResult(rs, fmt.Sprintf("%v", rs)).Check(testkit.Rows("1 10")) } -func TestIssue33728(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, v int)") - err := tk.ExecToErr("select * from t1 as of timestamp NULL") - require.Error(t, err) - require.Equal(t, "[planner:8135]invalid as of timestamp: as of timestamp cannot be NULL", err.Error()) - - err = tk.ExecToErr("start transaction read only as of timestamp NULL") - require.Error(t, err) - require.Equal(t, "[planner:8135]invalid as of timestamp: as of timestamp cannot be NULL", err.Error()) -} - func TestStalePrepare(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) diff --git a/pkg/executor/table_reader.go b/pkg/executor/table_reader.go index 8998226f7dda1..61d82eae3ec48 100644 --- a/pkg/executor/table_reader.go +++ b/pkg/executor/table_reader.go @@ -368,7 +368,7 @@ func (e *TableReaderExecutor) buildKVReqSeparately(ctx context.Context, ranges [ SetPaging(e.paging). SetAllowBatchCop(e.batchCop). SetClosestReplicaReadAdjuster(newClosestReadAdjuster(e.Ctx(), &reqBuilder.Request, e.netDataSize)). - SetConnID(e.Ctx().GetSessionVars().ConnectionID). + SetConnIDAndConnAlias(e.Ctx().GetSessionVars().ConnectionID, e.Ctx().GetSessionVars().SessionAlias). Build() if err != nil { return nil, err @@ -410,7 +410,7 @@ func (e *TableReaderExecutor) buildKVReqForPartitionTableScan(ctx context.Contex SetPaging(e.paging). SetAllowBatchCop(e.batchCop). SetClosestReplicaReadAdjuster(newClosestReadAdjuster(e.Ctx(), &reqBuilder.Request, e.netDataSize)). - SetConnID(e.Ctx().GetSessionVars().ConnectionID). + SetConnIDAndConnAlias(e.Ctx().GetSessionVars().ConnectionID, e.Ctx().GetSessionVars().SessionAlias). Build() if err != nil { return nil, err @@ -460,7 +460,7 @@ func (e *TableReaderExecutor) buildKVReq(ctx context.Context, ranges []*ranger.R SetAllowBatchCop(e.batchCop). SetClosestReplicaReadAdjuster(newClosestReadAdjuster(e.Ctx(), &reqBuilder.Request, e.netDataSize)). SetPaging(e.paging). - SetConnID(e.Ctx().GetSessionVars().ConnectionID) + SetConnIDAndConnAlias(e.Ctx().GetSessionVars().ConnectionID, e.Ctx().GetSessionVars().SessionAlias) return reqBuilder.Build() } diff --git a/pkg/executor/test/admintest/admin_test.go b/pkg/executor/test/admintest/admin_test.go index eb2d455b8aa1b..689572ab19286 100644 --- a/pkg/executor/test/admintest/admin_test.go +++ b/pkg/executor/test/admintest/admin_test.go @@ -1243,7 +1243,7 @@ func TestCheckFailReport(t *testing.T) { txn, err := store.Begin() require.NoError(t, err) - encoded, err := codec.EncodeKey(stmtctx.NewStmtCtx(), nil, types.NewBytesDatum([]byte{1, 0, 1, 0, 0, 1, 1})) + encoded, err := codec.EncodeKey(time.UTC, nil, types.NewBytesDatum([]byte{1, 0, 1, 0, 0, 1, 1})) require.NoError(t, err) hd, err := kv.NewCommonHandle(encoded) require.NoError(t, err) @@ -1635,7 +1635,7 @@ func TestAdminCheckTableErrorLocateForClusterIndex(t *testing.T) { r := regexp.MustCompile(pattern) getCommonHandle := func(randomRow int) *kv.CommonHandle { - h, err := codec.EncodeKey(sc, nil, types.MakeDatums(randomRow)...) + h, err := codec.EncodeKey(sc.TimeZone(), nil, types.MakeDatums(randomRow)...) require.NoError(t, err) ch, err := kv.NewCommonHandle(h) require.NoError(t, err) diff --git a/pkg/executor/test/executor/BUILD.bazel b/pkg/executor/test/executor/BUILD.bazel index 8046b5d761d57..ba040bee380cf 100644 --- a/pkg/executor/test/executor/BUILD.bazel +++ b/pkg/executor/test/executor/BUILD.bazel @@ -8,7 +8,7 @@ go_test( "main_test.go", ], flaky = True, - shard_count = 50, + shard_count = 46, deps = [ "//pkg/config", "//pkg/ddl", @@ -32,7 +32,6 @@ go_test( "//pkg/sessionctx/stmtctx", "//pkg/sessionctx/variable", "//pkg/sessiontxn", - "//pkg/store/driver/error", "//pkg/store/mockstore", "//pkg/table/tables", "//pkg/tablecodec", diff --git a/pkg/executor/test/executor/executor_test.go b/pkg/executor/test/executor/executor_test.go index 10c40f7d65b70..b3ebaa566874e 100644 --- a/pkg/executor/test/executor/executor_test.go +++ b/pkg/executor/test/executor/executor_test.go @@ -52,7 +52,6 @@ import ( "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/sessiontxn" - error2 "github.com/pingcap/tidb/pkg/store/driver/error" "github.com/pingcap/tidb/pkg/store/mockstore" "github.com/pingcap/tidb/pkg/table/tables" "github.com/pingcap/tidb/pkg/tablecodec" @@ -98,22 +97,6 @@ func checkFileName(s string) bool { return false } -func TestBind(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("drop table if exists testbind") - - tk.MustExec("create table testbind(i int, s varchar(20))") - tk.MustExec("create index index_t on testbind(i,s)") - tk.MustExec("create global binding for select * from testbind using select * from testbind use index for join(index_t)") - require.Len(t, tk.MustQuery("show global bindings").Rows(), 1) - - tk.MustExec("create session binding for select * from testbind using select * from testbind use index for join(index_t)") - require.Len(t, tk.MustQuery("show session bindings").Rows(), 1) - tk.MustExec("drop session binding for select * from testbind") -} - func TestPlanReplayer(t *testing.T) { require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/infoschema/mockTiFlashStoreCount", `return(true)`)) defer func() { @@ -404,7 +387,7 @@ func setColValue(t *testing.T, txn kv.Transaction, key kv.Key, v types.Datum) { colIDs := []int64{2, 3} sc := stmtctx.NewStmtCtxWithTimeZone(time.Local) rd := rowcodec.Encoder{Enable: true} - value, err := tablecodec.EncodeRow(sc, row, colIDs, nil, nil, &rd) + value, err := tablecodec.EncodeRow(sc.TimeZone(), row, colIDs, nil, nil, &rd) require.NoError(t, err) err = txn.Set(key, value) require.NoError(t, err) @@ -649,117 +632,6 @@ func TestTiDBLastQueryInfo(t *testing.T) { tk.MustExec("rollback") } -func TestSelectForUpdate(t *testing.T) { - store := testkit.CreateMockStore(t) - - setTxnTk := testkit.NewTestKit(t, store) - setTxnTk.MustExec("set global tidb_txn_mode=''") - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk1 := testkit.NewTestKit(t, store) - tk1.MustExec("use test") - tk2 := testkit.NewTestKit(t, store) - tk2.MustExec("use test") - - tk.MustExec("drop table if exists t, t1") - - txn, err := tk.Session().Txn(true) - require.True(t, kv.ErrInvalidTxn.Equal(err)) - require.False(t, txn.Valid()) - tk.MustExec("create table t (c1 int, c2 int, c3 int)") - tk.MustExec("insert t values (11, 2, 3)") - tk.MustExec("insert t values (12, 2, 3)") - tk.MustExec("insert t values (13, 2, 3)") - - tk.MustExec("create table t1 (c1 int)") - tk.MustExec("insert t1 values (11)") - - // conflict - tk1.MustExec("begin") - tk1.MustQuery("select * from t where c1=11 for update") - - tk2.MustExec("begin") - tk2.MustExec("update t set c2=211 where c1=11") - tk2.MustExec("commit") - - err = tk1.ExecToErr("commit") - require.Error(t, err) - - // no conflict for subquery. - tk1.MustExec("begin") - tk1.MustQuery("select * from t where exists(select null from t1 where t1.c1=t.c1) for update") - - tk2.MustExec("begin") - tk2.MustExec("update t set c2=211 where c1=12") - tk2.MustExec("commit") - - tk1.MustExec("commit") - - // not conflict - tk1.MustExec("begin") - tk1.MustQuery("select * from t where c1=11 for update") - - tk2.MustExec("begin") - tk2.MustExec("update t set c2=22 where c1=12") - tk2.MustExec("commit") - - tk1.MustExec("commit") - - // not conflict, auto commit - tk1.MustExec("set @@autocommit=1;") - tk1.MustQuery("select * from t where c1=11 for update") - - tk2.MustExec("begin") - tk2.MustExec("update t set c2=211 where c1=11") - tk2.MustExec("commit") - - tk1.MustExec("commit") - - // conflict - tk1.MustExec("begin") - tk1.MustQuery("select * from (select * from t for update) t join t1 for update") - - tk2.MustExec("begin") - tk2.MustExec("update t1 set c1 = 13") - tk2.MustExec("commit") - - err = tk1.ExecToErr("commit") - require.Error(t, err) -} - -func TestSelectForUpdateOf(t *testing.T) { - store := testkit.CreateMockStore(t) - - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk1 := testkit.NewTestKit(t, store) - tk1.MustExec("use test") - - tk.MustExec("drop table if exists t, t1") - tk.MustExec("create table t (i int)") - tk.MustExec("create table t1 (i int)") - tk.MustExec("insert t values (1)") - tk.MustExec("insert t1 values (1)") - - tk.MustExec("begin pessimistic") - tk.MustQuery("select * from t, t1 where t.i = t1.i for update of t").Check(testkit.Rows("1 1")) - - tk1.MustExec("begin pessimistic") - - // no lock for t - tk1.MustQuery("select * from t1 for update").Check(testkit.Rows("1")) - - // meet lock for t1 - err := tk1.ExecToErr("select * from t for update nowait") - require.True(t, terror.ErrorEqual(err, error2.ErrLockAcquireFailAndNoWaitSet), fmt.Sprintf("err: %v", err)) - - // t1 rolled back, tk1 acquire the lock - tk.MustExec("rollback") - tk1.MustQuery("select * from t for update nowait").Check(testkit.Rows("1")) - - tk1.MustExec("rollback") -} - func TestPartitionHashCode(t *testing.T) { store := testkit.CreateMockStore(t) @@ -779,62 +651,6 @@ func TestPartitionHashCode(t *testing.T) { wg.Wait() } -func TestIndexLookupRuntimeStats(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, index(a))") - tk.MustExec("insert into t1 values (1,2),(2,3),(3,4)") - rows := tk.MustQuery("explain analyze select * from t1 use index(a) where a > 1").Rows() - require.Len(t, rows, 3) - explain := fmt.Sprintf("%v", rows[0]) - require.Regexp(t, ".*time:.*loops:.*index_task:.*table_task: {total_time.*num.*concurrency.*}.*", explain) - indexExplain := fmt.Sprintf("%v", rows[1]) - tableExplain := fmt.Sprintf("%v", rows[2]) - require.Regexp(t, ".*time:.*loops:.*cop_task:.*", indexExplain) - require.Regexp(t, ".*time:.*loops:.*cop_task:.*", tableExplain) -} - -func TestHashAggRuntimeStats(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("insert into t1 values (1,2),(2,3),(3,4)") - rows := tk.MustQuery("explain analyze SELECT /*+ HASH_AGG() */ count(*) FROM t1 WHERE a < 10;").Rows() - require.Len(t, rows, 5) - explain := fmt.Sprintf("%v", rows[0]) - pattern := ".*time:.*loops:.*partial_worker:{wall_time:.*concurrency:.*task_num:.*tot_wait:.*tot_exec:.*tot_time:.*max:.*p95:.*}.*final_worker:{wall_time:.*concurrency:.*task_num:.*tot_wait:.*tot_exec:.*tot_time:.*max:.*p95:.*}.*" - require.Regexp(t, pattern, explain) -} - -func TestIndexMergeRuntimeStats(t *testing.T) { - store := testkit.CreateMockStore(t) - - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("set @@tidb_enable_index_merge = 1") - tk.MustExec("create table t1(id int primary key, a int, b int, c int, d int)") - tk.MustExec("create index t1a on t1(a)") - tk.MustExec("create index t1b on t1(b)") - tk.MustExec("insert into t1 values(1,1,1,1,1),(2,2,2,2,2),(3,3,3,3,3),(4,4,4,4,4),(5,5,5,5,5)") - rows := tk.MustQuery("explain analyze select /*+ use_index_merge(t1, primary, t1a) */ * from t1 where id < 2 or a > 4;").Rows() - require.Len(t, rows, 4) - explain := fmt.Sprintf("%v", rows[0]) - pattern := ".*time:.*loops:.*index_task:{fetch_handle:.*, merge:.*}.*table_task:{num.*concurrency.*fetch_row.*wait_time.*}.*" - require.Regexp(t, pattern, explain) - tableRangeExplain := fmt.Sprintf("%v", rows[1]) - indexExplain := fmt.Sprintf("%v", rows[2]) - tableExplain := fmt.Sprintf("%v", rows[3]) - require.Regexp(t, ".*time:.*loops:.*cop_task:.*", tableRangeExplain) - require.Regexp(t, ".*time:.*loops:.*cop_task:.*", indexExplain) - require.Regexp(t, ".*time:.*loops:.*cop_task:.*", tableExplain) - tk.MustExec("set @@tidb_enable_collect_execution_info=0;") - tk.MustQuery("select /*+ use_index_merge(t1, primary, t1a) */ * from t1 where id < 2 or a > 4 order by a").Check(testkit.Rows("1 1 1 1 1", "5 5 5 5 5")) -} - func TestPrevStmtDesensitization(t *testing.T) { store := testkit.CreateMockStore(t) @@ -889,25 +705,6 @@ func TestOOMActionPriority(t *testing.T) { require.Equal(t, action.GetPriority(), int64(memory.DefLogPriority)) } -func TestTrackAggMemoryUsage(t *testing.T) { - store := testkit.CreateMockStore(t) - - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("create table t(a int)") - tk.MustExec("insert into t values(1)") - tk.MustExec("set tidb_track_aggregate_memory_usage = off;") - rows := tk.MustQuery("explain analyze select /*+ HASH_AGG() */ sum(a) from t").Rows() - require.Equal(t, "N/A", rows[0][7]) - rows = tk.MustQuery("explain analyze select /*+ STREAM_AGG() */ sum(a) from t").Rows() - require.Equal(t, "N/A", rows[0][7]) - tk.MustExec("set tidb_track_aggregate_memory_usage = on;") - rows = tk.MustQuery("explain analyze select /*+ HASH_AGG() */ sum(a) from t").Rows() - require.NotEqual(t, "N/A", rows[0][7]) - rows = tk.MustQuery("explain analyze select /*+ STREAM_AGG() */ sum(a) from t").Rows() - require.NotEqual(t, "N/A", rows[0][7]) -} - // Test invoke Close without invoking Open before for each operators. func TestUnreasonablyClose(t *testing.T) { store := testkit.CreateMockStore(t) @@ -1046,61 +843,6 @@ func TestUnreasonablyClose(t *testing.T) { require.Equal(t, opsNeedsCoveredMask, opsAlreadyCoveredMask, fmt.Sprintf("these operators are not covered %s", commentBuf.String())) } -func TestOOMPanicAction(t *testing.T) { - store, dom := testkit.CreateMockStoreAndDomain(t) - - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("create table t (a int primary key, b double);") - tk.MustExec("insert into t values (1,1)") - sm := &testkit.MockSessionManager{ - PS: make([]*util.ProcessInfo, 0), - } - tk.Session().SetSessionManager(sm) - dom.ExpensiveQueryHandle().SetSessionManager(sm) - defer tk.MustExec("SET GLOBAL tidb_mem_oom_action = DEFAULT") - tk.MustExec("SET GLOBAL tidb_mem_oom_action='CANCEL'") - tk.MustExec("set @@tidb_mem_quota_query=1;") - err := tk.QueryToErr("select sum(b) from t group by a;") - require.Error(t, err) - require.True(t, exeerrors.ErrMemoryExceedForQuery.Equal(err)) - - // Test insert from select oom panic. - tk.MustExec("drop table if exists t,t1") - tk.MustExec("create table t (a bigint);") - tk.MustExec("create table t1 (a bigint);") - tk.MustExec("set @@tidb_mem_quota_query=200;") - require.True(t, exeerrors.ErrMemoryExceedForQuery.Equal(tk.ExecToErr("insert into t1 values (1),(2),(3),(4),(5);"))) - require.True(t, exeerrors.ErrMemoryExceedForQuery.Equal(tk.ExecToErr("replace into t1 values (1),(2),(3),(4),(5);"))) - tk.MustExec("set @@tidb_mem_quota_query=10000") - tk.MustExec("insert into t1 values (1),(2),(3),(4),(5);") - tk.MustExec("set @@tidb_mem_quota_query=10;") - require.True(t, exeerrors.ErrMemoryExceedForQuery.Equal(tk.ExecToErr("insert into t select a from t1 order by a desc;"))) - require.True(t, exeerrors.ErrMemoryExceedForQuery.Equal(tk.ExecToErr("replace into t select a from t1 order by a desc;"))) - - tk.MustExec("set @@tidb_mem_quota_query=10000") - tk.MustExec("insert into t values (1),(2),(3),(4),(5);") - // Set the memory quota to 244 to make this SQL panic during the DeleteExec - // instead of the TableReaderExec. - tk.MustExec("set @@tidb_mem_quota_query=244;") - require.True(t, exeerrors.ErrMemoryExceedForQuery.Equal(tk.ExecToErr("delete from t"))) - - tk.MustExec("set @@tidb_mem_quota_query=10000;") - tk.MustExec("delete from t1") - tk.MustExec("insert into t1 values(1)") - tk.MustExec("insert into t values (1),(2),(3),(4),(5);") - tk.MustExec("set @@tidb_mem_quota_query=244;") - require.True(t, exeerrors.ErrMemoryExceedForQuery.Equal(tk.ExecToErr("delete t, t1 from t join t1 on t.a = t1.a"))) - - tk.MustExec("set @@tidb_mem_quota_query=100000;") - tk.MustExec("truncate table t") - tk.MustExec("insert into t values(1),(2),(3)") - // set the memory to quota to make the SQL panic during UpdateExec instead - // of TableReader. - tk.MustExec("set @@tidb_mem_quota_query=244;") - require.True(t, exeerrors.ErrMemoryExceedForQuery.Equal(tk.ExecToErr("update t set a = 4"))) -} - func TestPointGetPreparedPlan(t *testing.T) { store := testkit.CreateMockStore(t) @@ -1796,24 +1538,6 @@ func TestAdminShowDDLJobs(t *testing.T) { require.Equal(t, t2.In(time.UTC), tt.In(time.UTC)) } -func TestAdminShowDDLJobsRowCount(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - - // Test for issue: https://github.com/pingcap/tidb/issues/25968 - tk.MustExec("use test") - tk.MustExec("drop table if exists t;") - tk.MustExec("create table t (id bigint key,b int);") - tk.MustExec("split table t by (10),(20),(30);") - tk.MustExec("insert into t values (0,0),(10,10),(20,20),(30,30);") - tk.MustExec("alter table t add index idx1(b);") - require.Equal(t, "4", tk.MustQuery("admin show ddl jobs 1").Rows()[0][7]) - - tk.MustExec("insert into t values (1,0),(2,10),(3,20),(4,30);") - tk.MustExec("alter table t add index idx2(b);") - require.Equal(t, "8", tk.MustQuery("admin show ddl jobs 1").Rows()[0][7]) -} - func TestAdminShowDDLJobsInfo(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) @@ -2130,16 +1854,6 @@ func TestLowResolutionTSORead(t *testing.T) { tk.MustQuery("select * from low_resolution_tso").Check(testkit.Rows("2")) } -func TestStaleReadAtFutureTime(t *testing.T) { - store := testkit.CreateMockStore(t) - - tk := testkit.NewTestKit(t, store) - // Setting tx_read_ts to a time in the future will fail. (One day before the 2038 problem) - tk.MustGetErrMsg("set @@tx_read_ts = '2038-01-18 03:14:07'", "cannot set read timestamp to a future time") - // TxnReadTS Is not updated if check failed. - require.Zero(t, tk.Session().GetSessionVars().TxnReadTS.PeakTxnReadTS()) -} - func TestAdapterStatement(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) @@ -2807,40 +2521,6 @@ func TestAdmin(t *testing.T) { require.Equal(t, historyJobs2, historyJobs) } -func TestForSelectScopeInUnion(t *testing.T) { - store := testkit.CreateMockStore(t) - setTxnTk := testkit.NewTestKit(t, store) - setTxnTk.MustExec("set global tidb_txn_mode=''") - // A union B for update, the "for update" option belongs to union statement, so - // it should works on both A and B. - tk1 := testkit.NewTestKit(t, store) - tk2 := testkit.NewTestKit(t, store) - tk1.MustExec("use test") - tk1.MustExec("drop table if exists t") - tk1.MustExec("create table t(a int)") - tk1.MustExec("insert into t values (1)") - - tk1.MustExec("begin") - // 'For update' would act on the second select. - tk1.MustQuery("select 1 as a union select a from t for update") - - tk2.MustExec("use test") - tk2.MustExec("update t set a = a + 1") - - // As tk1 use select 'for update', it should detect conflict and fail. - _, err := tk1.Exec("commit") - require.Error(t, err) - - tk1.MustExec("begin") - tk1.MustQuery("select 1 as a union select a from t limit 5 for update") - tk1.MustQuery("select 1 as a union select a from t order by a for update") - - tk2.MustExec("update t set a = a + 1") - - _, err = tk1.Exec("commit") - require.Error(t, err) -} - func TestMaxOneRow(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) @@ -2861,29 +2541,6 @@ func TestMaxOneRow(t *testing.T) { require.NoError(t, rs.Close()) } -func TestSummaryFailedUpdate(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(a int, b int as(-a))") - tk.MustExec("insert into t(a) values(1), (3), (7)") - sm := &testkit.MockSessionManager{ - PS: make([]*util.ProcessInfo, 0), - } - tk.Session().SetSessionManager(sm) - dom.ExpensiveQueryHandle().SetSessionManager(sm) - defer tk.MustExec("SET GLOBAL tidb_mem_oom_action = DEFAULT") - tk.MustQuery("select variable_value from mysql.GLOBAL_VARIABLES where variable_name = 'tidb_mem_oom_action'").Check(testkit.Rows("LOG")) - - tk.MustExec("SET GLOBAL tidb_mem_oom_action='CANCEL'") - require.NoError(t, tk.Session().Auth(&auth.UserIdentity{Username: "root", Hostname: "%"}, nil, nil, nil)) - tk.MustExec("set @@tidb_mem_quota_query=1") - require.True(t, exeerrors.ErrMemoryExceedForQuery.Equal(tk.ExecToErr("update t set t.a = t.a - 1 where t.a in (select a from t where a < 4)"))) - tk.MustExec("set @@tidb_mem_quota_query=1000000000") - tk.MustQuery("select stmt_type from information_schema.statements_summary where digest_text = 'update `t` set `t` . `a` = `t` . `a` - ? where `t` . `a` in ( select `a` from `t` where `a` < ? )'").Check(testkit.Rows("Update")) -} - func TestIsFastPlan(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) @@ -2983,21 +2640,6 @@ func TestGlobalMemoryControl2(t *testing.T) { runtime.GC() } -func TestCompileOutOfMemoryQuota(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - - // Test for issue: https://github.com/pingcap/tidb/issues/38322 - defer tk.MustExec("set global tidb_mem_oom_action = DEFAULT") - tk.MustExec("set global tidb_mem_oom_action='CANCEL'") - tk.MustExec("use test") - tk.MustExec("create table t(a int, b int, index idx(a))") - tk.MustExec("create table t1(a int, c int, index idx(a))") - tk.MustExec("set tidb_mem_quota_query=10") - err := tk.ExecToErr("select t.a, t1.a from t use index(idx), t1 use index(idx) where t.a = t1.a") - require.True(t, exeerrors.ErrMemoryExceedForQuery.Equal(err)) -} - func TestSignalCheckpointForSort(t *testing.T) { require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/executor/sortexec/SignalCheckpointForSort", `return(true)`)) defer func() { diff --git a/pkg/executor/test/fktest/BUILD.bazel b/pkg/executor/test/fktest/BUILD.bazel index f4a92763b90ee..f2e2472485900 100644 --- a/pkg/executor/test/fktest/BUILD.bazel +++ b/pkg/executor/test/fktest/BUILD.bazel @@ -8,7 +8,7 @@ go_test( "main_test.go", ], flaky = True, - shard_count = 26, + shard_count = 25, deps = [ "//pkg/config", "//pkg/executor", diff --git a/pkg/executor/test/fktest/foreign_key_test.go b/pkg/executor/test/fktest/foreign_key_test.go index 4c074b1a379fe..a6ce72c17e978 100644 --- a/pkg/executor/test/fktest/foreign_key_test.go +++ b/pkg/executor/test/fktest/foreign_key_test.go @@ -2508,31 +2508,3 @@ func TestForeignKeyAndLockView(t *testing.T) { tk.MustGetErrMsg("update t1 set id=2", "[executor:1213]Deadlock found when trying to get lock; try restarting transaction") wg.Wait() } - -func TestForeignKeyAndMemoryTracker(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("set @@foreign_key_checks=1") - tk.MustExec("use test") - tk.MustExec("create table t1 (id int auto_increment key, pid int, name varchar(200), index(pid));") - tk.MustExec("insert into t1 (name) values ('abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz');") - for i := 0; i < 8; i++ { - tk.MustExec("insert into t1 (name) select name from t1;") - } - tk.MustQuery("select count(*) from t1").Check(testkit.Rows("256")) - tk.MustExec("update t1 set pid=1 where id>1") - tk.MustExec("alter table t1 add foreign key (pid) references t1 (id) on update cascade") - tk.MustQuery("select sum(id) from t1").Check(testkit.Rows("32896")) - defer tk.MustExec("SET GLOBAL tidb_mem_oom_action = DEFAULT") - tk.MustExec("SET GLOBAL tidb_mem_oom_action='CANCEL'") - tk.MustExec("set @@tidb_mem_quota_query=40960;") - // foreign key cascade behaviour will exceed memory quota. - err := tk.ExecToErr("update t1 set id=id+100000 where id=1") - require.Error(t, err) - require.True(t, exeerrors.ErrMemoryExceedForQuery.Equal(err)) - tk.MustQuery("select id,pid from t1 where id = 1").Check(testkit.Rows("1 ")) - tk.MustExec("set @@foreign_key_checks=0") - // After disable foreign_key_checks, following DML will execute successful. - tk.MustExec("update t1 set id=id+100000 where id=1") - tk.MustQuery("select id,pid from t1 where id<3 or pid is null order by id").Check(testkit.Rows("2 1", "100001 ")) -} diff --git a/pkg/executor/test/indexmergereadtest/BUILD.bazel b/pkg/executor/test/indexmergereadtest/BUILD.bazel index 23b3cd48b5523..5f66a3de9b88f 100644 --- a/pkg/executor/test/indexmergereadtest/BUILD.bazel +++ b/pkg/executor/test/indexmergereadtest/BUILD.bazel @@ -9,16 +9,14 @@ go_test( ], flaky = True, race = "on", - shard_count = 20, + shard_count = 19, deps = [ "//pkg/config", "//pkg/executor", "//pkg/meta/autoid", "//pkg/session", "//pkg/testkit", - "//pkg/testkit/testutil", "//pkg/util", - "//pkg/util/dbterror/exeerrors", "@com_github_pingcap_failpoint//:failpoint", "@com_github_stretchr_testify//require", "@com_github_tikv_client_go_v2//tikv", diff --git a/pkg/executor/test/indexmergereadtest/index_merge_reader_test.go b/pkg/executor/test/indexmergereadtest/index_merge_reader_test.go index 8a5abd0ea208d..56753578326a6 100644 --- a/pkg/executor/test/indexmergereadtest/index_merge_reader_test.go +++ b/pkg/executor/test/indexmergereadtest/index_merge_reader_test.go @@ -31,9 +31,7 @@ import ( "github.com/pingcap/tidb/pkg/executor" "github.com/pingcap/tidb/pkg/session" "github.com/pingcap/tidb/pkg/testkit" - "github.com/pingcap/tidb/pkg/testkit/testutil" "github.com/pingcap/tidb/pkg/util" - "github.com/pingcap/tidb/pkg/util/dbterror/exeerrors" "github.com/stretchr/testify/require" ) @@ -234,22 +232,26 @@ func TestPessimisticLockOnPartitionForIndexMerge(t *testing.T) { " ├─IndexReader(Build) 3.00 root index:IndexFullScan", " │ └─IndexFullScan 3.00 cop[tikv] table:t2, index:c_datetime(c_datetime) keep order:false", " └─PartitionUnion(Probe) 5545.21 root ", - " ├─IndexMerge 5542.21 root type: union", - " │ ├─IndexRangeScan(Build) 3323.33 cop[tikv] table:t1, partition:p0, index:c1(c1) range:[-inf,10), keep order:false, stats:pseudo", - " │ ├─IndexRangeScan(Build) 3323.33 cop[tikv] table:t1, partition:p0, index:c2(c2) range:[-inf,10), keep order:false, stats:pseudo", - " │ └─TableRowIDScan(Probe) 5542.21 cop[tikv] table:t1, partition:p0 keep order:false, stats:pseudo", - " ├─IndexMerge 1.00 root type: union", - " │ ├─IndexRangeScan(Build) 1.00 cop[tikv] table:t1, partition:p1, index:c1(c1) range:[-inf,10), keep order:false", - " │ ├─IndexRangeScan(Build) 1.00 cop[tikv] table:t1, partition:p1, index:c2(c2) range:[-inf,10), keep order:false", - " │ └─TableRowIDScan(Probe) 1.00 cop[tikv] table:t1, partition:p1 keep order:false", - " ├─IndexMerge 1.00 root type: union", - " │ ├─IndexRangeScan(Build) 1.00 cop[tikv] table:t1, partition:p2, index:c1(c1) range:[-inf,10), keep order:false", - " │ ├─IndexRangeScan(Build) 1.00 cop[tikv] table:t1, partition:p2, index:c2(c2) range:[-inf,10), keep order:false", - " │ └─TableRowIDScan(Probe) 1.00 cop[tikv] table:t1, partition:p2 keep order:false", - " └─IndexMerge 1.00 root type: union", - " ├─IndexRangeScan(Build) 1.00 cop[tikv] table:t1, partition:p3, index:c1(c1) range:[-inf,10), keep order:false", - " ├─IndexRangeScan(Build) 1.00 cop[tikv] table:t1, partition:p3, index:c2(c2) range:[-inf,10), keep order:false", - " └─TableRowIDScan(Probe) 1.00 cop[tikv] table:t1, partition:p3 keep order:false", + " ├─Projection 5542.21 root test.t1.c_datetime, test.t1.c1, test.t1._tidb_rowid, test.t1._tidb_tid", + " │ └─IndexMerge 5542.21 root type: union", + " │ ├─IndexRangeScan(Build) 3323.33 cop[tikv] table:t1, partition:p0, index:c1(c1) range:[-inf,10), keep order:false, stats:pseudo", + " │ ├─IndexRangeScan(Build) 3323.33 cop[tikv] table:t1, partition:p0, index:c2(c2) range:[-inf,10), keep order:false, stats:pseudo", + " │ └─TableRowIDScan(Probe) 5542.21 cop[tikv] table:t1, partition:p0 keep order:false, stats:pseudo", + " ├─Projection 1.00 root test.t1.c_datetime, test.t1.c1, test.t1._tidb_rowid, test.t1._tidb_tid", + " │ └─IndexMerge 1.00 root type: union", + " │ ├─IndexRangeScan(Build) 1.00 cop[tikv] table:t1, partition:p1, index:c1(c1) range:[-inf,10), keep order:false", + " │ ├─IndexRangeScan(Build) 1.00 cop[tikv] table:t1, partition:p1, index:c2(c2) range:[-inf,10), keep order:false", + " │ └─TableRowIDScan(Probe) 1.00 cop[tikv] table:t1, partition:p1 keep order:false", + " ├─Projection 1.00 root test.t1.c_datetime, test.t1.c1, test.t1._tidb_rowid, test.t1._tidb_tid", + " │ └─IndexMerge 1.00 root type: union", + " │ ├─IndexRangeScan(Build) 1.00 cop[tikv] table:t1, partition:p2, index:c1(c1) range:[-inf,10), keep order:false", + " │ ├─IndexRangeScan(Build) 1.00 cop[tikv] table:t1, partition:p2, index:c2(c2) range:[-inf,10), keep order:false", + " │ └─TableRowIDScan(Probe) 1.00 cop[tikv] table:t1, partition:p2 keep order:false", + " └─Projection 1.00 root test.t1.c_datetime, test.t1.c1, test.t1._tidb_rowid, test.t1._tidb_tid", + " └─IndexMerge 1.00 root type: union", + " ├─IndexRangeScan(Build) 1.00 cop[tikv] table:t1, partition:p3, index:c1(c1) range:[-inf,10), keep order:false", + " ├─IndexRangeScan(Build) 1.00 cop[tikv] table:t1, partition:p3, index:c2(c2) range:[-inf,10), keep order:false", + " └─TableRowIDScan(Probe) 1.00 cop[tikv] table:t1, partition:p3 keep order:false", )) tk.MustQuery(`select /*+ use_index_merge(t1) */ c1 from t1 join t2 on t1.c_datetime >= t2.c_datetime @@ -374,20 +376,21 @@ func TestIntersectionWithDifferentConcurrency(t *testing.T) { for _, concurrency := range execCon { tk.MustExec(fmt.Sprintf("set tidb_executor_concurrency = %d", concurrency)) for i := 0; i < 2; i++ { + sql := "select /*+ use_index_merge(t1, primary, c2, c3) */ c1 from t1 where c2 < 1024 and c3 > 1024" if i == 0 { // Dynamic mode. tk.MustExec("set tidb_partition_prune_mode = 'dynamic'") - res := tk.MustQuery("explain select /*+ use_index_merge(t1, primary, c2, c3) */ c1 from t1 where c2 < 1024 and c3 > 1024") - require.Contains(t, res.Rows()[1][0], "IndexMerge") + tk.MustHavePlan(sql, "IndexMerge") + tk.MustNotHavePlan(sql, "PartitionUnion") } else { tk.MustExec("set tidb_partition_prune_mode = 'static'") - res := tk.MustQuery("explain select /*+ use_index_merge(t1, primary, c2, c3) */ c1 from t1 where c2 < 1024 and c3 > 1024") if tblIdx == 0 { // partition table - require.Contains(t, res.Rows()[1][0], "PartitionUnion") - require.Contains(t, res.Rows()[2][0], "IndexMerge") + tk.MustHavePlan(sql, "IndexMerge") + tk.MustHavePlan(sql, "PartitionUnion") } else { - require.Contains(t, res.Rows()[1][0], "IndexMerge") + tk.MustHavePlan(sql, "IndexMerge") + tk.MustNotHavePlan(sql, "PartitionUnion") } } for i := 0; i < queryCnt; i++ { @@ -439,32 +442,6 @@ func TestIntersectionWorkerPanic(t *testing.T) { require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/executor/testIndexMergeIntersectionWorkerPanic")) } -func TestIntersectionMemQuota(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(pk varchar(100) primary key, c1 int, c2 int, index idx1(c1), index idx2(c2))") - - insertStr := "insert into t1 values" - for i := 0; i < 20; i++ { - if i != 0 { - insertStr += ", " - } - insertStr += fmt.Sprintf("('%s', %d, %d)", testutil.RandStringRunes(100), 1, 1) - } - tk.MustExec(insertStr) - res := tk.MustQuery("explain select /*+ use_index_merge(t1, primary, idx1, idx2) */ c1 from t1 where c1 < 1024 and c2 < 1024").Rows() - require.Contains(t, res[1][0], "IndexMerge") - - tk.MustExec("set global tidb_mem_oom_action='CANCEL'") - defer tk.MustExec("set global tidb_mem_oom_action = DEFAULT") - tk.MustExec("set @@tidb_mem_quota_query = 4000") - err := tk.QueryToErr("select /*+ use_index_merge(t1, primary, idx1, idx2) */ c1 from t1 where c1 < 1024 and c2 < 1024") - require.True(t, exeerrors.ErrMemoryExceedForQuery.Equal(err)) -} - func setupPartitionTableHelper(tk *testkit.TestKit) { tk.MustExec("use test") tk.MustExec("drop table if exists t1") diff --git a/pkg/executor/test/issuetest/BUILD.bazel b/pkg/executor/test/issuetest/BUILD.bazel index 6a311cf6d9c83..bf67149870188 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 = 16, + shard_count = 15, deps = [ "//pkg/autoid_service", "//pkg/config", @@ -17,7 +17,7 @@ go_test( "//pkg/parser/auth", "//pkg/parser/charset", "//pkg/parser/mysql", - "//pkg/session", + "//pkg/session/types", "//pkg/testkit", "//pkg/util", "//pkg/util/dbterror/exeerrors", diff --git a/pkg/executor/test/issuetest/executor_issue_test.go b/pkg/executor/test/issuetest/executor_issue_test.go index 91fa5ac944075..74cb0556517b9 100644 --- a/pkg/executor/test/issuetest/executor_issue_test.go +++ b/pkg/executor/test/issuetest/executor_issue_test.go @@ -28,7 +28,7 @@ import ( "github.com/pingcap/tidb/pkg/parser/auth" "github.com/pingcap/tidb/pkg/parser/charset" "github.com/pingcap/tidb/pkg/parser/mysql" - "github.com/pingcap/tidb/pkg/session" + sessiontypes "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/testkit" "github.com/pingcap/tidb/pkg/util" "github.com/pingcap/tidb/pkg/util/dbterror/exeerrors" @@ -576,7 +576,7 @@ func TestIssue42662(t *testing.T) { sm := &testkit.MockSessionManager{ PS: []*util.ProcessInfo{tk.Session().ShowProcess()}, } - sm.Conn = make(map[uint64]session.Session) + sm.Conn = make(map[uint64]sessiontypes.Session) sm.Conn[tk.Session().GetSessionVars().ConnectionID] = tk.Session() dom.ServerMemoryLimitHandle().SetSessionManager(sm) go dom.ServerMemoryLimitHandle().Run() @@ -607,23 +607,3 @@ func TestIssue42662(t *testing.T) { require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/executor/issue42662_1")) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/util/servermemorylimit/issue42662_2")) } - -func TestIssue48007(t *testing.T) { - // Test no leak - store, dom := testkit.CreateMockStoreAndDomain(t) - tk := testkit.NewTestKit(t, store) - sm := &testkit.MockSessionManager{ - PS: make([]*util.ProcessInfo, 0), - } - tk.Session().SetSessionManager(sm) - dom.ExpensiveQueryHandle().SetSessionManager(sm) - defer tk.MustExec("SET GLOBAL tidb_mem_oom_action = DEFAULT") - tk.MustExec("SET GLOBAL tidb_mem_oom_action='CANCEL'") - tk.MustExec("use test") - tk.MustExec("CREATE TABLE `partsupp` ( `PS_PARTKEY` bigint(20) NOT NULL,`PS_SUPPKEY` bigint(20) NOT NULL,`PS_AVAILQTY` bigint(20) NOT NULL,`PS_SUPPLYCOST` decimal(15,2) NOT NULL,`PS_COMMENT` varchar(199) NOT NULL,PRIMARY KEY (`PS_PARTKEY`,`PS_SUPPKEY`) /*T![clustered_index] CLUSTERED */) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;") - tk.MustExec("CREATE TABLE `supplier` (`S_SUPPKEY` bigint(20) NOT NULL,`S_NAME` char(25) NOT NULL,`S_ADDRESS` varchar(40) NOT NULL,`S_NATIONKEY` bigint(20) NOT NULL,`S_PHONE` char(15) NOT NULL,`S_ACCTBAL` decimal(15,2) NOT NULL,`S_COMMENT` varchar(101) NOT NULL,PRIMARY KEY (`S_SUPPKEY`) /*T![clustered_index] CLUSTERED */) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;") - tk.MustExec("CREATE TABLE `nation` (`N_NATIONKEY` bigint(20) NOT NULL,`N_NAME` char(25) NOT NULL,`N_REGIONKEY` bigint(20) NOT NULL,`N_COMMENT` varchar(152) DEFAULT NULL,PRIMARY KEY (`N_NATIONKEY`) /*T![clustered_index] CLUSTERED */) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;") - tk.MustExec("set @@tidb_mem_quota_query=128;") - err := tk.ExecToErr("explain select ps_partkey, sum(ps_supplycost * ps_availqty) as value from partsupp, supplier, nation where ps_suppkey = s_suppkey and s_nationkey = n_nationkey and n_name = 'MOZAMBIQUE' group by ps_partkey having sum(ps_supplycost * ps_availqty) > ( select sum(ps_supplycost * ps_availqty) * 0.0001000000 from partsupp, supplier, nation where ps_suppkey = s_suppkey and s_nationkey = n_nationkey and n_name = 'MOZAMBIQUE' ) order by value desc;") - require.True(t, exeerrors.ErrMemoryExceedForQuery.Equal(err)) -} diff --git a/pkg/executor/test/jointest/BUILD.bazel b/pkg/executor/test/jointest/BUILD.bazel index 6cf13e3ba917e..f7023216ae36b 100644 --- a/pkg/executor/test/jointest/BUILD.bazel +++ b/pkg/executor/test/jointest/BUILD.bazel @@ -9,13 +9,12 @@ go_test( ], flaky = True, race = "on", - shard_count = 9, + shard_count = 7, deps = [ "//pkg/config", "//pkg/meta/autoid", "//pkg/session", "//pkg/testkit", - "//pkg/util", "//pkg/util/dbterror/exeerrors", "@com_github_pingcap_failpoint//:failpoint", "@com_github_stretchr_testify//require", diff --git a/pkg/executor/test/jointest/join_test.go b/pkg/executor/test/jointest/join_test.go index d9409a6693c5e..9af6b43a738fd 100644 --- a/pkg/executor/test/jointest/join_test.go +++ b/pkg/executor/test/jointest/join_test.go @@ -22,42 +22,12 @@ import ( "time" "github.com/pingcap/failpoint" - "github.com/pingcap/tidb/pkg/config" "github.com/pingcap/tidb/pkg/session" "github.com/pingcap/tidb/pkg/testkit" - "github.com/pingcap/tidb/pkg/util" "github.com/pingcap/tidb/pkg/util/dbterror/exeerrors" "github.com/stretchr/testify/require" ) -func TestJoinInDisk(t *testing.T) { - origin := config.RestoreFunc() - defer origin() - - store, dom := testkit.CreateMockStoreAndDomain(t) - tk := testkit.NewTestKit(t, store) - defer tk.MustExec("SET GLOBAL tidb_mem_oom_action = DEFAULT") - tk.MustExec("SET GLOBAL tidb_mem_oom_action='LOG'") - tk.MustExec("use test") - - sm := &testkit.MockSessionManager{ - PS: make([]*util.ProcessInfo, 0), - } - tk.Session().SetSessionManager(sm) - dom.ExpensiveQueryHandle().SetSessionManager(sm) - - // TODO(fengliyuan): how to ensure that it is using disk really? - tk.MustExec("set @@tidb_mem_quota_query=1;") - tk.MustExec("drop table if exists t") - tk.MustExec("drop table if exists t1") - tk.MustExec("create table t(c1 int, c2 int)") - tk.MustExec("create table t1(c1 int, c2 int)") - tk.MustExec("insert into t values(1,1),(2,2)") - tk.MustExec("insert into t1 values(2,3),(4,4)") - result := tk.MustQuery("select /*+ TIDB_HJ(t, t2) */ * from t, t1 where t.c1 = t1.c1") - result.Check(testkit.Rows("2 2 2 3")) -} - func TestJoin2(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) @@ -891,19 +861,3 @@ func TestIssue37932(t *testing.T) { } require.NoError(t, err) } - -func TestCartesianJoinPanic(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("create table t(a int)") - tk.MustExec("insert into t values(1)") - tk.MustExec("set tidb_mem_quota_query = 1 << 20") - tk.MustExec("set global tidb_mem_oom_action = 'CANCEL'") - tk.MustExec("set global tidb_enable_tmp_storage_on_oom = off;") - for i := 0; i < 10; i++ { - tk.MustExec("insert into t select * from t") - } - err := tk.QueryToErr("desc analyze select * from t t1, t t2, t t3, t t4, t t5, t t6;") - require.True(t, exeerrors.ErrMemoryExceedForQuery.Equal(err)) -} diff --git a/pkg/executor/test/partitiontest/BUILD.bazel b/pkg/executor/test/partitiontest/BUILD.bazel deleted file mode 100644 index eba32c340a02d..0000000000000 --- a/pkg/executor/test/partitiontest/BUILD.bazel +++ /dev/null @@ -1,18 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_test") - -go_test( - name = "partitiontest_test", - timeout = "short", - srcs = [ - "main_test.go", - "partition_test.go", - ], - flaky = True, - race = "on", - shard_count = 4, - deps = [ - "//pkg/testkit", - "@com_github_pingcap_failpoint//:failpoint", - "@com_github_stretchr_testify//require", - ], -) diff --git a/pkg/executor/test/partitiontest/partition_test.go b/pkg/executor/test/partitiontest/partition_test.go deleted file mode 100644 index cbffd97769b9e..0000000000000 --- a/pkg/executor/test/partitiontest/partition_test.go +++ /dev/null @@ -1,449 +0,0 @@ -// Copyright 2023 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 partitiontest - -import ( - "fmt" - "testing" - - "github.com/pingcap/failpoint" - "github.com/pingcap/tidb/pkg/testkit" - "github.com/stretchr/testify/require" -) - -func TestPartitionedTableReplace(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") - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - testSQL := `drop table if exists replace_test; - create table replace_test (id int PRIMARY KEY AUTO_INCREMENT, c1 int, c2 int, c3 int default 1) - partition by range (id) ( - PARTITION p0 VALUES LESS THAN (3), - PARTITION p1 VALUES LESS THAN (5), - PARTITION p2 VALUES LESS THAN (7), - PARTITION p3 VALUES LESS THAN (9));` - tk.MustExec(testSQL) - testSQL = `replace replace_test (c1) values (1),(2),(NULL);` - tk.MustExec(testSQL) - require.Equal(t, tk.Session().LastMessage(), "Records: 3 Duplicates: 0 Warnings: 0") - - errReplaceSQL := `replace replace_test (c1) values ();` - tk.MustExec("begin") - err := tk.ExecToErr(errReplaceSQL) - require.Error(t, err) - tk.MustExec("rollback") - - errReplaceSQL = `replace replace_test (c1, c2) values (1,2),(1);` - tk.MustExec("begin") - err = tk.ExecToErr(errReplaceSQL) - require.Error(t, err) - tk.MustExec("rollback") - - errReplaceSQL = `replace replace_test (xxx) values (3);` - tk.MustExec("begin") - err = tk.ExecToErr(errReplaceSQL) - require.Error(t, err) - tk.MustExec("rollback") - - errReplaceSQL = `replace replace_test_xxx (c1) values ();` - tk.MustExec("begin") - err = tk.ExecToErr(errReplaceSQL) - require.Error(t, err) - tk.MustExec("rollback") - - replaceSetSQL := `replace replace_test set c1 = 3;` - tk.MustExec(replaceSetSQL) - require.Empty(t, tk.Session().LastMessage()) - - errReplaceSetSQL := `replace replace_test set c1 = 4, c1 = 5;` - tk.MustExec("begin") - err = tk.ExecToErr(errReplaceSetSQL) - require.Error(t, err) - tk.MustExec("rollback") - - errReplaceSetSQL = `replace replace_test set xxx = 6;` - tk.MustExec("begin") - err = tk.ExecToErr(errReplaceSetSQL) - require.Error(t, err) - tk.MustExec("rollback") - - tk.MustExec(`drop table if exists replace_test_1`) - tk.MustExec(`create table replace_test_1 (id int, c1 int) partition by range (id) ( - PARTITION p0 VALUES LESS THAN (4), - PARTITION p1 VALUES LESS THAN (6), - PARTITION p2 VALUES LESS THAN (8), - PARTITION p3 VALUES LESS THAN (10), - PARTITION p4 VALUES LESS THAN (100))`) - tk.MustExec(`replace replace_test_1 select id, c1 from replace_test;`) - require.Equal(t, tk.Session().LastMessage(), "Records: 4 Duplicates: 0 Warnings: 0") - - tk.MustExec(`drop table if exists replace_test_2`) - tk.MustExec(`create table replace_test_2 (id int, c1 int) partition by range (id) ( - PARTITION p0 VALUES LESS THAN (10), - PARTITION p1 VALUES LESS THAN (50), - PARTITION p2 VALUES LESS THAN (100), - PARTITION p3 VALUES LESS THAN (300))`) - tk.MustExec(`replace replace_test_1 select id, c1 from replace_test union select id * 10, c1 * 10 from replace_test;`) - require.Equal(t, tk.Session().LastMessage(), "Records: 8 Duplicates: 0 Warnings: 0") - - errReplaceSelectSQL := `replace replace_test_1 select c1 from replace_test;` - tk.MustExec("begin") - err = tk.ExecToErr(errReplaceSelectSQL) - require.Error(t, err) - tk.MustExec("rollback") - - tk.MustExec(`drop table if exists replace_test_3`) - replaceUniqueIndexSQL := `create table replace_test_3 (c1 int, c2 int, UNIQUE INDEX (c2)) partition by range (c2) ( - PARTITION p0 VALUES LESS THAN (4), - PARTITION p1 VALUES LESS THAN (7), - PARTITION p2 VALUES LESS THAN (11))` - tk.MustExec(replaceUniqueIndexSQL) - replaceUniqueIndexSQL = `replace into replace_test_3 set c2=8;` - tk.MustExec(replaceUniqueIndexSQL) - replaceUniqueIndexSQL = `replace into replace_test_3 set c2=8;` - tk.MustExec(replaceUniqueIndexSQL) - require.Equal(t, int64(1), int64(tk.Session().AffectedRows())) - require.Empty(t, tk.Session().LastMessage()) - replaceUniqueIndexSQL = `replace into replace_test_3 set c1=8, c2=8;` - tk.MustExec(replaceUniqueIndexSQL) - require.Equal(t, int64(2), int64(tk.Session().AffectedRows())) - require.Empty(t, tk.Session().LastMessage()) - - replaceUniqueIndexSQL = `replace into replace_test_3 set c2=NULL;` - tk.MustExec(replaceUniqueIndexSQL) - replaceUniqueIndexSQL = `replace into replace_test_3 set c2=NULL;` - tk.MustExec(replaceUniqueIndexSQL) - require.Equal(t, int64(1), int64(tk.Session().AffectedRows())) - require.Empty(t, tk.Session().LastMessage()) - - replaceUniqueIndexSQL = `create table replace_test_4 (c1 int, c2 int, c3 int, UNIQUE INDEX (c1, c2)) partition by range (c1) ( - PARTITION p0 VALUES LESS THAN (4), - PARTITION p1 VALUES LESS THAN (7), - PARTITION p2 VALUES LESS THAN (11));` - tk.MustExec(`drop table if exists replace_test_4`) - tk.MustExec(replaceUniqueIndexSQL) - replaceUniqueIndexSQL = `replace into replace_test_4 set c2=NULL;` - tk.MustExec(replaceUniqueIndexSQL) - replaceUniqueIndexSQL = `replace into replace_test_4 set c2=NULL;` - tk.MustExec(replaceUniqueIndexSQL) - require.Equal(t, int64(1), int64(tk.Session().AffectedRows())) - - replacePrimaryKeySQL := `create table replace_test_5 (c1 int, c2 int, c3 int, PRIMARY KEY (c1, c2)) partition by range (c2) ( - PARTITION p0 VALUES LESS THAN (4), - PARTITION p1 VALUES LESS THAN (7), - PARTITION p2 VALUES LESS THAN (11));` - tk.MustExec(replacePrimaryKeySQL) - replacePrimaryKeySQL = `replace into replace_test_5 set c1=1, c2=2;` - tk.MustExec(replacePrimaryKeySQL) - replacePrimaryKeySQL = `replace into replace_test_5 set c1=1, c2=2;` - tk.MustExec(replacePrimaryKeySQL) - require.Equal(t, int64(1), int64(tk.Session().AffectedRows())) - - issue989SQL := `CREATE TABLE tIssue989 (a int, b int, KEY(a), UNIQUE KEY(b)) partition by range (b) ( - PARTITION p1 VALUES LESS THAN (100), - PARTITION p2 VALUES LESS THAN (200))` - tk.MustExec(issue989SQL) - issue989SQL = `insert into tIssue989 (a, b) values (1, 2);` - tk.MustExec(issue989SQL) - issue989SQL = `replace into tIssue989(a, b) values (111, 2);` - tk.MustExec(issue989SQL) - r := tk.MustQuery("select * from tIssue989;") - r.Check(testkit.Rows("111 2")) -} - -func TestHashPartitionedTableReplace(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("set @@session.tidb_enable_table_partition = '1';") - tk.MustExec("drop table if exists replace_test;") - testSQL := `create table replace_test (id int PRIMARY KEY AUTO_INCREMENT, c1 int, c2 int, c3 int default 1) - partition by hash(id) partitions 4;` - tk.MustExec(testSQL) - - testSQL = `replace replace_test (c1) values (1),(2),(NULL);` - tk.MustExec(testSQL) - - errReplaceSQL := `replace replace_test (c1) values ();` - tk.MustExec("begin") - err := tk.ExecToErr(errReplaceSQL) - require.Error(t, err) - tk.MustExec("rollback") - - errReplaceSQL = `replace replace_test (c1, c2) values (1,2),(1);` - tk.MustExec("begin") - err = tk.ExecToErr(errReplaceSQL) - require.Error(t, err) - tk.MustExec("rollback") - - errReplaceSQL = `replace replace_test (xxx) values (3);` - tk.MustExec("begin") - err = tk.ExecToErr(errReplaceSQL) - require.Error(t, err) - tk.MustExec("rollback") - - errReplaceSQL = `replace replace_test_xxx (c1) values ();` - tk.MustExec("begin") - err = tk.ExecToErr(errReplaceSQL) - require.Error(t, err) - tk.MustExec("rollback") - - errReplaceSetSQL := `replace replace_test set c1 = 4, c1 = 5;` - tk.MustExec("begin") - err = tk.ExecToErr(errReplaceSetSQL) - require.Error(t, err) - tk.MustExec("rollback") - - errReplaceSetSQL = `replace replace_test set xxx = 6;` - tk.MustExec("begin") - err = tk.ExecToErr(errReplaceSetSQL) - require.Error(t, err) - tk.MustExec("rollback") - - tk.MustExec(`replace replace_test set c1 = 3;`) - tk.MustExec(`replace replace_test set c1 = 4;`) - tk.MustExec(`replace replace_test set c1 = 5;`) - tk.MustExec(`replace replace_test set c1 = 6;`) - tk.MustExec(`replace replace_test set c1 = 7;`) - - tk.MustExec(`drop table if exists replace_test_1`) - tk.MustExec(`create table replace_test_1 (id int, c1 int) partition by hash(id) partitions 5;`) - tk.MustExec(`replace replace_test_1 select id, c1 from replace_test;`) - - tk.MustExec(`drop table if exists replace_test_2`) - tk.MustExec(`create table replace_test_2 (id int, c1 int) partition by hash(id) partitions 6;`) - - tk.MustExec(`replace replace_test_1 select id, c1 from replace_test union select id * 10, c1 * 10 from replace_test;`) - - errReplaceSelectSQL := `replace replace_test_1 select c1 from replace_test;` - tk.MustExec("begin") - err = tk.ExecToErr(errReplaceSelectSQL) - require.Error(t, err) - tk.MustExec("rollback") - - tk.MustExec(`drop table if exists replace_test_3`) - replaceUniqueIndexSQL := `create table replace_test_3 (c1 int, c2 int, UNIQUE INDEX (c2)) partition by hash(c2) partitions 7;` - tk.MustExec(replaceUniqueIndexSQL) - - tk.MustExec(`replace into replace_test_3 set c2=8;`) - tk.MustExec(`replace into replace_test_3 set c2=8;`) - require.Equal(t, int64(1), int64(tk.Session().AffectedRows())) - tk.MustExec(`replace into replace_test_3 set c1=8, c2=8;`) - require.Equal(t, int64(2), int64(tk.Session().AffectedRows())) - - tk.MustExec(`replace into replace_test_3 set c2=NULL;`) - tk.MustExec(`replace into replace_test_3 set c2=NULL;`) - require.Equal(t, int64(1), int64(tk.Session().AffectedRows())) - - for i := 0; i < 100; i++ { - sql := fmt.Sprintf("replace into replace_test_3 set c2=%d;", i) - tk.MustExec(sql) - } - result := tk.MustQuery("select count(*) from replace_test_3") - result.Check(testkit.Rows("102")) - - replaceUniqueIndexSQL = `create table replace_test_4 (c1 int, c2 int, c3 int, UNIQUE INDEX (c1, c2)) partition by hash(c1) partitions 8;` - tk.MustExec(`drop table if exists replace_test_4`) - tk.MustExec(replaceUniqueIndexSQL) - replaceUniqueIndexSQL = `replace into replace_test_4 set c2=NULL;` - tk.MustExec(replaceUniqueIndexSQL) - replaceUniqueIndexSQL = `replace into replace_test_4 set c2=NULL;` - tk.MustExec(replaceUniqueIndexSQL) - require.Equal(t, int64(1), int64(tk.Session().AffectedRows())) - - replacePrimaryKeySQL := `create table replace_test_5 (c1 int, c2 int, c3 int, PRIMARY KEY (c1, c2)) partition by hash (c2) partitions 9;` - tk.MustExec(replacePrimaryKeySQL) - replacePrimaryKeySQL = `replace into replace_test_5 set c1=1, c2=2;` - tk.MustExec(replacePrimaryKeySQL) - replacePrimaryKeySQL = `replace into replace_test_5 set c1=1, c2=2;` - tk.MustExec(replacePrimaryKeySQL) - require.Equal(t, int64(1), int64(tk.Session().AffectedRows())) - - issue989SQL := `CREATE TABLE tIssue989 (a int, b int, KEY(a), UNIQUE KEY(b)) partition by hash (b) partitions 10;` - tk.MustExec(issue989SQL) - issue989SQL = `insert into tIssue989 (a, b) values (1, 2);` - tk.MustExec(issue989SQL) - issue989SQL = `replace into tIssue989(a, b) values (111, 2);` - tk.MustExec(issue989SQL) - r := tk.MustQuery("select * from tIssue989;") - r.Check(testkit.Rows("111 2")) -} - -func TestPartitionedTableUpdate(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") - 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 not null default 1, name varchar(255)) - PARTITION BY RANGE ( 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))`) - - tk.MustExec(`insert INTO t VALUES (1, "hello");`) - tk.CheckExecResult(1, 0) - tk.MustExec(`insert INTO t VALUES (7, "hello");`) - tk.CheckExecResult(1, 0) - - // update non partition column - tk.MustExec(`UPDATE t SET name = "abc" where id > 0;`) - tk.CheckExecResult(2, 0) - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 2 Changed: 2 Warnings: 0") - r := tk.MustQuery(`SELECT * from t order by id limit 2;`) - r.Check(testkit.Rows("1 abc", "7 abc")) - - // update partition column - tk.MustExec(`update t set id = id + 1`) - tk.CheckExecResult(2, 0) - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 2 Changed: 2 Warnings: 0") - r = tk.MustQuery(`SELECT * from t order by id limit 2;`) - r.Check(testkit.Rows("2 abc", "8 abc")) - - // update partition column, old and new record locates on different partitions - tk.MustExec(`update t set id = 20 where id = 8`) - tk.CheckExecResult(1, 0) - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 1 Changed: 1 Warnings: 0") - r = tk.MustQuery(`SELECT * from t order by id limit 2;`) - r.Check(testkit.Rows("2 abc", "20 abc")) - - // table option is auto-increment - tk.MustExec("drop table if exists t;") - tk.MustExec(`create table t (id int not null auto_increment, name varchar(255), primary key(id)) - PARTITION BY RANGE ( 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))`) - - tk.MustExec("insert into t(name) values ('aa')") - tk.MustExec("update t set id = 8 where name = 'aa'") - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 1 Changed: 1 Warnings: 0") - tk.MustExec("insert into t(name) values ('bb')") - r = tk.MustQuery("select * from t;") - r.Check(testkit.Rows("8 aa", "9 bb")) - - err := tk.ExecToErr("update t set id = null where name = 'aa'") - require.EqualError(t, err, "[table:1048]Column 'id' cannot be null") - - // Test that in a transaction, when a constraint failed in an update statement, the record is not inserted. - tk.MustExec("drop table if exists t;") - tk.MustExec(`create table t (id int, name int unique) - PARTITION BY RANGE ( name ) ( - PARTITION p0 VALUES LESS THAN (6), - PARTITION p1 VALUES LESS THAN (11), - PARTITION p2 VALUES LESS THAN (16), - PARTITION p3 VALUES LESS THAN (21))`) - tk.MustExec("insert t values (1, 1), (2, 2);") - err = tk.ExecToErr("update t set name = 1 where id = 2") - require.Error(t, err) - tk.MustQuery("select * from t").Check(testkit.Rows("1 1", "2 2")) - - // test update ignore for pimary key - tk.MustExec("drop table if exists t;") - tk.MustExec(`create table t(a bigint, primary key (a)) - PARTITION BY RANGE (a) ( - PARTITION p0 VALUES LESS THAN (6), - PARTITION p1 VALUES LESS THAN (11))`) - tk.MustExec("insert into t values (5)") - tk.MustExec("insert into t values (7)") - err = tk.ExecToErr("update ignore t set a = 5 where a = 7;") - require.NoError(t, err) - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 1 Changed: 0 Warnings: 1") - r = tk.MustQuery("SHOW WARNINGS;") - r.Check(testkit.Rows("Warning 1062 Duplicate entry '5' for key 't.PRIMARY'")) - tk.MustQuery("select * from t order by a").Check(testkit.Rows("5", "7")) - - // test update ignore for truncate as warning - err = tk.ExecToErr("update ignore t set a = 1 where a = (select '2a')") - require.NoError(t, err) - r = tk.MustQuery("SHOW WARNINGS;") - r.Check(testkit.Rows("Warning 1292 Truncated incorrect DOUBLE value: '2a'", "Warning 1292 Truncated incorrect DOUBLE value: '2a'")) - - // test update ignore for unique key - tk.MustExec("drop table if exists t;") - tk.MustExec(`create table t(a bigint, unique key I_uniq (a)) - PARTITION BY RANGE (a) ( - PARTITION p0 VALUES LESS THAN (6), - PARTITION p1 VALUES LESS THAN (11))`) - tk.MustExec("insert into t values (5)") - tk.MustExec("insert into t values (7)") - err = tk.ExecToErr("update ignore t set a = 5 where a = 7;") - require.NoError(t, err) - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 1 Changed: 0 Warnings: 1") - r = tk.MustQuery("SHOW WARNINGS;") - r.Check(testkit.Rows("Warning 1062 Duplicate entry '5' for key 't.I_uniq'")) - tk.MustQuery("select * from t order by a").Check(testkit.Rows("5", "7")) -} - -func TestPartitionedTableDelete(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") - createTable := `CREATE TABLE test.t (id int not null default 1, name varchar(255), index(id)) - PARTITION BY RANGE ( 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))` - - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("drop table if exists t") - tk.MustExec(createTable) - for i := 1; i < 21; i++ { - tk.MustExec(fmt.Sprintf(`insert into t values (%d, "hello")`, i)) - } - - tk.MustExec(`delete from t where id = 2 limit 1;`) - tk.CheckExecResult(1, 0) - - // Test delete with false condition - tk.MustExec(`delete from t where 0;`) - tk.CheckExecResult(0, 0) - - tk.MustExec("insert into t values (2, 'abc')") - tk.MustExec(`delete from t where t.id = 2 limit 1`) - tk.CheckExecResult(1, 0) - - // Test delete ignore - tk.MustExec("insert into t values (2, 'abc')") - err := tk.ExecToErr("delete from t where id = (select '2a')") - require.Error(t, err) - err = tk.ExecToErr("delete ignore from t where id = (select '2a')") - require.NoError(t, err) - tk.CheckExecResult(1, 0) - r := tk.MustQuery("SHOW WARNINGS;") - r.Check(testkit.Rows("Warning 1292 Truncated incorrect DOUBLE value: '2a'", "Warning 1292 Truncated incorrect DOUBLE value: '2a'")) - - // Test delete without using index, involve multiple partitions. - tk.MustExec("delete from t ignore index(id) where id >= 13 and id <= 17") - tk.CheckExecResult(5, 0) - - tk.MustExec("admin check table t") - tk.MustExec(`delete from t;`) - tk.CheckExecResult(14, 0) - - // Fix that partitioned table should not use PointGetPlan. - tk.MustExec(`create table t1 (c1 bigint, c2 bigint, c3 bigint, primary key(c1)) partition by range (c1) (partition p0 values less than (3440))`) - tk.MustExec("insert into t1 values (379, 379, 379)") - tk.MustExec("delete from t1 where c1 = 379") - tk.CheckExecResult(1, 0) - tk.MustExec(`drop table t1;`) -} diff --git a/pkg/executor/test/simpletest/BUILD.bazel b/pkg/executor/test/simpletest/BUILD.bazel index 13e5b3f41c37b..63aecc3b4a8ee 100644 --- a/pkg/executor/test/simpletest/BUILD.bazel +++ b/pkg/executor/test/simpletest/BUILD.bazel @@ -9,7 +9,7 @@ go_test( ], flaky = True, race = "on", - shard_count = 12, + shard_count = 11, deps = [ "//pkg/config", "//pkg/parser/auth", diff --git a/pkg/executor/test/simpletest/simple_test.go b/pkg/executor/test/simpletest/simple_test.go index 7843bed019ef2..65fdab3dcb983 100644 --- a/pkg/executor/test/simpletest/simple_test.go +++ b/pkg/executor/test/simpletest/simple_test.go @@ -37,37 +37,6 @@ import ( "go.opencensus.io/stats/view" ) -func TestStmtAutoNewTxn(t *testing.T) { - store := testkit.CreateMockStore(t) - // Some statements are like DDL, they commit the previous txn automically. - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - - // Fix issue https://github.com/pingcap/tidb/issues/10705 - tk.MustExec("begin") - tk.MustExec("create user 'xxx'@'%';") - tk.MustExec("grant all privileges on *.* to 'xxx'@'%';") - - tk.MustExec("create table auto_new (id int)") - tk.MustExec("begin") - tk.MustExec("insert into auto_new values (1)") - tk.MustExec("revoke all privileges on *.* from 'xxx'@'%'") - tk.MustExec("rollback") // insert statement has already committed - tk.MustQuery("select * from auto_new").Check(testkit.Rows("1")) - - // Test the behavior when autocommit is false. - tk.MustExec("set autocommit = 0") - tk.MustExec("insert into auto_new values (2)") - tk.MustExec("create user 'yyy'@'%'") - tk.MustExec("rollback") - tk.MustQuery("select * from auto_new").Check(testkit.Rows("1", "2")) - - tk.MustExec("drop user 'yyy'@'%'") - tk.MustExec("insert into auto_new values (3)") - tk.MustExec("rollback") - tk.MustQuery("select * from auto_new").Check(testkit.Rows("1", "2")) -} - func TestExtendedStatsPrivileges(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) diff --git a/pkg/executor/test/writetest/BUILD.bazel b/pkg/executor/test/writetest/BUILD.bazel index 1080b392de576..59e3023cb91fe 100644 --- a/pkg/executor/test/writetest/BUILD.bazel +++ b/pkg/executor/test/writetest/BUILD.bazel @@ -8,17 +8,15 @@ go_test( "write_test.go", ], flaky = True, - shard_count = 27, + shard_count = 10, deps = [ "//br/pkg/lightning/mydump", "//pkg/config", "//pkg/executor", - "//pkg/executor/internal", "//pkg/kv", "//pkg/meta/autoid", "//pkg/parser/model", "//pkg/parser/mysql", - "//pkg/planner/core", "//pkg/session", "//pkg/sessionctx", "//pkg/sessiontxn", diff --git a/pkg/executor/test/writetest/write_test.go b/pkg/executor/test/writetest/write_test.go index c8bb54ef2cabb..d279259fc0636 100644 --- a/pkg/executor/test/writetest/write_test.go +++ b/pkg/executor/test/writetest/write_test.go @@ -24,11 +24,9 @@ import ( "github.com/pingcap/tidb/br/pkg/lightning/mydump" "github.com/pingcap/tidb/pkg/config" "github.com/pingcap/tidb/pkg/executor" - "github.com/pingcap/tidb/pkg/executor/internal" "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" - "github.com/pingcap/tidb/pkg/planner/core" "github.com/pingcap/tidb/pkg/session" "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessiontxn" @@ -41,422 +39,6 @@ import ( "github.com/stretchr/testify/require" ) -func TestInsert(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - testSQL := `drop table if exists insert_test;create table insert_test (id int PRIMARY KEY AUTO_INCREMENT, c1 int, c2 int, c3 int default 1);` - tk.MustExec(testSQL) - testSQL = `insert insert_test (c1) values (1),(2),(NULL);` - tk.MustExec(testSQL) - require.Equal(t, tk.Session().LastMessage(), "Records: 3 Duplicates: 0 Warnings: 0") - - errInsertSelectSQL := `insert insert_test (c1) values ();` - tk.MustExec("begin") - err := tk.ExecToErr(errInsertSelectSQL) - require.Error(t, err) - tk.MustExec("rollback") - - errInsertSelectSQL = `insert insert_test (c1, c2) values (1,2),(1);` - tk.MustExec("begin") - err = tk.ExecToErr(errInsertSelectSQL) - require.Error(t, err) - tk.MustExec("rollback") - - errInsertSelectSQL = `insert insert_test (xxx) values (3);` - tk.MustExec("begin") - err = tk.ExecToErr(errInsertSelectSQL) - require.Error(t, err) - tk.MustExec("rollback") - - errInsertSelectSQL = `insert insert_test_xxx (c1) values ();` - tk.MustExec("begin") - err = tk.ExecToErr(errInsertSelectSQL) - require.Error(t, err) - tk.MustExec("rollback") - - insertSetSQL := `insert insert_test set c1 = 3;` - tk.MustExec(insertSetSQL) - require.Empty(t, tk.Session().LastMessage()) - - errInsertSelectSQL = `insert insert_test set c1 = 4, c1 = 5;` - tk.MustExec("begin") - err = tk.ExecToErr(errInsertSelectSQL) - require.Error(t, err) - tk.MustExec("rollback") - - errInsertSelectSQL = `insert insert_test set xxx = 6;` - tk.MustExec("begin") - err = tk.ExecToErr(errInsertSelectSQL) - require.Error(t, err) - tk.MustExec("rollback") - - insertSelectSQL := `create table insert_test_1 (id int, c1 int);` - tk.MustExec(insertSelectSQL) - insertSelectSQL = `insert insert_test_1 select id, c1 from insert_test;` - tk.MustExec(insertSelectSQL) - require.Equal(t, tk.Session().LastMessage(), "Records: 4 Duplicates: 0 Warnings: 0") - - insertSelectSQL = `create table insert_test_2 (id int, c1 int);` - tk.MustExec(insertSelectSQL) - insertSelectSQL = `insert insert_test_1 select id, c1 from insert_test union select id * 10, c1 * 10 from insert_test;` - tk.MustExec(insertSelectSQL) - require.Equal(t, tk.Session().LastMessage(), "Records: 8 Duplicates: 0 Warnings: 0") - - errInsertSelectSQL = `insert insert_test_1 select c1 from insert_test;` - tk.MustExec("begin") - err = tk.ExecToErr(errInsertSelectSQL) - require.Error(t, err) - tk.MustExec("rollback") - - errInsertSelectSQL = `insert insert_test_1 values(default, default, default, default, default)` - tk.MustExec("begin") - err = tk.ExecToErr(errInsertSelectSQL) - require.Error(t, err) - tk.MustExec("rollback") - - // Updating column is PK handle. - // Make sure the record is "1, 1, nil, 1". - r := tk.MustQuery("select * from insert_test where id = 1;") - rowStr := fmt.Sprintf("%v %v %v %v", "1", "1", nil, "1") - r.Check(testkit.Rows(rowStr)) - insertSQL := `insert into insert_test (id, c3) values (1, 2) on duplicate key update id=values(id), c2=10;` - tk.MustExec(insertSQL) - require.Empty(t, tk.Session().LastMessage()) - r = tk.MustQuery("select * from insert_test where id = 1;") - rowStr = fmt.Sprintf("%v %v %v %v", "1", "1", "10", "1") - r.Check(testkit.Rows(rowStr)) - - insertSQL = `insert into insert_test (id, c2) values (1, 1) on duplicate key update insert_test.c2=10;` - tk.MustExec(insertSQL) - require.Empty(t, tk.Session().LastMessage()) - - err = tk.ExecToErr(`insert into insert_test (id, c2) values(1, 1) on duplicate key update t.c2 = 10`) - require.Error(t, err) - - // for on duplicate key - insertSQL = `INSERT INTO insert_test (id, c3) VALUES (1, 2) ON DUPLICATE KEY UPDATE c3=values(c3)+c3+3;` - tk.MustExec(insertSQL) - require.Empty(t, tk.Session().LastMessage()) - r = tk.MustQuery("select * from insert_test where id = 1;") - rowStr = fmt.Sprintf("%v %v %v %v", "1", "1", "10", "6") - r.Check(testkit.Rows(rowStr)) - - // for on duplicate key with ignore - insertSQL = `INSERT IGNORE INTO insert_test (id, c3) VALUES (1, 2) ON DUPLICATE KEY UPDATE c3=values(c3)+c3+3;` - tk.MustExec(insertSQL) - require.Empty(t, tk.Session().LastMessage()) - r = tk.MustQuery("select * from insert_test where id = 1;") - rowStr = fmt.Sprintf("%v %v %v %v", "1", "1", "10", "11") - r.Check(testkit.Rows(rowStr)) - - tk.MustExec("create table insert_err (id int, c1 varchar(8))") - err = tk.ExecToErr("insert insert_err values (1, 'abcdabcdabcd')") - require.True(t, types.ErrDataTooLong.Equal(err)) - err = tk.ExecToErr("insert insert_err values (1, '你好,世界')") - require.NoError(t, err) - - tk.MustExec("create table TEST1 (ID INT NOT NULL, VALUE INT DEFAULT NULL, PRIMARY KEY (ID))") - err = tk.ExecToErr("INSERT INTO TEST1(id,value) VALUE(3,3) on DUPLICATE KEY UPDATE VALUE=4") - require.NoError(t, err) - require.Empty(t, tk.Session().LastMessage()) - - tk.MustExec("create table t (id int)") - tk.MustExec("insert into t values(1)") - tk.MustExec("update t t1 set id = (select count(*) + 1 from t t2 where t1.id = t2.id)") - r = tk.MustQuery("select * from t;") - r.Check(testkit.Rows("2")) - - // issue 3235 - tk.MustExec("drop table if exists t") - tk.MustExec("create table t(c decimal(5, 5))") - err = tk.ExecToErr("insert into t value(0)") - require.NoError(t, err) - err = tk.ExecToErr("insert into t value(1)") - require.True(t, types.ErrWarnDataOutOfRange.Equal(err)) - - tk.MustExec("drop table if exists t") - tk.MustExec("create table t(c binary(255))") - err = tk.ExecToErr("insert into t value(1)") - require.NoError(t, err) - r = tk.MustQuery("select length(c) from t;") - r.Check(testkit.Rows("255")) - - tk.MustExec("drop table if exists t") - tk.MustExec("create table t(c varbinary(255))") - err = tk.ExecToErr("insert into t value(1)") - require.NoError(t, err) - r = tk.MustQuery("select length(c) from t;") - r.Check(testkit.Rows("1")) - - // issue 3509 - tk.MustExec("drop table if exists t") - tk.MustExec("create table t(c int)") - tk.MustExec("set @origin_time_zone = @@time_zone") - tk.MustExec("set @@time_zone = '+08:00'") - err = tk.ExecToErr("insert into t value(Unix_timestamp('2002-10-27 01:00'))") - require.NoError(t, err) - r = tk.MustQuery("select * from t;") - r.Check(testkit.Rows("1035651600")) - tk.MustExec("set @@time_zone = @origin_time_zone") - - // issue 3832 - tk.MustExec("create table t1 (b char(0));") - err = tk.ExecToErr(`insert into t1 values ("");`) - require.NoError(t, err) - - // issue 3895 - tk.MustExec("USE test;") - tk.MustExec("DROP TABLE IF EXISTS t;") - tk.MustExec("CREATE TABLE t(a DECIMAL(4,2));") - tk.MustExec("INSERT INTO t VALUES (1.000001);") - r = tk.MustQuery("SHOW WARNINGS;") - // TODO: MySQL8.0 reports Note 1265 Data truncated for column 'a' at row 1 - r.Check(testkit.Rows("Warning 1366 Incorrect decimal value: '1.000001' for column 'a' at row 1")) - tk.MustExec("INSERT INTO t VALUES (1.000000);") - r = tk.MustQuery("SHOW WARNINGS;") - r.Check(testkit.Rows()) - - // issue 4653 - tk.MustExec("DROP TABLE IF EXISTS t;") - tk.MustExec("CREATE TABLE t(a datetime);") - err = tk.ExecToErr("INSERT INTO t VALUES('2017-00-00')") - require.Error(t, err) - tk.MustExec("set sql_mode = ''") - tk.MustExec("INSERT INTO t VALUES('2017-00-00')") - r = tk.MustQuery("SELECT * FROM t;") - r.Check(testkit.Rows("2017-00-00 00:00:00")) - tk.MustExec("set sql_mode = 'strict_all_tables';") - r = tk.MustQuery("SELECT * FROM t;") - r.Check(testkit.Rows("2017-00-00 00:00:00")) - - // test auto_increment with unsigned. - tk.MustExec("drop table if exists test") - tk.MustExec("CREATE TABLE test(id int(10) UNSIGNED NOT NULL AUTO_INCREMENT, p int(10) UNSIGNED NOT NULL, PRIMARY KEY(p), KEY(id))") - tk.MustExec("insert into test(p) value(1)") - tk.MustQuery("select * from test").Check(testkit.Rows("1 1")) - tk.MustQuery("select * from test use index (id) where id = 1").Check(testkit.Rows("1 1")) - tk.MustExec("insert into test values(NULL, 2)") - tk.MustQuery("select * from test use index (id) where id = 2").Check(testkit.Rows("2 2")) - tk.MustExec("insert into test values(2, 3)") - tk.MustQuery("select * from test use index (id) where id = 2").Check(testkit.Rows("2 2", "2 3")) - - // issue 6360 - tk.MustExec("drop table if exists t;") - tk.MustExec("create table t(a bigint unsigned);") - tk.MustExec(" set @orig_sql_mode = @@sql_mode; set @@sql_mode = 'strict_all_tables';") - err = tk.ExecToErr("insert into t value (-1);") - require.True(t, types.ErrWarnDataOutOfRange.Equal(err)) - tk.MustExec("set @@sql_mode = '';") - tk.MustExec("insert into t value (-1);") - tk.MustQuery("show warnings").Check(testkit.Rows("Warning 1264 Out of range value for column 'a' at row 1")) - tk.MustExec("insert into t select -1;") - tk.MustQuery("show warnings").Check(testkit.Rows("Warning 1690 constant -1 overflows bigint")) - tk.MustExec("insert into t select cast(-1 as unsigned);") - tk.MustExec("insert into t value (-1.111);") - tk.MustQuery("show warnings").Check(testkit.Rows("Warning 1264 Out of range value for column 'a' at row 1")) - tk.MustExec("insert into t value ('-1.111');") - tk.MustQuery("show warnings").Check(testkit.Rows("Warning 1264 Out of range value for column 'a' at row 1")) - tk.MustExec("update t set a = -1 limit 1;") - tk.MustQuery("show warnings").Check(testkit.Rows("Warning 1690 constant -1 overflows bigint")) - r = tk.MustQuery("select * from t;") - r.Check(testkit.Rows("0", "0", "18446744073709551615", "0", "0")) - tk.MustExec("set @@sql_mode = @orig_sql_mode;") - - // issue 6424 & issue 20207 - tk.MustExec("drop table if exists t") - tk.MustExec("create table t(a time(6))") - tk.MustExec("insert into t value('20070219173709.055870'), ('20070219173709.055'), ('20070219173709.055870123')") - tk.MustQuery("select * from t").Check(testkit.Rows("17:37:09.055870", "17:37:09.055000", "17:37:09.055870")) - tk.MustExec("truncate table t") - tk.MustExec("insert into t value(20070219173709.055870), (20070219173709.055), (20070219173709.055870123)") - tk.MustQuery("select * from t").Check(testkit.Rows("17:37:09.055870", "17:37:09.055000", "17:37:09.055870")) - err = tk.ExecToErr("insert into t value(-20070219173709.055870)") - require.EqualError(t, err, "[table:1292]Incorrect time value: '-20070219173709.055870' for column 'a' at row 1") - - tk.MustExec("drop table if exists t") - tk.MustExec("set @@sql_mode=''") - tk.MustExec("create table t(a float unsigned, b double unsigned)") - tk.MustExec("insert into t value(-1.1, -1.1), (-2.1, -2.1), (0, 0), (1.1, 1.1)") - tk.MustQuery("show warnings"). - Check(testkit.Rows("Warning 1264 Out of range value for column 'a' at row 1", "Warning 1264 Out of range value for column 'b' at row 1", - "Warning 1264 Out of range value for column 'a' at row 2", "Warning 1264 Out of range value for column 'b' at row 2")) - tk.MustQuery("select * from t").Check(testkit.Rows("0 0", "0 0", "0 0", "1.1 1.1")) - - // issue 7061 - 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(default, default)") - tk.MustQuery("select * from t").Check(testkit.Rows("1 2")) - tk.MustExec("truncate table t") - tk.MustExec("insert into t values(default(b), default(a))") - tk.MustQuery("select * from t").Check(testkit.Rows("2 1")) - tk.MustExec("truncate table t") - tk.MustExec("insert into t (b) values(default)") - tk.MustQuery("select * from t").Check(testkit.Rows("1 2")) - tk.MustExec("truncate table t") - tk.MustExec("insert into t (b) values(default(a))") - tk.MustQuery("select * from t").Check(testkit.Rows("1 1")) - - tk.MustExec("create view v as select * from t") - err = tk.ExecToErr("insert into v values(1,2)") - require.EqualError(t, err, "insert into view v is not supported now") - err = tk.ExecToErr("replace into v values(1,2)") - require.EqualError(t, err, "replace into view v is not supported now") - tk.MustExec("drop view v") - - tk.MustExec("create sequence seq") - err = tk.ExecToErr("insert into seq values()") - require.EqualError(t, err, "insert into sequence seq is not supported now") - err = tk.ExecToErr("replace into seq values()") - require.EqualError(t, err, "replace into sequence seq is not supported now") - tk.MustExec("drop sequence seq") - - // issue 22851 - tk.MustExec("drop table if exists t") - tk.MustExec("create table t(name varchar(255), b int, c int, primary key(name(2)))") - tk.MustExec("insert into t(name, b) values(\"cha\", 3)") - err = tk.ExecToErr("insert into t(name, b) values(\"chb\", 3)") - require.EqualError(t, err, "[kv:1062]Duplicate entry 'ch' for key 't.PRIMARY'") - tk.MustExec("insert into t(name, b) values(\"测试\", 3)") - err = tk.ExecToErr("insert into t(name, b) values(\"测试\", 3)") - require.EqualError(t, err, "[kv:1062]Duplicate entry '\xe6\xb5' for key 't.PRIMARY'") -} - -func TestInsertAutoInc(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - createSQL := `drop table if exists insert_autoinc_test; create table insert_autoinc_test (id int primary key auto_increment, c1 int);` - tk.MustExec(createSQL) - - insertSQL := `insert into insert_autoinc_test(c1) values (1), (2)` - tk.MustExec(insertSQL) - tk.MustExec("begin") - r := tk.MustQuery("select * from insert_autoinc_test;") - rowStr1 := fmt.Sprintf("%v %v", "1", "1") - rowStr2 := fmt.Sprintf("%v %v", "2", "2") - r.Check(testkit.Rows(rowStr1, rowStr2)) - tk.MustExec("commit") - - tk.MustExec("begin") - insertSQL = `insert into insert_autoinc_test(id, c1) values (5,5)` - tk.MustExec(insertSQL) - insertSQL = `insert into insert_autoinc_test(c1) values (6)` - tk.MustExec(insertSQL) - tk.MustExec("commit") - tk.MustExec("begin") - r = tk.MustQuery("select * from insert_autoinc_test;") - rowStr3 := fmt.Sprintf("%v %v", "5", "5") - rowStr4 := fmt.Sprintf("%v %v", "6", "6") - r.Check(testkit.Rows(rowStr1, rowStr2, rowStr3, rowStr4)) - tk.MustExec("commit") - - tk.MustExec("begin") - insertSQL = `insert into insert_autoinc_test(id, c1) values (3,3)` - tk.MustExec(insertSQL) - tk.MustExec("commit") - tk.MustExec("begin") - r = tk.MustQuery("select * from insert_autoinc_test;") - rowStr5 := fmt.Sprintf("%v %v", "3", "3") - r.Check(testkit.Rows(rowStr1, rowStr2, rowStr5, rowStr3, rowStr4)) - tk.MustExec("commit") - - tk.MustExec("begin") - insertSQL = `insert into insert_autoinc_test(c1) values (7)` - tk.MustExec(insertSQL) - tk.MustExec("commit") - tk.MustExec("begin") - r = tk.MustQuery("select * from insert_autoinc_test;") - rowStr6 := fmt.Sprintf("%v %v", "7", "7") - r.Check(testkit.Rows(rowStr1, rowStr2, rowStr5, rowStr3, rowStr4, rowStr6)) - tk.MustExec("commit") - - // issue-962 - createSQL = `drop table if exists insert_autoinc_test; create table insert_autoinc_test (id int primary key auto_increment, c1 int);` - tk.MustExec(createSQL) - insertSQL = `insert into insert_autoinc_test(id, c1) values (0.3, 1)` - tk.MustExec(insertSQL) - r = tk.MustQuery("select * from insert_autoinc_test;") - rowStr1 = fmt.Sprintf("%v %v", "1", "1") - r.Check(testkit.Rows(rowStr1)) - insertSQL = `insert into insert_autoinc_test(id, c1) values (-0.3, 2)` - tk.MustExec(insertSQL) - r = tk.MustQuery("select * from insert_autoinc_test;") - rowStr2 = fmt.Sprintf("%v %v", "2", "2") - r.Check(testkit.Rows(rowStr1, rowStr2)) - insertSQL = `insert into insert_autoinc_test(id, c1) values (-3.3, 3)` - tk.MustExec(insertSQL) - r = tk.MustQuery("select * from insert_autoinc_test;") - rowStr3 = fmt.Sprintf("%v %v", "-3", "3") - r.Check(testkit.Rows(rowStr3, rowStr1, rowStr2)) - insertSQL = `insert into insert_autoinc_test(id, c1) values (4.3, 4)` - tk.MustExec(insertSQL) - r = tk.MustQuery("select * from insert_autoinc_test;") - rowStr4 = fmt.Sprintf("%v %v", "4", "4") - r.Check(testkit.Rows(rowStr3, rowStr1, rowStr2, rowStr4)) - insertSQL = `insert into insert_autoinc_test(c1) values (5)` - tk.MustExec(insertSQL) - r = tk.MustQuery("select * from insert_autoinc_test;") - rowStr5 = fmt.Sprintf("%v %v", "5", "5") - r.Check(testkit.Rows(rowStr3, rowStr1, rowStr2, rowStr4, rowStr5)) - insertSQL = `insert into insert_autoinc_test(id, c1) values (null, 6)` - tk.MustExec(insertSQL) - r = tk.MustQuery("select * from insert_autoinc_test;") - rowStr6 = fmt.Sprintf("%v %v", "6", "6") - r.Check(testkit.Rows(rowStr3, rowStr1, rowStr2, rowStr4, rowStr5, rowStr6)) - - // SQL_MODE=NO_AUTO_VALUE_ON_ZERO - createSQL = `drop table if exists insert_autoinc_test; create table insert_autoinc_test (id int primary key auto_increment, c1 int);` - tk.MustExec(createSQL) - insertSQL = `insert into insert_autoinc_test(id, c1) values (5, 1)` - tk.MustExec(insertSQL) - r = tk.MustQuery("select * from insert_autoinc_test;") - rowStr1 = fmt.Sprintf("%v %v", "5", "1") - r.Check(testkit.Rows(rowStr1)) - insertSQL = `insert into insert_autoinc_test(id, c1) values (0, 2)` - tk.MustExec(insertSQL) - r = tk.MustQuery("select * from insert_autoinc_test;") - rowStr2 = fmt.Sprintf("%v %v", "6", "2") - r.Check(testkit.Rows(rowStr1, rowStr2)) - insertSQL = `insert into insert_autoinc_test(id, c1) values (0, 3)` - tk.MustExec(insertSQL) - r = tk.MustQuery("select * from insert_autoinc_test;") - rowStr3 = fmt.Sprintf("%v %v", "7", "3") - r.Check(testkit.Rows(rowStr1, rowStr2, rowStr3)) - tk.MustExec("set SQL_MODE=NO_AUTO_VALUE_ON_ZERO") - insertSQL = `insert into insert_autoinc_test(id, c1) values (0, 4)` - tk.MustExec(insertSQL) - r = tk.MustQuery("select * from insert_autoinc_test;") - rowStr4 = fmt.Sprintf("%v %v", "0", "4") - r.Check(testkit.Rows(rowStr4, rowStr1, rowStr2, rowStr3)) - insertSQL = `insert into insert_autoinc_test(id, c1) values (0, 5)` - err := tk.ExecToErr(insertSQL) - // ERROR 1062 (23000): Duplicate entry '0' for key 'PRIMARY' - require.Error(t, err) - insertSQL = `insert into insert_autoinc_test(c1) values (6)` - tk.MustExec(insertSQL) - r = tk.MustQuery("select * from insert_autoinc_test;") - rowStr5 = fmt.Sprintf("%v %v", "8", "6") - r.Check(testkit.Rows(rowStr4, rowStr1, rowStr2, rowStr3, rowStr5)) - insertSQL = `insert into insert_autoinc_test(id, c1) values (null, 7)` - tk.MustExec(insertSQL) - r = tk.MustQuery("select * from insert_autoinc_test;") - rowStr6 = fmt.Sprintf("%v %v", "9", "7") - r.Check(testkit.Rows(rowStr4, rowStr1, rowStr2, rowStr3, rowStr5, rowStr6)) - tk.MustExec("set SQL_MODE='';") - insertSQL = `insert into insert_autoinc_test(id, c1) values (0, 8)` - tk.MustExec(insertSQL) - r = tk.MustQuery("select * from insert_autoinc_test;") - rowStr7 := fmt.Sprintf("%v %v", "10", "8") - r.Check(testkit.Rows(rowStr4, rowStr1, rowStr2, rowStr3, rowStr5, rowStr6, rowStr7)) - insertSQL = `insert into insert_autoinc_test(id, c1) values (null, 9)` - tk.MustExec(insertSQL) - r = tk.MustQuery("select * from insert_autoinc_test;") - rowStr8 := fmt.Sprintf("%v %v", "11", "9") - r.Check(testkit.Rows(rowStr4, rowStr1, rowStr2, rowStr3, rowStr5, rowStr6, rowStr7, rowStr8)) -} - func TestInsertIgnore(t *testing.T) { store := testkit.CreateMockStore(t) var cfg kv.InjectionConfig @@ -577,656 +159,6 @@ commit;` tk.MustQuery("show warnings").Check(testkit.Rows("Warning 1526 Table has no partition for value 3")) } -func TestIssue38950(t *testing.T) { - store := testkit.CreateMockStore(t) - var cfg kv.InjectionConfig - tk := testkit.NewTestKit(t, kv.NewInjectedStore(store, &cfg)) - tk.MustExec("use test;") - tk.MustExec("drop table if exists t; create table t (id smallint auto_increment primary key);") - tk.MustExec("alter table t add column c1 int default 1;") - tk.MustExec("insert ignore into t(id) values (194626268);") - require.Empty(t, tk.Session().LastMessage()) - - tk.MustQuery("select * from t").Check(testkit.Rows("32767 1")) - - tk.MustExec("insert ignore into t(id) values ('*') on duplicate key update c1 = 2;") - require.Equal(t, int64(2), int64(tk.Session().AffectedRows())) - require.Empty(t, tk.Session().LastMessage()) - - tk.MustQuery("select * from t").Check(testkit.Rows("32767 2")) -} - -func TestInsertOnDup(t *testing.T) { - store := testkit.CreateMockStore(t) - var cfg kv.InjectionConfig - tk := testkit.NewTestKit(t, kv.NewInjectedStore(store, &cfg)) - tk.MustExec("use test") - testSQL := `drop table if exists t; - create table t (i int unique key);` - tk.MustExec(testSQL) - testSQL = `insert into t values (1),(2);` - tk.MustExec(testSQL) - require.Equal(t, tk.Session().LastMessage(), "Records: 2 Duplicates: 0 Warnings: 0") - - r := tk.MustQuery("select * from t;") - rowStr1 := fmt.Sprintf("%v", "1") - rowStr2 := fmt.Sprintf("%v", "2") - r.Check(testkit.Rows(rowStr1, rowStr2)) - - tk.MustExec("insert into t values (1), (2) on duplicate key update i = values(i)") - require.Equal(t, tk.Session().LastMessage(), "Records: 2 Duplicates: 0 Warnings: 0") - r = tk.MustQuery("select * from t;") - r.Check(testkit.Rows(rowStr1, rowStr2)) - - tk.MustExec("insert into t values (2), (3) on duplicate key update i = 3") - require.Equal(t, tk.Session().LastMessage(), "Records: 2 Duplicates: 1 Warnings: 0") - r = tk.MustQuery("select * from t;") - rowStr3 := fmt.Sprintf("%v", "3") - r.Check(testkit.Rows(rowStr1, rowStr3)) - - testSQL = `drop table if exists t; - create table t (i int primary key, j int unique key);` - tk.MustExec(testSQL) - testSQL = `insert into t values (-1, 1);` - tk.MustExec(testSQL) - require.Empty(t, tk.Session().LastMessage()) - - r = tk.MustQuery("select * from t;") - rowStr1 = fmt.Sprintf("%v %v", "-1", "1") - r.Check(testkit.Rows(rowStr1)) - - tk.MustExec("insert into t values (1, 1) on duplicate key update j = values(j)") - require.Empty(t, tk.Session().LastMessage()) - r = tk.MustQuery("select * from t;") - r.Check(testkit.Rows(rowStr1)) - - testSQL = `drop table if exists test; -create table test (i int primary key, j int unique); -begin; -insert into test values (1,1); -insert into test values (2,1) on duplicate key update i = -i, j = -j; -commit;` - tk.MustExec(testSQL) - testSQL = `select * from test;` - r = tk.MustQuery(testSQL) - r.Check(testkit.Rows("-1 -1")) - - testSQL = `delete from test; -insert into test values (1, 1); -begin; -delete from test where i = 1; -insert into test values (2, 1) on duplicate key update i = -i, j = -j; -commit;` - tk.MustExec(testSQL) - testSQL = `select * from test;` - r = tk.MustQuery(testSQL) - r.Check(testkit.Rows("2 1")) - - testSQL = `delete from test; -insert into test values (1, 1); -begin; -update test set i = 2, j = 2 where i = 1; -insert into test values (1, 3) on duplicate key update i = -i, j = -j; -insert into test values (2, 4) on duplicate key update i = -i, j = -j; -commit;` - tk.MustExec(testSQL) - testSQL = `select * from test order by i;` - r = tk.MustQuery(testSQL) - r.Check(testkit.Rows("-2 -2", "1 3")) - - testSQL = `delete from test; -begin; -insert into test values (1, 3), (1, 3) on duplicate key update i = values(i), j = values(j); -commit;` - tk.MustExec(testSQL) - testSQL = `select * from test order by i;` - r = tk.MustQuery(testSQL) - r.Check(testkit.Rows("1 3")) - - testSQL = `create table tmp (id int auto_increment, code int, primary key(id, code)); - create table m (id int primary key auto_increment, code int unique); - insert tmp (code) values (1); - insert tmp (code) values (1); - set tidb_init_chunk_size=1; - insert m (code) select code from tmp on duplicate key update code = values(code);` - tk.MustExec(testSQL) - testSQL = `select * from m;` - r = tk.MustQuery(testSQL) - r.Check(testkit.Rows("1 1")) - - // The following two cases are used for guaranteeing the last_insert_id - // to be set as the value of on-duplicate-update assigned. - testSQL = `DROP TABLE IF EXISTS t1; - CREATE TABLE t1 (f1 INT AUTO_INCREMENT PRIMARY KEY, - f2 VARCHAR(5) NOT NULL UNIQUE); - INSERT t1 (f2) VALUES ('test') ON DUPLICATE KEY UPDATE f1 = LAST_INSERT_ID(f1);` - tk.MustExec(testSQL) - require.Empty(t, tk.Session().LastMessage()) - testSQL = `SELECT LAST_INSERT_ID();` - r = tk.MustQuery(testSQL) - r.Check(testkit.Rows("1")) - testSQL = `INSERT t1 (f2) VALUES ('test') ON DUPLICATE KEY UPDATE f1 = LAST_INSERT_ID(f1);` - tk.MustExec(testSQL) - require.Empty(t, tk.Session().LastMessage()) - testSQL = `SELECT LAST_INSERT_ID();` - r = tk.MustQuery(testSQL) - r.Check(testkit.Rows("1")) - - testSQL = `DROP TABLE IF EXISTS t1; - CREATE TABLE t1 (f1 INT AUTO_INCREMENT UNIQUE, - f2 VARCHAR(5) NOT NULL UNIQUE); - INSERT t1 (f2) VALUES ('test') ON DUPLICATE KEY UPDATE f1 = LAST_INSERT_ID(f1);` - tk.MustExec(testSQL) - require.Empty(t, tk.Session().LastMessage()) - testSQL = `SELECT LAST_INSERT_ID();` - r = tk.MustQuery(testSQL) - r.Check(testkit.Rows("1")) - testSQL = `INSERT t1 (f2) VALUES ('test') ON DUPLICATE KEY UPDATE f1 = LAST_INSERT_ID(f1);` - tk.MustExec(testSQL) - require.Empty(t, tk.Session().LastMessage()) - testSQL = `SELECT LAST_INSERT_ID();` - r = tk.MustQuery(testSQL) - r.Check(testkit.Rows("1")) - testSQL = `INSERT t1 (f2) VALUES ('test') ON DUPLICATE KEY UPDATE f1 = 2;` - tk.MustExec(testSQL) - require.Empty(t, tk.Session().LastMessage()) - testSQL = `SELECT LAST_INSERT_ID();` - r = tk.MustQuery(testSQL) - r.Check(testkit.Rows("1")) - - testSQL = `DROP TABLE IF EXISTS t1; - CREATE TABLE t1 (f1 INT); - INSERT t1 VALUES (1) ON DUPLICATE KEY UPDATE f1 = 1;` - tk.MustExec(testSQL) - require.Empty(t, tk.Session().LastMessage()) - tk.MustQuery(`SELECT * FROM t1;`).Check(testkit.Rows("1")) - - testSQL = `DROP TABLE IF EXISTS t1; - CREATE TABLE t1 (f1 INT PRIMARY KEY, f2 INT NOT NULL UNIQUE); - INSERT t1 VALUES (1, 1);` - tk.MustExec(testSQL) - require.Empty(t, tk.Session().LastMessage()) - tk.MustExec(`INSERT t1 VALUES (1, 1), (1, 1) ON DUPLICATE KEY UPDATE f1 = 2, f2 = 2;`) - require.Equal(t, tk.Session().LastMessage(), "Records: 2 Duplicates: 1 Warnings: 0") - tk.MustQuery(`SELECT * FROM t1 order by f1;`).Check(testkit.Rows("1 1", "2 2")) - err := tk.ExecToErr(`INSERT t1 VALUES (1, 1) ON DUPLICATE KEY UPDATE f2 = null;`) - require.Error(t, err) - tk.MustExec(`INSERT IGNORE t1 VALUES (1, 1) ON DUPLICATE KEY UPDATE f2 = null;`) - require.Empty(t, tk.Session().LastMessage()) - tk.MustQuery("show warnings").Check(testkit.Rows("Warning 1048 Column 'f2' cannot be null")) - tk.MustQuery(`SELECT * FROM t1 order by f1;`).Check(testkit.Rows("1 0", "2 2")) - - tk.MustExec(`SET sql_mode='';`) - tk.MustExec(`INSERT t1 VALUES (1, 1) ON DUPLICATE KEY UPDATE f2 = null;`) - tk.MustQuery("show warnings").Check(testkit.Rows("Warning 1048 Column 'f2' cannot be null")) - tk.MustQuery(`SELECT * FROM t1 order by f1;`).Check(testkit.Rows("1 0", "2 2")) -} - -func TestInsertIgnoreOnDup(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - testSQL := `drop table if exists t; - create table t (i int not null primary key, j int unique key);` - tk.MustExec(testSQL) - testSQL = `insert into t values (1, 1), (2, 2);` - tk.MustExec(testSQL) - require.Equal(t, tk.Session().LastMessage(), "Records: 2 Duplicates: 0 Warnings: 0") - testSQL = `insert ignore into t values(1, 1) on duplicate key update i = 2;` - tk.MustExec(testSQL) - require.Empty(t, tk.Session().LastMessage()) - testSQL = `select * from t;` - r := tk.MustQuery(testSQL) - r.Check(testkit.Rows("1 1", "2 2")) - testSQL = `insert ignore into t values(1, 1) on duplicate key update j = 2;` - tk.MustExec(testSQL) - require.Empty(t, tk.Session().LastMessage()) - testSQL = `select * from t;` - r = tk.MustQuery(testSQL) - r.Check(testkit.Rows("1 1", "2 2")) - - tk.MustExec("drop table if exists t2") - tk.MustExec("create table t2(`col_25` set('Alice','Bob','Charlie','David') NOT NULL,`col_26` date NOT NULL DEFAULT '2016-04-15', PRIMARY KEY (`col_26`) clustered, UNIQUE KEY `idx_9` (`col_25`,`col_26`),UNIQUE KEY `idx_10` (`col_25`))") - tk.MustExec("insert into t2(col_25, col_26) values('Bob', '1989-03-23'),('Alice', '2023-11-24'), ('Charlie', '2023-12-05')") - tk.MustExec("insert ignore into t2 (col_25,col_26) values ( 'Bob','1977-11-23' ) on duplicate key update col_25 = 'Alice', col_26 = '2036-12-13'") - tk.MustQuery("show warnings").Check(testkit.Rows("Warning 1062 Duplicate entry 'Alice' for key 't2.idx_10'")) - tk.MustQuery("select * from t2").Check(testkit.Rows("Bob 1989-03-23", "Alice 2023-11-24", "Charlie 2023-12-05")) - - tk.MustExec("drop table if exists t4") - tk.MustExec("create table t4(id int primary key clustered, k int, v int, unique key uk1(k))") - tk.MustExec("insert into t4 values (1, 10, 100), (3, 30, 300)") - tk.MustExec("insert ignore into t4 (id, k, v) values(1, 0, 0) on duplicate key update id = 2, k = 30") - tk.MustQuery("show warnings").Check(testkit.Rows("Warning 1062 Duplicate entry '30' for key 't4.uk1'")) - tk.MustQuery("select * from t4").Check(testkit.Rows("1 10 100", "3 30 300")) - - tk.MustExec("drop table if exists t5") - tk.MustExec("create table t5(k1 varchar(100), k2 varchar(100), uk1 int, v int, primary key(k1, k2) clustered, unique key ukk1(uk1), unique key ukk2(v))") - tk.MustExec("insert into t5(k1, k2, uk1, v) values('1', '1', 1, '100'), ('1', '3', 2, '200')") - tk.MustExec("update ignore t5 set k2 = '2', uk1 = 2 where k1 = '1' and k2 = '1'") - tk.MustQuery("show warnings").Check(testkit.Rows("Warning 1062 Duplicate entry '2' for key 't5.ukk1'")) - tk.MustQuery("select * from t5").Check(testkit.Rows("1 1 1 100", "1 3 2 200")) - - tk.MustExec("drop table if exists t6") - tk.MustExec("create table t6 (a int, b int, c int, primary key(a, b) clustered, unique key idx_14(b), unique key idx_15(b), unique key idx_16(a, b))") - tk.MustExec("insert into t6 select 10, 10, 20") - tk.MustExec("insert ignore into t6 set a = 20, b = 10 on duplicate key update a = 100") - tk.MustQuery("select * from t6").Check(testkit.Rows("100 10 20")) - tk.MustExec("insert ignore into t6 set a = 200, b= 10 on duplicate key update c = 1000") - tk.MustQuery("select * from t6").Check(testkit.Rows("100 10 1000")) -} - -func TestReplace(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - testSQL := `drop table if exists replace_test; - create table replace_test (id int PRIMARY KEY AUTO_INCREMENT, c1 int, c2 int, c3 int default 1);` - tk.MustExec(testSQL) - testSQL = `replace replace_test (c1) values (1),(2),(NULL);` - tk.MustExec(testSQL) - require.Equal(t, tk.Session().LastMessage(), "Records: 3 Duplicates: 0 Warnings: 0") - - errReplaceSQL := `replace replace_test (c1) values ();` - tk.MustExec("begin") - err := tk.ExecToErr(errReplaceSQL) - require.Error(t, err) - tk.MustExec("rollback") - - errReplaceSQL = `replace replace_test (c1, c2) values (1,2),(1);` - tk.MustExec("begin") - err = tk.ExecToErr(errReplaceSQL) - require.Error(t, err) - tk.MustExec("rollback") - - errReplaceSQL = `replace replace_test (xxx) values (3);` - tk.MustExec("begin") - err = tk.ExecToErr(errReplaceSQL) - require.Error(t, err) - tk.MustExec("rollback") - - errReplaceSQL = `replace replace_test_xxx (c1) values ();` - tk.MustExec("begin") - err = tk.ExecToErr(errReplaceSQL) - require.Error(t, err) - tk.MustExec("rollback") - - replaceSetSQL := `replace replace_test set c1 = 3;` - tk.MustExec(replaceSetSQL) - require.Empty(t, tk.Session().LastMessage()) - - errReplaceSetSQL := `replace replace_test set c1 = 4, c1 = 5;` - tk.MustExec("begin") - err = tk.ExecToErr(errReplaceSetSQL) - require.Error(t, err) - tk.MustExec("rollback") - - errReplaceSetSQL = `replace replace_test set xxx = 6;` - tk.MustExec("begin") - err = tk.ExecToErr(errReplaceSetSQL) - require.Error(t, err) - tk.MustExec("rollback") - - replaceSelectSQL := `create table replace_test_1 (id int, c1 int);` - tk.MustExec(replaceSelectSQL) - replaceSelectSQL = `replace replace_test_1 select id, c1 from replace_test;` - tk.MustExec(replaceSelectSQL) - require.Equal(t, tk.Session().LastMessage(), "Records: 4 Duplicates: 0 Warnings: 0") - - replaceSelectSQL = `create table replace_test_2 (id int, c1 int);` - tk.MustExec(replaceSelectSQL) - replaceSelectSQL = `replace replace_test_1 select id, c1 from replace_test union select id * 10, c1 * 10 from replace_test;` - tk.MustExec(replaceSelectSQL) - require.Equal(t, tk.Session().LastMessage(), "Records: 8 Duplicates: 0 Warnings: 0") - - errReplaceSelectSQL := `replace replace_test_1 select c1 from replace_test;` - tk.MustExec("begin") - err = tk.ExecToErr(errReplaceSelectSQL) - require.Error(t, err) - tk.MustExec("rollback") - - replaceUniqueIndexSQL := `create table replace_test_3 (c1 int, c2 int, UNIQUE INDEX (c2));` - tk.MustExec(replaceUniqueIndexSQL) - replaceUniqueIndexSQL = `replace into replace_test_3 set c2=1;` - tk.MustExec(replaceUniqueIndexSQL) - replaceUniqueIndexSQL = `replace into replace_test_3 set c2=1;` - tk.MustExec(replaceUniqueIndexSQL) - require.Equal(t, int64(1), int64(tk.Session().AffectedRows())) - require.Empty(t, tk.Session().LastMessage()) - - replaceUniqueIndexSQL = `replace into replace_test_3 set c1=1, c2=1;` - tk.MustExec(replaceUniqueIndexSQL) - require.Equal(t, int64(2), int64(tk.Session().AffectedRows())) - require.Empty(t, tk.Session().LastMessage()) - - replaceUniqueIndexSQL = `replace into replace_test_3 set c2=NULL;` - tk.MustExec(replaceUniqueIndexSQL) - replaceUniqueIndexSQL = `replace into replace_test_3 set c2=NULL;` - tk.MustExec(replaceUniqueIndexSQL) - require.Equal(t, int64(1), int64(tk.Session().AffectedRows())) - require.Empty(t, tk.Session().LastMessage()) - - replaceUniqueIndexSQL = `create table replace_test_4 (c1 int, c2 int, c3 int, UNIQUE INDEX (c1, c2));` - tk.MustExec(replaceUniqueIndexSQL) - replaceUniqueIndexSQL = `replace into replace_test_4 set c2=NULL;` - tk.MustExec(replaceUniqueIndexSQL) - replaceUniqueIndexSQL = `replace into replace_test_4 set c2=NULL;` - tk.MustExec(replaceUniqueIndexSQL) - require.Equal(t, int64(1), int64(tk.Session().AffectedRows())) - require.Empty(t, tk.Session().LastMessage()) - - replacePrimaryKeySQL := `create table replace_test_5 (c1 int, c2 int, c3 int, PRIMARY KEY (c1, c2));` - tk.MustExec(replacePrimaryKeySQL) - replacePrimaryKeySQL = `replace into replace_test_5 set c1=1, c2=2;` - tk.MustExec(replacePrimaryKeySQL) - replacePrimaryKeySQL = `replace into replace_test_5 set c1=1, c2=2;` - tk.MustExec(replacePrimaryKeySQL) - require.Equal(t, int64(1), int64(tk.Session().AffectedRows())) - require.Empty(t, tk.Session().LastMessage()) - - // For Issue989 - issue989SQL := `CREATE TABLE tIssue989 (a int, b int, PRIMARY KEY(a), UNIQUE KEY(b));` - tk.MustExec(issue989SQL) - issue989SQL = `insert into tIssue989 (a, b) values (1, 2);` - tk.MustExec(issue989SQL) - require.Empty(t, tk.Session().LastMessage()) - issue989SQL = `replace into tIssue989(a, b) values (111, 2);` - tk.MustExec(issue989SQL) - require.Empty(t, tk.Session().LastMessage()) - r := tk.MustQuery("select * from tIssue989;") - r.Check(testkit.Rows("111 2")) - - // For Issue1012 - issue1012SQL := `CREATE TABLE tIssue1012 (a int, b int, PRIMARY KEY(a), UNIQUE KEY(b));` - tk.MustExec(issue1012SQL) - issue1012SQL = `insert into tIssue1012 (a, b) values (1, 2);` - tk.MustExec(issue1012SQL) - issue1012SQL = `insert into tIssue1012 (a, b) values (2, 1);` - tk.MustExec(issue1012SQL) - issue1012SQL = `replace into tIssue1012(a, b) values (1, 1);` - tk.MustExec(issue1012SQL) - require.Equal(t, int64(3), int64(tk.Session().AffectedRows())) - require.Empty(t, tk.Session().LastMessage()) - r = tk.MustQuery("select * from tIssue1012;") - r.Check(testkit.Rows("1 1")) - - // Test Replace with info message - tk.MustExec(`drop table if exists t1`) - tk.MustExec(`create table t1(a int primary key, b int);`) - tk.MustExec(`insert into t1 values(1,1),(2,2),(3,3),(4,4),(5,5);`) - tk.MustExec(`replace into t1 values(1,1);`) - require.Equal(t, int64(1), int64(tk.Session().AffectedRows())) - require.Empty(t, tk.Session().LastMessage()) - tk.MustExec(`replace into t1 values(1,1),(2,2);`) - require.Equal(t, int64(2), int64(tk.Session().AffectedRows())) - require.Equal(t, tk.Session().LastMessage(), "Records: 2 Duplicates: 0 Warnings: 0") - tk.MustExec(`replace into t1 values(4,14),(5,15),(6,16),(7,17),(8,18)`) - require.Equal(t, int64(7), int64(tk.Session().AffectedRows())) - require.Equal(t, tk.Session().LastMessage(), "Records: 5 Duplicates: 2 Warnings: 0") - tk.MustExec(`replace into t1 select * from (select 1, 2) as tmp;`) - require.Equal(t, int64(2), int64(tk.Session().AffectedRows())) - require.Equal(t, tk.Session().LastMessage(), "Records: 1 Duplicates: 1 Warnings: 0") - - // Assign `DEFAULT` in `REPLACE` statement - tk.MustExec("drop table if exists t1, t2;") - tk.MustExec("create table t1 (a int primary key, b int default 20, c int default 30);") - tk.MustExec("insert into t1 value (1, 2, 3);") - tk.MustExec("replace t1 set a=1, b=default;") - tk.MustQuery("select * from t1;").Check(testkit.Rows("1 20 30")) - tk.MustExec("replace t1 set a=2, b=default, c=default") - tk.MustQuery("select * from t1;").Check(testkit.Rows("1 20 30", "2 20 30")) - tk.MustExec("replace t1 set a=2, b=default(c), c=default(b);") - tk.MustQuery("select * from t1;").Check(testkit.Rows("1 20 30", "2 30 20")) - tk.MustExec("replace t1 set a=default(b)+default(c)") - tk.MustQuery("select * from t1;").Check(testkit.Rows("1 20 30", "2 30 20", "50 20 30")) - // With generated columns - tk.MustExec("create table t2 (pk int primary key, a int default 1, b int generated always as (-a) virtual, c int generated always as (-a) stored);") - tk.MustExec("replace t2 set pk=1, b=default;") - tk.MustQuery("select * from t2;").Check(testkit.Rows("1 1 -1 -1")) - tk.MustExec("replace t2 set pk=2, a=10, b=default;") - tk.MustQuery("select * from t2;").Check(testkit.Rows("1 1 -1 -1", "2 10 -10 -10")) - tk.MustExec("replace t2 set pk=2, c=default, a=20;") - tk.MustQuery("select * from t2;").Check(testkit.Rows("1 1 -1 -1", "2 20 -20 -20")) - tk.MustExec("replace t2 set pk=2, a=default, b=default, c=default;") - tk.MustQuery("select * from t2;").Check(testkit.Rows("1 1 -1 -1", "2 1 -1 -1")) - tk.MustExec("replace t2 set pk=3, a=default(a), b=default, c=default;") - tk.MustQuery("select * from t2;").Check(testkit.Rows("1 1 -1 -1", "2 1 -1 -1", "3 1 -1 -1")) - tk.MustGetErrCode("replace t2 set b=default(a);", mysql.ErrBadGeneratedColumn) - tk.MustGetErrCode("replace t2 set a=default(b), b=default(b);", mysql.ErrBadGeneratedColumn) - tk.MustGetErrCode("replace t2 set a=default(a), c=default(c);", mysql.ErrNoDefaultForField) - tk.MustGetErrCode("replace t2 set c=default(a);", mysql.ErrBadGeneratedColumn) - tk.MustExec("drop table t1, t2") -} - -// TestUpdateCastOnlyModifiedValues for issue #4514. -func TestUpdateCastOnlyModifiedValues(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("create table update_modified (col_1 int, col_2 enum('a', 'b'))") - tk.MustExec("set SQL_MODE=''") - tk.MustExec("insert into update_modified values (0, 3)") - r := tk.MustQuery("SELECT * FROM update_modified") - r.Check(testkit.Rows("0 ")) - tk.MustExec("set SQL_MODE=STRICT_ALL_TABLES") - tk.MustExec("update update_modified set col_1 = 1") - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 1 Changed: 1 Warnings: 0") - r = tk.MustQuery("SELECT * FROM update_modified") - r.Check(testkit.Rows("1 ")) - err := tk.ExecToErr("update update_modified set col_1 = 2, col_2 = 'c'") - require.Error(t, err) - r = tk.MustQuery("SELECT * FROM update_modified") - r.Check(testkit.Rows("1 ")) - tk.MustExec("update update_modified set col_1 = 3, col_2 = 'a'") - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 1 Changed: 1 Warnings: 0") - r = tk.MustQuery("SELECT * FROM update_modified") - r.Check(testkit.Rows("3 a")) - - // Test update a field with different column type. - tk.MustExec(`CREATE TABLE update_with_diff_type (a int, b JSON)`) - tk.MustExec(`INSERT INTO update_with_diff_type VALUES(3, '{"a": "测试"}')`) - tk.MustExec(`UPDATE update_with_diff_type SET a = '300'`) - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 1 Changed: 1 Warnings: 0") - r = tk.MustQuery("SELECT a FROM update_with_diff_type") - r.Check(testkit.Rows("300")) - tk.MustExec(`UPDATE update_with_diff_type SET b = '{"a": "\\u6d4b\\u8bd5"}'`) - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 1 Changed: 0 Warnings: 0") - r = tk.MustQuery("SELECT b FROM update_with_diff_type") - r.Check(testkit.Rows(`{"a": "测试"}`)) -} - -func fillMultiTableForUpdate(tk *testkit.TestKit) { - // Create and fill table items - tk.MustExec("CREATE TABLE items (id int, price TEXT);") - tk.MustExec(`insert into items values (11, "items_price_11"), (12, "items_price_12"), (13, "items_price_13");`) - tk.CheckExecResult(3, 0) - // Create and fill table month - tk.MustExec("CREATE TABLE month (mid int, mprice TEXT);") - tk.MustExec(`insert into month values (11, "month_price_11"), (22, "month_price_22"), (13, "month_price_13");`) - tk.CheckExecResult(3, 0) -} - -func TestMultipleTableUpdate(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - fillMultiTableForUpdate(tk) - - tk.MustExec(`UPDATE items, month SET items.price=month.mprice WHERE items.id=month.mid;`) - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 2 Changed: 2 Warnings: 0") - tk.MustExec("begin") - r := tk.MustQuery("SELECT * FROM items") - r.Check(testkit.Rows("11 month_price_11", "12 items_price_12", "13 month_price_13")) - tk.MustExec("commit") - - // Single-table syntax but with multiple tables - tk.MustExec(`UPDATE items join month on items.id=month.mid SET items.price=month.mid;`) - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 2 Changed: 2 Warnings: 0") - tk.MustExec("begin") - r = tk.MustQuery("SELECT * FROM items") - r.Check(testkit.Rows("11 11", "12 items_price_12", "13 13")) - tk.MustExec("commit") - - // JoinTable with alias table name. - tk.MustExec(`UPDATE items T0 join month T1 on T0.id=T1.mid SET T0.price=T1.mprice;`) - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 2 Changed: 2 Warnings: 0") - tk.MustExec("begin") - r = tk.MustQuery("SELECT * FROM items") - r.Check(testkit.Rows("11 month_price_11", "12 items_price_12", "13 month_price_13")) - tk.MustExec("commit") - - // fix https://github.com/pingcap/tidb/issues/369 - testSQL := ` - DROP TABLE IF EXISTS t1, t2; - create table t1 (c int); - create table t2 (c varchar(256)); - insert into t1 values (1), (2); - insert into t2 values ("a"), ("b"); - update t1, t2 set t1.c = 10, t2.c = "abc";` - tk.MustExec(testSQL) - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 4 Changed: 4 Warnings: 0") - - // fix https://github.com/pingcap/tidb/issues/376 - testSQL = `DROP TABLE IF EXISTS t1, t2; - create table t1 (c1 int); - create table t2 (c2 int); - insert into t1 values (1), (2); - insert into t2 values (1), (2); - update t1, t2 set t1.c1 = 10, t2.c2 = 2 where t2.c2 = 1;` - tk.MustExec(testSQL) - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 3 Changed: 3 Warnings: 0") - - r = tk.MustQuery("select * from t1") - r.Check(testkit.Rows("10", "10")) - - // test https://github.com/pingcap/tidb/issues/3604 - tk.MustExec("drop table if exists t, t") - tk.MustExec("create table t (a int, b int)") - tk.MustExec("insert into t values(1, 1), (2, 2), (3, 3)") - require.Equal(t, tk.Session().LastMessage(), "Records: 3 Duplicates: 0 Warnings: 0") - tk.MustExec("update t m, t n set m.a = m.a + 1") - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 3 Changed: 3 Warnings: 0") - tk.MustQuery("select * from t").Check(testkit.Rows("2 1", "3 2", "4 3")) - tk.MustExec("update t m, t n set n.a = n.a - 1, n.b = n.b + 1") - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 3 Changed: 3 Warnings: 0") - tk.MustQuery("select * from t").Check(testkit.Rows("1 2", "2 3", "3 4")) -} - -func TestDelete(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - internal.FillData(tk, "delete_test") - - tk.MustExec(`update delete_test set name = "abc" where id = 2;`) - tk.CheckExecResult(1, 0) - - tk.MustExec(`delete from delete_test where id = 2 limit 1;`) - tk.CheckExecResult(1, 0) - - // Test delete with false condition - tk.MustExec(`delete from delete_test where 0;`) - tk.CheckExecResult(0, 0) - - tk.MustExec("insert into delete_test values (2, 'abc')") - tk.MustExec(`delete from delete_test where delete_test.id = 2 limit 1`) - tk.CheckExecResult(1, 0) - - // Select data - tk.MustExec("begin") - rows := tk.MustQuery(`SELECT * from delete_test limit 2;`) - rows.Check(testkit.Rows("1 hello")) - tk.MustExec("commit") - - // Test delete ignore - tk.MustExec("insert into delete_test values (2, 'abc')") - err := tk.ExecToErr("delete from delete_test where id = (select '2a')") - require.Error(t, err) - err = tk.ExecToErr("delete ignore from delete_test where id = (select '2a')") - require.NoError(t, err) - tk.CheckExecResult(1, 0) - r := tk.MustQuery("SHOW WARNINGS;") - r.Check(testkit.Rows("Warning 1292 Truncated incorrect DOUBLE value: '2a'", "Warning 1292 Truncated incorrect DOUBLE value: '2a'")) - - tk.MustExec(`delete from delete_test ;`) - tk.CheckExecResult(1, 0) - - tk.MustExec("create view v as select * from delete_test") - err = tk.ExecToErr("delete from v where name = 'aaa'") - require.EqualError(t, err, core.ErrViewInvalid.GenWithStackByArgs("test", "v").Error()) - tk.MustExec("drop view v") - - tk.MustExec("create sequence seq") - err = tk.ExecToErr("delete from seq") - require.EqualError(t, err, "delete sequence seq is not supported now") - tk.MustExec("drop sequence seq") -} - -func fillDataMultiTable(tk *testkit.TestKit) { - tk.MustExec("use test") - tk.MustExec("drop table if exists t1, t2, t3") - // Create and fill table t1 - tk.MustExec("create table t1 (id int, data int);") - tk.MustExec("insert into t1 values (11, 121), (12, 122), (13, 123);") - tk.CheckExecResult(3, 0) - // Create and fill table t2 - tk.MustExec("create table t2 (id int, data int);") - tk.MustExec("insert into t2 values (11, 221), (22, 222), (23, 223);") - tk.CheckExecResult(3, 0) - // Create and fill table t3 - tk.MustExec("create table t3 (id int, data int);") - tk.MustExec("insert into t3 values (11, 321), (22, 322), (23, 323);") - tk.CheckExecResult(3, 0) -} - -func TestMultiTableDelete(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - fillDataMultiTable(tk) - - tk.MustExec(`delete t1, t2 from t1 inner join t2 inner join t3 where t1.id=t2.id and t2.id=t3.id;`) - tk.CheckExecResult(2, 0) - - // Select data - r := tk.MustQuery("select * from t3") - require.Len(t, r.Rows(), 3) -} - -func TestQualifiedDelete(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 (c1 int, c2 int, index (c1))") - tk.MustExec("create table t2 (c1 int, c2 int)") - tk.MustExec("insert into t1 values (1, 1), (2, 2)") - - // delete with index - tk.MustExec("delete from t1 where t1.c1 = 1") - tk.CheckExecResult(1, 0) - - // delete with no index - tk.MustExec("delete from t1 where t1.c2 = 2") - tk.CheckExecResult(1, 0) - - r := tk.MustQuery("select * from t1") - require.Len(t, r.Rows(), 0) - tk.MustExec("insert into t1 values (1, 3)") - tk.MustExec("delete from t1 as a where a.c1 = 1") - tk.CheckExecResult(1, 0) - - tk.MustExec("insert into t1 values (1, 1), (2, 2)") - tk.MustExec("insert into t2 values (2, 1), (3,1)") - tk.MustExec("delete t1, t2 from t1 join t2 where t1.c1 = t2.c2") - tk.CheckExecResult(3, 0) - - tk.MustExec("insert into t2 values (2, 1), (3,1)") - tk.MustExec("delete a, b from t1 as a join t2 as b where a.c2 = b.c1") - tk.CheckExecResult(2, 0) - - err := tk.ExecToErr("delete t1, t2 from t1 as a join t2 as b where a.c2 = b.c1") - require.Error(t, err) -} - type testCase struct { data []byte expected []string @@ -1407,60 +339,6 @@ func TestLatch(t *testing.T) { tk1.MustExec("commit") } -func TestUpdateSelect(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("create table msg (id varchar(8), b int, status int, primary key (id, b))") - tk.MustExec("insert msg values ('abc', 1, 1)") - tk.MustExec("create table detail (id varchar(8), start varchar(8), status int, index idx_start(start))") - tk.MustExec("insert detail values ('abc', '123', 2)") - tk.MustExec("UPDATE msg SET msg.status = (SELECT detail.status FROM detail WHERE msg.id = detail.id)") - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 1 Changed: 1 Warnings: 0") - tk.MustExec("admin check table msg") -} - -func TestUpdateDelete(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("CREATE TABLE ttt (id bigint(20) NOT NULL, host varchar(30) NOT NULL, PRIMARY KEY (id), UNIQUE KEY i_host (host));") - tk.MustExec("insert into ttt values (8,8),(9,9);") - - tk.MustExec("begin") - tk.MustExec("update ttt set id = 0, host='9' where id = 9 limit 1;") - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 1 Changed: 1 Warnings: 0") - tk.MustExec("delete from ttt where id = 0 limit 1;") - tk.MustQuery("select * from ttt use index (i_host) order by host;").Check(testkit.Rows("8 8")) - tk.MustExec("update ttt set id = 0, host='8' where id = 8 limit 1;") - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 1 Changed: 1 Warnings: 0") - tk.MustExec("delete from ttt where id = 0 limit 1;") - tk.MustQuery("select * from ttt use index (i_host) order by host;").Check(testkit.Rows()) - tk.MustExec("commit") - tk.MustExec("admin check table ttt;") - tk.MustExec("drop table ttt") -} - -func TestUpdateAffectRowCnt(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("create table a(id int auto_increment, a int default null, primary key(id))") - tk.MustExec("insert into a values (1, 1001), (2, 1001), (10001, 1), (3, 1)") - tk.MustExec("update a set id = id*10 where a = 1001") - ctx := tk.Session().(sessionctx.Context) - require.Equal(t, uint64(2), ctx.GetSessionVars().StmtCtx.AffectedRows()) - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 2 Changed: 2 Warnings: 0") - - tk.MustExec("drop table a") - tk.MustExec("create table a ( a bigint, b bigint)") - tk.MustExec("insert into a values (1, 1001), (2, 1001), (10001, 1), (3, 1)") - tk.MustExec("update a set a = a*10 where b = 1001") - ctx = tk.Session().(sessionctx.Context) - require.Equal(t, uint64(2), ctx.GetSessionVars().StmtCtx.AffectedRows()) - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 2 Changed: 2 Warnings: 0") -} - func TestReplaceLog(t *testing.T) { store, domain := testkit.CreateMockStoreAndDomain(t) tk := testkit.NewTestKit(t, store) @@ -1683,524 +561,6 @@ func TestPessimisticDeleteYourWrites(t *testing.T) { session2.MustQuery("select * from x").Check(testkit.Rows("1 2")) } -// TestWriteListPartitionTable2 test for write list partition when the partition expression is complicated and contain generated column. -func TestWriteListPartitionTable2(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") - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("set @@session.tidb_enable_list_partition = ON") - tk.MustExec("drop table if exists t") - tk.MustExec(`create table t (id int, name varchar(10),b int generated always as (length(name)+1) virtual) - partition by list (id*2 + b*b + b*b - b*b*2 - abs(id)) ( - partition p0 values in (3,5,6,9,17), - partition p1 values in (1,2,10,11,19,20), - partition p2 values in (4,12,13,14,18), - partition p3 values in (7,8,15,16,null) - );`) - - // Test add unique index failed. - tk.MustExec("insert into t (id,name) values (1, 'a'),(1,'b')") - err := tk.ExecToErr("alter table t add unique index idx (id,b)") - require.EqualError(t, err, "[kv:1062]Duplicate entry '1-2' for key 't.idx'") - // Test add unique index success. - tk.MustExec("delete from t where name='b'") - tk.MustExec("alter table t add unique index idx (id,b)") - - // --------------------------Test insert--------------------------- - // Test insert 1 partition. - tk.MustExec("delete from t") - tk.MustExec("insert into t (id,name) values (1, 'a'),(2,'b'),(10,'c')") - tk.MustQuery("select id,name from t partition(p1) order by id").Check(testkit.Rows("1 a", "2 b", "10 c")) - // Test insert multi-partitions. - tk.MustExec("delete from t") - tk.MustExec("insert into t (id,name) values (1, 'a'),(3,'c'),(4,'e')") - tk.MustQuery("select id,name from t partition(p0) order by id").Check(testkit.Rows("3 c")) - tk.MustQuery("select id,name from t partition(p1) order by id").Check(testkit.Rows("1 a")) - tk.MustQuery("select id,name from t partition(p2) order by id").Check(testkit.Rows("4 e")) - tk.MustQuery("select id,name from t partition(p3) order by id").Check(testkit.Rows()) - // Test insert on duplicate. - tk.MustExec("insert into t (id,name) values (1, 'd'), (3,'f'),(5,'g') on duplicate key update name='x'") - tk.MustQuery("select id,name from t partition(p0) order by id").Check(testkit.Rows("3 x", "5 g")) - tk.MustQuery("select id,name from t partition(p1) order by id").Check(testkit.Rows("1 x")) - tk.MustQuery("select id,name from t partition(p2) order by id").Check(testkit.Rows("4 e")) - tk.MustQuery("select id,name from t partition(p3) order by id").Check(testkit.Rows()) - // Test insert on duplicate error - err = tk.ExecToErr("insert into t (id,name) values (3, 'a'), (11,'x') on duplicate key update id=id+1") - require.EqualError(t, err, "[kv:1062]Duplicate entry '4-2' for key 't.idx'") - tk.MustQuery("select id,name from t order by id").Check(testkit.Rows("1 x", "3 x", "4 e", "5 g")) - // Test insert ignore with duplicate - tk.MustExec("insert ignore into t (id,name) values (1, 'b'), (5,'a'),(null,'y')") - tk.MustQuery("show warnings").Check(testkit.Rows("Warning 1062 Duplicate entry '1-2' for key 't.idx'", "Warning 1062 Duplicate entry '5-2' for key 't.idx'")) - tk.MustQuery("select id,name from t partition(p0) order by id").Check(testkit.Rows("3 x", "5 g")) - tk.MustQuery("select id,name from t partition(p1) order by id").Check(testkit.Rows("1 x")) - tk.MustQuery("select id,name from t partition(p2) order by id").Check(testkit.Rows("4 e")) - tk.MustQuery("select id,name from t partition(p3) order by id").Check(testkit.Rows(" y")) - // Test insert ignore without duplicate - tk.MustExec("insert ignore into t (id,name) values (15, 'a'),(17,'a')") - tk.MustQuery("select id,name from t partition(p0,p1,p2) order by id").Check(testkit.Rows("1 x", "3 x", "4 e", "5 g", "17 a")) - tk.MustQuery("select id,name from t partition(p3) order by id").Check(testkit.Rows(" y", "15 a")) - // Test insert meet no partition error. - err = tk.ExecToErr("insert into t (id,name) values (100, 'd')") - require.EqualError(t, err, "[table:1526]Table has no partition for value 100") - - // --------------------------Test update--------------------------- - // Test update 1 partition. - tk.MustExec("delete from t") - tk.MustExec("insert into t (id,name) values (1, 'a'),(2,'b'),(3,'c')") - tk.MustExec("update t set name='b' where id=2;") - tk.MustQuery("select id,name from t partition(p1)").Check(testkit.Rows("1 a", "2 b")) - tk.MustExec("update t set name='x' where id in (1,2)") - tk.MustQuery("select id,name from t partition(p1)").Check(testkit.Rows("1 x", "2 x")) - tk.MustExec("update t set name='y' where id < 3") - tk.MustQuery("select id,name from t order by id").Check(testkit.Rows("1 y", "2 y", "3 c")) - // Test update meet duplicate error. - tk.MustGetErrMsg("update t set id=2 where id = 1", "[kv:1062]Duplicate entry '2-2' for key 't.idx'") - tk.MustQuery("select id,name from t order by id").Check(testkit.Rows("1 y", "2 y", "3 c")) - - // Test update multi-partitions - tk.MustExec("update t set name='z' where id in (1,2,3);") - tk.MustQuery("select id,name from t order by id").Check(testkit.Rows("1 z", "2 z", "3 z")) - tk.MustExec("update t set name='a' limit 3") - tk.MustQuery("select id,name from t order by id").Check(testkit.Rows("1 a", "2 a", "3 a")) - tk.MustExec("update t set id=id*10 where id in (1,2)") - tk.MustQuery("select id,name from t order by id").Check(testkit.Rows("3 a", "10 a", "20 a")) - // Test update meet duplicate error. - tk.MustGetErrMsg("update t set id=id+17 where id in (3,10)", "[kv:1062]Duplicate entry '20-2' for key 't.idx'") - tk.MustQuery("select id,name from t order by id").Check(testkit.Rows("3 a", "10 a", "20 a")) - // Test update meet no partition error. - tk.MustGetErrMsg("update t set id=id*2 where id in (3,20)", "[table:1526]Table has no partition for value 40") - tk.MustQuery("select id,name from t order by id").Check(testkit.Rows("3 a", "10 a", "20 a")) - - // --------------------------Test replace--------------------------- - // Test replace 1 partition. - tk.MustExec("delete from t") - tk.MustExec("replace into t (id,name) values (1, 'a'),(2,'b')") - tk.MustQuery("select id,name from t order by id").Check(testkit.Rows("1 a", "2 b")) - // Test replace multi-partitions. - tk.MustExec("replace into t (id,name) values (3, 'c'),(4,'d'),(7,'f')") - tk.MustQuery("select id,name from t partition(p0) order by id").Check(testkit.Rows("3 c")) - tk.MustQuery("select id,name from t partition(p1) order by id").Check(testkit.Rows("1 a", "2 b")) - tk.MustQuery("select id,name from t partition(p2) order by id").Check(testkit.Rows("4 d")) - tk.MustQuery("select id,name from t partition(p3) order by id").Check(testkit.Rows("7 f")) - // Test replace on duplicate. - tk.MustExec("replace into t (id,name) values (1, 'x'),(7,'x')") - tk.MustQuery("select id,name from t order by id").Check(testkit.Rows("1 x", "2 b", "3 c", "4 d", "7 x")) - // Test replace meet no partition error. - tk.MustGetErrMsg("replace into t (id,name) values (10,'x'),(50,'x')", "[table:1526]Table has no partition for value 50") - tk.MustQuery("select id,name from t order by id").Check(testkit.Rows("1 x", "2 b", "3 c", "4 d", "7 x")) - - // --------------------------Test delete--------------------------- - // Test delete 1 partition. - tk.MustExec("delete from t where id = 3") - tk.MustQuery("select id,name from t partition(p0) order by id").Check(testkit.Rows()) - tk.MustExec("delete from t where id in (1,2)") - tk.MustQuery("select id,name from t partition(p1) order by id").Check(testkit.Rows()) - // Test delete multi-partitions. - tk.MustExec("delete from t where id in (4,7,10,11)") - tk.MustQuery("select id,name from t").Check(testkit.Rows()) - tk.MustExec("insert into t (id,name) values (3, 'c'),(4,'d'),(7,'f')") - tk.MustExec("delete from t where id < 10") - tk.MustQuery("select id,name from t").Check(testkit.Rows()) - tk.MustExec("insert into t (id,name) values (3, 'c'),(4,'d'),(7,'f')") - tk.MustExec("delete from t limit 3") - tk.MustQuery("select id,name from t").Check(testkit.Rows()) -} - -func TestWriteListColumnsPartitionTable1(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") - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("set @@session.tidb_enable_list_partition = ON") - - tk.MustExec("drop table if exists t") - tk.MustExec(`create table t (id int, name varchar(10)) partition by list columns (id) ( - partition p0 values in (3,5,6,9,17), - partition p1 values in (1,2,10,11,19,20), - partition p2 values in (4,12,13,14,18), - partition p3 values in (7,8,15,16,null) - );`) - - // Test add unique index failed. - tk.MustExec("insert into t values (1, 'a'),(1,'b')") - tk.MustGetErrMsg("alter table t add unique index idx (id)", "[kv:1062]Duplicate entry '1' for key 't.idx'") - // Test add unique index success. - tk.MustExec("delete from t where name='b'") - tk.MustExec("alter table t add unique index idx (id)") - - // --------------------------Test insert--------------------------- - // Test insert 1 partition. - tk.MustExec("delete from t") - tk.MustExec("insert into t values (1, 'a'),(2,'b'),(10,'c')") - tk.MustQuery("select * from t partition(p1) order by id").Check(testkit.Rows("1 a", "2 b", "10 c")) - // Test insert multi-partitions. - tk.MustExec("delete from t") - tk.MustExec("insert into t values (1, 'a'),(3,'c'),(4,'e')") - tk.MustQuery("select * from t partition(p0) order by id").Check(testkit.Rows("3 c")) - tk.MustQuery("select * from t partition(p1) order by id").Check(testkit.Rows("1 a")) - tk.MustQuery("select * from t partition(p2) order by id").Check(testkit.Rows("4 e")) - tk.MustQuery("select * from t partition(p3) order by id").Check(testkit.Rows()) - // Test insert on duplicate. - tk.MustExec("insert into t values (1, 'd'), (3,'f'),(5,'g') on duplicate key update name='x'") - tk.MustQuery("select * from t partition(p0) order by id").Check(testkit.Rows("3 x", "5 g")) - tk.MustQuery("select * from t partition(p1) order by id").Check(testkit.Rows("1 x")) - tk.MustQuery("select * from t partition(p2) order by id").Check(testkit.Rows("4 e")) - tk.MustQuery("select * from t partition(p3) order by id").Check(testkit.Rows()) - // Test insert on duplicate error - tk.MustGetErrMsg("insert into t values (3, 'a'), (11,'x') on duplicate key update id=id+1", "[kv:1062]Duplicate entry '4' for key 't.idx'") - tk.MustQuery("select * from t order by id").Check(testkit.Rows("1 x", "3 x", "4 e", "5 g")) - // Test insert ignore with duplicate - tk.MustExec("insert ignore into t values (1, 'b'), (5,'a'),(null,'y')") - tk.MustQuery("show warnings").Check(testkit.Rows("Warning 1062 Duplicate entry '1' for key 't.idx'", "Warning 1062 Duplicate entry '5' for key 't.idx'")) - tk.MustQuery("select * from t partition(p0) order by id").Check(testkit.Rows("3 x", "5 g")) - tk.MustQuery("select * from t partition(p1) order by id").Check(testkit.Rows("1 x")) - tk.MustQuery("select * from t partition(p2) order by id").Check(testkit.Rows("4 e")) - tk.MustQuery("select * from t partition(p3) order by id").Check(testkit.Rows(" y")) - // Test insert ignore without duplicate - tk.MustExec("insert ignore into t values (15, 'a'),(17,'a')") - tk.MustQuery("select * from t partition(p0,p1,p2) order by id").Check(testkit.Rows("1 x", "3 x", "4 e", "5 g", "17 a")) - tk.MustQuery("select * from t partition(p3) order by id").Check(testkit.Rows(" y", "15 a")) - // Test insert meet no partition error. - tk.MustGetErrMsg("insert into t values (100, 'd')", "[table:1526]Table has no partition for value from column_list") - - // --------------------------Test update--------------------------- - // Test update 1 partition. - tk.MustExec("delete from t") - tk.MustExec("insert into t values (1, 'a'),(2,'b'),(3,'c')") - tk.MustExec("update t set name='b' where id=2;") - tk.MustQuery("select * from t partition(p1)").Check(testkit.Rows("1 a", "2 b")) - tk.MustExec("update t set name='x' where id in (1,2)") - tk.MustQuery("select * from t partition(p1)").Check(testkit.Rows("1 x", "2 x")) - tk.MustExec("update t set name='y' where id < 3") - tk.MustQuery("select * from t order by id").Check(testkit.Rows("1 y", "2 y", "3 c")) - // Test update meet duplicate error. - tk.MustGetErrMsg("update t set id=2 where id = 1", "[kv:1062]Duplicate entry '2' for key 't.idx'") - tk.MustQuery("select * from t order by id").Check(testkit.Rows("1 y", "2 y", "3 c")) - - // Test update multi-partitions - tk.MustExec("update t set name='z' where id in (1,2,3);") - tk.MustQuery("select * from t order by id").Check(testkit.Rows("1 z", "2 z", "3 z")) - tk.MustExec("update t set name='a' limit 3") - tk.MustQuery("select * from t order by id").Check(testkit.Rows("1 a", "2 a", "3 a")) - tk.MustExec("update t set id=id*10 where id in (1,2)") - tk.MustQuery("select * from t order by id").Check(testkit.Rows("3 a", "10 a", "20 a")) - // Test update meet duplicate error. - tk.MustGetErrMsg("update t set id=id+17 where id in (3,10)", "[kv:1062]Duplicate entry '20' for key 't.idx'") - tk.MustQuery("select * from t order by id").Check(testkit.Rows("3 a", "10 a", "20 a")) - // Test update meet no partition error. - tk.MustGetErrMsg("update t set id=id*2 where id in (3,20)", "[table:1526]Table has no partition for value from column_list") - tk.MustQuery("select * from t order by id").Check(testkit.Rows("3 a", "10 a", "20 a")) - - // --------------------------Test replace--------------------------- - // Test replace 1 partition. - tk.MustExec("delete from t") - tk.MustExec("replace into t values (1, 'a'),(2,'b')") - tk.MustQuery("select * from t order by id").Check(testkit.Rows("1 a", "2 b")) - // Test replace multi-partitions. - tk.MustExec("replace into t values (3, 'c'),(4,'d'),(7,'f')") - tk.MustQuery("select * from t partition(p0) order by id").Check(testkit.Rows("3 c")) - tk.MustQuery("select * from t partition(p1) order by id").Check(testkit.Rows("1 a", "2 b")) - tk.MustQuery("select * from t partition(p2) order by id").Check(testkit.Rows("4 d")) - tk.MustQuery("select * from t partition(p3) order by id").Check(testkit.Rows("7 f")) - // Test replace on duplicate. - tk.MustExec("replace into t values (1, 'x'),(7,'x')") - tk.MustQuery("select * from t order by id").Check(testkit.Rows("1 x", "2 b", "3 c", "4 d", "7 x")) - // Test replace meet no partition error. - tk.MustGetErrMsg("replace into t values (10,'x'),(100,'x')", "[table:1526]Table has no partition for value from column_list") - tk.MustQuery("select * from t order by id").Check(testkit.Rows("1 x", "2 b", "3 c", "4 d", "7 x")) - - // --------------------------Test delete--------------------------- - // Test delete 1 partition. - tk.MustExec("delete from t where id = 3") - tk.MustQuery("select * from t partition(p0) order by id").Check(testkit.Rows()) - tk.MustExec("delete from t where id in (1,2)") - tk.MustQuery("select * from t partition(p1) order by id").Check(testkit.Rows()) - // Test delete multi-partitions. - tk.MustExec("delete from t where id in (4,7,10,11)") - tk.MustQuery("select * from t").Check(testkit.Rows()) - tk.MustExec("insert into t values (3, 'c'),(4,'d'),(7,'f')") - tk.MustExec("delete from t where id < 10") - tk.MustQuery("select * from t").Check(testkit.Rows()) - tk.MustExec("insert into t values (3, 'c'),(4,'d'),(7,'f')") - tk.MustExec("delete from t limit 3") - tk.MustQuery("select * from t").Check(testkit.Rows()) -} - -func TestUpdate(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") - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - internal.FillData(tk, "update_test") - - updateStr := `UPDATE update_test SET name = "abc" where id > 0;` - tk.MustExec(updateStr) - tk.CheckExecResult(2, 0) - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 2 Changed: 2 Warnings: 0") - - // select data - tk.MustExec("begin") - r := tk.MustQuery(`SELECT * from update_test limit 2;`) - r.Check(testkit.Rows("1 abc", "2 abc")) - tk.MustExec("commit") - - tk.MustExec(`UPDATE update_test SET name = "foo"`) - tk.CheckExecResult(2, 0) - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 2 Changed: 2 Warnings: 0") - - // table option is auto-increment - tk.MustExec("begin") - tk.MustExec("drop table if exists update_test;") - tk.MustExec("commit") - tk.MustExec("begin") - tk.MustExec("create table update_test(id int not null auto_increment, name varchar(255), primary key(id))") - tk.MustExec("insert into update_test(name) values ('aa')") - tk.MustExec("update update_test set id = 8 where name = 'aa'") - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 1 Changed: 1 Warnings: 0") - tk.MustExec("insert into update_test(name) values ('bb')") - tk.MustExec("commit") - tk.MustExec("begin") - r = tk.MustQuery("select * from update_test;") - r.Check(testkit.Rows("8 aa", "9 bb")) - tk.MustExec("commit") - - tk.MustExec("begin") - tk.MustExec("drop table if exists update_test;") - tk.MustExec("commit") - tk.MustExec("begin") - tk.MustExec("create table update_test(id int not null auto_increment, name varchar(255), index(id))") - tk.MustExec("insert into update_test(name) values ('aa')") - err := tk.ExecToErr("update update_test set id = null where name = 'aa'") - require.EqualError(t, err, "[table:1048]Column 'id' cannot be null") - - tk.MustExec("drop table update_test") - tk.MustExec("create table update_test(id int)") - tk.MustExec("begin") - tk.MustExec("insert into update_test(id) values (1)") - tk.MustExec("update update_test set id = 2 where id = 1 limit 1") - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 1 Changed: 1 Warnings: 0") - r = tk.MustQuery("select * from update_test;") - r.Check(testkit.Rows("2")) - tk.MustExec("commit") - - // Test that in a transaction, when a constraint failed in an update statement, the record is not inserted. - tk.MustExec("create table update_unique (id int primary key, name int unique)") - tk.MustExec("insert update_unique values (1, 1), (2, 2);") - tk.MustExec("begin") - err = tk.ExecToErr("update update_unique set name = 1 where id = 2") - require.Error(t, err) - tk.MustExec("commit") - tk.MustQuery("select * from update_unique").Check(testkit.Rows("1 1", "2 2")) - - // test update ignore for pimary key - tk.MustExec("drop table if exists t;") - tk.MustExec("create table t(a bigint, primary key (a));") - tk.MustExec("insert into t values (1)") - tk.MustExec("insert into t values (2)") - err = tk.ExecToErr("update ignore t set a = 1 where a = 2;") - require.NoError(t, err) - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 1 Changed: 0 Warnings: 1") - r = tk.MustQuery("SHOW WARNINGS;") - r.Check(testkit.Rows("Warning 1062 Duplicate entry '1' for key 't.PRIMARY'")) - tk.MustQuery("select * from t").Check(testkit.Rows("1", "2")) - - // test update ignore for truncate as warning - err = tk.ExecToErr("update ignore t set a = 1 where a = (select '2a')") - require.NoError(t, err) - r = tk.MustQuery("SHOW WARNINGS;") - r.Check(testkit.Rows("Warning 1292 Truncated incorrect DOUBLE value: '2a'", "Warning 1292 Truncated incorrect DOUBLE value: '2a'", "Warning 1062 Duplicate entry '1' for key 't.PRIMARY'")) - - tk.MustExec("update ignore t set a = 42 where a = 2;") - tk.MustQuery("select * from t").Check(testkit.Rows("1", "42")) - - // test update ignore for unique key - tk.MustExec("drop table if exists t;") - tk.MustExec("create table t(a bigint, unique key I_uniq (a));") - tk.MustExec("insert into t values (1)") - tk.MustExec("insert into t values (2)") - err = tk.ExecToErr("update ignore t set a = 1 where a = 2;") - require.NoError(t, err) - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 1 Changed: 0 Warnings: 1") - r = tk.MustQuery("SHOW WARNINGS;") - r.Check(testkit.Rows("Warning 1062 Duplicate entry '1' for key 't.I_uniq'")) - tk.MustQuery("select * from t").Check(testkit.Rows("1", "2")) - - // test issue21965 - tk.MustExec("drop table if exists t;") - tk.MustExec("set @@session.tidb_enable_list_partition = ON") - tk.MustExec("create table t (a int) partition by list (a) (partition p0 values in (0,1));") - tk.MustExec("insert ignore into t values (1);") - tk.MustExec("update ignore t set a=2 where a=1;") - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 1 Changed: 0 Warnings: 0") - tk.MustExec("drop table if exists t;") - tk.MustExec("create table t (a int key) partition by list (a) (partition p0 values in (0,1));") - tk.MustExec("insert ignore into t values (1);") - tk.MustExec("update ignore t set a=2 where a=1;") - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 1 Changed: 0 Warnings: 0") - - tk.MustExec("drop table if exists t") - tk.MustExec("create table t(id integer auto_increment, t1 datetime, t2 datetime, primary key (id))") - tk.MustExec("insert into t(t1, t2) values('2000-10-01 01:01:01', '2017-01-01 10:10:10')") - tk.MustQuery("select * from t").Check(testkit.Rows("1 2000-10-01 01:01:01 2017-01-01 10:10:10")) - tk.MustExec("update t set t1 = '2017-10-01 10:10:11', t2 = date_add(t1, INTERVAL 10 MINUTE) where id = 1") - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 1 Changed: 1 Warnings: 0") - tk.MustQuery("select * from t").Check(testkit.Rows("1 2017-10-01 10:10:11 2000-10-01 01:11:01")) - - // for issue #5132 - tk.MustExec("CREATE TABLE `tt1` (" + - "`a` int(11) NOT NULL," + - "`b` varchar(32) DEFAULT NULL," + - "`c` varchar(32) DEFAULT NULL," + - "PRIMARY KEY (`a`)," + - "UNIQUE KEY `b_idx` (`b`)" + - ") ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;") - tk.MustExec("insert into tt1 values(1, 'a', 'a');") - tk.MustExec("insert into tt1 values(2, 'd', 'b');") - r = tk.MustQuery("select * from tt1;") - r.Check(testkit.Rows("1 a a", "2 d b")) - tk.MustExec("update tt1 set a=5 where c='b';") - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 1 Changed: 1 Warnings: 0") - r = tk.MustQuery("select * from tt1;") - r.Check(testkit.Rows("1 a a", "5 d b")) - - // Automatic Updating for TIMESTAMP - tk.MustExec("CREATE TABLE `tsup` (" + - "`a` int," + - "`ts` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP," + - "KEY `idx` (`ts`)" + - ");") - tk.MustExec("set @orig_sql_mode=@@sql_mode; set @@sql_mode='';") - tk.MustExec("insert into tsup values(1, '0000-00-00 00:00:00');") - tk.MustExec("update tsup set a=5;") - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 1 Changed: 1 Warnings: 0") - r1 := tk.MustQuery("select ts from tsup use index (idx);") - r2 := tk.MustQuery("select ts from tsup;") - r1.Check(r2.Rows()) - tk.MustExec("update tsup set ts='2019-01-01';") - tk.MustQuery("select ts from tsup;").Check(testkit.Rows("2019-01-01 00:00:00")) - tk.MustExec("set @@sql_mode=@orig_sql_mode;") - - // issue 5532 - tk.MustExec("create table decimals (a decimal(20, 0) not null)") - tk.MustExec("insert into decimals values (201)") - // A warning rather than data truncated error. - tk.MustExec("update decimals set a = a + 1.23;") - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 1 Changed: 1 Warnings: 1") - tk.MustQuery("show warnings").Check(testkit.Rows("Warning 1292 Truncated incorrect DECIMAL value: '202.23'")) - r = tk.MustQuery("select * from decimals") - r.Check(testkit.Rows("202")) - - tk.MustExec("drop table t") - tk.MustExec("CREATE TABLE `t` ( `c1` year DEFAULT NULL, `c2` year DEFAULT NULL, `c3` date DEFAULT NULL, `c4` datetime DEFAULT NULL, KEY `idx` (`c1`,`c2`))") - err = tk.ExecToErr("UPDATE t SET c2=16777215 WHERE c1>= -8388608 AND c1 < -9 ORDER BY c1 LIMIT 2") - require.NoError(t, err) - - tk.MustGetErrCode("update (select * from t) t set c1 = 1111111", mysql.ErrNonUpdatableTable) - - // test update ignore for bad null error - tk.MustExec("drop table if exists t;") - tk.MustExec(`create table t (i int not null default 10)`) - tk.MustExec("insert into t values (1)") - tk.MustExec("update ignore t set i = null;") - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 1 Changed: 1 Warnings: 1") - r = tk.MustQuery("SHOW WARNINGS;") - r.Check(testkit.Rows("Warning 1048 Column 'i' cannot be null")) - tk.MustQuery("select * from t").Check(testkit.Rows("0")) - - // issue 7237, update subquery table should be forbidden - tk.MustExec("drop table t") - tk.MustExec("create table t (k int, v int)") - err = tk.ExecToErr("update t, (select * from t) as b set b.k = t.k") - require.EqualError(t, err, "[planner:1288]The target table b of the UPDATE is not updatable") - tk.MustExec("update t, (select * from t) as b set t.k = b.k") - - // issue 8045 - tk.MustExec("drop table if exists t1") - tk.MustExec(`CREATE TABLE t1 (c1 float)`) - tk.MustExec("INSERT INTO t1 SET c1 = 1") - tk.MustExec("UPDATE t1 SET c1 = 1.2 WHERE c1=1;") - require.Equal(t, tk.Session().LastMessage(), "Rows matched: 1 Changed: 1 Warnings: 0") - - // issue 8119 - tk.MustExec("drop table if exists t;") - tk.MustExec("create table t (c1 float(1,1));") - tk.MustExec("insert into t values (0.0);") - err = tk.ExecToErr("update t set c1 = 2.0;") - require.True(t, types.ErrWarnDataOutOfRange.Equal(err)) - - tk.MustExec("drop table if exists t") - tk.MustExec("create table t(a datetime not null, b datetime)") - tk.MustExec("insert into t value('1999-12-12', '1999-12-13')") - tk.MustExec("set @orig_sql_mode=@@sql_mode; set @@sql_mode='';") - tk.MustQuery("select * from t").Check(testkit.Rows("1999-12-12 00:00:00 1999-12-13 00:00:00")) - tk.MustExec("update t set a = ''") - tk.MustQuery("select * from t").Check(testkit.Rows("0000-00-00 00:00:00 1999-12-13 00:00:00")) - tk.MustExec("update t set b = ''") - tk.MustQuery("select * from t").Check(testkit.Rows("0000-00-00 00:00:00 0000-00-00 00:00:00")) - tk.MustExec("set @@sql_mode=@orig_sql_mode;") - - tk.MustExec("create view v as select * from t") - err = tk.ExecToErr("update v set a = '2000-11-11'") - require.EqualError(t, err, core.ErrViewInvalid.GenWithStackByArgs("test", "v").Error()) - tk.MustExec("drop view v") - - tk.MustExec("create sequence seq") - tk.MustGetErrCode("update seq set minvalue=1", mysql.ErrBadField) - tk.MustExec("drop sequence seq") - - tk.MustExec("drop table if exists t1, t2") - tk.MustExec("create table t1(a int, b int, c int, d int, e int, index idx(a))") - tk.MustExec("create table t2(a int, b int, c int)") - tk.MustExec("update t1 join t2 on t1.a=t2.a set t1.a=1 where t2.b=1 and t2.c=2") - - // Assign `DEFAULT` in `UPDATE` statement - tk.MustExec("drop table if exists t1, t2;") - tk.MustExec("create table t1 (a int default 1, b int default 2);") - tk.MustExec("insert into t1 values (10, 10), (20, 20);") - tk.MustExec("update t1 set a=default where b=10;") - tk.MustQuery("select * from t1;").Check(testkit.Rows("1 10", "20 20")) - tk.MustExec("update t1 set a=30, b=default where a=20;") - tk.MustQuery("select * from t1;").Check(testkit.Rows("1 10", "30 2")) - tk.MustExec("update t1 set a=default, b=default where a=30;") - tk.MustQuery("select * from t1;").Check(testkit.Rows("1 10", "1 2")) - tk.MustExec("insert into t1 values (40, 40)") - tk.MustExec("update t1 set a=default, b=default") - tk.MustQuery("select * from t1;").Check(testkit.Rows("1 2", "1 2", "1 2")) - tk.MustExec("update t1 set a=default(b), b=default(a)") - tk.MustQuery("select * from t1;").Check(testkit.Rows("2 1", "2 1", "2 1")) - // With generated columns - tk.MustExec("create table t2 (a int default 1, b int generated always as (-a) virtual, c int generated always as (-a) stored);") - tk.MustExec("insert into t2 values (10, default, default), (20, default, default)") - tk.MustExec("update t2 set b=default;") - tk.MustQuery("select * from t2;").Check(testkit.Rows("10 -10 -10", "20 -20 -20")) - tk.MustExec("update t2 set a=30, b=default where a=10;") - tk.MustQuery("select * from t2;").Check(testkit.Rows("30 -30 -30", "20 -20 -20")) - tk.MustExec("update t2 set c=default, a=40 where c=-20;") - tk.MustQuery("select * from t2;").Check(testkit.Rows("30 -30 -30", "40 -40 -40")) - tk.MustExec("update t2 set a=default, b=default, c=default where b=-30;") - tk.MustQuery("select * from t2;").Check(testkit.Rows("1 -1 -1", "40 -40 -40")) - tk.MustExec("update t2 set a=default(a), b=default, c=default;") - tk.MustQuery("select * from t2;").Check(testkit.Rows("1 -1 -1", "1 -1 -1")) - // Same as in MySQL 8.0.27, but still weird behavior: a=default(b) => NULL - tk.MustExec("update t2 set a=default(b), b=default, c=default;") - tk.MustQuery("select * from t2;").Check(testkit.Rows(" ", " ")) - tk.MustGetErrCode("update t2 set b=default(a);", mysql.ErrBadGeneratedColumn) - tk.MustExec("update t2 set a=default(a), c=default(c)") - tk.MustQuery("select * from t2;").Check(testkit.Rows("1 -1 -1", "1 -1 -1")) - // Same as in MySQL 8.0.27, but still weird behavior: a=default(b) => NULL - tk.MustExec("update t2 set a=default(b), b=default(b)") - tk.MustQuery("select * from t2;").Check(testkit.Rows(" ", " ")) - tk.MustExec("update t2 set a=default(a), c=default(c)") - tk.MustQuery("select * from t2;").Check(testkit.Rows("1 -1 -1", "1 -1 -1")) - // Allowed in MySQL, but should probably not be allowed. - tk.MustGetErrCode("update t2 set a=default(a), c=default(a)", mysql.ErrBadGeneratedColumn) - tk.MustExec("drop table t1, t2") -} - func TestListColumnsPartitionWithGlobalIndex(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") diff --git a/pkg/executor/tikv_regions_peers_table_test.go b/pkg/executor/tikv_regions_peers_table_test.go index 4994f9b73fe69..dd8ffb5757cca 100644 --- a/pkg/executor/tikv_regions_peers_table_test.go +++ b/pkg/executor/tikv_regions_peers_table_test.go @@ -26,39 +26,41 @@ import ( "github.com/gorilla/mux" "github.com/pingcap/fn" "github.com/pingcap/tidb/pkg/store/helper" + "github.com/pingcap/tidb/pkg/store/mockstore" "github.com/pingcap/tidb/pkg/testkit" - "github.com/pingcap/tidb/pkg/util/pdapi" "github.com/stretchr/testify/require" + "github.com/tikv/client-go/v2/tikv" + pd "github.com/tikv/pd/client/http" ) -var regionsInfo = map[uint64]helper.RegionInfo{ +var regionsInfo = map[uint64]pd.RegionInfo{ 1: { ID: 1, - Peers: []helper.RegionPeer{{ID: 11, StoreID: 1, IsLearner: false}, {ID: 12, StoreID: 2, IsLearner: false}, {ID: 13, StoreID: 3, IsLearner: false}}, - Leader: helper.RegionPeer{ID: 11, StoreID: 1, IsLearner: false}, + Peers: []pd.RegionPeer{{ID: 11, StoreID: 1, IsLearner: false}, {ID: 12, StoreID: 2, IsLearner: false}, {ID: 13, StoreID: 3, IsLearner: false}}, + Leader: pd.RegionPeer{ID: 11, StoreID: 1, IsLearner: false}, }, 2: { ID: 2, - Peers: []helper.RegionPeer{{ID: 21, StoreID: 1, IsLearner: false}, {ID: 22, StoreID: 2, IsLearner: false}, {ID: 23, StoreID: 3, IsLearner: false}}, - Leader: helper.RegionPeer{ID: 22, StoreID: 2, IsLearner: false}, + Peers: []pd.RegionPeer{{ID: 21, StoreID: 1, IsLearner: false}, {ID: 22, StoreID: 2, IsLearner: false}, {ID: 23, StoreID: 3, IsLearner: false}}, + Leader: pd.RegionPeer{ID: 22, StoreID: 2, IsLearner: false}, }, 3: { ID: 3, - Peers: []helper.RegionPeer{{ID: 31, StoreID: 1, IsLearner: false}, {ID: 32, StoreID: 2, IsLearner: false}, {ID: 33, StoreID: 3, IsLearner: false}}, - Leader: helper.RegionPeer{ID: 33, StoreID: 3, IsLearner: false}, + Peers: []pd.RegionPeer{{ID: 31, StoreID: 1, IsLearner: false}, {ID: 32, StoreID: 2, IsLearner: false}, {ID: 33, StoreID: 3, IsLearner: false}}, + Leader: pd.RegionPeer{ID: 33, StoreID: 3, IsLearner: false}, }, } -var storeRegionsInfo = &helper.RegionsInfo{ +var storeRegionsInfo = &pd.RegionsInfo{ Count: 3, - Regions: []helper.RegionInfo{ + Regions: []pd.RegionInfo{ regionsInfo[1], regionsInfo[2], regionsInfo[3], }, } -var storesRegionsInfo = map[uint64]*helper.RegionsInfo{ +var storesRegionsInfo = map[uint64]*pd.RegionsInfo{ 1: storeRegionsInfo, 2: storeRegionsInfo, 3: storeRegionsInfo, @@ -92,7 +94,7 @@ func TestTikvRegionPeers(t *testing.T) { // mock store stats stat mockAddr := strings.TrimPrefix(server.URL, "http://") // mock PD API - router.Handle(pdapi.Status, fn.Wrap(func() (interface{}, error) { + router.Handle(pd.Status, fn.Wrap(func() (interface{}, error) { return struct { Version string `json:"version"` GitHash string `json:"git_hash"` @@ -104,12 +106,13 @@ func TestTikvRegionPeers(t *testing.T) { }, nil })) // mock get regionsInfo by store id - router.HandleFunc(pdapi.StoreRegions+"/"+"{id}", storesRegionsInfoHandler) + router.HandleFunc(pd.RegionsByStoreIDPrefix+"/"+"{id}", storesRegionsInfoHandler) // mock get regionInfo by region id - router.HandleFunc(pdapi.RegionByID+"/"+"{id}", regionsInfoHandler) + router.HandleFunc(pd.RegionByIDPrefix+"/"+"{id}", regionsInfoHandler) defer server.Close() - store := testkit.CreateMockStore(t) + store := testkit.CreateMockStore(t, + mockstore.WithTiKVOptions(tikv.WithPDHTTPClient([]string{mockAddr}))) store = &mockStore{ store.(helper.Storage), diff --git a/pkg/executor/union_scan.go b/pkg/executor/union_scan.go index 947e7c9589068..e32112dbe443f 100644 --- a/pkg/executor/union_scan.go +++ b/pkg/executor/union_scan.go @@ -153,8 +153,9 @@ func (us *UnionScanExec) Next(ctx context.Context, req *chunk.Chunk) error { } mutableRow.SetDatums(row...) + sctx := us.Ctx() for _, idx := range us.virtualColumnIndex { - datum, err := us.Schema().Columns[idx].EvalVirtualColumn(mutableRow.ToRow()) + datum, err := us.Schema().Columns[idx].EvalVirtualColumn(sctx, mutableRow.ToRow()) if err != nil { return err } diff --git a/pkg/executor/union_scan_test.go b/pkg/executor/union_scan_test.go index a157a2fea0ee2..08478e87b5aee 100644 --- a/pkg/executor/union_scan_test.go +++ b/pkg/executor/union_scan_test.go @@ -318,6 +318,7 @@ c6 datetime);`) tk.MustQuery("select * from t_us where c1 = '12345'").Check(testkit.Rows()) } b.StopTimer() + tk.MustExec("rollback") } func BenchmarkUnionScanIndexReadDescRead(b *testing.B) { @@ -337,9 +338,10 @@ func BenchmarkUnionScanIndexReadDescRead(b *testing.B) { b.ResetTimer() for i := 0; i < b.N; i++ { // indexReader - tk.MustExec("select b from t use index(k) where b > 50 order by b desc") + tk.MustQuery("select b from t use index(k) where b > 50 order by b desc") } b.StopTimer() + tk.MustExec("rollback") } func BenchmarkUnionScanTableReadDescRead(b *testing.B) { @@ -359,9 +361,10 @@ func BenchmarkUnionScanTableReadDescRead(b *testing.B) { b.ResetTimer() for i := 0; i < b.N; i++ { // tableReader - tk.MustExec("select * from t where a > 50 order by a desc") + tk.MustQuery("select * from t where a > 50 order by a desc") } b.StopTimer() + tk.MustExec("rollback") } func BenchmarkUnionScanIndexLookUpDescRead(b *testing.B) { @@ -381,9 +384,10 @@ func BenchmarkUnionScanIndexLookUpDescRead(b *testing.B) { b.ResetTimer() for i := 0; i < b.N; i++ { // indexLookUp - tk.MustExec("select * from t use index(k) where b > 50 order by b desc") + tk.MustQuery("select * from t use index(k) where b > 50 order by b desc") } b.StopTimer() + tk.MustExec("rollback") } func TestBenchDaily(t *testing.T) { diff --git a/pkg/executor/update.go b/pkg/executor/update.go index 637498bdd3acf..01a995d45f5aa 100644 --- a/pkg/executor/update.go +++ b/pkg/executor/update.go @@ -350,7 +350,7 @@ func (e *UpdateExec) fastComposeNewRow(rowIdx int, oldRow []types.Datum, cols [] continue } con := assign.Expr.(*expression.Constant) - val, err := con.Eval(emptyRow) + val, err := con.Eval(e.Ctx(), emptyRow) if err = e.handleErr(assign.ColName, rowIdx, err); err != nil { return nil, err } @@ -377,7 +377,7 @@ func (e *UpdateExec) composeNewRow(rowIdx int, oldRow []types.Datum, cols []*tab if tblIdx >= 0 && !e.tableUpdatable[tblIdx] { continue } - val, err := assign.Expr.Eval(e.evalBuffer.ToRow()) + val, err := assign.Expr.Eval(e.Ctx(), e.evalBuffer.ToRow()) if err != nil { return nil, err } @@ -406,7 +406,7 @@ func (e *UpdateExec) composeGeneratedColumns(rowIdx int, newRowData []types.Datu if tblIdx >= 0 && !e.tableUpdatable[tblIdx] { continue } - val, err := assign.Expr.Eval(e.evalBuffer.ToRow()) + val, err := assign.Expr.Eval(e.Ctx(), e.evalBuffer.ToRow()) if err = e.handleErr(assign.ColName, rowIdx, err); err != nil { return nil, err } diff --git a/pkg/executor/update_test.go b/pkg/executor/update_test.go index 03586f8225c84..8c17c045808be 100644 --- a/pkg/executor/update_test.go +++ b/pkg/executor/update_test.go @@ -21,7 +21,7 @@ import ( "time" "github.com/pingcap/tidb/pkg/kv" - "github.com/pingcap/tidb/pkg/session" + sessiontypes "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/testkit" "github.com/stretchr/testify/require" @@ -50,7 +50,7 @@ func testUpdatePKLazyCheck(t *testing.T, tk *testkit.TestKit, clusteredIndex var tk.MustExec("commit") } -func getPresumeExistsCount(t *testing.T, se session.Session) int { +func getPresumeExistsCount(t *testing.T, se sessiontypes.Session) int { txn, err := se.Txn(false) require.NoError(t, err) buf := txn.GetMemBuffer() @@ -69,32 +69,6 @@ func getPresumeExistsCount(t *testing.T, se session.Session) int { return presumeNotExistsCnt } -func TestIssue21447(t *testing.T) { - store := testkit.CreateMockStore(t) - - tk1, tk2 := testkit.NewTestKit(t, store), testkit.NewTestKit(t, store) - tk1.MustExec("use test") - tk2.MustExec("use test") - - tk1.MustExec("drop table if exists t1") - tk1.MustExec("create table t1(id int primary key, name varchar(40))") - tk1.MustExec("insert into t1 values(1, 'abc')") - - tk1.MustExec("begin pessimistic") - tk2.MustExec("begin pessimistic") - tk2.MustExec("update t1 set name='xyz' where id=1") - tk2.CheckExecResult(1, 0) - tk2.MustQuery("select * from t1 where id = 1").Check(testkit.Rows("1 xyz")) - tk2.MustExec("commit") - tk1.MustExec("update t1 set name='xyz' where id=1") - tk1.CheckExecResult(0, 0) - tk1.MustQuery("select * from t1 where id = 1").Check(testkit.Rows("1 abc")) - tk1.MustQuery("select * from t1 where id = 1 for update").Check(testkit.Rows("1 xyz")) - tk1.MustQuery("select * from t1 where id in (1, 2)").Check(testkit.Rows("1 abc")) - tk1.MustQuery("select * from t1 where id in (1, 2) for update").Check(testkit.Rows("1 xyz")) - tk1.MustExec("commit") -} - func TestLockUnchangedUniqueKeys(t *testing.T) { store := testkit.CreateMockStore(t) diff --git a/pkg/executor/write.go b/pkg/executor/write.go index 28733152208ea..f609110d56b29 100644 --- a/pkg/executor/write.go +++ b/pkg/executor/write.go @@ -268,7 +268,7 @@ func addUnchangedKeysForLockByRow( return count, err } unchangedUniqueKey, _, err := tablecodec.GenIndexKey( - stmtCtx, + stmtCtx.TimeZone(), idx.TableMeta(), meta, physicalID, @@ -276,6 +276,7 @@ func addUnchangedKeysForLockByRow( h, nil, ) + err = stmtCtx.HandleError(err) if err != nil { return count, err } diff --git a/pkg/expression/BUILD.bazel b/pkg/expression/BUILD.bazel index 90b1d64409fbd..f368a6b98b823 100644 --- a/pkg/expression/BUILD.bazel +++ b/pkg/expression/BUILD.bazel @@ -97,10 +97,10 @@ go_library( "//pkg/util/encrypt", "//pkg/util/generatedexpr", "//pkg/util/hack", + "//pkg/util/intest", "//pkg/util/intset", "//pkg/util/logutil", "//pkg/util/mathutil", - "//pkg/util/mock", "//pkg/util/parser", "//pkg/util/password-validation", "//pkg/util/plancodec", diff --git a/pkg/expression/aggregation/agg_to_pb.go b/pkg/expression/aggregation/agg_to_pb.go index 213dc72d5db65..a3dd7855fc12f 100644 --- a/pkg/expression/aggregation/agg_to_pb.go +++ b/pkg/expression/aggregation/agg_to_pb.go @@ -101,7 +101,7 @@ func (desc *baseFuncDesc) GetTiPBExpr(tryWindowDesc bool) (tp tipb.ExprType) { // AggFuncToPBExpr converts aggregate function to pb. func AggFuncToPBExpr(sctx sessionctx.Context, client kv.Client, aggFunc *AggFuncDesc, storeType kv.StoreType) (*tipb.Expr, error) { - pc := expression.NewPBConverter(client, sctx.GetSessionVars().StmtCtx) + pc := expression.NewPBConverter(client, sctx) tp := aggFunc.GetTiPBExpr(false) if !client.IsRequestTypeSupported(kv.ReqTypeSelect, int64(tp)) { return nil, errors.New("select request is not supported by client") @@ -122,9 +122,8 @@ func AggFuncToPBExpr(sctx sessionctx.Context, client kv.Client, aggFunc *AggFunc if tp == tipb.ExprType_GroupConcat { orderBy := make([]*tipb.ByItem, 0, len(aggFunc.OrderByItems)) - sc := sctx.GetSessionVars().StmtCtx for _, arg := range aggFunc.OrderByItems { - pbArg := expression.SortByItemToPB(sc, client, arg.Expr, arg.Desc) + pbArg := expression.SortByItemToPB(sctx, client, arg.Expr, arg.Desc) if pbArg == nil { return nil, errors.New(aggFunc.String() + " can't be converted to PB.") } @@ -214,7 +213,7 @@ func PBExprToAggFuncDesc(ctx sessionctx.Context, aggFunc *tipb.Expr, fieldTps [] return nil, errors.Errorf("unknown aggregation function type: %v", aggFunc.Tp) } - args, err := expression.PBToExprs(aggFunc.Children, fieldTps, ctx.GetSessionVars().StmtCtx) + args, err := expression.PBToExprs(ctx, aggFunc.Children, fieldTps) if err != nil { return nil, err } diff --git a/pkg/expression/aggregation/aggregation.go b/pkg/expression/aggregation/aggregation.go index e417b1e71cc78..a64a73a6ebdb4 100644 --- a/pkg/expression/aggregation/aggregation.go +++ b/pkg/expression/aggregation/aggregation.go @@ -23,6 +23,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/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/chunk" @@ -43,17 +44,17 @@ type Aggregation interface { GetResult(evalCtx *AggEvaluateContext) types.Datum // CreateContext creates a new AggEvaluateContext for the aggregation function. - CreateContext(sc *stmtctx.StatementContext) *AggEvaluateContext + CreateContext(ctx sessionctx.Context) *AggEvaluateContext // ResetContext resets the content of the evaluate context. - ResetContext(sc *stmtctx.StatementContext, evalCtx *AggEvaluateContext) + ResetContext(ctx sessionctx.Context, evalCtx *AggEvaluateContext) } // NewDistAggFunc creates new Aggregate function for mock tikv. -func NewDistAggFunc(expr *tipb.Expr, fieldTps []*types.FieldType, sc *stmtctx.StatementContext) (Aggregation, error) { +func NewDistAggFunc(expr *tipb.Expr, fieldTps []*types.FieldType, ctx sessionctx.Context) (Aggregation, error) { args := make([]expression.Expression, 0, len(expr.Children)) for _, child := range expr.Children { - arg, err := expression.PBToExpr(child, fieldTps, sc) + arg, err := expression.PBToExpr(ctx, child, fieldTps) if err != nil { return nil, err } @@ -86,6 +87,7 @@ func NewDistAggFunc(expr *tipb.Expr, fieldTps []*types.FieldType, sc *stmtctx.St // AggEvaluateContext is used to store intermediate result when calculating aggregate functions. type AggEvaluateContext struct { + Ctx sessionctx.Context DistinctChecker *distinctChecker Count int64 Value types.Datum @@ -125,24 +127,25 @@ func newAggFunc(funcName string, args []expression.Expression, hasDistinct bool) } // CreateContext implements Aggregation interface. -func (af *aggFunction) CreateContext(sc *stmtctx.StatementContext) *AggEvaluateContext { - evalCtx := &AggEvaluateContext{} +func (af *aggFunction) CreateContext(ctx sessionctx.Context) *AggEvaluateContext { + evalCtx := &AggEvaluateContext{Ctx: ctx} if af.HasDistinct { - evalCtx.DistinctChecker = createDistinctChecker(sc) + evalCtx.DistinctChecker = createDistinctChecker(ctx.GetSessionVars().StmtCtx) } return evalCtx } -func (af *aggFunction) ResetContext(sc *stmtctx.StatementContext, evalCtx *AggEvaluateContext) { +func (af *aggFunction) ResetContext(ctx sessionctx.Context, evalCtx *AggEvaluateContext) { if af.HasDistinct { - evalCtx.DistinctChecker = createDistinctChecker(sc) + evalCtx.DistinctChecker = createDistinctChecker(ctx.GetSessionVars().StmtCtx) } + evalCtx.Ctx = ctx evalCtx.Value.SetNull() } func (af *aggFunction) updateSum(ctx types.Context, evalCtx *AggEvaluateContext, row chunk.Row) error { a := af.Args[0] - value, err := a.Eval(row) + value, err := a.Eval(evalCtx.Ctx, row) if err != nil { return err } diff --git a/pkg/expression/aggregation/aggregation_test.go b/pkg/expression/aggregation/aggregation_test.go index a9a29b1c74c38..de7c3ad684a29 100644 --- a/pkg/expression/aggregation/aggregation_test.go +++ b/pkg/expression/aggregation/aggregation_test.go @@ -59,7 +59,7 @@ func TestAvg(t *testing.T) { desc, err := NewAggFuncDesc(s.ctx, ast.AggFuncAvg, []expression.Expression{col}, false) require.NoError(t, err) avgFunc := desc.GetAggFunc(ctx) - evalCtx := avgFunc.CreateContext(s.ctx.GetSessionVars().StmtCtx) + evalCtx := avgFunc.CreateContext(s.ctx) result := avgFunc.GetResult(evalCtx) require.True(t, result.IsNull()) @@ -79,7 +79,7 @@ func TestAvg(t *testing.T) { desc, err = NewAggFuncDesc(s.ctx, ast.AggFuncAvg, []expression.Expression{col}, true) require.NoError(t, err) distinctAvgFunc := desc.GetAggFunc(ctx) - evalCtx = distinctAvgFunc.CreateContext(s.ctx.GetSessionVars().StmtCtx) + evalCtx = distinctAvgFunc.CreateContext(s.ctx) for _, row := range s.rows { err := distinctAvgFunc.Update(evalCtx, s.ctx.GetSessionVars().StmtCtx, row) require.NoError(t, err) @@ -112,7 +112,7 @@ func TestAvgFinalMode(t *testing.T) { require.NoError(t, err) aggFunc.Mode = FinalMode avgFunc := aggFunc.GetAggFunc(ctx) - evalCtx := avgFunc.CreateContext(s.ctx.GetSessionVars().StmtCtx) + evalCtx := avgFunc.CreateContext(s.ctx) for _, row := range rows { err := avgFunc.Update(evalCtx, s.ctx.GetSessionVars().StmtCtx, chunk.MutRowFromDatums(row).ToRow()) @@ -133,7 +133,7 @@ func TestSum(t *testing.T) { desc, err := NewAggFuncDesc(s.ctx, ast.AggFuncSum, []expression.Expression{col}, false) require.NoError(t, err) sumFunc := desc.GetAggFunc(ctx) - evalCtx := sumFunc.CreateContext(s.ctx.GetSessionVars().StmtCtx) + evalCtx := sumFunc.CreateContext(s.ctx) result := sumFunc.GetResult(evalCtx) require.True(t, result.IsNull()) @@ -155,7 +155,7 @@ func TestSum(t *testing.T) { desc, err = NewAggFuncDesc(s.ctx, ast.AggFuncSum, []expression.Expression{col}, true) require.NoError(t, err) distinctSumFunc := desc.GetAggFunc(ctx) - evalCtx = distinctSumFunc.CreateContext(s.ctx.GetSessionVars().StmtCtx) + evalCtx = distinctSumFunc.CreateContext(s.ctx) for _, row := range s.rows { err := distinctSumFunc.Update(evalCtx, s.ctx.GetSessionVars().StmtCtx, row) require.NoError(t, err) @@ -175,7 +175,7 @@ func TestBitAnd(t *testing.T) { desc, err := NewAggFuncDesc(s.ctx, ast.AggFuncBitAnd, []expression.Expression{col}, false) require.NoError(t, err) bitAndFunc := desc.GetAggFunc(ctx) - evalCtx := bitAndFunc.CreateContext(s.ctx.GetSessionVars().StmtCtx) + evalCtx := bitAndFunc.CreateContext(s.ctx) result := bitAndFunc.GetResult(evalCtx) require.Equal(t, uint64(math.MaxUint64), result.GetUint64()) @@ -213,7 +213,7 @@ func TestBitAnd(t *testing.T) { // test bit_and( decimal ) col.RetType = types.NewFieldType(mysql.TypeNewDecimal) - bitAndFunc.ResetContext(s.ctx.GetSessionVars().StmtCtx, evalCtx) + bitAndFunc.ResetContext(s.ctx, evalCtx) result = bitAndFunc.GetResult(evalCtx) require.Equal(t, uint64(math.MaxUint64), result.GetUint64()) @@ -254,7 +254,7 @@ func TestBitOr(t *testing.T) { desc, err := NewAggFuncDesc(s.ctx, ast.AggFuncBitOr, []expression.Expression{col}, false) require.NoError(t, err) bitOrFunc := desc.GetAggFunc(ctx) - evalCtx := bitOrFunc.CreateContext(s.ctx.GetSessionVars().StmtCtx) + evalCtx := bitOrFunc.CreateContext(s.ctx) result := bitOrFunc.GetResult(evalCtx) require.Equal(t, uint64(0), result.GetUint64()) @@ -292,7 +292,7 @@ func TestBitOr(t *testing.T) { // test bit_or( decimal ) col.RetType = types.NewFieldType(mysql.TypeNewDecimal) - bitOrFunc.ResetContext(s.ctx.GetSessionVars().StmtCtx, evalCtx) + bitOrFunc.ResetContext(s.ctx, evalCtx) result = bitOrFunc.GetResult(evalCtx) require.Equal(t, uint64(0), result.GetUint64()) @@ -341,7 +341,7 @@ func TestBitXor(t *testing.T) { desc, err := NewAggFuncDesc(s.ctx, ast.AggFuncBitXor, []expression.Expression{col}, false) require.NoError(t, err) bitXorFunc := desc.GetAggFunc(ctx) - evalCtx := bitXorFunc.CreateContext(s.ctx.GetSessionVars().StmtCtx) + evalCtx := bitXorFunc.CreateContext(s.ctx) result := bitXorFunc.GetResult(evalCtx) require.Equal(t, uint64(0), result.GetUint64()) @@ -379,7 +379,7 @@ func TestBitXor(t *testing.T) { // test bit_xor( decimal ) col.RetType = types.NewFieldType(mysql.TypeNewDecimal) - bitXorFunc.ResetContext(s.ctx.GetSessionVars().StmtCtx, evalCtx) + bitXorFunc.ResetContext(s.ctx, evalCtx) result = bitXorFunc.GetResult(evalCtx) require.Equal(t, uint64(0), result.GetUint64()) @@ -420,7 +420,7 @@ func TestCount(t *testing.T) { desc, err := NewAggFuncDesc(s.ctx, ast.AggFuncCount, []expression.Expression{col}, false) require.NoError(t, err) countFunc := desc.GetAggFunc(ctx) - evalCtx := countFunc.CreateContext(s.ctx.GetSessionVars().StmtCtx) + evalCtx := countFunc.CreateContext(s.ctx) result := countFunc.GetResult(evalCtx) require.Equal(t, int64(0), result.GetInt64()) @@ -441,7 +441,7 @@ func TestCount(t *testing.T) { desc, err = NewAggFuncDesc(s.ctx, ast.AggFuncCount, []expression.Expression{col}, true) require.NoError(t, err) distinctCountFunc := desc.GetAggFunc(ctx) - evalCtx = distinctCountFunc.CreateContext(s.ctx.GetSessionVars().StmtCtx) + evalCtx = distinctCountFunc.CreateContext(s.ctx) for _, row := range s.rows { err := distinctCountFunc.Update(evalCtx, s.ctx.GetSessionVars().StmtCtx, row) @@ -465,7 +465,7 @@ func TestConcat(t *testing.T) { desc, err := NewAggFuncDesc(s.ctx, ast.AggFuncGroupConcat, []expression.Expression{col, sep}, false) require.NoError(t, err) concatFunc := desc.GetAggFunc(ctx) - evalCtx := concatFunc.CreateContext(s.ctx.GetSessionVars().StmtCtx) + evalCtx := concatFunc.CreateContext(s.ctx) result := concatFunc.GetResult(evalCtx) require.True(t, result.IsNull()) @@ -493,7 +493,7 @@ func TestConcat(t *testing.T) { desc, err = NewAggFuncDesc(s.ctx, ast.AggFuncGroupConcat, []expression.Expression{col, sep}, true) require.NoError(t, err) distinctConcatFunc := desc.GetAggFunc(ctx) - evalCtx = distinctConcatFunc.CreateContext(s.ctx.GetSessionVars().StmtCtx) + evalCtx = distinctConcatFunc.CreateContext(s.ctx) row.SetDatum(0, types.NewIntDatum(1)) err = distinctConcatFunc.Update(evalCtx, s.ctx.GetSessionVars().StmtCtx, row.ToRow()) @@ -519,7 +519,7 @@ func TestFirstRow(t *testing.T) { desc, err := NewAggFuncDesc(s.ctx, ast.AggFuncFirstRow, []expression.Expression{col}, false) require.NoError(t, err) firstRowFunc := desc.GetAggFunc(ctx) - evalCtx := firstRowFunc.CreateContext(s.ctx.GetSessionVars().StmtCtx) + evalCtx := firstRowFunc.CreateContext(s.ctx) row := chunk.MutRowFromDatums(types.MakeDatums(1)).ToRow() err = firstRowFunc.Update(evalCtx, s.ctx.GetSessionVars().StmtCtx, row) @@ -550,8 +550,8 @@ func TestMaxMin(t *testing.T) { desc, err = NewAggFuncDesc(s.ctx, ast.AggFuncMin, []expression.Expression{col}, false) require.NoError(t, err) minFunc := desc.GetAggFunc(ctx) - maxEvalCtx := maxFunc.CreateContext(s.ctx.GetSessionVars().StmtCtx) - minEvalCtx := minFunc.CreateContext(s.ctx.GetSessionVars().StmtCtx) + maxEvalCtx := maxFunc.CreateContext(s.ctx) + minEvalCtx := minFunc.CreateContext(s.ctx) result := maxFunc.GetResult(maxEvalCtx) require.True(t, result.IsNull()) diff --git a/pkg/expression/aggregation/avg.go b/pkg/expression/aggregation/avg.go index ff5aea5739316..297996290ccfb 100644 --- a/pkg/expression/aggregation/avg.go +++ b/pkg/expression/aggregation/avg.go @@ -17,6 +17,7 @@ package aggregation import ( "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/parser/terror" + "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/chunk" @@ -29,7 +30,7 @@ type avgFunction struct { func (af *avgFunction) updateAvg(ctx types.Context, evalCtx *AggEvaluateContext, row chunk.Row) error { a := af.Args[1] - value, err := a.Eval(row) + value, err := a.Eval(evalCtx.Ctx, row) if err != nil { return err } @@ -40,7 +41,7 @@ func (af *avgFunction) updateAvg(ctx types.Context, evalCtx *AggEvaluateContext, if err != nil { return err } - count, err := af.Args[0].Eval(row) + count, err := af.Args[0].Eval(evalCtx.Ctx, row) if err != nil { return err } @@ -48,10 +49,11 @@ func (af *avgFunction) updateAvg(ctx types.Context, evalCtx *AggEvaluateContext, return nil } -func (af *avgFunction) ResetContext(sc *stmtctx.StatementContext, evalCtx *AggEvaluateContext) { +func (af *avgFunction) ResetContext(ctx sessionctx.Context, evalCtx *AggEvaluateContext) { if af.HasDistinct { - evalCtx.DistinctChecker = createDistinctChecker(sc) + evalCtx.DistinctChecker = createDistinctChecker(ctx.GetSessionVars().StmtCtx) } + evalCtx.Ctx = ctx evalCtx.Value.SetNull() evalCtx.Count = 0 } diff --git a/pkg/expression/aggregation/base_func.go b/pkg/expression/aggregation/base_func.go index 3de4f3299d976..39a1b518ea8c7 100644 --- a/pkg/expression/aggregation/base_func.go +++ b/pkg/expression/aggregation/base_func.go @@ -214,6 +214,11 @@ func (a *baseFuncDesc) TypeInfer4AvgSum(avgRetType *types.FieldType) { } } +// TypeInfer4FinalCount infers the type of sum agg which is rewritten from final count agg run on MPP mode. +func (a *baseFuncDesc) TypeInfer4FinalCount(finalCountRetType *types.FieldType) { + a.RetTp = finalCountRetType.Clone() +} + // typeInfer4Avg should returns a "decimal", otherwise it returns a "double". // Because child returns integer or decimal type. func (a *baseFuncDesc) typeInfer4Avg(sessionctx.Context) { diff --git a/pkg/expression/aggregation/bench_test.go b/pkg/expression/aggregation/bench_test.go index eb1fb72c67b9c..d7e2486cb499e 100644 --- a/pkg/expression/aggregation/bench_test.go +++ b/pkg/expression/aggregation/bench_test.go @@ -37,7 +37,7 @@ func BenchmarkCreateContext(b *testing.B) { fun := desc.GetAggFunc(ctx) b.StartTimer() for i := 0; i < b.N; i++ { - fun.CreateContext(ctx.GetSessionVars().StmtCtx) + fun.CreateContext(ctx) } b.ReportAllocs() } @@ -53,10 +53,10 @@ func BenchmarkResetContext(b *testing.B) { b.Fatal(err) } fun := desc.GetAggFunc(ctx) - evalCtx := fun.CreateContext(ctx.GetSessionVars().StmtCtx) + evalCtx := fun.CreateContext(ctx) b.StartTimer() for i := 0; i < b.N; i++ { - fun.ResetContext(ctx.GetSessionVars().StmtCtx, evalCtx) + fun.ResetContext(ctx, evalCtx) } b.ReportAllocs() } @@ -74,7 +74,7 @@ func BenchmarkCreateDistinctContext(b *testing.B) { fun := desc.GetAggFunc(ctx) b.StartTimer() for i := 0; i < b.N; i++ { - fun.CreateContext(ctx.GetSessionVars().StmtCtx) + fun.CreateContext(ctx) } b.ReportAllocs() } @@ -90,10 +90,10 @@ func BenchmarkResetDistinctContext(b *testing.B) { b.Fatal(err) } fun := desc.GetAggFunc(ctx) - evalCtx := fun.CreateContext(ctx.GetSessionVars().StmtCtx) + evalCtx := fun.CreateContext(ctx) b.StartTimer() for i := 0; i < b.N; i++ { - fun.ResetContext(ctx.GetSessionVars().StmtCtx, evalCtx) + fun.ResetContext(ctx, evalCtx) } b.ReportAllocs() } diff --git a/pkg/expression/aggregation/bit_and.go b/pkg/expression/aggregation/bit_and.go index 8d7adb6593850..73a1acba0d263 100644 --- a/pkg/expression/aggregation/bit_and.go +++ b/pkg/expression/aggregation/bit_and.go @@ -17,6 +17,7 @@ package aggregation import ( "math" + "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/chunk" @@ -26,20 +27,21 @@ type bitAndFunction struct { aggFunction } -func (bf *bitAndFunction) CreateContext(sc *stmtctx.StatementContext) *AggEvaluateContext { - evalCtx := bf.aggFunction.CreateContext(sc) +func (bf *bitAndFunction) CreateContext(ctx sessionctx.Context) *AggEvaluateContext { + evalCtx := bf.aggFunction.CreateContext(ctx) evalCtx.Value.SetUint64(math.MaxUint64) return evalCtx } -func (*bitAndFunction) ResetContext(_ *stmtctx.StatementContext, evalCtx *AggEvaluateContext) { +func (*bitAndFunction) ResetContext(ctx sessionctx.Context, evalCtx *AggEvaluateContext) { + evalCtx.Ctx = ctx evalCtx.Value.SetUint64(math.MaxUint64) } // Update implements Aggregation interface. func (bf *bitAndFunction) Update(evalCtx *AggEvaluateContext, sc *stmtctx.StatementContext, row chunk.Row) error { a := bf.Args[0] - value, err := a.Eval(row) + value, err := a.Eval(evalCtx.Ctx, row) if err != nil { return err } diff --git a/pkg/expression/aggregation/bit_or.go b/pkg/expression/aggregation/bit_or.go index 35c72a0e70a1d..dc27c119c7183 100644 --- a/pkg/expression/aggregation/bit_or.go +++ b/pkg/expression/aggregation/bit_or.go @@ -15,6 +15,7 @@ package aggregation import ( + "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/chunk" @@ -24,20 +25,21 @@ type bitOrFunction struct { aggFunction } -func (bf *bitOrFunction) CreateContext(sc *stmtctx.StatementContext) *AggEvaluateContext { - evalCtx := bf.aggFunction.CreateContext(sc) +func (bf *bitOrFunction) CreateContext(ctx sessionctx.Context) *AggEvaluateContext { + evalCtx := bf.aggFunction.CreateContext(ctx) evalCtx.Value.SetUint64(0) return evalCtx } -func (*bitOrFunction) ResetContext(_ *stmtctx.StatementContext, evalCtx *AggEvaluateContext) { +func (*bitOrFunction) ResetContext(ctx sessionctx.Context, evalCtx *AggEvaluateContext) { + evalCtx.Ctx = ctx evalCtx.Value.SetUint64(0) } // Update implements Aggregation interface. func (bf *bitOrFunction) Update(evalCtx *AggEvaluateContext, sc *stmtctx.StatementContext, row chunk.Row) error { a := bf.Args[0] - value, err := a.Eval(row) + value, err := a.Eval(evalCtx.Ctx, row) if err != nil { return err } diff --git a/pkg/expression/aggregation/bit_xor.go b/pkg/expression/aggregation/bit_xor.go index 47582cf844f15..4d6ba931b94a8 100644 --- a/pkg/expression/aggregation/bit_xor.go +++ b/pkg/expression/aggregation/bit_xor.go @@ -15,6 +15,7 @@ package aggregation import ( + "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/chunk" @@ -24,20 +25,21 @@ type bitXorFunction struct { aggFunction } -func (bf *bitXorFunction) CreateContext(sc *stmtctx.StatementContext) *AggEvaluateContext { - evalCtx := bf.aggFunction.CreateContext(sc) +func (bf *bitXorFunction) CreateContext(ctx sessionctx.Context) *AggEvaluateContext { + evalCtx := bf.aggFunction.CreateContext(ctx) evalCtx.Value.SetUint64(0) return evalCtx } -func (*bitXorFunction) ResetContext(_ *stmtctx.StatementContext, evalCtx *AggEvaluateContext) { +func (*bitXorFunction) ResetContext(ctx sessionctx.Context, evalCtx *AggEvaluateContext) { + evalCtx.Ctx = ctx evalCtx.Value.SetUint64(0) } // Update implements Aggregation interface. func (bf *bitXorFunction) Update(evalCtx *AggEvaluateContext, sc *stmtctx.StatementContext, row chunk.Row) error { a := bf.Args[0] - value, err := a.Eval(row) + value, err := a.Eval(evalCtx.Ctx, row) if err != nil { return err } diff --git a/pkg/expression/aggregation/concat.go b/pkg/expression/aggregation/concat.go index 73deacaf13570..56d3c89f6d609 100644 --- a/pkg/expression/aggregation/concat.go +++ b/pkg/expression/aggregation/concat.go @@ -20,6 +20,7 @@ import ( "github.com/pingcap/errors" "github.com/pingcap/tidb/pkg/expression" + "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/chunk" @@ -45,9 +46,9 @@ func (*concatFunction) writeValue(evalCtx *AggEvaluateContext, val types.Datum) } } -func (cf *concatFunction) initSeparator(_ *stmtctx.StatementContext, row chunk.Row) error { +func (cf *concatFunction) initSeparator(ctx sessionctx.Context, row chunk.Row) error { sepArg := cf.Args[len(cf.Args)-1] - sepDatum, err := sepArg.Eval(row) + sepDatum, err := sepArg.Eval(ctx, row) if err != nil { return err } @@ -62,7 +63,7 @@ func (cf *concatFunction) initSeparator(_ *stmtctx.StatementContext, row chunk.R func (cf *concatFunction) Update(evalCtx *AggEvaluateContext, sc *stmtctx.StatementContext, row chunk.Row) error { datumBuf := make([]types.Datum, 0, len(cf.Args)) if !cf.sepInited { - err := cf.initSeparator(sc, row) + err := cf.initSeparator(evalCtx.Ctx, row) if err != nil { return err } @@ -71,7 +72,7 @@ func (cf *concatFunction) Update(evalCtx *AggEvaluateContext, sc *stmtctx.Statem // The last parameter is the concat separator, we only concat the first "len(cf.Args)-1" parameters. for i, length := 0, len(cf.Args)-1; i < length; i++ { - value, err := cf.Args[i].Eval(row) + value, err := cf.Args[i].Eval(evalCtx.Ctx, row) if err != nil { return err } @@ -121,10 +122,11 @@ func (cf *concatFunction) GetResult(evalCtx *AggEvaluateContext) (d types.Datum) return d } -func (cf *concatFunction) ResetContext(sc *stmtctx.StatementContext, evalCtx *AggEvaluateContext) { +func (cf *concatFunction) ResetContext(ctx sessionctx.Context, evalCtx *AggEvaluateContext) { if cf.HasDistinct { - evalCtx.DistinctChecker = createDistinctChecker(sc) + evalCtx.DistinctChecker = createDistinctChecker(ctx.GetSessionVars().StmtCtx) } + evalCtx.Ctx = ctx evalCtx.Buffer = nil } diff --git a/pkg/expression/aggregation/count.go b/pkg/expression/aggregation/count.go index fd7316333de52..6ddf8bb4b1ee8 100644 --- a/pkg/expression/aggregation/count.go +++ b/pkg/expression/aggregation/count.go @@ -15,6 +15,7 @@ package aggregation import ( + "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/chunk" @@ -31,7 +32,7 @@ func (cf *countFunction) Update(evalCtx *AggEvaluateContext, _ *stmtctx.Statemen datumBuf = make([]types.Datum, 0, len(cf.Args)) } for _, a := range cf.Args { - value, err := a.Eval(row) + value, err := a.Eval(evalCtx.Ctx, row) if err != nil { return err } @@ -60,10 +61,11 @@ func (cf *countFunction) Update(evalCtx *AggEvaluateContext, _ *stmtctx.Statemen return nil } -func (cf *countFunction) ResetContext(sc *stmtctx.StatementContext, evalCtx *AggEvaluateContext) { +func (cf *countFunction) ResetContext(ctx sessionctx.Context, evalCtx *AggEvaluateContext) { if cf.HasDistinct { - evalCtx.DistinctChecker = createDistinctChecker(sc) + evalCtx.DistinctChecker = createDistinctChecker(ctx.GetSessionVars().StmtCtx) } + evalCtx.Ctx = ctx evalCtx.Count = 0 } diff --git a/pkg/expression/aggregation/explain.go b/pkg/expression/aggregation/explain.go index 03328b18a06fa..dd28997d589a6 100644 --- a/pkg/expression/aggregation/explain.go +++ b/pkg/expression/aggregation/explain.go @@ -19,10 +19,11 @@ import ( "fmt" "github.com/pingcap/tidb/pkg/parser/ast" + "github.com/pingcap/tidb/pkg/sessionctx" ) // ExplainAggFunc generates explain information for a aggregation function. -func ExplainAggFunc(agg *AggFuncDesc, normalized bool) string { +func ExplainAggFunc(ctx sessionctx.Context, agg *AggFuncDesc, normalized bool) string { var buffer bytes.Buffer fmt.Fprintf(&buffer, "%s(", agg.Name) if agg.HasDistinct { @@ -37,13 +38,13 @@ func ExplainAggFunc(agg *AggFuncDesc, normalized bool) string { if normalized { fmt.Fprintf(&buffer, "%s desc", item.Expr.ExplainNormalizedInfo()) } else { - fmt.Fprintf(&buffer, "%s desc", item.Expr.ExplainInfo()) + fmt.Fprintf(&buffer, "%s desc", item.Expr.ExplainInfo(ctx)) } } else { if normalized { fmt.Fprintf(&buffer, "%s", item.Expr.ExplainNormalizedInfo()) } else { - fmt.Fprintf(&buffer, "%s", item.Expr.ExplainInfo()) + fmt.Fprintf(&buffer, "%s", item.Expr.ExplainInfo(ctx)) } } @@ -59,7 +60,7 @@ func ExplainAggFunc(agg *AggFuncDesc, normalized bool) string { if normalized { buffer.WriteString(arg.ExplainNormalizedInfo()) } else { - buffer.WriteString(arg.ExplainInfo()) + buffer.WriteString(arg.ExplainInfo(ctx)) } } buffer.WriteString(")") diff --git a/pkg/expression/aggregation/first_row.go b/pkg/expression/aggregation/first_row.go index a30a534e3ef75..a3bd610701b94 100644 --- a/pkg/expression/aggregation/first_row.go +++ b/pkg/expression/aggregation/first_row.go @@ -16,6 +16,7 @@ package aggregation import ( "github.com/pingcap/errors" + "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/chunk" @@ -33,7 +34,7 @@ func (ff *firstRowFunction) Update(evalCtx *AggEvaluateContext, _ *stmtctx.State if len(ff.Args) != 1 { return errors.New("Wrong number of args for AggFuncFirstRow") } - value, err := ff.Args[0].Eval(row) + value, err := ff.Args[0].Eval(evalCtx.Ctx, row) if err != nil { return err } @@ -47,7 +48,8 @@ func (*firstRowFunction) GetResult(evalCtx *AggEvaluateContext) types.Datum { return evalCtx.Value } -func (*firstRowFunction) ResetContext(_ *stmtctx.StatementContext, evalCtx *AggEvaluateContext) { +func (*firstRowFunction) ResetContext(ctx sessionctx.Context, evalCtx *AggEvaluateContext) { + evalCtx.Ctx = ctx evalCtx.GotFirstRow = false } diff --git a/pkg/expression/aggregation/max_min.go b/pkg/expression/aggregation/max_min.go index cffdae9a2e22e..968835e811b4c 100644 --- a/pkg/expression/aggregation/max_min.go +++ b/pkg/expression/aggregation/max_min.go @@ -40,7 +40,7 @@ func (mmf *maxMinFunction) GetPartialResult(evalCtx *AggEvaluateContext) []types // Update implements Aggregation interface. func (mmf *maxMinFunction) Update(evalCtx *AggEvaluateContext, sc *stmtctx.StatementContext, row chunk.Row) error { a := mmf.Args[0] - value, err := a.Eval(row) + value, err := a.Eval(evalCtx.Ctx, row) if err != nil { return err } diff --git a/pkg/expression/aggregation/util.go b/pkg/expression/aggregation/util.go index c253a675e51c3..2b904973b73a6 100644 --- a/pkg/expression/aggregation/util.go +++ b/pkg/expression/aggregation/util.go @@ -42,7 +42,8 @@ func createDistinctChecker(sc *stmtctx.StatementContext) *distinctChecker { func (d *distinctChecker) Check(values []types.Datum) (bool, error) { d.key = d.key[:0] var err error - d.key, err = codec.EncodeValue(d.sc, d.key, values...) + d.key, err = codec.EncodeValue(d.sc.TimeZone(), d.key, values...) + err = d.sc.HandleError(err) if err != nil { return false, err } diff --git a/pkg/expression/aggregation/window_func.go b/pkg/expression/aggregation/window_func.go index 1ce06b72d6d2a..897754f991562 100644 --- a/pkg/expression/aggregation/window_func.go +++ b/pkg/expression/aggregation/window_func.go @@ -36,13 +36,13 @@ func NewWindowFuncDesc(ctx sessionctx.Context, name string, args []expression.Ex if !skipCheckArgs { switch strings.ToLower(name) { case ast.WindowFuncNthValue: - val, isNull, ok := expression.GetUint64FromConstant(args[1]) + val, isNull, ok := expression.GetUint64FromConstant(ctx, args[1]) // nth_value does not allow `0`, but allows `null`. if !ok || (val == 0 && !isNull) { return nil, nil } case ast.WindowFuncNtile: - val, isNull, ok := expression.GetUint64FromConstant(args[0]) + val, isNull, ok := expression.GetUint64FromConstant(ctx, args[0]) // ntile does not allow `0`, but allows `null`. if !ok || (val == 0 && !isNull) { return nil, nil @@ -51,7 +51,7 @@ func NewWindowFuncDesc(ctx sessionctx.Context, name string, args []expression.Ex if len(args) < 2 { break } - _, isNull, ok := expression.GetUint64FromConstant(args[1]) + _, isNull, ok := expression.GetUint64FromConstant(ctx, args[1]) if !ok || isNull { return nil, nil } @@ -125,7 +125,7 @@ func (s *WindowFuncDesc) Clone() *WindowFuncDesc { // WindowFuncToPBExpr converts aggregate function to pb. func WindowFuncToPBExpr(sctx sessionctx.Context, client kv.Client, desc *WindowFuncDesc) *tipb.Expr { - pc := expression.NewPBConverter(client, sctx.GetSessionVars().StmtCtx) + pc := expression.NewPBConverter(client, sctx) tp := desc.GetTiPBExpr(true) if !client.IsRequestTypeSupported(kv.ReqTypeSelect, int64(tp)) { return nil @@ -145,7 +145,7 @@ func WindowFuncToPBExpr(sctx sessionctx.Context, client kv.Client, desc *WindowF // CanPushDownToTiFlash control whether a window function desc can be push down to tiflash. func (s *WindowFuncDesc) CanPushDownToTiFlash(ctx sessionctx.Context) bool { // args - if !expression.CanExprsPushDown(ctx.GetSessionVars().StmtCtx, s.Args, ctx.GetClient(), kv.TiFlash) { + if !expression.CanExprsPushDown(ctx, s.Args, ctx.GetClient(), kv.TiFlash) { return false } // window functions diff --git a/pkg/expression/builtin.go b/pkg/expression/builtin.go index 7809fb389f311..ed7a8ccd0e2c2 100644 --- a/pkg/expression/builtin.go +++ b/pkg/expression/builtin.go @@ -49,7 +49,6 @@ import ( type baseBuiltinFunc struct { bufAllocator columnBufferAllocator args []Expression - ctx sessionctx.Context tp *types.FieldType pbCode tipb.ScalarFuncSig ctor collate.Collator @@ -125,7 +124,6 @@ func newBaseBuiltinFunc(ctx sessionctx.Context, funcName string, args []Expressi childrenReversedOnce: new(sync.Once), args: args, - ctx: ctx, tp: tp, } bf.SetCharsetAndCollation(ec.Charset, ec.Collation) @@ -213,7 +211,6 @@ func newBaseBuiltinFuncWithTp(ctx sessionctx.Context, funcName string, args []Ex childrenReversedOnce: new(sync.Once), args: args, - ctx: ctx, tp: fieldType, } bf.SetCharsetAndCollation(ec.Charset, ec.Collation) @@ -276,7 +273,6 @@ func newBaseBuiltinFuncWithFieldTypes(ctx sessionctx.Context, funcName string, a childrenReversedOnce: new(sync.Once), args: args, - ctx: ctx, tp: fieldType, } bf.SetCharsetAndCollation(ec.Charset, ec.Collation) @@ -300,7 +296,6 @@ func newBaseBuiltinFuncWithFieldType(ctx sessionctx.Context, tp *types.FieldType childrenReversedOnce: new(sync.Once), args: args, - ctx: ctx, tp: tp, } bf.SetCharsetAndCollation(tp.GetCharset(), tp.GetCollate()) @@ -422,29 +417,24 @@ func (b *baseBuiltinFunc) getRetTp() *types.FieldType { return b.tp } -func (b *baseBuiltinFunc) equal(_ sessionctx.Context, fun builtinFunc) bool { +func (b *baseBuiltinFunc) equal(ctx sessionctx.Context, fun builtinFunc) bool { funArgs := fun.getArgs() if len(funArgs) != len(b.args) { return false } for i := range b.args { - if !b.args[i].Equal(b.ctx, funArgs[i]) { + if !b.args[i].Equal(ctx, funArgs[i]) { return false } } return true } -func (b *baseBuiltinFunc) getCtx() sessionctx.Context { - return b.ctx -} - func (b *baseBuiltinFunc) cloneFrom(from *baseBuiltinFunc) { b.args = make([]Expression, 0, len(b.args)) for _, arg := range from.args { b.args = append(b.args, arg.Clone()) } - b.ctx = from.ctx b.tp = from.tp b.pbCode = from.pbCode b.bufAllocator = newLocalColumnPool() @@ -550,8 +540,6 @@ type builtinFunc interface { getArgs() []Expression // equal check if this function equals to another function. equal(sessionctx.Context, builtinFunc) bool - // getCtx returns this function's context. - getCtx() sessionctx.Context // getRetTp returns the return type of the built-in function. getRetTp() *types.FieldType // setPbCode sets pbCode for signature. @@ -574,10 +562,6 @@ type builtinFunc interface { CollationInfo } -type builtinFuncNew interface { - evalIntWithCtx(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) -} - // baseFunctionClass will be contained in every struct that implement functionClass interface. type baseFunctionClass struct { funcName string diff --git a/pkg/expression/builtin_arithmetic.go b/pkg/expression/builtin_arithmetic.go index d250b89d5b8fd..7192481ccc901 100644 --- a/pkg/expression/builtin_arithmetic.go +++ b/pkg/expression/builtin_arithmetic.go @@ -214,12 +214,12 @@ func (s *builtinArithmeticPlusIntSig) Clone() builtinFunc { } func (s *builtinArithmeticPlusIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - a, isNull, err := s.args[0].EvalInt(s.ctx, row) + a, isNull, err := s.args[0].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } - b, isNull, err := s.args[1].EvalInt(s.ctx, row) + b, isNull, err := s.args[1].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -266,11 +266,11 @@ func (s *builtinArithmeticPlusDecimalSig) Clone() builtinFunc { } func (s *builtinArithmeticPlusDecimalSig) evalDecimal(ctx sessionctx.Context, row chunk.Row) (*types.MyDecimal, bool, error) { - a, isNull, err := s.args[0].EvalDecimal(s.ctx, row) + a, isNull, err := s.args[0].EvalDecimal(ctx, row) if isNull || err != nil { return nil, isNull, err } - b, isNull, err := s.args[1].EvalDecimal(s.ctx, row) + b, isNull, err := s.args[1].EvalDecimal(ctx, row) if isNull || err != nil { return nil, isNull, err } @@ -296,11 +296,11 @@ func (s *builtinArithmeticPlusRealSig) Clone() builtinFunc { } func (s *builtinArithmeticPlusRealSig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - a, isLHSNull, err := s.args[0].EvalReal(s.ctx, row) + a, isLHSNull, err := s.args[0].EvalReal(ctx, row) if err != nil { return 0, isLHSNull, err } - b, isRHSNull, err := s.args[1].EvalReal(s.ctx, row) + b, isRHSNull, err := s.args[1].EvalReal(ctx, row) if err != nil { return 0, isRHSNull, err } @@ -364,11 +364,11 @@ func (s *builtinArithmeticMinusRealSig) Clone() builtinFunc { } func (s *builtinArithmeticMinusRealSig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - a, isNull, err := s.args[0].EvalReal(s.ctx, row) + a, isNull, err := s.args[0].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } - b, isNull, err := s.args[1].EvalReal(s.ctx, row) + b, isNull, err := s.args[1].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -389,11 +389,11 @@ func (s *builtinArithmeticMinusDecimalSig) Clone() builtinFunc { } func (s *builtinArithmeticMinusDecimalSig) evalDecimal(ctx sessionctx.Context, row chunk.Row) (*types.MyDecimal, bool, error) { - a, isNull, err := s.args[0].EvalDecimal(s.ctx, row) + a, isNull, err := s.args[0].EvalDecimal(ctx, row) if isNull || err != nil { return nil, isNull, err } - b, isNull, err := s.args[1].EvalDecimal(s.ctx, row) + b, isNull, err := s.args[1].EvalDecimal(ctx, row) if isNull || err != nil { return nil, isNull, err } @@ -419,16 +419,16 @@ func (s *builtinArithmeticMinusIntSig) Clone() builtinFunc { } func (s *builtinArithmeticMinusIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - a, isNull, err := s.args[0].EvalInt(s.ctx, row) + a, isNull, err := s.args[0].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } - b, isNull, err := s.args[1].EvalInt(s.ctx, row) + b, isNull, err := s.args[1].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } - forceToSigned := s.ctx.GetSessionVars().SQLMode.HasNoUnsignedSubtractionMode() + forceToSigned := ctx.GetSessionVars().SQLMode.HasNoUnsignedSubtractionMode() isLHSUnsigned := mysql.HasUnsignedFlag(s.args[0].GetType().GetFlag()) isRHSUnsigned := mysql.HasUnsignedFlag(s.args[1].GetType().GetFlag()) @@ -573,11 +573,11 @@ func (s *builtinArithmeticMultiplyIntSig) Clone() builtinFunc { } func (s *builtinArithmeticMultiplyRealSig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - a, isNull, err := s.args[0].EvalReal(s.ctx, row) + a, isNull, err := s.args[0].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } - b, isNull, err := s.args[1].EvalReal(s.ctx, row) + b, isNull, err := s.args[1].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -589,11 +589,11 @@ func (s *builtinArithmeticMultiplyRealSig) evalReal(ctx sessionctx.Context, row } func (s *builtinArithmeticMultiplyDecimalSig) evalDecimal(ctx sessionctx.Context, row chunk.Row) (*types.MyDecimal, bool, error) { - a, isNull, err := s.args[0].EvalDecimal(s.ctx, row) + a, isNull, err := s.args[0].EvalDecimal(ctx, row) if isNull || err != nil { return nil, isNull, err } - b, isNull, err := s.args[1].EvalDecimal(s.ctx, row) + b, isNull, err := s.args[1].EvalDecimal(ctx, row) if isNull || err != nil { return nil, isNull, err } @@ -609,12 +609,12 @@ func (s *builtinArithmeticMultiplyDecimalSig) evalDecimal(ctx sessionctx.Context } func (s *builtinArithmeticMultiplyIntUnsignedSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - a, isNull, err := s.args[0].EvalInt(s.ctx, row) + a, isNull, err := s.args[0].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } unsignedA := uint64(a) - b, isNull, err := s.args[1].EvalInt(s.ctx, row) + b, isNull, err := s.args[1].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -627,11 +627,11 @@ func (s *builtinArithmeticMultiplyIntUnsignedSig) evalInt(ctx sessionctx.Context } func (s *builtinArithmeticMultiplyIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - a, isNull, err := s.args[0].EvalInt(s.ctx, row) + a, isNull, err := s.args[0].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } - b, isNull, err := s.args[1].EvalInt(s.ctx, row) + b, isNull, err := s.args[1].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -689,16 +689,16 @@ func (s *builtinArithmeticDivideDecimalSig) Clone() builtinFunc { } func (s *builtinArithmeticDivideRealSig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - a, isNull, err := s.args[0].EvalReal(s.ctx, row) + a, isNull, err := s.args[0].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } - b, isNull, err := s.args[1].EvalReal(s.ctx, row) + b, isNull, err := s.args[1].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } if b == 0 { - return 0, true, handleDivisionByZeroError(s.ctx) + return 0, true, handleDivisionByZeroError(ctx) } result := a / b if math.IsInf(result, 0) { @@ -708,12 +708,12 @@ func (s *builtinArithmeticDivideRealSig) evalReal(ctx sessionctx.Context, row ch } func (s *builtinArithmeticDivideDecimalSig) evalDecimal(ctx sessionctx.Context, row chunk.Row) (*types.MyDecimal, bool, error) { - a, isNull, err := s.args[0].EvalDecimal(s.ctx, row) + a, isNull, err := s.args[0].EvalDecimal(ctx, row) if isNull || err != nil { return nil, isNull, err } - b, isNull, err := s.args[1].EvalDecimal(s.ctx, row) + b, isNull, err := s.args[1].EvalDecimal(ctx, row) if isNull || err != nil { return nil, isNull, err } @@ -721,9 +721,9 @@ func (s *builtinArithmeticDivideDecimalSig) evalDecimal(ctx sessionctx.Context, c := &types.MyDecimal{} err = types.DecimalDiv(a, b, c, types.DivFracIncr) if err == types.ErrDivByZero { - return c, true, handleDivisionByZeroError(s.ctx) + return c, true, handleDivisionByZeroError(ctx) } else if err == types.ErrTruncated { - sc := s.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx err = sc.HandleTruncate(errTruncatedWrongValue.GenWithStackByArgs("DECIMAL", c)) } else if err == nil { _, frac := c.PrecisionAndFrac() @@ -787,10 +787,6 @@ func (s *builtinArithmeticIntDivideDecimalSig) Clone() builtinFunc { } func (s *builtinArithmeticIntDivideIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - return s.evalIntWithCtx(s.ctx, row) -} - -func (s *builtinArithmeticIntDivideIntSig) evalIntWithCtx(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { b, bIsNull, err := s.args[1].EvalInt(ctx, row) if bIsNull || err != nil { return 0, bIsNull, err @@ -828,10 +824,10 @@ func (s *builtinArithmeticIntDivideIntSig) evalIntWithCtx(ctx sessionctx.Context } func (s *builtinArithmeticIntDivideDecimalSig) evalInt(ctx sessionctx.Context, row chunk.Row) (ret int64, isNull bool, err error) { - sc := s.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx var num [2]*types.MyDecimal for i, arg := range s.args { - num[i], isNull, err = arg.EvalDecimal(s.ctx, row) + num[i], isNull, err = arg.EvalDecimal(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -840,7 +836,7 @@ func (s *builtinArithmeticIntDivideDecimalSig) evalInt(ctx sessionctx.Context, r c := &types.MyDecimal{} err = types.DecimalDiv(num[0], num[1], c, types.DivFracIncr) if err == types.ErrDivByZero { - return 0, true, handleDivisionByZeroError(s.ctx) + return 0, true, handleDivisionByZeroError(ctx) } if err == types.ErrTruncated { err = sc.HandleTruncate(errTruncatedWrongValue.GenWithStackByArgs("DECIMAL", c)) @@ -974,16 +970,16 @@ func (s *builtinArithmeticModRealSig) Clone() builtinFunc { } func (s *builtinArithmeticModRealSig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - b, isNull, err := s.args[1].EvalReal(s.ctx, row) + b, isNull, err := s.args[1].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } if b == 0 { - return 0, true, handleDivisionByZeroError(s.ctx) + return 0, true, handleDivisionByZeroError(ctx) } - a, isNull, err := s.args[0].EvalReal(s.ctx, row) + a, isNull, err := s.args[0].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -1002,18 +998,18 @@ func (s *builtinArithmeticModDecimalSig) Clone() builtinFunc { } func (s *builtinArithmeticModDecimalSig) evalDecimal(ctx sessionctx.Context, row chunk.Row) (*types.MyDecimal, bool, error) { - a, isNull, err := s.args[0].EvalDecimal(s.ctx, row) + a, isNull, err := s.args[0].EvalDecimal(ctx, row) if isNull || err != nil { return nil, isNull, err } - b, isNull, err := s.args[1].EvalDecimal(s.ctx, row) + b, isNull, err := s.args[1].EvalDecimal(ctx, row) if isNull || err != nil { return nil, isNull, err } c := &types.MyDecimal{} err = types.DecimalMod(a, b, c) if err == types.ErrDivByZero { - return c, true, handleDivisionByZeroError(s.ctx) + return c, true, handleDivisionByZeroError(ctx) } return c, err != nil, err } @@ -1029,16 +1025,16 @@ func (s *builtinArithmeticModIntUnsignedUnsignedSig) Clone() builtinFunc { } func (s *builtinArithmeticModIntUnsignedUnsignedSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - b, isNull, err := s.args[1].EvalInt(s.ctx, row) + b, isNull, err := s.args[1].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } if b == 0 { - return 0, true, handleDivisionByZeroError(s.ctx) + return 0, true, handleDivisionByZeroError(ctx) } - a, isNull, err := s.args[0].EvalInt(s.ctx, row) + a, isNull, err := s.args[0].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -1059,14 +1055,14 @@ func (s *builtinArithmeticModIntUnsignedSignedSig) Clone() builtinFunc { } func (s *builtinArithmeticModIntUnsignedSignedSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - b, isNull, err := s.args[1].EvalInt(s.ctx, row) + b, isNull, err := s.args[1].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } if b == 0 { - return 0, true, handleDivisionByZeroError(s.ctx) + return 0, true, handleDivisionByZeroError(ctx) } - a, isNull, err := s.args[0].EvalInt(s.ctx, row) + a, isNull, err := s.args[0].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -1092,16 +1088,16 @@ func (s *builtinArithmeticModIntSignedUnsignedSig) Clone() builtinFunc { } func (s *builtinArithmeticModIntSignedUnsignedSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - b, isNull, err := s.args[1].EvalInt(s.ctx, row) + b, isNull, err := s.args[1].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } if b == 0 { - return 0, true, handleDivisionByZeroError(s.ctx) + return 0, true, handleDivisionByZeroError(ctx) } - a, isNull, err := s.args[0].EvalInt(s.ctx, row) + a, isNull, err := s.args[0].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -1127,16 +1123,16 @@ func (s *builtinArithmeticModIntSignedSignedSig) Clone() builtinFunc { } func (s *builtinArithmeticModIntSignedSignedSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - b, isNull, err := s.args[1].EvalInt(s.ctx, row) + b, isNull, err := s.args[1].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } if b == 0 { - return 0, true, handleDivisionByZeroError(s.ctx) + return 0, true, handleDivisionByZeroError(ctx) } - a, isNull, err := s.args[0].EvalInt(s.ctx, row) + a, isNull, err := s.args[0].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } diff --git a/pkg/expression/builtin_arithmetic_vec.go b/pkg/expression/builtin_arithmetic_vec.go index 37cf83dafcd9e..95afb8d583818 100644 --- a/pkg/expression/builtin_arithmetic_vec.go +++ b/pkg/expression/builtin_arithmetic_vec.go @@ -32,7 +32,7 @@ func (b *builtinArithmeticMultiplyRealSig) vectorized() bool { } func (b *builtinArithmeticMultiplyRealSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalReal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, result); err != nil { return err } n := input.NumRows() @@ -41,7 +41,7 @@ func (b *builtinArithmeticMultiplyRealSig) vecEvalReal(ctx sessionctx.Context, i return err } defer b.bufAllocator.put(buf) - if err := b.args[1].VecEvalReal(b.ctx, input, buf); err != nil { + if err := b.args[1].VecEvalReal(ctx, input, buf); err != nil { return err } @@ -65,7 +65,7 @@ func (b *builtinArithmeticDivideDecimalSig) vectorized() bool { } func (b *builtinArithmeticDivideDecimalSig) vecEvalDecimal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalDecimal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, result); err != nil { return err } n := input.NumRows() @@ -74,7 +74,7 @@ func (b *builtinArithmeticDivideDecimalSig) vecEvalDecimal(ctx sessionctx.Contex return err } defer b.bufAllocator.put(buf) - if err := b.args[1].VecEvalDecimal(b.ctx, input, buf); err != nil { + if err := b.args[1].VecEvalDecimal(ctx, input, buf); err != nil { return err } @@ -83,14 +83,14 @@ func (b *builtinArithmeticDivideDecimalSig) vecEvalDecimal(ctx sessionctx.Contex y := buf.Decimals() var to types.MyDecimal var frac int - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx for i := 0; i < n; i++ { if result.IsNull(i) { continue } err = types.DecimalDiv(&x[i], &y[i], &to, types.DivFracIncr) if err == types.ErrDivByZero { - if err = handleDivisionByZeroError(b.ctx); err != nil { + if err = handleDivisionByZeroError(ctx); err != nil { return err } result.SetNull(i, true) @@ -126,11 +126,11 @@ func (b *builtinArithmeticModIntUnsignedUnsignedSig) vecEvalInt(ctx sessionctx.C return err } defer b.bufAllocator.put(lh) - if err := b.args[0].VecEvalInt(b.ctx, input, lh); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, lh); err != nil { return err } // reuse result as rh to avoid buf allocate - if err := b.args[1].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, result); err != nil { return err } @@ -144,7 +144,7 @@ func (b *builtinArithmeticModIntUnsignedUnsignedSig) vecEvalInt(ctx sessionctx.C if rh.IsNull(i) { continue } - if err := handleDivisionByZeroError(b.ctx); err != nil { + if err := handleDivisionByZeroError(ctx); err != nil { return err } rh.SetNull(i, true) @@ -171,11 +171,11 @@ func (b *builtinArithmeticModIntUnsignedSignedSig) vecEvalInt(ctx sessionctx.Con } defer b.bufAllocator.put(lh) - if err := b.args[0].VecEvalInt(b.ctx, input, lh); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, lh); err != nil { return err } // reuse result as rh to avoid buf allocate - if err := b.args[1].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, result); err != nil { return err } rh := result @@ -188,7 +188,7 @@ func (b *builtinArithmeticModIntUnsignedSignedSig) vecEvalInt(ctx sessionctx.Con if rh.IsNull(i) { continue } - if err := handleDivisionByZeroError(b.ctx); err != nil { + if err := handleDivisionByZeroError(ctx); err != nil { return err } rh.SetNull(i, true) @@ -219,11 +219,11 @@ func (b *builtinArithmeticModIntSignedUnsignedSig) vecEvalInt(ctx sessionctx.Con } defer b.bufAllocator.put(lh) - if err := b.args[0].VecEvalInt(b.ctx, input, lh); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, lh); err != nil { return err } // reuse result as rh to avoid buf allocate - if err := b.args[1].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, result); err != nil { return err } rh := result @@ -236,7 +236,7 @@ func (b *builtinArithmeticModIntSignedUnsignedSig) vecEvalInt(ctx sessionctx.Con if rh.IsNull(i) { continue } - if err := handleDivisionByZeroError(b.ctx); err != nil { + if err := handleDivisionByZeroError(ctx); err != nil { return err } rh.SetNull(i, true) @@ -267,11 +267,11 @@ func (b *builtinArithmeticModIntSignedSignedSig) vecEvalInt(ctx sessionctx.Conte } defer b.bufAllocator.put(lh) - if err := b.args[0].VecEvalInt(b.ctx, input, lh); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, lh); err != nil { return err } // reuse result as rh to avoid buf allocate - if err := b.args[1].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, result); err != nil { return err } rh := result @@ -284,7 +284,7 @@ func (b *builtinArithmeticModIntSignedSignedSig) vecEvalInt(ctx sessionctx.Conte if rh.IsNull(i) { continue } - if err := handleDivisionByZeroError(b.ctx); err != nil { + if err := handleDivisionByZeroError(ctx); err != nil { return err } rh.SetNull(i, true) @@ -305,7 +305,7 @@ func (b *builtinArithmeticMinusRealSig) vectorized() bool { } func (b *builtinArithmeticMinusRealSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalReal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, result); err != nil { return err } n := input.NumRows() @@ -314,7 +314,7 @@ func (b *builtinArithmeticMinusRealSig) vecEvalReal(ctx sessionctx.Context, inpu return err } defer b.bufAllocator.put(buf) - if err := b.args[1].VecEvalReal(b.ctx, input, buf); err != nil { + if err := b.args[1].VecEvalReal(ctx, input, buf); err != nil { return err } @@ -338,7 +338,7 @@ func (b *builtinArithmeticMinusDecimalSig) vectorized() bool { } func (b *builtinArithmeticMinusDecimalSig) vecEvalDecimal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalDecimal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, result); err != nil { return err } n := input.NumRows() @@ -347,7 +347,7 @@ func (b *builtinArithmeticMinusDecimalSig) vecEvalDecimal(ctx sessionctx.Context return err } defer b.bufAllocator.put(buf) - if err := b.args[1].VecEvalDecimal(b.ctx, input, buf); err != nil { + if err := b.args[1].VecEvalDecimal(ctx, input, buf); err != nil { return err } @@ -381,11 +381,11 @@ func (b *builtinArithmeticMinusIntSig) vecEvalInt(ctx sessionctx.Context, input } defer b.bufAllocator.put(lh) - if err := b.args[0].VecEvalInt(b.ctx, input, lh); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, lh); err != nil { return err } - if err := b.args[1].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, result); err != nil { return err } @@ -396,7 +396,7 @@ func (b *builtinArithmeticMinusIntSig) vecEvalInt(ctx sessionctx.Context, input rhi64s := rh.Int64s() resulti64s := result.Int64s() - forceToSigned := b.ctx.GetSessionVars().SQLMode.HasNoUnsignedSubtractionMode() + forceToSigned := ctx.GetSessionVars().SQLMode.HasNoUnsignedSubtractionMode() isLHSUnsigned := mysql.HasUnsignedFlag(b.args[0].GetType().GetFlag()) isRHSUnsigned := mysql.HasUnsignedFlag(b.args[1].GetType().GetFlag()) @@ -433,10 +433,10 @@ func (b *builtinArithmeticModRealSig) vecEvalReal(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(buf) - if err := b.args[1].VecEvalReal(b.ctx, input, buf); err != nil { + if err := b.args[1].VecEvalReal(ctx, input, buf); err != nil { return err } - if err := b.args[0].VecEvalReal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, result); err != nil { return err } result.MergeNulls(buf) @@ -447,7 +447,7 @@ func (b *builtinArithmeticModRealSig) vecEvalReal(ctx sessionctx.Context, input continue } if y[i] == 0 { - if err := handleDivisionByZeroError(b.ctx); err != nil { + if err := handleDivisionByZeroError(ctx); err != nil { return err } result.SetNull(i, true) @@ -464,7 +464,7 @@ func (b *builtinArithmeticModDecimalSig) vectorized() bool { } func (b *builtinArithmeticModDecimalSig) vecEvalDecimal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalDecimal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, result); err != nil { return err } n := input.NumRows() @@ -473,7 +473,7 @@ func (b *builtinArithmeticModDecimalSig) vecEvalDecimal(ctx sessionctx.Context, return err } defer b.bufAllocator.put(buf) - if err := b.args[1].VecEvalDecimal(b.ctx, input, buf); err != nil { + if err := b.args[1].VecEvalDecimal(ctx, input, buf); err != nil { return err } @@ -487,7 +487,7 @@ func (b *builtinArithmeticModDecimalSig) vecEvalDecimal(ctx sessionctx.Context, } err = types.DecimalMod(&x[i], &y[i], &to) if err == types.ErrDivByZero { - if err := handleDivisionByZeroError(b.ctx); err != nil { + if err := handleDivisionByZeroError(ctx); err != nil { return err } result.SetNull(i, true) @@ -506,7 +506,7 @@ func (b *builtinArithmeticPlusRealSig) vectorized() bool { } func (b *builtinArithmeticPlusRealSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalReal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, result); err != nil { return err } n := input.NumRows() @@ -515,7 +515,7 @@ func (b *builtinArithmeticPlusRealSig) vecEvalReal(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(buf) - if err := b.args[1].VecEvalReal(b.ctx, input, buf); err != nil { + if err := b.args[1].VecEvalReal(ctx, input, buf); err != nil { return err } @@ -539,7 +539,7 @@ func (b *builtinArithmeticMultiplyDecimalSig) vectorized() bool { } func (b *builtinArithmeticMultiplyDecimalSig) vecEvalDecimal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalDecimal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, result); err != nil { return err } n := input.NumRows() @@ -548,7 +548,7 @@ func (b *builtinArithmeticMultiplyDecimalSig) vecEvalDecimal(ctx sessionctx.Cont return err } defer b.bufAllocator.put(buf) - if err := b.args[1].VecEvalDecimal(b.ctx, input, buf); err != nil { + if err := b.args[1].VecEvalDecimal(ctx, input, buf); err != nil { return err } @@ -577,7 +577,7 @@ func (b *builtinArithmeticIntDivideDecimalSig) vectorized() bool { } func (b *builtinArithmeticIntDivideDecimalSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx n := input.NumRows() var err error var buf [2]*chunk.Column @@ -588,7 +588,7 @@ func (b *builtinArithmeticIntDivideDecimalSig) vecEvalInt(ctx sessionctx.Context } defer b.bufAllocator.put(buf[i]) - err = arg.VecEvalDecimal(b.ctx, input, buf[i]) + err = arg.VecEvalDecimal(ctx, input, buf[i]) if err != nil { return err } @@ -611,7 +611,7 @@ func (b *builtinArithmeticIntDivideDecimalSig) vecEvalInt(ctx sessionctx.Context c := &types.MyDecimal{} err = types.DecimalDiv(&num[0][i], &num[1][i], c, types.DivFracIncr) if err == types.ErrDivByZero { - if err = handleDivisionByZeroError(b.ctx); err != nil { + if err = handleDivisionByZeroError(ctx); err != nil { return err } result.SetNull(i, true) @@ -656,7 +656,7 @@ func (b *builtinArithmeticMultiplyIntSig) vectorized() bool { } func (b *builtinArithmeticMultiplyIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, result); err != nil { return err } n := input.NumRows() @@ -666,7 +666,7 @@ func (b *builtinArithmeticMultiplyIntSig) vecEvalInt(ctx sessionctx.Context, inp } defer b.bufAllocator.put(buf) - if err := b.args[1].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf); err != nil { return err } @@ -695,7 +695,7 @@ func (b *builtinArithmeticDivideRealSig) vectorized() bool { } func (b *builtinArithmeticDivideRealSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalReal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, result); err != nil { return err } n := input.NumRows() @@ -704,7 +704,7 @@ func (b *builtinArithmeticDivideRealSig) vecEvalReal(ctx sessionctx.Context, inp return err } defer b.bufAllocator.put(buf) - if err := b.args[1].VecEvalReal(b.ctx, input, buf); err != nil { + if err := b.args[1].VecEvalReal(ctx, input, buf); err != nil { return err } @@ -716,7 +716,7 @@ func (b *builtinArithmeticDivideRealSig) vecEvalReal(ctx sessionctx.Context, inp continue } if y[i] == 0 { - if err := handleDivisionByZeroError(b.ctx); err != nil { + if err := handleDivisionByZeroError(ctx); err != nil { return err } result.SetNull(i, true) @@ -742,12 +742,12 @@ func (b *builtinArithmeticIntDivideIntSig) vecEvalInt(ctx sessionctx.Context, in } defer b.bufAllocator.put(lhsBuf) - if err := b.args[0].VecEvalInt(b.ctx, input, lhsBuf); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, lhsBuf); err != nil { return err } // reuse result as rhsBuf to avoid buf allocate - if err := b.args[1].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, result); err != nil { return err } @@ -763,18 +763,18 @@ func (b *builtinArithmeticIntDivideIntSig) vecEvalInt(ctx sessionctx.Context, in switch { case isLHSUnsigned && isRHSUnsigned: - err = b.divideUU(result, lhsI64s, rhsI64s, resultI64s) + err = b.divideUU(ctx, result, lhsI64s, rhsI64s, resultI64s) case isLHSUnsigned && !isRHSUnsigned: - err = b.divideUS(result, lhsI64s, rhsI64s, resultI64s) + err = b.divideUS(ctx, result, lhsI64s, rhsI64s, resultI64s) case !isLHSUnsigned && isRHSUnsigned: - err = b.divideSU(result, lhsI64s, rhsI64s, resultI64s) + err = b.divideSU(ctx, result, lhsI64s, rhsI64s, resultI64s) case !isLHSUnsigned && !isRHSUnsigned: - err = b.divideSS(result, lhsI64s, rhsI64s, resultI64s) + err = b.divideSS(ctx, result, lhsI64s, rhsI64s, resultI64s) } return err } -func (b *builtinArithmeticIntDivideIntSig) divideUU(result *chunk.Column, lhsI64s, rhsI64s, resultI64s []int64) error { +func (b *builtinArithmeticIntDivideIntSig) divideUU(ctx sessionctx.Context, result *chunk.Column, lhsI64s, rhsI64s, resultI64s []int64) error { for i := 0; i < len(lhsI64s); i++ { if result.IsNull(i) { continue @@ -782,7 +782,7 @@ func (b *builtinArithmeticIntDivideIntSig) divideUU(result *chunk.Column, lhsI64 lhs, rhs := lhsI64s[i], rhsI64s[i] if rhs == 0 { - if err := handleDivisionByZeroError(b.ctx); err != nil { + if err := handleDivisionByZeroError(ctx); err != nil { return err } result.SetNull(i, true) @@ -793,14 +793,14 @@ func (b *builtinArithmeticIntDivideIntSig) divideUU(result *chunk.Column, lhsI64 return nil } -func (b *builtinArithmeticIntDivideIntSig) divideUS(result *chunk.Column, lhsI64s, rhsI64s, resultI64s []int64) error { +func (b *builtinArithmeticIntDivideIntSig) divideUS(ctx sessionctx.Context, result *chunk.Column, lhsI64s, rhsI64s, resultI64s []int64) error { for i := 0; i < len(lhsI64s); i++ { if result.IsNull(i) { continue } lhs, rhs := lhsI64s[i], rhsI64s[i] if rhs == 0 { - if err := handleDivisionByZeroError(b.ctx); err != nil { + if err := handleDivisionByZeroError(ctx); err != nil { return err } result.SetNull(i, true) @@ -815,7 +815,7 @@ func (b *builtinArithmeticIntDivideIntSig) divideUS(result *chunk.Column, lhsI64 return nil } -func (b *builtinArithmeticIntDivideIntSig) divideSU(result *chunk.Column, lhsI64s, rhsI64s, resultI64s []int64) error { +func (b *builtinArithmeticIntDivideIntSig) divideSU(ctx sessionctx.Context, result *chunk.Column, lhsI64s, rhsI64s, resultI64s []int64) error { for i := 0; i < len(lhsI64s); i++ { if result.IsNull(i) { continue @@ -823,7 +823,7 @@ func (b *builtinArithmeticIntDivideIntSig) divideSU(result *chunk.Column, lhsI64 lhs, rhs := lhsI64s[i], rhsI64s[i] if rhs == 0 { - if err := handleDivisionByZeroError(b.ctx); err != nil { + if err := handleDivisionByZeroError(ctx); err != nil { return err } result.SetNull(i, true) @@ -838,7 +838,7 @@ func (b *builtinArithmeticIntDivideIntSig) divideSU(result *chunk.Column, lhsI64 return nil } -func (b *builtinArithmeticIntDivideIntSig) divideSS(result *chunk.Column, lhsI64s, rhsI64s, resultI64s []int64) error { +func (b *builtinArithmeticIntDivideIntSig) divideSS(ctx sessionctx.Context, result *chunk.Column, lhsI64s, rhsI64s, resultI64s []int64) error { for i := 0; i < len(lhsI64s); i++ { if result.IsNull(i) { continue @@ -846,7 +846,7 @@ func (b *builtinArithmeticIntDivideIntSig) divideSS(result *chunk.Column, lhsI64 lhs, rhs := lhsI64s[i], rhsI64s[i] if rhs == 0 { - if err := handleDivisionByZeroError(b.ctx); err != nil { + if err := handleDivisionByZeroError(ctx); err != nil { return err } result.SetNull(i, true) @@ -872,12 +872,12 @@ func (b *builtinArithmeticPlusIntSig) vecEvalInt(ctx sessionctx.Context, input * } defer b.bufAllocator.put(lh) - if err := b.args[0].VecEvalInt(b.ctx, input, lh); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, lh); err != nil { return err } // reuse result as rh to avoid buf allocate - if err := b.args[1].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, result); err != nil { return err } @@ -983,7 +983,7 @@ func (b *builtinArithmeticPlusDecimalSig) vectorized() bool { } func (b *builtinArithmeticPlusDecimalSig) vecEvalDecimal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalDecimal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, result); err != nil { return err } n := input.NumRows() @@ -992,7 +992,7 @@ func (b *builtinArithmeticPlusDecimalSig) vecEvalDecimal(ctx sessionctx.Context, return err } defer b.bufAllocator.put(buf) - if err := b.args[1].VecEvalDecimal(b.ctx, input, buf); err != nil { + if err := b.args[1].VecEvalDecimal(ctx, input, buf); err != nil { return err } @@ -1020,7 +1020,7 @@ func (b *builtinArithmeticMultiplyIntUnsignedSig) vectorized() bool { } func (b *builtinArithmeticMultiplyIntUnsignedSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, result); err != nil { return err } n := input.NumRows() @@ -1030,7 +1030,7 @@ func (b *builtinArithmeticMultiplyIntUnsignedSig) vecEvalInt(ctx sessionctx.Cont } defer b.bufAllocator.put(buf) - if err := b.args[1].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf); err != nil { return err } diff --git a/pkg/expression/builtin_cast.go b/pkg/expression/builtin_cast.go index 05d7bef7c707c..d5ec84df6a735 100644 --- a/pkg/expression/builtin_cast.go +++ b/pkg/expression/builtin_cast.go @@ -484,8 +484,8 @@ func newFakeSctx() *stmtctx.StatementContext { return sc } -func (b *castJSONAsArrayFunctionSig) evalJSON(_ sessionctx.Context, row chunk.Row) (res types.BinaryJSON, isNull bool, err error) { - val, isNull, err := b.args[0].EvalJSON(b.ctx, row) +func (b *castJSONAsArrayFunctionSig) evalJSON(ctx sessionctx.Context, row chunk.Row) (res types.BinaryJSON, isNull bool, err error) { + val, isNull, err := b.args[0].EvalJSON(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -634,8 +634,8 @@ func (b *builtinCastIntAsIntSig) Clone() builtinFunc { return newSig } -func (b *builtinCastIntAsIntSig) evalInt(_ sessionctx.Context, row chunk.Row) (res int64, isNull bool, err error) { - res, isNull, err = b.args[0].EvalInt(b.ctx, row) +func (b *builtinCastIntAsIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (res int64, isNull bool, err error) { + res, isNull, err = b.args[0].EvalInt(ctx, row) if isNull || err != nil { return } @@ -655,8 +655,8 @@ func (b *builtinCastIntAsRealSig) Clone() builtinFunc { return newSig } -func (b *builtinCastIntAsRealSig) evalReal(_ sessionctx.Context, row chunk.Row) (res float64, isNull bool, err error) { - val, isNull, err := b.args[0].EvalInt(b.ctx, row) +func (b *builtinCastIntAsRealSig) evalReal(ctx sessionctx.Context, row chunk.Row) (res float64, isNull bool, err error) { + val, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -685,8 +685,8 @@ func (b *builtinCastIntAsDecimalSig) Clone() builtinFunc { return newSig } -func (b *builtinCastIntAsDecimalSig) evalDecimal(_ sessionctx.Context, row chunk.Row) (res *types.MyDecimal, isNull bool, err error) { - val, isNull, err := b.args[0].EvalInt(b.ctx, row) +func (b *builtinCastIntAsDecimalSig) evalDecimal(ctx sessionctx.Context, row chunk.Row) (res *types.MyDecimal, isNull bool, err error) { + val, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -703,7 +703,7 @@ func (b *builtinCastIntAsDecimalSig) evalDecimal(_ sessionctx.Context, row chunk } else { res = types.NewDecFromUint(uint64(val)) } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx res, err = types.ProduceDecWithSpecifiedTp(sc.TypeCtx(), res, b.tp) err = sc.HandleOverflow(err, err) return res, isNull, err @@ -719,8 +719,8 @@ func (b *builtinCastIntAsStringSig) Clone() builtinFunc { return newSig } -func (b *builtinCastIntAsStringSig) evalString(_ sessionctx.Context, row chunk.Row) (res string, isNull bool, err error) { - val, isNull, err := b.args[0].EvalInt(b.ctx, row) +func (b *builtinCastIntAsStringSig) evalString(ctx sessionctx.Context, row chunk.Row) (res string, isNull bool, err error) { + val, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -733,11 +733,11 @@ func (b *builtinCastIntAsStringSig) evalString(_ sessionctx.Context, row chunk.R if tp.GetType() == mysql.TypeYear && res == "0" { res = "0000" } - res, err = types.ProduceStrWithSpecifiedTp(res, b.tp, b.ctx.GetSessionVars().StmtCtx.TypeCtx(), false) + res, err = types.ProduceStrWithSpecifiedTp(res, b.tp, ctx.GetSessionVars().StmtCtx.TypeCtx(), false) if err != nil { return res, false, err } - return padZeroForBinaryType(res, b.tp, b.ctx) + return padZeroForBinaryType(res, b.tp, ctx) } type builtinCastIntAsTimeSig struct { @@ -750,8 +750,8 @@ func (b *builtinCastIntAsTimeSig) Clone() builtinFunc { return newSig } -func (b *builtinCastIntAsTimeSig) evalTime(_ sessionctx.Context, row chunk.Row) (res types.Time, isNull bool, err error) { - val, isNull, err := b.args[0].EvalInt(b.ctx, row) +func (b *builtinCastIntAsTimeSig) evalTime(ctx sessionctx.Context, row chunk.Row) (res types.Time, isNull bool, err error) { + val, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -759,11 +759,11 @@ func (b *builtinCastIntAsTimeSig) evalTime(_ sessionctx.Context, row chunk.Row) if b.args[0].GetType().GetType() == mysql.TypeYear { res, err = types.ParseTimeFromYear(val) } else { - res, err = types.ParseTimeFromNum(b.ctx.GetSessionVars().StmtCtx.TypeCtx(), val, b.tp.GetType(), b.tp.GetDecimal()) + res, err = types.ParseTimeFromNum(ctx.GetSessionVars().StmtCtx.TypeCtx(), val, b.tp.GetType(), b.tp.GetDecimal()) } if err != nil { - return types.ZeroTime, true, handleInvalidTimeError(b.ctx, err) + return types.ZeroTime, true, handleInvalidTimeError(ctx, err) } if b.tp.GetType() == mysql.TypeDate { // Truncate hh:mm:ss part if the type is Date. @@ -782,18 +782,18 @@ func (b *builtinCastIntAsDurationSig) Clone() builtinFunc { return newSig } -func (b *builtinCastIntAsDurationSig) evalDuration(_ sessionctx.Context, row chunk.Row) (res types.Duration, isNull bool, err error) { - val, isNull, err := b.args[0].EvalInt(b.ctx, row) +func (b *builtinCastIntAsDurationSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (res types.Duration, isNull bool, err error) { + val, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return res, isNull, err } dur, err := types.NumberToDuration(val, b.tp.GetDecimal()) if err != nil { if types.ErrOverflow.Equal(err) { - err = b.ctx.GetSessionVars().StmtCtx.HandleOverflow(err, err) + err = ctx.GetSessionVars().StmtCtx.HandleOverflow(err, err) } if types.ErrTruncatedWrongVal.Equal(err) { - err = b.ctx.GetSessionVars().StmtCtx.HandleTruncate(err) + err = ctx.GetSessionVars().StmtCtx.HandleTruncate(err) } return res, true, err } @@ -810,8 +810,8 @@ func (b *builtinCastIntAsJSONSig) Clone() builtinFunc { return newSig } -func (b *builtinCastIntAsJSONSig) evalJSON(_ sessionctx.Context, row chunk.Row) (res types.BinaryJSON, isNull bool, err error) { - val, isNull, err := b.args[0].EvalInt(b.ctx, row) +func (b *builtinCastIntAsJSONSig) evalJSON(ctx sessionctx.Context, row chunk.Row) (res types.BinaryJSON, isNull bool, err error) { + val, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -835,8 +835,8 @@ func (b *builtinCastRealAsJSONSig) Clone() builtinFunc { return newSig } -func (b *builtinCastRealAsJSONSig) evalJSON(_ sessionctx.Context, row chunk.Row) (res types.BinaryJSON, isNull bool, err error) { - val, isNull, err := b.args[0].EvalReal(b.ctx, row) +func (b *builtinCastRealAsJSONSig) evalJSON(ctx sessionctx.Context, row chunk.Row) (res types.BinaryJSON, isNull bool, err error) { + val, isNull, err := b.args[0].EvalReal(ctx, row) // FIXME: `select json_type(cast(1111.11 as json))` should return `DECIMAL`, we return `DOUBLE` now. return types.CreateBinaryJSON(val), isNull, err } @@ -851,8 +851,8 @@ func (b *builtinCastDecimalAsJSONSig) Clone() builtinFunc { return newSig } -func (b *builtinCastDecimalAsJSONSig) evalJSON(_ sessionctx.Context, row chunk.Row) (types.BinaryJSON, bool, error) { - val, isNull, err := b.args[0].EvalDecimal(b.ctx, row) +func (b *builtinCastDecimalAsJSONSig) evalJSON(ctx sessionctx.Context, row chunk.Row) (types.BinaryJSON, bool, error) { + val, isNull, err := b.args[0].EvalDecimal(ctx, row) if isNull || err != nil { return types.BinaryJSON{}, true, err } @@ -874,8 +874,8 @@ func (b *builtinCastStringAsJSONSig) Clone() builtinFunc { return newSig } -func (b *builtinCastStringAsJSONSig) evalJSON(_ sessionctx.Context, row chunk.Row) (res types.BinaryJSON, isNull bool, err error) { - val, isNull, err := b.args[0].EvalString(b.ctx, row) +func (b *builtinCastStringAsJSONSig) evalJSON(ctx sessionctx.Context, row chunk.Row) (res types.BinaryJSON, isNull bool, err error) { + val, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -913,8 +913,8 @@ func (b *builtinCastDurationAsJSONSig) Clone() builtinFunc { return newSig } -func (b *builtinCastDurationAsJSONSig) evalJSON(_ sessionctx.Context, row chunk.Row) (res types.BinaryJSON, isNull bool, err error) { - val, isNull, err := b.args[0].EvalDuration(b.ctx, row) +func (b *builtinCastDurationAsJSONSig) evalJSON(ctx sessionctx.Context, row chunk.Row) (res types.BinaryJSON, isNull bool, err error) { + val, isNull, err := b.args[0].EvalDuration(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -932,8 +932,8 @@ func (b *builtinCastTimeAsJSONSig) Clone() builtinFunc { return newSig } -func (b *builtinCastTimeAsJSONSig) evalJSON(_ sessionctx.Context, row chunk.Row) (res types.BinaryJSON, isNull bool, err error) { - val, isNull, err := b.args[0].EvalTime(b.ctx, row) +func (b *builtinCastTimeAsJSONSig) evalJSON(ctx sessionctx.Context, row chunk.Row) (res types.BinaryJSON, isNull bool, err error) { + val, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -953,8 +953,8 @@ func (b *builtinCastRealAsRealSig) Clone() builtinFunc { return newSig } -func (b *builtinCastRealAsRealSig) evalReal(_ sessionctx.Context, row chunk.Row) (res float64, isNull bool, err error) { - res, isNull, err = b.args[0].EvalReal(b.ctx, row) +func (b *builtinCastRealAsRealSig) evalReal(ctx sessionctx.Context, row chunk.Row) (res float64, isNull bool, err error) { + res, isNull, err = b.args[0].EvalReal(ctx, row) if b.inUnion && mysql.HasUnsignedFlag(b.tp.GetFlag()) && res < 0 { res = 0 } @@ -971,8 +971,8 @@ func (b *builtinCastRealAsIntSig) Clone() builtinFunc { return newSig } -func (b *builtinCastRealAsIntSig) evalInt(_ sessionctx.Context, row chunk.Row) (res int64, isNull bool, err error) { - val, isNull, err := b.args[0].EvalReal(b.ctx, row) +func (b *builtinCastRealAsIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (res int64, isNull bool, err error) { + val, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -982,12 +982,12 @@ func (b *builtinCastRealAsIntSig) evalInt(_ sessionctx.Context, row chunk.Row) ( res = 0 } else { var uintVal uint64 - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx uintVal, err = types.ConvertFloatToUint(sc.TypeFlags(), val, types.IntergerUnsignedUpperBound(mysql.TypeLonglong), mysql.TypeLonglong) res = int64(uintVal) } if types.ErrOverflow.Equal(err) { - err = b.ctx.GetSessionVars().StmtCtx.HandleOverflow(err, err) + err = ctx.GetSessionVars().StmtCtx.HandleOverflow(err, err) } return res, isNull, err } @@ -1002,8 +1002,8 @@ func (b *builtinCastRealAsDecimalSig) Clone() builtinFunc { return newSig } -func (b *builtinCastRealAsDecimalSig) evalDecimal(_ sessionctx.Context, row chunk.Row) (res *types.MyDecimal, isNull bool, err error) { - val, isNull, err := b.args[0].EvalReal(b.ctx, row) +func (b *builtinCastRealAsDecimalSig) evalDecimal(ctx sessionctx.Context, row chunk.Row) (res *types.MyDecimal, isNull bool, err error) { + val, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -1012,7 +1012,7 @@ func (b *builtinCastRealAsDecimalSig) evalDecimal(_ sessionctx.Context, row chun err = res.FromFloat64(val) if types.ErrOverflow.Equal(err) { warnErr := types.ErrTruncatedWrongVal.GenWithStackByArgs("DECIMAL", b.args[0]) - err = b.ctx.GetSessionVars().StmtCtx.HandleOverflow(err, warnErr) + err = ctx.GetSessionVars().StmtCtx.HandleOverflow(err, warnErr) } else if types.ErrTruncated.Equal(err) { // This behavior is consistent with MySQL. err = nil @@ -1021,7 +1021,7 @@ func (b *builtinCastRealAsDecimalSig) evalDecimal(_ sessionctx.Context, row chun return res, false, err } } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx res, err = types.ProduceDecWithSpecifiedTp(sc.TypeCtx(), res, b.tp) err = sc.HandleOverflow(err, err) return res, false, err @@ -1037,8 +1037,8 @@ func (b *builtinCastRealAsStringSig) Clone() builtinFunc { return newSig } -func (b *builtinCastRealAsStringSig) evalString(_ sessionctx.Context, row chunk.Row) (res string, isNull bool, err error) { - val, isNull, err := b.args[0].EvalReal(b.ctx, row) +func (b *builtinCastRealAsStringSig) evalString(ctx sessionctx.Context, row chunk.Row) (res string, isNull bool, err error) { + val, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -1050,11 +1050,11 @@ func (b *builtinCastRealAsStringSig) evalString(_ sessionctx.Context, row chunk. // If we strconv.FormatFloat the value with 64bits, the result is incorrect! bits = 32 } - res, err = types.ProduceStrWithSpecifiedTp(strconv.FormatFloat(val, 'f', -1, bits), b.tp, b.ctx.GetSessionVars().StmtCtx.TypeCtx(), false) + res, err = types.ProduceStrWithSpecifiedTp(strconv.FormatFloat(val, 'f', -1, bits), b.tp, ctx.GetSessionVars().StmtCtx.TypeCtx(), false) if err != nil { return res, false, err } - return padZeroForBinaryType(res, b.tp, b.ctx) + return padZeroForBinaryType(res, b.tp, ctx) } type builtinCastRealAsTimeSig struct { @@ -1067,8 +1067,8 @@ func (b *builtinCastRealAsTimeSig) Clone() builtinFunc { return newSig } -func (b *builtinCastRealAsTimeSig) evalTime(_ sessionctx.Context, row chunk.Row) (types.Time, bool, error) { - val, isNull, err := b.args[0].EvalReal(b.ctx, row) +func (b *builtinCastRealAsTimeSig) evalTime(ctx sessionctx.Context, row chunk.Row) (types.Time, bool, error) { + val, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return types.ZeroTime, true, err } @@ -1077,10 +1077,10 @@ func (b *builtinCastRealAsTimeSig) evalTime(_ sessionctx.Context, row chunk.Row) if fv == "0" { return types.ZeroTime, false, nil } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx res, err := types.ParseTimeFromFloatString(sc.TypeCtx(), fv, b.tp.GetType(), b.tp.GetDecimal()) if err != nil { - return types.ZeroTime, true, handleInvalidTimeError(b.ctx, err) + return types.ZeroTime, true, handleInvalidTimeError(ctx, err) } if b.tp.GetType() == mysql.TypeDate { // Truncate hh:mm:ss part if the type is Date. @@ -1099,15 +1099,15 @@ func (b *builtinCastRealAsDurationSig) Clone() builtinFunc { return newSig } -func (b *builtinCastRealAsDurationSig) evalDuration(_ sessionctx.Context, row chunk.Row) (res types.Duration, isNull bool, err error) { - val, isNull, err := b.args[0].EvalReal(b.ctx, row) +func (b *builtinCastRealAsDurationSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (res types.Duration, isNull bool, err error) { + val, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return res, isNull, err } - res, _, err = types.ParseDuration(b.ctx.GetSessionVars().StmtCtx.TypeCtx(), strconv.FormatFloat(val, 'f', -1, 64), b.tp.GetDecimal()) + res, _, err = types.ParseDuration(ctx.GetSessionVars().StmtCtx.TypeCtx(), strconv.FormatFloat(val, 'f', -1, 64), b.tp.GetDecimal()) if err != nil { if types.ErrTruncatedWrongVal.Equal(err) { - err = b.ctx.GetSessionVars().StmtCtx.HandleTruncate(err) + err = ctx.GetSessionVars().StmtCtx.HandleTruncate(err) // ErrTruncatedWrongVal needs to be considered NULL. return res, true, err } @@ -1125,8 +1125,8 @@ func (b *builtinCastDecimalAsDecimalSig) Clone() builtinFunc { return newSig } -func (b *builtinCastDecimalAsDecimalSig) evalDecimal(_ sessionctx.Context, row chunk.Row) (res *types.MyDecimal, isNull bool, err error) { - evalDecimal, isNull, err := b.args[0].EvalDecimal(b.ctx, row) +func (b *builtinCastDecimalAsDecimalSig) evalDecimal(ctx sessionctx.Context, row chunk.Row) (res *types.MyDecimal, isNull bool, err error) { + evalDecimal, isNull, err := b.args[0].EvalDecimal(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -1134,7 +1134,7 @@ func (b *builtinCastDecimalAsDecimalSig) evalDecimal(_ sessionctx.Context, row c if !(b.inUnion && mysql.HasUnsignedFlag(b.tp.GetFlag()) && evalDecimal.IsNegative()) { *res = *evalDecimal } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx res, err = types.ProduceDecWithSpecifiedTp(sc.TypeCtx(), res, b.tp) err = sc.HandleOverflow(err, err) return res, false, err @@ -1150,8 +1150,8 @@ func (b *builtinCastDecimalAsIntSig) Clone() builtinFunc { return newSig } -func (b *builtinCastDecimalAsIntSig) evalInt(_ sessionctx.Context, row chunk.Row) (res int64, isNull bool, err error) { - val, isNull, err := b.args[0].EvalDecimal(b.ctx, row) +func (b *builtinCastDecimalAsIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (res int64, isNull bool, err error) { + val, isNull, err := b.args[0].EvalDecimal(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -1175,7 +1175,7 @@ func (b *builtinCastDecimalAsIntSig) evalInt(_ sessionctx.Context, row chunk.Row if types.ErrOverflow.Equal(err) { warnErr := types.ErrTruncatedWrongVal.GenWithStackByArgs("DECIMAL", val) - err = b.ctx.GetSessionVars().StmtCtx.HandleOverflow(err, warnErr) + err = ctx.GetSessionVars().StmtCtx.HandleOverflow(err, warnErr) } return res, false, err @@ -1191,17 +1191,17 @@ func (b *builtinCastDecimalAsStringSig) Clone() builtinFunc { return newSig } -func (b *builtinCastDecimalAsStringSig) evalString(_ sessionctx.Context, row chunk.Row) (res string, isNull bool, err error) { - val, isNull, err := b.args[0].EvalDecimal(b.ctx, row) +func (b *builtinCastDecimalAsStringSig) evalString(ctx sessionctx.Context, row chunk.Row) (res string, isNull bool, err error) { + val, isNull, err := b.args[0].EvalDecimal(ctx, row) if isNull || err != nil { return res, isNull, err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx res, err = types.ProduceStrWithSpecifiedTp(string(val.ToString()), b.tp, sc.TypeCtx(), false) if err != nil { return res, false, err } - return padZeroForBinaryType(res, b.tp, b.ctx) + return padZeroForBinaryType(res, b.tp, ctx) } type builtinCastDecimalAsRealSig struct { @@ -1228,8 +1228,8 @@ func (b *builtinCastDecimalAsRealSig) Clone() builtinFunc { return newSig } -func (b *builtinCastDecimalAsRealSig) evalReal(_ sessionctx.Context, row chunk.Row) (res float64, isNull bool, err error) { - val, isNull, err := b.args[0].EvalDecimal(b.ctx, row) +func (b *builtinCastDecimalAsRealSig) evalReal(ctx sessionctx.Context, row chunk.Row) (res float64, isNull bool, err error) { + val, isNull, err := b.args[0].EvalDecimal(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -1251,15 +1251,15 @@ func (b *builtinCastDecimalAsTimeSig) Clone() builtinFunc { return newSig } -func (b *builtinCastDecimalAsTimeSig) evalTime(_ sessionctx.Context, row chunk.Row) (res types.Time, isNull bool, err error) { - val, isNull, err := b.args[0].EvalDecimal(b.ctx, row) +func (b *builtinCastDecimalAsTimeSig) evalTime(ctx sessionctx.Context, row chunk.Row) (res types.Time, isNull bool, err error) { + val, isNull, err := b.args[0].EvalDecimal(ctx, row) if isNull || err != nil { return res, isNull, err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx res, err = types.ParseTimeFromFloatString(sc.TypeCtx(), string(val.ToString()), b.tp.GetType(), b.tp.GetDecimal()) if err != nil { - return types.ZeroTime, true, handleInvalidTimeError(b.ctx, err) + return types.ZeroTime, true, handleInvalidTimeError(ctx, err) } if b.tp.GetType() == mysql.TypeDate { // Truncate hh:mm:ss part if the type is Date. @@ -1278,14 +1278,14 @@ func (b *builtinCastDecimalAsDurationSig) Clone() builtinFunc { return newSig } -func (b *builtinCastDecimalAsDurationSig) evalDuration(_ sessionctx.Context, row chunk.Row) (res types.Duration, isNull bool, err error) { - val, isNull, err := b.args[0].EvalDecimal(b.ctx, row) +func (b *builtinCastDecimalAsDurationSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (res types.Duration, isNull bool, err error) { + val, isNull, err := b.args[0].EvalDecimal(ctx, row) if isNull || err != nil { return res, true, err } - res, _, err = types.ParseDuration(b.ctx.GetSessionVars().StmtCtx.TypeCtx(), string(val.ToString()), b.tp.GetDecimal()) + res, _, err = types.ParseDuration(ctx.GetSessionVars().StmtCtx.TypeCtx(), string(val.ToString()), b.tp.GetDecimal()) if types.ErrTruncatedWrongVal.Equal(err) { - err = b.ctx.GetSessionVars().StmtCtx.HandleTruncate(err) + err = ctx.GetSessionVars().StmtCtx.HandleTruncate(err) // ErrTruncatedWrongVal needs to be considered NULL. return res, true, err } @@ -1302,16 +1302,16 @@ func (b *builtinCastStringAsStringSig) Clone() builtinFunc { return newSig } -func (b *builtinCastStringAsStringSig) evalString(_ sessionctx.Context, row chunk.Row) (res string, isNull bool, err error) { - res, isNull, err = b.args[0].EvalString(b.ctx, row) +func (b *builtinCastStringAsStringSig) evalString(ctx sessionctx.Context, row chunk.Row) (res string, isNull bool, err error) { + res, isNull, err = b.args[0].EvalString(ctx, row) if isNull || err != nil { return res, isNull, err } - res, err = types.ProduceStrWithSpecifiedTp(res, b.tp, b.ctx.GetSessionVars().StmtCtx.TypeCtx(), false) + res, err = types.ProduceStrWithSpecifiedTp(res, b.tp, ctx.GetSessionVars().StmtCtx.TypeCtx(), false) if err != nil { return res, false, err } - return padZeroForBinaryType(res, b.tp, b.ctx) + return padZeroForBinaryType(res, b.tp, ctx) } type builtinCastStringAsIntSig struct { @@ -1328,13 +1328,13 @@ func (b *builtinCastStringAsIntSig) Clone() builtinFunc { // see https://dev.mysql.com/doc/refman/5.7/en/out-of-range-and-overflow.html. // When an out-of-range value is assigned to an integer column, MySQL stores the value representing the corresponding endpoint of the column data type range. If it is in select statement, it will return the // endpoint value with a warning. -func (b *builtinCastStringAsIntSig) handleOverflow(origRes int64, origStr string, origErr error, isNegative bool) (res int64, err error) { +func (*builtinCastStringAsIntSig) handleOverflow(ctx sessionctx.Context, origRes int64, origStr string, origErr error, isNegative bool) (res int64, err error) { res, err = origRes, origErr if err == nil { return } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx if types.ErrOverflow.Equal(origErr) { if isNegative { res = math.MinInt64 @@ -1348,17 +1348,17 @@ func (b *builtinCastStringAsIntSig) handleOverflow(origRes int64, origStr string return } -func (b *builtinCastStringAsIntSig) evalInt(_ sessionctx.Context, row chunk.Row) (res int64, isNull bool, err error) { +func (b *builtinCastStringAsIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (res int64, isNull bool, err error) { if b.args[0].GetType().Hybrid() || IsBinaryLiteral(b.args[0]) { - return b.args[0].EvalInt(b.ctx, row) + return b.args[0].EvalInt(ctx, row) } // Take the implicit evalInt path if possible. if CanImplicitEvalInt(b.args[0]) { - return b.args[0].EvalInt(b.ctx, row) + return b.args[0].EvalInt(ctx, row) } - val, isNull, err := b.args[0].EvalString(b.ctx, row) + val, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -1370,7 +1370,7 @@ func (b *builtinCastStringAsIntSig) evalInt(_ sessionctx.Context, row chunk.Row) } var ures uint64 - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx if !isNegative { ures, err = types.StrToUint(sc.TypeCtx(), val, true) res = int64(ures) @@ -1388,7 +1388,7 @@ func (b *builtinCastStringAsIntSig) evalInt(_ sessionctx.Context, row chunk.Row) } } - res, err = b.handleOverflow(res, val, err, isNegative) + res, err = b.handleOverflow(ctx, res, val, err, isNegative) return res, false, err } @@ -1402,21 +1402,21 @@ func (b *builtinCastStringAsRealSig) Clone() builtinFunc { return newSig } -func (b *builtinCastStringAsRealSig) evalReal(_ sessionctx.Context, row chunk.Row) (res float64, isNull bool, err error) { +func (b *builtinCastStringAsRealSig) evalReal(ctx sessionctx.Context, row chunk.Row) (res float64, isNull bool, err error) { if IsBinaryLiteral(b.args[0]) { - return b.args[0].EvalReal(b.ctx, row) + return b.args[0].EvalReal(ctx, row) } // Take the implicit evalReal path if possible. if CanImplicitEvalReal(b.args[0]) { - return b.args[0].EvalReal(b.ctx, row) + return b.args[0].EvalReal(ctx, row) } - val, isNull, err := b.args[0].EvalString(b.ctx, row) + val, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return res, isNull, err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx res, err = types.StrToFloat(sc.TypeCtx(), val, true) if err != nil { return 0, false, err @@ -1438,18 +1438,18 @@ func (b *builtinCastStringAsDecimalSig) Clone() builtinFunc { return newSig } -func (b *builtinCastStringAsDecimalSig) evalDecimal(_ sessionctx.Context, row chunk.Row) (res *types.MyDecimal, isNull bool, err error) { +func (b *builtinCastStringAsDecimalSig) evalDecimal(ctx sessionctx.Context, row chunk.Row) (res *types.MyDecimal, isNull bool, err error) { if IsBinaryLiteral(b.args[0]) { - return b.args[0].EvalDecimal(b.ctx, row) + return b.args[0].EvalDecimal(ctx, row) } - val, isNull, err := b.args[0].EvalString(b.ctx, row) + val, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return res, isNull, err } val = strings.TrimSpace(val) isNegative := len(val) > 1 && val[0] == '-' res = new(types.MyDecimal) - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx if !(b.inUnion && mysql.HasUnsignedFlag(b.tp.GetFlag()) && isNegative) { err = res.FromString([]byte(val)) if err == types.ErrTruncated { @@ -1475,18 +1475,18 @@ func (b *builtinCastStringAsTimeSig) Clone() builtinFunc { return newSig } -func (b *builtinCastStringAsTimeSig) evalTime(_ sessionctx.Context, row chunk.Row) (res types.Time, isNull bool, err error) { - val, isNull, err := b.args[0].EvalString(b.ctx, row) +func (b *builtinCastStringAsTimeSig) evalTime(ctx sessionctx.Context, row chunk.Row) (res types.Time, isNull bool, err error) { + val, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return res, isNull, err } - sc := b.ctx.GetSessionVars().StmtCtx - res, err = types.ParseTime(sc.TypeCtx(), val, b.tp.GetType(), b.tp.GetDecimal(), nil) + sc := ctx.GetSessionVars().StmtCtx + res, err = types.ParseTime(sc.TypeCtx(), val, b.tp.GetType(), b.tp.GetDecimal()) if err != nil { - return types.ZeroTime, true, handleInvalidTimeError(b.ctx, err) + return types.ZeroTime, true, handleInvalidTimeError(ctx, err) } - if res.IsZero() && b.ctx.GetSessionVars().SQLMode.HasNoZeroDateMode() { - return types.ZeroTime, true, handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, res.String())) + if res.IsZero() && ctx.GetSessionVars().SQLMode.HasNoZeroDateMode() { + return types.ZeroTime, true, handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, res.String())) } if b.tp.GetType() == mysql.TypeDate { // Truncate hh:mm:ss part if the type is Date. @@ -1505,14 +1505,14 @@ func (b *builtinCastStringAsDurationSig) Clone() builtinFunc { return newSig } -func (b *builtinCastStringAsDurationSig) evalDuration(_ sessionctx.Context, row chunk.Row) (res types.Duration, isNull bool, err error) { - val, isNull, err := b.args[0].EvalString(b.ctx, row) +func (b *builtinCastStringAsDurationSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (res types.Duration, isNull bool, err error) { + val, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return res, isNull, err } - res, isNull, err = types.ParseDuration(b.ctx.GetSessionVars().StmtCtx.TypeCtx(), val, b.tp.GetDecimal()) + res, isNull, err = types.ParseDuration(ctx.GetSessionVars().StmtCtx.TypeCtx(), val, b.tp.GetDecimal()) if types.ErrTruncatedWrongVal.Equal(err) { - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx err = sc.HandleTruncate(err) } return res, isNull, err @@ -1528,15 +1528,15 @@ func (b *builtinCastTimeAsTimeSig) Clone() builtinFunc { return newSig } -func (b *builtinCastTimeAsTimeSig) evalTime(_ sessionctx.Context, row chunk.Row) (res types.Time, isNull bool, err error) { - res, isNull, err = b.args[0].EvalTime(b.ctx, row) +func (b *builtinCastTimeAsTimeSig) evalTime(ctx sessionctx.Context, row chunk.Row) (res types.Time, isNull bool, err error) { + res, isNull, err = b.args[0].EvalTime(ctx, row) if isNull || err != nil { return res, isNull, err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx if res, err = res.Convert(sc.TypeCtx(), b.tp.GetType()); err != nil { - return types.ZeroTime, true, handleInvalidTimeError(b.ctx, err) + return types.ZeroTime, true, handleInvalidTimeError(ctx, err) } res, err = res.RoundFrac(sc.TypeCtx(), b.tp.GetDecimal()) if b.tp.GetType() == mysql.TypeDate { @@ -1557,12 +1557,12 @@ func (b *builtinCastTimeAsIntSig) Clone() builtinFunc { return newSig } -func (b *builtinCastTimeAsIntSig) evalInt(_ sessionctx.Context, row chunk.Row) (res int64, isNull bool, err error) { - val, isNull, err := b.args[0].EvalTime(b.ctx, row) +func (b *builtinCastTimeAsIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (res int64, isNull bool, err error) { + val, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { return res, isNull, err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx t, err := val.RoundFrac(sc.TypeCtx(), types.DefaultFsp) if err != nil { return res, false, err @@ -1581,8 +1581,8 @@ func (b *builtinCastTimeAsRealSig) Clone() builtinFunc { return newSig } -func (b *builtinCastTimeAsRealSig) evalReal(_ sessionctx.Context, row chunk.Row) (res float64, isNull bool, err error) { - val, isNull, err := b.args[0].EvalTime(b.ctx, row) +func (b *builtinCastTimeAsRealSig) evalReal(ctx sessionctx.Context, row chunk.Row) (res float64, isNull bool, err error) { + val, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -1600,12 +1600,12 @@ func (b *builtinCastTimeAsDecimalSig) Clone() builtinFunc { return newSig } -func (b *builtinCastTimeAsDecimalSig) evalDecimal(_ sessionctx.Context, row chunk.Row) (res *types.MyDecimal, isNull bool, err error) { - val, isNull, err := b.args[0].EvalTime(b.ctx, row) +func (b *builtinCastTimeAsDecimalSig) evalDecimal(ctx sessionctx.Context, row chunk.Row) (res *types.MyDecimal, isNull bool, err error) { + val, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { return res, isNull, err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx res, err = types.ProduceDecWithSpecifiedTp(sc.TypeCtx(), val.ToNumber(), b.tp) err = sc.HandleOverflow(err, err) return res, false, err @@ -1621,17 +1621,17 @@ func (b *builtinCastTimeAsStringSig) Clone() builtinFunc { return newSig } -func (b *builtinCastTimeAsStringSig) evalString(_ sessionctx.Context, row chunk.Row) (res string, isNull bool, err error) { - val, isNull, err := b.args[0].EvalTime(b.ctx, row) +func (b *builtinCastTimeAsStringSig) evalString(ctx sessionctx.Context, row chunk.Row) (res string, isNull bool, err error) { + val, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { return res, isNull, err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx res, err = types.ProduceStrWithSpecifiedTp(val.String(), b.tp, sc.TypeCtx(), false) if err != nil { return res, false, err } - return padZeroForBinaryType(res, b.tp, b.ctx) + return padZeroForBinaryType(res, b.tp, ctx) } type builtinCastTimeAsDurationSig struct { @@ -1644,8 +1644,8 @@ func (b *builtinCastTimeAsDurationSig) Clone() builtinFunc { return newSig } -func (b *builtinCastTimeAsDurationSig) evalDuration(_ sessionctx.Context, row chunk.Row) (res types.Duration, isNull bool, err error) { - val, isNull, err := b.args[0].EvalTime(b.ctx, row) +func (b *builtinCastTimeAsDurationSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (res types.Duration, isNull bool, err error) { + val, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -1653,7 +1653,7 @@ func (b *builtinCastTimeAsDurationSig) evalDuration(_ sessionctx.Context, row ch if err != nil { return res, false, err } - res, err = res.RoundFrac(b.tp.GetDecimal(), b.ctx.GetSessionVars().Location()) + res, err = res.RoundFrac(b.tp.GetDecimal(), ctx.GetSessionVars().Location()) return res, false, err } @@ -1667,12 +1667,12 @@ func (b *builtinCastDurationAsDurationSig) Clone() builtinFunc { return newSig } -func (b *builtinCastDurationAsDurationSig) evalDuration(_ sessionctx.Context, row chunk.Row) (res types.Duration, isNull bool, err error) { - res, isNull, err = b.args[0].EvalDuration(b.ctx, row) +func (b *builtinCastDurationAsDurationSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (res types.Duration, isNull bool, err error) { + res, isNull, err = b.args[0].EvalDuration(ctx, row) if isNull || err != nil { return res, isNull, err } - res, err = res.RoundFrac(b.tp.GetDecimal(), b.ctx.GetSessionVars().Location()) + res, err = res.RoundFrac(b.tp.GetDecimal(), ctx.GetSessionVars().Location()) return res, false, err } @@ -1686,16 +1686,22 @@ func (b *builtinCastDurationAsIntSig) Clone() builtinFunc { return newSig } -func (b *builtinCastDurationAsIntSig) evalInt(_ sessionctx.Context, row chunk.Row) (res int64, isNull bool, err error) { - val, isNull, err := b.args[0].EvalDuration(b.ctx, row) +func (b *builtinCastDurationAsIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (res int64, isNull bool, err error) { + val, isNull, err := b.args[0].EvalDuration(ctx, row) if isNull || err != nil { return res, isNull, err } - dur, err := val.RoundFrac(types.DefaultFsp, b.ctx.GetSessionVars().Location()) - if err != nil { - return res, false, err + + if b.tp.GetType() == mysql.TypeYear { + res, err = val.ConvertToYear(ctx.GetSessionVars().StmtCtx.TypeCtx()) + } else { + var dur types.Duration + dur, err = val.RoundFrac(types.DefaultFsp, ctx.GetSessionVars().Location()) + if err != nil { + return res, false, err + } + res, err = dur.ToNumber().ToInt() } - res, err = dur.ToNumber().ToInt() return res, false, err } @@ -1709,8 +1715,8 @@ func (b *builtinCastDurationAsRealSig) Clone() builtinFunc { return newSig } -func (b *builtinCastDurationAsRealSig) evalReal(_ sessionctx.Context, row chunk.Row) (res float64, isNull bool, err error) { - val, isNull, err := b.args[0].EvalDuration(b.ctx, row) +func (b *builtinCastDurationAsRealSig) evalReal(ctx sessionctx.Context, row chunk.Row) (res float64, isNull bool, err error) { + val, isNull, err := b.args[0].EvalDuration(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -1731,15 +1737,15 @@ func (b *builtinCastDurationAsDecimalSig) Clone() builtinFunc { return newSig } -func (b *builtinCastDurationAsDecimalSig) evalDecimal(_ sessionctx.Context, row chunk.Row) (res *types.MyDecimal, isNull bool, err error) { - val, isNull, err := b.args[0].EvalDuration(b.ctx, row) +func (b *builtinCastDurationAsDecimalSig) evalDecimal(ctx sessionctx.Context, row chunk.Row) (res *types.MyDecimal, isNull bool, err error) { + val, isNull, err := b.args[0].EvalDuration(ctx, row) if isNull || err != nil { return res, isNull, err } if val.Fsp, err = types.CheckFsp(val.Fsp); err != nil { return res, false, err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx res, err = types.ProduceDecWithSpecifiedTp(sc.TypeCtx(), val.ToNumber(), b.tp) err = sc.HandleOverflow(err, err) return res, false, err @@ -1755,17 +1761,17 @@ func (b *builtinCastDurationAsStringSig) Clone() builtinFunc { return newSig } -func (b *builtinCastDurationAsStringSig) evalString(_ sessionctx.Context, row chunk.Row) (res string, isNull bool, err error) { - val, isNull, err := b.args[0].EvalDuration(b.ctx, row) +func (b *builtinCastDurationAsStringSig) evalString(ctx sessionctx.Context, row chunk.Row) (res string, isNull bool, err error) { + val, isNull, err := b.args[0].EvalDuration(ctx, row) if isNull || err != nil { return res, isNull, err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx res, err = types.ProduceStrWithSpecifiedTp(val.String(), b.tp, sc.TypeCtx(), false) if err != nil { return res, false, err } - return padZeroForBinaryType(res, b.tp, b.ctx) + return padZeroForBinaryType(res, b.tp, ctx) } func padZeroForBinaryType(s string, tp *types.FieldType, ctx sessionctx.Context) (string, bool, error) { @@ -1795,19 +1801,19 @@ func (b *builtinCastDurationAsTimeSig) Clone() builtinFunc { return newSig } -func (b *builtinCastDurationAsTimeSig) evalTime(_ sessionctx.Context, row chunk.Row) (res types.Time, isNull bool, err error) { - val, isNull, err := b.args[0].EvalDuration(b.ctx, row) +func (b *builtinCastDurationAsTimeSig) evalTime(ctx sessionctx.Context, row chunk.Row) (res types.Time, isNull bool, err error) { + val, isNull, err := b.args[0].EvalDuration(ctx, row) if isNull || err != nil { return res, isNull, err } - sc := b.ctx.GetSessionVars().StmtCtx - ts, err := getStmtTimestamp(b.ctx) + sc := ctx.GetSessionVars().StmtCtx + ts, err := getStmtTimestamp(ctx) if err != nil { ts = gotime.Now() } res, err = val.ConvertToTimeWithTimestamp(sc.TypeCtx(), b.tp.GetType(), ts) if err != nil { - return types.ZeroTime, true, handleInvalidTimeError(b.ctx, err) + return types.ZeroTime, true, handleInvalidTimeError(ctx, err) } res, err = res.RoundFrac(sc.TypeCtx(), b.tp.GetDecimal()) return res, false, err @@ -1823,8 +1829,8 @@ func (b *builtinCastJSONAsJSONSig) Clone() builtinFunc { return newSig } -func (b *builtinCastJSONAsJSONSig) evalJSON(_ sessionctx.Context, row chunk.Row) (val types.BinaryJSON, isNull bool, err error) { - return b.args[0].EvalJSON(b.ctx, row) +func (b *builtinCastJSONAsJSONSig) evalJSON(ctx sessionctx.Context, row chunk.Row) (val types.BinaryJSON, isNull bool, err error) { + return b.args[0].EvalJSON(ctx, row) } type builtinCastJSONAsIntSig struct { @@ -1837,12 +1843,12 @@ func (b *builtinCastJSONAsIntSig) Clone() builtinFunc { return newSig } -func (b *builtinCastJSONAsIntSig) evalInt(_ sessionctx.Context, row chunk.Row) (res int64, isNull bool, err error) { - val, isNull, err := b.args[0].EvalJSON(b.ctx, row) +func (b *builtinCastJSONAsIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (res int64, isNull bool, err error) { + val, isNull, err := b.args[0].EvalJSON(ctx, row) if isNull || err != nil { return res, isNull, err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx res, err = types.ConvertJSONToInt64(sc.TypeCtx(), val, mysql.HasUnsignedFlag(b.tp.GetFlag())) err = sc.HandleOverflow(err, err) return @@ -1858,12 +1864,12 @@ func (b *builtinCastJSONAsRealSig) Clone() builtinFunc { return newSig } -func (b *builtinCastJSONAsRealSig) evalReal(_ sessionctx.Context, row chunk.Row) (res float64, isNull bool, err error) { - val, isNull, err := b.args[0].EvalJSON(b.ctx, row) +func (b *builtinCastJSONAsRealSig) evalReal(ctx sessionctx.Context, row chunk.Row) (res float64, isNull bool, err error) { + val, isNull, err := b.args[0].EvalJSON(ctx, row) if isNull || err != nil { return res, isNull, err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx res, err = types.ConvertJSONToFloat(sc.TypeCtx(), val) return } @@ -1878,12 +1884,12 @@ func (b *builtinCastJSONAsDecimalSig) Clone() builtinFunc { return newSig } -func (b *builtinCastJSONAsDecimalSig) evalDecimal(_ sessionctx.Context, row chunk.Row) (res *types.MyDecimal, isNull bool, err error) { - val, isNull, err := b.args[0].EvalJSON(b.ctx, row) +func (b *builtinCastJSONAsDecimalSig) evalDecimal(ctx sessionctx.Context, row chunk.Row) (res *types.MyDecimal, isNull bool, err error) { + val, isNull, err := b.args[0].EvalJSON(ctx, row) if isNull || err != nil { return res, isNull, err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx res, err = types.ConvertJSONToDecimal(sc.TypeCtx(), val) if err != nil { return res, false, err @@ -1903,12 +1909,12 @@ func (b *builtinCastJSONAsStringSig) Clone() builtinFunc { return newSig } -func (b *builtinCastJSONAsStringSig) evalString(_ sessionctx.Context, row chunk.Row) (res string, isNull bool, err error) { - val, isNull, err := b.args[0].EvalJSON(b.ctx, row) +func (b *builtinCastJSONAsStringSig) evalString(ctx sessionctx.Context, row chunk.Row) (res string, isNull bool, err error) { + val, isNull, err := b.args[0].EvalJSON(ctx, row) if isNull || err != nil { return res, isNull, err } - s, err := types.ProduceStrWithSpecifiedTp(val.String(), b.tp, b.ctx.GetSessionVars().StmtCtx.TypeCtx(), false) + s, err := types.ProduceStrWithSpecifiedTp(val.String(), b.tp, ctx.GetSessionVars().StmtCtx.TypeCtx(), false) if err != nil { return res, false, err } @@ -1925,8 +1931,8 @@ func (b *builtinCastJSONAsTimeSig) Clone() builtinFunc { return newSig } -func (b *builtinCastJSONAsTimeSig) evalTime(_ sessionctx.Context, row chunk.Row) (res types.Time, isNull bool, err error) { - val, isNull, err := b.args[0].EvalJSON(b.ctx, row) +func (b *builtinCastJSONAsTimeSig) evalTime(ctx sessionctx.Context, row chunk.Row) (res types.Time, isNull bool, err error) { + val, isNull, err := b.args[0].EvalJSON(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -1943,14 +1949,14 @@ func (b *builtinCastJSONAsTimeSig) evalTime(_ sessionctx.Context, row chunk.Row) case types.JSONTypeCodeDuration: duration := val.GetDuration() - sc := b.ctx.GetSessionVars().StmtCtx - ts, err := getStmtTimestamp(b.ctx) + sc := ctx.GetSessionVars().StmtCtx + ts, err := getStmtTimestamp(ctx) if err != nil { ts = gotime.Now() } res, err = duration.ConvertToTimeWithTimestamp(sc.TypeCtx(), b.tp.GetType(), ts) if err != nil { - return types.ZeroTime, true, handleInvalidTimeError(b.ctx, err) + return types.ZeroTime, true, handleInvalidTimeError(ctx, err) } res, err = res.RoundFrac(sc.TypeCtx(), b.tp.GetDecimal()) return res, isNull, err @@ -1959,10 +1965,10 @@ func (b *builtinCastJSONAsTimeSig) evalTime(_ sessionctx.Context, row chunk.Row) if err != nil { return res, false, err } - sc := b.ctx.GetSessionVars().StmtCtx - res, err = types.ParseTime(sc.TypeCtx(), s, b.tp.GetType(), b.tp.GetDecimal(), nil) + sc := ctx.GetSessionVars().StmtCtx + res, err = types.ParseTime(sc.TypeCtx(), s, b.tp.GetType(), b.tp.GetDecimal()) if err != nil { - return types.ZeroTime, true, handleInvalidTimeError(b.ctx, err) + return types.ZeroTime, true, handleInvalidTimeError(ctx, err) } if b.tp.GetType() == mysql.TypeDate { // Truncate hh:mm:ss part if the type is Date. @@ -1971,7 +1977,7 @@ func (b *builtinCastJSONAsTimeSig) evalTime(_ sessionctx.Context, row chunk.Row) return res, isNull, err default: err = types.ErrTruncatedWrongVal.GenWithStackByArgs(types.TypeStr(b.tp.GetType()), val.String()) - return res, true, b.ctx.GetSessionVars().StmtCtx.HandleTruncate(err) + return res, true, ctx.GetSessionVars().StmtCtx.HandleTruncate(err) } } @@ -1985,13 +1991,13 @@ func (b *builtinCastJSONAsDurationSig) Clone() builtinFunc { return newSig } -func (b *builtinCastJSONAsDurationSig) evalDuration(_ sessionctx.Context, row chunk.Row) (res types.Duration, isNull bool, err error) { - val, isNull, err := b.args[0].EvalJSON(b.ctx, row) +func (b *builtinCastJSONAsDurationSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (res types.Duration, isNull bool, err error) { + val, isNull, err := b.args[0].EvalJSON(ctx, row) if isNull || err != nil { return res, isNull, err } - stmtCtx := b.ctx.GetSessionVars().StmtCtx + stmtCtx := ctx.GetSessionVars().StmtCtx switch val.TypeCode { case types.JSONTypeCodeDate, types.JSONTypeCodeDatetime, types.JSONTypeCodeTimestamp: @@ -2000,7 +2006,7 @@ func (b *builtinCastJSONAsDurationSig) evalDuration(_ sessionctx.Context, row ch if err != nil { return res, false, err } - res, err = res.RoundFrac(b.tp.GetDecimal(), b.ctx.GetSessionVars().Location()) + res, err = res.RoundFrac(b.tp.GetDecimal(), ctx.GetSessionVars().Location()) return res, isNull, err case types.JSONTypeCodeDuration: res = val.GetDuration() @@ -2012,7 +2018,7 @@ func (b *builtinCastJSONAsDurationSig) evalDuration(_ sessionctx.Context, row ch } res, _, err = types.ParseDuration(stmtCtx.TypeCtx(), s, b.tp.GetDecimal()) if types.ErrTruncatedWrongVal.Equal(err) { - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx err = sc.HandleTruncate(err) } return res, isNull, err @@ -2141,12 +2147,13 @@ func BuildCastFunctionWithCheck(ctx sessionctx.Context, expr Expression, tp *typ FuncName: model.NewCIStr(ast.Cast), RetType: tp, Function: f, + ctx: ctx, } // We do not fold CAST if the eval type of this scalar function is ETJson // since we may reset the flag of the field type of CastAsJson later which // would affect the evaluation of it. if tp.EvalType() != types.ETJson && err == nil { - res = FoldConstant(res) + res = FoldConstant(ctx, res) } return res, err } @@ -2387,7 +2394,7 @@ func TryPushCastIntoControlFunctionForHybridType(ctx sessionctx.Context, expr Ex if err != nil { return expr } - sf.RetType, sf.Function = f.getRetTp(), f + sf.RetType, sf.Function, sf.ctx = f.getRetTp(), f, ctx return sf } case ast.Case: @@ -2412,7 +2419,7 @@ func TryPushCastIntoControlFunctionForHybridType(ctx sessionctx.Context, expr Ex if err != nil { return expr } - sf.RetType, sf.Function = f.getRetTp(), f + sf.RetType, sf.Function, sf.ctx = f.getRetTp(), f, ctx return sf case ast.Elt: hasHybrid := false @@ -2430,7 +2437,7 @@ func TryPushCastIntoControlFunctionForHybridType(ctx sessionctx.Context, expr Ex if err != nil { return expr } - sf.RetType, sf.Function = f.getRetTp(), f + sf.RetType, sf.Function, sf.ctx = f.getRetTp(), f, ctx return sf default: return expr diff --git a/pkg/expression/builtin_cast_bench_test.go b/pkg/expression/builtin_cast_bench_test.go index e2484194d0e34..cb6084747f8c9 100644 --- a/pkg/expression/builtin_cast_bench_test.go +++ b/pkg/expression/builtin_cast_bench_test.go @@ -19,14 +19,15 @@ import ( "testing" "github.com/pingcap/tidb/pkg/parser/mysql" + "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/chunk" "github.com/pingcap/tidb/pkg/util/mock" ) -func genCastIntAsInt() (*builtinCastIntAsIntSig, *chunk.Chunk, *chunk.Column) { +func genCastIntAsInt(ctx sessionctx.Context) (*builtinCastIntAsIntSig, *chunk.Chunk, *chunk.Column) { col := &Column{RetType: types.NewFieldType(mysql.TypeLonglong), Index: 0} - baseFunc, err := newBaseBuiltinFunc(mock.NewContext(), "", []Expression{col}, types.NewFieldType(mysql.TypeLonglong)) + baseFunc, err := newBaseBuiltinFunc(ctx, "", []Expression{col}, types.NewFieldType(mysql.TypeLonglong)) if err != nil { panic(err) } @@ -41,8 +42,8 @@ func genCastIntAsInt() (*builtinCastIntAsIntSig, *chunk.Chunk, *chunk.Column) { } func BenchmarkCastIntAsIntRow(b *testing.B) { - cast, input, _ := genCastIntAsInt() - ctx := cast.ctx + ctx := mock.NewContext() + cast, input, _ := genCastIntAsInt(ctx) it := chunk.NewIterator4Chunk(input) b.ResetTimer() for i := 0; i < b.N; i++ { @@ -55,8 +56,8 @@ func BenchmarkCastIntAsIntRow(b *testing.B) { } func BenchmarkCastIntAsIntVec(b *testing.B) { - cast, input, result := genCastIntAsInt() - ctx := cast.ctx + ctx := mock.NewContext() + cast, input, result := genCastIntAsInt(ctx) b.ResetTimer() for i := 0; i < b.N; i++ { if err := cast.vecEvalInt(ctx, input, result); err != nil { diff --git a/pkg/expression/builtin_cast_test.go b/pkg/expression/builtin_cast_test.go index 5cbdc57bcc3e3..24b5816e86fe6 100644 --- a/pkg/expression/builtin_cast_test.go +++ b/pkg/expression/builtin_cast_test.go @@ -49,14 +49,14 @@ func TestCastFunctions(t *testing.T) { // cast("你好world" as char(5)) tp.SetCharset(charset.CharsetUTF8) f := BuildCastFunction(ctx, &Constant{Value: types.NewDatum("你好world"), RetType: tp}, tp) - res, err := f.Eval(chunk.Row{}) + res, err := f.Eval(ctx, chunk.Row{}) require.NoError(t, err) require.Equal(t, "你好wor", res.GetString()) // cast(str as char(N)), N > len([]rune(str)). // cast("a" as char(5)) f = BuildCastFunction(ctx, &Constant{Value: types.NewDatum("a"), RetType: types.NewFieldType(mysql.TypeString)}, tp) - res, err = f.Eval(chunk.Row{}) + res, err = f.Eval(ctx, chunk.Row{}) require.NoError(t, err) require.Equal(t, 1, len(res.GetString())) require.Equal(t, "a", res.GetString()) @@ -69,14 +69,14 @@ func TestCastFunctions(t *testing.T) { tp.SetCharset(charset.CharsetBin) tp.SetCollate(charset.CollationBin) f = BuildCastFunction(ctx, &Constant{Value: types.NewDatum(str), RetType: types.NewFieldType(mysql.TypeString)}, tp) - res, err = f.Eval(chunk.Row{}) + res, err = f.Eval(ctx, chunk.Row{}) require.NoError(t, err) require.Equal(t, str[:5], res.GetString()) // cast(str as binary(N)), N > len([]byte(str)). // cast("a" as binary(5)) f = BuildCastFunction(ctx, &Constant{Value: types.NewDatum("a"), RetType: types.NewFieldType(mysql.TypeString)}, tp) - res, err = f.Eval(chunk.Row{}) + res, err = f.Eval(ctx, chunk.Row{}) require.NoError(t, err) require.Equal(t, 5, len(res.GetString())) require.Equal(t, string([]byte{'a', 0x00, 0x00, 0x00, 0x00}), res.GetString()) @@ -85,7 +85,7 @@ func TestCastFunctions(t *testing.T) { // cast("a" as binary(4294967295)) tp.SetFlen(4294967295) f = BuildCastFunction(ctx, &Constant{Value: types.NewDatum("a"), RetType: types.NewFieldType(mysql.TypeString)}, tp) - res, err = f.Eval(chunk.Row{}) + res, err = f.Eval(ctx, chunk.Row{}) require.NoError(t, err) require.True(t, res.IsNull()) warnings := sc.GetWarnings() @@ -103,7 +103,7 @@ func TestCastFunctions(t *testing.T) { // cast('18446744073709551616' as unsigned); tp1 := types.NewFieldTypeBuilder().SetType(mysql.TypeLonglong).SetFlag(mysql.BinaryFlag).SetFlen(mysql.MaxIntWidth).SetCharset(charset.CharsetBin).SetCollate(charset.CollationBin).BuildP() f = BuildCastFunction(ctx, &Constant{Value: types.NewDatum("18446744073709551616"), RetType: types.NewFieldType(mysql.TypeString)}, tp1) - res, err = f.Eval(chunk.Row{}) + res, err = f.Eval(ctx, chunk.Row{}) require.NoError(t, err) require.True(t, res.GetUint64() == math.MaxUint64) @@ -114,7 +114,7 @@ func TestCastFunctions(t *testing.T) { originFlag := tp1.GetFlag() tp1.AddFlag(mysql.UnsignedFlag) f = BuildCastFunction(ctx, &Constant{Value: types.NewDatum("-1"), RetType: types.NewFieldType(mysql.TypeString)}, tp1) - res, err = f.Eval(chunk.Row{}) + res, err = f.Eval(ctx, chunk.Row{}) require.NoError(t, err) require.True(t, res.GetUint64() == 18446744073709551615) @@ -125,13 +125,13 @@ func TestCastFunctions(t *testing.T) { previousWarnings := len(sc.GetWarnings()) f = BuildCastFunction(ctx, &Constant{Value: types.NewDatum("-1"), RetType: types.NewFieldType(mysql.TypeString)}, tp1) - res, err = f.Eval(chunk.Row{}) + res, err = f.Eval(ctx, chunk.Row{}) require.NoError(t, err) require.True(t, res.GetInt64() == -1) require.True(t, len(sc.GetWarnings()) == previousWarnings) f = BuildCastFunction(ctx, &Constant{Value: types.NewDatum("-18446744073709551616"), RetType: types.NewFieldType(mysql.TypeString)}, tp1) - res, err = f.Eval(chunk.Row{}) + res, err = f.Eval(ctx, chunk.Row{}) require.NoError(t, err) limit := math.MinInt64 // 9223372036854775808 @@ -143,7 +143,7 @@ func TestCastFunctions(t *testing.T) { // cast('125e342.83' as unsigned) f = BuildCastFunction(ctx, &Constant{Value: types.NewDatum("125e342.83"), RetType: types.NewFieldType(mysql.TypeString)}, tp1) - res, err = f.Eval(chunk.Row{}) + res, err = f.Eval(ctx, chunk.Row{}) require.NoError(t, err) require.True(t, res.GetUint64() == 125) @@ -153,7 +153,7 @@ func TestCastFunctions(t *testing.T) { // cast('1e9223372036854775807' as unsigned) f = BuildCastFunction(ctx, &Constant{Value: types.NewDatum("1e9223372036854775807"), RetType: types.NewFieldType(mysql.TypeString)}, tp1) - res, err = f.Eval(chunk.Row{}) + res, err = f.Eval(ctx, chunk.Row{}) require.NoError(t, err) require.True(t, res.GetUint64() == 1) @@ -165,7 +165,7 @@ func TestCastFunctions(t *testing.T) { mask := ^mysql.UnsignedFlag tp1.SetFlag(tp1.GetFlag() & mask) f = BuildCastFunction(ctx, &Constant{Value: types.NewDatum("18446744073709551616"), RetType: types.NewFieldType(mysql.TypeString)}, tp1) - res, err = f.Eval(chunk.Row{}) + res, err = f.Eval(ctx, chunk.Row{}) require.NoError(t, err) require.Equal(t, int64(-1), res.GetInt64()) @@ -175,7 +175,7 @@ func TestCastFunctions(t *testing.T) { // cast('18446744073709551614' as signed); f = BuildCastFunction(ctx, &Constant{Value: types.NewDatum("18446744073709551614"), RetType: types.NewFieldType(mysql.TypeString)}, tp1) - res, err = f.Eval(chunk.Row{}) + res, err = f.Eval(ctx, chunk.Row{}) require.NoError(t, err) require.Equal(t, int64(-2), res.GetInt64()) @@ -185,7 +185,7 @@ func TestCastFunctions(t *testing.T) { // cast('125e342.83' as signed) f = BuildCastFunction(ctx, &Constant{Value: types.NewDatum("125e342.83"), RetType: types.NewFieldType(mysql.TypeString)}, tp1) - res, err = f.Eval(chunk.Row{}) + res, err = f.Eval(ctx, chunk.Row{}) require.NoError(t, err) require.True(t, res.GetInt64() == 125) @@ -195,7 +195,7 @@ func TestCastFunctions(t *testing.T) { // cast('1e9223372036854775807' as signed) f = BuildCastFunction(ctx, &Constant{Value: types.NewDatum("1e9223372036854775807"), RetType: types.NewFieldType(mysql.TypeString)}, tp1) - res, err = f.Eval(chunk.Row{}) + res, err = f.Eval(ctx, chunk.Row{}) require.NoError(t, err) require.True(t, res.GetInt64() == 1) @@ -208,7 +208,7 @@ func TestCastFunctions(t *testing.T) { // select cast(s1 as decimal(7, 2)) from t1; ft := types.NewFieldTypeBuilder().SetType(mysql.TypeNewDecimal).SetFlag(mysql.BinaryFlag | mysql.UnsignedFlag).SetFlen(7).SetDecimal(2).SetCharset(charset.CharsetBin).SetCollate(charset.CollationBin).BuildP() f = BuildCastFunction(ctx, &Constant{Value: timeDatum, RetType: types.NewFieldType(mysql.TypeDatetime)}, ft) - res, err = f.Eval(chunk.Row{}) + res, err = f.Eval(ctx, chunk.Row{}) require.NoError(t, err) resDecimal := new(types.MyDecimal) err = resDecimal.FromString([]byte("99999.99")) @@ -227,7 +227,7 @@ func TestCastFunctions(t *testing.T) { rt := types.NewFieldType(mysql.TypeLonglong) rt.SetFlag(mysql.BinaryFlag | mysql.UnsignedFlag) f = BuildCastFunction(ctx, &Constant{Value: types.NewUintDatum(18446744073709551615), RetType: rt}, ft) - res, err = f.Eval(chunk.Row{}) + res, err = f.Eval(ctx, chunk.Row{}) require.NoError(t, err) u, err := res.GetMysqlDecimal().ToUint() require.NoError(t, err) @@ -236,7 +236,7 @@ func TestCastFunctions(t *testing.T) { // cast(bad_string as decimal) for _, s := range []string{"hello", ""} { f = BuildCastFunction(ctx, &Constant{Value: types.NewDatum(s), RetType: types.NewFieldType(mysql.TypeNewDecimal)}, tp) - res, err = f.Eval(chunk.Row{}) + res, err = f.Eval(ctx, chunk.Row{}) require.NoError(t, err) } @@ -244,7 +244,7 @@ func TestCastFunctions(t *testing.T) { tp.SetFlen(0) tp.SetCharset(charset.CharsetUTF8) f = BuildCastFunction(ctx, &Constant{Value: types.NewDatum(1234), RetType: types.NewFieldType(mysql.TypeString)}, tp) - res, err = f.Eval(chunk.Row{}) + res, err = f.Eval(ctx, chunk.Row{}) require.NoError(t, err) require.Equal(t, 0, len(res.GetString())) require.Equal(t, "", res.GetString()) @@ -465,47 +465,61 @@ func TestCastFuncSig(t *testing.T) { before *Column after int64 row chunk.MutRow + tp byte }{ // cast string as int. { &Column{RetType: types.NewFieldType(mysql.TypeString), Index: 0}, 1, chunk.MutRowFromDatums([]types.Datum{types.NewStringDatum("1")}), + mysql.TypeLonglong, }, // cast decimal as int. { &Column{RetType: types.NewFieldType(mysql.TypeNewDecimal), Index: 0}, 1, chunk.MutRowFromDatums([]types.Datum{types.NewDecimalDatum(types.NewDecFromInt(1))}), + mysql.TypeLonglong, }, // cast real as int. { &Column{RetType: types.NewFieldType(mysql.TypeDouble), Index: 0}, 2, chunk.MutRowFromDatums([]types.Datum{types.NewFloat64Datum(2.5)}), + mysql.TypeLonglong, }, // cast Time as int. { &Column{RetType: types.NewFieldType(mysql.TypeDatetime), Index: 0}, curTimeInt, chunk.MutRowFromDatums([]types.Datum{timeDatum}), + mysql.TypeLonglong, }, // cast Duration as int. { &Column{RetType: types.NewFieldType(mysql.TypeDuration), Index: 0}, 125959, chunk.MutRowFromDatums([]types.Datum{durationDatum}), + mysql.TypeLonglong, + }, + // cast Duration as year. + { + &Column{RetType: types.NewFieldType(mysql.TypeDuration), Index: 0}, + int64(time.Now().Year()), + chunk.MutRowFromDatums([]types.Datum{durationDatum}), + mysql.TypeYear, }, // cast JSON as int. { &Column{RetType: types.NewFieldType(mysql.TypeJSON), Index: 0}, 3, chunk.MutRowFromDatums([]types.Datum{jsonInt}), + mysql.TypeLonglong, }, } for i, c := range castToIntCases { args := []Expression{c.before} - b, err := newBaseBuiltinFunc(ctx, "", args, types.NewFieldType(mysql.TypeLonglong)) + b, err := newBaseBuiltinFunc(ctx, "", args, types.NewFieldType(c.tp)) require.NoError(t, err) intFunc := newBaseBuiltinCastFunc(b, false) switch i { @@ -517,9 +531,9 @@ func TestCastFuncSig(t *testing.T) { sig = &builtinCastRealAsIntSig{intFunc} case 3: sig = &builtinCastTimeAsIntSig{intFunc} - case 4: + case 4, 5: sig = &builtinCastDurationAsIntSig{intFunc} - case 5: + case 6: sig = &builtinCastJSONAsIntSig{intFunc} } res, isNull, err := sig.evalInt(ctx, c.row.ToRow()) @@ -1450,8 +1464,8 @@ func TestWrapWithCastAsJSON(t *testing.T) { } func TestCastIntAsIntVec(t *testing.T) { - cast, input, result := genCastIntAsInt() - ctx := cast.ctx + ctx := mock.NewContext() + cast, input, result := genCastIntAsInt(ctx) require.NoError(t, cast.vecEvalInt(ctx, input, result)) i64s := result.Int64s() it := chunk.NewIterator4Chunk(input) diff --git a/pkg/expression/builtin_cast_vec.go b/pkg/expression/builtin_cast_vec.go index 73a104fb98153..4202685791e32 100644 --- a/pkg/expression/builtin_cast_vec.go +++ b/pkg/expression/builtin_cast_vec.go @@ -34,7 +34,7 @@ func (b *builtinCastIntAsDurationSig) vecEvalDuration(ctx sessionctx.Context, in return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf); err != nil { return err } @@ -49,10 +49,10 @@ func (b *builtinCastIntAsDurationSig) vecEvalDuration(ctx sessionctx.Context, in dur, err := types.NumberToDuration(i64s[i], b.tp.GetDecimal()) if err != nil { if types.ErrOverflow.Equal(err) { - err = b.ctx.GetSessionVars().StmtCtx.HandleOverflow(err, err) + err = ctx.GetSessionVars().StmtCtx.HandleOverflow(err, err) } if types.ErrTruncatedWrongVal.Equal(err) { - err = b.ctx.GetSessionVars().StmtCtx.HandleTruncate(err) + err = ctx.GetSessionVars().StmtCtx.HandleTruncate(err) } if err != nil { return err @@ -70,7 +70,7 @@ func (*builtinCastIntAsDurationSig) vectorized() bool { } func (b *builtinCastIntAsIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, result); err != nil { return err } if b.inUnion && mysql.HasUnsignedFlag(b.tp.GetFlag()) { @@ -97,7 +97,7 @@ func (b *builtinCastIntAsRealSig) vecEvalReal(ctx sessionctx.Context, input *chu return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf); err != nil { return err } @@ -135,7 +135,7 @@ func (*builtinCastIntAsRealSig) vectorized() bool { } func (b *builtinCastRealAsRealSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalReal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, result); err != nil { return err } n := input.NumRows() @@ -170,7 +170,7 @@ func (b *builtinCastTimeAsJSONSig) vecEvalJSON(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(buf) - if err = b.args[0].VecEvalTime(b.ctx, input, buf); err != nil { + if err = b.args[0].VecEvalTime(ctx, input, buf); err != nil { return err } @@ -202,7 +202,7 @@ func (b *builtinCastRealAsStringSig) vecEvalString(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalReal(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, buf); err != nil { return err } @@ -218,7 +218,7 @@ func (b *builtinCastRealAsStringSig) vecEvalString(ctx sessionctx.Context, input var res string f64s := buf.Float64s() result.ReserveString(n) - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx for i, v := range f64s { if buf.IsNull(i) { result.AppendNull() @@ -228,7 +228,7 @@ func (b *builtinCastRealAsStringSig) vecEvalString(ctx sessionctx.Context, input if err != nil { return err } - res, isNull, err = padZeroForBinaryType(res, b.tp, b.ctx) + res, isNull, err = padZeroForBinaryType(res, b.tp, ctx) if err != nil { return err } @@ -252,11 +252,11 @@ func (b *builtinCastDecimalAsStringSig) vecEvalString(ctx sessionctx.Context, in return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalDecimal(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, buf); err != nil { return err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx vas := buf.Decimals() result.ReserveString(n) for i, v := range vas { @@ -268,7 +268,7 @@ func (b *builtinCastDecimalAsStringSig) vecEvalString(ctx sessionctx.Context, in if e != nil { return e } - str, b, e1 := padZeroForBinaryType(res, b.tp, b.ctx) + str, b, e1 := padZeroForBinaryType(res, b.tp, ctx) if e1 != nil { return e1 } @@ -292,7 +292,7 @@ func (b *builtinCastTimeAsDecimalSig) vecEvalDecimal(ctx sessionctx.Context, inp return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalTime(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf); err != nil { return err } @@ -300,7 +300,7 @@ func (b *builtinCastTimeAsDecimalSig) vecEvalDecimal(ctx sessionctx.Context, inp result.MergeNulls(buf) times := buf.Times() decs := result.Decimals() - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx dec := new(types.MyDecimal) for i := 0; i < n; i++ { if result.IsNull(i) { @@ -328,7 +328,7 @@ func (b *builtinCastDurationAsIntSig) vecEvalInt(ctx sessionctx.Context, input * return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalDuration(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalDuration(ctx, input, buf); err != nil { return err } @@ -338,6 +338,7 @@ func (b *builtinCastDurationAsIntSig) vecEvalInt(ctx sessionctx.Context, input * var duration types.Duration ds := buf.GoDurations() fsp := b.args[0].GetType().GetDecimal() + isYear := b.tp.GetType() == mysql.TypeYear for i := 0; i < n; i++ { if result.IsNull(i) { continue @@ -345,11 +346,18 @@ func (b *builtinCastDurationAsIntSig) vecEvalInt(ctx sessionctx.Context, input * duration.Duration = ds[i] duration.Fsp = fsp - dur, err := duration.RoundFrac(types.DefaultFsp, b.ctx.GetSessionVars().Location()) - if err != nil { - return err + + if isYear { + i64s[i], err = duration.ConvertToYear(ctx.GetSessionVars().StmtCtx.TypeCtx()) + } else { + var dur types.Duration + dur, err = duration.RoundFrac(types.DefaultFsp, ctx.GetSessionVars().Location()) + if err != nil { + return err + } + i64s[i], err = dur.ToNumber().ToInt() } - i64s[i], err = dur.ToNumber().ToInt() + if err != nil { return err } @@ -368,7 +376,7 @@ func (b *builtinCastIntAsTimeSig) vecEvalTime(ctx sessionctx.Context, input *chu return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf); err != nil { return err } @@ -376,7 +384,7 @@ func (b *builtinCastIntAsTimeSig) vecEvalTime(ctx sessionctx.Context, input *chu result.MergeNulls(buf) times := result.Times() i64s := buf.Int64s() - stmt := b.ctx.GetSessionVars().StmtCtx + stmt := ctx.GetSessionVars().StmtCtx fsp := b.tp.GetDecimal() var tm types.Time @@ -392,7 +400,7 @@ func (b *builtinCastIntAsTimeSig) vecEvalTime(ctx sessionctx.Context, input *chu } if err != nil { - if err = handleInvalidTimeError(b.ctx, err); err != nil { + if err = handleInvalidTimeError(ctx, err); err != nil { return err } result.SetNull(i, true) @@ -418,7 +426,7 @@ func (b *builtinCastRealAsJSONSig) vecEvalJSON(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalReal(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, buf); err != nil { return err } f64s := buf.Float64s() @@ -445,14 +453,14 @@ func (b *builtinCastJSONAsRealSig) vecEvalReal(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalJSON(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalJSON(ctx, input, buf); err != nil { return err } result.ResizeFloat64(n, false) result.MergeNulls(buf) f64s := result.Float64s() - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx for i := 0; i < n; i++ { if result.IsNull(i) { continue @@ -476,7 +484,7 @@ func (b *builtinCastJSONAsTimeSig) vecEvalTime(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalJSON(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalJSON(ctx, input, buf); err != nil { return err } @@ -484,8 +492,8 @@ func (b *builtinCastJSONAsTimeSig) vecEvalTime(ctx sessionctx.Context, input *ch result.MergeNulls(buf) times := result.Times() - stmtCtx := b.ctx.GetSessionVars().StmtCtx - ts, err := getStmtTimestamp(b.ctx) + stmtCtx := ctx.GetSessionVars().StmtCtx + ts, err := getStmtTimestamp(ctx) if err != nil { ts = gotime.Now() } @@ -512,10 +520,10 @@ func (b *builtinCastJSONAsTimeSig) vecEvalTime(ctx sessionctx.Context, input *ch case types.JSONTypeCodeDuration: duration := val.GetDuration() - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx tm, err := duration.ConvertToTimeWithTimestamp(sc.TypeCtx(), b.tp.GetType(), ts) if err != nil { - if err = handleInvalidTimeError(b.ctx, err); err != nil { + if err = handleInvalidTimeError(ctx, err); err != nil { return err } result.SetNull(i, true) @@ -531,9 +539,9 @@ func (b *builtinCastJSONAsTimeSig) vecEvalTime(ctx sessionctx.Context, input *ch if err != nil { return err } - tm, err := types.ParseTime(stmtCtx.TypeCtx(), s, b.tp.GetType(), fsp, nil) + tm, err := types.ParseTime(stmtCtx.TypeCtx(), s, b.tp.GetType(), fsp) if err != nil { - if err = handleInvalidTimeError(b.ctx, err); err != nil { + if err = handleInvalidTimeError(ctx, err); err != nil { return err } result.SetNull(i, true) @@ -546,7 +554,7 @@ func (b *builtinCastJSONAsTimeSig) vecEvalTime(ctx sessionctx.Context, input *ch } default: err = types.ErrTruncatedWrongVal.GenWithStackByArgs(types.TypeStr(b.tp.GetType()), val.String()) - if err = handleInvalidTimeError(b.ctx, err); err != nil { + if err = handleInvalidTimeError(ctx, err); err != nil { return err } result.SetNull(i, true) @@ -566,7 +574,7 @@ func (b *builtinCastRealAsTimeSig) vecEvalTime(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalReal(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, buf); err != nil { return err } @@ -574,7 +582,7 @@ func (b *builtinCastRealAsTimeSig) vecEvalTime(ctx sessionctx.Context, input *ch result.MergeNulls(buf) times := result.Times() f64s := buf.Float64s() - stmt := b.ctx.GetSessionVars().StmtCtx + stmt := ctx.GetSessionVars().StmtCtx fsp := b.tp.GetDecimal() for i := 0; i < n; i++ { if buf.IsNull(i) { @@ -587,7 +595,7 @@ func (b *builtinCastRealAsTimeSig) vecEvalTime(ctx sessionctx.Context, input *ch } tm, err := types.ParseTimeFromFloatString(stmt.TypeCtx(), fv, b.tp.GetType(), fsp) if err != nil { - if err = handleInvalidTimeError(b.ctx, err); err != nil { + if err = handleInvalidTimeError(ctx, err); err != nil { return err } result.SetNull(i, true) @@ -607,13 +615,13 @@ func (*builtinCastDecimalAsDecimalSig) vectorized() bool { } func (b *builtinCastDecimalAsDecimalSig) vecEvalDecimal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalDecimal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, result); err != nil { return err } n := input.NumRows() decs := result.Decimals() - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx conditionUnionAndUnsigned := b.inUnion && mysql.HasUnsignedFlag(b.tp.GetFlag()) dec := new(types.MyDecimal) for i := 0; i < n; i++ { @@ -644,7 +652,7 @@ func (b *builtinCastDurationAsTimeSig) vecEvalTime(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalDuration(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalDuration(ctx, input, buf); err != nil { return err } @@ -653,8 +661,8 @@ func (b *builtinCastDurationAsTimeSig) vecEvalTime(ctx sessionctx.Context, input var duration types.Duration ds := buf.GoDurations() times := result.Times() - stmtCtx := b.ctx.GetSessionVars().StmtCtx - ts, err := getStmtTimestamp(b.ctx) + stmtCtx := ctx.GetSessionVars().StmtCtx + ts, err := getStmtTimestamp(ctx) if err != nil { ts = gotime.Now() } @@ -668,7 +676,7 @@ func (b *builtinCastDurationAsTimeSig) vecEvalTime(ctx sessionctx.Context, input duration.Fsp = fsp tm, err := duration.ConvertToTimeWithTimestamp(stmtCtx.TypeCtx(), b.tp.GetType(), ts) if err != nil { - if err = handleInvalidTimeError(b.ctx, err); err != nil { + if err = handleInvalidTimeError(ctx, err); err != nil { return err } result.SetNull(i, true) @@ -694,7 +702,7 @@ func (b *builtinCastIntAsStringSig) vecEvalString(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf); err != nil { return err } @@ -717,12 +725,12 @@ func (b *builtinCastIntAsStringSig) vecEvalString(ctx sessionctx.Context, input if isYearType && str == "0" { str = "0000" } - str, err = types.ProduceStrWithSpecifiedTp(str, b.tp, b.ctx.GetSessionVars().StmtCtx.TypeCtx(), false) + str, err = types.ProduceStrWithSpecifiedTp(str, b.tp, ctx.GetSessionVars().StmtCtx.TypeCtx(), false) if err != nil { return err } var d bool - str, d, err = padZeroForBinaryType(str, b.tp, b.ctx) + str, d, err = padZeroForBinaryType(str, b.tp, ctx) if err != nil { return err } @@ -746,7 +754,7 @@ func (b *builtinCastRealAsIntSig) vecEvalInt(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalReal(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, buf); err != nil { return err } @@ -766,12 +774,12 @@ func (b *builtinCastRealAsIntSig) vecEvalInt(ctx sessionctx.Context, input *chun i64s[i] = 0 } else { var uintVal uint64 - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx uintVal, err = types.ConvertFloatToUint(sc.TypeFlags(), f64s[i], types.IntergerUnsignedUpperBound(mysql.TypeLonglong), mysql.TypeLonglong) i64s[i] = int64(uintVal) } if types.ErrOverflow.Equal(err) { - err = b.ctx.GetSessionVars().StmtCtx.HandleOverflow(err, err) + err = ctx.GetSessionVars().StmtCtx.HandleOverflow(err, err) } if err != nil { return err @@ -791,7 +799,7 @@ func (b *builtinCastTimeAsRealSig) vecEvalReal(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalTime(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf); err != nil { return err } result.ResizeFloat64(n, false) @@ -805,7 +813,7 @@ func (b *builtinCastTimeAsRealSig) vecEvalReal(ctx sessionctx.Context, input *ch f64, err := times[i].ToNumber().ToFloat64() if err != nil { if types.ErrOverflow.Equal(err) { - err = b.ctx.GetSessionVars().StmtCtx.HandleOverflow(err, err) + err = ctx.GetSessionVars().StmtCtx.HandleOverflow(err, err) } if err != nil { return err @@ -829,7 +837,7 @@ func (b *builtinCastStringAsJSONSig) vecEvalJSON(ctx sessionctx.Context, input * return err } defer b.bufAllocator.put(buf) - if err = b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err = b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } @@ -893,14 +901,14 @@ func (b *builtinCastRealAsDecimalSig) vecEvalDecimal(ctx sessionctx.Context, inp return err } defer b.bufAllocator.put(buf) - if err = b.args[0].VecEvalReal(b.ctx, input, buf); err != nil { + if err = b.args[0].VecEvalReal(ctx, input, buf); err != nil { return err } result.ResizeDecimal(n, false) result.MergeNulls(buf) bufreal := buf.Float64s() resdecimal := result.Decimals() - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx for i := 0; i < n; i++ { if result.IsNull(i) { continue @@ -909,7 +917,7 @@ func (b *builtinCastRealAsDecimalSig) vecEvalDecimal(ctx sessionctx.Context, inp if err = resdecimal[i].FromFloat64(bufreal[i]); err != nil { if types.ErrOverflow.Equal(err) { warnErr := types.ErrTruncatedWrongVal.GenWithStackByArgs("DECIMAL", b.args[0]) - err = b.ctx.GetSessionVars().StmtCtx.HandleOverflow(err, warnErr) + err = ctx.GetSessionVars().StmtCtx.HandleOverflow(err, warnErr) } else if types.ErrTruncated.Equal(err) { // This behavior is consistent with MySQL. err = nil @@ -935,12 +943,12 @@ func (*builtinCastStringAsIntSig) vectorized() bool { func (b *builtinCastStringAsIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() if b.args[0].GetType().Hybrid() || IsBinaryLiteral(b.args[0]) { - return b.args[0].VecEvalInt(b.ctx, input, result) + return b.args[0].VecEvalInt(ctx, input, result) } // Take the implicit evalInt path if possible. if CanImplicitEvalInt(b.args[0]) { - return b.args[0].VecEvalInt(b.ctx, input, result) + return b.args[0].VecEvalInt(ctx, input, result) } result.ResizeInt64(n, false) @@ -949,11 +957,11 @@ func (b *builtinCastStringAsIntSig) vecEvalInt(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } result.MergeNulls(buf) - typeCtx := b.ctx.GetSessionVars().StmtCtx.TypeCtx() + typeCtx := ctx.GetSessionVars().StmtCtx.TypeCtx() i64s := result.Int64s() isUnsigned := mysql.HasUnsignedFlag(b.tp.GetFlag()) unionUnsigned := isUnsigned && b.inUnion @@ -982,7 +990,7 @@ func (b *builtinCastStringAsIntSig) vecEvalInt(ctx sessionctx.Context, input *ch typeCtx.AppendWarning(types.ErrCastNegIntAsUnsigned) } } - res, err = b.handleOverflow(res, val, err, isNegative) + res, err = b.handleOverflow(ctx, res, val, err, isNegative) if err != nil { return err } @@ -1002,7 +1010,7 @@ func (b *builtinCastStringAsDurationSig) vecEvalDuration(ctx sessionctx.Context, return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } result.ResizeGoDuration(n, false) @@ -1012,10 +1020,10 @@ func (b *builtinCastStringAsDurationSig) vecEvalDuration(ctx sessionctx.Context, if result.IsNull(i) { continue } - dur, isNull, err := types.ParseDuration(b.ctx.GetSessionVars().StmtCtx.TypeCtx(), buf.GetString(i), b.tp.GetDecimal()) + dur, isNull, err := types.ParseDuration(ctx.GetSessionVars().StmtCtx.TypeCtx(), buf.GetString(i), b.tp.GetDecimal()) if err != nil { if types.ErrTruncatedWrongVal.Equal(err) { - err = b.ctx.GetSessionVars().StmtCtx.HandleTruncate(err) + err = ctx.GetSessionVars().StmtCtx.HandleTruncate(err) } if err != nil { return err @@ -1041,7 +1049,7 @@ func (b *builtinCastDurationAsDecimalSig) vecEvalDecimal(ctx sessionctx.Context, return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalDuration(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalDuration(ctx, input, buf); err != nil { return err } result.ResizeDecimal(n, false) @@ -1049,7 +1057,7 @@ func (b *builtinCastDurationAsDecimalSig) vecEvalDecimal(ctx sessionctx.Context, d64s := result.Decimals() var duration types.Duration ds := buf.GoDurations() - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx fsp := b.args[0].GetType().GetDecimal() if fsp, err = types.CheckFsp(fsp); err != nil { return err @@ -1080,7 +1088,7 @@ func (b *builtinCastIntAsDecimalSig) vecEvalDecimal(ctx sessionctx.Context, inpu return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf); err != nil { return err } @@ -1090,7 +1098,7 @@ func (b *builtinCastIntAsDecimalSig) vecEvalDecimal(ctx sessionctx.Context, inpu result.ResizeDecimal(n, false) result.MergeNulls(buf) decs := result.Decimals() - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx dec := new(types.MyDecimal) for i := 0; i < n; i++ { if result.IsNull(i) { @@ -1126,7 +1134,7 @@ func (b *builtinCastIntAsJSONSig) vecEvalJSON(ctx sessionctx.Context, input *chu return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf); err != nil { return err } nums := buf.Int64s() @@ -1165,7 +1173,7 @@ func (*builtinCastJSONAsJSONSig) vectorized() bool { } func (b *builtinCastJSONAsJSONSig) vecEvalJSON(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - return b.args[0].VecEvalJSON(b.ctx, input, result) + return b.args[0].VecEvalJSON(ctx, input, result) } func (*builtinCastJSONAsStringSig) vectorized() bool { @@ -1179,7 +1187,7 @@ func (b *builtinCastJSONAsStringSig) vecEvalString(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalJSON(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalJSON(ctx, input, buf); err != nil { return err } @@ -1189,7 +1197,7 @@ func (b *builtinCastJSONAsStringSig) vecEvalString(ctx sessionctx.Context, input result.AppendNull() continue } - s, err := types.ProduceStrWithSpecifiedTp(buf.GetJSON(i).String(), b.tp, b.ctx.GetSessionVars().StmtCtx.TypeCtx(), false) + s, err := types.ProduceStrWithSpecifiedTp(buf.GetJSON(i).String(), b.tp, ctx.GetSessionVars().StmtCtx.TypeCtx(), false) if err != nil { return err } @@ -1209,7 +1217,7 @@ func (b *builtinCastDurationAsRealSig) vecEvalReal(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(buf) - if err = b.args[0].VecEvalDuration(b.ctx, input, buf); err != nil { + if err = b.args[0].VecEvalDuration(ctx, input, buf); err != nil { return err } @@ -1248,14 +1256,14 @@ func (b *builtinCastJSONAsIntSig) vecEvalInt(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalJSON(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalJSON(ctx, input, buf); err != nil { return err } result.ResizeInt64(n, false) result.MergeNulls(buf) i64s := result.Int64s() - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx tc := sc.TypeCtx() for i := 0; i < n; i++ { if result.IsNull(i) { @@ -1280,7 +1288,7 @@ func (b *builtinCastRealAsDurationSig) vecEvalDuration(ctx sessionctx.Context, i return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalReal(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, buf); err != nil { return err } result.ResizeGoDuration(n, false) @@ -1291,10 +1299,10 @@ func (b *builtinCastRealAsDurationSig) vecEvalDuration(ctx sessionctx.Context, i if result.IsNull(i) { continue } - dur, _, err := types.ParseDuration(b.ctx.GetSessionVars().StmtCtx.TypeCtx(), strconv.FormatFloat(f64s[i], 'f', -1, 64), b.tp.GetDecimal()) + dur, _, err := types.ParseDuration(ctx.GetSessionVars().StmtCtx.TypeCtx(), strconv.FormatFloat(f64s[i], 'f', -1, 64), b.tp.GetDecimal()) if err != nil { if types.ErrTruncatedWrongVal.Equal(err) { - err = b.ctx.GetSessionVars().StmtCtx.HandleTruncate(err) + err = ctx.GetSessionVars().StmtCtx.HandleTruncate(err) if err != nil { return err } @@ -1320,7 +1328,7 @@ func (b *builtinCastTimeAsDurationSig) vecEvalDuration(ctx sessionctx.Context, i return err } defer b.bufAllocator.put(arg0) - if err := b.args[0].VecEvalTime(b.ctx, input, arg0); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, arg0); err != nil { return err } arg0s := arg0.Times() @@ -1335,7 +1343,7 @@ func (b *builtinCastTimeAsDurationSig) vecEvalDuration(ctx sessionctx.Context, i if err != nil { return err } - d, err = d.RoundFrac(b.tp.GetDecimal(), b.ctx.GetSessionVars().Location()) + d, err = d.RoundFrac(b.tp.GetDecimal(), ctx.GetSessionVars().Location()) if err != nil { return err } @@ -1350,7 +1358,7 @@ func (*builtinCastDurationAsDurationSig) vectorized() bool { func (b *builtinCastDurationAsDurationSig) vecEvalDuration(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { var err error - if err = b.args[0].VecEvalDuration(b.ctx, input, result); err != nil { + if err = b.args[0].VecEvalDuration(ctx, input, result); err != nil { return err } @@ -1364,7 +1372,7 @@ func (b *builtinCastDurationAsDurationSig) vecEvalDuration(ctx sessionctx.Contex continue } dur.Duration = v - rd, err = dur.RoundFrac(b.tp.GetDecimal(), b.ctx.GetSessionVars().Location()) + rd, err = dur.RoundFrac(b.tp.GetDecimal(), ctx.GetSessionVars().Location()) if err != nil { return err } @@ -1384,13 +1392,13 @@ func (b *builtinCastDurationAsStringSig) vecEvalString(ctx sessionctx.Context, i return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalDuration(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalDuration(ctx, input, buf); err != nil { return err } var res string var isNull bool - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx result.ReserveString(n) fsp := b.args[0].GetType().GetDecimal() for i := 0; i < n; i++ { @@ -1402,7 +1410,7 @@ func (b *builtinCastDurationAsStringSig) vecEvalString(ctx sessionctx.Context, i if err != nil { return err } - res, isNull, err = padZeroForBinaryType(res, b.tp, b.ctx) + res, isNull, err = padZeroForBinaryType(res, b.tp, ctx) if err != nil { return err } @@ -1426,7 +1434,7 @@ func (b *builtinCastDecimalAsRealSig) vecEvalReal(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalDecimal(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, buf); err != nil { return err } @@ -1448,7 +1456,7 @@ func (b *builtinCastDecimalAsRealSig) vecEvalReal(ctx sessionctx.Context, input res, err := d[i].ToFloat64() if err != nil { if types.ErrOverflow.Equal(err) { - err = b.ctx.GetSessionVars().StmtCtx.HandleOverflow(err, err) + err = ctx.GetSessionVars().StmtCtx.HandleOverflow(err, err) } if err != nil { return err @@ -1472,7 +1480,7 @@ func (b *builtinCastDecimalAsTimeSig) vecEvalTime(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalDecimal(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, buf); err != nil { return err } @@ -1480,7 +1488,7 @@ func (b *builtinCastDecimalAsTimeSig) vecEvalTime(ctx sessionctx.Context, input result.MergeNulls(buf) times := result.Times() decimals := buf.Decimals() - stmt := b.ctx.GetSessionVars().StmtCtx + stmt := ctx.GetSessionVars().StmtCtx fsp := b.tp.GetDecimal() for i := 0; i < n; i++ { if buf.IsNull(i) { @@ -1488,7 +1496,7 @@ func (b *builtinCastDecimalAsTimeSig) vecEvalTime(ctx sessionctx.Context, input } tm, err := types.ParseTimeFromFloatString(stmt.TypeCtx(), string(decimals[i].ToString()), b.tp.GetType(), fsp) if err != nil { - if err = handleInvalidTimeError(b.ctx, err); err != nil { + if err = handleInvalidTimeError(ctx, err); err != nil { return err } result.SetNull(i, true) @@ -1514,7 +1522,7 @@ func (b *builtinCastTimeAsIntSig) vecEvalInt(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalTime(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf); err != nil { return err } @@ -1522,7 +1530,7 @@ func (b *builtinCastTimeAsIntSig) vecEvalInt(ctx sessionctx.Context, input *chun result.MergeNulls(buf) times := buf.Times() i64s := result.Int64s() - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx for i := 0; i < n; i++ { if result.IsNull(i) { continue @@ -1545,12 +1553,12 @@ func (*builtinCastTimeAsTimeSig) vectorized() bool { func (b *builtinCastTimeAsTimeSig) vecEvalTime(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - if err := b.args[0].VecEvalTime(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, result); err != nil { return err } times := result.Times() - stmt := b.ctx.GetSessionVars().StmtCtx + stmt := ctx.GetSessionVars().StmtCtx fsp := b.tp.GetDecimal() for i := 0; i < n; i++ { if result.IsNull(i) { @@ -1558,7 +1566,7 @@ func (b *builtinCastTimeAsTimeSig) vecEvalTime(ctx sessionctx.Context, input *ch } res, err := times[i].Convert(stmt.TypeCtx(), b.tp.GetType()) if err != nil { - if err = handleInvalidTimeError(b.ctx, err); err != nil { + if err = handleInvalidTimeError(ctx, err); err != nil { return err } result.SetNull(i, true) @@ -1589,13 +1597,13 @@ func (b *builtinCastTimeAsStringSig) vecEvalString(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalTime(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf); err != nil { return err } var res string var isNull bool - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx vas := buf.Times() result.ReserveString(n) for i, v := range vas { @@ -1607,7 +1615,7 @@ func (b *builtinCastTimeAsStringSig) vecEvalString(ctx sessionctx.Context, input if err != nil { return err } - res, isNull, err = padZeroForBinaryType(res, b.tp, b.ctx) + res, isNull, err = padZeroForBinaryType(res, b.tp, ctx) if err != nil { return err } @@ -1631,10 +1639,10 @@ func (b *builtinCastJSONAsDecimalSig) vecEvalDecimal(ctx sessionctx.Context, inp return err } defer b.bufAllocator.put(buf) - if err = b.args[0].VecEvalJSON(b.ctx, input, buf); err != nil { + if err = b.args[0].VecEvalJSON(ctx, input, buf); err != nil { return err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx result.ResizeDecimal(n, false) result.MergeNulls(buf) res := result.Decimals() @@ -1661,12 +1669,12 @@ func (*builtinCastStringAsRealSig) vectorized() bool { func (b *builtinCastStringAsRealSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { if IsBinaryLiteral(b.args[0]) { - return b.args[0].VecEvalReal(b.ctx, input, result) + return b.args[0].VecEvalReal(ctx, input, result) } // Take the implicit evalReal path if possible. if CanImplicitEvalReal(b.args[0]) { - return b.args[0].VecEvalReal(b.ctx, input, result) + return b.args[0].VecEvalReal(ctx, input, result) } n := input.NumRows() @@ -1675,14 +1683,14 @@ func (b *builtinCastStringAsRealSig) vecEvalReal(ctx sessionctx.Context, input * return err } defer b.bufAllocator.put(buf) - if err = b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err = b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } result.ResizeFloat64(n, false) result.MergeNulls(buf) ret := result.Float64s() - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx for i := 0; i < n; i++ { if result.IsNull(i) { @@ -1710,7 +1718,7 @@ func (*builtinCastStringAsDecimalSig) vectorized() bool { func (b *builtinCastStringAsDecimalSig) vecEvalDecimal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { if IsBinaryLiteral(b.args[0]) { - return b.args[0].VecEvalDecimal(b.ctx, input, result) + return b.args[0].VecEvalDecimal(ctx, input, result) } n := input.NumRows() buf, err := b.bufAllocator.get() @@ -1718,13 +1726,13 @@ func (b *builtinCastStringAsDecimalSig) vecEvalDecimal(ctx sessionctx.Context, i return err } defer b.bufAllocator.put(buf) - if err = b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err = b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } result.ResizeDecimal(n, false) result.MergeNulls(buf) res := result.Decimals() - stmtCtx := b.ctx.GetSessionVars().StmtCtx + stmtCtx := ctx.GetSessionVars().StmtCtx for i := 0; i < n; i++ { if result.IsNull(i) { continue @@ -1757,32 +1765,32 @@ func (b *builtinCastStringAsTimeSig) vecEvalTime(ctx sessionctx.Context, input * return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } result.ResizeTime(n, false) result.MergeNulls(buf) times := result.Times() - stmtCtx := b.ctx.GetSessionVars().StmtCtx + stmtCtx := ctx.GetSessionVars().StmtCtx fsp := b.tp.GetDecimal() for i := 0; i < n; i++ { if result.IsNull(i) { continue } - tm, err := types.ParseTime(stmtCtx.TypeCtx(), buf.GetString(i), b.tp.GetType(), fsp, nil) + tm, err := types.ParseTime(stmtCtx.TypeCtx(), buf.GetString(i), b.tp.GetType(), fsp) if err != nil { if errors.Is(err, strconv.ErrSyntax) || errors.Is(err, strconv.ErrRange) { err = types.ErrIncorrectDatetimeValue.GenWithStackByArgs(buf.GetString(i)) } - if err = handleInvalidTimeError(b.ctx, err); err != nil { + if err = handleInvalidTimeError(ctx, err); err != nil { return err } result.SetNull(i, true) continue } - if tm.IsZero() && b.ctx.GetSessionVars().SQLMode.HasNoZeroDateMode() { - err = handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, tm.String())) + if tm.IsZero() && ctx.GetSessionVars().SQLMode.HasNoZeroDateMode() { + err = handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, tm.String())) if err != nil { return err } @@ -1809,7 +1817,7 @@ func (b *builtinCastDecimalAsIntSig) vecEvalInt(ctx sessionctx.Context, input *c return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalDecimal(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, buf); err != nil { return err } @@ -1841,7 +1849,7 @@ func (b *builtinCastDecimalAsIntSig) vecEvalInt(ctx sessionctx.Context, input *c if types.ErrOverflow.Equal(err) { warnErr := types.ErrTruncatedWrongVal.GenWithStackByArgs("DECIMAL", d64s[i]) - err = b.ctx.GetSessionVars().StmtCtx.HandleOverflow(err, warnErr) + err = ctx.GetSessionVars().StmtCtx.HandleOverflow(err, warnErr) } if err != nil { @@ -1862,7 +1870,7 @@ func (b *builtinCastDecimalAsDurationSig) vecEvalDuration(ctx sessionctx.Context return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalDecimal(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, buf); err != nil { return err } @@ -1874,10 +1882,10 @@ func (b *builtinCastDecimalAsDurationSig) vecEvalDuration(ctx sessionctx.Context if result.IsNull(i) { continue } - dur, _, err := types.ParseDuration(b.ctx.GetSessionVars().StmtCtx.TypeCtx(), string(args[i].ToString()), b.tp.GetDecimal()) + dur, _, err := types.ParseDuration(ctx.GetSessionVars().StmtCtx.TypeCtx(), string(args[i].ToString()), b.tp.GetDecimal()) if err != nil { if types.ErrTruncatedWrongVal.Equal(err) { - err = b.ctx.GetSessionVars().StmtCtx.HandleTruncate(err) + err = ctx.GetSessionVars().StmtCtx.HandleTruncate(err) if err != nil { return err } @@ -1903,13 +1911,13 @@ func (b *builtinCastStringAsStringSig) vecEvalString(ctx sessionctx.Context, inp return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } var res string var isNull bool - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx result.ReserveString(n) for i := 0; i < n; i++ { if buf.IsNull(i) { @@ -1920,7 +1928,7 @@ func (b *builtinCastStringAsStringSig) vecEvalString(ctx sessionctx.Context, inp if err != nil { return err } - res, isNull, err = padZeroForBinaryType(res, b.tp, b.ctx) + res, isNull, err = padZeroForBinaryType(res, b.tp, ctx) if err != nil { return err } @@ -1944,11 +1952,11 @@ func (b *builtinCastJSONAsDurationSig) vecEvalDuration(ctx sessionctx.Context, i return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalJSON(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalJSON(ctx, input, buf); err != nil { return err } - stmtCtx := b.ctx.GetSessionVars().StmtCtx + stmtCtx := ctx.GetSessionVars().StmtCtx result.ResizeGoDuration(n, false) result.MergeNulls(buf) @@ -1967,7 +1975,7 @@ func (b *builtinCastJSONAsDurationSig) vecEvalDuration(ctx sessionctx.Context, i if err != nil { return err } - d, err = d.RoundFrac(b.tp.GetDecimal(), b.ctx.GetSessionVars().Location()) + d, err = d.RoundFrac(b.tp.GetDecimal(), ctx.GetSessionVars().Location()) if err != nil { return err } @@ -2013,7 +2021,7 @@ func (b *builtinCastDecimalAsJSONSig) vecEvalJSON(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(buf) - if err = b.args[0].VecEvalDecimal(b.ctx, input, buf); err != nil { + if err = b.args[0].VecEvalDecimal(ctx, input, buf); err != nil { return err } @@ -2046,7 +2054,7 @@ func (b *builtinCastDurationAsJSONSig) vecEvalJSON(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(buf) - if err = b.args[0].VecEvalDuration(b.ctx, input, buf); err != nil { + if err = b.args[0].VecEvalDuration(ctx, input, buf); err != nil { return err } diff --git a/pkg/expression/builtin_compare.go b/pkg/expression/builtin_compare.go index ca35b2a049e58..9b5ec318c828b 100644 --- a/pkg/expression/builtin_compare.go +++ b/pkg/expression/builtin_compare.go @@ -187,7 +187,7 @@ func (b *builtinCoalesceIntSig) Clone() builtinFunc { func (b *builtinCoalesceIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (res int64, isNull bool, err error) { for _, a := range b.getArgs() { - res, isNull, err = a.EvalInt(b.ctx, row) + res, isNull, err = a.EvalInt(ctx, row) if err != nil || !isNull { break } @@ -209,7 +209,7 @@ func (b *builtinCoalesceRealSig) Clone() builtinFunc { func (b *builtinCoalesceRealSig) evalReal(ctx sessionctx.Context, row chunk.Row) (res float64, isNull bool, err error) { for _, a := range b.getArgs() { - res, isNull, err = a.EvalReal(b.ctx, row) + res, isNull, err = a.EvalReal(ctx, row) if err != nil || !isNull { break } @@ -231,7 +231,7 @@ func (b *builtinCoalesceDecimalSig) Clone() builtinFunc { func (b *builtinCoalesceDecimalSig) evalDecimal(ctx sessionctx.Context, row chunk.Row) (res *types.MyDecimal, isNull bool, err error) { for _, a := range b.getArgs() { - res, isNull, err = a.EvalDecimal(b.ctx, row) + res, isNull, err = a.EvalDecimal(ctx, row) if err != nil || !isNull { break } @@ -253,7 +253,7 @@ func (b *builtinCoalesceStringSig) Clone() builtinFunc { func (b *builtinCoalesceStringSig) evalString(ctx sessionctx.Context, row chunk.Row) (res string, isNull bool, err error) { for _, a := range b.getArgs() { - res, isNull, err = a.EvalString(b.ctx, row) + res, isNull, err = a.EvalString(ctx, row) if err != nil || !isNull { break } @@ -276,7 +276,7 @@ func (b *builtinCoalesceTimeSig) Clone() builtinFunc { func (b *builtinCoalesceTimeSig) evalTime(ctx sessionctx.Context, row chunk.Row) (res types.Time, isNull bool, err error) { fsp := b.tp.GetDecimal() for _, a := range b.getArgs() { - res, isNull, err = a.EvalTime(b.ctx, row) + res, isNull, err = a.EvalTime(ctx, row) res.SetFsp(fsp) if err != nil || !isNull { break @@ -299,7 +299,7 @@ func (b *builtinCoalesceDurationSig) Clone() builtinFunc { func (b *builtinCoalesceDurationSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (res types.Duration, isNull bool, err error) { for _, a := range b.getArgs() { - res, isNull, err = a.EvalDuration(b.ctx, row) + res, isNull, err = a.EvalDuration(ctx, row) res.Fsp = b.tp.GetDecimal() if err != nil || !isNull { break @@ -322,7 +322,7 @@ func (b *builtinCoalesceJSONSig) Clone() builtinFunc { func (b *builtinCoalesceJSONSig) evalJSON(ctx sessionctx.Context, row chunk.Row) (res types.BinaryJSON, isNull bool, err error) { for _, a := range b.getArgs() { - res, isNull, err = a.EvalJSON(b.ctx, row) + res, isNull, err = a.EvalJSON(ctx, row) if err != nil || !isNull { break } @@ -533,13 +533,13 @@ func (b *builtinGreatestIntSig) Clone() builtinFunc { // evalInt evals a builtinGreatestIntSig. // See http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#function_greatest func (b *builtinGreatestIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (max int64, isNull bool, err error) { - max, isNull, err = b.args[0].EvalInt(b.ctx, row) + max, isNull, err = b.args[0].EvalInt(ctx, row) if isNull || err != nil { return max, isNull, err } for i := 1; i < len(b.args); i++ { var v int64 - v, isNull, err = b.args[i].EvalInt(b.ctx, row) + v, isNull, err = b.args[i].EvalInt(ctx, row) if isNull || err != nil { return max, isNull, err } @@ -563,13 +563,13 @@ func (b *builtinGreatestRealSig) Clone() builtinFunc { // evalReal evals a builtinGreatestRealSig. // See http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#function_greatest func (b *builtinGreatestRealSig) evalReal(ctx sessionctx.Context, row chunk.Row) (max float64, isNull bool, err error) { - max, isNull, err = b.args[0].EvalReal(b.ctx, row) + max, isNull, err = b.args[0].EvalReal(ctx, row) if isNull || err != nil { return max, isNull, err } for i := 1; i < len(b.args); i++ { var v float64 - v, isNull, err = b.args[i].EvalReal(b.ctx, row) + v, isNull, err = b.args[i].EvalReal(ctx, row) if isNull || err != nil { return max, isNull, err } @@ -593,13 +593,13 @@ func (b *builtinGreatestDecimalSig) Clone() builtinFunc { // evalDecimal evals a builtinGreatestDecimalSig. // See http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#function_greatest func (b *builtinGreatestDecimalSig) evalDecimal(ctx sessionctx.Context, row chunk.Row) (max *types.MyDecimal, isNull bool, err error) { - max, isNull, err = b.args[0].EvalDecimal(b.ctx, row) + max, isNull, err = b.args[0].EvalDecimal(ctx, row) if isNull || err != nil { return max, isNull, err } for i := 1; i < len(b.args); i++ { var v *types.MyDecimal - v, isNull, err = b.args[i].EvalDecimal(b.ctx, row) + v, isNull, err = b.args[i].EvalDecimal(ctx, row) if isNull || err != nil { return max, isNull, err } @@ -623,13 +623,13 @@ func (b *builtinGreatestStringSig) Clone() builtinFunc { // evalString evals a builtinGreatestStringSig. // See http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#function_greatest func (b *builtinGreatestStringSig) evalString(ctx sessionctx.Context, row chunk.Row) (max string, isNull bool, err error) { - max, isNull, err = b.args[0].EvalString(b.ctx, row) + max, isNull, err = b.args[0].EvalString(ctx, row) if isNull || err != nil { return max, isNull, err } for i := 1; i < len(b.args); i++ { var v string - v, isNull, err = b.args[i].EvalString(b.ctx, row) + v, isNull, err = b.args[i].EvalString(ctx, row) if isNull || err != nil { return max, isNull, err } @@ -655,13 +655,13 @@ func (b *builtinGreatestCmpStringAsTimeSig) Clone() builtinFunc { // evalString evals a builtinGreatestCmpStringAsTimeSig. // See http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#function_greatest func (b *builtinGreatestCmpStringAsTimeSig) evalString(ctx sessionctx.Context, row chunk.Row) (strRes string, isNull bool, err error) { - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx for i := 0; i < len(b.args); i++ { - v, isNull, err := b.args[i].EvalString(b.ctx, row) + v, isNull, err := b.args[i].EvalString(ctx, row) if isNull || err != nil { return "", true, err } - v, err = doTimeConversionForGL(b.cmpAsDate, b.ctx, sc, v) + v, err = doTimeConversionForGL(b.cmpAsDate, ctx, sc, v) if err != nil { return v, true, err } @@ -711,7 +711,7 @@ func (b *builtinGreatestTimeSig) Clone() builtinFunc { func (b *builtinGreatestTimeSig) evalTime(ctx sessionctx.Context, row chunk.Row) (res types.Time, isNull bool, err error) { for i := 0; i < len(b.args); i++ { - v, isNull, err := b.args[i].EvalTime(b.ctx, row) + v, isNull, err := b.args[i].EvalTime(ctx, row) if isNull || err != nil { return types.ZeroTime, true, err } @@ -720,10 +720,10 @@ func (b *builtinGreatestTimeSig) evalTime(ctx sessionctx.Context, row chunk.Row) } } // Convert ETType Time value to MySQL actual type, distinguish date and datetime - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx resTimeTp := getAccurateTimeTypeForGLRet(b.cmpAsDate) if res, err = res.Convert(sc.TypeCtx(), resTimeTp); err != nil { - return types.ZeroTime, true, handleInvalidTimeError(b.ctx, err) + return types.ZeroTime, true, handleInvalidTimeError(ctx, err) } return res, false, nil } @@ -740,7 +740,7 @@ func (b *builtinGreatestDurationSig) Clone() builtinFunc { func (b *builtinGreatestDurationSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (res types.Duration, isNull bool, err error) { for i := 0; i < len(b.args); i++ { - v, isNull, err := b.args[i].EvalDuration(b.ctx, row) + v, isNull, err := b.args[i].EvalDuration(ctx, row) if isNull || err != nil { return types.Duration{}, true, err } @@ -831,13 +831,13 @@ func (b *builtinLeastIntSig) Clone() builtinFunc { // evalInt evals a builtinLeastIntSig. // See http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#function_least func (b *builtinLeastIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (min int64, isNull bool, err error) { - min, isNull, err = b.args[0].EvalInt(b.ctx, row) + min, isNull, err = b.args[0].EvalInt(ctx, row) if isNull || err != nil { return min, isNull, err } for i := 1; i < len(b.args); i++ { var v int64 - v, isNull, err = b.args[i].EvalInt(b.ctx, row) + v, isNull, err = b.args[i].EvalInt(ctx, row) if isNull || err != nil { return min, isNull, err } @@ -861,13 +861,13 @@ func (b *builtinLeastRealSig) Clone() builtinFunc { // evalReal evals a builtinLeastRealSig. // See http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#functionleast func (b *builtinLeastRealSig) evalReal(ctx sessionctx.Context, row chunk.Row) (min float64, isNull bool, err error) { - min, isNull, err = b.args[0].EvalReal(b.ctx, row) + min, isNull, err = b.args[0].EvalReal(ctx, row) if isNull || err != nil { return min, isNull, err } for i := 1; i < len(b.args); i++ { var v float64 - v, isNull, err = b.args[i].EvalReal(b.ctx, row) + v, isNull, err = b.args[i].EvalReal(ctx, row) if isNull || err != nil { return min, isNull, err } @@ -891,13 +891,13 @@ func (b *builtinLeastDecimalSig) Clone() builtinFunc { // evalDecimal evals a builtinLeastDecimalSig. // See http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#functionleast func (b *builtinLeastDecimalSig) evalDecimal(ctx sessionctx.Context, row chunk.Row) (min *types.MyDecimal, isNull bool, err error) { - min, isNull, err = b.args[0].EvalDecimal(b.ctx, row) + min, isNull, err = b.args[0].EvalDecimal(ctx, row) if isNull || err != nil { return min, isNull, err } for i := 1; i < len(b.args); i++ { var v *types.MyDecimal - v, isNull, err = b.args[i].EvalDecimal(b.ctx, row) + v, isNull, err = b.args[i].EvalDecimal(ctx, row) if isNull || err != nil { return min, isNull, err } @@ -921,13 +921,13 @@ func (b *builtinLeastStringSig) Clone() builtinFunc { // evalString evals a builtinLeastStringSig. // See http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#functionleast func (b *builtinLeastStringSig) evalString(ctx sessionctx.Context, row chunk.Row) (min string, isNull bool, err error) { - min, isNull, err = b.args[0].EvalString(b.ctx, row) + min, isNull, err = b.args[0].EvalString(ctx, row) if isNull || err != nil { return min, isNull, err } for i := 1; i < len(b.args); i++ { var v string - v, isNull, err = b.args[i].EvalString(b.ctx, row) + v, isNull, err = b.args[i].EvalString(ctx, row) if isNull || err != nil { return min, isNull, err } @@ -953,13 +953,13 @@ func (b *builtinLeastCmpStringAsTimeSig) Clone() builtinFunc { // evalString evals a builtinLeastCmpStringAsTimeSig. // See http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#functionleast func (b *builtinLeastCmpStringAsTimeSig) evalString(ctx sessionctx.Context, row chunk.Row) (strRes string, isNull bool, err error) { - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx for i := 0; i < len(b.args); i++ { - v, isNull, err := b.args[i].EvalString(b.ctx, row) + v, isNull, err := b.args[i].EvalString(ctx, row) if isNull || err != nil { return "", true, err } - v, err = doTimeConversionForGL(b.cmpAsDate, b.ctx, sc, v) + v, err = doTimeConversionForGL(b.cmpAsDate, ctx, sc, v) if err != nil { return v, true, err } @@ -985,7 +985,7 @@ func (b *builtinLeastTimeSig) Clone() builtinFunc { func (b *builtinLeastTimeSig) evalTime(ctx sessionctx.Context, row chunk.Row) (res types.Time, isNull bool, err error) { for i := 0; i < len(b.args); i++ { - v, isNull, err := b.args[i].EvalTime(b.ctx, row) + v, isNull, err := b.args[i].EvalTime(ctx, row) if isNull || err != nil { return types.ZeroTime, true, err } @@ -994,10 +994,10 @@ func (b *builtinLeastTimeSig) evalTime(ctx sessionctx.Context, row chunk.Row) (r } } // Convert ETType Time value to MySQL actual type, distinguish date and datetime - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx resTimeTp := getAccurateTimeTypeForGLRet(b.cmpAsDate) if res, err = res.Convert(sc.TypeCtx(), resTimeTp); err != nil { - return types.ZeroTime, true, handleInvalidTimeError(b.ctx, err) + return types.ZeroTime, true, handleInvalidTimeError(ctx, err) } return res, false, nil } @@ -1024,7 +1024,7 @@ func (b *builtinLeastDurationSig) Clone() builtinFunc { func (b *builtinLeastDurationSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (res types.Duration, isNull bool, err error) { for i := 0; i < len(b.args); i++ { - v, isNull, err := b.args[i].EvalDuration(b.ctx, row) + v, isNull, err := b.args[i].EvalDuration(ctx, row) if isNull || err != nil { return types.Duration{}, true, err } @@ -1096,7 +1096,7 @@ func (b *builtinIntervalIntSig) Clone() builtinFunc { // evalInt evals a builtinIntervalIntSig. // See http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#function_interval func (b *builtinIntervalIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - arg0, isNull, err := b.args[0].EvalInt(b.ctx, row) + arg0, isNull, err := b.args[0].EvalInt(ctx, row) if err != nil { return 0, true, err } @@ -1106,19 +1106,19 @@ func (b *builtinIntervalIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) ( isUint1 := mysql.HasUnsignedFlag(b.args[0].GetType().GetFlag()) var idx int if b.hasNullable { - idx, err = b.linearSearch(arg0, isUint1, b.args[1:], row) + idx, err = b.linearSearch(ctx, arg0, isUint1, b.args[1:], row) } else { - idx, err = b.binSearch(arg0, isUint1, b.args[1:], row) + idx, err = b.binSearch(ctx, arg0, isUint1, b.args[1:], row) } return int64(idx), err != nil, err } // linearSearch linearly scans the argument least to find the position of the first value that is larger than the given target. -func (b *builtinIntervalIntSig) linearSearch(target int64, isUint1 bool, args []Expression, row chunk.Row) (i int, err error) { +func (b *builtinIntervalIntSig) linearSearch(ctx sessionctx.Context, target int64, isUint1 bool, args []Expression, row chunk.Row) (i int, err error) { i = 0 for ; i < len(args); i++ { isUint2 := mysql.HasUnsignedFlag(args[i].GetType().GetFlag()) - arg, isNull, err := args[i].EvalInt(b.ctx, row) + arg, isNull, err := args[i].EvalInt(ctx, row) if err != nil { return 0, err } @@ -1146,11 +1146,11 @@ func (b *builtinIntervalIntSig) linearSearch(target int64, isUint1 bool, args [] // All arguments are treated as integers. // It is required that arg[0] < args[1] < args[2] < ... < args[n] for this function to work correctly. // This is because a binary search is used (very fast). -func (b *builtinIntervalIntSig) binSearch(target int64, isUint1 bool, args []Expression, row chunk.Row) (_ int, err error) { +func (b *builtinIntervalIntSig) binSearch(ctx sessionctx.Context, target int64, isUint1 bool, args []Expression, row chunk.Row) (_ int, err error) { i, j, cmp := 0, len(args), false for i < j { mid := i + (j-i)/2 - v, isNull, err1 := args[mid].EvalInt(b.ctx, row) + v, isNull, err1 := args[mid].EvalInt(ctx, row) if err1 != nil { err = err1 break @@ -1193,7 +1193,7 @@ func (b *builtinIntervalRealSig) Clone() builtinFunc { // evalInt evals a builtinIntervalRealSig. // See http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#function_interval func (b *builtinIntervalRealSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - arg0, isNull, err := b.args[0].EvalReal(b.ctx, row) + arg0, isNull, err := b.args[0].EvalReal(ctx, row) if err != nil { return 0, true, err } @@ -1203,17 +1203,17 @@ func (b *builtinIntervalRealSig) evalInt(ctx sessionctx.Context, row chunk.Row) var idx int if b.hasNullable { - idx, err = b.linearSearch(arg0, b.args[1:], row) + idx, err = b.linearSearch(ctx, arg0, b.args[1:], row) } else { - idx, err = b.binSearch(arg0, b.args[1:], row) + idx, err = b.binSearch(ctx, arg0, b.args[1:], row) } return int64(idx), err != nil, err } -func (b *builtinIntervalRealSig) linearSearch(target float64, args []Expression, row chunk.Row) (i int, err error) { +func (b *builtinIntervalRealSig) linearSearch(ctx sessionctx.Context, target float64, args []Expression, row chunk.Row) (i int, err error) { i = 0 for ; i < len(args); i++ { - arg, isNull, err := args[i].EvalReal(b.ctx, row) + arg, isNull, err := args[i].EvalReal(ctx, row) if err != nil { return 0, err } @@ -1224,11 +1224,11 @@ func (b *builtinIntervalRealSig) linearSearch(target float64, args []Expression, return i, nil } -func (b *builtinIntervalRealSig) binSearch(target float64, args []Expression, row chunk.Row) (_ int, err error) { +func (b *builtinIntervalRealSig) binSearch(ctx sessionctx.Context, target float64, args []Expression, row chunk.Row) (_ int, err error) { i, j := 0, len(args) for i < j { mid := i + (j-i)/2 - v, isNull, err1 := args[mid].EvalReal(b.ctx, row) + v, isNull, err1 := args[mid].EvalReal(ctx, row) if err1 != nil { err = err1 break @@ -1386,7 +1386,7 @@ func tryToConvertConstantInt(ctx sessionctx.Context, targetFieldType *types.Fiel if con.GetType().EvalType() == types.ETInt { return con, false } - dt, err := con.Eval(chunk.Row{}) + dt, err := con.Eval(ctx, chunk.Row{}) if err != nil { return con, false } @@ -1421,7 +1421,7 @@ func tryToConvertConstantInt(ctx sessionctx.Context, targetFieldType *types.Fiel // If the op == LT,LE,GT,GE and it gets an Overflow when converting, return inf/-inf. // If the op == EQ,NullEQ and the constant can never be equal to the int column, return ‘con’(the input, a non-int constant). func RefineComparedConstant(ctx sessionctx.Context, targetFieldType types.FieldType, con *Constant, op opcode.Op) (_ *Constant, isExceptional bool) { - dt, err := con.Eval(chunk.Row{}) + dt, err := con.Eval(ctx, chunk.Row{}) if err != nil { return con, false } @@ -1681,7 +1681,7 @@ func (c *compareFunctionClass) refineArgs(ctx sessionctx.Context, args []Express // see https://github.com/pingcap/tidb/issues/38361 for more details func (c *compareFunctionClass) refineNumericConstantCmpDatetime(ctx sessionctx.Context, args []Expression, constArg *Constant, constArgIdx int) []Expression { - dt, err := constArg.Eval(chunk.Row{}) + dt, err := constArg.Eval(ctx, chunk.Row{}) if err != nil || dt.IsNull() { return args } @@ -1974,12 +1974,8 @@ func (b *builtinLTIntSig) Clone() builtinFunc { return newSig } -func (b *builtinLTIntSig) evalIntWithCtx(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfLT(CompareInt(ctx, b.args[0], b.args[1], row, row)) -} - func (b *builtinLTIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfLT(CompareInt(b.ctx, b.args[0], b.args[1], row, row)) + return resOfLT(CompareInt(ctx, b.args[0], b.args[1], row, row)) } type builtinLTRealSig struct { @@ -1993,7 +1989,7 @@ func (b *builtinLTRealSig) Clone() builtinFunc { } func (b *builtinLTRealSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfLT(CompareReal(b.ctx, b.args[0], b.args[1], row, row)) + return resOfLT(CompareReal(ctx, b.args[0], b.args[1], row, row)) } type builtinLTDecimalSig struct { @@ -2007,7 +2003,7 @@ func (b *builtinLTDecimalSig) Clone() builtinFunc { } func (b *builtinLTDecimalSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfLT(CompareDecimal(b.ctx, b.args[0], b.args[1], row, row)) + return resOfLT(CompareDecimal(ctx, b.args[0], b.args[1], row, row)) } type builtinLTStringSig struct { @@ -2021,7 +2017,7 @@ func (b *builtinLTStringSig) Clone() builtinFunc { } func (b *builtinLTStringSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfLT(CompareStringWithCollationInfo(b.ctx, b.args[0], b.args[1], row, row, b.collation)) + return resOfLT(CompareStringWithCollationInfo(ctx, b.args[0], b.args[1], row, row, b.collation)) } type builtinLTDurationSig struct { @@ -2035,7 +2031,7 @@ func (b *builtinLTDurationSig) Clone() builtinFunc { } func (b *builtinLTDurationSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfLT(CompareDuration(b.ctx, b.args[0], b.args[1], row, row)) + return resOfLT(CompareDuration(ctx, b.args[0], b.args[1], row, row)) } type builtinLTTimeSig struct { @@ -2049,7 +2045,7 @@ func (b *builtinLTTimeSig) Clone() builtinFunc { } func (b *builtinLTTimeSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfLT(CompareTime(b.ctx, b.args[0], b.args[1], row, row)) + return resOfLT(CompareTime(ctx, b.args[0], b.args[1], row, row)) } type builtinLTJSONSig struct { @@ -2063,7 +2059,7 @@ func (b *builtinLTJSONSig) Clone() builtinFunc { } func (b *builtinLTJSONSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfLT(CompareJSON(b.ctx, b.args[0], b.args[1], row, row)) + return resOfLT(CompareJSON(ctx, b.args[0], b.args[1], row, row)) } type builtinLEIntSig struct { @@ -2077,7 +2073,7 @@ func (b *builtinLEIntSig) Clone() builtinFunc { } func (b *builtinLEIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfLE(CompareInt(b.ctx, b.args[0], b.args[1], row, row)) + return resOfLE(CompareInt(ctx, b.args[0], b.args[1], row, row)) } type builtinLERealSig struct { @@ -2091,7 +2087,7 @@ func (b *builtinLERealSig) Clone() builtinFunc { } func (b *builtinLERealSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfLE(CompareReal(b.ctx, b.args[0], b.args[1], row, row)) + return resOfLE(CompareReal(ctx, b.args[0], b.args[1], row, row)) } type builtinLEDecimalSig struct { @@ -2105,7 +2101,7 @@ func (b *builtinLEDecimalSig) Clone() builtinFunc { } func (b *builtinLEDecimalSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfLE(CompareDecimal(b.ctx, b.args[0], b.args[1], row, row)) + return resOfLE(CompareDecimal(ctx, b.args[0], b.args[1], row, row)) } type builtinLEStringSig struct { @@ -2119,7 +2115,7 @@ func (b *builtinLEStringSig) Clone() builtinFunc { } func (b *builtinLEStringSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfLE(CompareStringWithCollationInfo(b.ctx, b.args[0], b.args[1], row, row, b.collation)) + return resOfLE(CompareStringWithCollationInfo(ctx, b.args[0], b.args[1], row, row, b.collation)) } type builtinLEDurationSig struct { @@ -2133,7 +2129,7 @@ func (b *builtinLEDurationSig) Clone() builtinFunc { } func (b *builtinLEDurationSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfLE(CompareDuration(b.ctx, b.args[0], b.args[1], row, row)) + return resOfLE(CompareDuration(ctx, b.args[0], b.args[1], row, row)) } type builtinLETimeSig struct { @@ -2147,7 +2143,7 @@ func (b *builtinLETimeSig) Clone() builtinFunc { } func (b *builtinLETimeSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfLE(CompareTime(b.ctx, b.args[0], b.args[1], row, row)) + return resOfLE(CompareTime(ctx, b.args[0], b.args[1], row, row)) } type builtinLEJSONSig struct { @@ -2161,7 +2157,7 @@ func (b *builtinLEJSONSig) Clone() builtinFunc { } func (b *builtinLEJSONSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfLE(CompareJSON(b.ctx, b.args[0], b.args[1], row, row)) + return resOfLE(CompareJSON(ctx, b.args[0], b.args[1], row, row)) } type builtinGTIntSig struct { @@ -2175,7 +2171,7 @@ func (b *builtinGTIntSig) Clone() builtinFunc { } func (b *builtinGTIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfGT(CompareInt(b.ctx, b.args[0], b.args[1], row, row)) + return resOfGT(CompareInt(ctx, b.args[0], b.args[1], row, row)) } type builtinGTRealSig struct { @@ -2189,7 +2185,7 @@ func (b *builtinGTRealSig) Clone() builtinFunc { } func (b *builtinGTRealSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfGT(CompareReal(b.ctx, b.args[0], b.args[1], row, row)) + return resOfGT(CompareReal(ctx, b.args[0], b.args[1], row, row)) } type builtinGTDecimalSig struct { @@ -2203,7 +2199,7 @@ func (b *builtinGTDecimalSig) Clone() builtinFunc { } func (b *builtinGTDecimalSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfGT(CompareDecimal(b.ctx, b.args[0], b.args[1], row, row)) + return resOfGT(CompareDecimal(ctx, b.args[0], b.args[1], row, row)) } type builtinGTStringSig struct { @@ -2217,7 +2213,7 @@ func (b *builtinGTStringSig) Clone() builtinFunc { } func (b *builtinGTStringSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfGT(CompareStringWithCollationInfo(b.ctx, b.args[0], b.args[1], row, row, b.collation)) + return resOfGT(CompareStringWithCollationInfo(ctx, b.args[0], b.args[1], row, row, b.collation)) } type builtinGTDurationSig struct { @@ -2231,7 +2227,7 @@ func (b *builtinGTDurationSig) Clone() builtinFunc { } func (b *builtinGTDurationSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfGT(CompareDuration(b.ctx, b.args[0], b.args[1], row, row)) + return resOfGT(CompareDuration(ctx, b.args[0], b.args[1], row, row)) } type builtinGTTimeSig struct { @@ -2245,7 +2241,7 @@ func (b *builtinGTTimeSig) Clone() builtinFunc { } func (b *builtinGTTimeSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfGT(CompareTime(b.ctx, b.args[0], b.args[1], row, row)) + return resOfGT(CompareTime(ctx, b.args[0], b.args[1], row, row)) } type builtinGTJSONSig struct { @@ -2259,7 +2255,7 @@ func (b *builtinGTJSONSig) Clone() builtinFunc { } func (b *builtinGTJSONSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfGT(CompareJSON(b.ctx, b.args[0], b.args[1], row, row)) + return resOfGT(CompareJSON(ctx, b.args[0], b.args[1], row, row)) } type builtinGEIntSig struct { @@ -2273,7 +2269,7 @@ func (b *builtinGEIntSig) Clone() builtinFunc { } func (b *builtinGEIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfGE(CompareInt(b.ctx, b.args[0], b.args[1], row, row)) + return resOfGE(CompareInt(ctx, b.args[0], b.args[1], row, row)) } type builtinGERealSig struct { @@ -2287,7 +2283,7 @@ func (b *builtinGERealSig) Clone() builtinFunc { } func (b *builtinGERealSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfGE(CompareReal(b.ctx, b.args[0], b.args[1], row, row)) + return resOfGE(CompareReal(ctx, b.args[0], b.args[1], row, row)) } type builtinGEDecimalSig struct { @@ -2301,7 +2297,7 @@ func (b *builtinGEDecimalSig) Clone() builtinFunc { } func (b *builtinGEDecimalSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfGE(CompareDecimal(b.ctx, b.args[0], b.args[1], row, row)) + return resOfGE(CompareDecimal(ctx, b.args[0], b.args[1], row, row)) } type builtinGEStringSig struct { @@ -2315,7 +2311,7 @@ func (b *builtinGEStringSig) Clone() builtinFunc { } func (b *builtinGEStringSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfGE(CompareStringWithCollationInfo(b.ctx, b.args[0], b.args[1], row, row, b.collation)) + return resOfGE(CompareStringWithCollationInfo(ctx, b.args[0], b.args[1], row, row, b.collation)) } type builtinGEDurationSig struct { @@ -2329,7 +2325,7 @@ func (b *builtinGEDurationSig) Clone() builtinFunc { } func (b *builtinGEDurationSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfGE(CompareDuration(b.ctx, b.args[0], b.args[1], row, row)) + return resOfGE(CompareDuration(ctx, b.args[0], b.args[1], row, row)) } type builtinGETimeSig struct { @@ -2343,7 +2339,7 @@ func (b *builtinGETimeSig) Clone() builtinFunc { } func (b *builtinGETimeSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfGE(CompareTime(b.ctx, b.args[0], b.args[1], row, row)) + return resOfGE(CompareTime(ctx, b.args[0], b.args[1], row, row)) } type builtinGEJSONSig struct { @@ -2357,7 +2353,7 @@ func (b *builtinGEJSONSig) Clone() builtinFunc { } func (b *builtinGEJSONSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfGE(CompareJSON(b.ctx, b.args[0], b.args[1], row, row)) + return resOfGE(CompareJSON(ctx, b.args[0], b.args[1], row, row)) } type builtinEQIntSig struct { @@ -2371,7 +2367,7 @@ func (b *builtinEQIntSig) Clone() builtinFunc { } func (b *builtinEQIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfEQ(CompareInt(b.ctx, b.args[0], b.args[1], row, row)) + return resOfEQ(CompareInt(ctx, b.args[0], b.args[1], row, row)) } type builtinEQRealSig struct { @@ -2385,7 +2381,7 @@ func (b *builtinEQRealSig) Clone() builtinFunc { } func (b *builtinEQRealSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfEQ(CompareReal(b.ctx, b.args[0], b.args[1], row, row)) + return resOfEQ(CompareReal(ctx, b.args[0], b.args[1], row, row)) } type builtinEQDecimalSig struct { @@ -2399,7 +2395,7 @@ func (b *builtinEQDecimalSig) Clone() builtinFunc { } func (b *builtinEQDecimalSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfEQ(CompareDecimal(b.ctx, b.args[0], b.args[1], row, row)) + return resOfEQ(CompareDecimal(ctx, b.args[0], b.args[1], row, row)) } type builtinEQStringSig struct { @@ -2413,7 +2409,7 @@ func (b *builtinEQStringSig) Clone() builtinFunc { } func (b *builtinEQStringSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfEQ(CompareStringWithCollationInfo(b.ctx, b.args[0], b.args[1], row, row, b.collation)) + return resOfEQ(CompareStringWithCollationInfo(ctx, b.args[0], b.args[1], row, row, b.collation)) } type builtinEQDurationSig struct { @@ -2427,7 +2423,7 @@ func (b *builtinEQDurationSig) Clone() builtinFunc { } func (b *builtinEQDurationSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfEQ(CompareDuration(b.ctx, b.args[0], b.args[1], row, row)) + return resOfEQ(CompareDuration(ctx, b.args[0], b.args[1], row, row)) } type builtinEQTimeSig struct { @@ -2441,7 +2437,7 @@ func (b *builtinEQTimeSig) Clone() builtinFunc { } func (b *builtinEQTimeSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfEQ(CompareTime(b.ctx, b.args[0], b.args[1], row, row)) + return resOfEQ(CompareTime(ctx, b.args[0], b.args[1], row, row)) } type builtinEQJSONSig struct { @@ -2455,7 +2451,7 @@ func (b *builtinEQJSONSig) Clone() builtinFunc { } func (b *builtinEQJSONSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfEQ(CompareJSON(b.ctx, b.args[0], b.args[1], row, row)) + return resOfEQ(CompareJSON(ctx, b.args[0], b.args[1], row, row)) } type builtinNEIntSig struct { @@ -2469,7 +2465,7 @@ func (b *builtinNEIntSig) Clone() builtinFunc { } func (b *builtinNEIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfNE(CompareInt(b.ctx, b.args[0], b.args[1], row, row)) + return resOfNE(CompareInt(ctx, b.args[0], b.args[1], row, row)) } type builtinNERealSig struct { @@ -2483,7 +2479,7 @@ func (b *builtinNERealSig) Clone() builtinFunc { } func (b *builtinNERealSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfNE(CompareReal(b.ctx, b.args[0], b.args[1], row, row)) + return resOfNE(CompareReal(ctx, b.args[0], b.args[1], row, row)) } type builtinNEDecimalSig struct { @@ -2497,7 +2493,7 @@ func (b *builtinNEDecimalSig) Clone() builtinFunc { } func (b *builtinNEDecimalSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfNE(CompareDecimal(b.ctx, b.args[0], b.args[1], row, row)) + return resOfNE(CompareDecimal(ctx, b.args[0], b.args[1], row, row)) } type builtinNEStringSig struct { @@ -2511,7 +2507,7 @@ func (b *builtinNEStringSig) Clone() builtinFunc { } func (b *builtinNEStringSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfNE(CompareStringWithCollationInfo(b.ctx, b.args[0], b.args[1], row, row, b.collation)) + return resOfNE(CompareStringWithCollationInfo(ctx, b.args[0], b.args[1], row, row, b.collation)) } type builtinNEDurationSig struct { @@ -2525,7 +2521,7 @@ func (b *builtinNEDurationSig) Clone() builtinFunc { } func (b *builtinNEDurationSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfNE(CompareDuration(b.ctx, b.args[0], b.args[1], row, row)) + return resOfNE(CompareDuration(ctx, b.args[0], b.args[1], row, row)) } type builtinNETimeSig struct { @@ -2539,7 +2535,7 @@ func (b *builtinNETimeSig) Clone() builtinFunc { } func (b *builtinNETimeSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfNE(CompareTime(b.ctx, b.args[0], b.args[1], row, row)) + return resOfNE(CompareTime(ctx, b.args[0], b.args[1], row, row)) } type builtinNEJSONSig struct { @@ -2553,7 +2549,7 @@ func (b *builtinNEJSONSig) Clone() builtinFunc { } func (b *builtinNEJSONSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - return resOfNE(CompareJSON(b.ctx, b.args[0], b.args[1], row, row)) + return resOfNE(CompareJSON(ctx, b.args[0], b.args[1], row, row)) } type builtinNullEQIntSig struct { @@ -2567,11 +2563,11 @@ func (b *builtinNullEQIntSig) Clone() builtinFunc { } func (b *builtinNullEQIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - arg0, isNull0, err := b.args[0].EvalInt(b.ctx, row) + arg0, isNull0, err := b.args[0].EvalInt(ctx, row) if err != nil { return 0, isNull0, err } - arg1, isNull1, err := b.args[1].EvalInt(b.ctx, row) + arg1, isNull1, err := b.args[1].EvalInt(ctx, row) if err != nil { return 0, isNull1, err } @@ -2615,11 +2611,11 @@ func (b *builtinNullEQRealSig) Clone() builtinFunc { } func (b *builtinNullEQRealSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - arg0, isNull0, err := b.args[0].EvalReal(b.ctx, row) + arg0, isNull0, err := b.args[0].EvalReal(ctx, row) if err != nil { return 0, true, err } - arg1, isNull1, err := b.args[1].EvalReal(b.ctx, row) + arg1, isNull1, err := b.args[1].EvalReal(ctx, row) if err != nil { return 0, true, err } @@ -2646,11 +2642,11 @@ func (b *builtinNullEQDecimalSig) Clone() builtinFunc { } func (b *builtinNullEQDecimalSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - arg0, isNull0, err := b.args[0].EvalDecimal(b.ctx, row) + arg0, isNull0, err := b.args[0].EvalDecimal(ctx, row) if err != nil { return 0, true, err } - arg1, isNull1, err := b.args[1].EvalDecimal(b.ctx, row) + arg1, isNull1, err := b.args[1].EvalDecimal(ctx, row) if err != nil { return 0, true, err } @@ -2677,11 +2673,11 @@ func (b *builtinNullEQStringSig) Clone() builtinFunc { } func (b *builtinNullEQStringSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - arg0, isNull0, err := b.args[0].EvalString(b.ctx, row) + arg0, isNull0, err := b.args[0].EvalString(ctx, row) if err != nil { return 0, true, err } - arg1, isNull1, err := b.args[1].EvalString(b.ctx, row) + arg1, isNull1, err := b.args[1].EvalString(ctx, row) if err != nil { return 0, true, err } @@ -2708,11 +2704,11 @@ func (b *builtinNullEQDurationSig) Clone() builtinFunc { } func (b *builtinNullEQDurationSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - arg0, isNull0, err := b.args[0].EvalDuration(b.ctx, row) + arg0, isNull0, err := b.args[0].EvalDuration(ctx, row) if err != nil { return 0, true, err } - arg1, isNull1, err := b.args[1].EvalDuration(b.ctx, row) + arg1, isNull1, err := b.args[1].EvalDuration(ctx, row) if err != nil { return 0, true, err } @@ -2739,11 +2735,11 @@ func (b *builtinNullEQTimeSig) Clone() builtinFunc { } func (b *builtinNullEQTimeSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - arg0, isNull0, err := b.args[0].EvalTime(b.ctx, row) + arg0, isNull0, err := b.args[0].EvalTime(ctx, row) if err != nil { return 0, true, err } - arg1, isNull1, err := b.args[1].EvalTime(b.ctx, row) + arg1, isNull1, err := b.args[1].EvalTime(ctx, row) if err != nil { return 0, true, err } @@ -2770,11 +2766,11 @@ func (b *builtinNullEQJSONSig) Clone() builtinFunc { } func (b *builtinNullEQJSONSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - arg0, isNull0, err := b.args[0].EvalJSON(b.ctx, row) + arg0, isNull0, err := b.args[0].EvalJSON(ctx, row) if err != nil { return 0, true, err } - arg1, isNull1, err := b.args[1].EvalJSON(b.ctx, row) + arg1, isNull1, err := b.args[1].EvalJSON(ctx, row) if err != nil { return 0, true, err } diff --git a/pkg/expression/builtin_compare_test.go b/pkg/expression/builtin_compare_test.go index dffb513c08aa4..dcf9f7ce66c2b 100644 --- a/pkg/expression/builtin_compare_test.go +++ b/pkg/expression/builtin_compare_test.go @@ -207,7 +207,7 @@ func TestCoalesce(t *testing.T) { f, err := newFunctionForTest(ctx, ast.Coalesce, primitiveValsToConstants(ctx, test.args)...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if test.getErr { require.Error(t, err) @@ -376,7 +376,7 @@ func TestGreatestLeastFunc(t *testing.T) { } { f0, err := newFunctionForTest(ctx, ast.Greatest, primitiveValsToConstants(ctx, test.args)...) require.NoError(t, err) - d, err := f0.Eval(chunk.Row{}) + d, err := f0.Eval(ctx, chunk.Row{}) if test.getErr { require.Error(t, err) } else { @@ -390,7 +390,7 @@ func TestGreatestLeastFunc(t *testing.T) { f1, err := newFunctionForTest(ctx, ast.Least, primitiveValsToConstants(ctx, test.args)...) require.NoError(t, err) - d, err = f1.Eval(chunk.Row{}) + d, err = f1.Eval(ctx, chunk.Row{}) if test.getErr { require.Error(t, err) } else { diff --git a/pkg/expression/builtin_compare_vec.go b/pkg/expression/builtin_compare_vec.go index 387adc146bb49..2de07e24f3776 100644 --- a/pkg/expression/builtin_compare_vec.go +++ b/pkg/expression/builtin_compare_vec.go @@ -32,13 +32,13 @@ func (b *builtinGreatestDecimalSig) vecEvalDecimal(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalDecimal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, result); err != nil { return err } d64s := result.Decimals() for j := 1; j < len(b.args); j++ { - if err := b.args[j].VecEvalDecimal(b.ctx, input, buf); err != nil { + if err := b.args[j].VecEvalDecimal(ctx, input, buf); err != nil { return err } result.MergeNulls(buf) @@ -66,13 +66,13 @@ func (b *builtinLeastDecimalSig) vecEvalDecimal(ctx sessionctx.Context, input *c return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalDecimal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, result); err != nil { return err } d64s := result.Decimals() for j := 1; j < len(b.args); j++ { - if err := b.args[j].VecEvalDecimal(b.ctx, input, buf); err != nil { + if err := b.args[j].VecEvalDecimal(ctx, input, buf); err != nil { return err } @@ -101,13 +101,13 @@ func (b *builtinLeastIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chu return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, result); err != nil { return err } i64s := result.Int64s() for j := 1; j < len(b.args); j++ { - if err := b.args[j].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[j].VecEvalInt(ctx, input, buf); err != nil { return err } @@ -136,13 +136,13 @@ func (b *builtinGreatestIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, result); err != nil { return err } i64s := result.Int64s() for j := 1; j < len(b.args); j++ { - if err := b.args[j].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[j].VecEvalInt(ctx, input, buf); err != nil { return err } @@ -177,7 +177,7 @@ func (b *builtinGEIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, return err } defer b.bufAllocator.put(buf0) - if err = b.args[0].VecEvalInt(b.ctx, input, buf0); err != nil { + if err = b.args[0].VecEvalInt(ctx, input, buf0); err != nil { return err } buf1, err = b.bufAllocator.get() @@ -185,7 +185,7 @@ func (b *builtinGEIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, return err } defer b.bufAllocator.put(buf1) - if err = b.args[1].VecEvalInt(b.ctx, input, buf1); err != nil { + if err = b.args[1].VecEvalInt(ctx, input, buf1); err != nil { return err } @@ -207,13 +207,13 @@ func (b *builtinLeastRealSig) vecEvalReal(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalReal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, result); err != nil { return err } f64s := result.Float64s() for j := 1; j < len(b.args); j++ { - if err := b.args[j].VecEvalReal(b.ctx, input, buf); err != nil { + if err := b.args[j].VecEvalReal(ctx, input, buf); err != nil { return err } @@ -236,7 +236,7 @@ func (b *builtinLeastStringSig) vectorized() bool { } func (b *builtinLeastStringSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalString(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalString(ctx, input, result); err != nil { return err } @@ -258,7 +258,7 @@ func (b *builtinLeastStringSig) vecEvalString(ctx sessionctx.Context, input *chu dst := buf2 dst.ReserveString(n) for j := 1; j < len(b.args); j++ { - if err := b.args[j].VecEvalString(b.ctx, input, arg); err != nil { + if err := b.args[j].VecEvalString(ctx, input, arg); err != nil { return err } for i := 0; i < n; i++ { @@ -297,7 +297,7 @@ func (b *builtinEQIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalInt(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf0); err != nil { return err } buf1, err = b.bufAllocator.get() @@ -305,7 +305,7 @@ func (b *builtinEQIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalInt(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf1); err != nil { return err } @@ -329,7 +329,7 @@ func (b *builtinNEIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalInt(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf0); err != nil { return err } buf1, err = b.bufAllocator.get() @@ -337,7 +337,7 @@ func (b *builtinNEIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalInt(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf1); err != nil { return err } @@ -361,7 +361,7 @@ func (b *builtinGTIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalInt(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf0); err != nil { return err } buf1, err = b.bufAllocator.get() @@ -369,7 +369,7 @@ func (b *builtinGTIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalInt(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf1); err != nil { return err } @@ -391,7 +391,7 @@ func (b *builtinNullEQIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalInt(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -400,7 +400,7 @@ func (b *builtinNullEQIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch } defer b.bufAllocator.put(buf1) result.ResizeInt64(n, false) - if err := b.args[1].VecEvalInt(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf1); err != nil { return err } vecCompareInt(mysql.HasUnsignedFlag(b.args[0].GetType().GetFlag()), mysql.HasUnsignedFlag(b.args[1].GetType().GetFlag()), buf0, buf1, result) @@ -425,7 +425,7 @@ func (b *builtinIntervalIntSig) vectorized() bool { func (b *builtinIntervalIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { var err error - if err = b.args[0].VecEvalInt(b.ctx, input, result); err != nil { + if err = b.args[0].VecEvalInt(ctx, input, result); err != nil { return err } i64s := result.Int64s() @@ -437,9 +437,9 @@ func (b *builtinIntervalIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk. continue } if b.hasNullable { - idx, err = b.linearSearch(v, mysql.HasUnsignedFlag(b.args[0].GetType().GetFlag()), b.args[1:], input.GetRow(i)) + idx, err = b.linearSearch(ctx, v, mysql.HasUnsignedFlag(b.args[0].GetType().GetFlag()), b.args[1:], input.GetRow(i)) } else { - idx, err = b.binSearch(v, mysql.HasUnsignedFlag(b.args[0].GetType().GetFlag()), b.args[1:], input.GetRow(i)) + idx, err = b.binSearch(ctx, v, mysql.HasUnsignedFlag(b.args[0].GetType().GetFlag()), b.args[1:], input.GetRow(i)) } if err != nil { return err @@ -460,7 +460,7 @@ func (b *builtinIntervalRealSig) vecEvalInt(ctx sessionctx.Context, input *chunk return err } defer b.bufAllocator.put(buf) - if err = b.args[0].VecEvalReal(b.ctx, input, buf); err != nil { + if err = b.args[0].VecEvalReal(ctx, input, buf); err != nil { return err } @@ -474,9 +474,9 @@ func (b *builtinIntervalRealSig) vecEvalInt(ctx sessionctx.Context, input *chunk continue } if b.hasNullable { - idx, err = b.linearSearch(f64s[i], b.args[1:], input.GetRow(i)) + idx, err = b.linearSearch(ctx, f64s[i], b.args[1:], input.GetRow(i)) } else { - idx, err = b.binSearch(f64s[i], b.args[1:], input.GetRow(i)) + idx, err = b.binSearch(ctx, f64s[i], b.args[1:], input.GetRow(i)) } if err != nil { return err @@ -499,7 +499,7 @@ func (b *builtinLEIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalInt(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf0); err != nil { return err } buf1, err = b.bufAllocator.get() @@ -507,7 +507,7 @@ func (b *builtinLEIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalInt(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf1); err != nil { return err } @@ -531,7 +531,7 @@ func (b *builtinLTIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalInt(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf0); err != nil { return err } buf1, err = b.bufAllocator.get() @@ -539,7 +539,7 @@ func (b *builtinLTIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalInt(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf1); err != nil { return err } @@ -635,7 +635,7 @@ func (b *builtinGreatestCmpStringAsTimeSig) vectorized() bool { } func (b *builtinGreatestCmpStringAsTimeSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx n := input.NumRows() dstStrings := make([]string, n) @@ -643,7 +643,7 @@ func (b *builtinGreatestCmpStringAsTimeSig) vecEvalString(ctx sessionctx.Context dstNullMap := make([]bool, n) for j := 0; j < len(b.args); j++ { - if err := b.args[j].VecEvalString(b.ctx, input, result); err != nil { + if err := b.args[j].VecEvalString(ctx, input, result); err != nil { return err } for i := 0; i < n; i++ { @@ -654,7 +654,7 @@ func (b *builtinGreatestCmpStringAsTimeSig) vecEvalString(ctx sessionctx.Context // NOTE: can't use Column.GetString because it returns an unsafe string, copy the row instead. argTimeStr := string(result.GetBytes(i)) var err error - argTimeStr, err = doTimeConversionForGL(b.cmpAsDate, b.ctx, sc, argTimeStr) + argTimeStr, err = doTimeConversionForGL(b.cmpAsDate, ctx, sc, argTimeStr) if err != nil { return err } @@ -687,13 +687,13 @@ func (b *builtinGreatestRealSig) vecEvalReal(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalReal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, result); err != nil { return err } f64s := result.Float64s() for j := 1; j < len(b.args); j++ { - if err := b.args[j].VecEvalReal(b.ctx, input, buf); err != nil { + if err := b.args[j].VecEvalReal(ctx, input, buf); err != nil { return err } @@ -716,7 +716,7 @@ func (b *builtinLeastCmpStringAsTimeSig) vectorized() bool { } func (b *builtinLeastCmpStringAsTimeSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx n := input.NumRows() dstStrings := make([]string, n) @@ -724,7 +724,7 @@ func (b *builtinLeastCmpStringAsTimeSig) vecEvalString(ctx sessionctx.Context, i dstNullMap := make([]bool, n) for j := 0; j < len(b.args); j++ { - if err := b.args[j].VecEvalString(b.ctx, input, result); err != nil { + if err := b.args[j].VecEvalString(ctx, input, result); err != nil { return err } for i := 0; i < n; i++ { @@ -735,7 +735,7 @@ func (b *builtinLeastCmpStringAsTimeSig) vecEvalString(ctx sessionctx.Context, i // NOTE: can't use Column.GetString because it returns an unsafe string, copy the row instead. argTimeStr := string(result.GetBytes(i)) var err error - argTimeStr, err = doTimeConversionForGL(b.cmpAsDate, b.ctx, sc, argTimeStr) + argTimeStr, err = doTimeConversionForGL(b.cmpAsDate, ctx, sc, argTimeStr) if err != nil { return err } @@ -762,7 +762,7 @@ func (b *builtinGreatestStringSig) vectorized() bool { } func (b *builtinGreatestStringSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalString(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalString(ctx, input, result); err != nil { return err } @@ -783,7 +783,7 @@ func (b *builtinGreatestStringSig) vecEvalString(ctx sessionctx.Context, input * dst := buf2 dst.ReserveString(n) for j := 1; j < len(b.args); j++ { - if err := b.args[j].VecEvalString(b.ctx, input, arg); err != nil { + if err := b.args[j].VecEvalString(ctx, input, arg); err != nil { return err } for i := 0; i < n; i++ { @@ -823,7 +823,7 @@ func (b *builtinGreatestTimeSig) vecEvalTime(ctx sessionctx.Context, input *chun result.ResizeTime(n, false) for argIdx := 0; argIdx < len(b.args); argIdx++ { - if err := b.args[argIdx].VecEvalTime(b.ctx, input, buf); err != nil { + if err := b.args[argIdx].VecEvalTime(ctx, input, buf); err != nil { return err } result.MergeNulls(buf) @@ -838,7 +838,7 @@ func (b *builtinGreatestTimeSig) vecEvalTime(ctx sessionctx.Context, input *chun } } } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx resTimeTp := getAccurateTimeTypeForGLRet(b.cmpAsDate) for rowIdx := 0; rowIdx < n; rowIdx++ { resTimes := result.Times() @@ -864,7 +864,7 @@ func (b *builtinLeastTimeSig) vecEvalTime(ctx sessionctx.Context, input *chunk.C result.ResizeTime(n, false) for argIdx := 0; argIdx < len(b.args); argIdx++ { - if err := b.args[argIdx].VecEvalTime(b.ctx, input, buf); err != nil { + if err := b.args[argIdx].VecEvalTime(ctx, input, buf); err != nil { return err } result.MergeNulls(buf) @@ -879,7 +879,7 @@ func (b *builtinLeastTimeSig) vecEvalTime(ctx sessionctx.Context, input *chunk.C } } } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx resTimeTp := getAccurateTimeTypeForGLRet(b.cmpAsDate) for rowIdx := 0; rowIdx < n; rowIdx++ { resTimes := result.Times() @@ -905,7 +905,7 @@ func (b *builtinGreatestDurationSig) vecEvalDuration(ctx sessionctx.Context, inp result.ResizeGoDuration(n, false) for argIdx := 0; argIdx < len(b.args); argIdx++ { - if err := b.args[argIdx].VecEvalDuration(b.ctx, input, buf); err != nil { + if err := b.args[argIdx].VecEvalDuration(ctx, input, buf); err != nil { return err } result.MergeNulls(buf) @@ -937,7 +937,7 @@ func (b *builtinLeastDurationSig) vecEvalDuration(ctx sessionctx.Context, input result.ResizeGoDuration(n, false) for argIdx := 0; argIdx < len(b.args); argIdx++ { - if err := b.args[argIdx].VecEvalDuration(b.ctx, input, buf); err != nil { + if err := b.args[argIdx].VecEvalDuration(ctx, input, buf); err != nil { return err } result.MergeNulls(buf) diff --git a/pkg/expression/builtin_compare_vec_generated.go b/pkg/expression/builtin_compare_vec_generated.go index d925db16a633c..79811d9447098 100644 --- a/pkg/expression/builtin_compare_vec_generated.go +++ b/pkg/expression/builtin_compare_vec_generated.go @@ -31,7 +31,7 @@ func (b *builtinLTRealSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalReal(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -39,7 +39,7 @@ func (b *builtinLTRealSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalReal(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalReal(ctx, input, buf1); err != nil { return err } @@ -69,7 +69,7 @@ func (b *builtinLTDecimalSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalDecimal(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -77,7 +77,7 @@ func (b *builtinLTDecimalSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalDecimal(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalDecimal(ctx, input, buf1); err != nil { return err } @@ -107,7 +107,7 @@ func (b *builtinLTStringSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chu return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalString(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -115,7 +115,7 @@ func (b *builtinLTStringSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chu return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } @@ -143,7 +143,7 @@ func (b *builtinLTTimeSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalTime(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -151,7 +151,7 @@ func (b *builtinLTTimeSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalTime(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalTime(ctx, input, buf1); err != nil { return err } @@ -181,7 +181,7 @@ func (b *builtinLTDurationSig) vecEvalInt(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalDuration(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalDuration(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -189,7 +189,7 @@ func (b *builtinLTDurationSig) vecEvalInt(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalDuration(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalDuration(ctx, input, buf1); err != nil { return err } @@ -219,7 +219,7 @@ func (b *builtinLTJSONSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalJSON(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalJSON(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -227,7 +227,7 @@ func (b *builtinLTJSONSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalJSON(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalJSON(ctx, input, buf1); err != nil { return err } @@ -255,7 +255,7 @@ func (b *builtinLERealSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalReal(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -263,7 +263,7 @@ func (b *builtinLERealSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalReal(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalReal(ctx, input, buf1); err != nil { return err } @@ -293,7 +293,7 @@ func (b *builtinLEDecimalSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalDecimal(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -301,7 +301,7 @@ func (b *builtinLEDecimalSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalDecimal(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalDecimal(ctx, input, buf1); err != nil { return err } @@ -331,7 +331,7 @@ func (b *builtinLEStringSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chu return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalString(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -339,7 +339,7 @@ func (b *builtinLEStringSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chu return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } @@ -367,7 +367,7 @@ func (b *builtinLETimeSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalTime(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -375,7 +375,7 @@ func (b *builtinLETimeSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalTime(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalTime(ctx, input, buf1); err != nil { return err } @@ -405,7 +405,7 @@ func (b *builtinLEDurationSig) vecEvalInt(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalDuration(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalDuration(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -413,7 +413,7 @@ func (b *builtinLEDurationSig) vecEvalInt(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalDuration(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalDuration(ctx, input, buf1); err != nil { return err } @@ -443,7 +443,7 @@ func (b *builtinLEJSONSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalJSON(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalJSON(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -451,7 +451,7 @@ func (b *builtinLEJSONSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalJSON(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalJSON(ctx, input, buf1); err != nil { return err } @@ -479,7 +479,7 @@ func (b *builtinGTRealSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalReal(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -487,7 +487,7 @@ func (b *builtinGTRealSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalReal(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalReal(ctx, input, buf1); err != nil { return err } @@ -517,7 +517,7 @@ func (b *builtinGTDecimalSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalDecimal(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -525,7 +525,7 @@ func (b *builtinGTDecimalSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalDecimal(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalDecimal(ctx, input, buf1); err != nil { return err } @@ -555,7 +555,7 @@ func (b *builtinGTStringSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chu return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalString(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -563,7 +563,7 @@ func (b *builtinGTStringSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chu return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } @@ -591,7 +591,7 @@ func (b *builtinGTTimeSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalTime(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -599,7 +599,7 @@ func (b *builtinGTTimeSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalTime(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalTime(ctx, input, buf1); err != nil { return err } @@ -629,7 +629,7 @@ func (b *builtinGTDurationSig) vecEvalInt(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalDuration(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalDuration(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -637,7 +637,7 @@ func (b *builtinGTDurationSig) vecEvalInt(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalDuration(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalDuration(ctx, input, buf1); err != nil { return err } @@ -667,7 +667,7 @@ func (b *builtinGTJSONSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalJSON(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalJSON(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -675,7 +675,7 @@ func (b *builtinGTJSONSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalJSON(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalJSON(ctx, input, buf1); err != nil { return err } @@ -703,7 +703,7 @@ func (b *builtinGERealSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalReal(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -711,7 +711,7 @@ func (b *builtinGERealSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalReal(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalReal(ctx, input, buf1); err != nil { return err } @@ -741,7 +741,7 @@ func (b *builtinGEDecimalSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalDecimal(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -749,7 +749,7 @@ func (b *builtinGEDecimalSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalDecimal(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalDecimal(ctx, input, buf1); err != nil { return err } @@ -779,7 +779,7 @@ func (b *builtinGEStringSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chu return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalString(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -787,7 +787,7 @@ func (b *builtinGEStringSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chu return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } @@ -815,7 +815,7 @@ func (b *builtinGETimeSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalTime(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -823,7 +823,7 @@ func (b *builtinGETimeSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalTime(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalTime(ctx, input, buf1); err != nil { return err } @@ -853,7 +853,7 @@ func (b *builtinGEDurationSig) vecEvalInt(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalDuration(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalDuration(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -861,7 +861,7 @@ func (b *builtinGEDurationSig) vecEvalInt(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalDuration(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalDuration(ctx, input, buf1); err != nil { return err } @@ -891,7 +891,7 @@ func (b *builtinGEJSONSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalJSON(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalJSON(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -899,7 +899,7 @@ func (b *builtinGEJSONSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalJSON(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalJSON(ctx, input, buf1); err != nil { return err } @@ -927,7 +927,7 @@ func (b *builtinEQRealSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalReal(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -935,7 +935,7 @@ func (b *builtinEQRealSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalReal(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalReal(ctx, input, buf1); err != nil { return err } @@ -965,7 +965,7 @@ func (b *builtinEQDecimalSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalDecimal(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -973,7 +973,7 @@ func (b *builtinEQDecimalSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalDecimal(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalDecimal(ctx, input, buf1); err != nil { return err } @@ -1003,7 +1003,7 @@ func (b *builtinEQStringSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chu return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalString(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -1011,7 +1011,7 @@ func (b *builtinEQStringSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chu return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } @@ -1039,7 +1039,7 @@ func (b *builtinEQTimeSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalTime(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -1047,7 +1047,7 @@ func (b *builtinEQTimeSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalTime(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalTime(ctx, input, buf1); err != nil { return err } @@ -1077,7 +1077,7 @@ func (b *builtinEQDurationSig) vecEvalInt(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalDuration(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalDuration(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -1085,7 +1085,7 @@ func (b *builtinEQDurationSig) vecEvalInt(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalDuration(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalDuration(ctx, input, buf1); err != nil { return err } @@ -1115,7 +1115,7 @@ func (b *builtinEQJSONSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalJSON(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalJSON(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -1123,7 +1123,7 @@ func (b *builtinEQJSONSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalJSON(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalJSON(ctx, input, buf1); err != nil { return err } @@ -1151,7 +1151,7 @@ func (b *builtinNERealSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalReal(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -1159,7 +1159,7 @@ func (b *builtinNERealSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalReal(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalReal(ctx, input, buf1); err != nil { return err } @@ -1189,7 +1189,7 @@ func (b *builtinNEDecimalSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalDecimal(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -1197,7 +1197,7 @@ func (b *builtinNEDecimalSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalDecimal(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalDecimal(ctx, input, buf1); err != nil { return err } @@ -1227,7 +1227,7 @@ func (b *builtinNEStringSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chu return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalString(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -1235,7 +1235,7 @@ func (b *builtinNEStringSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chu return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } @@ -1263,7 +1263,7 @@ func (b *builtinNETimeSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalTime(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -1271,7 +1271,7 @@ func (b *builtinNETimeSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalTime(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalTime(ctx, input, buf1); err != nil { return err } @@ -1301,7 +1301,7 @@ func (b *builtinNEDurationSig) vecEvalInt(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalDuration(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalDuration(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -1309,7 +1309,7 @@ func (b *builtinNEDurationSig) vecEvalInt(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalDuration(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalDuration(ctx, input, buf1); err != nil { return err } @@ -1339,7 +1339,7 @@ func (b *builtinNEJSONSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalJSON(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalJSON(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -1347,7 +1347,7 @@ func (b *builtinNEJSONSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalJSON(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalJSON(ctx, input, buf1); err != nil { return err } @@ -1375,7 +1375,7 @@ func (b *builtinNullEQRealSig) vecEvalInt(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalReal(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -1383,7 +1383,7 @@ func (b *builtinNullEQRealSig) vecEvalInt(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalReal(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalReal(ctx, input, buf1); err != nil { return err } @@ -1417,7 +1417,7 @@ func (b *builtinNullEQDecimalSig) vecEvalInt(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalDecimal(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -1425,7 +1425,7 @@ func (b *builtinNullEQDecimalSig) vecEvalInt(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalDecimal(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalDecimal(ctx, input, buf1); err != nil { return err } @@ -1459,7 +1459,7 @@ func (b *builtinNullEQStringSig) vecEvalInt(ctx sessionctx.Context, input *chunk return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalString(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -1467,7 +1467,7 @@ func (b *builtinNullEQStringSig) vecEvalInt(ctx sessionctx.Context, input *chunk return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } @@ -1499,7 +1499,7 @@ func (b *builtinNullEQTimeSig) vecEvalInt(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalTime(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -1507,7 +1507,7 @@ func (b *builtinNullEQTimeSig) vecEvalInt(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalTime(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalTime(ctx, input, buf1); err != nil { return err } @@ -1541,7 +1541,7 @@ func (b *builtinNullEQDurationSig) vecEvalInt(ctx sessionctx.Context, input *chu return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalDuration(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalDuration(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -1549,7 +1549,7 @@ func (b *builtinNullEQDurationSig) vecEvalInt(ctx sessionctx.Context, input *chu return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalDuration(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalDuration(ctx, input, buf1); err != nil { return err } @@ -1583,7 +1583,7 @@ func (b *builtinNullEQJSONSig) vecEvalInt(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalJSON(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalJSON(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -1591,7 +1591,7 @@ func (b *builtinNullEQJSONSig) vecEvalInt(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalJSON(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalJSON(ctx, input, buf1); err != nil { return err } @@ -1647,10 +1647,10 @@ func (b *builtinCoalesceIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(buf1) - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() for j := 0; j < len(b.args); j++ { - err := b.args[j].VecEvalInt(b.ctx, input, buf1) + err := b.args[j].VecEvalInt(ctx, input, buf1) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -1704,10 +1704,10 @@ func (b *builtinCoalesceRealSig) vecEvalReal(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(buf1) - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() for j := 0; j < len(b.args); j++ { - err := b.args[j].VecEvalReal(b.ctx, input, buf1) + err := b.args[j].VecEvalReal(ctx, input, buf1) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -1761,10 +1761,10 @@ func (b *builtinCoalesceDecimalSig) vecEvalDecimal(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(buf1) - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() for j := 0; j < len(b.args); j++ { - err := b.args[j].VecEvalDecimal(b.ctx, input, buf1) + err := b.args[j].VecEvalDecimal(ctx, input, buf1) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -1812,7 +1812,7 @@ func (b *builtinCoalesceStringSig) vecEvalString(ctx sessionctx.Context, input * argLen := len(b.args) bufs := make([]*chunk.Column, argLen) - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() for i := 0; i < argLen; i++ { buf, err := b.bufAllocator.get() @@ -1820,7 +1820,7 @@ func (b *builtinCoalesceStringSig) vecEvalString(ctx sessionctx.Context, input * return err } defer b.bufAllocator.put(buf) - err = b.args[i].VecEvalString(b.ctx, input, buf) + err = b.args[i].VecEvalString(ctx, input, buf) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -1881,10 +1881,10 @@ func (b *builtinCoalesceTimeSig) vecEvalTime(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(buf1) - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() for j := 0; j < len(b.args); j++ { - err := b.args[j].VecEvalTime(b.ctx, input, buf1) + err := b.args[j].VecEvalTime(ctx, input, buf1) fsp := b.tp.GetDecimal() afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { @@ -1940,10 +1940,10 @@ func (b *builtinCoalesceDurationSig) vecEvalDuration(ctx sessionctx.Context, inp return err } defer b.bufAllocator.put(buf1) - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() for j := 0; j < len(b.args); j++ { - err := b.args[j].VecEvalDuration(b.ctx, input, buf1) + err := b.args[j].VecEvalDuration(ctx, input, buf1) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -1991,7 +1991,7 @@ func (b *builtinCoalesceJSONSig) vecEvalJSON(ctx sessionctx.Context, input *chun argLen := len(b.args) bufs := make([]*chunk.Column, argLen) - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() for i := 0; i < argLen; i++ { buf, err := b.bufAllocator.get() @@ -1999,7 +1999,7 @@ func (b *builtinCoalesceJSONSig) vecEvalJSON(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(buf) - err = b.args[i].VecEvalJSON(b.ctx, input, buf) + err = b.args[i].VecEvalJSON(ctx, input, buf) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { diff --git a/pkg/expression/builtin_control.go b/pkg/expression/builtin_control.go index 91abd12931c8e..628c100659348 100644 --- a/pkg/expression/builtin_control.go +++ b/pkg/expression/builtin_control.go @@ -393,21 +393,21 @@ func (b *builtinCaseWhenIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) ( var condition int64 args, l := b.getArgs(), len(b.getArgs()) for i := 0; i < l-1; i += 2 { - condition, isNull, err = args[i].EvalInt(b.ctx, row) + condition, isNull, err = args[i].EvalInt(ctx, row) if err != nil { return 0, isNull, err } if isNull || condition == 0 { continue } - ret, isNull, err = args[i+1].EvalInt(b.ctx, row) + ret, isNull, err = args[i+1].EvalInt(ctx, row) return ret, isNull, err } // when clause(condition, result) -> args[i], args[i+1]; (i >= 0 && i+1 < l-1) // else clause -> args[l-1] // If case clause has else clause, l%2 == 1. if l%2 == 1 { - ret, isNull, err = args[l-1].EvalInt(b.ctx, row) + ret, isNull, err = args[l-1].EvalInt(ctx, row) return ret, isNull, err } return ret, true, nil @@ -429,21 +429,21 @@ func (b *builtinCaseWhenRealSig) evalReal(ctx sessionctx.Context, row chunk.Row) var condition int64 args, l := b.getArgs(), len(b.getArgs()) for i := 0; i < l-1; i += 2 { - condition, isNull, err = args[i].EvalInt(b.ctx, row) + condition, isNull, err = args[i].EvalInt(ctx, row) if err != nil { return 0, isNull, err } if isNull || condition == 0 { continue } - ret, isNull, err = args[i+1].EvalReal(b.ctx, row) + ret, isNull, err = args[i+1].EvalReal(ctx, row) return ret, isNull, err } // when clause(condition, result) -> args[i], args[i+1]; (i >= 0 && i+1 < l-1) // else clause -> args[l-1] // If case clause has else clause, l%2 == 1. if l%2 == 1 { - ret, isNull, err = args[l-1].EvalReal(b.ctx, row) + ret, isNull, err = args[l-1].EvalReal(ctx, row) return ret, isNull, err } return ret, true, nil @@ -465,21 +465,21 @@ func (b *builtinCaseWhenDecimalSig) evalDecimal(ctx sessionctx.Context, row chun var condition int64 args, l := b.getArgs(), len(b.getArgs()) for i := 0; i < l-1; i += 2 { - condition, isNull, err = args[i].EvalInt(b.ctx, row) + condition, isNull, err = args[i].EvalInt(ctx, row) if err != nil { return nil, isNull, err } if isNull || condition == 0 { continue } - ret, isNull, err = args[i+1].EvalDecimal(b.ctx, row) + ret, isNull, err = args[i+1].EvalDecimal(ctx, row) return ret, isNull, err } // when clause(condition, result) -> args[i], args[i+1]; (i >= 0 && i+1 < l-1) // else clause -> args[l-1] // If case clause has else clause, l%2 == 1. if l%2 == 1 { - ret, isNull, err = args[l-1].EvalDecimal(b.ctx, row) + ret, isNull, err = args[l-1].EvalDecimal(ctx, row) return ret, isNull, err } return ret, true, nil @@ -501,21 +501,21 @@ func (b *builtinCaseWhenStringSig) evalString(ctx sessionctx.Context, row chunk. var condition int64 args, l := b.getArgs(), len(b.getArgs()) for i := 0; i < l-1; i += 2 { - condition, isNull, err = args[i].EvalInt(b.ctx, row) + condition, isNull, err = args[i].EvalInt(ctx, row) if err != nil { return "", isNull, err } if isNull || condition == 0 { continue } - ret, isNull, err = args[i+1].EvalString(b.ctx, row) + ret, isNull, err = args[i+1].EvalString(ctx, row) return ret, isNull, err } // when clause(condition, result) -> args[i], args[i+1]; (i >= 0 && i+1 < l-1) // else clause -> args[l-1] // If case clause has else clause, l%2 == 1. if l%2 == 1 { - ret, isNull, err = args[l-1].EvalString(b.ctx, row) + ret, isNull, err = args[l-1].EvalString(ctx, row) return ret, isNull, err } return ret, true, nil @@ -537,21 +537,21 @@ func (b *builtinCaseWhenTimeSig) evalTime(ctx sessionctx.Context, row chunk.Row) var condition int64 args, l := b.getArgs(), len(b.getArgs()) for i := 0; i < l-1; i += 2 { - condition, isNull, err = args[i].EvalInt(b.ctx, row) + condition, isNull, err = args[i].EvalInt(ctx, row) if err != nil { return ret, isNull, err } if isNull || condition == 0 { continue } - ret, isNull, err = args[i+1].EvalTime(b.ctx, row) + ret, isNull, err = args[i+1].EvalTime(ctx, row) return ret, isNull, err } // when clause(condition, result) -> args[i], args[i+1]; (i >= 0 && i+1 < l-1) // else clause -> args[l-1] // If case clause has else clause, l%2 == 1. if l%2 == 1 { - ret, isNull, err = args[l-1].EvalTime(b.ctx, row) + ret, isNull, err = args[l-1].EvalTime(ctx, row) return ret, isNull, err } return ret, true, nil @@ -573,21 +573,21 @@ func (b *builtinCaseWhenDurationSig) evalDuration(ctx sessionctx.Context, row ch var condition int64 args, l := b.getArgs(), len(b.getArgs()) for i := 0; i < l-1; i += 2 { - condition, isNull, err = args[i].EvalInt(b.ctx, row) + condition, isNull, err = args[i].EvalInt(ctx, row) if err != nil { return ret, true, err } if isNull || condition == 0 { continue } - ret, isNull, err = args[i+1].EvalDuration(b.ctx, row) + ret, isNull, err = args[i+1].EvalDuration(ctx, row) return ret, isNull, err } // when clause(condition, result) -> args[i], args[i+1]; (i >= 0 && i+1 < l-1) // else clause -> args[l-1] // If case clause has else clause, l%2 == 1. if l%2 == 1 { - ret, isNull, err = args[l-1].EvalDuration(b.ctx, row) + ret, isNull, err = args[l-1].EvalDuration(ctx, row) return ret, isNull, err } return ret, true, nil @@ -609,20 +609,20 @@ func (b *builtinCaseWhenJSONSig) evalJSON(ctx sessionctx.Context, row chunk.Row) var condition int64 args, l := b.getArgs(), len(b.getArgs()) for i := 0; i < l-1; i += 2 { - condition, isNull, err = args[i].EvalInt(b.ctx, row) + condition, isNull, err = args[i].EvalInt(ctx, row) if err != nil { return } if isNull || condition == 0 { continue } - return args[i+1].EvalJSON(b.ctx, row) + return args[i+1].EvalJSON(ctx, row) } // when clause(condition, result) -> args[i], args[i+1]; (i >= 0 && i+1 < l-1) // else clause -> args[l-1] // If case clause has else clause, l%2 == 1. if l%2 == 1 { - return args[l-1].EvalJSON(b.ctx, row) + return args[l-1].EvalJSON(ctx, row) } return ret, true, nil } @@ -689,14 +689,14 @@ func (b *builtinIfIntSig) Clone() builtinFunc { } func (b *builtinIfIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - arg0, isNull0, err := b.args[0].EvalInt(b.ctx, row) + arg0, isNull0, err := b.args[0].EvalInt(ctx, row) if err != nil { return 0, true, err } if !isNull0 && arg0 != 0 { - return b.args[1].EvalInt(b.ctx, row) + return b.args[1].EvalInt(ctx, row) } - return b.args[2].EvalInt(b.ctx, row) + return b.args[2].EvalInt(ctx, row) } type builtinIfRealSig struct { @@ -710,14 +710,14 @@ func (b *builtinIfRealSig) Clone() builtinFunc { } func (b *builtinIfRealSig) evalReal(ctx sessionctx.Context, row chunk.Row) (val float64, isNull bool, err error) { - arg0, isNull0, err := b.args[0].EvalInt(b.ctx, row) + arg0, isNull0, err := b.args[0].EvalInt(ctx, row) if err != nil { return 0, true, err } if !isNull0 && arg0 != 0 { - return b.args[1].EvalReal(b.ctx, row) + return b.args[1].EvalReal(ctx, row) } - return b.args[2].EvalReal(b.ctx, row) + return b.args[2].EvalReal(ctx, row) } type builtinIfDecimalSig struct { @@ -731,14 +731,14 @@ func (b *builtinIfDecimalSig) Clone() builtinFunc { } func (b *builtinIfDecimalSig) evalDecimal(ctx sessionctx.Context, row chunk.Row) (val *types.MyDecimal, isNull bool, err error) { - arg0, isNull0, err := b.args[0].EvalInt(b.ctx, row) + arg0, isNull0, err := b.args[0].EvalInt(ctx, row) if err != nil { return nil, true, err } if !isNull0 && arg0 != 0 { - return b.args[1].EvalDecimal(b.ctx, row) + return b.args[1].EvalDecimal(ctx, row) } - return b.args[2].EvalDecimal(b.ctx, row) + return b.args[2].EvalDecimal(ctx, row) } type builtinIfStringSig struct { @@ -752,14 +752,14 @@ func (b *builtinIfStringSig) Clone() builtinFunc { } func (b *builtinIfStringSig) evalString(ctx sessionctx.Context, row chunk.Row) (val string, isNull bool, err error) { - arg0, isNull0, err := b.args[0].EvalInt(b.ctx, row) + arg0, isNull0, err := b.args[0].EvalInt(ctx, row) if err != nil { return "", true, err } if !isNull0 && arg0 != 0 { - return b.args[1].EvalString(b.ctx, row) + return b.args[1].EvalString(ctx, row) } - return b.args[2].EvalString(b.ctx, row) + return b.args[2].EvalString(ctx, row) } type builtinIfTimeSig struct { @@ -773,14 +773,14 @@ func (b *builtinIfTimeSig) Clone() builtinFunc { } func (b *builtinIfTimeSig) evalTime(ctx sessionctx.Context, row chunk.Row) (ret types.Time, isNull bool, err error) { - arg0, isNull0, err := b.args[0].EvalInt(b.ctx, row) + arg0, isNull0, err := b.args[0].EvalInt(ctx, row) if err != nil { return ret, true, err } if !isNull0 && arg0 != 0 { - return b.args[1].EvalTime(b.ctx, row) + return b.args[1].EvalTime(ctx, row) } - return b.args[2].EvalTime(b.ctx, row) + return b.args[2].EvalTime(ctx, row) } type builtinIfDurationSig struct { @@ -794,14 +794,14 @@ func (b *builtinIfDurationSig) Clone() builtinFunc { } func (b *builtinIfDurationSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (ret types.Duration, isNull bool, err error) { - arg0, isNull0, err := b.args[0].EvalInt(b.ctx, row) + arg0, isNull0, err := b.args[0].EvalInt(ctx, row) if err != nil { return ret, true, err } if !isNull0 && arg0 != 0 { - return b.args[1].EvalDuration(b.ctx, row) + return b.args[1].EvalDuration(ctx, row) } - return b.args[2].EvalDuration(b.ctx, row) + return b.args[2].EvalDuration(ctx, row) } type builtinIfJSONSig struct { @@ -815,14 +815,14 @@ func (b *builtinIfJSONSig) Clone() builtinFunc { } func (b *builtinIfJSONSig) evalJSON(ctx sessionctx.Context, row chunk.Row) (ret types.BinaryJSON, isNull bool, err error) { - arg0, isNull0, err := b.args[0].EvalInt(b.ctx, row) + arg0, isNull0, err := b.args[0].EvalInt(ctx, row) if err != nil { return ret, true, err } if !isNull0 && arg0 != 0 { - return b.args[1].EvalJSON(b.ctx, row) + return b.args[1].EvalJSON(ctx, row) } - return b.args[2].EvalJSON(b.ctx, row) + return b.args[2].EvalJSON(ctx, row) } type ifNullFunctionClass struct { @@ -889,11 +889,11 @@ func (b *builtinIfNullIntSig) Clone() builtinFunc { } func (b *builtinIfNullIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - arg0, isNull, err := b.args[0].EvalInt(b.ctx, row) + arg0, isNull, err := b.args[0].EvalInt(ctx, row) if !isNull || err != nil { return arg0, err != nil, err } - arg1, isNull, err := b.args[1].EvalInt(b.ctx, row) + arg1, isNull, err := b.args[1].EvalInt(ctx, row) return arg1, isNull || err != nil, err } @@ -908,11 +908,11 @@ func (b *builtinIfNullRealSig) Clone() builtinFunc { } func (b *builtinIfNullRealSig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - arg0, isNull, err := b.args[0].EvalReal(b.ctx, row) + arg0, isNull, err := b.args[0].EvalReal(ctx, row) if !isNull || err != nil { return arg0, err != nil, err } - arg1, isNull, err := b.args[1].EvalReal(b.ctx, row) + arg1, isNull, err := b.args[1].EvalReal(ctx, row) return arg1, isNull || err != nil, err } @@ -927,11 +927,11 @@ func (b *builtinIfNullDecimalSig) Clone() builtinFunc { } func (b *builtinIfNullDecimalSig) evalDecimal(ctx sessionctx.Context, row chunk.Row) (*types.MyDecimal, bool, error) { - arg0, isNull, err := b.args[0].EvalDecimal(b.ctx, row) + arg0, isNull, err := b.args[0].EvalDecimal(ctx, row) if !isNull || err != nil { return arg0, err != nil, err } - arg1, isNull, err := b.args[1].EvalDecimal(b.ctx, row) + arg1, isNull, err := b.args[1].EvalDecimal(ctx, row) return arg1, isNull || err != nil, err } @@ -946,11 +946,11 @@ func (b *builtinIfNullStringSig) Clone() builtinFunc { } func (b *builtinIfNullStringSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - arg0, isNull, err := b.args[0].EvalString(b.ctx, row) + arg0, isNull, err := b.args[0].EvalString(ctx, row) if !isNull || err != nil { return arg0, err != nil, err } - arg1, isNull, err := b.args[1].EvalString(b.ctx, row) + arg1, isNull, err := b.args[1].EvalString(ctx, row) return arg1, isNull || err != nil, err } @@ -965,11 +965,11 @@ func (b *builtinIfNullTimeSig) Clone() builtinFunc { } func (b *builtinIfNullTimeSig) evalTime(ctx sessionctx.Context, row chunk.Row) (types.Time, bool, error) { - arg0, isNull, err := b.args[0].EvalTime(b.ctx, row) + arg0, isNull, err := b.args[0].EvalTime(ctx, row) if !isNull || err != nil { return arg0, err != nil, err } - arg1, isNull, err := b.args[1].EvalTime(b.ctx, row) + arg1, isNull, err := b.args[1].EvalTime(ctx, row) return arg1, isNull || err != nil, err } @@ -984,11 +984,11 @@ func (b *builtinIfNullDurationSig) Clone() builtinFunc { } func (b *builtinIfNullDurationSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (types.Duration, bool, error) { - arg0, isNull, err := b.args[0].EvalDuration(b.ctx, row) + arg0, isNull, err := b.args[0].EvalDuration(ctx, row) if !isNull || err != nil { return arg0, err != nil, err } - arg1, isNull, err := b.args[1].EvalDuration(b.ctx, row) + arg1, isNull, err := b.args[1].EvalDuration(ctx, row) return arg1, isNull || err != nil, err } @@ -1003,10 +1003,10 @@ func (b *builtinIfNullJSONSig) Clone() builtinFunc { } func (b *builtinIfNullJSONSig) evalJSON(ctx sessionctx.Context, row chunk.Row) (types.BinaryJSON, bool, error) { - arg0, isNull, err := b.args[0].EvalJSON(b.ctx, row) + arg0, isNull, err := b.args[0].EvalJSON(ctx, row) if !isNull { return arg0, err != nil, err } - arg1, isNull, err := b.args[1].EvalJSON(b.ctx, row) + arg1, isNull, err := b.args[1].EvalJSON(ctx, row) return arg1, isNull || err != nil, err } diff --git a/pkg/expression/builtin_control_test.go b/pkg/expression/builtin_control_test.go index 84e54b7769bde..354543f89c8c4 100644 --- a/pkg/expression/builtin_control_test.go +++ b/pkg/expression/builtin_control_test.go @@ -131,7 +131,7 @@ func TestIfNull(t *testing.T) { for _, tt := range tbl { f, err := newFunctionForTest(ctx, ast.Ifnull, primitiveValsToConstants(ctx, []interface{}{tt.arg1, tt.arg2})...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if tt.getErr { require.Error(t, err) } else { diff --git a/pkg/expression/builtin_control_vec_generated.go b/pkg/expression/builtin_control_vec_generated.go index 7f68c704ed78f..783685278f7c0 100644 --- a/pkg/expression/builtin_control_vec_generated.go +++ b/pkg/expression/builtin_control_vec_generated.go @@ -57,7 +57,7 @@ func (b *builtinCaseWhenIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk. var eLse *chunk.Column thensSlice := make([][]int64, l/2) var eLseSlice []int64 - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() for j := 0; j < l-1; j += 2 { @@ -66,7 +66,7 @@ func (b *builtinCaseWhenIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(bufWhen) - err = args[j].VecEvalInt(b.ctx, input, bufWhen) + err = args[j].VecEvalInt(ctx, input, bufWhen) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -82,7 +82,7 @@ func (b *builtinCaseWhenIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(bufThen) - err = args[j+1].VecEvalInt(b.ctx, input, bufThen) + err = args[j+1].VecEvalInt(ctx, input, bufThen) afterWarns = sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -102,7 +102,7 @@ func (b *builtinCaseWhenIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(bufElse) - err = args[l-1].VecEvalInt(b.ctx, input, bufElse) + err = args[l-1].VecEvalInt(ctx, input, bufElse) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -168,7 +168,7 @@ func (b *builtinCaseWhenRealSig) vecEvalReal(ctx sessionctx.Context, input *chun var eLse *chunk.Column thensSlice := make([][]float64, l/2) var eLseSlice []float64 - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() for j := 0; j < l-1; j += 2 { @@ -177,7 +177,7 @@ func (b *builtinCaseWhenRealSig) vecEvalReal(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(bufWhen) - err = args[j].VecEvalInt(b.ctx, input, bufWhen) + err = args[j].VecEvalInt(ctx, input, bufWhen) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -193,7 +193,7 @@ func (b *builtinCaseWhenRealSig) vecEvalReal(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(bufThen) - err = args[j+1].VecEvalReal(b.ctx, input, bufThen) + err = args[j+1].VecEvalReal(ctx, input, bufThen) afterWarns = sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -213,7 +213,7 @@ func (b *builtinCaseWhenRealSig) vecEvalReal(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(bufElse) - err = args[l-1].VecEvalReal(b.ctx, input, bufElse) + err = args[l-1].VecEvalReal(ctx, input, bufElse) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -279,7 +279,7 @@ func (b *builtinCaseWhenDecimalSig) vecEvalDecimal(ctx sessionctx.Context, input var eLse *chunk.Column thensSlice := make([][]types.MyDecimal, l/2) var eLseSlice []types.MyDecimal - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() for j := 0; j < l-1; j += 2 { @@ -288,7 +288,7 @@ func (b *builtinCaseWhenDecimalSig) vecEvalDecimal(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(bufWhen) - err = args[j].VecEvalInt(b.ctx, input, bufWhen) + err = args[j].VecEvalInt(ctx, input, bufWhen) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -304,7 +304,7 @@ func (b *builtinCaseWhenDecimalSig) vecEvalDecimal(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(bufThen) - err = args[j+1].VecEvalDecimal(b.ctx, input, bufThen) + err = args[j+1].VecEvalDecimal(ctx, input, bufThen) afterWarns = sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -324,7 +324,7 @@ func (b *builtinCaseWhenDecimalSig) vecEvalDecimal(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(bufElse) - err = args[l-1].VecEvalDecimal(b.ctx, input, bufElse) + err = args[l-1].VecEvalDecimal(ctx, input, bufElse) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -385,7 +385,7 @@ func (b *builtinCaseWhenStringSig) vecEvalString(ctx sessionctx.Context, input * whensSlice := make([][]int64, l/2) thens := make([]*chunk.Column, l/2) var eLse *chunk.Column - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() for j := 0; j < l-1; j += 2 { @@ -394,7 +394,7 @@ func (b *builtinCaseWhenStringSig) vecEvalString(ctx sessionctx.Context, input * return err } defer b.bufAllocator.put(bufWhen) - err = args[j].VecEvalInt(b.ctx, input, bufWhen) + err = args[j].VecEvalInt(ctx, input, bufWhen) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -410,7 +410,7 @@ func (b *builtinCaseWhenStringSig) vecEvalString(ctx sessionctx.Context, input * return err } defer b.bufAllocator.put(bufThen) - err = args[j+1].VecEvalString(b.ctx, input, bufThen) + err = args[j+1].VecEvalString(ctx, input, bufThen) afterWarns = sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -429,7 +429,7 @@ func (b *builtinCaseWhenStringSig) vecEvalString(ctx sessionctx.Context, input * return err } defer b.bufAllocator.put(bufElse) - err = args[l-1].VecEvalString(b.ctx, input, bufElse) + err = args[l-1].VecEvalString(ctx, input, bufElse) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -499,7 +499,7 @@ func (b *builtinCaseWhenTimeSig) vecEvalTime(ctx sessionctx.Context, input *chun var eLse *chunk.Column thensSlice := make([][]types.Time, l/2) var eLseSlice []types.Time - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() for j := 0; j < l-1; j += 2 { @@ -508,7 +508,7 @@ func (b *builtinCaseWhenTimeSig) vecEvalTime(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(bufWhen) - err = args[j].VecEvalInt(b.ctx, input, bufWhen) + err = args[j].VecEvalInt(ctx, input, bufWhen) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -524,7 +524,7 @@ func (b *builtinCaseWhenTimeSig) vecEvalTime(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(bufThen) - err = args[j+1].VecEvalTime(b.ctx, input, bufThen) + err = args[j+1].VecEvalTime(ctx, input, bufThen) afterWarns = sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -544,7 +544,7 @@ func (b *builtinCaseWhenTimeSig) vecEvalTime(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(bufElse) - err = args[l-1].VecEvalTime(b.ctx, input, bufElse) + err = args[l-1].VecEvalTime(ctx, input, bufElse) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -610,7 +610,7 @@ func (b *builtinCaseWhenDurationSig) vecEvalDuration(ctx sessionctx.Context, inp var eLse *chunk.Column thensSlice := make([][]time.Duration, l/2) var eLseSlice []time.Duration - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() for j := 0; j < l-1; j += 2 { @@ -619,7 +619,7 @@ func (b *builtinCaseWhenDurationSig) vecEvalDuration(ctx sessionctx.Context, inp return err } defer b.bufAllocator.put(bufWhen) - err = args[j].VecEvalInt(b.ctx, input, bufWhen) + err = args[j].VecEvalInt(ctx, input, bufWhen) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -635,7 +635,7 @@ func (b *builtinCaseWhenDurationSig) vecEvalDuration(ctx sessionctx.Context, inp return err } defer b.bufAllocator.put(bufThen) - err = args[j+1].VecEvalDuration(b.ctx, input, bufThen) + err = args[j+1].VecEvalDuration(ctx, input, bufThen) afterWarns = sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -655,7 +655,7 @@ func (b *builtinCaseWhenDurationSig) vecEvalDuration(ctx sessionctx.Context, inp return err } defer b.bufAllocator.put(bufElse) - err = args[l-1].VecEvalDuration(b.ctx, input, bufElse) + err = args[l-1].VecEvalDuration(ctx, input, bufElse) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -716,7 +716,7 @@ func (b *builtinCaseWhenJSONSig) vecEvalJSON(ctx sessionctx.Context, input *chun whensSlice := make([][]int64, l/2) thens := make([]*chunk.Column, l/2) var eLse *chunk.Column - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() for j := 0; j < l-1; j += 2 { @@ -725,7 +725,7 @@ func (b *builtinCaseWhenJSONSig) vecEvalJSON(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(bufWhen) - err = args[j].VecEvalInt(b.ctx, input, bufWhen) + err = args[j].VecEvalInt(ctx, input, bufWhen) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -741,7 +741,7 @@ func (b *builtinCaseWhenJSONSig) vecEvalJSON(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(bufThen) - err = args[j+1].VecEvalJSON(b.ctx, input, bufThen) + err = args[j+1].VecEvalJSON(ctx, input, bufThen) afterWarns = sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -760,7 +760,7 @@ func (b *builtinCaseWhenJSONSig) vecEvalJSON(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(bufElse) - err = args[l-1].VecEvalJSON(b.ctx, input, bufElse) + err = args[l-1].VecEvalJSON(ctx, input, bufElse) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -823,7 +823,7 @@ func (b *builtinIfNullIntSig) fallbackEvalInt(ctx sessionctx.Context, input *chu func (b *builtinIfNullIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - if err := b.args[0].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, result); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -831,9 +831,9 @@ func (b *builtinIfNullIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf1) - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() - err = b.args[1].VecEvalInt(b.ctx, input, buf1) + err = b.args[1].VecEvalInt(ctx, input, buf1) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -878,7 +878,7 @@ func (b *builtinIfNullRealSig) fallbackEvalReal(ctx sessionctx.Context, input *c func (b *builtinIfNullRealSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - if err := b.args[0].VecEvalReal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, result); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -886,9 +886,9 @@ func (b *builtinIfNullRealSig) vecEvalReal(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(buf1) - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() - err = b.args[1].VecEvalReal(b.ctx, input, buf1) + err = b.args[1].VecEvalReal(ctx, input, buf1) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -933,7 +933,7 @@ func (b *builtinIfNullDecimalSig) fallbackEvalDecimal(ctx sessionctx.Context, in func (b *builtinIfNullDecimalSig) vecEvalDecimal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - if err := b.args[0].VecEvalDecimal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, result); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -941,9 +941,9 @@ func (b *builtinIfNullDecimalSig) vecEvalDecimal(ctx sessionctx.Context, input * return err } defer b.bufAllocator.put(buf1) - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() - err = b.args[1].VecEvalDecimal(b.ctx, input, buf1) + err = b.args[1].VecEvalDecimal(ctx, input, buf1) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -990,7 +990,7 @@ func (b *builtinIfNullStringSig) vecEvalString(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalString(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -998,9 +998,9 @@ func (b *builtinIfNullStringSig) vecEvalString(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(buf1) - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() - err = b.args[1].VecEvalString(b.ctx, input, buf1) + err = b.args[1].VecEvalString(ctx, input, buf1) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -1048,7 +1048,7 @@ func (b *builtinIfNullTimeSig) fallbackEvalTime(ctx sessionctx.Context, input *c func (b *builtinIfNullTimeSig) vecEvalTime(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - if err := b.args[0].VecEvalTime(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, result); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -1056,9 +1056,9 @@ func (b *builtinIfNullTimeSig) vecEvalTime(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(buf1) - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() - err = b.args[1].VecEvalTime(b.ctx, input, buf1) + err = b.args[1].VecEvalTime(ctx, input, buf1) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -1103,7 +1103,7 @@ func (b *builtinIfNullDurationSig) fallbackEvalDuration(ctx sessionctx.Context, func (b *builtinIfNullDurationSig) vecEvalDuration(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - if err := b.args[0].VecEvalDuration(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalDuration(ctx, input, result); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -1111,9 +1111,9 @@ func (b *builtinIfNullDurationSig) vecEvalDuration(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(buf1) - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() - err = b.args[1].VecEvalDuration(b.ctx, input, buf1) + err = b.args[1].VecEvalDuration(ctx, input, buf1) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -1160,7 +1160,7 @@ func (b *builtinIfNullJSONSig) vecEvalJSON(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalJSON(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalJSON(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -1168,9 +1168,9 @@ func (b *builtinIfNullJSONSig) vecEvalJSON(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(buf1) - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() - err = b.args[1].VecEvalJSON(b.ctx, input, buf1) + err = b.args[1].VecEvalJSON(ctx, input, buf1) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -1223,12 +1223,12 @@ func (b *builtinIfIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalInt(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf0); err != nil { return err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() - err = b.args[1].VecEvalInt(b.ctx, input, result) + err = b.args[1].VecEvalInt(ctx, input, result) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -1242,7 +1242,7 @@ func (b *builtinIfIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, return err } defer b.bufAllocator.put(buf2) - err = b.args[2].VecEvalInt(b.ctx, input, buf2) + err = b.args[2].VecEvalInt(ctx, input, buf2) afterWarns = sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -1302,12 +1302,12 @@ func (b *builtinIfRealSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chun return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalInt(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf0); err != nil { return err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() - err = b.args[1].VecEvalReal(b.ctx, input, result) + err = b.args[1].VecEvalReal(ctx, input, result) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -1321,7 +1321,7 @@ func (b *builtinIfRealSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chun return err } defer b.bufAllocator.put(buf2) - err = b.args[2].VecEvalReal(b.ctx, input, buf2) + err = b.args[2].VecEvalReal(ctx, input, buf2) afterWarns = sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -1381,12 +1381,12 @@ func (b *builtinIfDecimalSig) vecEvalDecimal(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalInt(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf0); err != nil { return err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() - err = b.args[1].VecEvalDecimal(b.ctx, input, result) + err = b.args[1].VecEvalDecimal(ctx, input, result) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -1400,7 +1400,7 @@ func (b *builtinIfDecimalSig) vecEvalDecimal(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(buf2) - err = b.args[2].VecEvalDecimal(b.ctx, input, buf2) + err = b.args[2].VecEvalDecimal(ctx, input, buf2) afterWarns = sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -1457,17 +1457,17 @@ func (b *builtinIfStringSig) vecEvalString(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalInt(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf0); err != nil { return err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() buf1, err := b.bufAllocator.get() if err != nil { return err } defer b.bufAllocator.put(buf1) - err = b.args[1].VecEvalString(b.ctx, input, buf1) + err = b.args[1].VecEvalString(ctx, input, buf1) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -1481,7 +1481,7 @@ func (b *builtinIfStringSig) vecEvalString(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(buf2) - err = b.args[2].VecEvalString(b.ctx, input, buf2) + err = b.args[2].VecEvalString(ctx, input, buf2) afterWarns = sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -1544,12 +1544,12 @@ func (b *builtinIfTimeSig) vecEvalTime(ctx sessionctx.Context, input *chunk.Chun return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalInt(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf0); err != nil { return err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() - err = b.args[1].VecEvalTime(b.ctx, input, result) + err = b.args[1].VecEvalTime(ctx, input, result) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -1563,7 +1563,7 @@ func (b *builtinIfTimeSig) vecEvalTime(ctx sessionctx.Context, input *chunk.Chun return err } defer b.bufAllocator.put(buf2) - err = b.args[2].VecEvalTime(b.ctx, input, buf2) + err = b.args[2].VecEvalTime(ctx, input, buf2) afterWarns = sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -1623,12 +1623,12 @@ func (b *builtinIfDurationSig) vecEvalDuration(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalInt(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf0); err != nil { return err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() - err = b.args[1].VecEvalDuration(b.ctx, input, result) + err = b.args[1].VecEvalDuration(ctx, input, result) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -1642,7 +1642,7 @@ func (b *builtinIfDurationSig) vecEvalDuration(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(buf2) - err = b.args[2].VecEvalDuration(b.ctx, input, buf2) + err = b.args[2].VecEvalDuration(ctx, input, buf2) afterWarns = sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -1699,17 +1699,17 @@ func (b *builtinIfJSONSig) vecEvalJSON(ctx sessionctx.Context, input *chunk.Chun return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalInt(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf0); err != nil { return err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() buf1, err := b.bufAllocator.get() if err != nil { return err } defer b.bufAllocator.put(buf1) - err = b.args[1].VecEvalJSON(b.ctx, input, buf1) + err = b.args[1].VecEvalJSON(ctx, input, buf1) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -1723,7 +1723,7 @@ func (b *builtinIfJSONSig) vecEvalJSON(ctx sessionctx.Context, input *chunk.Chun return err } defer b.bufAllocator.put(buf2) - err = b.args[2].VecEvalJSON(b.ctx, input, buf2) + err = b.args[2].VecEvalJSON(ctx, input, buf2) afterWarns = sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { diff --git a/pkg/expression/builtin_convert_charset.go b/pkg/expression/builtin_convert_charset.go index a133507e5c672..7ecfd8d0fa5e3 100644 --- a/pkg/expression/builtin_convert_charset.go +++ b/pkg/expression/builtin_convert_charset.go @@ -91,7 +91,7 @@ func (b *builtinInternalToBinarySig) Clone() builtinFunc { } func (b *builtinInternalToBinarySig) evalString(ctx sessionctx.Context, row chunk.Row) (res string, isNull bool, err error) { - val, isNull, err := b.args[0].EvalString(b.ctx, row) + val, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -112,7 +112,7 @@ func (b *builtinInternalToBinarySig) vecEvalString(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } enc := charset.FindEncoding(b.args[0].GetType().GetCharset()) @@ -170,7 +170,7 @@ func (b *builtinInternalFromBinarySig) Clone() builtinFunc { } func (b *builtinInternalFromBinarySig) evalString(ctx sessionctx.Context, row chunk.Row) (res string, isNull bool, err error) { - val, isNull, err := b.args[0].EvalString(b.ctx, row) + val, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return val, isNull, err } @@ -195,7 +195,7 @@ func (b *builtinInternalFromBinarySig) vecEvalString(ctx sessionctx.Context, inp return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } enc := charset.FindEncoding(b.tp.GetCharset()) @@ -228,8 +228,9 @@ func BuildToBinaryFunction(ctx sessionctx.Context, expr Expression) (res Express FuncName: model.NewCIStr(InternalFuncToBinary), RetType: f.getRetTp(), Function: f, + ctx: ctx, } - return FoldConstant(res) + return FoldConstant(ctx, res) } // BuildFromBinaryFunction builds from_binary function. @@ -243,8 +244,9 @@ func BuildFromBinaryFunction(ctx sessionctx.Context, expr Expression, tp *types. FuncName: model.NewCIStr(InternalFuncFromBinary), RetType: tp, Function: f, + ctx: ctx, } - return FoldConstant(res) + return FoldConstant(ctx, res) } type funcProp int8 diff --git a/pkg/expression/builtin_encryption.go b/pkg/expression/builtin_encryption.go index a8295442d7306..ab3e30fb0e6ab 100644 --- a/pkg/expression/builtin_encryption.go +++ b/pkg/expression/builtin_encryption.go @@ -156,17 +156,17 @@ func (b *builtinAesDecryptSig) Clone() builtinFunc { // See https://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html#function_aes-decrypt func (b *builtinAesDecryptSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { // According to doc: If either function argument is NULL, the function returns NULL. - cryptStr, isNull, err := b.args[0].EvalString(b.ctx, row) + cryptStr, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", true, err } - keyStr, isNull, err := b.args[1].EvalString(b.ctx, row) + keyStr, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return "", true, err } if !b.ivRequired && len(b.args) == 3 { // For modes that do not require init_vector, it is ignored and a warning is generated if it is specified. - b.ctx.GetSessionVars().StmtCtx.AppendWarning(errWarnOptionIgnored.GenWithStackByArgs("IV")) + ctx.GetSessionVars().StmtCtx.AppendWarning(errWarnOptionIgnored.GenWithStackByArgs("IV")) } key := encrypt.DeriveKeyMySQL([]byte(keyStr), b.keySize) @@ -199,17 +199,17 @@ func (b *builtinAesDecryptIVSig) Clone() builtinFunc { // See https://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html#function_aes-decrypt func (b *builtinAesDecryptIVSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { // According to doc: If either function argument is NULL, the function returns NULL. - cryptStr, isNull, err := b.args[0].EvalString(b.ctx, row) + cryptStr, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", true, err } - keyStr, isNull, err := b.args[1].EvalString(b.ctx, row) + keyStr, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return "", true, err } - iv, isNull, err := b.args[2].EvalString(b.ctx, row) + iv, isNull, err := b.args[2].EvalString(ctx, row) if isNull || err != nil { return "", true, err } @@ -290,17 +290,17 @@ func (b *builtinAesEncryptSig) Clone() builtinFunc { // See https://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html#function_aes-decrypt func (b *builtinAesEncryptSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { // According to doc: If either function argument is NULL, the function returns NULL. - str, isNull, err := b.args[0].EvalString(b.ctx, row) + str, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", true, err } - keyStr, isNull, err := b.args[1].EvalString(b.ctx, row) + keyStr, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return "", true, err } if !b.ivRequired && len(b.args) == 3 { // For modes that do not require init_vector, it is ignored and a warning is generated if it is specified. - b.ctx.GetSessionVars().StmtCtx.AppendWarning(errWarnOptionIgnored.GenWithStackByArgs("IV")) + ctx.GetSessionVars().StmtCtx.AppendWarning(errWarnOptionIgnored.GenWithStackByArgs("IV")) } key := encrypt.DeriveKeyMySQL([]byte(keyStr), b.keySize) @@ -333,17 +333,17 @@ func (b *builtinAesEncryptIVSig) Clone() builtinFunc { // See https://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html#function_aes-decrypt func (b *builtinAesEncryptIVSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { // According to doc: If either function argument is NULL, the function returns NULL. - str, isNull, err := b.args[0].EvalString(b.ctx, row) + str, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", true, err } - keyStr, isNull, err := b.args[1].EvalString(b.ctx, row) + keyStr, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return "", true, err } - iv, isNull, err := b.args[2].EvalString(b.ctx, row) + iv, isNull, err := b.args[2].EvalString(ctx, row) if isNull || err != nil { return "", true, err } @@ -404,12 +404,12 @@ func (b *builtinDecodeSig) Clone() builtinFunc { // evalString evals DECODE(str, password_str). // See https://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html#function_decode func (b *builtinDecodeSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - dataStr, isNull, err := b.args[0].EvalString(b.ctx, row) + dataStr, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", true, err } - passwordStr, isNull, err := b.args[1].EvalString(b.ctx, row) + passwordStr, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return "", true, err } @@ -467,12 +467,12 @@ func (b *builtinEncodeSig) Clone() builtinFunc { // evalString evals ENCODE(crypt_str, password_str). // See https://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html#function_encode func (b *builtinEncodeSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - decodeStr, isNull, err := b.args[0].EvalString(b.ctx, row) + decodeStr, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", true, err } - passwordStr, isNull, err := b.args[1].EvalString(b.ctx, row) + passwordStr, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return "", true, err } @@ -528,7 +528,7 @@ func (b *builtinPasswordSig) Clone() builtinFunc { // evalString evals a builtinPasswordSig. // See https://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html#function_password func (b *builtinPasswordSig) evalString(ctx sessionctx.Context, row chunk.Row) (val string, isNull bool, err error) { - pass, isNull, err := b.args[0].EvalString(b.ctx, row) + pass, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", isNull, err } @@ -539,7 +539,7 @@ func (b *builtinPasswordSig) evalString(ctx sessionctx.Context, row chunk.Row) ( // We should append a warning here because function "PASSWORD" is deprecated since MySQL 5.7.6. // See https://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html#function_password - b.ctx.GetSessionVars().StmtCtx.AppendWarning(errDeprecatedSyntaxNoReplacement.GenWithStackByArgs("PASSWORD")) + ctx.GetSessionVars().StmtCtx.AppendWarning(errDeprecatedSyntaxNoReplacement.GenWithStackByArgs("PASSWORD")) return auth.EncodePassword(pass), false, nil } @@ -575,7 +575,7 @@ func (b *builtinRandomBytesSig) Clone() builtinFunc { // evalString evals RANDOM_BYTES(len). // See https://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html#function_random-bytes func (b *builtinRandomBytesSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - val, isNull, err := b.args[0].EvalInt(b.ctx, row) + val, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return "", true, err } @@ -626,7 +626,7 @@ func (b *builtinMD5Sig) Clone() builtinFunc { // evalString evals a builtinMD5Sig. // See https://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html#function_md5 func (b *builtinMD5Sig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - arg, isNull, err := b.args[0].EvalString(b.ctx, row) + arg, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", isNull, err } @@ -670,7 +670,7 @@ func (b *builtinSHA1Sig) Clone() builtinFunc { // See https://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html#function_sha1 // The value is returned as a string of 40 hexadecimal digits, or NULL if the argument was NULL. func (b *builtinSHA1Sig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - str, isNull, err := b.args[0].EvalString(b.ctx, row) + str, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", isNull, err } @@ -746,7 +746,7 @@ func (b *builtinSM3Sig) Clone() builtinFunc { // evalString evals Sm3Hash(str). // The value is returned as a string of 70 hexadecimal digits, or NULL if the argument was NULL. func (b *builtinSM3Sig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - str, isNull, err := b.args[0].EvalString(b.ctx, row) + str, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", isNull, err } @@ -770,11 +770,11 @@ const ( // evalString evals SHA2(str, hash_length). // See https://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html#function_sha2 func (b *builtinSHA2Sig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - str, isNull, err := b.args[0].EvalString(b.ctx, row) + str, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", isNull, err } - hashLength, isNull, err := b.args[1].EvalInt(b.ctx, row) + hashLength, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return "", isNull, err } @@ -867,7 +867,7 @@ func (b *builtinCompressSig) Clone() builtinFunc { // evalString evals COMPRESS(str). // See https://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html#function_compress func (b *builtinCompressSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - str, isNull, err := b.args[0].EvalString(b.ctx, row) + str, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", true, err } @@ -933,8 +933,8 @@ func (b *builtinUncompressSig) Clone() builtinFunc { // evalString evals UNCOMPRESS(compressed_string). // See https://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html#function_uncompress func (b *builtinUncompressSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - sc := b.ctx.GetSessionVars().StmtCtx - payload, isNull, err := b.args[0].EvalString(b.ctx, row) + sc := ctx.GetSessionVars().StmtCtx + payload, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", true, err } @@ -990,8 +990,8 @@ func (b *builtinUncompressedLengthSig) Clone() builtinFunc { // evalInt evals UNCOMPRESSED_LENGTH(str). // See https://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html#function_uncompressed-length func (b *builtinUncompressedLengthSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - sc := b.ctx.GetSessionVars().StmtCtx - payload, isNull, err := b.args[0].EvalString(b.ctx, row) + sc := ctx.GetSessionVars().StmtCtx + payload, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return 0, true, err } @@ -1036,8 +1036,8 @@ func (b *builtinValidatePasswordStrengthSig) Clone() builtinFunc { // evalInt evals VALIDATE_PASSWORD_STRENGTH(str). // See https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html#function_validate-password-strength func (b *builtinValidatePasswordStrengthSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - globalVars := b.ctx.GetSessionVars().GlobalVarsAccessor - str, isNull, err := b.args[0].EvalString(b.ctx, row) + globalVars := ctx.GetSessionVars().GlobalVarsAccessor + str, isNull, err := b.args[0].EvalString(ctx, row) if err != nil || isNull { return 0, true, err } else if len([]rune(str)) < 4 { @@ -1048,11 +1048,11 @@ func (b *builtinValidatePasswordStrengthSig) evalInt(ctx sessionctx.Context, row } else if !variable.TiDBOptOn(validation) { return 0, false, nil } - return b.validateStr(str, &globalVars) + return b.validateStr(ctx, str, &globalVars) } -func (b *builtinValidatePasswordStrengthSig) validateStr(str string, globalVars *variable.GlobalVarAccessor) (int64, bool, error) { - if warn, err := pwdValidator.ValidateUserNameInPassword(str, b.ctx.GetSessionVars()); err != nil { +func (b *builtinValidatePasswordStrengthSig) validateStr(ctx sessionctx.Context, str string, globalVars *variable.GlobalVarAccessor) (int64, bool, error) { + if warn, err := pwdValidator.ValidateUserNameInPassword(str, ctx.GetSessionVars()); err != nil { return 0, true, err } else if len(warn) > 0 { return 0, false, nil diff --git a/pkg/expression/builtin_encryption_test.go b/pkg/expression/builtin_encryption_test.go index 0962b2cc85ed3..8270ed86e2e6d 100644 --- a/pkg/expression/builtin_encryption_test.go +++ b/pkg/expression/builtin_encryption_test.go @@ -66,7 +66,7 @@ func TestSQLDecode(t *testing.T) { require.NoError(t, err) f, err := newFunctionForTest(ctx, ast.Decode, primitiveValsToConstants(ctx, []interface{}{tt.origin, tt.password})...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) require.NoError(t, err) if !d.IsNull() { d = toHex(d) @@ -91,7 +91,7 @@ func TestSQLEncode(t *testing.T) { } f, err := newFunctionForTest(ctx, ast.Encode, primitiveValsToConstants(ctx, []interface{}{h, test.password})...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) require.NoError(t, err) if test.origin != nil { enc := charset.FindEncoding(test.chs) @@ -482,7 +482,7 @@ func TestMD5Hash(t *testing.T) { require.NoError(t, err) f, err := newFunctionForTest(ctx, ast.MD5, primitiveValsToConstants(ctx, []interface{}{c.args})...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -710,7 +710,7 @@ func TestPassword(t *testing.T) { require.NoError(t, err) f, err := newFunctionForTest(ctx, ast.PasswordFunc, primitiveValsToConstants(ctx, []interface{}{c.args})...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) continue diff --git a/pkg/expression/builtin_encryption_vec.go b/pkg/expression/builtin_encryption_vec.go index 1dc546ee1dca9..11e25782dfffa 100644 --- a/pkg/expression/builtin_encryption_vec.go +++ b/pkg/expression/builtin_encryption_vec.go @@ -55,7 +55,7 @@ func (b *builtinAesDecryptSig) vecEvalString(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(strBuf) - if err := b.args[0].VecEvalString(b.ctx, input, strBuf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, strBuf); err != nil { return err } @@ -64,7 +64,7 @@ func (b *builtinAesDecryptSig) vecEvalString(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(keyBuf) - if err := b.args[1].VecEvalString(b.ctx, input, keyBuf); err != nil { + if err := b.args[1].VecEvalString(ctx, input, keyBuf); err != nil { return err } @@ -73,7 +73,7 @@ func (b *builtinAesDecryptSig) vecEvalString(ctx sessionctx.Context, input *chun } isWarning := !b.ivRequired && len(b.args) == 3 - isConstKey := b.args[1].ConstItem(b.ctx.GetSessionVars().StmtCtx) + isConstKey := b.args[1].ConstItem(ctx.GetSessionVars().StmtCtx) var key []byte if isConstKey { @@ -81,7 +81,7 @@ func (b *builtinAesDecryptSig) vecEvalString(ctx sessionctx.Context, input *chun } result.ReserveString(n) - stmtCtx := b.ctx.GetSessionVars().StmtCtx + stmtCtx := ctx.GetSessionVars().StmtCtx for i := 0; i < n; i++ { // According to doc: If either function argument is NULL, the function returns NULL. if strBuf.IsNull(i) || keyBuf.IsNull(i) { @@ -123,7 +123,7 @@ func (b *builtinAesEncryptIVSig) vecEvalString(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(strBuf) - if err := b.args[0].VecEvalString(b.ctx, input, strBuf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, strBuf); err != nil { return err } @@ -132,7 +132,7 @@ func (b *builtinAesEncryptIVSig) vecEvalString(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(keyBuf) - if err := b.args[1].VecEvalString(b.ctx, input, keyBuf); err != nil { + if err := b.args[1].VecEvalString(ctx, input, keyBuf); err != nil { return err } @@ -141,7 +141,7 @@ func (b *builtinAesEncryptIVSig) vecEvalString(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(ivBuf) - if err := b.args[2].VecEvalString(b.ctx, input, ivBuf); err != nil { + if err := b.args[2].VecEvalString(ctx, input, ivBuf); err != nil { return err } @@ -159,7 +159,7 @@ func (b *builtinAesEncryptIVSig) vecEvalString(ctx sessionctx.Context, input *ch return errors.Errorf("unsupported block encryption mode - %v", b.modeName) } - isConst := b.args[1].ConstItem(b.ctx.GetSessionVars().StmtCtx) + isConst := b.args[1].ConstItem(ctx.GetSessionVars().StmtCtx) var key []byte if isConst { key = encrypt.DeriveKeyMySQL(keyBuf.GetBytes(0), b.keySize) @@ -216,7 +216,7 @@ func (b *builtinDecodeSig) vecEvalString(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } buf1, err1 := b.bufAllocator.get() @@ -224,7 +224,7 @@ func (b *builtinDecodeSig) vecEvalString(ctx sessionctx.Context, input *chunk.Ch return err1 } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } result.ReserveString(n) @@ -255,7 +255,7 @@ func (b *builtinEncodeSig) vecEvalString(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } buf1, err1 := b.bufAllocator.get() @@ -263,7 +263,7 @@ func (b *builtinEncodeSig) vecEvalString(ctx sessionctx.Context, input *chunk.Ch return err1 } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } result.ReserveString(n) @@ -296,7 +296,7 @@ func (b *builtinAesDecryptIVSig) vecEvalString(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(strBuf) - if err := b.args[0].VecEvalString(b.ctx, input, strBuf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, strBuf); err != nil { return err } @@ -305,7 +305,7 @@ func (b *builtinAesDecryptIVSig) vecEvalString(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(keyBuf) - if err := b.args[1].VecEvalString(b.ctx, input, keyBuf); err != nil { + if err := b.args[1].VecEvalString(ctx, input, keyBuf); err != nil { return err } @@ -314,7 +314,7 @@ func (b *builtinAesDecryptIVSig) vecEvalString(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(ivBuf) - if err := b.args[2].VecEvalString(b.ctx, input, ivBuf); err != nil { + if err := b.args[2].VecEvalString(ctx, input, ivBuf); err != nil { return err } @@ -332,7 +332,7 @@ func (b *builtinAesDecryptIVSig) vecEvalString(ctx sessionctx.Context, input *ch return errors.Errorf("unsupported block encryption mode - %v", b.modeName) } - isConst := b.args[1].ConstItem(b.ctx.GetSessionVars().StmtCtx) + isConst := b.args[1].ConstItem(ctx.GetSessionVars().StmtCtx) var key []byte if isConst { key = encrypt.DeriveKeyMySQL(keyBuf.GetBytes(0), b.keySize) @@ -389,7 +389,7 @@ func (b *builtinRandomBytesSig) vecEvalString(ctx sessionctx.Context, input *chu return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf); err != nil { return err } result.ReserveString(n) @@ -426,7 +426,7 @@ func (b *builtinMD5Sig) vecEvalString(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } result.ReserveString(n) @@ -461,7 +461,7 @@ func (b *builtinSHA2Sig) vecEvalString(ctx sessionctx.Context, input *chunk.Chun return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -469,7 +469,7 @@ func (b *builtinSHA2Sig) vecEvalString(ctx sessionctx.Context, input *chunk.Chun return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalInt(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf1); err != nil { return err } result.ReserveString(n) @@ -537,7 +537,7 @@ func (b *builtinSM3Sig) vecEvalString(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return errors.Trace(err) } result.ReserveString(n) @@ -591,7 +591,7 @@ func (b *builtinCompressSig) vecEvalString(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } @@ -654,7 +654,7 @@ func (b *builtinAesEncryptSig) vecEvalString(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(strBuf) - if err := b.args[0].VecEvalString(b.ctx, input, strBuf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, strBuf); err != nil { return err } @@ -663,7 +663,7 @@ func (b *builtinAesEncryptSig) vecEvalString(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(keyBuf) - if err := b.args[1].VecEvalString(b.ctx, input, keyBuf); err != nil { + if err := b.args[1].VecEvalString(ctx, input, keyBuf); err != nil { return err } @@ -673,13 +673,13 @@ func (b *builtinAesEncryptSig) vecEvalString(ctx sessionctx.Context, input *chun } isWarning := !b.ivRequired && len(b.args) == 3 - isConst := b.args[1].ConstItem(b.ctx.GetSessionVars().StmtCtx) + isConst := b.args[1].ConstItem(ctx.GetSessionVars().StmtCtx) var key []byte if isConst { key = encrypt.DeriveKeyMySQL(keyBuf.GetBytes(0), b.keySize) } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx result.ReserveString(n) for i := 0; i < n; i++ { // According to doc: If either function argument is NULL, the function returns NULL. @@ -719,7 +719,7 @@ func (b *builtinPasswordSig) vecEvalString(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } result.ReserveString(n) @@ -737,7 +737,7 @@ func (b *builtinPasswordSig) vecEvalString(ctx sessionctx.Context, input *chunk. // We should append a warning here because function "PASSWORD" is deprecated since MySQL 5.7.6. // See https://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html#function_password - b.ctx.GetSessionVars().StmtCtx.AppendWarning(errDeprecatedSyntaxNoReplacement.GenWithStackByArgs("PASSWORD")) + ctx.GetSessionVars().StmtCtx.AppendWarning(errDeprecatedSyntaxNoReplacement.GenWithStackByArgs("PASSWORD")) result.AppendString(auth.EncodePasswordBytes(passBytes)) } @@ -755,7 +755,7 @@ func (b *builtinSHA1Sig) vecEvalString(ctx sessionctx.Context, input *chunk.Chun return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } result.ReserveString(n) @@ -789,12 +789,12 @@ func (b *builtinUncompressSig) vecEvalString(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } result.ReserveString(n) - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx for i := 0; i < n; i++ { if buf.IsNull(i) { result.AppendNull() @@ -837,14 +837,14 @@ func (b *builtinUncompressedLengthSig) vectorized() bool { } func (b *builtinUncompressedLengthSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx nr := input.NumRows() payloadBuf, err := b.bufAllocator.get() if err != nil { return err } defer b.bufAllocator.put(payloadBuf) - if err := b.args[0].VecEvalString(b.ctx, input, payloadBuf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, payloadBuf); err != nil { return err } @@ -881,14 +881,14 @@ func (b *builtinValidatePasswordStrengthSig) vecEvalInt(ctx sessionctx.Context, return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } result.ResizeInt64(n, false) result.MergeNulls(buf) i64s := result.Int64s() - globalVars := b.ctx.GetSessionVars().GlobalVarsAccessor + globalVars := ctx.GetSessionVars().GlobalVarsAccessor enableValidation := false validation, err := globalVars.GetGlobalSysVar(variable.ValidatePasswordEnable) if err != nil { @@ -901,7 +901,7 @@ func (b *builtinValidatePasswordStrengthSig) vecEvalInt(ctx sessionctx.Context, } if !enableValidation { i64s[i] = 0 - } else if score, isNull, err := b.validateStr(buf.GetString(i), &globalVars); err != nil { + } else if score, isNull, err := b.validateStr(ctx, buf.GetString(i), &globalVars); err != nil { return err } else if !isNull { i64s[i] = score diff --git a/pkg/expression/builtin_func_param.go b/pkg/expression/builtin_func_param.go index e146a7ccf722c..9e99cc0cf34f7 100644 --- a/pkg/expression/builtin_func_param.go +++ b/pkg/expression/builtin_func_param.go @@ -15,6 +15,7 @@ package expression import ( + "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/util/chunk" ) @@ -69,7 +70,7 @@ func (re *funcParam) getIntVal(id int) int64 { } // bool return value: return true when we get a const null parameter -func buildStringParam(bf *baseBuiltinFunc, idx int, input *chunk.Chunk, notProvided bool) (*funcParam, bool, error) { +func buildStringParam(ctx sessionctx.Context, bf *baseBuiltinFunc, idx int, input *chunk.Chunk, notProvided bool) (*funcParam, bool, error) { var pa funcParam var err error @@ -79,10 +80,10 @@ func buildStringParam(bf *baseBuiltinFunc, idx int, input *chunk.Chunk, notProvi } // Check if this is a const value - if bf.args[idx].ConstItem(bf.ctx.GetSessionVars().StmtCtx) { + if bf.args[idx].ConstItem(ctx.GetSessionVars().StmtCtx) { // Initialize the const var isConstNull bool - pa.defaultStrVal, isConstNull, err = bf.args[idx].EvalString(bf.ctx, chunk.Row{}) + pa.defaultStrVal, isConstNull, err = bf.args[idx].EvalString(ctx, chunk.Row{}) if isConstNull || err != nil { return nil, isConstNull, err } @@ -95,13 +96,13 @@ func buildStringParam(bf *baseBuiltinFunc, idx int, input *chunk.Chunk, notProvi } // Get values from input - err = bf.args[idx].VecEvalString(bf.ctx, input, pa.getCol()) + err = bf.args[idx].VecEvalString(ctx, input, pa.getCol()) return &pa, false, err } // bool return value: return true when we get a const null parameter -func buildIntParam(bf *baseBuiltinFunc, idx int, input *chunk.Chunk, notProvided bool, defaultIntVal int64) (*funcParam, bool, error) { +func buildIntParam(ctx sessionctx.Context, bf *baseBuiltinFunc, idx int, input *chunk.Chunk, notProvided bool, defaultIntVal int64) (*funcParam, bool, error) { var pa funcParam var err error @@ -111,10 +112,10 @@ func buildIntParam(bf *baseBuiltinFunc, idx int, input *chunk.Chunk, notProvided } // Check if this is a const value - if bf.args[idx].ConstItem(bf.ctx.GetSessionVars().StmtCtx) { + if bf.args[idx].ConstItem(ctx.GetSessionVars().StmtCtx) { // Initialize the const var isConstNull bool - pa.defaultIntVal, isConstNull, err = bf.args[idx].EvalInt(bf.ctx, chunk.Row{}) + pa.defaultIntVal, isConstNull, err = bf.args[idx].EvalInt(ctx, chunk.Row{}) if isConstNull || err != nil { return nil, isConstNull, err } @@ -127,7 +128,7 @@ func buildIntParam(bf *baseBuiltinFunc, idx int, input *chunk.Chunk, notProvided } // Get values from input - err = bf.args[idx].VecEvalInt(bf.ctx, input, pa.getCol()) + err = bf.args[idx].VecEvalInt(ctx, input, pa.getCol()) return &pa, false, err } diff --git a/pkg/expression/builtin_grouping.go b/pkg/expression/builtin_grouping.go index 98dc197855162..5cd646d58c165 100644 --- a/pkg/expression/builtin_grouping.go +++ b/pkg/expression/builtin_grouping.go @@ -232,7 +232,7 @@ func (b *BuiltinGroupingImplSig) evalInt(ctx sessionctx.Context, row chunk.Row) return 0, false, errors.Errorf("Meta data is not initialized") } // grouping function should be rewritten from raw column ref to built gid column and groupingMarks meta. - groupingID, isNull, err := b.args[0].EvalInt(b.ctx, row) + groupingID, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -270,7 +270,7 @@ func (b *BuiltinGroupingImplSig) vecEvalInt(ctx sessionctx.Context, input *chunk return err } defer b.bufAllocator.put(bufVal) - if err = b.args[0].VecEvalInt(b.ctx, input, bufVal); err != nil { + if err = b.args[0].VecEvalInt(ctx, input, bufVal); err != nil { return err } diff --git a/pkg/expression/builtin_ilike.go b/pkg/expression/builtin_ilike.go index c1582551004e7..edb88fde01543 100644 --- a/pkg/expression/builtin_ilike.go +++ b/pkg/expression/builtin_ilike.go @@ -71,17 +71,17 @@ func (b *builtinIlikeSig) Clone() builtinFunc { // evalInt evals a builtinIlikeSig. func (b *builtinIlikeSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - valStr, isNull, err := b.args[0].EvalString(b.ctx, row) + valStr, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } - patternStr, isNull, err := b.args[1].EvalString(b.ctx, row) + patternStr, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } - escape, isNull, err := b.args[2].EvalInt(b.ctx, row) + escape, isNull, err := b.args[2].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -102,7 +102,7 @@ func (b *builtinIlikeSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, memorization := func() { if b.pattern == nil { b.pattern = collate.ConvertAndGetBinCollation(b.collation).Pattern() - if b.args[1].ConstItem(b.ctx.GetSessionVars().StmtCtx) && b.args[2].ConstItem(b.ctx.GetSessionVars().StmtCtx) { + if b.args[1].ConstItem(ctx.GetSessionVars().StmtCtx) && b.args[2].ConstItem(ctx.GetSessionVars().StmtCtx) { b.pattern.Compile(patternStr, byte(escape)) b.isMemorizedPattern = true } diff --git a/pkg/expression/builtin_ilike_vec.go b/pkg/expression/builtin_ilike_vec.go index 4e09b967336ac..e17db24cea1b0 100644 --- a/pkg/expression/builtin_ilike_vec.go +++ b/pkg/expression/builtin_ilike_vec.go @@ -70,15 +70,15 @@ func (b *builtinIlikeSig) tryToMemorize(param *funcParam, escape int64) { b.once.Do(memorization) } -func (b *builtinIlikeSig) getEscape(input *chunk.Chunk, result *chunk.Column) (int64, bool, error) { +func (b *builtinIlikeSig) getEscape(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) (int64, bool, error) { rowNum := input.NumRows() escape := int64('\\') - if !b.args[2].ConstItem(b.ctx.GetSessionVars().StmtCtx) { + if !b.args[2].ConstItem(ctx.GetSessionVars().StmtCtx) { return escape, true, errors.Errorf("escape should be const") } - escape, isConstNull, err := b.args[2].EvalInt(b.ctx, chunk.Row{}) + escape, isConstNull, err := b.args[2].EvalInt(ctx, chunk.Row{}) if isConstNull { fillNullStringIntoResult(result, rowNum) return escape, true, nil @@ -178,7 +178,7 @@ func (b *builtinIlikeSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, defer releaseBuffers(&b.baseBuiltinFunc, params) for i := 0; i < 2; i++ { - param, isConstNull, err := buildStringParam(&b.baseBuiltinFunc, i, input, false) + param, isConstNull, err := buildStringParam(ctx, &b.baseBuiltinFunc, i, input, false) if err != nil { return ErrRegexp.GenWithStackByArgs(err) } @@ -189,7 +189,7 @@ func (b *builtinIlikeSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, params = append(params, param) } - escape, ret, err := b.getEscape(input, result) + escape, ret, err := b.getEscape(ctx, input, result) if err != nil || ret { return err } diff --git a/pkg/expression/builtin_info.go b/pkg/expression/builtin_info.go index e6c3e42ea11b1..525a9e2024553 100644 --- a/pkg/expression/builtin_info.go +++ b/pkg/expression/builtin_info.go @@ -118,7 +118,7 @@ func (b *builtinDatabaseSig) Clone() builtinFunc { // evalString evals a builtinDatabaseSig. // See https://dev.mysql.com/doc/refman/5.7/en/information-functions.html func (b *builtinDatabaseSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - currentDB := b.ctx.GetSessionVars().CurrentDB + currentDB := ctx.GetSessionVars().CurrentDB return currentDB, currentDB == "", nil } @@ -153,7 +153,7 @@ func (b *builtinFoundRowsSig) Clone() builtinFunc { // See https://dev.mysql.com/doc/refman/5.7/en/information-functions.html#function_found-rows // TODO: SQL_CALC_FOUND_ROWS and LIMIT not support for now, We will finish in another PR. func (b *builtinFoundRowsSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - data := b.ctx.GetSessionVars() + data := ctx.GetSessionVars() if data == nil { return 0, true, errors.Errorf("Missing session variable when eval builtin") } @@ -190,7 +190,7 @@ func (b *builtinCurrentUserSig) Clone() builtinFunc { // evalString evals a builtinCurrentUserSig. // See https://dev.mysql.com/doc/refman/5.7/en/information-functions.html#function_current-user func (b *builtinCurrentUserSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - data := b.ctx.GetSessionVars() + data := ctx.GetSessionVars() if data == nil || data.User == nil { return "", true, errors.Errorf("Missing session variable when eval builtin") } @@ -227,7 +227,7 @@ func (b *builtinCurrentRoleSig) Clone() builtinFunc { // evalString evals a builtinCurrentUserSig. // See https://dev.mysql.com/doc/refman/8.0/en/information-functions.html#function_current-role func (b *builtinCurrentRoleSig) evalString(ctx sessionctx.Context, row chunk.Row) (res string, isNull bool, err error) { - data := b.ctx.GetSessionVars() + data := ctx.GetSessionVars() if data == nil || data.ActiveRoles == nil { return "", true, errors.Errorf("Missing session variable when eval builtin") } @@ -276,7 +276,7 @@ func (b *builtinCurrentResourceGroupSig) Clone() builtinFunc { } func (b *builtinCurrentResourceGroupSig) evalString(ctx sessionctx.Context, row chunk.Row) (val string, isNull bool, err error) { - data := b.ctx.GetSessionVars() + data := ctx.GetSessionVars() if data == nil { return "", true, errors.Errorf("Missing session variable when eval builtin") } @@ -313,7 +313,7 @@ func (b *builtinUserSig) Clone() builtinFunc { // evalString evals a builtinUserSig. // See https://dev.mysql.com/doc/refman/5.7/en/information-functions.html#function_user func (b *builtinUserSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - data := b.ctx.GetSessionVars() + data := ctx.GetSessionVars() if data == nil || data.User == nil { return "", true, errors.Errorf("Missing session variable when eval builtin") } @@ -348,7 +348,7 @@ func (b *builtinConnectionIDSig) Clone() builtinFunc { } func (b *builtinConnectionIDSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - data := b.ctx.GetSessionVars() + data := ctx.GetSessionVars() if data == nil { return 0, true, errors.Errorf("Missing session variable `builtinConnectionIDSig.evalInt`") } @@ -397,7 +397,7 @@ func (b *builtinLastInsertIDSig) Clone() builtinFunc { // evalInt evals LAST_INSERT_ID(). // See https://dev.mysql.com/doc/refman/5.7/en/information-functions.html#function_last-insert-id. func (b *builtinLastInsertIDSig) evalInt(ctx sessionctx.Context, row chunk.Row) (res int64, isNull bool, err error) { - res = int64(b.ctx.GetSessionVars().StmtCtx.PrevLastInsertID) + res = int64(ctx.GetSessionVars().StmtCtx.PrevLastInsertID) return res, false, nil } @@ -414,12 +414,12 @@ func (b *builtinLastInsertIDWithIDSig) Clone() builtinFunc { // evalInt evals LAST_INSERT_ID(expr). // See https://dev.mysql.com/doc/refman/5.7/en/information-functions.html#function_last-insert-id. func (b *builtinLastInsertIDWithIDSig) evalInt(ctx sessionctx.Context, row chunk.Row) (res int64, isNull bool, err error) { - res, isNull, err = b.args[0].EvalInt(b.ctx, row) + res, isNull, err = b.args[0].EvalInt(ctx, row) if isNull || err != nil { return res, isNull, err } - b.ctx.GetSessionVars().SetLastInsertID(uint64(res)) + ctx.GetSessionVars().SetLastInsertID(uint64(res)) return res, false, nil } @@ -517,7 +517,7 @@ func (b *builtinTiDBIsDDLOwnerSig) Clone() builtinFunc { // evalInt evals a builtinTiDBIsDDLOwnerSig. func (b *builtinTiDBIsDDLOwnerSig) evalInt(ctx sessionctx.Context, row chunk.Row) (res int64, isNull bool, err error) { - if b.ctx.IsDDLOwner() { + if ctx.IsDDLOwner() { res = 1 } @@ -566,7 +566,7 @@ func (b *builtinBenchmarkSig) Clone() builtinFunc { // evalInt evals a builtinBenchmarkSig. It will execute expression repeatedly count times. // See https://dev.mysql.com/doc/refman/5.7/en/information-functions.html#function_benchmark -func (b *builtinBenchmarkSig) evalInt(_ sessionctx.Context, row chunk.Row) (int64, bool, error) { +func (b *builtinBenchmarkSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { // Get loop count. var loopCount int64 var isNull bool @@ -574,7 +574,7 @@ func (b *builtinBenchmarkSig) evalInt(_ sessionctx.Context, row chunk.Row) (int6 if b.constLoopCount > 0 { loopCount = b.constLoopCount } else { - loopCount, isNull, err = b.args[0].EvalInt(b.ctx, row) + loopCount, isNull, err = b.args[0].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -590,7 +590,7 @@ func (b *builtinBenchmarkSig) evalInt(_ sessionctx.Context, row chunk.Row) (int6 // BENCHMARK() will pass-through the eval error, // behavior observed on MySQL 5.7.24. var i int64 - arg, ctx := b.args[1], b.ctx + arg := b.args[1] switch evalType := arg.GetType().EvalType(); evalType { case types.ETInt: for ; i < loopCount; i++ { @@ -786,7 +786,7 @@ func (b *builtinRowCountSig) Clone() builtinFunc { // evalInt evals ROW_COUNT(). // See https://dev.mysql.com/doc/refman/5.7/en/information-functions.html#function_row-count. func (b *builtinRowCountSig) evalInt(ctx sessionctx.Context, row chunk.Row) (res int64, isNull bool, err error) { - res = b.ctx.GetSessionVars().StmtCtx.PrevAffectedRows + res = ctx.GetSessionVars().StmtCtx.PrevAffectedRows return res, false, nil } @@ -818,15 +818,15 @@ func (b *builtinTiDBDecodeKeySig) Clone() builtinFunc { // evalInt evals a builtinTiDBDecodeKeySig. func (b *builtinTiDBDecodeKeySig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - s, isNull, err := b.args[0].EvalString(b.ctx, row) + s, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", isNull, err } decode := func(ctx sessionctx.Context, s string) string { return s } - if fn := b.ctx.Value(TiDBDecodeKeyFunctionKey); fn != nil { + if fn := ctx.Value(TiDBDecodeKeyFunctionKey); fn != nil { decode = fn.(func(ctx sessionctx.Context, s string) string) } - return decode(b.ctx, s), false, nil + return decode(ctx, s), false, nil } // TiDBDecodeKeyFunctionKeyType is used to identify the decoder function in context. @@ -880,7 +880,7 @@ func (b *builtinTiDBDecodeSQLDigestsSig) Clone() builtinFunc { func (b *builtinTiDBDecodeSQLDigestsSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { args := b.getArgs() - digestsStr, isNull, err := args[0].EvalString(b.ctx, row) + digestsStr, isNull, err := args[0].EvalString(ctx, row) if err != nil { return "", true, err } @@ -890,7 +890,7 @@ func (b *builtinTiDBDecodeSQLDigestsSig) evalString(ctx sessionctx.Context, row stmtTruncateLength := int64(0) if len(args) > 1 { - stmtTruncateLength, isNull, err = args[1].EvalInt(b.ctx, row) + stmtTruncateLength, isNull, err = args[1].EvalInt(ctx, row) if err != nil { return "", true, err } @@ -906,7 +906,7 @@ func (b *builtinTiDBDecodeSQLDigestsSig) evalString(ctx sessionctx.Context, row if len(digestsStr) > errMsgMaxLength { digestsStr = digestsStr[:errMsgMaxLength] + "..." } - b.ctx.GetSessionVars().StmtCtx.AppendWarning(errIncorrectArgs.GenWithStack("The argument can't be unmarshalled as JSON array: '%s'", digestsStr)) + ctx.GetSessionVars().StmtCtx.AppendWarning(errIncorrectArgs.GenWithStack("The argument can't be unmarshalled as JSON array: '%s'", digestsStr)) return "", true, nil } @@ -923,19 +923,19 @@ func (b *builtinTiDBDecodeSQLDigestsSig) evalString(ctx sessionctx.Context, row // Querying may take some time and it takes a context.Context as argument, which is not available here. // We simply create a context with a timeout here. - timeout := time.Duration(b.ctx.GetSessionVars().MaxExecutionTime) * time.Millisecond + timeout := time.Duration(ctx.GetSessionVars().MaxExecutionTime) * time.Millisecond if timeout == 0 || timeout > 20*time.Second { timeout = 20 * time.Second } goCtx, cancel := context.WithTimeout(context.Background(), timeout) defer cancel() - err = retriever.RetrieveGlobal(goCtx, b.ctx) + err = retriever.RetrieveGlobal(goCtx, ctx) if err != nil { if errors.Cause(err) == context.DeadlineExceeded || errors.Cause(err) == context.Canceled { return "", true, errUnknown.GenWithStack("Retrieving cancelled internally with error: %v", err) } - b.ctx.GetSessionVars().StmtCtx.AppendWarning(errUnknown.GenWithStack("Retrieving statements information failed with error: %v", err)) + ctx.GetSessionVars().StmtCtx.AppendWarning(errUnknown.GenWithStack("Retrieving statements information failed with error: %v", err)) return "", true, nil } @@ -958,7 +958,7 @@ func (b *builtinTiDBDecodeSQLDigestsSig) evalString(ctx sessionctx.Context, row resultStr, err := json.Marshal(result) if err != nil { - b.ctx.GetSessionVars().StmtCtx.AppendWarning(errUnknown.GenWithStack("Marshalling result as JSON failed with error: %v", err)) + ctx.GetSessionVars().StmtCtx.AppendWarning(errUnknown.GenWithStack("Marshalling result as JSON failed with error: %v", err)) return "", true, nil } @@ -994,7 +994,7 @@ func (b *builtinTiDBEncodeSQLDigestSig) Clone() builtinFunc { } func (b *builtinTiDBEncodeSQLDigestSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - orgSQLStr, isNull, err := b.getArgs()[0].EvalString(b.ctx, row) + orgSQLStr, isNull, err := b.getArgs()[0].EvalString(ctx, row) if err != nil { return "", true, err } @@ -1035,7 +1035,7 @@ func (b *builtinTiDBDecodePlanSig) Clone() builtinFunc { } func (b *builtinTiDBDecodePlanSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - planString, isNull, err := b.args[0].EvalString(b.ctx, row) + planString, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", isNull, err } @@ -1057,13 +1057,13 @@ func (b *builtinTiDBDecodeBinaryPlanSig) Clone() builtinFunc { } func (b *builtinTiDBDecodeBinaryPlanSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - planString, isNull, err := b.args[0].EvalString(b.ctx, row) + planString, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", isNull, err } planTree, err := plancodec.DecodeBinaryPlan(planString) if err != nil { - b.ctx.GetSessionVars().StmtCtx.AppendWarning(err) + ctx.GetSessionVars().StmtCtx.AppendWarning(err) return "", false, nil } return planTree, false, nil @@ -1097,31 +1097,31 @@ func (b *builtinNextValSig) Clone() builtinFunc { } func (b *builtinNextValSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - sequenceName, isNull, err := b.args[0].EvalString(b.ctx, row) + sequenceName, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } db, seq := getSchemaAndSequence(sequenceName) if len(db) == 0 { - db = b.ctx.GetSessionVars().CurrentDB + db = ctx.GetSessionVars().CurrentDB } // Check the tableName valid. - sequence, err := util.GetSequenceByName(b.ctx.GetInfoSchema(), model.NewCIStr(db), model.NewCIStr(seq)) + sequence, err := util.GetSequenceByName(ctx.GetInfoSchema(), model.NewCIStr(db), model.NewCIStr(seq)) if err != nil { return 0, false, err } // Do the privilege check. - checker := privilege.GetPrivilegeManager(b.ctx) - user := b.ctx.GetSessionVars().User - if checker != nil && !checker.RequestVerification(b.ctx.GetSessionVars().ActiveRoles, db, seq, "", mysql.InsertPriv) { + checker := privilege.GetPrivilegeManager(ctx) + user := ctx.GetSessionVars().User + if checker != nil && !checker.RequestVerification(ctx.GetSessionVars().ActiveRoles, db, seq, "", mysql.InsertPriv) { return 0, false, errSequenceAccessDenied.GenWithStackByArgs("INSERT", user.AuthUsername, user.AuthHostname, seq) } - nextVal, err := sequence.GetSequenceNextVal(b.ctx, db, seq) + nextVal, err := sequence.GetSequenceNextVal(ctx, db, seq) if err != nil { return 0, false, err } // update the sequenceState. - b.ctx.GetSessionVars().SequenceState.UpdateState(sequence.GetSequenceID(), nextVal) + ctx.GetSessionVars().SequenceState.UpdateState(sequence.GetSequenceID(), nextVal) return nextVal, false, nil } @@ -1153,26 +1153,26 @@ func (b *builtinLastValSig) Clone() builtinFunc { } func (b *builtinLastValSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - sequenceName, isNull, err := b.args[0].EvalString(b.ctx, row) + sequenceName, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } db, seq := getSchemaAndSequence(sequenceName) if len(db) == 0 { - db = b.ctx.GetSessionVars().CurrentDB + db = ctx.GetSessionVars().CurrentDB } // Check the tableName valid. - sequence, err := util.GetSequenceByName(b.ctx.GetInfoSchema(), model.NewCIStr(db), model.NewCIStr(seq)) + sequence, err := util.GetSequenceByName(ctx.GetInfoSchema(), model.NewCIStr(db), model.NewCIStr(seq)) if err != nil { return 0, false, err } // Do the privilege check. - checker := privilege.GetPrivilegeManager(b.ctx) - user := b.ctx.GetSessionVars().User - if checker != nil && !checker.RequestVerification(b.ctx.GetSessionVars().ActiveRoles, db, seq, "", mysql.SelectPriv) { + checker := privilege.GetPrivilegeManager(ctx) + user := ctx.GetSessionVars().User + if checker != nil && !checker.RequestVerification(ctx.GetSessionVars().ActiveRoles, db, seq, "", mysql.SelectPriv) { return 0, false, errSequenceAccessDenied.GenWithStackByArgs("SELECT", user.AuthUsername, user.AuthHostname, seq) } - return b.ctx.GetSessionVars().SequenceState.GetLastValue(sequence.GetSequenceID()) + return ctx.GetSessionVars().SequenceState.GetLastValue(sequence.GetSequenceID()) } type setValFunctionClass struct { @@ -1203,30 +1203,30 @@ func (b *builtinSetValSig) Clone() builtinFunc { } func (b *builtinSetValSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - sequenceName, isNull, err := b.args[0].EvalString(b.ctx, row) + sequenceName, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } db, seq := getSchemaAndSequence(sequenceName) if len(db) == 0 { - db = b.ctx.GetSessionVars().CurrentDB + db = ctx.GetSessionVars().CurrentDB } // Check the tableName valid. - sequence, err := util.GetSequenceByName(b.ctx.GetInfoSchema(), model.NewCIStr(db), model.NewCIStr(seq)) + sequence, err := util.GetSequenceByName(ctx.GetInfoSchema(), model.NewCIStr(db), model.NewCIStr(seq)) if err != nil { return 0, false, err } // Do the privilege check. - checker := privilege.GetPrivilegeManager(b.ctx) - user := b.ctx.GetSessionVars().User - if checker != nil && !checker.RequestVerification(b.ctx.GetSessionVars().ActiveRoles, db, seq, "", mysql.InsertPriv) { + checker := privilege.GetPrivilegeManager(ctx) + user := ctx.GetSessionVars().User + if checker != nil && !checker.RequestVerification(ctx.GetSessionVars().ActiveRoles, db, seq, "", mysql.InsertPriv) { return 0, false, errSequenceAccessDenied.GenWithStackByArgs("INSERT", user.AuthUsername, user.AuthHostname, seq) } - setValue, isNull, err := b.args[1].EvalInt(b.ctx, row) + setValue, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } - return sequence.SetSequenceVal(b.ctx, setValue, db, seq) + return sequence.SetSequenceVal(ctx, setValue, db, seq) } func getSchemaAndSequence(sequenceName string) (string, string) { @@ -1269,7 +1269,7 @@ func (b *builtinFormatBytesSig) Clone() builtinFunc { // formatBytes evals a builtinFormatBytesSig. // See https://dev.mysql.com/doc/refman/8.0/en/performance-schema-functions.html#function_format-bytes func (b *builtinFormatBytesSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - val, isNull, err := b.args[0].EvalReal(b.ctx, row) + val, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return "", isNull, err } @@ -1308,7 +1308,7 @@ func (b *builtinFormatNanoTimeSig) Clone() builtinFunc { // formatNanoTime evals a builtinFormatNanoTimeSig, as time unit in TiDB is always nanosecond, not picosecond. // See https://dev.mysql.com/doc/refman/8.0/en/performance-schema-functions.html#function_format-pico-time func (b *builtinFormatNanoTimeSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - val, isNull, err := b.args[0].EvalReal(b.ctx, row) + val, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return "", isNull, err } diff --git a/pkg/expression/builtin_info_test.go b/pkg/expression/builtin_info_test.go index 9988eefe54b08..104c887bcaaa1 100644 --- a/pkg/expression/builtin_info_test.go +++ b/pkg/expression/builtin_info_test.go @@ -187,7 +187,7 @@ func TestBenchMark(t *testing.T) { })...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) require.NoError(t, err) if c.IsNil { require.True(t, d.IsNull()) @@ -250,7 +250,7 @@ func TestTiDBVersion(t *testing.T) { ctx := createContext(t) f, err := newFunctionForTest(ctx, ast.TiDBVersion, primitiveValsToConstants(ctx, []interface{}{})...) require.NoError(t, err) - v, err := f.Eval(chunk.Row{}) + v, err := f.Eval(ctx, chunk.Row{}) require.NoError(t, err) require.Equal(t, printer.GetTiDBInfo(), v.GetString()) } @@ -294,7 +294,7 @@ func TestLastInsertID(t *testing.T) { require.Equal(t, charset.CollationBin, tp.GetCollate()) require.Equal(t, mysql.BinaryFlag, tp.GetFlag()&mysql.BinaryFlag) require.Equal(t, mysql.MaxIntWidth, tp.GetFlen()) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { diff --git a/pkg/expression/builtin_info_vec.go b/pkg/expression/builtin_info_vec.go index d39af59e8751e..dc7dfd096506d 100644 --- a/pkg/expression/builtin_info_vec.go +++ b/pkg/expression/builtin_info_vec.go @@ -35,7 +35,7 @@ func (b *builtinDatabaseSig) vectorized() bool { func (b *builtinDatabaseSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - currentDB := b.ctx.GetSessionVars().CurrentDB + currentDB := ctx.GetSessionVars().CurrentDB result.ReserveString(n) if currentDB == "" { for i := 0; i < n; i++ { @@ -55,7 +55,7 @@ func (b *builtinConnectionIDSig) vectorized() bool { func (b *builtinConnectionIDSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - data := b.ctx.GetSessionVars() + data := ctx.GetSessionVars() if data == nil { return errors.Errorf("Missing session variable in `builtinConnectionIDSig.vecEvalInt`") } @@ -92,7 +92,7 @@ func (b *builtinRowCountSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chu n := input.NumRows() result.ResizeInt64(n, false) i64s := result.Int64s() - res := b.ctx.GetSessionVars().StmtCtx.PrevAffectedRows + res := ctx.GetSessionVars().StmtCtx.PrevAffectedRows for i := 0; i < n; i++ { i64s[i] = res } @@ -108,7 +108,7 @@ func (b *builtinCurrentUserSig) vectorized() bool { func (b *builtinCurrentUserSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - data := b.ctx.GetSessionVars() + data := ctx.GetSessionVars() result.ReserveString(n) if data == nil || data.User == nil { return errors.Errorf("Missing session variable when eval builtin") @@ -124,7 +124,7 @@ func (b *builtinCurrentResourceGroupSig) vectorized() bool { } func (b *builtinCurrentResourceGroupSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - data := b.ctx.GetSessionVars() + data := ctx.GetSessionVars() if data == nil { return errors.Errorf("Missing session variable when eval builtin") } @@ -145,7 +145,7 @@ func (b *builtinCurrentRoleSig) vectorized() bool { func (b *builtinCurrentRoleSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - data := b.ctx.GetSessionVars() + data := ctx.GetSessionVars() if data == nil || data.ActiveRoles == nil { return errors.Errorf("Missing session variable when eval builtin") } @@ -178,7 +178,7 @@ func (b *builtinUserSig) vectorized() bool { // See https://dev.mysql.com/doc/refman/5.7/en/information-functions.html#function_user func (b *builtinUserSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - data := b.ctx.GetSessionVars() + data := ctx.GetSessionVars() if data == nil || data.User == nil { return errors.Errorf("Missing session variable when eval builtin") } @@ -197,7 +197,7 @@ func (b *builtinTiDBIsDDLOwnerSig) vectorized() bool { func (b *builtinTiDBIsDDLOwnerSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() var res int64 - if b.ctx.IsDDLOwner() { + if ctx.IsDDLOwner() { res = 1 } result.ResizeInt64(n, false) @@ -213,7 +213,7 @@ func (b *builtinFoundRowsSig) vectorized() bool { } func (b *builtinFoundRowsSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - data := b.ctx.GetSessionVars() + data := ctx.GetSessionVars() if data == nil { return errors.Errorf("Missing session variable when eval builtin") } @@ -231,10 +231,10 @@ func (b *builtinBenchmarkSig) vectorized() bool { return b.constLoopCount > 0 } -func (b *builtinBenchmarkSig) vecEvalInt(_ sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { +func (b *builtinBenchmarkSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() loopCount := b.constLoopCount - arg, ctx := b.args[1], b.ctx + arg := b.args[1] evalType := arg.GetType().EvalType() buf, err := b.bufAllocator.get() if err != nil { @@ -305,7 +305,7 @@ func (b *builtinLastInsertIDSig) vecEvalInt(ctx sessionctx.Context, input *chunk n := input.NumRows() result.ResizeInt64(n, false) i64s := result.Int64s() - res := int64(b.ctx.GetSessionVars().StmtCtx.PrevLastInsertID) + res := int64(ctx.GetSessionVars().StmtCtx.PrevLastInsertID) for i := 0; i < n; i++ { i64s[i] = res } @@ -317,13 +317,13 @@ func (b *builtinLastInsertIDWithIDSig) vectorized() bool { } func (b *builtinLastInsertIDWithIDSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, result); err != nil { return err } i64s := result.Int64s() for i := len(i64s) - 1; i >= 0; i-- { if !result.IsNull(i) { - b.ctx.GetSessionVars().SetLastInsertID(uint64(i64s[i])) + ctx.GetSessionVars().SetLastInsertID(uint64(i64s[i])) break } } @@ -354,12 +354,12 @@ func (b *builtinTiDBDecodeKeySig) vecEvalString(ctx sessionctx.Context, input *c return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } result.ReserveString(n) decode := func(ctx sessionctx.Context, s string) string { return s } - if fn := b.ctx.Value(TiDBDecodeKeyFunctionKey); fn != nil { + if fn := ctx.Value(TiDBDecodeKeyFunctionKey); fn != nil { decode = fn.(func(ctx sessionctx.Context, s string) string) } for i := 0; i < n; i++ { @@ -367,7 +367,7 @@ func (b *builtinTiDBDecodeKeySig) vecEvalString(ctx sessionctx.Context, input *c result.AppendNull() continue } - result.AppendString(decode(b.ctx, buf.GetString(i))) + result.AppendString(decode(ctx, buf.GetString(i))) } return nil } diff --git a/pkg/expression/builtin_json.go b/pkg/expression/builtin_json.go index 42389971611fb..7fe6ca0cb5fee 100644 --- a/pkg/expression/builtin_json.go +++ b/pkg/expression/builtin_json.go @@ -121,7 +121,7 @@ func (c *jsonTypeFunctionClass) getFunction(ctx sessionctx.Context, args []Expre func (b *builtinJSONTypeSig) evalString(ctx sessionctx.Context, row chunk.Row) (val string, isNull bool, err error) { var j types.BinaryJSON - j, isNull, err = b.args[0].EvalJSON(b.ctx, row) + j, isNull, err = b.args[0].EvalJSON(ctx, row) if isNull || err != nil { return "", isNull, err } @@ -171,14 +171,14 @@ func (c *jsonExtractFunctionClass) getFunction(ctx sessionctx.Context, args []Ex } func (b *builtinJSONExtractSig) evalJSON(ctx sessionctx.Context, row chunk.Row) (res types.BinaryJSON, isNull bool, err error) { - res, isNull, err = b.args[0].EvalJSON(b.ctx, row) + res, isNull, err = b.args[0].EvalJSON(ctx, row) if isNull || err != nil { return } pathExprs := make([]types.JSONPathExpression, 0, len(b.args)-1) for _, arg := range b.args[1:] { var s string - s, isNull, err = arg.EvalString(b.ctx, row) + s, isNull, err = arg.EvalString(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -236,7 +236,7 @@ func (c *jsonUnquoteFunctionClass) getFunction(ctx sessionctx.Context, args []Ex } func (b *builtinJSONUnquoteSig) evalString(ctx sessionctx.Context, row chunk.Row) (str string, isNull bool, err error) { - str, isNull, err = b.args[0].EvalString(b.ctx, row) + str, isNull, err = b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", isNull, err } @@ -289,7 +289,7 @@ func (c *jsonSetFunctionClass) getFunction(ctx sessionctx.Context, args []Expres } func (b *builtinJSONSetSig) evalJSON(ctx sessionctx.Context, row chunk.Row) (res types.BinaryJSON, isNull bool, err error) { - res, isNull, err = jsonModify(b.ctx, b.args, row, types.JSONModifySet) + res, isNull, err = jsonModify(ctx, b.args, row, types.JSONModifySet) return res, isNull, err } @@ -332,7 +332,7 @@ func (c *jsonInsertFunctionClass) getFunction(ctx sessionctx.Context, args []Exp } func (b *builtinJSONInsertSig) evalJSON(ctx sessionctx.Context, row chunk.Row) (res types.BinaryJSON, isNull bool, err error) { - res, isNull, err = jsonModify(b.ctx, b.args, row, types.JSONModifyInsert) + res, isNull, err = jsonModify(ctx, b.args, row, types.JSONModifyInsert) return res, isNull, err } @@ -375,7 +375,7 @@ func (c *jsonReplaceFunctionClass) getFunction(ctx sessionctx.Context, args []Ex } func (b *builtinJSONReplaceSig) evalJSON(ctx sessionctx.Context, row chunk.Row) (res types.BinaryJSON, isNull bool, err error) { - res, isNull, err = jsonModify(b.ctx, b.args, row, types.JSONModifyReplace) + res, isNull, err = jsonModify(ctx, b.args, row, types.JSONModifyReplace) return res, isNull, err } @@ -412,14 +412,14 @@ func (c *jsonRemoveFunctionClass) getFunction(ctx sessionctx.Context, args []Exp } func (b *builtinJSONRemoveSig) evalJSON(ctx sessionctx.Context, row chunk.Row) (res types.BinaryJSON, isNull bool, err error) { - res, isNull, err = b.args[0].EvalJSON(b.ctx, row) + res, isNull, err = b.args[0].EvalJSON(ctx, row) if isNull || err != nil { return res, isNull, err } pathExprs := make([]types.JSONPathExpression, 0, len(b.args)-1) for _, arg := range b.args[1:] { var s string - s, isNull, err = arg.EvalString(b.ctx, row) + s, isNull, err = arg.EvalString(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -484,7 +484,7 @@ func (b *builtinJSONMergeSig) evalJSON(ctx sessionctx.Context, row chunk.Row) (r values := make([]types.BinaryJSON, 0, len(b.args)) for _, arg := range b.args { var value types.BinaryJSON - value, isNull, err = arg.EvalJSON(b.ctx, row) + value, isNull, err = arg.EvalJSON(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -494,7 +494,7 @@ func (b *builtinJSONMergeSig) evalJSON(ctx sessionctx.Context, row chunk.Row) (r // function "JSON_MERGE" is deprecated since MySQL 5.7.22. Synonym for function "JSON_MERGE_PRESERVE". // See https://dev.mysql.com/doc/refman/5.7/en/json-modification-functions.html#function_json-merge if b.pbCode == tipb.ScalarFuncSig_JsonMergeSig { - b.ctx.GetSessionVars().StmtCtx.AppendWarning(errDeprecatedSyntaxNoReplacement.GenWithStackByArgs("JSON_MERGE")) + ctx.GetSessionVars().StmtCtx.AppendWarning(errDeprecatedSyntaxNoReplacement.GenWithStackByArgs("JSON_MERGE")) } return res, false, nil } @@ -549,7 +549,7 @@ func (b *builtinJSONObjectSig) evalJSON(ctx sessionctx.Context, row chunk.Row) ( var value types.BinaryJSON for i, arg := range b.args { if i&1 == 0 { - key, isNull, err = arg.EvalString(b.ctx, row) + key, isNull, err = arg.EvalString(ctx, row) if err != nil { return res, true, err } @@ -558,7 +558,7 @@ func (b *builtinJSONObjectSig) evalJSON(ctx sessionctx.Context, row chunk.Row) ( return res, true, err } } else { - value, isNull, err = arg.EvalJSON(b.ctx, row) + value, isNull, err = arg.EvalJSON(ctx, row) if err != nil { return res, true, err } @@ -612,7 +612,7 @@ func (c *jsonArrayFunctionClass) getFunction(ctx sessionctx.Context, args []Expr func (b *builtinJSONArraySig) evalJSON(ctx sessionctx.Context, row chunk.Row) (res types.BinaryJSON, isNull bool, err error) { jsons := make([]interface{}, 0, len(b.args)) for _, arg := range b.args { - j, isNull, err := arg.EvalJSON(b.ctx, row) + j, isNull, err := arg.EvalJSON(ctx, row) if err != nil { return res, true, err } @@ -670,11 +670,11 @@ func (c *jsonContainsPathFunctionClass) getFunction(ctx sessionctx.Context, args } func (b *builtinJSONContainsPathSig) evalInt(ctx sessionctx.Context, row chunk.Row) (res int64, isNull bool, err error) { - obj, isNull, err := b.args[0].EvalJSON(b.ctx, row) + obj, isNull, err := b.args[0].EvalJSON(ctx, row) if isNull || err != nil { return res, isNull, err } - containType, isNull, err := b.args[1].EvalString(b.ctx, row) + containType, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -685,7 +685,7 @@ func (b *builtinJSONContainsPathSig) evalInt(ctx sessionctx.Context, row chunk.R var pathExpr types.JSONPathExpression contains := int64(1) for i := 2; i < len(b.args); i++ { - path, isNull, err := b.args[i].EvalString(b.ctx, row) + path, isNull, err := b.args[i].EvalString(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -784,11 +784,11 @@ func (c *jsonMemberOfFunctionClass) getFunction(ctx sessionctx.Context, args []E } func (b *builtinJSONMemberOfSig) evalInt(ctx sessionctx.Context, row chunk.Row) (res int64, isNull bool, err error) { - target, isNull, err := b.args[0].EvalJSON(b.ctx, row) + target, isNull, err := b.args[0].EvalJSON(ctx, row) if isNull || err != nil { return res, isNull, err } - obj, isNull, err := b.args[1].EvalJSON(b.ctx, row) + obj, isNull, err := b.args[1].EvalJSON(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -853,17 +853,17 @@ func (c *jsonContainsFunctionClass) getFunction(ctx sessionctx.Context, args []E } func (b *builtinJSONContainsSig) evalInt(ctx sessionctx.Context, row chunk.Row) (res int64, isNull bool, err error) { - obj, isNull, err := b.args[0].EvalJSON(b.ctx, row) + obj, isNull, err := b.args[0].EvalJSON(ctx, row) if isNull || err != nil { return res, isNull, err } - target, isNull, err := b.args[1].EvalJSON(b.ctx, row) + target, isNull, err := b.args[1].EvalJSON(ctx, row) if isNull || err != nil { return res, isNull, err } var pathExpr types.JSONPathExpression if len(b.args) == 3 { - path, isNull, err := b.args[2].EvalString(b.ctx, row) + path, isNull, err := b.args[2].EvalString(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -929,11 +929,11 @@ func (c *jsonOverlapsFunctionClass) getFunction(ctx sessionctx.Context, args []E } func (b *builtinJSONOverlapsSig) evalInt(ctx sessionctx.Context, row chunk.Row) (res int64, isNull bool, err error) { - obj, isNull, err := b.args[0].EvalJSON(b.ctx, row) + obj, isNull, err := b.args[0].EvalJSON(ctx, row) if isNull || err != nil { return res, isNull, err } - target, isNull, err := b.args[1].EvalJSON(b.ctx, row) + target, isNull, err := b.args[1].EvalJSON(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -993,7 +993,7 @@ func (b *builtinJSONValidJSONSig) Clone() builtinFunc { // evalInt evals a builtinJSONValidJSONSig. // See https://dev.mysql.com/doc/refman/5.7/en/json-attribute-functions.html#function_json-valid func (b *builtinJSONValidJSONSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - _, isNull, err = b.args[0].EvalJSON(b.ctx, row) + _, isNull, err = b.args[0].EvalJSON(ctx, row) return 1, isNull, err } @@ -1010,7 +1010,7 @@ func (b *builtinJSONValidStringSig) Clone() builtinFunc { // evalInt evals a builtinJSONValidStringSig. // See https://dev.mysql.com/doc/refman/5.7/en/json-attribute-functions.html#function_json-valid func (b *builtinJSONValidStringSig) evalInt(ctx sessionctx.Context, row chunk.Row) (res int64, isNull bool, err error) { - val, isNull, err := b.args[0].EvalString(b.ctx, row) + val, isNull, err := b.args[0].EvalString(ctx, row) if err != nil || isNull { return 0, isNull, err } @@ -1081,18 +1081,18 @@ func (b *builtinJSONArrayAppendSig) Clone() builtinFunc { } func (b *builtinJSONArrayAppendSig) evalJSON(ctx sessionctx.Context, row chunk.Row) (res types.BinaryJSON, isNull bool, err error) { - res, isNull, err = b.args[0].EvalJSON(b.ctx, row) + res, isNull, err = b.args[0].EvalJSON(ctx, row) if err != nil || isNull { return res, true, err } for i := 1; i < len(b.args)-1; i += 2 { // If JSON path is NULL, MySQL breaks and returns NULL. - s, sNull, err := b.args[i].EvalString(b.ctx, row) + s, sNull, err := b.args[i].EvalString(ctx, row) if sNull || err != nil { return res, true, err } - value, vNull, err := b.args[i+1].EvalJSON(b.ctx, row) + value, vNull, err := b.args[i+1].EvalJSON(ctx, row) if err != nil { return res, true, err } @@ -1178,14 +1178,14 @@ func (b *builtinJSONArrayInsertSig) Clone() builtinFunc { } func (b *builtinJSONArrayInsertSig) evalJSON(ctx sessionctx.Context, row chunk.Row) (res types.BinaryJSON, isNull bool, err error) { - res, isNull, err = b.args[0].EvalJSON(b.ctx, row) + res, isNull, err = b.args[0].EvalJSON(ctx, row) if err != nil || isNull { return res, true, err } for i := 1; i < len(b.args)-1; i += 2 { // If JSON path is NULL, MySQL breaks and returns NULL. - s, isNull, err := b.args[i].EvalString(b.ctx, row) + s, isNull, err := b.args[i].EvalString(ctx, row) if err != nil || isNull { return res, true, err } @@ -1198,7 +1198,7 @@ func (b *builtinJSONArrayInsertSig) evalJSON(ctx sessionctx.Context, row chunk.R return res, true, types.ErrInvalidJSONPathMultipleSelection } - value, isnull, err := b.args[i+1].EvalJSON(b.ctx, row) + value, isnull, err := b.args[i+1].EvalJSON(ctx, row) if err != nil { return res, true, err } @@ -1262,7 +1262,7 @@ func (b *builtinJSONMergePatchSig) evalJSON(ctx sessionctx.Context, row chunk.Ro values := make([]*types.BinaryJSON, 0, len(b.args)) for _, arg := range b.args { var value types.BinaryJSON - value, isNull, err = arg.EvalJSON(b.ctx, row) + value, isNull, err = arg.EvalJSON(ctx, row) if err != nil { return } @@ -1348,7 +1348,7 @@ func (c *jsonPrettyFunctionClass) getFunction(ctx sessionctx.Context, args []Exp } func (b *builtinJSONSPrettySig) evalString(ctx sessionctx.Context, row chunk.Row) (res string, isNull bool, err error) { - obj, isNull, err := b.args[0].EvalJSON(b.ctx, row) + obj, isNull, err := b.args[0].EvalJSON(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -1405,7 +1405,7 @@ func (c *jsonQuoteFunctionClass) getFunction(ctx sessionctx.Context, args []Expr } func (b *builtinJSONQuoteSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - str, isNull, err := b.args[0].EvalString(b.ctx, row) + str, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", isNull, err } @@ -1458,14 +1458,14 @@ func (c *jsonSearchFunctionClass) getFunction(ctx sessionctx.Context, args []Exp func (b *builtinJSONSearchSig) evalJSON(ctx sessionctx.Context, row chunk.Row) (res types.BinaryJSON, isNull bool, err error) { // json_doc var obj types.BinaryJSON - obj, isNull, err = b.args[0].EvalJSON(b.ctx, row) + obj, isNull, err = b.args[0].EvalJSON(ctx, row) if isNull || err != nil { return res, isNull, err } // one_or_all var containType string - containType, isNull, err = b.args[1].EvalString(b.ctx, row) + containType, isNull, err = b.args[1].EvalString(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -1476,14 +1476,14 @@ func (b *builtinJSONSearchSig) evalJSON(ctx sessionctx.Context, row chunk.Row) ( // search_str & escape_char var searchStr string - searchStr, isNull, err = b.args[2].EvalString(b.ctx, row) + searchStr, isNull, err = b.args[2].EvalString(ctx, row) if isNull || err != nil { return res, isNull, err } escape := byte('\\') if len(b.args) >= 4 { var escapeStr string - escapeStr, isNull, err = b.args[3].EvalString(b.ctx, row) + escapeStr, isNull, err = b.args[3].EvalString(ctx, row) if err != nil { return res, isNull, err } @@ -1499,7 +1499,7 @@ func (b *builtinJSONSearchSig) evalJSON(ctx sessionctx.Context, row chunk.Row) ( pathExprs := make([]types.JSONPathExpression, 0, len(b.args)-4) for i := 4; i < len(b.args); i++ { var s string - s, isNull, err = b.args[i].EvalString(b.ctx, row) + s, isNull, err = b.args[i].EvalString(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -1544,7 +1544,7 @@ func (c *jsonStorageFreeFunctionClass) getFunction(ctx sessionctx.Context, args } func (b *builtinJSONStorageFreeSig) evalInt(ctx sessionctx.Context, row chunk.Row) (res int64, isNull bool, err error) { - _, isNull, err = b.args[0].EvalJSON(b.ctx, row) + _, isNull, err = b.args[0].EvalJSON(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -1581,7 +1581,7 @@ func (c *jsonStorageSizeFunctionClass) getFunction(ctx sessionctx.Context, args } func (b *builtinJSONStorageSizeSig) evalInt(ctx sessionctx.Context, row chunk.Row) (res int64, isNull bool, err error) { - obj, isNull, err := b.args[0].EvalJSON(b.ctx, row) + obj, isNull, err := b.args[0].EvalJSON(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -1623,7 +1623,7 @@ func (b *builtinJSONDepthSig) evalInt(ctx sessionctx.Context, row chunk.Row) (re // json format and whether it's NULL. For NULL return NULL, for invalid json, return // an error, otherwise return 0 - obj, isNull, err := b.args[0].EvalJSON(b.ctx, row) + obj, isNull, err := b.args[0].EvalJSON(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -1680,7 +1680,7 @@ func (b *builtinJSONKeysSig) Clone() builtinFunc { } func (b *builtinJSONKeysSig) evalJSON(ctx sessionctx.Context, row chunk.Row) (res types.BinaryJSON, isNull bool, err error) { - res, isNull, err = b.args[0].EvalJSON(b.ctx, row) + res, isNull, err = b.args[0].EvalJSON(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -1701,12 +1701,12 @@ func (b *builtinJSONKeys2ArgsSig) Clone() builtinFunc { } func (b *builtinJSONKeys2ArgsSig) evalJSON(ctx sessionctx.Context, row chunk.Row) (res types.BinaryJSON, isNull bool, err error) { - res, isNull, err = b.args[0].EvalJSON(b.ctx, row) + res, isNull, err = b.args[0].EvalJSON(ctx, row) if isNull || err != nil { return res, isNull, err } - path, isNull, err := b.args[1].EvalString(b.ctx, row) + path, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -1765,7 +1765,7 @@ func (c *jsonLengthFunctionClass) getFunction(ctx sessionctx.Context, args []Exp } func (b *builtinJSONLengthSig) evalInt(ctx sessionctx.Context, row chunk.Row) (res int64, isNull bool, err error) { - obj, isNull, err := b.args[0].EvalJSON(b.ctx, row) + obj, isNull, err := b.args[0].EvalJSON(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -1775,7 +1775,7 @@ func (b *builtinJSONLengthSig) evalInt(ctx sessionctx.Context, row chunk.Row) (r } if len(b.args) == 2 { - path, isNull, err := b.args[1].EvalString(b.ctx, row) + path, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return res, isNull, err } diff --git a/pkg/expression/builtin_json_vec.go b/pkg/expression/builtin_json_vec.go index d587247c51ea5..f7d6627a282d3 100644 --- a/pkg/expression/builtin_json_vec.go +++ b/pkg/expression/builtin_json_vec.go @@ -114,7 +114,7 @@ func (b *builtinJSONStorageFreeSig) vecEvalInt(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalJSON(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalJSON(ctx, input, buf); err != nil { return err } result.ResizeInt64(n, false) @@ -141,7 +141,7 @@ func (b *builtinJSONStorageSizeSig) vecEvalInt(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalJSON(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalJSON(ctx, input, buf); err != nil { return err } result.ResizeInt64(n, false) @@ -169,7 +169,7 @@ func (b *builtinJSONDepthSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalJSON(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalJSON(ctx, input, buf); err != nil { return err } result.ResizeInt64(n, false) @@ -196,7 +196,7 @@ func (b *builtinJSONKeysSig) vecEvalJSON(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalJSON(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalJSON(ctx, input, buf); err != nil { return err } @@ -223,7 +223,7 @@ func (b *builtinJSONInsertSig) vectorized() bool { } func (b *builtinJSONInsertSig) vecEvalJSON(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - err := vecJSONModify(b.ctx, b.args, b.bufAllocator, input, result, types.JSONModifyInsert) + err := vecJSONModify(ctx, b.args, b.bufAllocator, input, result, types.JSONModifyInsert) return err } @@ -232,7 +232,7 @@ func (b *builtinJSONReplaceSig) vectorized() bool { } func (b *builtinJSONReplaceSig) vecEvalJSON(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - err := vecJSONModify(b.ctx, b.args, b.bufAllocator, input, result, types.JSONModifyReplace) + err := vecJSONModify(ctx, b.args, b.bufAllocator, input, result, types.JSONModifyReplace) return err } @@ -252,7 +252,7 @@ func (b *builtinJSONArraySig) vecEvalJSON(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(j) - if err = arg.VecEvalJSON(b.ctx, input, j); err != nil { + if err = arg.VecEvalJSON(ctx, input, j); err != nil { return err } for i := 0; i < nr; i++ { @@ -287,7 +287,7 @@ func (b *builtinJSONMemberOfSig) vecEvalInt(ctx sessionctx.Context, input *chunk } defer b.bufAllocator.put(targetCol) - if err := b.args[0].VecEvalJSON(b.ctx, input, targetCol); err != nil { + if err := b.args[0].VecEvalJSON(ctx, input, targetCol); err != nil { return err } @@ -297,7 +297,7 @@ func (b *builtinJSONMemberOfSig) vecEvalInt(ctx sessionctx.Context, input *chunk } defer b.bufAllocator.put(objCol) - if err := b.args[1].VecEvalJSON(b.ctx, input, objCol); err != nil { + if err := b.args[1].VecEvalJSON(ctx, input, objCol); err != nil { return err } @@ -340,7 +340,7 @@ func (b *builtinJSONContainsSig) vecEvalInt(ctx sessionctx.Context, input *chunk } defer b.bufAllocator.put(objCol) - if err := b.args[0].VecEvalJSON(b.ctx, input, objCol); err != nil { + if err := b.args[0].VecEvalJSON(ctx, input, objCol); err != nil { return err } @@ -350,7 +350,7 @@ func (b *builtinJSONContainsSig) vecEvalInt(ctx sessionctx.Context, input *chunk } defer b.bufAllocator.put(targetCol) - if err := b.args[1].VecEvalJSON(b.ctx, input, targetCol); err != nil { + if err := b.args[1].VecEvalJSON(ctx, input, targetCol); err != nil { return err } @@ -364,7 +364,7 @@ func (b *builtinJSONContainsSig) vecEvalInt(ctx sessionctx.Context, input *chunk } defer b.bufAllocator.put(pathCol) - if err := b.args[2].VecEvalString(b.ctx, input, pathCol); err != nil { + if err := b.args[2].VecEvalString(ctx, input, pathCol); err != nil { return err } @@ -425,7 +425,7 @@ func (b *builtinJSONOverlapsSig) vecEvalInt(ctx sessionctx.Context, input *chunk } defer b.bufAllocator.put(objCol) - if err := b.args[0].VecEvalJSON(b.ctx, input, objCol); err != nil { + if err := b.args[0].VecEvalJSON(ctx, input, objCol); err != nil { return err } @@ -435,7 +435,7 @@ func (b *builtinJSONOverlapsSig) vecEvalInt(ctx sessionctx.Context, input *chunk } defer b.bufAllocator.put(targetCol) - if err := b.args[1].VecEvalJSON(b.ctx, input, targetCol); err != nil { + if err := b.args[1].VecEvalJSON(ctx, input, targetCol); err != nil { return err } @@ -468,7 +468,7 @@ func (b *builtinJSONQuoteSig) vecEvalString(ctx sessionctx.Context, input *chunk return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } @@ -494,7 +494,7 @@ func (b *builtinJSONSearchSig) vecEvalJSON(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(jsonBuf) - if err := b.args[0].VecEvalJSON(b.ctx, input, jsonBuf); err != nil { + if err := b.args[0].VecEvalJSON(ctx, input, jsonBuf); err != nil { return err } typeBuf, err := b.bufAllocator.get() @@ -502,7 +502,7 @@ func (b *builtinJSONSearchSig) vecEvalJSON(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(typeBuf) - if err := b.args[1].VecEvalString(b.ctx, input, typeBuf); err != nil { + if err := b.args[1].VecEvalString(ctx, input, typeBuf); err != nil { return err } searchBuf, err := b.bufAllocator.get() @@ -510,7 +510,7 @@ func (b *builtinJSONSearchSig) vecEvalJSON(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(searchBuf) - if err := b.args[2].VecEvalString(b.ctx, input, searchBuf); err != nil { + if err := b.args[2].VecEvalString(ctx, input, searchBuf); err != nil { return err } @@ -521,7 +521,7 @@ func (b *builtinJSONSearchSig) vecEvalJSON(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(escapeBuf) - if err := b.args[3].VecEvalString(b.ctx, input, escapeBuf); err != nil { + if err := b.args[3].VecEvalString(ctx, input, escapeBuf); err != nil { return err } } @@ -536,7 +536,7 @@ func (b *builtinJSONSearchSig) vecEvalJSON(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(pathBufs[index]) - if err := b.args[i].VecEvalString(b.ctx, input, pathBufs[index]); err != nil { + if err := b.args[i].VecEvalString(ctx, input, pathBufs[index]); err != nil { return err } } @@ -593,7 +593,7 @@ func (b *builtinJSONSetSig) vectorized() bool { } func (b *builtinJSONSetSig) vecEvalJSON(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - err := vecJSONModify(b.ctx, b.args, b.bufAllocator, input, result, types.JSONModifySet) + err := vecJSONModify(ctx, b.args, b.bufAllocator, input, result, types.JSONModifySet) return err } @@ -624,7 +624,7 @@ func (b *builtinJSONObjectSig) vecEvalJSON(ctx sessionctx.Context, input *chunk. b.bufAllocator.put(buf) }(argBuffers[i]) - if err = b.args[i].VecEvalString(b.ctx, input, argBuffers[i]); err != nil { + if err = b.args[i].VecEvalString(ctx, input, argBuffers[i]); err != nil { return err } } else { @@ -635,7 +635,7 @@ func (b *builtinJSONObjectSig) vecEvalJSON(ctx sessionctx.Context, input *chunk. b.bufAllocator.put(buf) }(argBuffers[i]) - if err = b.args[i].VecEvalJSON(b.ctx, input, argBuffers[i]); err != nil { + if err = b.args[i].VecEvalJSON(ctx, input, argBuffers[i]); err != nil { return err } } @@ -686,7 +686,7 @@ func (b *builtinJSONArrayInsertSig) vecEvalJSON(ctx sessionctx.Context, input *c return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalJSON(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalJSON(ctx, input, buf); err != nil { return err } pathBufs := make([]*chunk.Column, (len(b.args)-1)/2) @@ -698,7 +698,7 @@ func (b *builtinJSONArrayInsertSig) vecEvalJSON(ctx sessionctx.Context, input *c return err } defer b.bufAllocator.put(valueBufs[i/2-1]) - if err := b.args[i].VecEvalJSON(b.ctx, input, valueBufs[i/2-1]); err != nil { + if err := b.args[i].VecEvalJSON(ctx, input, valueBufs[i/2-1]); err != nil { return err } } else { @@ -707,7 +707,7 @@ func (b *builtinJSONArrayInsertSig) vecEvalJSON(ctx sessionctx.Context, input *c return err } defer b.bufAllocator.put(pathBufs[(i-1)/2]) - if err := b.args[i].VecEvalString(b.ctx, input, pathBufs[(i-1)/2]); err != nil { + if err := b.args[i].VecEvalString(ctx, input, pathBufs[(i-1)/2]); err != nil { return err } } @@ -765,7 +765,7 @@ func (b *builtinJSONKeys2ArgsSig) vecEvalJSON(ctx sessionctx.Context, input *chu return err } defer b.bufAllocator.put(jsonBuf) - if err := b.args[0].VecEvalJSON(b.ctx, input, jsonBuf); err != nil { + if err := b.args[0].VecEvalJSON(ctx, input, jsonBuf); err != nil { return err } pathBuf, err := b.bufAllocator.get() @@ -773,7 +773,7 @@ func (b *builtinJSONKeys2ArgsSig) vecEvalJSON(ctx sessionctx.Context, input *chu return err } defer b.bufAllocator.put(pathBuf) - if err := b.args[1].VecEvalString(b.ctx, input, pathBuf); err != nil { + if err := b.args[1].VecEvalString(ctx, input, pathBuf); err != nil { return err } @@ -820,7 +820,7 @@ func (b *builtinJSONLengthSig) vecEvalInt(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(jsonBuf) - if err := b.args[0].VecEvalJSON(b.ctx, input, jsonBuf); err != nil { + if err := b.args[0].VecEvalJSON(ctx, input, jsonBuf); err != nil { return err } result.ResizeInt64(nr, false) @@ -832,7 +832,7 @@ func (b *builtinJSONLengthSig) vecEvalInt(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(pathBuf) - if err := b.args[1].VecEvalString(b.ctx, input, pathBuf); err != nil { + if err := b.args[1].VecEvalString(ctx, input, pathBuf); err != nil { return err } @@ -902,7 +902,7 @@ func (b *builtinJSONTypeSig) vecEvalString(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalJSON(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalJSON(ctx, input, buf); err != nil { return err } @@ -930,7 +930,7 @@ func (b *builtinJSONExtractSig) vecEvalJSON(ctx sessionctx.Context, input *chunk return err } defer b.bufAllocator.put(jsonBuf) - if err = b.args[0].VecEvalJSON(b.ctx, input, jsonBuf); err != nil { + if err = b.args[0].VecEvalJSON(ctx, input, jsonBuf); err != nil { return err } @@ -944,7 +944,7 @@ func (b *builtinJSONExtractSig) vecEvalJSON(ctx sessionctx.Context, input *chunk b.bufAllocator.put(buf) }(pathBuffers[k]) - if err := pathArgs[k].VecEvalString(b.ctx, input, pathBuffers[k]); err != nil { + if err := pathArgs[k].VecEvalString(ctx, input, pathBuffers[k]); err != nil { return err } } @@ -995,7 +995,7 @@ func (b *builtinJSONRemoveSig) vecEvalJSON(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(jsonBuf) - if err := b.args[0].VecEvalJSON(b.ctx, input, jsonBuf); err != nil { + if err := b.args[0].VecEvalJSON(ctx, input, jsonBuf); err != nil { return err } @@ -1006,7 +1006,7 @@ func (b *builtinJSONRemoveSig) vecEvalJSON(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(strBufs[i-1]) - if err := b.args[i].VecEvalString(b.ctx, input, strBufs[i-1]); err != nil { + if err := b.args[i].VecEvalString(ctx, input, strBufs[i-1]); err != nil { return err } } @@ -1063,7 +1063,7 @@ func (b *builtinJSONMergeSig) vecEvalJSON(ctx sessionctx.Context, input *chunk.C b.bufAllocator.put(buf) }(argBuffers[i]) - if err := arg.VecEvalJSON(b.ctx, input, argBuffers[i]); err != nil { + if err := arg.VecEvalJSON(ctx, input, argBuffers[i]); err != nil { return err } } @@ -1104,7 +1104,7 @@ func (b *builtinJSONMergeSig) vecEvalJSON(ctx sessionctx.Context, input *chunk.C if result.IsNull(i) { continue } - b.ctx.GetSessionVars().StmtCtx.AppendWarning(errDeprecatedSyntaxNoReplacement.GenWithStackByArgs("JSON_MERGE")) + ctx.GetSessionVars().StmtCtx.AppendWarning(errDeprecatedSyntaxNoReplacement.GenWithStackByArgs("JSON_MERGE")) } } @@ -1122,7 +1122,7 @@ func (b *builtinJSONContainsPathSig) vecEvalInt(ctx sessionctx.Context, input *c return err } defer b.bufAllocator.put(jsonBuf) - if err := b.args[0].VecEvalJSON(b.ctx, input, jsonBuf); err != nil { + if err := b.args[0].VecEvalJSON(ctx, input, jsonBuf); err != nil { return err } typeBuf, err := b.bufAllocator.get() @@ -1130,7 +1130,7 @@ func (b *builtinJSONContainsPathSig) vecEvalInt(ctx sessionctx.Context, input *c return err } defer b.bufAllocator.put(typeBuf) - if err := b.args[1].VecEvalString(b.ctx, input, typeBuf); err != nil { + if err := b.args[1].VecEvalString(ctx, input, typeBuf); err != nil { return err } pathBufs := make([]*chunk.Column, len(b.args)-2) @@ -1147,7 +1147,7 @@ func (b *builtinJSONContainsPathSig) vecEvalInt(ctx sessionctx.Context, input *c return err } pathBufs[i] = pathBuf - if err := b.args[2+i].VecEvalString(b.ctx, input, pathBuf); err != nil { + if err := b.args[2+i].VecEvalString(ctx, input, pathBuf); err != nil { return err } } @@ -1207,7 +1207,7 @@ func (b *builtinJSONArrayAppendSig) vecEvalJSON(ctx sessionctx.Context, input *c return err } defer b.bufAllocator.put(jsonBufs) - if err := b.args[0].VecEvalJSON(b.ctx, input, jsonBufs); err != nil { + if err := b.args[0].VecEvalJSON(ctx, input, jsonBufs); err != nil { return err } @@ -1227,14 +1227,14 @@ func (b *builtinJSONArrayAppendSig) vecEvalJSON(ctx sessionctx.Context, input *c return err } pathBufs = append(pathBufs, pathBuf) - if err := b.args[i].VecEvalString(b.ctx, input, pathBuf); err != nil { + if err := b.args[i].VecEvalString(ctx, input, pathBuf); err != nil { return err } valBuf, err := b.bufAllocator.get() if err != nil { return err } - if err := b.args[i+1].VecEvalJSON(b.ctx, input, valBuf); err != nil { + if err := b.args[i+1].VecEvalJSON(ctx, input, valBuf); err != nil { return err } valBufs = append(valBufs, valBuf) @@ -1289,7 +1289,7 @@ func (b *builtinJSONUnquoteSig) vecEvalString(ctx sessionctx.Context, input *chu return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } @@ -1323,7 +1323,7 @@ func (b *builtinJSONSPrettySig) vecEvalString(ctx sessionctx.Context, input *chu return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalJSON(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalJSON(ctx, input, buf); err != nil { return err } result.ReserveString(n) @@ -1364,7 +1364,7 @@ func (b *builtinJSONMergePatchSig) vecEvalJSON(ctx sessionctx.Context, input *ch b.bufAllocator.put(buf) }(argBuffers[i]) - if err := arg.VecEvalJSON(b.ctx, input, argBuffers[i]); err != nil { + if err := arg.VecEvalJSON(ctx, input, argBuffers[i]); err != nil { return err } } diff --git a/pkg/expression/builtin_like.go b/pkg/expression/builtin_like.go index aecc9c2ba55fb..8a6c13798ba35 100644 --- a/pkg/expression/builtin_like.go +++ b/pkg/expression/builtin_like.go @@ -71,23 +71,23 @@ func (b *builtinLikeSig) Clone() builtinFunc { // evalInt evals a builtinLikeSig. // See https://dev.mysql.com/doc/refman/5.7/en/string-comparison-functions.html#operator_like func (b *builtinLikeSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - valStr, isNull, err := b.args[0].EvalString(b.ctx, row) + valStr, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } - patternStr, isNull, err := b.args[1].EvalString(b.ctx, row) + patternStr, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } - escape, isNull, err := b.args[2].EvalInt(b.ctx, row) + escape, isNull, err := b.args[2].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } memorization := func() { if b.pattern == nil { b.pattern = b.collator().Pattern() - if b.args[1].ConstItem(b.ctx.GetSessionVars().StmtCtx) && b.args[2].ConstItem(b.ctx.GetSessionVars().StmtCtx) { + if b.args[1].ConstItem(ctx.GetSessionVars().StmtCtx) && b.args[2].ConstItem(ctx.GetSessionVars().StmtCtx) { b.pattern.Compile(patternStr, byte(escape)) b.isMemorizedPattern = true } diff --git a/pkg/expression/builtin_like_vec.go b/pkg/expression/builtin_like_vec.go index 583766b300a14..b3243d69d55b6 100644 --- a/pkg/expression/builtin_like_vec.go +++ b/pkg/expression/builtin_like_vec.go @@ -30,7 +30,7 @@ func (b *builtinLikeSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, return err } defer b.bufAllocator.put(bufVal) - if err = b.args[0].VecEvalString(b.ctx, input, bufVal); err != nil { + if err = b.args[0].VecEvalString(ctx, input, bufVal); err != nil { return err } bufPattern, err := b.bufAllocator.get() @@ -38,7 +38,7 @@ func (b *builtinLikeSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, return err } defer b.bufAllocator.put(bufPattern) - if err = b.args[1].VecEvalString(b.ctx, input, bufPattern); err != nil { + if err = b.args[1].VecEvalString(ctx, input, bufPattern); err != nil { return err } @@ -47,7 +47,7 @@ func (b *builtinLikeSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, return err } defer b.bufAllocator.put(bufEscape) - if err = b.args[2].VecEvalInt(b.ctx, input, bufEscape); err != nil { + if err = b.args[2].VecEvalInt(ctx, input, bufEscape); err != nil { return err } escapes := bufEscape.Int64s() diff --git a/pkg/expression/builtin_math.go b/pkg/expression/builtin_math.go index 5793f073c1434..a08cb5104d1de 100644 --- a/pkg/expression/builtin_math.go +++ b/pkg/expression/builtin_math.go @@ -176,7 +176,7 @@ func (b *builtinAbsRealSig) Clone() builtinFunc { // evalReal evals ABS(value). // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_abs func (b *builtinAbsRealSig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - val, isNull, err := b.args[0].EvalReal(b.ctx, row) + val, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -196,7 +196,7 @@ func (b *builtinAbsIntSig) Clone() builtinFunc { // evalInt evals ABS(value). // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_abs func (b *builtinAbsIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - val, isNull, err := b.args[0].EvalInt(b.ctx, row) + val, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -222,7 +222,7 @@ func (b *builtinAbsUIntSig) Clone() builtinFunc { // evalInt evals ABS(value). // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_abs func (b *builtinAbsUIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - return b.args[0].EvalInt(b.ctx, row) + return b.args[0].EvalInt(ctx, row) } type builtinAbsDecSig struct { @@ -238,7 +238,7 @@ func (b *builtinAbsDecSig) Clone() builtinFunc { // evalDecimal evals ABS(value). // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_abs func (b *builtinAbsDecSig) evalDecimal(ctx sessionctx.Context, row chunk.Row) (*types.MyDecimal, bool, error) { - val, isNull, err := b.args[0].EvalDecimal(b.ctx, row) + val, isNull, err := b.args[0].EvalDecimal(ctx, row) if isNull || err != nil { return nil, isNull, err } @@ -353,7 +353,7 @@ func (b *builtinRoundRealSig) Clone() builtinFunc { // evalReal evals ROUND(value). // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_round func (b *builtinRoundRealSig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - val, isNull, err := b.args[0].EvalReal(b.ctx, row) + val, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -373,7 +373,7 @@ func (b *builtinRoundIntSig) Clone() builtinFunc { // evalInt evals ROUND(value). // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_round func (b *builtinRoundIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - return b.args[0].EvalInt(b.ctx, row) + return b.args[0].EvalInt(ctx, row) } type builtinRoundDecSig struct { @@ -389,7 +389,7 @@ func (b *builtinRoundDecSig) Clone() builtinFunc { // evalDecimal evals ROUND(value). // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_round func (b *builtinRoundDecSig) evalDecimal(ctx sessionctx.Context, row chunk.Row) (*types.MyDecimal, bool, error) { - val, isNull, err := b.args[0].EvalDecimal(b.ctx, row) + val, isNull, err := b.args[0].EvalDecimal(ctx, row) if isNull || err != nil { return nil, isNull, err } @@ -413,11 +413,11 @@ func (b *builtinRoundWithFracRealSig) Clone() builtinFunc { // evalReal evals ROUND(value, frac). // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_round func (b *builtinRoundWithFracRealSig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - val, isNull, err := b.args[0].EvalReal(b.ctx, row) + val, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } - frac, isNull, err := b.args[1].EvalInt(b.ctx, row) + frac, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -437,11 +437,11 @@ func (b *builtinRoundWithFracIntSig) Clone() builtinFunc { // evalInt evals ROUND(value, frac). // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_round func (b *builtinRoundWithFracIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - val, isNull, err := b.args[0].EvalInt(b.ctx, row) + val, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } - frac, isNull, err := b.args[1].EvalInt(b.ctx, row) + frac, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -461,11 +461,11 @@ func (b *builtinRoundWithFracDecSig) Clone() builtinFunc { // evalDecimal evals ROUND(value, frac). // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_round func (b *builtinRoundWithFracDecSig) evalDecimal(ctx sessionctx.Context, row chunk.Row) (*types.MyDecimal, bool, error) { - val, isNull, err := b.args[0].EvalDecimal(b.ctx, row) + val, isNull, err := b.args[0].EvalDecimal(ctx, row) if isNull || err != nil { return nil, isNull, err } - frac, isNull, err := b.args[1].EvalInt(b.ctx, row) + frac, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return nil, isNull, err } @@ -534,7 +534,7 @@ func (b *builtinCeilRealSig) Clone() builtinFunc { // evalReal evals a builtinCeilRealSig. // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_ceil func (b *builtinCeilRealSig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - val, isNull, err := b.args[0].EvalReal(b.ctx, row) + val, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -554,7 +554,7 @@ func (b *builtinCeilIntToIntSig) Clone() builtinFunc { // evalInt evals a builtinCeilIntToIntSig. // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_ceil func (b *builtinCeilIntToIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - return b.args[0].EvalInt(b.ctx, row) + return b.args[0].EvalInt(ctx, row) } type builtinCeilIntToDecSig struct { @@ -570,7 +570,7 @@ func (b *builtinCeilIntToDecSig) Clone() builtinFunc { // evalDecimal evals a builtinCeilIntToDecSig. // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_Ceil func (b *builtinCeilIntToDecSig) evalDecimal(ctx sessionctx.Context, row chunk.Row) (*types.MyDecimal, bool, error) { - val, isNull, err := b.args[0].EvalInt(b.ctx, row) + val, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return nil, true, err } @@ -594,7 +594,7 @@ func (b *builtinCeilDecToIntSig) Clone() builtinFunc { // evalInt evals a builtinCeilDecToIntSig. // Ceil receives func (b *builtinCeilDecToIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - val, isNull, err := b.args[0].EvalDecimal(b.ctx, row) + val, isNull, err := b.args[0].EvalDecimal(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -621,7 +621,7 @@ func (b *builtinCeilDecToDecSig) Clone() builtinFunc { // evalDecimal evals a builtinCeilDecToDecSig. func (b *builtinCeilDecToDecSig) evalDecimal(ctx sessionctx.Context, row chunk.Row) (*types.MyDecimal, bool, error) { - val, isNull, err := b.args[0].EvalDecimal(b.ctx, row) + val, isNull, err := b.args[0].EvalDecimal(ctx, row) if isNull || err != nil { return nil, isNull, err } @@ -725,7 +725,7 @@ func (b *builtinFloorRealSig) Clone() builtinFunc { // evalReal evals a builtinFloorRealSig. // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_floor func (b *builtinFloorRealSig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - val, isNull, err := b.args[0].EvalReal(b.ctx, row) + val, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -745,7 +745,7 @@ func (b *builtinFloorIntToIntSig) Clone() builtinFunc { // evalInt evals a builtinFloorIntToIntSig. // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_floor func (b *builtinFloorIntToIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - return b.args[0].EvalInt(b.ctx, row) + return b.args[0].EvalInt(ctx, row) } type builtinFloorIntToDecSig struct { @@ -761,7 +761,7 @@ func (b *builtinFloorIntToDecSig) Clone() builtinFunc { // evalDecimal evals a builtinFloorIntToDecSig. // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_floor func (b *builtinFloorIntToDecSig) evalDecimal(ctx sessionctx.Context, row chunk.Row) (*types.MyDecimal, bool, error) { - val, isNull, err := b.args[0].EvalInt(b.ctx, row) + val, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return nil, true, err } @@ -785,7 +785,7 @@ func (b *builtinFloorDecToIntSig) Clone() builtinFunc { // evalInt evals a builtinFloorDecToIntSig. // floor receives func (b *builtinFloorDecToIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - val, isNull, err := b.args[0].EvalDecimal(b.ctx, row) + val, isNull, err := b.args[0].EvalDecimal(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -812,7 +812,7 @@ func (b *builtinFloorDecToDecSig) Clone() builtinFunc { // evalDecimal evals a builtinFloorDecToDecSig. func (b *builtinFloorDecToDecSig) evalDecimal(ctx sessionctx.Context, row chunk.Row) (*types.MyDecimal, bool, error) { - val, isNull, err := b.args[0].EvalDecimal(b.ctx, row) + val, isNull, err := b.args[0].EvalDecimal(ctx, row) if isNull || err != nil { return nil, true, err } @@ -883,12 +883,12 @@ func (b *builtinLog1ArgSig) Clone() builtinFunc { // evalReal evals a builtinLog1ArgSig, corresponding to log(x). // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_log func (b *builtinLog1ArgSig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - val, isNull, err := b.args[0].EvalReal(b.ctx, row) + val, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } if val <= 0 { - b.ctx.GetSessionVars().StmtCtx.AppendWarning(ErrInvalidArgumentForLogarithm) + ctx.GetSessionVars().StmtCtx.AppendWarning(ErrInvalidArgumentForLogarithm) return 0, true, nil } return math.Log(val), false, nil @@ -907,18 +907,18 @@ func (b *builtinLog2ArgsSig) Clone() builtinFunc { // evalReal evals a builtinLog2ArgsSig, corresponding to log(b, x). // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_log func (b *builtinLog2ArgsSig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - val1, isNull, err := b.args[0].EvalReal(b.ctx, row) + val1, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } - val2, isNull, err := b.args[1].EvalReal(b.ctx, row) + val2, isNull, err := b.args[1].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } if val1 <= 0 || val1 == 1 || val2 <= 0 { - b.ctx.GetSessionVars().StmtCtx.AppendWarning(ErrInvalidArgumentForLogarithm) + ctx.GetSessionVars().StmtCtx.AppendWarning(ErrInvalidArgumentForLogarithm) return 0, true, nil } @@ -955,12 +955,12 @@ func (b *builtinLog2Sig) Clone() builtinFunc { // evalReal evals a builtinLog2Sig. // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_log2 func (b *builtinLog2Sig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - val, isNull, err := b.args[0].EvalReal(b.ctx, row) + val, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } if val <= 0 { - b.ctx.GetSessionVars().StmtCtx.AppendWarning(ErrInvalidArgumentForLogarithm) + ctx.GetSessionVars().StmtCtx.AppendWarning(ErrInvalidArgumentForLogarithm) return 0, true, nil } return math.Log2(val), false, nil @@ -996,12 +996,12 @@ func (b *builtinLog10Sig) Clone() builtinFunc { // evalReal evals a builtinLog10Sig. // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_log10 func (b *builtinLog10Sig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - val, isNull, err := b.args[0].EvalReal(b.ctx, row) + val, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } if val <= 0 { - b.ctx.GetSessionVars().StmtCtx.AppendWarning(ErrInvalidArgumentForLogarithm) + ctx.GetSessionVars().StmtCtx.AppendWarning(ErrInvalidArgumentForLogarithm) return 0, true, nil } return math.Log10(val), false, nil @@ -1082,7 +1082,7 @@ func (b *builtinRandWithSeedFirstGenSig) Clone() builtinFunc { // evalReal evals RAND(N). // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_rand func (b *builtinRandWithSeedFirstGenSig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - seed, isNull, err := b.args[0].EvalInt(b.ctx, row) + seed, isNull, err := b.args[0].EvalInt(ctx, row) if err != nil { return 0, true, err } @@ -1128,11 +1128,11 @@ func (b *builtinPowSig) Clone() builtinFunc { // evalReal evals POW(x, y). // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_pow func (b *builtinPowSig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - x, isNull, err := b.args[0].EvalReal(b.ctx, row) + x, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } - y, isNull, err := b.args[1].EvalReal(b.ctx, row) + y, isNull, err := b.args[1].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -1192,7 +1192,7 @@ func (b *builtinConvSig) evalString(ctx sessionctx.Context, row chunk.Row) (res if x.FuncName.L == ast.Cast { arg0 := x.GetArgs()[0] if arg0.GetType().Hybrid() || IsBinaryLiteral(arg0) { - str, isNull, err = arg0.EvalString(b.ctx, row) + str, isNull, err = arg0.EvalString(ctx, row) if isNull || err != nil { return str, isNull, err } @@ -1201,17 +1201,17 @@ func (b *builtinConvSig) evalString(ctx sessionctx.Context, row chunk.Row) (res } } } - fromBase, isNull, err := b.args[1].EvalInt(b.ctx, row) + fromBase, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return res, isNull, err } - toBase, isNull, err := b.args[2].EvalInt(b.ctx, row) + toBase, isNull, err := b.args[2].EvalInt(ctx, row) if isNull || err != nil { return res, isNull, err } if len(str) == 0 { - str, isNull, err = b.args[0].EvalString(b.ctx, row) + str, isNull, err = b.args[0].EvalString(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -1318,7 +1318,7 @@ func (b *builtinCRC32Sig) Clone() builtinFunc { // evalInt evals a CRC32(expr). // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_crc32 func (b *builtinCRC32Sig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - x, isNull, err := b.args[0].EvalString(b.ctx, row) + x, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -1356,7 +1356,7 @@ func (b *builtinSignSig) Clone() builtinFunc { // evalInt evals SIGN(v). // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_sign func (b *builtinSignSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - val, isNull, err := b.args[0].EvalReal(b.ctx, row) + val, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -1398,7 +1398,7 @@ func (b *builtinSqrtSig) Clone() builtinFunc { // evalReal evals a SQRT(x). // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_sqrt func (b *builtinSqrtSig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - val, isNull, err := b.args[0].EvalReal(b.ctx, row) + val, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -1438,7 +1438,7 @@ func (b *builtinAcosSig) Clone() builtinFunc { // evalReal evals a builtinAcosSig. // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_acos func (b *builtinAcosSig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - val, isNull, err := b.args[0].EvalReal(b.ctx, row) + val, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -1479,7 +1479,7 @@ func (b *builtinAsinSig) Clone() builtinFunc { // evalReal evals a builtinAsinSig. // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_asin func (b *builtinAsinSig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - val, isNull, err := b.args[0].EvalReal(b.ctx, row) + val, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -1542,7 +1542,7 @@ func (b *builtinAtan1ArgSig) Clone() builtinFunc { // evalReal evals a builtinAtan1ArgSig, corresponding to atan(x). // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_atan func (b *builtinAtan1ArgSig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - val, isNull, err := b.args[0].EvalReal(b.ctx, row) + val, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -1563,12 +1563,12 @@ func (b *builtinAtan2ArgsSig) Clone() builtinFunc { // evalReal evals a builtinAtan1ArgSig, corresponding to atan(y, x). // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_atan func (b *builtinAtan2ArgsSig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - val1, isNull, err := b.args[0].EvalReal(b.ctx, row) + val1, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } - val2, isNull, err := b.args[1].EvalReal(b.ctx, row) + val2, isNull, err := b.args[1].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -1606,7 +1606,7 @@ func (b *builtinCosSig) Clone() builtinFunc { // evalReal evals a builtinCosSig. // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_cos func (b *builtinCosSig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - val, isNull, err := b.args[0].EvalReal(b.ctx, row) + val, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -1643,7 +1643,7 @@ func (b *builtinCotSig) Clone() builtinFunc { // evalReal evals a builtinCotSig. // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_cot func (b *builtinCotSig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - val, isNull, err := b.args[0].EvalReal(b.ctx, row) + val, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -1688,7 +1688,7 @@ func (b *builtinDegreesSig) Clone() builtinFunc { // evalReal evals a builtinDegreesSig. // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_degrees func (b *builtinDegreesSig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - val, isNull, err := b.args[0].EvalReal(b.ctx, row) + val, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -1726,7 +1726,7 @@ func (b *builtinExpSig) Clone() builtinFunc { // evalReal evals a builtinExpSig. // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_exp func (b *builtinExpSig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - val, isNull, err := b.args[0].EvalReal(b.ctx, row) + val, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -1809,7 +1809,7 @@ func (b *builtinRadiansSig) Clone() builtinFunc { // evalReal evals RADIANS(X). // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_radians func (b *builtinRadiansSig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - x, isNull, err := b.args[0].EvalReal(b.ctx, row) + x, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -1846,7 +1846,7 @@ func (b *builtinSinSig) Clone() builtinFunc { // evalReal evals a builtinSinSig. // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_sin func (b *builtinSinSig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - val, isNull, err := b.args[0].EvalReal(b.ctx, row) + val, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -1883,7 +1883,7 @@ func (b *builtinTanSig) Clone() builtinFunc { // evalReal evals a builtinTanSig. // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_tan func (b *builtinTanSig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - val, isNull, err := b.args[0].EvalReal(b.ctx, row) + val, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -1951,12 +1951,12 @@ func (b *builtinTruncateDecimalSig) Clone() builtinFunc { // evalDecimal evals a TRUNCATE(X,D). // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_truncate func (b *builtinTruncateDecimalSig) evalDecimal(ctx sessionctx.Context, row chunk.Row) (*types.MyDecimal, bool, error) { - x, isNull, err := b.args[0].EvalDecimal(b.ctx, row) + x, isNull, err := b.args[0].EvalDecimal(ctx, row) if isNull || err != nil { return nil, isNull, err } - d, isNull, err := b.args[1].EvalInt(b.ctx, row) + d, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return nil, isNull, err } @@ -1981,12 +1981,12 @@ func (b *builtinTruncateRealSig) Clone() builtinFunc { // evalReal evals a TRUNCATE(X,D). // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_truncate func (b *builtinTruncateRealSig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - x, isNull, err := b.args[0].EvalReal(b.ctx, row) + x, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return 0, isNull, err } - d, isNull, err := b.args[1].EvalInt(b.ctx, row) + d, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -2007,7 +2007,7 @@ func (b *builtinTruncateIntSig) Clone() builtinFunc { // evalInt evals a TRUNCATE(X,D). // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_truncate func (b *builtinTruncateIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - x, isNull, err := b.args[0].EvalInt(b.ctx, row) + x, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -2015,7 +2015,7 @@ func (b *builtinTruncateIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) ( return x, false, nil } - d, isNull, err := b.args[1].EvalInt(b.ctx, row) + d, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -2044,7 +2044,7 @@ type builtinTruncateUintSig struct { // evalInt evals a TRUNCATE(X,D). // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_truncate func (b *builtinTruncateUintSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - x, isNull, err := b.args[0].EvalInt(b.ctx, row) + x, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -2053,7 +2053,7 @@ func (b *builtinTruncateUintSig) evalInt(ctx sessionctx.Context, row chunk.Row) } uintx := uint64(x) - d, isNull, err := b.args[1].EvalInt(b.ctx, row) + d, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } diff --git a/pkg/expression/builtin_math_test.go b/pkg/expression/builtin_math_test.go index 54cda139a5c95..35b0e6ea4e04a 100644 --- a/pkg/expression/builtin_math_test.go +++ b/pkg/expression/builtin_math_test.go @@ -100,7 +100,7 @@ func TestCeil(t *testing.T) { f, err := newFunctionForTest(ctx, funcName, primitiveValsToConstants(ctx, []interface{}{test.arg})...) require.NoError(t, err) - result, err := f.Eval(chunk.Row{}) + result, err := f.Eval(ctx, chunk.Row{}) if test.getErr { require.Error(t, err) } else { @@ -151,7 +151,7 @@ func TestExp(t *testing.T) { f, err := newFunctionForTest(ctx, ast.Exp, primitiveValsToConstants(ctx, []interface{}{test.args})...) require.NoError(t, err) - result, err := f.Eval(chunk.Row{}) + result, err := f.Eval(ctx, chunk.Row{}) if test.getWarning { if test.errMsg != "" { require.Error(t, err) @@ -216,7 +216,7 @@ func TestFloor(t *testing.T) { f, err := newFunctionForTest(ctx, ast.Floor, primitiveValsToConstants(ctx, []interface{}{test.arg})...) require.NoError(t, err) - result, err := f.Eval(chunk.Row{}) + result, err := f.Eval(ctx, chunk.Row{}) if test.getErr { require.Error(t, err) } else { @@ -271,7 +271,7 @@ func TestLog(t *testing.T) { f, err := newFunctionForTest(ctx, ast.Log, primitiveValsToConstants(ctx, test.args)...) require.NoError(t, err) - result, err := f.Eval(chunk.Row{}) + result, err := f.Eval(ctx, chunk.Row{}) require.NoError(t, err) if test.warningCount > 0 { require.Equal(t, preWarningCnt+test.warningCount, ctx.GetSessionVars().StmtCtx.WarningCount()) @@ -309,7 +309,7 @@ func TestLog2(t *testing.T) { f, err := newFunctionForTest(ctx, ast.Log2, primitiveValsToConstants(ctx, []interface{}{test.args})...) require.NoError(t, err) - result, err := f.Eval(chunk.Row{}) + result, err := f.Eval(ctx, chunk.Row{}) require.NoError(t, err) if test.warningCount > 0 { require.Equal(t, preWarningCnt+test.warningCount, ctx.GetSessionVars().StmtCtx.WarningCount()) @@ -347,7 +347,7 @@ func TestLog10(t *testing.T) { f, err := newFunctionForTest(ctx, ast.Log10, primitiveValsToConstants(ctx, []interface{}{test.args})...) require.NoError(t, err) - result, err := f.Eval(chunk.Row{}) + result, err := f.Eval(ctx, chunk.Row{}) require.NoError(t, err) if test.warningCount > 0 { require.Equal(t, preWarningCnt+test.warningCount, ctx.GetSessionVars().StmtCtx.WarningCount()) @@ -554,7 +554,7 @@ func TestCRC32(t *testing.T) { require.NoError(t, err) f, err := newFunctionForTest(ctx, ast.CRC32, primitiveValsToConstants(ctx, c.input)...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) require.NoError(t, err) if c.isNull { require.True(t, d.IsNull()) @@ -597,7 +597,7 @@ func TestConv(t *testing.T) { require.Equal(t, charset.CollationUTF8MB4, tp.GetCollate()) require.Equal(t, uint(0), tp.GetFlag()) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -694,7 +694,7 @@ func TestDegrees(t *testing.T) { preWarningCnt := ctx.GetSessionVars().StmtCtx.WarningCount() f, err := newFunctionForTest(ctx, ast.Degrees, primitiveValsToConstants(ctx, []interface{}{c.args})...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getWarning { require.NoError(t, err) require.Equal(t, preWarningCnt+1, ctx.GetSessionVars().StmtCtx.WarningCount()) @@ -804,7 +804,7 @@ func TestSin(t *testing.T) { f, err := newFunctionForTest(ctx, ast.Sin, primitiveValsToConstants(ctx, []interface{}{c.args})...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getWarning { require.NoError(t, err) require.Equal(t, preWarningCnt+1, ctx.GetSessionVars().StmtCtx.WarningCount()) @@ -845,7 +845,7 @@ func TestCos(t *testing.T) { f, err := newFunctionForTest(ctx, ast.Cos, primitiveValsToConstants(ctx, []interface{}{c.args})...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getWarning { require.NoError(t, err) require.Equal(t, preWarningCnt+1, ctx.GetSessionVars().StmtCtx.WarningCount()) @@ -884,7 +884,7 @@ func TestAcos(t *testing.T) { f, err := newFunctionForTest(ctx, ast.Acos, primitiveValsToConstants(ctx, []interface{}{test.args})...) require.NoError(t, err) - result, err := f.Eval(chunk.Row{}) + result, err := f.Eval(ctx, chunk.Row{}) if test.getWarning { require.NoError(t, err) require.Equal(t, preWarningCnt+1, ctx.GetSessionVars().StmtCtx.WarningCount()) @@ -923,7 +923,7 @@ func TestAsin(t *testing.T) { f, err := newFunctionForTest(ctx, ast.Asin, primitiveValsToConstants(ctx, []interface{}{test.args})...) require.NoError(t, err) - result, err := f.Eval(chunk.Row{}) + result, err := f.Eval(ctx, chunk.Row{}) if test.getWarning { require.NoError(t, err) require.Equal(t, preWarningCnt+1, ctx.GetSessionVars().StmtCtx.WarningCount()) @@ -962,7 +962,7 @@ func TestAtan(t *testing.T) { f, err := newFunctionForTest(ctx, ast.Atan, primitiveValsToConstants(ctx, test.args)...) require.NoError(t, err) - result, err := f.Eval(chunk.Row{}) + result, err := f.Eval(ctx, chunk.Row{}) if test.getWarning { require.NoError(t, err) require.Equal(t, preWarningCnt+1, ctx.GetSessionVars().StmtCtx.WarningCount()) @@ -1002,7 +1002,7 @@ func TestTan(t *testing.T) { f, err := newFunctionForTest(ctx, ast.Tan, primitiveValsToConstants(ctx, []interface{}{c.args})...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getWarning { require.NoError(t, err) require.Equal(t, preWarningCnt+1, ctx.GetSessionVars().StmtCtx.WarningCount()) @@ -1043,7 +1043,7 @@ func TestCot(t *testing.T) { f, err := newFunctionForTest(ctx, ast.Cot, primitiveValsToConstants(ctx, []interface{}{test.args})...) require.NoError(t, err) - result, err := f.Eval(chunk.Row{}) + result, err := f.Eval(ctx, chunk.Row{}) if test.getErr { require.Error(t, err) if test.errMsg != "" { diff --git a/pkg/expression/builtin_math_vec.go b/pkg/expression/builtin_math_vec.go index 0a5cb72ecae9e..48212309af233 100644 --- a/pkg/expression/builtin_math_vec.go +++ b/pkg/expression/builtin_math_vec.go @@ -28,7 +28,7 @@ import ( ) func (b *builtinLog1ArgSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalReal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, result); err != nil { return err } f64s := result.Float64s() @@ -37,7 +37,7 @@ func (b *builtinLog1ArgSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chu continue } if f64s[i] <= 0 { - b.ctx.GetSessionVars().StmtCtx.AppendWarning(ErrInvalidArgumentForLogarithm) + ctx.GetSessionVars().StmtCtx.AppendWarning(ErrInvalidArgumentForLogarithm) result.SetNull(i, true) } else { f64s[i] = math.Log(f64s[i]) @@ -51,7 +51,7 @@ func (b *builtinLog1ArgSig) vectorized() bool { } func (b *builtinLog2Sig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalReal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, result); err != nil { return err } f64s := result.Float64s() @@ -60,7 +60,7 @@ func (b *builtinLog2Sig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, continue } if f64s[i] <= 0 { - b.ctx.GetSessionVars().StmtCtx.AppendWarning(ErrInvalidArgumentForLogarithm) + ctx.GetSessionVars().StmtCtx.AppendWarning(ErrInvalidArgumentForLogarithm) result.SetNull(i, true) } else { f64s[i] = math.Log2(f64s[i]) @@ -74,7 +74,7 @@ func (b *builtinLog2Sig) vectorized() bool { } func (b *builtinLog10Sig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalReal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, result); err != nil { return err } f64s := result.Float64s() @@ -83,7 +83,7 @@ func (b *builtinLog10Sig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk continue } if f64s[i] <= 0 { - b.ctx.GetSessionVars().StmtCtx.AppendWarning(ErrInvalidArgumentForLogarithm) + ctx.GetSessionVars().StmtCtx.AppendWarning(ErrInvalidArgumentForLogarithm) result.SetNull(i, true) } else { f64s[i] = math.Log10(f64s[i]) @@ -97,7 +97,7 @@ func (b *builtinLog10Sig) vectorized() bool { } func (b *builtinSqrtSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalReal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, result); err != nil { return err } f64s := result.Float64s() @@ -119,7 +119,7 @@ func (b *builtinSqrtSig) vectorized() bool { } func (b *builtinAcosSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalReal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, result); err != nil { return err } f64s := result.Float64s() @@ -141,7 +141,7 @@ func (b *builtinAcosSig) vectorized() bool { } func (b *builtinAsinSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalReal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, result); err != nil { return err } f64s := result.Float64s() @@ -163,7 +163,7 @@ func (b *builtinAsinSig) vectorized() bool { } func (b *builtinAtan1ArgSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalReal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, result); err != nil { return err } f64s := result.Float64s() @@ -182,7 +182,7 @@ func (b *builtinAtan1ArgSig) vectorized() bool { func (b *builtinAtan2ArgsSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - if err := b.args[0].VecEvalReal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, result); err != nil { return err } @@ -191,7 +191,7 @@ func (b *builtinAtan2ArgsSig) vecEvalReal(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(buf) - if err := b.args[1].VecEvalReal(b.ctx, input, buf); err != nil { + if err := b.args[1].VecEvalReal(ctx, input, buf); err != nil { return err } @@ -214,7 +214,7 @@ func (b *builtinAtan2ArgsSig) vectorized() bool { } func (b *builtinCosSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalReal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, result); err != nil { return err } f64s := result.Float64s() @@ -232,7 +232,7 @@ func (b *builtinCosSig) vectorized() bool { } func (b *builtinCotSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalReal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, result); err != nil { return err } f64s := result.Float64s() @@ -260,7 +260,7 @@ func (b *builtinCotSig) vectorized() bool { } func (b *builtinDegreesSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalReal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, result); err != nil { return err } f64s := result.Float64s() @@ -278,7 +278,7 @@ func (b *builtinDegreesSig) vectorized() bool { } func (b *builtinExpSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalReal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, result); err != nil { return err } f64s := result.Float64s() @@ -303,7 +303,7 @@ func (b *builtinExpSig) vectorized() bool { } func (b *builtinRadiansSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalReal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, result); err != nil { return err } f64s := result.Float64s() @@ -321,7 +321,7 @@ func (b *builtinRadiansSig) vectorized() bool { } func (b *builtinSinSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalReal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, result); err != nil { return err } f64s := result.Float64s() @@ -339,7 +339,7 @@ func (b *builtinSinSig) vectorized() bool { } func (b *builtinTanSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalReal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, result); err != nil { return err } f64s := result.Float64s() @@ -357,7 +357,7 @@ func (b *builtinTanSig) vectorized() bool { } func (b *builtinAbsDecSig) vecEvalDecimal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalDecimal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, result); err != nil { return err } zero := new(types.MyDecimal) @@ -382,7 +382,7 @@ func (b *builtinAbsDecSig) vectorized() bool { } func (b *builtinRoundDecSig) vecEvalDecimal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalDecimal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, result); err != nil { return err } d64s := result.Decimals() @@ -410,11 +410,11 @@ func (b *builtinPowSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, return err } defer b.bufAllocator.put(buf1) - if err := b.args[0].VecEvalReal(b.ctx, input, buf1); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, buf1); err != nil { return err } - if err := b.args[1].VecEvalReal(b.ctx, input, result); err != nil { + if err := b.args[1].VecEvalReal(ctx, input, result); err != nil { return err } @@ -440,7 +440,7 @@ func (b *builtinPowSig) vectorized() bool { } func (b *builtinFloorRealSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalReal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, result); err != nil { return err } f64s := result.Float64s() @@ -458,7 +458,7 @@ func (b *builtinFloorRealSig) vectorized() bool { } func (b *builtinLog2ArgsSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalReal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, result); err != nil { return err } n := input.NumRows() @@ -467,7 +467,7 @@ func (b *builtinLog2ArgsSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalReal(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalReal(ctx, input, buf1); err != nil { return err } @@ -479,7 +479,7 @@ func (b *builtinLog2ArgsSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Ch continue } if d[i] <= 0 || d[i] == 1 || x[i] <= 0 { - b.ctx.GetSessionVars().StmtCtx.AppendWarning(ErrInvalidArgumentForLogarithm) + ctx.GetSessionVars().StmtCtx.AppendWarning(ErrInvalidArgumentForLogarithm) result.SetNull(i, true) } d[i] = math.Log(x[i]) / math.Log(d[i]) @@ -492,7 +492,7 @@ func (b *builtinLog2ArgsSig) vectorized() bool { } func (b *builtinCeilRealSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalReal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, result); err != nil { return err } f64s := result.Float64s() @@ -510,7 +510,7 @@ func (b *builtinCeilRealSig) vectorized() bool { } func (b *builtinRoundRealSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalReal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, result); err != nil { return err } f64s := result.Float64s() @@ -528,7 +528,7 @@ func (b *builtinRoundRealSig) vectorized() bool { } func (b *builtinRoundWithFracRealSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalReal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, result); err != nil { return err } n := input.NumRows() @@ -537,7 +537,7 @@ func (b *builtinRoundWithFracRealSig) vecEvalReal(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalInt(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf1); err != nil { return err } @@ -558,7 +558,7 @@ func (b *builtinRoundWithFracRealSig) vectorized() bool { } func (b *builtinTruncateRealSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalReal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, result); err != nil { return err } n := input.NumRows() @@ -567,7 +567,7 @@ func (b *builtinTruncateRealSig) vecEvalReal(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalInt(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf1); err != nil { return err } @@ -588,7 +588,7 @@ func (b *builtinTruncateRealSig) vectorized() bool { } func (b *builtinAbsRealSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalReal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, result); err != nil { return err } f64s := result.Float64s() @@ -603,7 +603,7 @@ func (b *builtinAbsRealSig) vectorized() bool { } func (b *builtinAbsIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, result); err != nil { return err } i64s := result.Int64s() @@ -626,7 +626,7 @@ func (b *builtinAbsIntSig) vectorized() bool { } func (b *builtinRoundIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - return b.args[0].VecEvalInt(b.ctx, input, result) + return b.args[0].VecEvalInt(ctx, input, result) } func (b *builtinRoundIntSig) vectorized() bool { @@ -634,7 +634,7 @@ func (b *builtinRoundIntSig) vectorized() bool { } func (b *builtinRoundWithFracIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, result); err != nil { return err } @@ -644,7 +644,7 @@ func (b *builtinRoundWithFracIntSig) vecEvalInt(ctx sessionctx.Context, input *c return err } defer b.bufAllocator.put(buf) - if err := b.args[1].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf); err != nil { return err } @@ -674,7 +674,7 @@ func (b *builtinCRC32Sig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } result.ResizeInt64(n, false) @@ -727,7 +727,7 @@ func (b *builtinRandWithSeedFirstGenSig) vecEvalReal(ctx sessionctx.Context, inp return err } defer b.bufAllocator.put(buf) - if err = b.args[0].VecEvalInt(b.ctx, input, buf); err != nil { + if err = b.args[0].VecEvalInt(ctx, input, buf); err != nil { return err } @@ -757,7 +757,7 @@ func (b *builtinCeilIntToDecSig) vecEvalDecimal(ctx sessionctx.Context, input *c return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf); err != nil { return err } @@ -785,7 +785,7 @@ func (b *builtinTruncateIntSig) vectorized() bool { } func (b *builtinTruncateIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, result); err != nil { return err } @@ -795,7 +795,7 @@ func (b *builtinTruncateIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk. } defer b.bufAllocator.put(buf) - if err := b.args[1].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf); err != nil { return err } result.MergeNulls(buf) @@ -828,7 +828,7 @@ func (b *builtinTruncateUintSig) vectorized() bool { } func (b *builtinTruncateUintSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, result); err != nil { return err } @@ -839,7 +839,7 @@ func (b *builtinTruncateUintSig) vecEvalInt(ctx sessionctx.Context, input *chunk } defer b.bufAllocator.put(buf) - if err := b.args[1].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf); err != nil { return err } result.MergeNulls(buf) @@ -874,7 +874,7 @@ func (b *builtinCeilDecToDecSig) vectorized() bool { func (b *builtinCeilDecToDecSig) vecEvalDecimal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - if err := b.args[0].VecEvalDecimal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, result); err != nil { return err } ds := result.Decimals() @@ -903,7 +903,7 @@ func (b *builtinFloorDecToDecSig) vectorized() bool { func (b *builtinFloorDecToDecSig) vecEvalDecimal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - if err := b.args[0].VecEvalDecimal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, result); err != nil { return err } ds := result.Decimals() @@ -938,7 +938,7 @@ func (b *builtinTruncateDecimalSig) vectorized() bool { func (b *builtinTruncateDecimalSig) vecEvalDecimal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - if err := b.args[0].VecEvalDecimal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, result); err != nil { return err } buf, err := b.bufAllocator.get() @@ -946,7 +946,7 @@ func (b *builtinTruncateDecimalSig) vecEvalDecimal(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(buf) - if err := b.args[1].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf); err != nil { return err } result.MergeNulls(buf) @@ -972,7 +972,7 @@ func (b *builtinRoundWithFracDecSig) vectorized() bool { func (b *builtinRoundWithFracDecSig) vecEvalDecimal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - if err := b.args[0].VecEvalDecimal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, result); err != nil { return err } buf, err := b.bufAllocator.get() @@ -980,7 +980,7 @@ func (b *builtinRoundWithFracDecSig) vecEvalDecimal(ctx sessionctx.Context, inpu return err } defer b.bufAllocator.put(buf) - if err := b.args[1].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf); err != nil { return err } @@ -1012,7 +1012,7 @@ func (b *builtinFloorIntToDecSig) vecEvalDecimal(ctx sessionctx.Context, input * return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf); err != nil { return err } @@ -1046,7 +1046,7 @@ func (b *builtinSignSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalReal(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, buf); err != nil { return err } args := buf.Float64s() @@ -1090,13 +1090,13 @@ func (b *builtinConvSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chun return err } defer b.bufAllocator.put(buf3) - if err := b.args[0].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf1); err != nil { return err } - if err := b.args[1].VecEvalInt(b.ctx, input, buf2); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf2); err != nil { return err } - if err := b.args[2].VecEvalInt(b.ctx, input, buf3); err != nil { + if err := b.args[2].VecEvalInt(ctx, input, buf3); err != nil { return err } result.ReserveString(n) @@ -1125,7 +1125,7 @@ func (b *builtinAbsUIntSig) vectorized() bool { } func (b *builtinAbsUIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - return b.args[0].VecEvalInt(b.ctx, input, result) + return b.args[0].VecEvalInt(ctx, input, result) } func (b *builtinCeilDecToIntSig) vectorized() bool { @@ -1139,7 +1139,7 @@ func (b *builtinCeilDecToIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalDecimal(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, buf); err != nil { return err } result.ResizeInt64(n, false) @@ -1171,7 +1171,7 @@ func (b *builtinCeilIntToIntSig) vectorized() bool { } func (b *builtinCeilIntToIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - return b.args[0].VecEvalInt(b.ctx, input, result) + return b.args[0].VecEvalInt(ctx, input, result) } func (b *builtinFloorIntToIntSig) vectorized() bool { @@ -1179,7 +1179,7 @@ func (b *builtinFloorIntToIntSig) vectorized() bool { } func (b *builtinFloorIntToIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - return b.args[0].VecEvalInt(b.ctx, input, result) + return b.args[0].VecEvalInt(ctx, input, result) } func (b *builtinFloorDecToIntSig) vectorized() bool { @@ -1193,7 +1193,7 @@ func (b *builtinFloorDecToIntSig) vecEvalInt(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalDecimal(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, buf); err != nil { return err } result.ResizeInt64(n, false) diff --git a/pkg/expression/builtin_miscellaneous.go b/pkg/expression/builtin_miscellaneous.go index 8220a10fcad97..e086f78dc32e2 100644 --- a/pkg/expression/builtin_miscellaneous.go +++ b/pkg/expression/builtin_miscellaneous.go @@ -135,12 +135,12 @@ func (b *builtinSleepSig) Clone() builtinFunc { // evalInt evals a builtinSleepSig. // See https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_sleep func (b *builtinSleepSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - val, isNull, err := b.args[0].EvalReal(b.ctx, row) + val, isNull, err := b.args[0].EvalReal(ctx, row) if err != nil { return 0, isNull, err } - sessVars := b.ctx.GetSessionVars() + sessVars := ctx.GetSessionVars() if isNull || val < 0 { // for insert ignore stmt, the StrictSQLMode and ignoreErr should both be considered. if !sessVars.StmtCtx.BadNullAsWarning { @@ -192,7 +192,7 @@ func (b *builtinLockSig) Clone() builtinFunc { // evalInt evals a builtinLockSig. // See https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_get-lock func (b *builtinLockSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - lockName, isNull, err := b.args[0].EvalString(b.ctx, row) + lockName, isNull, err := b.args[0].EvalString(ctx, row) if err != nil { return 0, isNull, err } @@ -204,7 +204,7 @@ func (b *builtinLockSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, return 0, false, errUserLockWrongName.GenWithStackByArgs(lockName) } maxTimeout := int64(variable.GetSysVar(variable.InnodbLockWaitTimeout).MaxValue) - timeout, isNullTimeout, err := b.args[1].EvalInt(b.ctx, row) + timeout, isNullTimeout, err := b.args[1].EvalInt(ctx, row) if err != nil { return 0, false, err } @@ -217,7 +217,7 @@ func (b *builtinLockSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, // So users are aware, we also attach a warning. if timeout < 0 || timeout > maxTimeout { err := errTruncatedWrongValue.GenWithStackByArgs("get_lock", strconv.FormatInt(timeout, 10)) - b.ctx.GetSessionVars().StmtCtx.AppendWarning(err) + ctx.GetSessionVars().StmtCtx.AppendWarning(err) timeout = maxTimeout } @@ -227,7 +227,7 @@ func (b *builtinLockSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, if utf8.RuneCountInString(lockName) > 64 { return 0, false, errIncorrectArgs.GenWithStackByArgs("get_lock") } - err = b.ctx.GetAdvisoryLock(lockName, timeout) + err = ctx.GetAdvisoryLock(lockName, timeout) if err != nil { if terr, ok := errors.Cause(err).(*terror.Error); ok { switch terr.Code() { @@ -275,7 +275,7 @@ func (b *builtinReleaseLockSig) Clone() builtinFunc { // evalInt evals a builtinReleaseLockSig. // See https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_release-lock func (b *builtinReleaseLockSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - lockName, isNull, err := b.args[0].EvalString(b.ctx, row) + lockName, isNull, err := b.args[0].EvalString(ctx, row) if err != nil { return 0, isNull, err } @@ -293,7 +293,7 @@ func (b *builtinReleaseLockSig) evalInt(ctx sessionctx.Context, row chunk.Row) ( return 0, false, errIncorrectArgs.GenWithStackByArgs("release_lock") } released := int64(0) - if b.ctx.ReleaseAdvisoryLock(lockName) { + if ctx.ReleaseAdvisoryLock(lockName) { released = 1 } return released, false, nil @@ -362,7 +362,7 @@ func (b *builtinDecimalAnyValueSig) Clone() builtinFunc { // evalDecimal evals a builtinDecimalAnyValueSig. // See https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_any-value func (b *builtinDecimalAnyValueSig) evalDecimal(ctx sessionctx.Context, row chunk.Row) (*types.MyDecimal, bool, error) { - return b.args[0].EvalDecimal(b.ctx, row) + return b.args[0].EvalDecimal(ctx, row) } type builtinDurationAnyValueSig struct { @@ -378,7 +378,7 @@ func (b *builtinDurationAnyValueSig) Clone() builtinFunc { // evalDuration evals a builtinDurationAnyValueSig. // See https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_any-value func (b *builtinDurationAnyValueSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (types.Duration, bool, error) { - return b.args[0].EvalDuration(b.ctx, row) + return b.args[0].EvalDuration(ctx, row) } type builtinIntAnyValueSig struct { @@ -394,7 +394,7 @@ func (b *builtinIntAnyValueSig) Clone() builtinFunc { // evalInt evals a builtinIntAnyValueSig. // See https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_any-value func (b *builtinIntAnyValueSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - return b.args[0].EvalInt(b.ctx, row) + return b.args[0].EvalInt(ctx, row) } type builtinJSONAnyValueSig struct { @@ -410,7 +410,7 @@ func (b *builtinJSONAnyValueSig) Clone() builtinFunc { // evalJSON evals a builtinJSONAnyValueSig. // See https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_any-value func (b *builtinJSONAnyValueSig) evalJSON(ctx sessionctx.Context, row chunk.Row) (types.BinaryJSON, bool, error) { - return b.args[0].EvalJSON(b.ctx, row) + return b.args[0].EvalJSON(ctx, row) } type builtinRealAnyValueSig struct { @@ -426,7 +426,7 @@ func (b *builtinRealAnyValueSig) Clone() builtinFunc { // evalReal evals a builtinRealAnyValueSig. // See https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_any-value func (b *builtinRealAnyValueSig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - return b.args[0].EvalReal(b.ctx, row) + return b.args[0].EvalReal(ctx, row) } type builtinStringAnyValueSig struct { @@ -442,7 +442,7 @@ func (b *builtinStringAnyValueSig) Clone() builtinFunc { // evalString evals a builtinStringAnyValueSig. // See https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_any-value func (b *builtinStringAnyValueSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - return b.args[0].EvalString(b.ctx, row) + return b.args[0].EvalString(ctx, row) } type builtinTimeAnyValueSig struct { @@ -458,7 +458,7 @@ func (b *builtinTimeAnyValueSig) Clone() builtinFunc { // evalTime evals a builtinTimeAnyValueSig. // See https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_any-value func (b *builtinTimeAnyValueSig) evalTime(ctx sessionctx.Context, row chunk.Row) (types.Time, bool, error) { - return b.args[0].EvalTime(b.ctx, row) + return b.args[0].EvalTime(ctx, row) } type defaultFunctionClass struct { @@ -501,7 +501,7 @@ func (b *builtinInetAtonSig) Clone() builtinFunc { // evalInt evals a builtinInetAtonSig. // See https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_inet-aton func (b *builtinInetAtonSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - val, isNull, err := b.args[0].EvalString(b.ctx, row) + val, isNull, err := b.args[0].EvalString(ctx, row) if err != nil || isNull { return 0, true, err } @@ -581,7 +581,7 @@ func (b *builtinInetNtoaSig) Clone() builtinFunc { // evalString evals a builtinInetNtoaSig. // See https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_inet-ntoa func (b *builtinInetNtoaSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - val, isNull, err := b.args[0].EvalInt(b.ctx, row) + val, isNull, err := b.args[0].EvalInt(ctx, row) if err != nil || isNull { return "", true, err } @@ -634,7 +634,7 @@ func (b *builtinInet6AtonSig) Clone() builtinFunc { // evalString evals a builtinInet6AtonSig. // See https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_inet6-aton func (b *builtinInet6AtonSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - val, isNull, err := b.args[0].EvalString(b.ctx, row) + val, isNull, err := b.args[0].EvalString(ctx, row) if err != nil || isNull { return "", true, err } @@ -709,7 +709,7 @@ func (b *builtinInet6NtoaSig) Clone() builtinFunc { // evalString evals a builtinInet6NtoaSig. // See https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_inet6-ntoa func (b *builtinInet6NtoaSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - val, isNull, err := b.args[0].EvalString(b.ctx, row) + val, isNull, err := b.args[0].EvalString(ctx, row) if err != nil || isNull { return "", true, err } @@ -754,7 +754,7 @@ func (b *builtinFreeLockSig) Clone() builtinFunc { // See https://dev.mysql.com/doc/refman/8.0/en/locking-functions.html#function_is-free-lock func (b *builtinFreeLockSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - lockName, isNull, err := b.args[0].EvalString(b.ctx, row) + lockName, isNull, err := b.args[0].EvalString(ctx, row) if err != nil { return 0, true, err } @@ -772,7 +772,7 @@ func (b *builtinFreeLockSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int if utf8.RuneCountInString(lockName) > 64 { return 0, true, errIncorrectArgs.GenWithStackByArgs("is_free_lock") } - lock := b.ctx.IsUsedAdvisoryLock(lockName) + lock := ctx.IsUsedAdvisoryLock(lockName) if lock > 0 { return 0, false, nil } @@ -810,7 +810,7 @@ func (b *builtinIsIPv4Sig) Clone() builtinFunc { // evalInt evals a builtinIsIPv4Sig. // See https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_is-ipv4 func (b *builtinIsIPv4Sig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - val, isNull, err := b.args[0].EvalString(b.ctx, row) + val, isNull, err := b.args[0].EvalString(ctx, row) if err != nil || isNull { return 0, err != nil, err } @@ -878,7 +878,7 @@ func (b *builtinIsIPv4CompatSig) Clone() builtinFunc { // evalInt evals Is_IPv4_Compat // See https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_is-ipv4-compat func (b *builtinIsIPv4CompatSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - val, isNull, err := b.args[0].EvalString(b.ctx, row) + val, isNull, err := b.args[0].EvalString(ctx, row) if err != nil || isNull { return 0, err != nil, err } @@ -927,7 +927,7 @@ func (b *builtinIsIPv4MappedSig) Clone() builtinFunc { // evalInt evals Is_IPv4_Mapped // See https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_is-ipv4-mapped func (b *builtinIsIPv4MappedSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - val, isNull, err := b.args[0].EvalString(b.ctx, row) + val, isNull, err := b.args[0].EvalString(ctx, row) if err != nil || isNull { return 0, err != nil, err } @@ -976,7 +976,7 @@ func (b *builtinIsIPv6Sig) Clone() builtinFunc { // evalInt evals a builtinIsIPv6Sig. // See https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_is-ipv6 func (b *builtinIsIPv6Sig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - val, isNull, err := b.args[0].EvalString(b.ctx, row) + val, isNull, err := b.args[0].EvalString(ctx, row) if err != nil || isNull { return 0, err != nil, err } @@ -1016,7 +1016,7 @@ func (b *builtinUsedLockSig) Clone() builtinFunc { // See https://dev.mysql.com/doc/refman/8.0/en/locking-functions.html#function_is-used-lock func (b *builtinUsedLockSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - lockName, isNull, err := b.args[0].EvalString(b.ctx, row) + lockName, isNull, err := b.args[0].EvalString(ctx, row) if err != nil { return 0, isNull, err } @@ -1034,7 +1034,7 @@ func (b *builtinUsedLockSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int if utf8.RuneCountInString(lockName) > 64 { return 0, false, errIncorrectArgs.GenWithStackByArgs("is_used_lock") } - lock := b.ctx.IsUsedAdvisoryLock(lockName) + lock := ctx.IsUsedAdvisoryLock(lockName) return int64(lock), lock == 0, nil // TODO, uint64 } @@ -1069,7 +1069,7 @@ func (b *builtinIsUUIDSig) Clone() builtinFunc { // evalInt evals a builtinIsUUIDSig. // See https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html#function_is-uuid func (b *builtinIsUUIDSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - val, isNull, err := b.args[0].EvalString(b.ctx, row) + val, isNull, err := b.args[0].EvalString(ctx, row) if err != nil || isNull { return 0, isNull, err } @@ -1139,7 +1139,7 @@ func (b *builtinNameConstDecimalSig) Clone() builtinFunc { } func (b *builtinNameConstDecimalSig) evalDecimal(ctx sessionctx.Context, row chunk.Row) (*types.MyDecimal, bool, error) { - return b.args[1].EvalDecimal(b.ctx, row) + return b.args[1].EvalDecimal(ctx, row) } type builtinNameConstIntSig struct { @@ -1153,7 +1153,7 @@ func (b *builtinNameConstIntSig) Clone() builtinFunc { } func (b *builtinNameConstIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - return b.args[1].EvalInt(b.ctx, row) + return b.args[1].EvalInt(ctx, row) } type builtinNameConstRealSig struct { @@ -1167,7 +1167,7 @@ func (b *builtinNameConstRealSig) Clone() builtinFunc { } func (b *builtinNameConstRealSig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - return b.args[1].EvalReal(b.ctx, row) + return b.args[1].EvalReal(ctx, row) } type builtinNameConstStringSig struct { @@ -1181,7 +1181,7 @@ func (b *builtinNameConstStringSig) Clone() builtinFunc { } func (b *builtinNameConstStringSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - return b.args[1].EvalString(b.ctx, row) + return b.args[1].EvalString(ctx, row) } type builtinNameConstJSONSig struct { @@ -1195,7 +1195,7 @@ func (b *builtinNameConstJSONSig) Clone() builtinFunc { } func (b *builtinNameConstJSONSig) evalJSON(ctx sessionctx.Context, row chunk.Row) (types.BinaryJSON, bool, error) { - return b.args[1].EvalJSON(b.ctx, row) + return b.args[1].EvalJSON(ctx, row) } type builtinNameConstDurationSig struct { @@ -1209,7 +1209,7 @@ func (b *builtinNameConstDurationSig) Clone() builtinFunc { } func (b *builtinNameConstDurationSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (types.Duration, bool, error) { - return b.args[1].EvalDuration(b.ctx, row) + return b.args[1].EvalDuration(ctx, row) } type builtinNameConstTimeSig struct { @@ -1223,7 +1223,7 @@ func (b *builtinNameConstTimeSig) Clone() builtinFunc { } func (b *builtinNameConstTimeSig) evalTime(ctx sessionctx.Context, row chunk.Row) (types.Time, bool, error) { - return b.args[1].EvalTime(b.ctx, row) + return b.args[1].EvalTime(ctx, row) } type releaseAllLocksFunctionClass struct { @@ -1256,7 +1256,7 @@ func (b *builtinReleaseAllLocksSig) Clone() builtinFunc { // evalInt evals a builtinReleaseAllLocksSig. // See https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_release-all-locks func (b *builtinReleaseAllLocksSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - count := b.ctx.ReleaseAllAdvisoryLocks() + count := ctx.ReleaseAllAdvisoryLocks() return int64(count), false, nil } @@ -1345,7 +1345,7 @@ func (b *builtinVitessHashSig) Clone() builtinFunc { // evalInt evals VITESS_HASH(int64). func (b *builtinVitessHashSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - shardKeyInt, isNull, err := b.args[0].EvalInt(b.ctx, row) + shardKeyInt, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return 0, true, err } @@ -1393,7 +1393,7 @@ func (b *builtinUUIDToBinSig) Clone() builtinFunc { // evalString evals UUID_TO_BIN(string_uuid, swap_flag). // See https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html#function_uuid-to-bin func (b *builtinUUIDToBinSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - val, isNull, err := b.args[0].EvalString(b.ctx, row) + val, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", isNull, err } @@ -1409,7 +1409,7 @@ func (b *builtinUUIDToBinSig) evalString(ctx sessionctx.Context, row chunk.Row) flag := int64(0) if len(b.args) == 2 { - flag, isNull, err = b.args[1].EvalInt(b.ctx, row) + flag, isNull, err = b.args[1].EvalInt(ctx, row) if isNull { flag = 0 } @@ -1462,7 +1462,7 @@ func (b *builtinBinToUUIDSig) Clone() builtinFunc { // evalString evals BIN_TO_UUID(binary_uuid, swap_flag). // See https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html#function_bin-to-uuid func (b *builtinBinToUUIDSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - val, isNull, err := b.args[0].EvalString(b.ctx, row) + val, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", isNull, err } @@ -1476,7 +1476,7 @@ func (b *builtinBinToUUIDSig) evalString(ctx sessionctx.Context, row chunk.Row) str := u.String() flag := int64(0) if len(b.args) == 2 { - flag, isNull, err = b.args[1].EvalInt(b.ctx, row) + flag, isNull, err = b.args[1].EvalInt(ctx, row) if isNull { flag = 0 } @@ -1545,7 +1545,7 @@ func (b *builtinTidbShardSig) Clone() builtinFunc { // evalInt evals tidb_shard(int64). func (b *builtinTidbShardSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - shardKeyInt, isNull, err := b.args[0].EvalInt(b.ctx, row) + shardKeyInt, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return 0, true, err } diff --git a/pkg/expression/builtin_miscellaneous_test.go b/pkg/expression/builtin_miscellaneous_test.go index 79a28d1134951..761135b414e3a 100644 --- a/pkg/expression/builtin_miscellaneous_test.go +++ b/pkg/expression/builtin_miscellaneous_test.go @@ -139,7 +139,7 @@ func TestUUID(t *testing.T) { ctx := createContext(t) f, err := newFunctionForTest(ctx, ast.UUID) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) require.NoError(t, err) parts := strings.Split(d.GetString(), "-") require.Equal(t, 5, len(parts)) @@ -414,7 +414,7 @@ func TestNameConst(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, ast.NameConst, primitiveValsToConstants(ctx, []interface{}{c.colName, c.arg})...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) require.NoError(t, err) c.asserts(d) } @@ -499,7 +499,7 @@ func TestUUIDToBin(t *testing.T) { f, err := newFunctionForTest(ctx, ast.UUIDToBin, primitiveValsToConstants(ctx, test.args)...) require.NoError(t, err) - result, err := f.Eval(chunk.Row{}) + result, err := f.Eval(ctx, chunk.Row{}) if test.getError { require.Error(t, err) } else if test.getWarning { @@ -570,7 +570,7 @@ func TestBinToUUID(t *testing.T) { f, err := newFunctionForTest(ctx, ast.BinToUUID, primitiveValsToConstants(ctx, test.args)...) require.NoError(t, err) - result, err := f.Eval(chunk.Row{}) + result, err := f.Eval(ctx, chunk.Row{}) if test.getError { require.Error(t, err) } else if test.getWarning { diff --git a/pkg/expression/builtin_miscellaneous_vec.go b/pkg/expression/builtin_miscellaneous_vec.go index 0d3f941aefd00..9433fe9559271 100644 --- a/pkg/expression/builtin_miscellaneous_vec.go +++ b/pkg/expression/builtin_miscellaneous_vec.go @@ -37,7 +37,7 @@ func (b *builtinInetNtoaSig) vecEvalString(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf); err != nil { return err } @@ -73,7 +73,7 @@ func (b *builtinIsIPv4Sig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } result.ResizeInt64(n, false) @@ -100,7 +100,7 @@ func (b *builtinJSONAnyValueSig) vectorized() bool { } func (b *builtinJSONAnyValueSig) vecEvalJSON(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - return b.args[0].VecEvalJSON(b.ctx, input, result) + return b.args[0].VecEvalJSON(ctx, input, result) } func (b *builtinRealAnyValueSig) vectorized() bool { @@ -108,7 +108,7 @@ func (b *builtinRealAnyValueSig) vectorized() bool { } func (b *builtinRealAnyValueSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - return b.args[0].VecEvalReal(b.ctx, input, result) + return b.args[0].VecEvalReal(ctx, input, result) } func (b *builtinStringAnyValueSig) vectorized() bool { @@ -116,7 +116,7 @@ func (b *builtinStringAnyValueSig) vectorized() bool { } func (b *builtinStringAnyValueSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - return b.args[0].VecEvalString(b.ctx, input, result) + return b.args[0].VecEvalString(ctx, input, result) } func (b *builtinIsIPv6Sig) vectorized() bool { @@ -130,7 +130,7 @@ func (b *builtinIsIPv6Sig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } result.ResizeInt64(n, false) @@ -165,7 +165,7 @@ func (b *builtinIsUUIDSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } result.ResizeInt64(n, false) @@ -189,7 +189,7 @@ func (b *builtinNameConstStringSig) vectorized() bool { } func (b *builtinNameConstStringSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - return b.args[1].VecEvalString(b.ctx, input, result) + return b.args[1].VecEvalString(ctx, input, result) } func (b *builtinDecimalAnyValueSig) vectorized() bool { @@ -197,7 +197,7 @@ func (b *builtinDecimalAnyValueSig) vectorized() bool { } func (b *builtinDecimalAnyValueSig) vecEvalDecimal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - return b.args[0].VecEvalDecimal(b.ctx, input, result) + return b.args[0].VecEvalDecimal(ctx, input, result) } func (b *builtinUUIDSig) vectorized() bool { @@ -224,7 +224,7 @@ func (b *builtinNameConstDurationSig) vectorized() bool { } func (b *builtinNameConstDurationSig) vecEvalDuration(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - return b.args[1].VecEvalDuration(b.ctx, input, result) + return b.args[1].VecEvalDuration(ctx, input, result) } func (b *builtinDurationAnyValueSig) vectorized() bool { @@ -232,7 +232,7 @@ func (b *builtinDurationAnyValueSig) vectorized() bool { } func (b *builtinDurationAnyValueSig) vecEvalDuration(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - return b.args[0].VecEvalDuration(b.ctx, input, result) + return b.args[0].VecEvalDuration(ctx, input, result) } func (b *builtinIntAnyValueSig) vectorized() bool { @@ -240,7 +240,7 @@ func (b *builtinIntAnyValueSig) vectorized() bool { } func (b *builtinIntAnyValueSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - return b.args[0].VecEvalInt(b.ctx, input, result) + return b.args[0].VecEvalInt(ctx, input, result) } func (b *builtinIsIPv4CompatSig) vectorized() bool { @@ -254,7 +254,7 @@ func (b *builtinIsIPv4CompatSig) vecEvalInt(ctx sessionctx.Context, input *chunk return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } result.ResizeInt64(n, false) @@ -285,7 +285,7 @@ func (b *builtinNameConstIntSig) vectorized() bool { } func (b *builtinNameConstIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - return b.args[1].VecEvalInt(b.ctx, input, result) + return b.args[1].VecEvalInt(ctx, input, result) } func (b *builtinNameConstTimeSig) vectorized() bool { @@ -293,7 +293,7 @@ func (b *builtinNameConstTimeSig) vectorized() bool { } func (b *builtinNameConstTimeSig) vecEvalTime(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - return b.args[1].VecEvalTime(b.ctx, input, result) + return b.args[1].VecEvalTime(ctx, input, result) } func (b *builtinSleepSig) vectorized() bool { @@ -310,7 +310,7 @@ func (b *builtinSleepSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, } defer b.bufAllocator.put(buf) - err = b.args[0].VecEvalReal(b.ctx, input, buf) + err = b.args[0].VecEvalReal(ctx, input, buf) if err != nil { return err } @@ -322,7 +322,7 @@ func (b *builtinSleepSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, isNull := buf.IsNull(i) val := buf.GetFloat64(i) - sessVars := b.ctx.GetSessionVars() + sessVars := ctx.GetSessionVars() if isNull || val < 0 { // for insert ignore stmt, the StrictSQLMode and ignoreErr should both be considered. if !sessVars.StmtCtx.BadNullAsWarning { @@ -385,7 +385,7 @@ func (b *builtinIsIPv4MappedSig) vecEvalInt(ctx sessionctx.Context, input *chunk return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } result.ResizeInt64(n, false) @@ -416,7 +416,7 @@ func (b *builtinNameConstDecimalSig) vectorized() bool { } func (b *builtinNameConstDecimalSig) vecEvalDecimal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - return b.args[1].VecEvalDecimal(b.ctx, input, result) + return b.args[1].VecEvalDecimal(ctx, input, result) } func (b *builtinNameConstJSONSig) vectorized() bool { @@ -424,7 +424,7 @@ func (b *builtinNameConstJSONSig) vectorized() bool { } func (b *builtinNameConstJSONSig) vecEvalJSON(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - return b.args[1].VecEvalJSON(b.ctx, input, result) + return b.args[1].VecEvalJSON(ctx, input, result) } func (b *builtinInet6AtonSig) vectorized() bool { @@ -440,7 +440,7 @@ func (b *builtinInet6AtonSig) vecEvalString(ctx sessionctx.Context, input *chunk return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } @@ -503,7 +503,7 @@ func (b *builtinTimeAnyValueSig) vectorized() bool { } func (b *builtinTimeAnyValueSig) vecEvalTime(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - return b.args[0].VecEvalTime(b.ctx, input, result) + return b.args[0].VecEvalTime(ctx, input, result) } func (b *builtinInetAtonSig) vectorized() bool { @@ -517,7 +517,7 @@ func (b *builtinInetAtonSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chu return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } var ( @@ -590,7 +590,7 @@ func (b *builtinInet6NtoaSig) vecEvalString(ctx sessionctx.Context, input *chunk return err } defer b.bufAllocator.put(val) - if err := b.args[0].VecEvalString(b.ctx, input, val); err != nil { + if err := b.args[0].VecEvalString(ctx, input, val); err != nil { return err } result.ReserveString(n) @@ -618,7 +618,7 @@ func (b *builtinNameConstRealSig) vectorized() bool { } func (b *builtinNameConstRealSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - return b.args[1].VecEvalReal(b.ctx, input, result) + return b.args[1].VecEvalReal(ctx, input, result) } func (b *builtinVitessHashSig) vectorized() bool { @@ -633,7 +633,7 @@ func (b *builtinVitessHashSig) vecEvalInt(ctx sessionctx.Context, input *chunk.C } defer b.bufAllocator.put(column) - if err := b.args[0].VecEvalInt(b.ctx, input, column); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, column); err != nil { return err } @@ -669,7 +669,7 @@ func (b *builtinUUIDToBinSig) vecEvalString(ctx sessionctx.Context, input *chunk return err } defer b.bufAllocator.put(valBuf) - if err := b.args[0].VecEvalString(b.ctx, input, valBuf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, valBuf); err != nil { return err } @@ -681,7 +681,7 @@ func (b *builtinUUIDToBinSig) vecEvalString(ctx sessionctx.Context, input *chunk return err } defer b.bufAllocator.put(flagBuf) - if err := b.args[1].VecEvalInt(b.ctx, input, flagBuf); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, flagBuf); err != nil { return err } i64s = flagBuf.Int64s() @@ -727,7 +727,7 @@ func (b *builtinBinToUUIDSig) vecEvalString(ctx sessionctx.Context, input *chunk return err } defer b.bufAllocator.put(valBuf) - if err := b.args[0].VecEvalString(b.ctx, input, valBuf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, valBuf); err != nil { return err } @@ -739,7 +739,7 @@ func (b *builtinBinToUUIDSig) vecEvalString(ctx sessionctx.Context, input *chunk return err } defer b.bufAllocator.put(flagBuf) - if err := b.args[1].VecEvalInt(b.ctx, input, flagBuf); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, flagBuf); err != nil { return err } i64s = flagBuf.Int64s() diff --git a/pkg/expression/builtin_op.go b/pkg/expression/builtin_op.go index f0fe1a29844e6..f03ef903e7db6 100644 --- a/pkg/expression/builtin_op.go +++ b/pkg/expression/builtin_op.go @@ -99,11 +99,11 @@ func (b *builtinLogicAndSig) Clone() builtinFunc { } func (b *builtinLogicAndSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - arg0, isNull0, err := b.args[0].EvalInt(b.ctx, row) + arg0, isNull0, err := b.args[0].EvalInt(ctx, row) if err != nil || (!isNull0 && arg0 == 0) { return 0, err != nil, err } - arg1, isNull1, err := b.args[1].EvalInt(b.ctx, row) + arg1, isNull1, err := b.args[1].EvalInt(ctx, row) if err != nil || (!isNull1 && arg1 == 0) { return 0, err != nil, err } @@ -152,14 +152,14 @@ func (b *builtinLogicOrSig) Clone() builtinFunc { } func (b *builtinLogicOrSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - arg0, isNull0, err := b.args[0].EvalInt(b.ctx, row) + arg0, isNull0, err := b.args[0].EvalInt(ctx, row) if err != nil { return 0, true, err } if !isNull0 && arg0 != 0 { return 1, false, nil } - arg1, isNull1, err := b.args[1].EvalInt(b.ctx, row) + arg1, isNull1, err := b.args[1].EvalInt(ctx, row) if err != nil { return 0, true, err } @@ -211,11 +211,11 @@ func (b *builtinLogicXorSig) Clone() builtinFunc { } func (b *builtinLogicXorSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - arg0, isNull, err := b.args[0].EvalInt(b.ctx, row) + arg0, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } - arg1, isNull, err := b.args[1].EvalInt(b.ctx, row) + arg1, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -255,11 +255,11 @@ func (b *builtinBitAndSig) Clone() builtinFunc { } func (b *builtinBitAndSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - arg0, isNull, err := b.args[0].EvalInt(b.ctx, row) + arg0, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } - arg1, isNull, err := b.args[1].EvalInt(b.ctx, row) + arg1, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -296,11 +296,11 @@ func (b *builtinBitOrSig) Clone() builtinFunc { } func (b *builtinBitOrSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - arg0, isNull, err := b.args[0].EvalInt(b.ctx, row) + arg0, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } - arg1, isNull, err := b.args[1].EvalInt(b.ctx, row) + arg1, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -337,11 +337,11 @@ func (b *builtinBitXorSig) Clone() builtinFunc { } func (b *builtinBitXorSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - arg0, isNull, err := b.args[0].EvalInt(b.ctx, row) + arg0, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } - arg1, isNull, err := b.args[1].EvalInt(b.ctx, row) + arg1, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -378,11 +378,11 @@ func (b *builtinLeftShiftSig) Clone() builtinFunc { } func (b *builtinLeftShiftSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - arg0, isNull, err := b.args[0].EvalInt(b.ctx, row) + arg0, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } - arg1, isNull, err := b.args[1].EvalInt(b.ctx, row) + arg1, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -419,11 +419,11 @@ func (b *builtinRightShiftSig) Clone() builtinFunc { } func (b *builtinRightShiftSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - arg0, isNull, err := b.args[0].EvalInt(b.ctx, row) + arg0, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } - arg1, isNull, err := b.args[1].EvalInt(b.ctx, row) + arg1, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -532,7 +532,7 @@ func (b *builtinRealIsTrueSig) Clone() builtinFunc { } func (b *builtinRealIsTrueSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - input, isNull, err := b.args[0].EvalReal(b.ctx, row) + input, isNull, err := b.args[0].EvalReal(ctx, row) if err != nil { return 0, true, err } @@ -557,7 +557,7 @@ func (b *builtinDecimalIsTrueSig) Clone() builtinFunc { } func (b *builtinDecimalIsTrueSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - input, isNull, err := b.args[0].EvalDecimal(b.ctx, row) + input, isNull, err := b.args[0].EvalDecimal(ctx, row) if err != nil { return 0, true, err } @@ -582,7 +582,7 @@ func (b *builtinIntIsTrueSig) Clone() builtinFunc { } func (b *builtinIntIsTrueSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - input, isNull, err := b.args[0].EvalInt(b.ctx, row) + input, isNull, err := b.args[0].EvalInt(ctx, row) if err != nil { return 0, true, err } @@ -607,7 +607,7 @@ func (b *builtinRealIsFalseSig) Clone() builtinFunc { } func (b *builtinRealIsFalseSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - input, isNull, err := b.args[0].EvalReal(b.ctx, row) + input, isNull, err := b.args[0].EvalReal(ctx, row) if err != nil { return 0, true, err } @@ -632,7 +632,7 @@ func (b *builtinDecimalIsFalseSig) Clone() builtinFunc { } func (b *builtinDecimalIsFalseSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - input, isNull, err := b.args[0].EvalDecimal(b.ctx, row) + input, isNull, err := b.args[0].EvalDecimal(ctx, row) if err != nil { return 0, true, err } @@ -657,7 +657,7 @@ func (b *builtinIntIsFalseSig) Clone() builtinFunc { } func (b *builtinIntIsFalseSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - input, isNull, err := b.args[0].EvalInt(b.ctx, row) + input, isNull, err := b.args[0].EvalInt(ctx, row) if err != nil { return 0, true, err } @@ -699,7 +699,7 @@ func (b *builtinBitNegSig) Clone() builtinFunc { } func (b *builtinBitNegSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - arg, isNull, err := b.args[0].EvalInt(b.ctx, row) + arg, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -760,7 +760,7 @@ func (b *builtinUnaryNotRealSig) Clone() builtinFunc { } func (b *builtinUnaryNotRealSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - arg, isNull, err := b.args[0].EvalReal(b.ctx, row) + arg, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return 0, true, err } @@ -781,7 +781,7 @@ func (b *builtinUnaryNotDecimalSig) Clone() builtinFunc { } func (b *builtinUnaryNotDecimalSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - arg, isNull, err := b.args[0].EvalDecimal(b.ctx, row) + arg, isNull, err := b.args[0].EvalDecimal(ctx, row) if isNull || err != nil { return 0, true, err } @@ -802,7 +802,7 @@ func (b *builtinUnaryNotIntSig) Clone() builtinFunc { } func (b *builtinUnaryNotIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - arg, isNull, err := b.args[0].EvalInt(b.ctx, row) + arg, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return 0, true, err } @@ -823,7 +823,7 @@ func (b *builtinUnaryNotJSONSig) Clone() builtinFunc { } func (b *builtinUnaryNotJSONSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - arg, isNull, err := b.args[0].EvalJSON(b.ctx, row) + arg, isNull, err := b.args[0].EvalJSON(ctx, row) if isNull || err != nil { return 0, true, err } @@ -952,7 +952,7 @@ func (b *builtinUnaryMinusIntSig) Clone() builtinFunc { func (b *builtinUnaryMinusIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (res int64, isNull bool, err error) { var val int64 - val, isNull, err = b.args[0].EvalInt(b.ctx, row) + val, isNull, err = b.args[0].EvalInt(ctx, row) if err != nil || isNull { return val, isNull, err } @@ -983,7 +983,7 @@ func (b *builtinUnaryMinusDecimalSig) Clone() builtinFunc { } func (b *builtinUnaryMinusDecimalSig) evalDecimal(ctx sessionctx.Context, row chunk.Row) (*types.MyDecimal, bool, error) { - dec, isNull, err := b.args[0].EvalDecimal(b.ctx, row) + dec, isNull, err := b.args[0].EvalDecimal(ctx, row) if err != nil || isNull { return dec, isNull, err } @@ -1001,7 +1001,7 @@ func (b *builtinUnaryMinusRealSig) Clone() builtinFunc { } func (b *builtinUnaryMinusRealSig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - val, isNull, err := b.args[0].EvalReal(b.ctx, row) + val, isNull, err := b.args[0].EvalReal(ctx, row) return -val, isNull, err } @@ -1071,7 +1071,7 @@ func evalIsNull(isNull bool, err error) (int64, bool, error) { } func (b *builtinDecimalIsNullSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - _, isNull, err := b.args[0].EvalDecimal(b.ctx, row) + _, isNull, err := b.args[0].EvalDecimal(ctx, row) return evalIsNull(isNull, err) } @@ -1086,7 +1086,7 @@ func (b *builtinDurationIsNullSig) Clone() builtinFunc { } func (b *builtinDurationIsNullSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - _, isNull, err := b.args[0].EvalDuration(b.ctx, row) + _, isNull, err := b.args[0].EvalDuration(ctx, row) return evalIsNull(isNull, err) } @@ -1101,7 +1101,7 @@ func (b *builtinIntIsNullSig) Clone() builtinFunc { } func (b *builtinIntIsNullSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - _, isNull, err := b.args[0].EvalInt(b.ctx, row) + _, isNull, err := b.args[0].EvalInt(ctx, row) return evalIsNull(isNull, err) } @@ -1116,7 +1116,7 @@ func (b *builtinRealIsNullSig) Clone() builtinFunc { } func (b *builtinRealIsNullSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - _, isNull, err := b.args[0].EvalReal(b.ctx, row) + _, isNull, err := b.args[0].EvalReal(ctx, row) return evalIsNull(isNull, err) } @@ -1131,7 +1131,7 @@ func (b *builtinStringIsNullSig) Clone() builtinFunc { } func (b *builtinStringIsNullSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - _, isNull, err := b.args[0].EvalString(b.ctx, row) + _, isNull, err := b.args[0].EvalString(ctx, row) return evalIsNull(isNull, err) } @@ -1146,6 +1146,6 @@ func (b *builtinTimeIsNullSig) Clone() builtinFunc { } func (b *builtinTimeIsNullSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - _, isNull, err := b.args[0].EvalTime(b.ctx, row) + _, isNull, err := b.args[0].EvalTime(ctx, row) return evalIsNull(isNull, err) } diff --git a/pkg/expression/builtin_op_test.go b/pkg/expression/builtin_op_test.go index 8bd95fc5ccabe..5a2bc4bae9413 100644 --- a/pkg/expression/builtin_op_test.go +++ b/pkg/expression/builtin_op_test.go @@ -50,7 +50,7 @@ func TestUnary(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, ast.UnaryMinus, primitiveValsToConstants(ctx, []interface{}{c.args})...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if !c.getErr { require.NoError(t, err) if !c.overflow { @@ -109,7 +109,7 @@ func TestLogicAnd(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, ast.LogicAnd, primitiveValsToConstants(ctx, c.args)...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -148,7 +148,7 @@ func TestLeftShift(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, ast.LeftShift, primitiveValsToConstants(ctx, c.args)...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -180,7 +180,7 @@ func TestRightShift(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, ast.RightShift, primitiveValsToConstants(ctx, c.args)...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -219,7 +219,7 @@ func TestBitXor(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, ast.Xor, primitiveValsToConstants(ctx, c.args)...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -265,7 +265,7 @@ func TestBitOr(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, ast.Or, primitiveValsToConstants(ctx, c.args)...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -332,7 +332,7 @@ func TestLogicOr(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, ast.LogicOr, primitiveValsToConstants(ctx, c.args)...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -371,7 +371,7 @@ func TestBitAnd(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, ast.And, primitiveValsToConstants(ctx, c.args)...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -417,7 +417,7 @@ func TestBitNeg(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, ast.BitNeg, primitiveValsToConstants(ctx, c.args)...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -471,7 +471,7 @@ func TestUnaryNot(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, ast.UnaryNot, primitiveValsToConstants(ctx, c.args)...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -642,7 +642,7 @@ func TestLogicXor(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, ast.LogicXor, primitiveValsToConstants(ctx, c.args)...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { diff --git a/pkg/expression/builtin_op_vec.go b/pkg/expression/builtin_op_vec.go index a04d51fafb75b..609738a24d45a 100644 --- a/pkg/expression/builtin_op_vec.go +++ b/pkg/expression/builtin_op_vec.go @@ -36,7 +36,7 @@ func (b *builtinTimeIsNullSig) vecEvalInt(ctx sessionctx.Context, input *chunk.C } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalTime(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf); err != nil { return err } @@ -75,7 +75,7 @@ func (b *builtinLogicOrSig) fallbackEvalInt(ctx sessionctx.Context, input *chunk } func (b *builtinLogicOrSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, result); err != nil { return err } @@ -86,9 +86,9 @@ func (b *builtinLogicOrSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chun } defer b.bufAllocator.put(buf) - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() - err = b.args[1].VecEvalInt(b.ctx, input, buf) + err = b.args[1].VecEvalInt(ctx, input, buf) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -128,7 +128,7 @@ func (b *builtinBitOrSig) vectorized() bool { } func (b *builtinBitOrSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, result); err != nil { return err } numRows := input.NumRows() @@ -137,7 +137,7 @@ func (b *builtinBitOrSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, return err } defer b.bufAllocator.put(buf) - if err := b.args[1].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf); err != nil { return err } arg0s := result.Int64s() @@ -161,7 +161,7 @@ func (b *builtinDecimalIsFalseSig) vecEvalInt(ctx sessionctx.Context, input *chu return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalDecimal(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, buf); err != nil { return err } @@ -190,7 +190,7 @@ func (b *builtinIntIsFalseSig) vectorized() bool { func (b *builtinIntIsFalseSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { numRows := input.NumRows() - if err := b.args[0].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, result); err != nil { return err } i64s := result.Int64s() @@ -217,7 +217,7 @@ func (b *builtinUnaryMinusRealSig) vectorized() bool { func (b *builtinUnaryMinusRealSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { var err error - if err = b.args[0].VecEvalReal(b.ctx, input, result); err != nil { + if err = b.args[0].VecEvalReal(ctx, input, result); err != nil { return err } @@ -234,7 +234,7 @@ func (b *builtinBitNegSig) vectorized() bool { } func (b *builtinBitNegSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, result); err != nil { return err } n := input.NumRows() @@ -250,7 +250,7 @@ func (b *builtinUnaryMinusDecimalSig) vectorized() bool { } func (b *builtinUnaryMinusDecimalSig) vecEvalDecimal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalDecimal(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, result); err != nil { return err } @@ -270,7 +270,7 @@ func (b *builtinIntIsNullSig) vectorized() bool { } func (b *builtinIntIsNullSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, result); err != nil { return err } @@ -298,7 +298,7 @@ func (b *builtinRealIsNullSig) vecEvalInt(ctx sessionctx.Context, input *chunk.C } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalReal(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, buf); err != nil { return err } @@ -325,7 +325,7 @@ func (b *builtinUnaryNotRealSig) vecEvalInt(ctx sessionctx.Context, input *chunk return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalReal(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, buf); err != nil { return err } f64s := buf.Float64s() @@ -371,7 +371,7 @@ func (b *builtinLogicAndSig) fallbackEvalInt(ctx sessionctx.Context, input *chun func (b *builtinLogicAndSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - if err := b.args[0].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, result); err != nil { return err } @@ -381,9 +381,9 @@ func (b *builtinLogicAndSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chu } defer b.bufAllocator.put(buf1) - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() - err = b.args[1].VecEvalInt(b.ctx, input, buf1) + err = b.args[1].VecEvalInt(ctx, input, buf1) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -425,7 +425,7 @@ func (b *builtinBitXorSig) vectorized() bool { } func (b *builtinBitXorSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, result); err != nil { return err } numRows := input.NumRows() @@ -434,7 +434,7 @@ func (b *builtinBitXorSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf) - if err := b.args[1].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf); err != nil { return err } arg0s := result.Int64s() @@ -451,7 +451,7 @@ func (b *builtinLogicXorSig) vectorized() bool { } func (b *builtinLogicXorSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, result); err != nil { return err } @@ -461,7 +461,7 @@ func (b *builtinLogicXorSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chu return err } defer b.bufAllocator.put(buf) - if err := b.args[1].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf); err != nil { return err } @@ -490,7 +490,7 @@ func (b *builtinBitAndSig) vectorized() bool { } func (b *builtinBitAndSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, result); err != nil { return err } numRows := input.NumRows() @@ -499,7 +499,7 @@ func (b *builtinBitAndSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf) - if err := b.args[1].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf); err != nil { return err } arg0s := result.Int64s() @@ -522,7 +522,7 @@ func (b *builtinRealIsFalseSig) vecEvalInt(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalReal(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, buf); err != nil { return err } @@ -549,7 +549,7 @@ func (b *builtinUnaryMinusIntSig) vectorized() bool { } func (b *builtinUnaryMinusIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, result); err != nil { return err } n := input.NumRows() @@ -589,7 +589,7 @@ func (b *builtinUnaryNotDecimalSig) vecEvalInt(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalDecimal(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, buf); err != nil { return err } decs := buf.Decimals() @@ -616,7 +616,7 @@ func (b *builtinUnaryNotIntSig) vectorized() bool { func (b *builtinUnaryNotIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - if err := b.args[0].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, result); err != nil { return err } @@ -646,7 +646,7 @@ func (b *builtinDecimalIsNullSig) vecEvalInt(ctx sessionctx.Context, input *chun } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalDecimal(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, buf); err != nil { return err } @@ -667,7 +667,7 @@ func (b *builtinLeftShiftSig) vectorized() bool { } func (b *builtinLeftShiftSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, result); err != nil { return err } numRows := input.NumRows() @@ -676,7 +676,7 @@ func (b *builtinLeftShiftSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf) - if err := b.args[1].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf); err != nil { return err } arg0s := result.Int64s() @@ -693,7 +693,7 @@ func (b *builtinRightShiftSig) vectorized() bool { } func (b *builtinRightShiftSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, result); err != nil { return err } numRows := input.NumRows() @@ -702,7 +702,7 @@ func (b *builtinRightShiftSig) vecEvalInt(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(buf) - if err := b.args[1].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf); err != nil { return err } arg0s := result.Int64s() @@ -726,7 +726,7 @@ func (b *builtinRealIsTrueSig) vecEvalInt(ctx sessionctx.Context, input *chunk.C } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalReal(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, buf); err != nil { return err } result.ResizeInt64(numRows, false) @@ -758,7 +758,7 @@ func (b *builtinDecimalIsTrueSig) vecEvalInt(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalDecimal(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, buf); err != nil { return err } @@ -787,7 +787,7 @@ func (b *builtinIntIsTrueSig) vectorized() bool { func (b *builtinIntIsTrueSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { numRows := input.NumRows() - if err := b.args[0].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, result); err != nil { return err } i64s := result.Int64s() @@ -818,7 +818,7 @@ func (b *builtinDurationIsNullSig) vecEvalInt(ctx sessionctx.Context, input *chu } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalDuration(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalDuration(ctx, input, buf); err != nil { return err } diff --git a/pkg/expression/builtin_other.go b/pkg/expression/builtin_other.go index f340a5dd4ab18..2f46eafc4c6bd 100644 --- a/pkg/expression/builtin_other.go +++ b/pkg/expression/builtin_other.go @@ -197,7 +197,7 @@ func (b *builtinInIntSig) buildHashMapForConstArgs(ctx sessionctx.Context) error b.nonConstArgsIdx = make([]int, 0) b.hashSet = make(map[int64]bool, len(b.args)-1) for i := 1; i < len(b.args); i++ { - if b.args[i].ConstItem(b.ctx.GetSessionVars().StmtCtx) { + if b.args[i].ConstItem(ctx.GetSessionVars().StmtCtx) { val, isNull, err := b.args[i].EvalInt(ctx, chunk.Row{}) if err != nil { return err @@ -225,7 +225,7 @@ func (b *builtinInIntSig) Clone() builtinFunc { } func (b *builtinInIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - arg0, isNull0, err := b.args[0].EvalInt(b.ctx, row) + arg0, isNull0, err := b.args[0].EvalInt(ctx, row) if isNull0 || err != nil { return 0, isNull0, err } @@ -249,7 +249,7 @@ func (b *builtinInIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, hasNull := b.hasNull for _, arg := range args { - evaledArg, isNull, err := arg.EvalInt(b.ctx, row) + evaledArg, isNull, err := arg.EvalInt(ctx, row) if err != nil { return 0, true, err } @@ -290,7 +290,7 @@ func (b *builtinInStringSig) buildHashMapForConstArgs(ctx sessionctx.Context) er b.hashSet = set.NewStringSet() collator := collate.GetCollator(b.collation) for i := 1; i < len(b.args); i++ { - if b.args[i].ConstItem(b.ctx.GetSessionVars().StmtCtx) { + if b.args[i].ConstItem(ctx.GetSessionVars().StmtCtx) { val, isNull, err := b.args[i].EvalString(ctx, chunk.Row{}) if err != nil { return err @@ -319,7 +319,7 @@ func (b *builtinInStringSig) Clone() builtinFunc { } func (b *builtinInStringSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - arg0, isNull0, err := b.args[0].EvalString(b.ctx, row) + arg0, isNull0, err := b.args[0].EvalString(ctx, row) if isNull0 || err != nil { return 0, isNull0, err } @@ -338,7 +338,7 @@ func (b *builtinInStringSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int hasNull := b.hasNull for _, arg := range args { - evaledArg, isNull, err := arg.EvalString(b.ctx, row) + evaledArg, isNull, err := arg.EvalString(ctx, row) if err != nil { return 0, true, err } @@ -363,7 +363,7 @@ func (b *builtinInRealSig) buildHashMapForConstArgs(ctx sessionctx.Context) erro b.nonConstArgsIdx = make([]int, 0) b.hashSet = set.NewFloat64Set() for i := 1; i < len(b.args); i++ { - if b.args[i].ConstItem(b.ctx.GetSessionVars().StmtCtx) { + if b.args[i].ConstItem(ctx.GetSessionVars().StmtCtx) { val, isNull, err := b.args[i].EvalReal(ctx, chunk.Row{}) if err != nil { return err @@ -392,7 +392,7 @@ func (b *builtinInRealSig) Clone() builtinFunc { } func (b *builtinInRealSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - arg0, isNull0, err := b.args[0].EvalReal(b.ctx, row) + arg0, isNull0, err := b.args[0].EvalReal(ctx, row) if isNull0 || err != nil { return 0, isNull0, err } @@ -409,7 +409,7 @@ func (b *builtinInRealSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64 hasNull := b.hasNull for _, arg := range args { - evaledArg, isNull, err := arg.EvalReal(b.ctx, row) + evaledArg, isNull, err := arg.EvalReal(ctx, row) if err != nil { return 0, true, err } @@ -434,7 +434,7 @@ func (b *builtinInDecimalSig) buildHashMapForConstArgs(ctx sessionctx.Context) e b.nonConstArgsIdx = make([]int, 0) b.hashSet = set.NewStringSet() for i := 1; i < len(b.args); i++ { - if b.args[i].ConstItem(b.ctx.GetSessionVars().StmtCtx) { + if b.args[i].ConstItem(ctx.GetSessionVars().StmtCtx) { val, isNull, err := b.args[i].EvalDecimal(ctx, chunk.Row{}) if err != nil { return err @@ -467,7 +467,7 @@ func (b *builtinInDecimalSig) Clone() builtinFunc { } func (b *builtinInDecimalSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - arg0, isNull0, err := b.args[0].EvalDecimal(b.ctx, row) + arg0, isNull0, err := b.args[0].EvalDecimal(ctx, row) if isNull0 || err != nil { return 0, isNull0, err } @@ -489,7 +489,7 @@ func (b *builtinInDecimalSig) evalInt(ctx sessionctx.Context, row chunk.Row) (in hasNull := b.hasNull for _, arg := range args { - evaledArg, isNull, err := arg.EvalDecimal(b.ctx, row) + evaledArg, isNull, err := arg.EvalDecimal(ctx, row) if err != nil { return 0, true, err } @@ -514,7 +514,7 @@ func (b *builtinInTimeSig) buildHashMapForConstArgs(ctx sessionctx.Context) erro b.nonConstArgsIdx = make([]int, 0) b.hashSet = make(map[types.CoreTime]struct{}, len(b.args)-1) for i := 1; i < len(b.args); i++ { - if b.args[i].ConstItem(b.ctx.GetSessionVars().StmtCtx) { + if b.args[i].ConstItem(ctx.GetSessionVars().StmtCtx) { val, isNull, err := b.args[i].EvalTime(ctx, chunk.Row{}) if err != nil { return err @@ -543,7 +543,7 @@ func (b *builtinInTimeSig) Clone() builtinFunc { } func (b *builtinInTimeSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - arg0, isNull0, err := b.args[0].EvalTime(b.ctx, row) + arg0, isNull0, err := b.args[0].EvalTime(ctx, row) if isNull0 || err != nil { return 0, isNull0, err } @@ -560,7 +560,7 @@ func (b *builtinInTimeSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64 hasNull := b.hasNull for _, arg := range args { - evaledArg, isNull, err := arg.EvalTime(b.ctx, row) + evaledArg, isNull, err := arg.EvalTime(ctx, row) if err != nil { return 0, true, err } @@ -585,7 +585,7 @@ func (b *builtinInDurationSig) buildHashMapForConstArgs(ctx sessionctx.Context) b.nonConstArgsIdx = make([]int, 0) b.hashSet = make(map[time.Duration]struct{}, len(b.args)-1) for i := 1; i < len(b.args); i++ { - if b.args[i].ConstItem(b.ctx.GetSessionVars().StmtCtx) { + if b.args[i].ConstItem(ctx.GetSessionVars().StmtCtx) { val, isNull, err := b.args[i].EvalDuration(ctx, chunk.Row{}) if err != nil { return err @@ -614,7 +614,7 @@ func (b *builtinInDurationSig) Clone() builtinFunc { } func (b *builtinInDurationSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - arg0, isNull0, err := b.args[0].EvalDuration(b.ctx, row) + arg0, isNull0, err := b.args[0].EvalDuration(ctx, row) if isNull0 || err != nil { return 0, isNull0, err } @@ -631,7 +631,7 @@ func (b *builtinInDurationSig) evalInt(ctx sessionctx.Context, row chunk.Row) (i hasNull := b.hasNull for _, arg := range args { - evaledArg, isNull, err := arg.EvalDuration(b.ctx, row) + evaledArg, isNull, err := arg.EvalDuration(ctx, row) if err != nil { return 0, true, err } @@ -658,13 +658,13 @@ func (b *builtinInJSONSig) Clone() builtinFunc { } func (b *builtinInJSONSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - arg0, isNull0, err := b.args[0].EvalJSON(b.ctx, row) + arg0, isNull0, err := b.args[0].EvalJSON(ctx, row) if isNull0 || err != nil { return 0, isNull0, err } var hasNull bool for _, arg := range b.args[1:] { - evaledArg, isNull, err := arg.EvalJSON(b.ctx, row) + evaledArg, isNull, err := arg.EvalJSON(ctx, row) if err != nil { return 0, true, err } @@ -761,12 +761,12 @@ func (b *builtinSetStringVarSig) Clone() builtinFunc { func (b *builtinSetStringVarSig) evalString(ctx sessionctx.Context, row chunk.Row) (res string, isNull bool, err error) { var varName string - sessionVars := b.ctx.GetSessionVars() - varName, isNull, err = b.args[0].EvalString(b.ctx, row) + sessionVars := ctx.GetSessionVars() + varName, isNull, err = b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", isNull, err } - datum, err := b.args[1].Eval(row) + datum, err := b.args[1].Eval(ctx, row) isNull = datum.IsNull() if isNull || err != nil { return "", isNull, err @@ -791,12 +791,12 @@ func (b *builtinSetRealVarSig) Clone() builtinFunc { func (b *builtinSetRealVarSig) evalReal(ctx sessionctx.Context, row chunk.Row) (res float64, isNull bool, err error) { var varName string - sessionVars := b.ctx.GetSessionVars() - varName, isNull, err = b.args[0].EvalString(b.ctx, row) + sessionVars := ctx.GetSessionVars() + varName, isNull, err = b.args[0].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } - datum, err := b.args[1].Eval(row) + datum, err := b.args[1].Eval(ctx, row) isNull = datum.IsNull() if isNull || err != nil { return 0, isNull, err @@ -818,12 +818,12 @@ func (b *builtinSetDecimalVarSig) Clone() builtinFunc { } func (b *builtinSetDecimalVarSig) evalDecimal(ctx sessionctx.Context, row chunk.Row) (*types.MyDecimal, bool, error) { - sessionVars := b.ctx.GetSessionVars() - varName, isNull, err := b.args[0].EvalString(b.ctx, row) + sessionVars := ctx.GetSessionVars() + varName, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return nil, isNull, err } - datum, err := b.args[1].Eval(row) + datum, err := b.args[1].Eval(ctx, row) isNull = datum.IsNull() if isNull || err != nil { return nil, isNull, err @@ -845,12 +845,12 @@ func (b *builtinSetIntVarSig) Clone() builtinFunc { } func (b *builtinSetIntVarSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - sessionVars := b.ctx.GetSessionVars() - varName, isNull, err := b.args[0].EvalString(b.ctx, row) + sessionVars := ctx.GetSessionVars() + varName, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } - datum, err := b.args[1].Eval(row) + datum, err := b.args[1].Eval(ctx, row) isNull = datum.IsNull() if isNull || err != nil { return 0, isNull, err @@ -872,14 +872,14 @@ func (b *builtinSetTimeVarSig) Clone() builtinFunc { } func (b *builtinSetTimeVarSig) evalTime(ctx sessionctx.Context, row chunk.Row) (types.Time, bool, error) { - sessionVars := b.ctx.GetSessionVars() - varName, isNull, err := b.args[0].EvalString(b.ctx, row) + sessionVars := ctx.GetSessionVars() + varName, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return types.ZeroTime, isNull, err } - datum, err := b.args[1].Eval(row) + datum, err := b.args[1].Eval(ctx, row) if err != nil || datum.IsNull() { - return types.ZeroTime, datum.IsNull(), handleInvalidTimeError(b.ctx, err) + return types.ZeroTime, datum.IsNull(), handleInvalidTimeError(ctx, err) } res := datum.GetMysqlTime() varName = strings.ToLower(varName) @@ -913,6 +913,7 @@ func BuildGetVarFunction(ctx sessionctx.Context, expr Expression, retType *types FuncName: model.NewCIStr(ast.GetVar), RetType: retType, Function: f, + ctx: ctx, }, nil } @@ -954,8 +955,8 @@ func (b *builtinGetStringVarSig) Clone() builtinFunc { } func (b *builtinGetStringVarSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - sessionVars := b.ctx.GetSessionVars() - varName, isNull, err := b.args[0].EvalString(b.ctx, row) + sessionVars := ctx.GetSessionVars() + varName, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", isNull, err } @@ -1006,8 +1007,8 @@ func (b *builtinGetIntVarSig) Clone() builtinFunc { } func (b *builtinGetIntVarSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - sessionVars := b.ctx.GetSessionVars() - varName, isNull, err := b.args[0].EvalString(b.ctx, row) + sessionVars := ctx.GetSessionVars() + varName, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -1046,8 +1047,8 @@ func (b *builtinGetRealVarSig) Clone() builtinFunc { } func (b *builtinGetRealVarSig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - sessionVars := b.ctx.GetSessionVars() - varName, isNull, err := b.args[0].EvalString(b.ctx, row) + sessionVars := ctx.GetSessionVars() + varName, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -1086,8 +1087,8 @@ func (b *builtinGetDecimalVarSig) Clone() builtinFunc { } func (b *builtinGetDecimalVarSig) evalDecimal(ctx sessionctx.Context, row chunk.Row) (*types.MyDecimal, bool, error) { - sessionVars := b.ctx.GetSessionVars() - varName, isNull, err := b.args[0].EvalString(b.ctx, row) + sessionVars := ctx.GetSessionVars() + varName, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return nil, isNull, err } @@ -1134,8 +1135,8 @@ func (b *builtinGetTimeVarSig) Clone() builtinFunc { } func (b *builtinGetTimeVarSig) evalTime(ctx sessionctx.Context, row chunk.Row) (types.Time, bool, error) { - sessionVars := b.ctx.GetSessionVars() - varName, isNull, err := b.args[0].EvalString(b.ctx, row) + sessionVars := ctx.GetSessionVars() + varName, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return types.ZeroTime, isNull, err } @@ -1195,7 +1196,7 @@ func (b *builtinValuesIntSig) Clone() builtinFunc { // evalInt evals a builtinValuesIntSig. // See https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_values func (b *builtinValuesIntSig) evalInt(ctx sessionctx.Context, _ chunk.Row) (int64, bool, error) { - row := b.ctx.GetSessionVars().CurrInsertValues + row := ctx.GetSessionVars().CurrInsertValues if row.IsEmpty() { return 0, true, nil } @@ -1210,7 +1211,7 @@ func (b *builtinValuesIntSig) evalInt(ctx sessionctx.Context, _ chunk.Row) (int6 } if len(val) < 8 { var binary types.BinaryLiteral = val - v, err := binary.ToInt(b.ctx.GetSessionVars().StmtCtx.TypeCtx()) + v, err := binary.ToInt(ctx.GetSessionVars().StmtCtx.TypeCtx()) if err != nil { return 0, true, errors.Trace(err) } @@ -1236,7 +1237,7 @@ func (b *builtinValuesRealSig) Clone() builtinFunc { // evalReal evals a builtinValuesRealSig. // See https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_values func (b *builtinValuesRealSig) evalReal(ctx sessionctx.Context, _ chunk.Row) (float64, bool, error) { - row := b.ctx.GetSessionVars().CurrInsertValues + row := ctx.GetSessionVars().CurrInsertValues if row.IsEmpty() { return 0, true, nil } @@ -1267,7 +1268,7 @@ func (b *builtinValuesDecimalSig) Clone() builtinFunc { // evalDecimal evals a builtinValuesDecimalSig. // See https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_values func (b *builtinValuesDecimalSig) evalDecimal(ctx sessionctx.Context, _ chunk.Row) (*types.MyDecimal, bool, error) { - row := b.ctx.GetSessionVars().CurrInsertValues + row := ctx.GetSessionVars().CurrInsertValues if row.IsEmpty() { return &types.MyDecimal{}, true, nil } @@ -1295,7 +1296,7 @@ func (b *builtinValuesStringSig) Clone() builtinFunc { // evalString evals a builtinValuesStringSig. // See https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_values func (b *builtinValuesStringSig) evalString(ctx sessionctx.Context, _ chunk.Row) (string, bool, error) { - row := b.ctx.GetSessionVars().CurrInsertValues + row := ctx.GetSessionVars().CurrInsertValues if row.IsEmpty() { return "", true, nil } @@ -1332,7 +1333,7 @@ func (b *builtinValuesTimeSig) Clone() builtinFunc { // evalTime evals a builtinValuesTimeSig. // See https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_values func (b *builtinValuesTimeSig) evalTime(ctx sessionctx.Context, _ chunk.Row) (types.Time, bool, error) { - row := b.ctx.GetSessionVars().CurrInsertValues + row := ctx.GetSessionVars().CurrInsertValues if row.IsEmpty() { return types.ZeroTime, true, nil } @@ -1360,7 +1361,7 @@ func (b *builtinValuesDurationSig) Clone() builtinFunc { // evalDuration evals a builtinValuesDurationSig. // See https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_values func (b *builtinValuesDurationSig) evalDuration(ctx sessionctx.Context, _ chunk.Row) (types.Duration, bool, error) { - row := b.ctx.GetSessionVars().CurrInsertValues + row := ctx.GetSessionVars().CurrInsertValues if row.IsEmpty() { return types.Duration{}, true, nil } @@ -1389,7 +1390,7 @@ func (b *builtinValuesJSONSig) Clone() builtinFunc { // evalJSON evals a builtinValuesJSONSig. // See https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_values func (b *builtinValuesJSONSig) evalJSON(ctx sessionctx.Context, _ chunk.Row) (types.BinaryJSON, bool, error) { - row := b.ctx.GetSessionVars().CurrInsertValues + row := ctx.GetSessionVars().CurrInsertValues if row.IsEmpty() { return types.BinaryJSON{}, true, nil } @@ -1432,7 +1433,7 @@ func (b *builtinBitCountSig) Clone() builtinFunc { // evalInt evals BIT_COUNT(N). // See https://dev.mysql.com/doc/refman/5.7/en/bit-functions.html#function_bit-count func (b *builtinBitCountSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - n, isNull, err := b.args[0].EvalInt(b.ctx, row) + n, isNull, err := b.args[0].EvalInt(ctx, row) if err != nil || isNull { if err != nil && types.ErrOverflow.Equal(err) { return 64, false, nil @@ -1473,8 +1474,8 @@ func (b *builtinGetParamStringSig) Clone() builtinFunc { } func (b *builtinGetParamStringSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - sessionVars := b.ctx.GetSessionVars() - idx, isNull, err := b.args[0].EvalInt(b.ctx, row) + sessionVars := ctx.GetSessionVars() + idx, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return "", isNull, err } diff --git a/pkg/expression/builtin_other_test.go b/pkg/expression/builtin_other_test.go index ede62c9767adb..12e36e7220fe1 100644 --- a/pkg/expression/builtin_other_test.go +++ b/pkg/expression/builtin_other_test.go @@ -163,7 +163,7 @@ func TestGetVar(t *testing.T) { } fn, err := BuildGetVarFunction(ctx, datumsToConstants(types.MakeDatums(tc.args...))[0], tp) require.NoError(t, err) - d, err := fn.Eval(chunk.Row{}) + d, err := fn.Eval(ctx, chunk.Row{}) require.NoError(t, err) require.Equal(t, tc.res, d.GetValue()) } diff --git a/pkg/expression/builtin_other_vec.go b/pkg/expression/builtin_other_vec.go index 5ca3e32cde80c..9e8a22bfcdabe 100644 --- a/pkg/expression/builtin_other_vec.go +++ b/pkg/expression/builtin_other_vec.go @@ -96,7 +96,7 @@ func (b *builtinBitCountSig) vectorized() bool { } func (b *builtinBitCountSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - if err := b.args[0].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, result); err != nil { if types.ErrOverflow.Equal(err) { result.ResizeInt64(n, false) i64s := result.Int64s() @@ -127,14 +127,14 @@ func (b *builtinGetParamStringSig) vectorized() bool { } func (b *builtinGetParamStringSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - sessionVars := b.ctx.GetSessionVars() + sessionVars := ctx.GetSessionVars() n := input.NumRows() idx, err := b.bufAllocator.get() if err != nil { return err } defer b.bufAllocator.put(idx) - if err := b.args[0].VecEvalInt(b.ctx, input, idx); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, idx); err != nil { return err } idxIs := idx.Int64s() @@ -167,7 +167,7 @@ func (b *builtinSetStringVarSig) vecEvalString(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalString(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -175,11 +175,11 @@ func (b *builtinSetStringVarSig) vecEvalString(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } result.ReserveString(n) - sessionVars := b.ctx.GetSessionVars() + sessionVars := ctx.GetSessionVars() _, collation := sessionVars.GetCharsetInfo() for i := 0; i < n; i++ { if buf0.IsNull(i) || buf1.IsNull(i) { @@ -205,7 +205,7 @@ func (b *builtinSetIntVarSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalString(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -213,12 +213,12 @@ func (b *builtinSetIntVarSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalInt(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf1); err != nil { return err } result.ResizeInt64(n, false) i64s := result.Int64s() - sessionVars := b.ctx.GetSessionVars() + sessionVars := ctx.GetSessionVars() for i := 0; i < n; i++ { if buf0.IsNull(i) || buf1.IsNull(i) { result.SetNull(i, true) @@ -243,7 +243,7 @@ func (b *builtinSetRealVarSig) vecEvalReal(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalString(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -251,12 +251,12 @@ func (b *builtinSetRealVarSig) vecEvalReal(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalReal(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalReal(ctx, input, buf1); err != nil { return err } result.ResizeFloat64(n, false) f64s := result.Float64s() - sessionVars := b.ctx.GetSessionVars() + sessionVars := ctx.GetSessionVars() for i := 0; i < n; i++ { if buf0.IsNull(i) || buf1.IsNull(i) { result.SetNull(i, true) @@ -281,7 +281,7 @@ func (b *builtinSetDecimalVarSig) vecEvalDecimal(ctx sessionctx.Context, input * return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalString(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -289,12 +289,12 @@ func (b *builtinSetDecimalVarSig) vecEvalDecimal(ctx sessionctx.Context, input * return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalDecimal(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalDecimal(ctx, input, buf1); err != nil { return err } result.ResizeDecimal(n, false) decs := result.Decimals() - sessionVars := b.ctx.GetSessionVars() + sessionVars := ctx.GetSessionVars() for i := 0; i < n; i++ { if buf0.IsNull(i) || buf1.IsNull(i) { result.SetNull(i, true) @@ -327,11 +327,11 @@ func (b *builtinGetStringVarSig) vecEvalString(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalString(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf0); err != nil { return err } result.ReserveString(n) - sessionVars := b.ctx.GetSessionVars() + sessionVars := ctx.GetSessionVars() for i := 0; i < n; i++ { if buf0.IsNull(i) { result.AppendNull() @@ -362,13 +362,13 @@ func (b *builtinGetIntVarSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalString(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf0); err != nil { return err } result.ResizeInt64(n, false) result.MergeNulls(buf0) i64s := result.Int64s() - sessionVars := b.ctx.GetSessionVars() + sessionVars := ctx.GetSessionVars() for i := 0; i < n; i++ { if result.IsNull(i) { continue @@ -394,13 +394,13 @@ func (b *builtinGetRealVarSig) vecEvalReal(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalString(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf0); err != nil { return err } result.ResizeFloat64(n, false) result.MergeNulls(buf0) f64s := result.Float64s() - sessionVars := b.ctx.GetSessionVars() + sessionVars := ctx.GetSessionVars() for i := 0; i < n; i++ { if result.IsNull(i) { continue @@ -426,13 +426,13 @@ func (b *builtinGetDecimalVarSig) vecEvalDecimal(ctx sessionctx.Context, input * return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalString(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf0); err != nil { return err } result.ResizeDecimal(n, false) result.MergeNulls(buf0) decs := result.Decimals() - sessionVars := b.ctx.GetSessionVars() + sessionVars := ctx.GetSessionVars() for i := 0; i < n; i++ { if result.IsNull(i) { continue diff --git a/pkg/expression/builtin_other_vec_generated.go b/pkg/expression/builtin_other_vec_generated.go index 9737c5c34d89b..c0e8920cb29db 100644 --- a/pkg/expression/builtin_other_vec_generated.go +++ b/pkg/expression/builtin_other_vec_generated.go @@ -33,7 +33,7 @@ func (b *builtinInIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalInt(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -82,7 +82,7 @@ func (b *builtinInIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, } for j := 0; j < len(args); j++ { - if err := args[j].VecEvalInt(b.ctx, input, buf1); err != nil { + if err := args[j].VecEvalInt(ctx, input, buf1); err != nil { return err } isUnsigned := mysql.HasUnsignedFlag(args[j].GetType().GetFlag()) @@ -138,7 +138,7 @@ func (b *builtinInStringSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chu return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalString(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -180,7 +180,7 @@ func (b *builtinInStringSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chu } for j := 0; j < len(args); j++ { - if err := args[j].VecEvalString(b.ctx, input, buf1); err != nil { + if err := args[j].VecEvalString(ctx, input, buf1); err != nil { return err } for i := 0; i < n; i++ { @@ -219,7 +219,7 @@ func (b *builtinInDecimalSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalDecimal(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -265,7 +265,7 @@ func (b *builtinInDecimalSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch } for j := 0; j < len(args); j++ { - if err := args[j].VecEvalDecimal(b.ctx, input, buf1); err != nil { + if err := args[j].VecEvalDecimal(ctx, input, buf1); err != nil { return err } args1 := buf1.Decimals() @@ -309,7 +309,7 @@ func (b *builtinInRealSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalReal(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -351,7 +351,7 @@ func (b *builtinInRealSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk } for j := 0; j < len(args); j++ { - if err := args[j].VecEvalReal(b.ctx, input, buf1); err != nil { + if err := args[j].VecEvalReal(ctx, input, buf1); err != nil { return err } args1 := buf1.Float64s() @@ -392,7 +392,7 @@ func (b *builtinInTimeSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalTime(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -434,7 +434,7 @@ func (b *builtinInTimeSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk } for j := 0; j < len(args); j++ { - if err := args[j].VecEvalTime(b.ctx, input, buf1); err != nil { + if err := args[j].VecEvalTime(ctx, input, buf1); err != nil { return err } args1 := buf1.Times() @@ -475,7 +475,7 @@ func (b *builtinInDurationSig) vecEvalInt(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalDuration(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalDuration(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -517,7 +517,7 @@ func (b *builtinInDurationSig) vecEvalInt(ctx sessionctx.Context, input *chunk.C } for j := 0; j < len(args); j++ { - if err := args[j].VecEvalDuration(b.ctx, input, buf1); err != nil { + if err := args[j].VecEvalDuration(ctx, input, buf1); err != nil { return err } args1 := buf1.GoDurations() @@ -558,7 +558,7 @@ func (b *builtinInJSONSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalJSON(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalJSON(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -577,7 +577,7 @@ func (b *builtinInJSONSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk args := b.args[1:] for j := 0; j < len(args); j++ { - if err := args[j].VecEvalJSON(b.ctx, input, buf1); err != nil { + if err := args[j].VecEvalJSON(ctx, input, buf1); err != nil { return err } for i := 0; i < n; i++ { diff --git a/pkg/expression/builtin_regexp.go b/pkg/expression/builtin_regexp.go index 32eb46840b2ab..457e0f2bf07e0 100644 --- a/pkg/expression/builtin_regexp.go +++ b/pkg/expression/builtin_regexp.go @@ -164,8 +164,8 @@ func (re *regexpBaseFuncSig) genRegexp(pat string, matchType string) (*regexp.Re // 2. pattern is const and there is no match type argument // // return true: need, false: needless -func (re *regexpBaseFuncSig) canMemorize(matchTypeIdx int) bool { - return re.args[patternIdx].ConstItem(re.ctx.GetSessionVars().StmtCtx) && (len(re.args) <= matchTypeIdx || re.args[matchTypeIdx].ConstItem(re.ctx.GetSessionVars().StmtCtx)) +func (re *regexpBaseFuncSig) canMemorize(ctx sessionctx.Context, matchTypeIdx int) bool { + return re.args[patternIdx].ConstItem(ctx.GetSessionVars().StmtCtx) && (len(re.args) <= matchTypeIdx || re.args[matchTypeIdx].ConstItem(ctx.GetSessionVars().StmtCtx)) } func (re *regexpBaseFuncSig) initMemoizedRegexp(params []*funcParam, matchTypeIdx int) error { @@ -189,9 +189,9 @@ func (re *regexpBaseFuncSig) initMemoizedRegexp(params []*funcParam, matchTypeId // As multiple threads may memorize regexp and cause data race, only the first thread // who gets the lock is permitted to do the memorization and others should wait for him // until the memorization has been finished. -func (re *regexpBaseFuncSig) tryToMemorize(params []*funcParam, matchTypeIdx int, n int) error { +func (re *regexpBaseFuncSig) tryToMemorize(ctx sessionctx.Context, params []*funcParam, matchTypeIdx int, n int) error { // Check memorization - if n == 0 || !re.canMemorize(matchTypeIdx) { + if n == 0 || !re.canMemorize(ctx, matchTypeIdx) { return nil } @@ -255,12 +255,12 @@ func (re *builtinRegexpLikeFuncSig) vectorized() bool { } func (re *builtinRegexpLikeFuncSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - expr, isNull, err := re.args[0].EvalString(re.ctx, row) + expr, isNull, err := re.args[0].EvalString(ctx, row) if isNull || err != nil { return 0, true, err } - pat, isNull, err := re.args[1].EvalString(re.ctx, row) + pat, isNull, err := re.args[1].EvalString(ctx, row) if isNull || err != nil { return 0, true, err } else if len(pat) == 0 { @@ -269,7 +269,7 @@ func (re *builtinRegexpLikeFuncSig) evalInt(ctx sessionctx.Context, row chunk.Ro matchType := "" if len(re.args) == 3 { - matchType, isNull, err = re.args[2].EvalString(re.ctx, row) + matchType, isNull, err = re.args[2].EvalString(ctx, row) if isNull || err != nil { return 0, true, err } @@ -284,7 +284,7 @@ func (re *builtinRegexpLikeFuncSig) evalInt(ctx sessionctx.Context, row chunk.Ro re.memorize(compile, pat) } - if re.canMemorize(regexpLikeMatchTypeIdx) { + if re.canMemorize(ctx, regexpLikeMatchTypeIdx) { re.once.Do(memorize) // Avoid data race } @@ -314,7 +314,7 @@ func (re *builtinRegexpLikeFuncSig) vecEvalInt(ctx sessionctx.Context, input *ch defer releaseBuffers(&re.baseBuiltinFunc, params) for i := 0; i < 2; i++ { - param, isConstNull, err := buildStringParam(&re.baseBuiltinFunc, i, input, false) + param, isConstNull, err := buildStringParam(ctx, &re.baseBuiltinFunc, i, input, false) if err != nil { return ErrRegexp.GenWithStackByArgs(err) } @@ -327,7 +327,7 @@ func (re *builtinRegexpLikeFuncSig) vecEvalInt(ctx sessionctx.Context, input *ch // user may ignore match type parameter hasMatchType := (len(re.args) == 3) - param, isConstNull, err := buildStringParam(&re.baseBuiltinFunc, 2, input, !hasMatchType) + param, isConstNull, err := buildStringParam(ctx, &re.baseBuiltinFunc, 2, input, !hasMatchType) params = append(params, param) if err != nil { return ErrRegexp.GenWithStackByArgs(err) @@ -338,7 +338,7 @@ func (re *builtinRegexpLikeFuncSig) vecEvalInt(ctx sessionctx.Context, input *ch return nil } - err = re.tryToMemorize(params, regexpLikeMatchTypeIdx, n) + err = re.tryToMemorize(ctx, params, regexpLikeMatchTypeIdx, n) if err != nil { return err } @@ -434,12 +434,12 @@ func (re *builtinRegexpSubstrFuncSig) findBinString(reg *regexp.Regexp, bexpr [] } func (re *builtinRegexpSubstrFuncSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - expr, isNull, err := re.args[0].EvalString(re.ctx, row) + expr, isNull, err := re.args[0].EvalString(ctx, row) if isNull || err != nil { return "", true, err } - pat, isNull, err := re.args[1].EvalString(re.ctx, row) + pat, isNull, err := re.args[1].EvalString(ctx, row) if isNull || err != nil { return "", true, err } else if len(pat) == 0 { @@ -456,7 +456,7 @@ func (re *builtinRegexpSubstrFuncSig) evalString(ctx sessionctx.Context, row chu } if argNum >= 3 { - pos, isNull, err := re.args[2].EvalInt(re.ctx, row) + pos, isNull, err := re.args[2].EvalInt(ctx, row) if isNull || err != nil { return "", true, err } @@ -482,7 +482,7 @@ func (re *builtinRegexpSubstrFuncSig) evalString(ctx sessionctx.Context, row chu } if argNum >= 4 { - occurrence, isNull, err = re.args[3].EvalInt(re.ctx, row) + occurrence, isNull, err = re.args[3].EvalInt(ctx, row) if isNull || err != nil { return "", true, err } @@ -493,7 +493,7 @@ func (re *builtinRegexpSubstrFuncSig) evalString(ctx sessionctx.Context, row chu } if argNum == 5 { - matchType, isNull, err = re.args[4].EvalString(re.ctx, row) + matchType, isNull, err = re.args[4].EvalString(ctx, row) if isNull || err != nil { return "", true, err } @@ -508,7 +508,7 @@ func (re *builtinRegexpSubstrFuncSig) evalString(ctx sessionctx.Context, row chu re.memorize(compile, pat) } - if re.canMemorize(regexpSubstrMatchTypeIdx) { + if re.canMemorize(ctx, regexpSubstrMatchTypeIdx) { re.once.Do(memorize) // Avoid data race } @@ -546,7 +546,7 @@ func (re *builtinRegexpSubstrFuncSig) vecEvalString(ctx sessionctx.Context, inpu defer releaseBuffers(&re.baseBuiltinFunc, params) for i := 0; i < 2; i++ { - param, isConstNull, err := buildStringParam(&re.baseBuiltinFunc, i, input, false) + param, isConstNull, err := buildStringParam(ctx, &re.baseBuiltinFunc, i, input, false) if err != nil { return err } @@ -561,7 +561,7 @@ func (re *builtinRegexpSubstrFuncSig) vecEvalString(ctx sessionctx.Context, inpu // Handle position parameter hasPosition := (paramLen >= 3) - param, isConstNull, err := buildIntParam(&re.baseBuiltinFunc, 2, input, !hasPosition, 1) + param, isConstNull, err := buildIntParam(ctx, &re.baseBuiltinFunc, 2, input, !hasPosition, 1) params = append(params, param) if err != nil { @@ -574,7 +574,7 @@ func (re *builtinRegexpSubstrFuncSig) vecEvalString(ctx sessionctx.Context, inpu // Handle occurrence parameter hasOccur := (paramLen >= 4) - param, isConstNull, err = buildIntParam(&re.baseBuiltinFunc, 3, input, !hasOccur, 1) + param, isConstNull, err = buildIntParam(ctx, &re.baseBuiltinFunc, 3, input, !hasOccur, 1) params = append(params, param) if err != nil { @@ -587,7 +587,7 @@ func (re *builtinRegexpSubstrFuncSig) vecEvalString(ctx sessionctx.Context, inpu // Handle match type hasMatchType := (paramLen == 5) - param, isConstNull, err = buildStringParam(&re.baseBuiltinFunc, 4, input, !hasMatchType) + param, isConstNull, err = buildStringParam(ctx, &re.baseBuiltinFunc, 4, input, !hasMatchType) params = append(params, param) if err != nil { @@ -599,7 +599,7 @@ func (re *builtinRegexpSubstrFuncSig) vecEvalString(ctx sessionctx.Context, inpu } // Check memorization - err = re.tryToMemorize(params, regexpSubstrMatchTypeIdx, n) + err = re.tryToMemorize(ctx, params, regexpSubstrMatchTypeIdx, n) if err != nil { return err } @@ -759,12 +759,12 @@ func (re *builtinRegexpInStrFuncSig) findIndex(reg *regexp.Regexp, expr string, } func (re *builtinRegexpInStrFuncSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - expr, isNull, err := re.args[0].EvalString(re.ctx, row) + expr, isNull, err := re.args[0].EvalString(ctx, row) if isNull || err != nil { return 0, true, err } - pat, isNull, err := re.args[1].EvalString(re.ctx, row) + pat, isNull, err := re.args[1].EvalString(ctx, row) if isNull || err != nil { return 0, true, err } else if len(pat) == 0 { @@ -783,7 +783,7 @@ func (re *builtinRegexpInStrFuncSig) evalInt(ctx sessionctx.Context, row chunk.R } if argNum >= 3 { - pos, isNull, err = re.args[2].EvalInt(re.ctx, row) + pos, isNull, err = re.args[2].EvalInt(ctx, row) if isNull || err != nil { return 0, true, err } @@ -811,7 +811,7 @@ func (re *builtinRegexpInStrFuncSig) evalInt(ctx sessionctx.Context, row chunk.R } if argNum >= 4 { - occurrence, isNull, err = re.args[3].EvalInt(re.ctx, row) + occurrence, isNull, err = re.args[3].EvalInt(ctx, row) if isNull || err != nil { return 0, true, err } @@ -822,7 +822,7 @@ func (re *builtinRegexpInStrFuncSig) evalInt(ctx sessionctx.Context, row chunk.R } if argNum >= 5 { - returnOption, isNull, err = re.args[4].EvalInt(re.ctx, row) + returnOption, isNull, err = re.args[4].EvalInt(ctx, row) if isNull || err != nil { return 0, true, err } @@ -833,7 +833,7 @@ func (re *builtinRegexpInStrFuncSig) evalInt(ctx sessionctx.Context, row chunk.R } if argNum == 6 { - matchType, isNull, err = re.args[5].EvalString(re.ctx, row) + matchType, isNull, err = re.args[5].EvalString(ctx, row) if isNull || err != nil { return 0, true, err } @@ -848,7 +848,7 @@ func (re *builtinRegexpInStrFuncSig) evalInt(ctx sessionctx.Context, row chunk.R re.memorize(compile, pat) } - if re.canMemorize(regexpInstrMatchTypeIdx) { + if re.canMemorize(ctx, regexpInstrMatchTypeIdx) { re.once.Do(memorize) // Avoid data race } @@ -886,7 +886,7 @@ func (re *builtinRegexpInStrFuncSig) vecEvalInt(ctx sessionctx.Context, input *c defer releaseBuffers(&re.baseBuiltinFunc, params) for i := 0; i < 2; i++ { - param, isConstNull, err := buildStringParam(&re.baseBuiltinFunc, i, input, false) + param, isConstNull, err := buildStringParam(ctx, &re.baseBuiltinFunc, i, input, false) if err != nil { return ErrRegexp.GenWithStackByArgs(err) } @@ -901,7 +901,7 @@ func (re *builtinRegexpInStrFuncSig) vecEvalInt(ctx sessionctx.Context, input *c // Handle position parameter hasPosition := (paramLen >= 3) - param, isConstNull, err := buildIntParam(&re.baseBuiltinFunc, 2, input, !hasPosition, 1) + param, isConstNull, err := buildIntParam(ctx, &re.baseBuiltinFunc, 2, input, !hasPosition, 1) params = append(params, param) if err != nil { @@ -914,7 +914,7 @@ func (re *builtinRegexpInStrFuncSig) vecEvalInt(ctx sessionctx.Context, input *c // Handle occurrence parameter hasOccur := (paramLen >= 4) - param, isConstNull, err = buildIntParam(&re.baseBuiltinFunc, 3, input, !hasOccur, 1) + param, isConstNull, err = buildIntParam(ctx, &re.baseBuiltinFunc, 3, input, !hasOccur, 1) params = append(params, param) if err != nil { @@ -927,7 +927,7 @@ func (re *builtinRegexpInStrFuncSig) vecEvalInt(ctx sessionctx.Context, input *c // Handle return_option parameter hasRetOpt := (paramLen >= 5) - param, isConstNull, err = buildIntParam(&re.baseBuiltinFunc, 4, input, !hasRetOpt, 0) + param, isConstNull, err = buildIntParam(ctx, &re.baseBuiltinFunc, 4, input, !hasRetOpt, 0) params = append(params, param) if err != nil { @@ -940,7 +940,7 @@ func (re *builtinRegexpInStrFuncSig) vecEvalInt(ctx sessionctx.Context, input *c // Handle match type hasMatchType := (paramLen == 6) - param, isConstNull, err = buildStringParam(&re.baseBuiltinFunc, 5, input, !hasMatchType) + param, isConstNull, err = buildStringParam(ctx, &re.baseBuiltinFunc, 5, input, !hasMatchType) params = append(params, param) if err != nil { @@ -951,7 +951,7 @@ func (re *builtinRegexpInStrFuncSig) vecEvalInt(ctx sessionctx.Context, input *c return nil } - err = re.tryToMemorize(params, regexpInstrMatchTypeIdx, n) + err = re.tryToMemorize(ctx, params, regexpInstrMatchTypeIdx, n) if err != nil { return err } @@ -1250,25 +1250,25 @@ func getInstructions(repl []byte) ([]Instruction, error) { return instructions, nil } -func (re *builtinRegexpReplaceFuncSig) canInstructionsMemorized() bool { - return re.args[replacementIdx].ConstItem(re.ctx.GetSessionVars().StmtCtx) +func (re *builtinRegexpReplaceFuncSig) canInstructionsMemorized(ctx sessionctx.Context) bool { + return re.args[replacementIdx].ConstItem(ctx.GetSessionVars().StmtCtx) } func (re *builtinRegexpReplaceFuncSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - expr, isNull, err := re.args[0].EvalString(re.ctx, row) + expr, isNull, err := re.args[0].EvalString(ctx, row) trimmedExpr := expr if isNull || err != nil { return "", true, err } - pat, isNull, err := re.args[1].EvalString(re.ctx, row) + pat, isNull, err := re.args[1].EvalString(ctx, row) if isNull || err != nil { return "", true, err } else if len(pat) == 0 { return "", true, ErrRegexp.GenWithStackByArgs(emptyPatternErr) } - repl, isNull, err := re.args[2].EvalString(re.ctx, row) + repl, isNull, err := re.args[2].EvalString(ctx, row) if isNull || err != nil { return "", true, err } @@ -1287,7 +1287,7 @@ func (re *builtinRegexpReplaceFuncSig) evalString(ctx sessionctx.Context, row ch trimmedLen := int64(0) if argNum >= 4 { - pos, isNull, err = re.args[3].EvalInt(re.ctx, row) + pos, isNull, err = re.args[3].EvalInt(ctx, row) if isNull || err != nil { return "", true, err } @@ -1313,7 +1313,7 @@ func (re *builtinRegexpReplaceFuncSig) evalString(ctx sessionctx.Context, row ch } if argNum >= 5 { - occurrence, isNull, err = re.args[4].EvalInt(re.ctx, row) + occurrence, isNull, err = re.args[4].EvalInt(ctx, row) if isNull || err != nil { return "", true, err } @@ -1324,7 +1324,7 @@ func (re *builtinRegexpReplaceFuncSig) evalString(ctx sessionctx.Context, row ch } if argNum == 6 { - matchType, isNull, err = re.args[5].EvalString(re.ctx, row) + matchType, isNull, err = re.args[5].EvalString(ctx, row) if isNull || err != nil { return "", true, err } @@ -1339,7 +1339,7 @@ func (re *builtinRegexpReplaceFuncSig) evalString(ctx sessionctx.Context, row ch re.memorize(compile, pat) } - if re.canMemorize(regexpReplaceMatchTypeIdx) { + if re.canMemorize(ctx, regexpReplaceMatchTypeIdx) { re.once.Do(memorize) // Avoid data race } @@ -1352,7 +1352,7 @@ func (re *builtinRegexpReplaceFuncSig) evalString(ctx sessionctx.Context, row ch re.isInstrMemorized = true } - if re.canInstructionsMemorized() { + if re.canInstructionsMemorized(ctx) { re.instrMemorizeOnce.Do(memorizeInstructions) // Avoid data race } @@ -1399,7 +1399,7 @@ func (re *builtinRegexpReplaceFuncSig) vecEvalString(ctx sessionctx.Context, inp defer releaseBuffers(&re.baseBuiltinFunc, params) for i := 0; i < 2; i++ { - param, isConstNull, err := buildStringParam(&re.baseBuiltinFunc, i, input, false) + param, isConstNull, err := buildStringParam(ctx, &re.baseBuiltinFunc, i, input, false) if err != nil { return ErrRegexp.GenWithStackByArgs(err) } @@ -1414,7 +1414,7 @@ func (re *builtinRegexpReplaceFuncSig) vecEvalString(ctx sessionctx.Context, inp // Handle repl parameter hasRepl := (paramLen >= 3) - param, isConstNull, err := buildStringParam(&re.baseBuiltinFunc, 2, input, !hasRepl) + param, isConstNull, err := buildStringParam(ctx, &re.baseBuiltinFunc, 2, input, !hasRepl) params = append(params, param) if err != nil { @@ -1427,7 +1427,7 @@ func (re *builtinRegexpReplaceFuncSig) vecEvalString(ctx sessionctx.Context, inp // Handle position parameter hasPosition := (paramLen >= 4) - param, isConstNull, err = buildIntParam(&re.baseBuiltinFunc, 3, input, !hasPosition, 1) + param, isConstNull, err = buildIntParam(ctx, &re.baseBuiltinFunc, 3, input, !hasPosition, 1) params = append(params, param) if err != nil { @@ -1440,7 +1440,7 @@ func (re *builtinRegexpReplaceFuncSig) vecEvalString(ctx sessionctx.Context, inp // Handle occurrence parameter hasOccur := (paramLen >= 5) - param, isConstNull, err = buildIntParam(&re.baseBuiltinFunc, 4, input, !hasOccur, 0) + param, isConstNull, err = buildIntParam(ctx, &re.baseBuiltinFunc, 4, input, !hasOccur, 0) params = append(params, param) if err != nil { @@ -1453,7 +1453,7 @@ func (re *builtinRegexpReplaceFuncSig) vecEvalString(ctx sessionctx.Context, inp // Handle match type hasMatchType := (paramLen == 6) - param, isConstNull, err = buildStringParam(&re.baseBuiltinFunc, 5, input, !hasMatchType) + param, isConstNull, err = buildStringParam(ctx, &re.baseBuiltinFunc, 5, input, !hasMatchType) params = append(params, param) if err != nil { return ErrRegexp.GenWithStackByArgs(err) @@ -1464,7 +1464,7 @@ func (re *builtinRegexpReplaceFuncSig) vecEvalString(ctx sessionctx.Context, inp return nil } - err = re.tryToMemorize(params, regexpReplaceMatchTypeIdx, n) + err = re.tryToMemorize(ctx, params, regexpReplaceMatchTypeIdx, n) if err != nil { return err } @@ -1473,7 +1473,7 @@ func (re *builtinRegexpReplaceFuncSig) vecEvalString(ctx sessionctx.Context, inp buffers := getBuffers(params) instructions := make([]Instruction, 0) - isReplConst := re.baseBuiltinFunc.args[2].ConstItem(re.baseBuiltinFunc.ctx.GetSessionVars().StmtCtx) + isReplConst := re.baseBuiltinFunc.args[2].ConstItem(ctx.GetSessionVars().StmtCtx) if isReplConst { // repl is const instructions, err = getInstructions([]byte(params[2].getStringVal(0))) @@ -1545,7 +1545,7 @@ func (re *builtinRegexpReplaceFuncSig) vecEvalString(ctx sessionctx.Context, inp // Start to replace if re.isBinaryCollation() { var replacedBStr string - if re.canMemorize(regexpReplaceMatchTypeIdx) { + if re.canMemorize(ctx, regexpReplaceMatchTypeIdx) { replacedBStr, _, err = re.getReplacedBinStr(re.memorizedRegexp, bexpr, trimmedBexpr, instructions, pos, occurrence) } else { replacedBStr, _, err = re.getReplacedBinStr(reg, bexpr, trimmedBexpr, instructions, pos, occurrence) @@ -1558,7 +1558,7 @@ func (re *builtinRegexpReplaceFuncSig) vecEvalString(ctx sessionctx.Context, inp result.AppendString(fmt.Sprintf("0x%s", strings.ToUpper(hex.EncodeToString([]byte(replacedBStr))))) } else { var replacedStr string - if re.canMemorize(regexpReplaceMatchTypeIdx) { + if re.canMemorize(ctx, regexpReplaceMatchTypeIdx) { replacedStr, _, err = re.getReplacedStr(re.memorizedRegexp, expr, trimmedExpr, instructions, trimmedLen+1, occurrence) } else { replacedStr, _, err = re.getReplacedStr(reg, expr, trimmedExpr, instructions, trimmedLen+1, occurrence) diff --git a/pkg/expression/builtin_string.go b/pkg/expression/builtin_string.go index 4a10ce851afc6..6b72a4bed6a23 100644 --- a/pkg/expression/builtin_string.go +++ b/pkg/expression/builtin_string.go @@ -219,7 +219,7 @@ func (b *builtinLengthSig) Clone() builtinFunc { // evalInt evaluates a builtinLengthSig. // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html func (b *builtinLengthSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - val, isNull, err := b.args[0].EvalString(b.ctx, row) + val, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -257,7 +257,7 @@ func (b *builtinASCIISig) Clone() builtinFunc { // evalInt evals a builtinASCIISig. // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_ascii func (b *builtinASCIISig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - val, isNull, err := b.args[0].EvalString(b.ctx, row) + val, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -327,12 +327,12 @@ func (b *builtinConcatSig) evalString(ctx sessionctx.Context, row chunk.Row) (d //nolint: prealloc var s []byte for _, a := range b.getArgs() { - d, isNull, err = a.EvalString(b.ctx, row) + d, isNull, err = a.EvalString(ctx, row) if isNull || err != nil { return d, isNull, err } if uint64(len(s)+len(d)) > b.maxAllowedPacket { - return "", true, handleAllowedPacketOverflowed(b.ctx, "concat", b.maxAllowedPacket) + return "", true, handleAllowedPacketOverflowed(ctx, "concat", b.maxAllowedPacket) } s = append(s, []byte(d)...) } @@ -413,7 +413,7 @@ func (b *builtinConcatWSSig) evalString(ctx sessionctx.Context, row chunk.Row) ( N := len(args) if N > 0 { - val, isNull, err := args[0].EvalString(b.ctx, row) + val, isNull, err := args[0].EvalString(ctx, row) if err != nil || isNull { // If the separator is NULL, the result is NULL. return val, isNull, err @@ -421,7 +421,7 @@ func (b *builtinConcatWSSig) evalString(ctx sessionctx.Context, row chunk.Row) ( sep = val } for i := 1; i < N; i++ { - val, isNull, err := args[i].EvalString(b.ctx, row) + val, isNull, err := args[i].EvalString(ctx, row) if err != nil { return val, isNull, err } @@ -436,7 +436,7 @@ func (b *builtinConcatWSSig) evalString(ctx sessionctx.Context, row chunk.Row) ( targetLength += len(sep) } if uint64(targetLength) > b.maxAllowedPacket { - return "", true, handleAllowedPacketOverflowed(b.ctx, "concat_ws", b.maxAllowedPacket) + return "", true, handleAllowedPacketOverflowed(ctx, "concat_ws", b.maxAllowedPacket) } strs = append(strs, val) } @@ -487,11 +487,11 @@ func (b *builtinLeftSig) Clone() builtinFunc { // evalString evals LEFT(str,len). // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_left func (b *builtinLeftSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - str, isNull, err := b.args[0].EvalString(b.ctx, row) + str, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", true, err } - left, isNull, err := b.args[1].EvalInt(b.ctx, row) + left, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return "", true, err } @@ -517,11 +517,11 @@ func (b *builtinLeftUTF8Sig) Clone() builtinFunc { // evalString evals LEFT(str,len). // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_left func (b *builtinLeftUTF8Sig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - str, isNull, err := b.args[0].EvalString(b.ctx, row) + str, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", true, err } - left, isNull, err := b.args[1].EvalInt(b.ctx, row) + left, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return "", true, err } @@ -572,11 +572,11 @@ func (b *builtinRightSig) Clone() builtinFunc { // evalString evals RIGHT(str,len). // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_right func (b *builtinRightSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - str, isNull, err := b.args[0].EvalString(b.ctx, row) + str, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", true, err } - right, isNull, err := b.args[1].EvalInt(b.ctx, row) + right, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return "", true, err } @@ -602,11 +602,11 @@ func (b *builtinRightUTF8Sig) Clone() builtinFunc { // evalString evals RIGHT(str,len). // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_right func (b *builtinRightUTF8Sig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - str, isNull, err := b.args[0].EvalString(b.ctx, row) + str, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", true, err } - right, isNull, err := b.args[1].EvalInt(b.ctx, row) + right, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return "", true, err } @@ -659,13 +659,13 @@ func (b *builtinRepeatSig) Clone() builtinFunc { // evalString evals a builtinRepeatSig. // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_repeat func (b *builtinRepeatSig) evalString(ctx sessionctx.Context, row chunk.Row) (val string, isNull bool, err error) { - str, isNull, err := b.args[0].EvalString(b.ctx, row) + str, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", isNull, err } byteLength := len(str) - num, isNull, err := b.args[1].EvalInt(b.ctx, row) + num, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return "", isNull, err } @@ -677,7 +677,7 @@ func (b *builtinRepeatSig) evalString(ctx sessionctx.Context, row chunk.Row) (va } if uint64(byteLength)*uint64(num) > b.maxAllowedPacket { - return "", true, handleAllowedPacketOverflowed(b.ctx, "repeat", b.maxAllowedPacket) + return "", true, handleAllowedPacketOverflowed(ctx, "repeat", b.maxAllowedPacket) } return strings.Repeat(str, int(num)), false, nil @@ -722,7 +722,7 @@ func (b *builtinLowerUTF8Sig) Clone() builtinFunc { // evalString evals a builtinLowerUTF8Sig. // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_lower func (b *builtinLowerUTF8Sig) evalString(ctx sessionctx.Context, row chunk.Row) (d string, isNull bool, err error) { - d, isNull, err = b.args[0].EvalString(b.ctx, row) + d, isNull, err = b.args[0].EvalString(ctx, row) if isNull || err != nil { return d, isNull, err } @@ -743,7 +743,7 @@ func (b *builtinLowerSig) Clone() builtinFunc { // evalString evals a builtinLowerSig. // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_lower func (b *builtinLowerSig) evalString(ctx sessionctx.Context, row chunk.Row) (d string, isNull bool, err error) { - d, isNull, err = b.args[0].EvalString(b.ctx, row) + d, isNull, err = b.args[0].EvalString(ctx, row) if isNull || err != nil { return d, isNull, err } @@ -791,7 +791,7 @@ func (b *builtinReverseSig) Clone() builtinFunc { // evalString evals a REVERSE(str). // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_reverse func (b *builtinReverseSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - str, isNull, err := b.args[0].EvalString(b.ctx, row) + str, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", true, err } @@ -812,7 +812,7 @@ func (b *builtinReverseUTF8Sig) Clone() builtinFunc { // evalString evals a REVERSE(str). // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_reverse func (b *builtinReverseUTF8Sig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - str, isNull, err := b.args[0].EvalString(b.ctx, row) + str, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", true, err } @@ -863,7 +863,7 @@ func (b *builtinSpaceSig) Clone() builtinFunc { func (b *builtinSpaceSig) evalString(ctx sessionctx.Context, row chunk.Row) (d string, isNull bool, err error) { var x int64 - x, isNull, err = b.args[0].EvalInt(b.ctx, row) + x, isNull, err = b.args[0].EvalInt(ctx, row) if isNull || err != nil { return d, isNull, err } @@ -871,7 +871,7 @@ func (b *builtinSpaceSig) evalString(ctx sessionctx.Context, row chunk.Row) (d s x = 0 } if uint64(x) > b.maxAllowedPacket { - return d, true, handleAllowedPacketOverflowed(b.ctx, "space", b.maxAllowedPacket) + return d, true, handleAllowedPacketOverflowed(ctx, "space", b.maxAllowedPacket) } if x > mysql.MaxBlobWidth { return d, true, nil @@ -918,7 +918,7 @@ func (b *builtinUpperUTF8Sig) Clone() builtinFunc { // evalString evals a builtinUpperUTF8Sig. // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_upper func (b *builtinUpperUTF8Sig) evalString(ctx sessionctx.Context, row chunk.Row) (d string, isNull bool, err error) { - d, isNull, err = b.args[0].EvalString(b.ctx, row) + d, isNull, err = b.args[0].EvalString(ctx, row) if isNull || err != nil { return d, isNull, err } @@ -939,7 +939,7 @@ func (b *builtinUpperSig) Clone() builtinFunc { // evalString evals a builtinUpperSig. // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_upper func (b *builtinUpperSig) evalString(ctx sessionctx.Context, row chunk.Row) (d string, isNull bool, err error) { - d, isNull, err = b.args[0].EvalString(b.ctx, row) + d, isNull, err = b.args[0].EvalString(ctx, row) if isNull || err != nil { return d, isNull, err } @@ -985,11 +985,11 @@ func (b *builtinStrcmpSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64 err error ) - left, isNull, err = b.args[0].EvalString(b.ctx, row) + left, isNull, err = b.args[0].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } - right, isNull, err = b.args[1].EvalString(b.ctx, row) + right, isNull, err = b.args[1].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -1044,15 +1044,15 @@ func (b *builtinReplaceSig) Clone() builtinFunc { func (b *builtinReplaceSig) evalString(ctx sessionctx.Context, row chunk.Row) (d string, isNull bool, err error) { var str, oldStr, newStr string - str, isNull, err = b.args[0].EvalString(b.ctx, row) + str, isNull, err = b.args[0].EvalString(ctx, row) if isNull || err != nil { return d, isNull, err } - oldStr, isNull, err = b.args[1].EvalString(b.ctx, row) + oldStr, isNull, err = b.args[1].EvalString(ctx, row) if isNull || err != nil { return d, isNull, err } - newStr, isNull, err = b.args[2].EvalString(b.ctx, row) + newStr, isNull, err = b.args[2].EvalString(ctx, row) if isNull || err != nil { return d, isNull, err } @@ -1128,7 +1128,7 @@ func (b *builtinConvertSig) Clone() builtinFunc { // Syntax CONVERT(expr, type) is parsed as cast expr so not handled here. // See https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#function_convert func (b *builtinConvertSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - expr, isNull, err := b.args[0].EvalString(b.ctx, row) + expr, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", true, err } @@ -1210,11 +1210,11 @@ func (b *builtinSubstring2ArgsSig) Clone() builtinFunc { // evalString evals SUBSTR(str,pos), SUBSTR(str FROM pos), SUBSTR() is a synonym for SUBSTRING(). // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_substr func (b *builtinSubstring2ArgsSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - str, isNull, err := b.args[0].EvalString(b.ctx, row) + str, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", true, err } - pos, isNull, err := b.args[1].EvalInt(b.ctx, row) + pos, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return "", true, err } @@ -1243,11 +1243,11 @@ func (b *builtinSubstring2ArgsUTF8Sig) Clone() builtinFunc { // evalString evals SUBSTR(str,pos), SUBSTR(str FROM pos), SUBSTR() is a synonym for SUBSTRING(). // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_substr func (b *builtinSubstring2ArgsUTF8Sig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - str, isNull, err := b.args[0].EvalString(b.ctx, row) + str, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", true, err } - pos, isNull, err := b.args[1].EvalInt(b.ctx, row) + pos, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return "", true, err } @@ -1277,15 +1277,15 @@ func (b *builtinSubstring3ArgsSig) Clone() builtinFunc { // evalString evals SUBSTR(str,pos,len), SUBSTR(str FROM pos FOR len), SUBSTR() is a synonym for SUBSTRING(). // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_substr func (b *builtinSubstring3ArgsSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - str, isNull, err := b.args[0].EvalString(b.ctx, row) + str, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", true, err } - pos, isNull, err := b.args[1].EvalInt(b.ctx, row) + pos, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return "", true, err } - length, isNull, err := b.args[2].EvalInt(b.ctx, row) + length, isNull, err := b.args[2].EvalInt(ctx, row) if isNull || err != nil { return "", true, err } @@ -1320,15 +1320,15 @@ func (b *builtinSubstring3ArgsUTF8Sig) Clone() builtinFunc { // evalString evals SUBSTR(str,pos,len), SUBSTR(str FROM pos FOR len), SUBSTR() is a synonym for SUBSTRING(). // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_substr func (b *builtinSubstring3ArgsUTF8Sig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - str, isNull, err := b.args[0].EvalString(b.ctx, row) + str, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", true, err } - pos, isNull, err := b.args[1].EvalInt(b.ctx, row) + pos, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return "", true, err } - length, isNull, err := b.args[2].EvalInt(b.ctx, row) + length, isNull, err := b.args[2].EvalInt(ctx, row) if isNull || err != nil { return "", true, err } @@ -1388,15 +1388,15 @@ func (b *builtinSubstringIndexSig) evalString(ctx sessionctx.Context, row chunk. str, delim string count int64 ) - str, isNull, err = b.args[0].EvalString(b.ctx, row) + str, isNull, err = b.args[0].EvalString(ctx, row) if isNull || err != nil { return d, isNull, err } - delim, isNull, err = b.args[1].EvalString(b.ctx, row) + delim, isNull, err = b.args[1].EvalString(ctx, row) if isNull || err != nil { return d, isNull, err } - count, isNull, err = b.args[2].EvalInt(b.ctx, row) + count, isNull, err = b.args[2].EvalInt(ctx, row) if isNull || err != nil { return d, isNull, err } @@ -1480,11 +1480,11 @@ func (b *builtinLocate2ArgsSig) Clone() builtinFunc { // evalInt evals LOCATE(substr,str), case-sensitive. // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_locate func (b *builtinLocate2ArgsSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - subStr, isNull, err := b.args[0].EvalString(b.ctx, row) + subStr, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } - str, isNull, err := b.args[1].EvalString(b.ctx, row) + str, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -1512,11 +1512,11 @@ func (b *builtinLocate2ArgsUTF8Sig) Clone() builtinFunc { // evalInt evals LOCATE(substr,str). // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_locate func (b *builtinLocate2ArgsUTF8Sig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - subStr, isNull, err := b.args[0].EvalString(b.ctx, row) + subStr, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } - str, isNull, err := b.args[1].EvalString(b.ctx, row) + str, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -1540,15 +1540,15 @@ func (b *builtinLocate3ArgsSig) Clone() builtinFunc { // evalInt evals LOCATE(substr,str,pos), case-sensitive. // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_locate func (b *builtinLocate3ArgsSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - subStr, isNull, err := b.args[0].EvalString(b.ctx, row) + subStr, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } - str, isNull, err := b.args[1].EvalString(b.ctx, row) + str, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } - pos, isNull, err := b.args[2].EvalInt(b.ctx, row) + pos, isNull, err := b.args[2].EvalInt(ctx, row) // Transfer the argument which starts from 1 to real index which starts from 0. pos-- if isNull || err != nil { @@ -1581,11 +1581,11 @@ func (b *builtinLocate3ArgsUTF8Sig) Clone() builtinFunc { // evalInt evals LOCATE(substr,str,pos). // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_locate func (b *builtinLocate3ArgsUTF8Sig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - subStr, isNull, err := b.args[0].EvalString(b.ctx, row) + subStr, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } - str, isNull, err := b.args[1].EvalString(b.ctx, row) + str, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -1593,7 +1593,7 @@ func (b *builtinLocate3ArgsUTF8Sig) evalInt(ctx sessionctx.Context, row chunk.Ro subStr = strings.ToLower(subStr) str = strings.ToLower(str) } - pos, isNull, err := b.args[2].EvalInt(b.ctx, row) + pos, isNull, err := b.args[2].EvalInt(ctx, row) // Transfer the argument which starts from 1 to real index which starts from 0. pos-- if isNull || err != nil { @@ -1666,7 +1666,7 @@ func (b *builtinHexStrArgSig) Clone() builtinFunc { // evalString evals a builtinHexStrArgSig, corresponding to hex(str) // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_hex func (b *builtinHexStrArgSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - d, isNull, err := b.args[0].EvalString(b.ctx, row) + d, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return d, isNull, err } @@ -1686,7 +1686,7 @@ func (b *builtinHexIntArgSig) Clone() builtinFunc { // evalString evals a builtinHexIntArgSig, corresponding to hex(N) // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_hex func (b *builtinHexIntArgSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - x, isNull, err := b.args[0].EvalInt(b.ctx, row) + x, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return "", isNull, err } @@ -1748,7 +1748,7 @@ func (b *builtinUnHexSig) Clone() builtinFunc { func (b *builtinUnHexSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { var bs []byte - d, isNull, err := b.args[0].EvalString(b.ctx, row) + d, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return d, isNull, err } @@ -1831,7 +1831,7 @@ func (b *builtinTrim1ArgSig) Clone() builtinFunc { // evalString evals a builtinTrim1ArgSig, corresponding to trim(str) // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_trim func (b *builtinTrim1ArgSig) evalString(ctx sessionctx.Context, row chunk.Row) (d string, isNull bool, err error) { - d, isNull, err = b.args[0].EvalString(b.ctx, row) + d, isNull, err = b.args[0].EvalString(ctx, row) if isNull || err != nil { return d, isNull, err } @@ -1853,11 +1853,11 @@ func (b *builtinTrim2ArgsSig) Clone() builtinFunc { func (b *builtinTrim2ArgsSig) evalString(ctx sessionctx.Context, row chunk.Row) (d string, isNull bool, err error) { var str, remstr string - str, isNull, err = b.args[0].EvalString(b.ctx, row) + str, isNull, err = b.args[0].EvalString(ctx, row) if isNull || err != nil { return d, isNull, err } - remstr, isNull, err = b.args[1].EvalString(b.ctx, row) + remstr, isNull, err = b.args[1].EvalString(ctx, row) if isNull || err != nil { return d, isNull, err } @@ -1885,15 +1885,15 @@ func (b *builtinTrim3ArgsSig) evalString(ctx sessionctx.Context, row chunk.Row) direction ast.TrimDirectionType isRemStrNull bool ) - str, isNull, err = b.args[0].EvalString(b.ctx, row) + str, isNull, err = b.args[0].EvalString(ctx, row) if isNull || err != nil { return d, isNull, err } - remstr, isRemStrNull, err = b.args[1].EvalString(b.ctx, row) + remstr, isRemStrNull, err = b.args[1].EvalString(ctx, row) if err != nil || isRemStrNull { return d, isRemStrNull, err } - x, isNull, err = b.args[2].EvalInt(b.ctx, row) + x, isNull, err = b.args[2].EvalInt(ctx, row) if isNull || err != nil { return d, isNull, err } @@ -1943,7 +1943,7 @@ func (b *builtinLTrimSig) Clone() builtinFunc { // evalString evals a builtinLTrimSig // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_ltrim func (b *builtinLTrimSig) evalString(ctx sessionctx.Context, row chunk.Row) (d string, isNull bool, err error) { - d, isNull, err = b.args[0].EvalString(b.ctx, row) + d, isNull, err = b.args[0].EvalString(ctx, row) if isNull || err != nil { return d, isNull, err } @@ -1983,7 +1983,7 @@ func (b *builtinRTrimSig) Clone() builtinFunc { // evalString evals a builtinRTrimSig // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_rtrim func (b *builtinRTrimSig) evalString(ctx sessionctx.Context, row chunk.Row) (d string, isNull bool, err error) { - d, isNull, err = b.args[0].EvalString(b.ctx, row) + d, isNull, err = b.args[0].EvalString(ctx, row) if isNull || err != nil { return d, isNull, err } @@ -2036,7 +2036,7 @@ func (c *lpadFunctionClass) getFunction(ctx sessionctx.Context, args []Expressio if err != nil { return nil, err } - bf.tp.SetFlen(getFlen4LpadAndRpad(bf.ctx, args[1])) + bf.tp.SetFlen(getFlen4LpadAndRpad(ctx, args[1])) addBinFlag(bf.tp) valStr, _ := ctx.GetSessionVars().GetSystemVar(variable.MaxAllowedPacket) @@ -2073,23 +2073,23 @@ func (b *builtinLpadSig) Clone() builtinFunc { // evalString evals LPAD(str,len,padstr). // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_lpad func (b *builtinLpadSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - str, isNull, err := b.args[0].EvalString(b.ctx, row) + str, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", true, err } byteLength := len(str) - length, isNull, err := b.args[1].EvalInt(b.ctx, row) + length, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return "", true, err } targetLength := int(length) if uint64(targetLength) > b.maxAllowedPacket { - return "", true, handleAllowedPacketOverflowed(b.ctx, "lpad", b.maxAllowedPacket) + return "", true, handleAllowedPacketOverflowed(ctx, "lpad", b.maxAllowedPacket) } - padStr, isNull, err := b.args[2].EvalString(b.ctx, row) + padStr, isNull, err := b.args[2].EvalString(ctx, row) if isNull || err != nil { return "", true, err } @@ -2121,23 +2121,23 @@ func (b *builtinLpadUTF8Sig) Clone() builtinFunc { // evalString evals LPAD(str,len,padstr). // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_lpad func (b *builtinLpadUTF8Sig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - str, isNull, err := b.args[0].EvalString(b.ctx, row) + str, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", true, err } runeLength := len([]rune(str)) - length, isNull, err := b.args[1].EvalInt(b.ctx, row) + length, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return "", true, err } targetLength := int(length) if uint64(targetLength)*uint64(mysql.MaxBytesOfCharacter) > b.maxAllowedPacket { - return "", true, handleAllowedPacketOverflowed(b.ctx, "lpad", b.maxAllowedPacket) + return "", true, handleAllowedPacketOverflowed(ctx, "lpad", b.maxAllowedPacket) } - padStr, isNull, err := b.args[2].EvalString(b.ctx, row) + padStr, isNull, err := b.args[2].EvalString(ctx, row) if isNull || err != nil { return "", true, err } @@ -2166,7 +2166,7 @@ func (c *rpadFunctionClass) getFunction(ctx sessionctx.Context, args []Expressio if err != nil { return nil, err } - bf.tp.SetFlen(getFlen4LpadAndRpad(bf.ctx, args[1])) + bf.tp.SetFlen(getFlen4LpadAndRpad(ctx, args[1])) addBinFlag(bf.tp) valStr, _ := ctx.GetSessionVars().GetSystemVar(variable.MaxAllowedPacket) @@ -2203,22 +2203,22 @@ func (b *builtinRpadSig) Clone() builtinFunc { // evalString evals RPAD(str,len,padstr). // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_rpad func (b *builtinRpadSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - str, isNull, err := b.args[0].EvalString(b.ctx, row) + str, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", true, err } byteLength := len(str) - length, isNull, err := b.args[1].EvalInt(b.ctx, row) + length, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return "", true, err } targetLength := int(length) if uint64(targetLength) > b.maxAllowedPacket { - return "", true, handleAllowedPacketOverflowed(b.ctx, "rpad", b.maxAllowedPacket) + return "", true, handleAllowedPacketOverflowed(ctx, "rpad", b.maxAllowedPacket) } - padStr, isNull, err := b.args[2].EvalString(b.ctx, row) + padStr, isNull, err := b.args[2].EvalString(ctx, row) if isNull || err != nil { return "", true, err } @@ -2250,23 +2250,23 @@ func (b *builtinRpadUTF8Sig) Clone() builtinFunc { // evalString evals RPAD(str,len,padstr). // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_rpad func (b *builtinRpadUTF8Sig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - str, isNull, err := b.args[0].EvalString(b.ctx, row) + str, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", true, err } runeLength := len([]rune(str)) - length, isNull, err := b.args[1].EvalInt(b.ctx, row) + length, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return "", true, err } targetLength := int(length) if uint64(targetLength)*uint64(mysql.MaxBytesOfCharacter) > b.maxAllowedPacket { - return "", true, handleAllowedPacketOverflowed(b.ctx, "rpad", b.maxAllowedPacket) + return "", true, handleAllowedPacketOverflowed(ctx, "rpad", b.maxAllowedPacket) } - padStr, isNull, err := b.args[2].EvalString(b.ctx, row) + padStr, isNull, err := b.args[2].EvalString(ctx, row) if isNull || err != nil { return "", true, err } @@ -2314,7 +2314,7 @@ func (b *builtinBitLengthSig) Clone() builtinFunc { // evalInt evaluates a builtinBitLengthSig. // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_bit-length func (b *builtinBitLengthSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - val, isNull, err := b.args[0].EvalString(b.ctx, row) + val, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -2397,7 +2397,7 @@ func (b *builtinCharSig) evalString(ctx sessionctx.Context, row chunk.Row) (stri bigints := make([]int64, 0, len(b.args)-1) for i := 0; i < len(b.args)-1; i++ { - val, IsNull, err := b.args[i].EvalInt(b.ctx, row) + val, IsNull, err := b.args[i].EvalInt(ctx, row) if err != nil { return "", true, err } @@ -2411,8 +2411,8 @@ func (b *builtinCharSig) evalString(ctx sessionctx.Context, row chunk.Row) (stri enc := charset.FindEncoding(b.tp.GetCharset()) res, err := enc.Transform(nil, dBytes, charset.OpDecode) if err != nil { - b.ctx.GetSessionVars().StmtCtx.AppendWarning(err) - if b.ctx.GetSessionVars().StrictSQLMode { + ctx.GetSessionVars().StmtCtx.AppendWarning(err) + if ctx.GetSessionVars().StrictSQLMode { return "", true, nil } } @@ -2454,7 +2454,7 @@ func (b *builtinCharLengthBinarySig) Clone() builtinFunc { // evalInt evals a builtinCharLengthUTF8Sig for binary string type. // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_char-length func (b *builtinCharLengthBinarySig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - val, isNull, err := b.args[0].EvalString(b.ctx, row) + val, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -2474,7 +2474,7 @@ func (b *builtinCharLengthUTF8Sig) Clone() builtinFunc { // evalInt evals a builtinCharLengthUTF8Sig for non-binary string type. // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_char-length func (b *builtinCharLengthUTF8Sig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - val, isNull, err := b.args[0].EvalString(b.ctx, row) + val, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -2514,12 +2514,12 @@ func (b *builtinFindInSetSig) Clone() builtinFunc { // TODO: This function can be optimized by using bit arithmetic when the first argument is // a constant string and the second is a column of type SET. func (b *builtinFindInSetSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - str, isNull, err := b.args[0].EvalString(b.ctx, row) + str, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } - strlist, isNull, err := b.args[1].EvalString(b.ctx, row) + strlist, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -2594,12 +2594,12 @@ func (b *builtinFieldIntSig) Clone() builtinFunc { // evalInt evals FIELD(str,str1,str2,str3,...). // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_field func (b *builtinFieldIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - str, isNull, err := b.args[0].EvalInt(b.ctx, row) + str, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return 0, err != nil, err } for i, length := 1, len(b.args); i < length; i++ { - stri, isNull, err := b.args[i].EvalInt(b.ctx, row) + stri, isNull, err := b.args[i].EvalInt(ctx, row) if err != nil { return 0, true, err } @@ -2623,12 +2623,12 @@ func (b *builtinFieldRealSig) Clone() builtinFunc { // evalInt evals FIELD(str,str1,str2,str3,...). // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_field func (b *builtinFieldRealSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - str, isNull, err := b.args[0].EvalReal(b.ctx, row) + str, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return 0, err != nil, err } for i, length := 1, len(b.args); i < length; i++ { - stri, isNull, err := b.args[i].EvalReal(b.ctx, row) + stri, isNull, err := b.args[i].EvalReal(ctx, row) if err != nil { return 0, true, err } @@ -2652,12 +2652,12 @@ func (b *builtinFieldStringSig) Clone() builtinFunc { // evalInt evals FIELD(str,str1,str2,str3,...). // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_field func (b *builtinFieldStringSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - str, isNull, err := b.args[0].EvalString(b.ctx, row) + str, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return 0, err != nil, err } for i, length := 1, len(b.args); i < length; i++ { - stri, isNull, err := b.args[i].EvalString(b.ctx, row) + stri, isNull, err := b.args[i].EvalString(ctx, row) if err != nil { return 0, true, err } @@ -2709,7 +2709,7 @@ func (c *makeSetFunctionClass) getFunction(ctx sessionctx.Context, args []Expres return nil, err } addBinFlag(bf.tp) - bf.tp.SetFlen(c.getFlen(bf.ctx, args)) + bf.tp.SetFlen(c.getFlen(ctx, args)) if bf.tp.GetFlen() > mysql.MaxBlobWidth { bf.tp.SetFlen(mysql.MaxBlobWidth) } @@ -2731,7 +2731,7 @@ func (b *builtinMakeSetSig) Clone() builtinFunc { // evalString evals MAKE_SET(bits,str1,str2,...). // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_make-set func (b *builtinMakeSetSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - bits, isNull, err := b.args[0].EvalInt(b.ctx, row) + bits, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return "", true, err } @@ -2741,7 +2741,7 @@ func (b *builtinMakeSetSig) evalString(ctx sessionctx.Context, row chunk.Row) (s if (bits & (1 << uint(i-1))) == 0 { continue } - str, isNull, err := b.args[i].EvalString(b.ctx, row) + str, isNull, err := b.args[i].EvalString(ctx, row) if err != nil { return "", true, err } @@ -2805,7 +2805,7 @@ func (b *builtinOctIntSig) Clone() builtinFunc { // evalString evals OCT(N). // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_oct func (b *builtinOctIntSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - val, isNull, err := b.args[0].EvalInt(b.ctx, row) + val, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return "", isNull, err } @@ -2826,7 +2826,7 @@ func (b *builtinOctStringSig) Clone() builtinFunc { // evalString evals OCT(N). // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_oct func (b *builtinOctStringSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - val, isNull, err := b.args[0].EvalString(b.ctx, row) + val, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", isNull, err } @@ -2885,7 +2885,7 @@ func (b *builtinOrdSig) Clone() builtinFunc { // evalInt evals a builtinOrdSig. // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_ord func (b *builtinOrdSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - str, isNull, err := b.args[0].EvalString(b.ctx, row) + str, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -2947,7 +2947,7 @@ func (b *builtinQuoteSig) Clone() builtinFunc { // evalString evals QUOTE(str). // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_quote func (b *builtinQuoteSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - str, isNull, err := b.args[0].EvalString(b.ctx, row) + str, isNull, err := b.args[0].EvalString(ctx, row) if err != nil { return "", true, err } else if isNull { @@ -3017,7 +3017,7 @@ func (b *builtinBinSig) Clone() builtinFunc { // evalString evals BIN(N). // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_bin func (b *builtinBinSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - val, isNull, err := b.args[0].EvalInt(b.ctx, row) + val, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return "", true, err } @@ -3068,14 +3068,14 @@ func (b *builtinEltSig) Clone() builtinFunc { // evalString evals a ELT(N,str1,str2,str3,...). // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_elt func (b *builtinEltSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - idx, isNull, err := b.args[0].EvalInt(b.ctx, row) + idx, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return "", true, err } if idx < 1 || idx >= int64(len(b.args)) { return "", true, nil } - arg, isNull, err := b.args[idx].EvalString(b.ctx, row) + arg, isNull, err := b.args[idx].EvalString(ctx, row) if isNull || err != nil { return "", true, err } @@ -3156,17 +3156,17 @@ func (b *builtinExportSet3ArgSig) Clone() builtinFunc { // evalString evals EXPORT_SET(bits,on,off). // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_export-set func (b *builtinExportSet3ArgSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - bits, isNull, err := b.args[0].EvalInt(b.ctx, row) + bits, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return "", true, err } - on, isNull, err := b.args[1].EvalString(b.ctx, row) + on, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return "", true, err } - off, isNull, err := b.args[2].EvalString(b.ctx, row) + off, isNull, err := b.args[2].EvalString(ctx, row) if isNull || err != nil { return "", true, err } @@ -3187,22 +3187,22 @@ func (b *builtinExportSet4ArgSig) Clone() builtinFunc { // evalString evals EXPORT_SET(bits,on,off,separator). // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_export-set func (b *builtinExportSet4ArgSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - bits, isNull, err := b.args[0].EvalInt(b.ctx, row) + bits, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return "", true, err } - on, isNull, err := b.args[1].EvalString(b.ctx, row) + on, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return "", true, err } - off, isNull, err := b.args[2].EvalString(b.ctx, row) + off, isNull, err := b.args[2].EvalString(ctx, row) if isNull || err != nil { return "", true, err } - separator, isNull, err := b.args[3].EvalString(b.ctx, row) + separator, isNull, err := b.args[3].EvalString(ctx, row) if isNull || err != nil { return "", true, err } @@ -3223,27 +3223,27 @@ func (b *builtinExportSet5ArgSig) Clone() builtinFunc { // evalString evals EXPORT_SET(bits,on,off,separator,number_of_bits). // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_export-set func (b *builtinExportSet5ArgSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - bits, isNull, err := b.args[0].EvalInt(b.ctx, row) + bits, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return "", true, err } - on, isNull, err := b.args[1].EvalString(b.ctx, row) + on, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return "", true, err } - off, isNull, err := b.args[2].EvalString(b.ctx, row) + off, isNull, err := b.args[2].EvalString(ctx, row) if isNull || err != nil { return "", true, err } - separator, isNull, err := b.args[3].EvalString(b.ctx, row) + separator, isNull, err := b.args[3].EvalString(ctx, row) if isNull || err != nil { return "", true, err } - numberOfBits, isNull, err := b.args[4].EvalInt(b.ctx, row) + numberOfBits, isNull, err := b.args[4].EvalInt(ctx, row) if isNull || err != nil { return "", true, err } @@ -3297,10 +3297,9 @@ func (c *formatFunctionClass) getFunction(ctx sessionctx.Context, args []Express const formatMaxDecimals int64 = 30 // evalNumDecArgsForFormat evaluates first 2 arguments, i.e, x and d, for function `format`. -func evalNumDecArgsForFormat(f builtinFunc, row chunk.Row) (string, string, bool, error) { +func evalNumDecArgsForFormat(ctx sessionctx.Context, f builtinFunc, row chunk.Row) (string, string, bool, error) { var xStr string arg0, arg1 := f.getArgs()[0], f.getArgs()[1] - ctx := f.getCtx() if arg0.GetType().EvalType() == types.ETDecimal { x, isNull, err := arg0.EvalDecimal(ctx, row) if isNull || err != nil { @@ -3396,18 +3395,18 @@ func (b *builtinFormatWithLocaleSig) Clone() builtinFunc { // evalString evals FORMAT(X,D,locale). // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_format func (b *builtinFormatWithLocaleSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - x, d, isNull, err := evalNumDecArgsForFormat(b, row) + x, d, isNull, err := evalNumDecArgsForFormat(ctx, b, row) if isNull || err != nil { return "", isNull, err } - locale, isNull, err := b.args[2].EvalString(b.ctx, row) + locale, isNull, err := b.args[2].EvalString(ctx, row) if err != nil { return "", false, err } if isNull { - b.ctx.GetSessionVars().StmtCtx.AppendWarning(errUnknownLocale.GenWithStackByArgs("NULL")) + ctx.GetSessionVars().StmtCtx.AppendWarning(errUnknownLocale.GenWithStackByArgs("NULL")) } else if !strings.EqualFold(locale, "en_US") { // TODO: support other locales. - b.ctx.GetSessionVars().StmtCtx.AppendWarning(errUnknownLocale.GenWithStackByArgs(locale)) + ctx.GetSessionVars().StmtCtx.AppendWarning(errUnknownLocale.GenWithStackByArgs(locale)) } locale = "en_US" formatString, err := mysql.GetLocaleFormatFunction(locale)(x, d) @@ -3427,7 +3426,7 @@ func (b *builtinFormatSig) Clone() builtinFunc { // evalString evals FORMAT(X,D). // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_format func (b *builtinFormatSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - x, d, isNull, err := evalNumDecArgsForFormat(b, row) + x, d, isNull, err := evalNumDecArgsForFormat(ctx, b, row) if isNull || err != nil { return "", isNull, err } @@ -3496,7 +3495,7 @@ func (b *builtinFromBase64Sig) Clone() builtinFunc { // evalString evals FROM_BASE64(str). // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_from-base64 func (b *builtinFromBase64Sig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - str, isNull, err := b.args[0].EvalString(b.ctx, row) + str, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", true, err } @@ -3506,7 +3505,7 @@ func (b *builtinFromBase64Sig) evalString(ctx sessionctx.Context, row chunk.Row) return "", true, nil } if needDecodeLen > int(b.maxAllowedPacket) { - return "", true, handleAllowedPacketOverflowed(b.ctx, "from_base64", b.maxAllowedPacket) + return "", true, handleAllowedPacketOverflowed(ctx, "from_base64", b.maxAllowedPacket) } str = strings.ReplaceAll(str, "\t", "") @@ -3590,7 +3589,7 @@ func base64NeededEncodedLength(n int) int { // evalString evals a builtinToBase64Sig. // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_to-base64 func (b *builtinToBase64Sig) evalString(ctx sessionctx.Context, row chunk.Row) (val string, isNull bool, err error) { - str, isNull, err := b.args[0].EvalString(b.ctx, row) + str, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", isNull, err } @@ -3599,7 +3598,7 @@ func (b *builtinToBase64Sig) evalString(ctx sessionctx.Context, row chunk.Row) ( return "", true, nil } if needEncodeLen > int(b.maxAllowedPacket) { - return "", true, handleAllowedPacketOverflowed(b.ctx, "to_base64", b.maxAllowedPacket) + return "", true, handleAllowedPacketOverflowed(ctx, "to_base64", b.maxAllowedPacket) } if b.tp.GetFlen() == -1 || b.tp.GetFlen() > mysql.MaxBlobWidth { b.tp.SetFlen(mysql.MaxBlobWidth) @@ -3675,22 +3674,22 @@ func (b *builtinInsertSig) Clone() builtinFunc { // evalString evals INSERT(str,pos,len,newstr). // See https://dev.mysql.com/doc/refman/5.6/en/string-functions.html#function_insert func (b *builtinInsertSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - str, isNull, err := b.args[0].EvalString(b.ctx, row) + str, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", true, err } - pos, isNull, err := b.args[1].EvalInt(b.ctx, row) + pos, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return "", true, err } - length, isNull, err := b.args[2].EvalInt(b.ctx, row) + length, isNull, err := b.args[2].EvalInt(ctx, row) if isNull || err != nil { return "", true, err } - newstr, isNull, err := b.args[3].EvalString(b.ctx, row) + newstr, isNull, err := b.args[3].EvalString(ctx, row) if isNull || err != nil { return "", true, err } @@ -3704,7 +3703,7 @@ func (b *builtinInsertSig) evalString(ctx sessionctx.Context, row chunk.Row) (st } if uint64(strLength-length+int64(len(newstr))) > b.maxAllowedPacket { - return "", true, handleAllowedPacketOverflowed(b.ctx, "insert", b.maxAllowedPacket) + return "", true, handleAllowedPacketOverflowed(ctx, "insert", b.maxAllowedPacket) } return str[0:pos-1] + newstr + str[pos+length-1:], false, nil @@ -3725,22 +3724,22 @@ func (b *builtinInsertUTF8Sig) Clone() builtinFunc { // evalString evals INSERT(str,pos,len,newstr). // See https://dev.mysql.com/doc/refman/5.6/en/string-functions.html#function_insert func (b *builtinInsertUTF8Sig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - str, isNull, err := b.args[0].EvalString(b.ctx, row) + str, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", true, err } - pos, isNull, err := b.args[1].EvalInt(b.ctx, row) + pos, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return "", true, err } - length, isNull, err := b.args[2].EvalInt(b.ctx, row) + length, isNull, err := b.args[2].EvalInt(ctx, row) if isNull || err != nil { return "", true, err } - newstr, isNull, err := b.args[3].EvalString(b.ctx, row) + newstr, isNull, err := b.args[3].EvalString(ctx, row) if isNull || err != nil { return "", true, err } @@ -3757,7 +3756,7 @@ func (b *builtinInsertUTF8Sig) evalString(ctx sessionctx.Context, row chunk.Row) strHead := string(runes[0 : pos-1]) strTail := string(runes[pos+length-1:]) if uint64(len(strHead)+len(newstr)+len(strTail)) > b.maxAllowedPacket { - return "", true, handleAllowedPacketOverflowed(b.ctx, "insert", b.maxAllowedPacket) + return "", true, handleAllowedPacketOverflowed(ctx, "insert", b.maxAllowedPacket) } return strHead + newstr + strTail, false, nil } @@ -3804,11 +3803,11 @@ func (b *builtinInstrSig) Clone() builtinFunc { // evalInt evals INSTR(str,substr). // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_instr func (b *builtinInstrUTF8Sig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - str, IsNull, err := b.args[0].EvalString(b.ctx, row) + str, IsNull, err := b.args[0].EvalString(ctx, row) if IsNull || err != nil { return 0, true, err } - substr, IsNull, err := b.args[1].EvalString(b.ctx, row) + substr, IsNull, err := b.args[1].EvalString(ctx, row) if IsNull || err != nil { return 0, true, err } @@ -3827,12 +3826,12 @@ func (b *builtinInstrUTF8Sig) evalInt(ctx sessionctx.Context, row chunk.Row) (in // evalInt evals INSTR(str,substr), case sensitive. // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_instr func (b *builtinInstrSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - str, IsNull, err := b.args[0].EvalString(b.ctx, row) + str, IsNull, err := b.args[0].EvalString(ctx, row) if IsNull || err != nil { return 0, true, err } - substr, IsNull, err := b.args[1].EvalString(b.ctx, row) + substr, IsNull, err := b.args[1].EvalString(ctx, row) if IsNull || err != nil { return 0, true, err } @@ -3869,7 +3868,7 @@ type builtinLoadFileSig struct { } func (b *builtinLoadFileSig) evalString(ctx sessionctx.Context, row chunk.Row) (d string, isNull bool, err error) { - d, isNull, err = b.args[0].EvalString(b.ctx, row) + d, isNull, err = b.args[0].EvalString(ctx, row) if isNull || err != nil { return d, isNull, err } @@ -4010,7 +4009,7 @@ func (b *builtinWeightStringSig) Clone() builtinFunc { // evalString evals a WEIGHT_STRING(expr [AS (CHAR|BINARY)]) when the expr is non-numeric types. // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_weight-string func (b *builtinWeightStringSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - str, isNull, err := b.args[0].EvalString(b.ctx, row) + str, isNull, err := b.args[0].EvalString(ctx, row) if err != nil { return "", false, err } @@ -4028,7 +4027,7 @@ func (b *builtinWeightStringSig) evalString(ctx sessionctx.Context, row chunk.Ro str = string(runes[:b.length]) } else if b.length > lenRunes { if uint64(b.length-lenRunes) > b.maxAllowedPacket { - return "", true, handleAllowedPacketOverflowed(b.ctx, "weight_string", b.maxAllowedPacket) + return "", true, handleAllowedPacketOverflowed(ctx, "weight_string", b.maxAllowedPacket) } str += strings.Repeat(" ", b.length-lenRunes) } @@ -4037,11 +4036,11 @@ func (b *builtinWeightStringSig) evalString(ctx sessionctx.Context, row chunk.Ro lenStr := len(str) if b.length < lenStr { tpInfo := fmt.Sprintf("BINARY(%d)", b.length) - b.ctx.GetSessionVars().StmtCtx.AppendWarning(errTruncatedWrongValue.GenWithStackByArgs(tpInfo, str)) + ctx.GetSessionVars().StmtCtx.AppendWarning(errTruncatedWrongValue.GenWithStackByArgs(tpInfo, str)) str = str[:b.length] } else if b.length > lenStr { if uint64(b.length-lenStr) > b.maxAllowedPacket { - return "", true, handleAllowedPacketOverflowed(b.ctx, "cast_as_binary", b.maxAllowedPacket) + return "", true, handleAllowedPacketOverflowed(ctx, "cast_as_binary", b.maxAllowedPacket) } str += strings.Repeat("\x00", b.length-lenStr) } @@ -4102,15 +4101,15 @@ func (b *builtinTranslateBinarySig) evalString(ctx sessionctx.Context, row chunk isFromStrNull, isToStrNull bool tgt []byte ) - srcStr, isNull, err = b.args[0].EvalString(b.ctx, row) + srcStr, isNull, err = b.args[0].EvalString(ctx, row) if isNull || err != nil { return d, isNull, err } - fromStr, isFromStrNull, err = b.args[1].EvalString(b.ctx, row) + fromStr, isFromStrNull, err = b.args[1].EvalString(ctx, row) if isFromStrNull || err != nil { return d, isFromStrNull, err } - toStr, isToStrNull, err = b.args[2].EvalString(b.ctx, row) + toStr, isToStrNull, err = b.args[2].EvalString(ctx, row) if isToStrNull || err != nil { return d, isToStrNull, err } @@ -4145,15 +4144,15 @@ func (b *builtinTranslateUTF8Sig) evalString(ctx sessionctx.Context, row chunk.R isFromStrNull, isToStrNull bool tgt strings.Builder ) - srcStr, isNull, err = b.args[0].EvalString(b.ctx, row) + srcStr, isNull, err = b.args[0].EvalString(ctx, row) if isNull || err != nil { return d, isNull, err } - fromStr, isFromStrNull, err = b.args[1].EvalString(b.ctx, row) + fromStr, isFromStrNull, err = b.args[1].EvalString(ctx, row) if isFromStrNull || err != nil { return d, isFromStrNull, err } - toStr, isToStrNull, err = b.args[2].EvalString(b.ctx, row) + toStr, isToStrNull, err = b.args[2].EvalString(ctx, row) if isToStrNull || err != nil { return d, isToStrNull, err } diff --git a/pkg/expression/builtin_string_test.go b/pkg/expression/builtin_string_test.go index 95fdca5c8a020..78baf4a75feb9 100644 --- a/pkg/expression/builtin_string_test.go +++ b/pkg/expression/builtin_string_test.go @@ -62,7 +62,7 @@ func TestLengthAndOctetLength(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, lengthMethod, primitiveValsToConstants(ctx, []interface{}{c.args})...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -97,7 +97,7 @@ func TestLengthAndOctetLength(t *testing.T) { require.NoError(t, err) f, err := newFunctionForTest(ctx, lengthMethod, primitiveValsToConstants(ctx, []interface{}{c.input})...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) require.NoError(t, err) require.Equal(t, c.result, d.GetInt64()) } @@ -125,7 +125,7 @@ func TestASCII(t *testing.T) { f, err := newFunctionForTest(ctx, ast.ASCII, primitiveValsToConstants(ctx, []interface{}{c.args})...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -158,7 +158,7 @@ func TestASCII(t *testing.T) { require.NoError(t, err) f, err := newFunctionForTest(ctx, ast.ASCII, primitiveValsToConstants(ctx, []interface{}{c.input})...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) require.NoError(t, err) require.Equal(t, c.result, d.GetInt64()) } @@ -206,7 +206,7 @@ func TestConcat(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, fcName, primitiveValsToConstants(ctx, c.args)...) require.NoError(t, err) - v, err := f.Eval(chunk.Row{}) + v, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -234,7 +234,7 @@ func TestConcatSig(t *testing.T) { &Column{Index: 0, RetType: colTypes[0]}, &Column{Index: 1, RetType: colTypes[1]}, } - base := baseBuiltinFunc{args: args, ctx: ctx, tp: resultType} + base := baseBuiltinFunc{args: args, tp: resultType} concat := &builtinConcatSig{base, 5} cases := []struct { @@ -323,7 +323,7 @@ func TestConcatWS(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, fcName, primitiveValsToConstants(ctx, c.args)...) require.NoError(t, err) - val, err1 := f.Eval(chunk.Row{}) + val, err1 := f.Eval(ctx, chunk.Row{}) if c.getErr { require.NotNil(t, err1) } else { @@ -355,7 +355,7 @@ func TestConcatWSSig(t *testing.T) { &Column{Index: 1, RetType: colTypes[1]}, &Column{Index: 2, RetType: colTypes[2]}, } - base := baseBuiltinFunc{args: args, ctx: ctx, tp: resultType} + base := baseBuiltinFunc{args: args, tp: resultType} concat := &builtinConcatWSSig{base, 6} cases := []struct { @@ -423,7 +423,7 @@ func TestLeft(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, ast.Left, primitiveValsToConstants(ctx, c.args)...) require.NoError(t, err) - v, err := f.Eval(chunk.Row{}) + v, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -473,7 +473,7 @@ func TestRight(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, ast.Right, primitiveValsToConstants(ctx, c.args)...) require.NoError(t, err) - v, err := f.Eval(chunk.Row{}) + v, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -532,7 +532,7 @@ func TestRepeatSig(t *testing.T) { &Column{Index: 0, RetType: colTypes[0]}, &Column{Index: 1, RetType: colTypes[1]}, } - base := baseBuiltinFunc{args: args, ctx: ctx, tp: resultType} + base := baseBuiltinFunc{args: args, tp: resultType} repeat := &builtinRepeatSig{base, 1000} cases := []struct { @@ -587,7 +587,7 @@ func TestLower(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, ast.Lower, primitiveValsToConstants(ctx, c.args)...) require.NoError(t, err) - v, err := f.Eval(chunk.Row{}) + v, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -619,7 +619,7 @@ func TestLower(t *testing.T) { require.NoError(t, err) f, err := newFunctionForTest(ctx, ast.Lower, primitiveValsToConstants(ctx, []interface{}{c.input})...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) require.NoError(t, err) require.Equal(t, c.result, d.GetString()) } @@ -645,7 +645,7 @@ func TestUpper(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, ast.Upper, primitiveValsToConstants(ctx, c.args)...) require.NoError(t, err) - v, err := f.Eval(chunk.Row{}) + v, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -678,7 +678,7 @@ func TestUpper(t *testing.T) { require.NoError(t, err) f, err := newFunctionForTest(ctx, ast.Upper, primitiveValsToConstants(ctx, []interface{}{c.input})...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) require.NoError(t, err) require.Equal(t, c.result, d.GetString()) } @@ -742,7 +742,7 @@ func TestStrcmp(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, ast.Strcmp, primitiveValsToConstants(ctx, c.args)...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -780,7 +780,7 @@ func TestReplace(t *testing.T) { f, err := newFunctionForTest(ctx, ast.Replace, primitiveValsToConstants(ctx, c.args)...) require.NoError(t, err) require.Equalf(t, c.flen, f.GetType().GetFlen(), "test %v", i) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -825,7 +825,7 @@ func TestSubstring(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, ast.Substring, primitiveValsToConstants(ctx, c.args)...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -936,7 +936,7 @@ func TestSubstringIndex(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, ast.SubstringIndex, primitiveValsToConstants(ctx, c.args)...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -982,7 +982,7 @@ func TestSpace(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, ast.Space, primitiveValsToConstants(ctx, []interface{}{c.arg})...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -1010,7 +1010,7 @@ func TestSpaceSig(t *testing.T) { args := []Expression{ &Column{Index: 0, RetType: colTypes[0]}, } - base := baseBuiltinFunc{args: args, ctx: ctx, tp: resultType} + base := baseBuiltinFunc{args: args, tp: resultType} space := &builtinSpaceSig{base, 1000} input := chunk.NewChunkWithCapacity(colTypes, 10) input.AppendInt64(0, 6) @@ -1130,7 +1130,7 @@ func TestTrim(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, ast.Trim, primitiveValsToConstants(ctx, c.args)...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -1178,7 +1178,7 @@ func TestLTrim(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, ast.LTrim, primitiveValsToConstants(ctx, []interface{}{c.arg})...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -1218,7 +1218,7 @@ func TestRTrim(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, ast.RTrim, primitiveValsToConstants(ctx, []interface{}{c.arg})...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -1259,7 +1259,7 @@ func TestHexFunc(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, ast.Hex, primitiveValsToConstants(ctx, []interface{}{c.arg})...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -1288,7 +1288,7 @@ func TestHexFunc(t *testing.T) { require.NoError(t, err) f, err := newFunctionForTest(ctx, ast.Hex, primitiveValsToConstants(ctx, []interface{}{c.arg})...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.errCode != 0 { require.Error(t, err) require.True(t, strings.Contains(err.Error(), strconv.Itoa(c.errCode))) @@ -1328,7 +1328,7 @@ func TestUnhexFunc(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, ast.Unhex, primitiveValsToConstants(ctx, []interface{}{c.arg})...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -1369,7 +1369,7 @@ func TestBitLength(t *testing.T) { require.NoError(t, err) f, err := newFunctionForTest(ctx, ast.BitLength, primitiveValsToConstants(ctx, []interface{}{c.args})...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -1639,7 +1639,7 @@ func TestRpadSig(t *testing.T) { &Column{Index: 2, RetType: colTypes[2]}, } - base := baseBuiltinFunc{args: args, ctx: ctx, tp: resultType} + base := baseBuiltinFunc{args: args, tp: resultType} rpad := &builtinRpadUTF8Sig{base, 1000} input := chunk.NewChunkWithCapacity(colTypes, 10) @@ -1685,7 +1685,7 @@ func TestInsertBinarySig(t *testing.T) { &Column{Index: 3, RetType: colTypes[3]}, } - base := baseBuiltinFunc{args: args, ctx: ctx, tp: resultType} + base := baseBuiltinFunc{args: args, tp: resultType} insert := &builtinInsertSig{base, 3} input := chunk.NewChunkWithCapacity(colTypes, 2) @@ -1820,7 +1820,7 @@ func TestLoadFile(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, ast.LoadFile, primitiveValsToConstants(ctx, []interface{}{c.arg})...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -2121,7 +2121,7 @@ func TestFromBase64Sig(t *testing.T) { resultType := &types.FieldType{} resultType.SetType(mysql.TypeVarchar) resultType.SetFlen(mysql.MaxBlobWidth) - base := baseBuiltinFunc{args: args, ctx: ctx, tp: resultType} + base := baseBuiltinFunc{args: args, tp: resultType} fromBase64 := &builtinFromBase64Sig{base, test.maxAllowPacket} input := chunk.NewChunkWithCapacity(colTypes, 1) @@ -2218,7 +2218,7 @@ func TestOrd(t *testing.T) { f, err := newFunctionForTest(ctx, ast.Ord, primitiveValsToConstants(ctx, []interface{}{c.args})...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -2401,7 +2401,7 @@ func TestToBase64(t *testing.T) { for _, test := range tests { f, err := newFunctionForTest(ctx, ast.ToBase64, primitiveValsToConstants(ctx, []interface{}{test.args})...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if test.getErr { require.Error(t, err) } else { @@ -2434,7 +2434,7 @@ func TestToBase64(t *testing.T) { require.NoError(t, err) f, err := newFunctionForTest(ctx, ast.ToBase64, primitiveValsToConstants(ctx, []interface{}{c.input})...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) require.NoError(t, err) require.Equal(t, c.result, d.GetString()) } @@ -2488,7 +2488,7 @@ func TestToBase64Sig(t *testing.T) { resultType := &types.FieldType{} resultType.SetType(mysql.TypeVarchar) resultType.SetFlen(base64NeededEncodedLength(len(test.args))) - base := baseBuiltinFunc{args: args, ctx: ctx, tp: resultType} + base := baseBuiltinFunc{args: args, tp: resultType} toBase64 := &builtinToBase64Sig{base, test.maxAllowPacket} input := chunk.NewChunkWithCapacity(colTypes, 1) @@ -2652,7 +2652,7 @@ func TestTranslate(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, ast.Translate, primitiveValsToConstants(ctx, c.args)...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.isErr { require.Error(t, err) } else { diff --git a/pkg/expression/builtin_string_vec.go b/pkg/expression/builtin_string_vec.go index 9cf6c981bbe8a..9c0b6ec965d11 100644 --- a/pkg/expression/builtin_string_vec.go +++ b/pkg/expression/builtin_string_vec.go @@ -36,7 +36,7 @@ import ( //revive:disable:defer func (b *builtinLowerSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { // if error is not nil return error, or builtinLowerSig is for binary strings (do nothing) - return b.args[0].VecEvalString(b.ctx, input, result) + return b.args[0].VecEvalString(ctx, input, result) } func (b *builtinLowerSig) vectorized() bool { @@ -50,7 +50,7 @@ func (b *builtinLowerUTF8Sig) vecEvalString(ctx sessionctx.Context, input *chunk return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } result.ReserveString(n) @@ -76,7 +76,7 @@ func (b *builtinRepeatSig) vecEvalString(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } @@ -85,7 +85,7 @@ func (b *builtinRepeatSig) vecEvalString(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf2) - if err := b.args[1].VecEvalInt(b.ctx, input, buf2); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf2); err != nil { return err } @@ -109,7 +109,7 @@ func (b *builtinRepeatSig) vecEvalString(ctx sessionctx.Context, input *chunk.Ch str := buf.GetString(i) byteLength := len(str) if uint64(byteLength)*uint64(num) > b.maxAllowedPacket { - if err := handleAllowedPacketOverflowed(b.ctx, "repeat", b.maxAllowedPacket); err != nil { + if err := handleAllowedPacketOverflowed(ctx, "repeat", b.maxAllowedPacket); err != nil { return err } result.AppendNull() @@ -135,7 +135,7 @@ func (b *builtinStringIsNullSig) vecEvalInt(ctx sessionctx.Context, input *chunk return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } @@ -162,7 +162,7 @@ func (b *builtinUpperUTF8Sig) vecEvalString(ctx sessionctx.Context, input *chunk return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } result.ReserveString(n) @@ -182,7 +182,7 @@ func (b *builtinUpperUTF8Sig) vectorized() bool { } func (b *builtinUpperSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - return b.args[0].VecEvalString(b.ctx, input, result) + return b.args[0].VecEvalString(ctx, input, result) } func (b *builtinUpperSig) vectorized() bool { @@ -196,7 +196,7 @@ func (b *builtinLeftUTF8Sig) vecEvalString(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } @@ -205,7 +205,7 @@ func (b *builtinLeftUTF8Sig) vecEvalString(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(buf2) - if err := b.args[1].VecEvalInt(b.ctx, input, buf2); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf2); err != nil { return err } @@ -241,7 +241,7 @@ func (b *builtinRightUTF8Sig) vecEvalString(ctx sessionctx.Context, input *chunk return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } @@ -250,7 +250,7 @@ func (b *builtinRightUTF8Sig) vecEvalString(ctx sessionctx.Context, input *chunk return err } defer b.bufAllocator.put(buf2) - if err := b.args[1].VecEvalInt(b.ctx, input, buf2); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf2); err != nil { return err } @@ -289,7 +289,7 @@ func (b *builtinSpaceSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chu return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf); err != nil { return err } @@ -305,7 +305,7 @@ func (b *builtinSpaceSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chu num = 0 } if uint64(num) > b.maxAllowedPacket { - if err := handleAllowedPacketOverflowed(b.ctx, "space", b.maxAllowedPacket); err != nil { + if err := handleAllowedPacketOverflowed(ctx, "space", b.maxAllowedPacket); err != nil { return err } @@ -328,7 +328,7 @@ func (b *builtinSpaceSig) vectorized() bool { // vecEvalString evals a REVERSE(str). // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_reverse func (b *builtinReverseUTF8Sig) vecEvalString(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalString(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalString(ctx, input, result); err != nil { return err } for i := 0; i < input.NumRows(); i++ { @@ -365,7 +365,7 @@ func (b *builtinConcatSig) vecEvalString(ctx sessionctx.Context, input *chunk.Ch result.ReserveString(n) var byteBuf []byte for j := 0; j < len(b.args); j++ { - if err := b.args[j].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[j].VecEvalString(ctx, input, buf); err != nil { return err } for i := 0; i < n; i++ { @@ -378,7 +378,7 @@ func (b *builtinConcatSig) vecEvalString(ctx sessionctx.Context, input *chunk.Ch } byteBuf = buf.GetBytes(i) if uint64(len(strs[i])+len(byteBuf)) > b.maxAllowedPacket { - if err := handleAllowedPacketOverflowed(b.ctx, "concat", b.maxAllowedPacket); err != nil { + if err := handleAllowedPacketOverflowed(ctx, "concat", b.maxAllowedPacket); err != nil { return err } @@ -411,7 +411,7 @@ func (b *builtinLocate3ArgsUTF8Sig) vecEvalInt(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -419,11 +419,11 @@ func (b *builtinLocate3ArgsUTF8Sig) vecEvalInt(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } // store positions in result - if err := b.args[2].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[2].VecEvalInt(ctx, input, result); err != nil { return err } @@ -477,7 +477,7 @@ func (b *builtinHexStrArgSig) vecEvalString(ctx sessionctx.Context, input *chunk return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalString(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf0); err != nil { return err } result.ReserveString(n) @@ -504,7 +504,7 @@ func (b *builtinLTrimSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chu return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } @@ -533,7 +533,7 @@ func (b *builtinQuoteSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chu return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } @@ -560,7 +560,7 @@ func (b *builtinInsertSig) vecEvalString(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(str) - if err := b.args[0].VecEvalString(b.ctx, input, str); err != nil { + if err := b.args[0].VecEvalString(ctx, input, str); err != nil { return err } pos, err := b.bufAllocator.get() @@ -568,7 +568,7 @@ func (b *builtinInsertSig) vecEvalString(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(pos) - if err := b.args[1].VecEvalInt(b.ctx, input, pos); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, pos); err != nil { return err } length, err := b.bufAllocator.get() @@ -576,7 +576,7 @@ func (b *builtinInsertSig) vecEvalString(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(length) - if err := b.args[2].VecEvalInt(b.ctx, input, length); err != nil { + if err := b.args[2].VecEvalInt(ctx, input, length); err != nil { return err } newstr, err := b.bufAllocator.get() @@ -584,7 +584,7 @@ func (b *builtinInsertSig) vecEvalString(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(newstr) - if err := b.args[3].VecEvalString(b.ctx, input, newstr); err != nil { + if err := b.args[3].VecEvalString(ctx, input, newstr); err != nil { return err } posIs := pos.Int64s() @@ -608,7 +608,7 @@ func (b *builtinInsertSig) vecEvalString(ctx sessionctx.Context, input *chunk.Ch } newstrI := newstr.GetString(i) if uint64(strLength-lengthI+int64(len(newstrI))) > b.maxAllowedPacket { - if err := handleAllowedPacketOverflowed(b.ctx, "insert", b.maxAllowedPacket); err != nil { + if err := handleAllowedPacketOverflowed(ctx, "insert", b.maxAllowedPacket); err != nil { return err } @@ -638,7 +638,7 @@ func (b *builtinConcatWSSig) vecEvalString(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(bufs[i]) - if err := b.args[i].VecEvalString(b.ctx, input, bufs[i]); err != nil { + if err := b.args[i].VecEvalString(ctx, input, bufs[i]); err != nil { return err } } @@ -672,7 +672,7 @@ func (b *builtinConcatWSSig) vecEvalString(ctx sessionctx.Context, input *chunk. targetLengths[i] += len(seps[i]) } if uint64(targetLengths[i]) > b.maxAllowedPacket { - if err := handleAllowedPacketOverflowed(b.ctx, "concat_ws", b.maxAllowedPacket); err != nil { + if err := handleAllowedPacketOverflowed(ctx, "concat_ws", b.maxAllowedPacket); err != nil { return err } @@ -710,7 +710,7 @@ func (b *builtinConvertSig) vecEvalString(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(expr) - if err := b.args[0].VecEvalString(b.ctx, input, expr); err != nil { + if err := b.args[0].VecEvalString(ctx, input, expr); err != nil { return err } argTp, resultTp := b.args[0].GetType(), b.tp @@ -781,7 +781,7 @@ func (b *builtinSubstringIndexSig) vecEvalString(ctx sessionctx.Context, input * return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } @@ -790,7 +790,7 @@ func (b *builtinSubstringIndexSig) vecEvalString(ctx sessionctx.Context, input * return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } @@ -799,7 +799,7 @@ func (b *builtinSubstringIndexSig) vecEvalString(ctx sessionctx.Context, input * return err } defer b.bufAllocator.put(buf2) - if err := b.args[2].VecEvalInt(b.ctx, input, buf2); err != nil { + if err := b.args[2].VecEvalInt(ctx, input, buf2); err != nil { return err } @@ -864,7 +864,7 @@ func (b *builtinUnHexSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chu return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } @@ -901,7 +901,7 @@ func (b *builtinExportSet3ArgSig) vecEvalString(ctx sessionctx.Context, input *c return err } defer b.bufAllocator.put(bits) - if err := b.args[0].VecEvalInt(b.ctx, input, bits); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, bits); err != nil { return err } on, err := b.bufAllocator.get() @@ -909,7 +909,7 @@ func (b *builtinExportSet3ArgSig) vecEvalString(ctx sessionctx.Context, input *c return err } defer b.bufAllocator.put(on) - if err := b.args[1].VecEvalString(b.ctx, input, on); err != nil { + if err := b.args[1].VecEvalString(ctx, input, on); err != nil { return err } off, err := b.bufAllocator.get() @@ -917,7 +917,7 @@ func (b *builtinExportSet3ArgSig) vecEvalString(ctx sessionctx.Context, input *c return err } defer b.bufAllocator.put(off) - if err := b.args[2].VecEvalString(b.ctx, input, off); err != nil { + if err := b.args[2].VecEvalString(ctx, input, off); err != nil { return err } result.ReserveString(n) @@ -946,7 +946,7 @@ func (b *builtinASCIISig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, return err } defer b.bufAllocator.put(buf) - if err = b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err = b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } result.ResizeInt64(n, false) @@ -979,7 +979,7 @@ func (b *builtinLpadSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chun return err } defer b.bufAllocator.put(strBuf) - if err := b.args[0].VecEvalString(b.ctx, input, strBuf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, strBuf); err != nil { return err } lenBuf, err := b.bufAllocator.get() @@ -987,7 +987,7 @@ func (b *builtinLpadSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chun return err } defer b.bufAllocator.put(lenBuf) - if err := b.args[1].VecEvalInt(b.ctx, input, lenBuf); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, lenBuf); err != nil { return err } padBuf, err := b.bufAllocator.get() @@ -995,7 +995,7 @@ func (b *builtinLpadSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chun return err } defer b.bufAllocator.put(padBuf) - if err := b.args[2].VecEvalString(b.ctx, input, padBuf); err != nil { + if err := b.args[2].VecEvalString(ctx, input, padBuf); err != nil { return err } @@ -1009,7 +1009,7 @@ func (b *builtinLpadSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chun } targetLength := int(i64s[i]) if uint64(targetLength) > b.maxAllowedPacket { - if err := handleAllowedPacketOverflowed(b.ctx, "lpad", b.maxAllowedPacket); err != nil { + if err := handleAllowedPacketOverflowed(ctx, "lpad", b.maxAllowedPacket); err != nil { return err } @@ -1051,7 +1051,7 @@ func (b *builtinLpadUTF8Sig) vecEvalString(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -1059,7 +1059,7 @@ func (b *builtinLpadUTF8Sig) vecEvalString(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalInt(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf1); err != nil { return err } buf2, err := b.bufAllocator.get() @@ -1067,7 +1067,7 @@ func (b *builtinLpadUTF8Sig) vecEvalString(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(buf2) - if err := b.args[2].VecEvalString(b.ctx, input, buf2); err != nil { + if err := b.args[2].VecEvalString(ctx, input, buf2); err != nil { return err } @@ -1080,7 +1080,7 @@ func (b *builtinLpadUTF8Sig) vecEvalString(ctx sessionctx.Context, input *chunk. } targetLength := int(i64s[i]) if uint64(targetLength)*uint64(mysql.MaxBytesOfCharacter) > b.maxAllowedPacket { - if err := handleAllowedPacketOverflowed(b.ctx, "lpad", b.maxAllowedPacket); err != nil { + if err := handleAllowedPacketOverflowed(ctx, "lpad", b.maxAllowedPacket); err != nil { return err } @@ -1120,7 +1120,7 @@ func (b *builtinFindInSetSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(str) - if err := b.args[0].VecEvalString(b.ctx, input, str); err != nil { + if err := b.args[0].VecEvalString(ctx, input, str); err != nil { return err } strlist, err := b.bufAllocator.get() @@ -1128,7 +1128,7 @@ func (b *builtinFindInSetSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(strlist) - if err := b.args[1].VecEvalString(b.ctx, input, strlist); err != nil { + if err := b.args[1].VecEvalString(ctx, input, strlist); err != nil { return err } result.ResizeInt64(n, false) @@ -1163,7 +1163,7 @@ func (b *builtinLeftSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chun return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } buf2, err := b.bufAllocator.get() @@ -1171,7 +1171,7 @@ func (b *builtinLeftSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chun return err } defer b.bufAllocator.put(buf2) - if err := b.args[1].VecEvalInt(b.ctx, input, buf2); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf2); err != nil { return err } left := buf2.Int64s() @@ -1197,7 +1197,7 @@ func (b *builtinReverseSig) vectorized() bool { } func (b *builtinReverseSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalString(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalString(ctx, input, result); err != nil { return err } for i := 0; i < input.NumRows(); i++ { @@ -1223,7 +1223,7 @@ func (b *builtinRTrimSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chu return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } @@ -1252,7 +1252,7 @@ func (b *builtinStrcmpSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(leftBuf) - if err := b.args[0].VecEvalString(b.ctx, input, leftBuf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, leftBuf); err != nil { return err } rightBuf, err := b.bufAllocator.get() @@ -1260,7 +1260,7 @@ func (b *builtinStrcmpSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(rightBuf) - if err := b.args[1].VecEvalString(b.ctx, input, rightBuf); err != nil { + if err := b.args[1].VecEvalString(ctx, input, rightBuf); err != nil { return err } result.ResizeInt64(n, false) @@ -1292,10 +1292,10 @@ func (b *builtinLocate2ArgsSig) vecEvalInt(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(buf1) - if err := b.args[0].VecEvalString(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf0); err != nil { return err } - if err := b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } result.ResizeInt64(n, false) @@ -1328,7 +1328,7 @@ func (b *builtinLocate3ArgsSig) vecEvalInt(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalString(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -1336,11 +1336,11 @@ func (b *builtinLocate3ArgsSig) vecEvalInt(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } // store positions in result - if err := b.args[2].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[2].VecEvalInt(ctx, input, result); err != nil { return err } @@ -1387,7 +1387,7 @@ func (b *builtinExportSet4ArgSig) vecEvalString(ctx sessionctx.Context, input *c return err } defer b.bufAllocator.put(bits) - if err := b.args[0].VecEvalInt(b.ctx, input, bits); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, bits); err != nil { return err } on, err := b.bufAllocator.get() @@ -1395,7 +1395,7 @@ func (b *builtinExportSet4ArgSig) vecEvalString(ctx sessionctx.Context, input *c return err } defer b.bufAllocator.put(on) - if err := b.args[1].VecEvalString(b.ctx, input, on); err != nil { + if err := b.args[1].VecEvalString(ctx, input, on); err != nil { return err } off, err := b.bufAllocator.get() @@ -1403,7 +1403,7 @@ func (b *builtinExportSet4ArgSig) vecEvalString(ctx sessionctx.Context, input *c return err } defer b.bufAllocator.put(off) - if err := b.args[2].VecEvalString(b.ctx, input, off); err != nil { + if err := b.args[2].VecEvalString(ctx, input, off); err != nil { return err } separator, err := b.bufAllocator.get() @@ -1411,7 +1411,7 @@ func (b *builtinExportSet4ArgSig) vecEvalString(ctx sessionctx.Context, input *c return err } defer b.bufAllocator.put(separator) - if err := b.args[3].VecEvalString(b.ctx, input, separator); err != nil { + if err := b.args[3].VecEvalString(ctx, input, separator); err != nil { return err } result.ReserveString(n) @@ -1440,7 +1440,7 @@ func (b *builtinRpadSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chun return err } defer b.bufAllocator.put(strBuf) - if err := b.args[0].VecEvalString(b.ctx, input, strBuf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, strBuf); err != nil { return err } lenBuf, err := b.bufAllocator.get() @@ -1448,7 +1448,7 @@ func (b *builtinRpadSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chun return err } defer b.bufAllocator.put(lenBuf) - if err := b.args[1].VecEvalInt(b.ctx, input, lenBuf); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, lenBuf); err != nil { return err } padBuf, err := b.bufAllocator.get() @@ -1456,7 +1456,7 @@ func (b *builtinRpadSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chun return err } defer b.bufAllocator.put(padBuf) - if err := b.args[2].VecEvalString(b.ctx, input, padBuf); err != nil { + if err := b.args[2].VecEvalString(ctx, input, padBuf); err != nil { return err } @@ -1470,7 +1470,7 @@ func (b *builtinRpadSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chun } targetLength := int(i64s[i]) if uint64(targetLength) > b.maxAllowedPacket { - if err := handleAllowedPacketOverflowed(b.ctx, "rpad", b.maxAllowedPacket); err != nil { + if err := handleAllowedPacketOverflowed(ctx, "rpad", b.maxAllowedPacket); err != nil { return err } @@ -1511,7 +1511,7 @@ func (b *builtinFormatWithLocaleSig) vecEvalString(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(dBuf) - if err := b.args[1].VecEvalInt(b.ctx, input, dBuf); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, dBuf); err != nil { return err } dInt64s := dBuf.Int64s() @@ -1521,7 +1521,7 @@ func (b *builtinFormatWithLocaleSig) vecEvalString(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(localeBuf) - if err := b.args[2].VecEvalString(b.ctx, input, localeBuf); err != nil { + if err := b.args[2].VecEvalString(ctx, input, localeBuf); err != nil { return err } @@ -1532,13 +1532,13 @@ func (b *builtinFormatWithLocaleSig) vecEvalString(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(xBuf) - if err := b.args[0].VecEvalDecimal(b.ctx, input, xBuf); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, xBuf); err != nil { return err } result.ReserveString(n) xBuf.MergeNulls(dBuf) - return formatDecimal(b.ctx, xBuf, dInt64s, result, localeBuf) + return formatDecimal(ctx, xBuf, dInt64s, result, localeBuf) } // real x @@ -1547,13 +1547,13 @@ func (b *builtinFormatWithLocaleSig) vecEvalString(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(xBuf) - if err := b.args[0].VecEvalReal(b.ctx, input, xBuf); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, xBuf); err != nil { return err } result.ReserveString(n) xBuf.MergeNulls(dBuf) - return formatReal(b.ctx, xBuf, dInt64s, result, localeBuf) + return formatReal(ctx, xBuf, dInt64s, result, localeBuf) } func (b *builtinSubstring2ArgsSig) vectorized() bool { @@ -1567,7 +1567,7 @@ func (b *builtinSubstring2ArgsSig) vecEvalString(ctx sessionctx.Context, input * return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } buf2, err := b.bufAllocator.get() @@ -1575,7 +1575,7 @@ func (b *builtinSubstring2ArgsSig) vecEvalString(ctx sessionctx.Context, input * return err } defer b.bufAllocator.put(buf2) - if err := b.args[1].VecEvalInt(b.ctx, input, buf2); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf2); err != nil { return err } @@ -1616,7 +1616,7 @@ func (b *builtinSubstring2ArgsUTF8Sig) vecEvalString(ctx sessionctx.Context, inp return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } @@ -1625,7 +1625,7 @@ func (b *builtinSubstring2ArgsUTF8Sig) vecEvalString(ctx sessionctx.Context, inp return err } defer b.bufAllocator.put(buf2) - if err := b.args[1].VecEvalInt(b.ctx, input, buf2); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf2); err != nil { return err } @@ -1669,7 +1669,7 @@ func (b *builtinTrim2ArgsSig) vecEvalString(ctx sessionctx.Context, input *chunk return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -1677,7 +1677,7 @@ func (b *builtinTrim2ArgsSig) vecEvalString(ctx sessionctx.Context, input *chunk return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } @@ -1707,7 +1707,7 @@ func (b *builtinInstrUTF8Sig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(str) - if err := b.args[0].VecEvalString(b.ctx, input, str); err != nil { + if err := b.args[0].VecEvalString(ctx, input, str); err != nil { return err } substr, err := b.bufAllocator.get() @@ -1715,7 +1715,7 @@ func (b *builtinInstrUTF8Sig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(substr) - if err := b.args[1].VecEvalString(b.ctx, input, substr); err != nil { + if err := b.args[1].VecEvalString(ctx, input, substr); err != nil { return err } result.ResizeInt64(n, false) @@ -1756,7 +1756,7 @@ func (b *builtinOctStringSig) vecEvalString(ctx sessionctx.Context, input *chunk return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } @@ -1805,7 +1805,7 @@ func (b *builtinEltSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalInt(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf0); err != nil { return err } @@ -1829,7 +1829,7 @@ func (b *builtinEltSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(bufs[j]) - if err := b.args[j].VecEvalString(b.ctx, input, bufs[j]); err != nil { + if err := b.args[j].VecEvalString(ctx, input, bufs[j]); err != nil { return err } } @@ -1855,7 +1855,7 @@ func (b *builtinInsertUTF8Sig) vecEvalString(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -1863,7 +1863,7 @@ func (b *builtinInsertUTF8Sig) vecEvalString(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalInt(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf1); err != nil { return err } buf2, err := b.bufAllocator.get() @@ -1871,7 +1871,7 @@ func (b *builtinInsertUTF8Sig) vecEvalString(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(buf2) - if err := b.args[2].VecEvalInt(b.ctx, input, buf2); err != nil { + if err := b.args[2].VecEvalInt(ctx, input, buf2); err != nil { return err } buf3, err := b.bufAllocator.get() @@ -1879,7 +1879,7 @@ func (b *builtinInsertUTF8Sig) vecEvalString(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(buf3) - if err := b.args[3].VecEvalString(b.ctx, input, buf3); err != nil { + if err := b.args[3].VecEvalString(ctx, input, buf3); err != nil { return err } @@ -1910,7 +1910,7 @@ func (b *builtinInsertUTF8Sig) vecEvalString(ctx sessionctx.Context, input *chun strHead := string(runes[0 : pos-1]) strTail := string(runes[pos+length-1:]) if uint64(len(strHead)+len(newstr)+len(strTail)) > b.maxAllowedPacket { - if err := handleAllowedPacketOverflowed(b.ctx, "insert", b.maxAllowedPacket); err != nil { + if err := handleAllowedPacketOverflowed(ctx, "insert", b.maxAllowedPacket); err != nil { return err } @@ -1935,7 +1935,7 @@ func (b *builtinExportSet5ArgSig) vecEvalString(ctx sessionctx.Context, input *c return err } defer b.bufAllocator.put(bits) - if err := b.args[0].VecEvalInt(b.ctx, input, bits); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, bits); err != nil { return err } on, err := b.bufAllocator.get() @@ -1943,7 +1943,7 @@ func (b *builtinExportSet5ArgSig) vecEvalString(ctx sessionctx.Context, input *c return err } defer b.bufAllocator.put(on) - if err := b.args[1].VecEvalString(b.ctx, input, on); err != nil { + if err := b.args[1].VecEvalString(ctx, input, on); err != nil { return err } off, err := b.bufAllocator.get() @@ -1951,7 +1951,7 @@ func (b *builtinExportSet5ArgSig) vecEvalString(ctx sessionctx.Context, input *c return err } defer b.bufAllocator.put(off) - if err := b.args[2].VecEvalString(b.ctx, input, off); err != nil { + if err := b.args[2].VecEvalString(ctx, input, off); err != nil { return err } separator, err := b.bufAllocator.get() @@ -1959,7 +1959,7 @@ func (b *builtinExportSet5ArgSig) vecEvalString(ctx sessionctx.Context, input *c return err } defer b.bufAllocator.put(separator) - if err := b.args[3].VecEvalString(b.ctx, input, separator); err != nil { + if err := b.args[3].VecEvalString(ctx, input, separator); err != nil { return err } numberOfBits, err := b.bufAllocator.get() @@ -1967,7 +1967,7 @@ func (b *builtinExportSet5ArgSig) vecEvalString(ctx sessionctx.Context, input *c return err } defer b.bufAllocator.put(numberOfBits) - if err := b.args[4].VecEvalInt(b.ctx, input, numberOfBits); err != nil { + if err := b.args[4].VecEvalInt(ctx, input, numberOfBits); err != nil { return err } result.ReserveString(n) @@ -2001,7 +2001,7 @@ func (b *builtinSubstring3ArgsUTF8Sig) vecEvalString(ctx sessionctx.Context, inp return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } @@ -2010,7 +2010,7 @@ func (b *builtinSubstring3ArgsUTF8Sig) vecEvalString(ctx sessionctx.Context, inp return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalInt(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf1); err != nil { return err } @@ -2019,7 +2019,7 @@ func (b *builtinSubstring3ArgsUTF8Sig) vecEvalString(ctx sessionctx.Context, inp return err } defer b.bufAllocator.put(buf2) - if err := b.args[2].VecEvalInt(b.ctx, input, buf2); err != nil { + if err := b.args[2].VecEvalInt(ctx, input, buf2); err != nil { return err } @@ -2080,13 +2080,13 @@ func (b *builtinTrim3ArgsSig) vecEvalString(ctx sessionctx.Context, input *chunk return err } defer b.bufAllocator.put(buf2) - if err := b.args[0].VecEvalString(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf0); err != nil { return err } - if err := b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } - if err := b.args[2].VecEvalInt(b.ctx, input, buf2); err != nil { + if err := b.args[2].VecEvalInt(ctx, input, buf2); err != nil { return err } result.ReserveString(n) @@ -2122,7 +2122,7 @@ func (b *builtinOrdSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, r return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } @@ -2160,7 +2160,7 @@ func (b *builtinInstrSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, return err } defer b.bufAllocator.put(str) - if err := b.args[0].VecEvalString(b.ctx, input, str); err != nil { + if err := b.args[0].VecEvalString(ctx, input, str); err != nil { return err } substr, err := b.bufAllocator.get() @@ -2168,7 +2168,7 @@ func (b *builtinInstrSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, return err } defer b.bufAllocator.put(substr) - if err := b.args[1].VecEvalString(b.ctx, input, substr); err != nil { + if err := b.args[1].VecEvalString(ctx, input, substr); err != nil { return err } result.ResizeInt64(n, false) @@ -2199,7 +2199,7 @@ func (b *builtinLengthSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } @@ -2229,7 +2229,7 @@ func (b *builtinLocate2ArgsUTF8Sig) vecEvalInt(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -2237,7 +2237,7 @@ func (b *builtinLocate2ArgsUTF8Sig) vecEvalInt(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } @@ -2282,7 +2282,7 @@ func (b *builtinBitLengthSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } @@ -2314,7 +2314,7 @@ func (b *builtinCharSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chun } buf[i] = te defer b.bufAllocator.put(buf[i]) - if err := b.args[i].VecEvalInt(b.ctx, input, buf[i]); err != nil { + if err := b.args[i].VecEvalInt(ctx, input, buf[i]); err != nil { return err } } @@ -2331,7 +2331,7 @@ func (b *builtinCharSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chun } encBuf := &bytes.Buffer{} enc := charset.FindEncoding(b.tp.GetCharset()) - hasStrictMode := b.ctx.GetSessionVars().StrictSQLMode + hasStrictMode := ctx.GetSessionVars().StrictSQLMode for i := 0; i < n; i++ { bigints = bigints[0:0] for j := 0; j < l-1; j++ { @@ -2343,7 +2343,7 @@ func (b *builtinCharSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chun dBytes := b.convertToBytes(bigints) resultBytes, err := enc.Transform(encBuf, dBytes, charset.OpDecode) if err != nil { - b.ctx.GetSessionVars().StmtCtx.AppendWarning(err) + ctx.GetSessionVars().StmtCtx.AppendWarning(err) if hasStrictMode { result.AppendNull() continue @@ -2367,7 +2367,7 @@ func (b *builtinReplaceSig) vecEvalString(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -2375,7 +2375,7 @@ func (b *builtinReplaceSig) vecEvalString(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } buf2, err := b.bufAllocator.get() @@ -2383,7 +2383,7 @@ func (b *builtinReplaceSig) vecEvalString(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(buf2) - if err := b.args[2].VecEvalString(b.ctx, input, buf2); err != nil { + if err := b.args[2].VecEvalString(ctx, input, buf2); err != nil { return err } @@ -2419,7 +2419,7 @@ func (b *builtinMakeSetSig) vecEvalString(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(bitsBuf) - if err := b.args[0].VecEvalInt(b.ctx, input, bitsBuf); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, bitsBuf); err != nil { return err } @@ -2430,7 +2430,7 @@ func (b *builtinMakeSetSig) vecEvalString(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(strBuf[i-1]) - if err := b.args[i].VecEvalString(b.ctx, input, strBuf[i-1]); err != nil { + if err := b.args[i].VecEvalString(ctx, input, strBuf[i-1]); err != nil { return err } } @@ -2467,7 +2467,7 @@ func (b *builtinOctIntSig) vecEvalString(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf); err != nil { return err } @@ -2496,7 +2496,7 @@ func (b *builtinToBase64Sig) vecEvalString(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } result.ReserveString(n) @@ -2511,7 +2511,7 @@ func (b *builtinToBase64Sig) vecEvalString(ctx sessionctx.Context, input *chunk. result.AppendNull() continue } else if needEncodeLen > int(b.maxAllowedPacket) { - if err := handleAllowedPacketOverflowed(b.ctx, "to_base64", b.maxAllowedPacket); err != nil { + if err := handleAllowedPacketOverflowed(ctx, "to_base64", b.maxAllowedPacket); err != nil { return err } @@ -2543,7 +2543,7 @@ func (b *builtinTrim1ArgSig) vecEvalString(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } @@ -2574,7 +2574,7 @@ func (b *builtinRpadUTF8Sig) vecEvalString(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -2582,7 +2582,7 @@ func (b *builtinRpadUTF8Sig) vecEvalString(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalInt(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf1); err != nil { return err } buf2, err := b.bufAllocator.get() @@ -2590,7 +2590,7 @@ func (b *builtinRpadUTF8Sig) vecEvalString(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(buf2) - if err := b.args[2].VecEvalString(b.ctx, input, buf2); err != nil { + if err := b.args[2].VecEvalString(ctx, input, buf2); err != nil { return err } @@ -2603,7 +2603,7 @@ func (b *builtinRpadUTF8Sig) vecEvalString(ctx sessionctx.Context, input *chunk. } targetLength := int(i64s[i]) if uint64(targetLength)*uint64(mysql.MaxBytesOfCharacter) > b.maxAllowedPacket { - if err := handleAllowedPacketOverflowed(b.ctx, "rpad", b.maxAllowedPacket); err != nil { + if err := handleAllowedPacketOverflowed(ctx, "rpad", b.maxAllowedPacket); err != nil { return err } @@ -2643,7 +2643,7 @@ func (b *builtinCharLengthBinarySig) vecEvalInt(ctx sessionctx.Context, input *c return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } result.ResizeInt64(n, false) @@ -2670,7 +2670,7 @@ func (b *builtinBinSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf); err != nil { return err } @@ -2700,7 +2700,7 @@ func (b *builtinFormatSig) vecEvalString(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(dBuf) - if err := b.args[1].VecEvalInt(b.ctx, input, dBuf); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, dBuf); err != nil { return err } dInt64s := dBuf.Int64s() @@ -2712,13 +2712,13 @@ func (b *builtinFormatSig) vecEvalString(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(xBuf) - if err := b.args[0].VecEvalDecimal(b.ctx, input, xBuf); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, xBuf); err != nil { return err } result.ReserveString(n) xBuf.MergeNulls(dBuf) - return formatDecimal(b.ctx, xBuf, dInt64s, result, nil) + return formatDecimal(ctx, xBuf, dInt64s, result, nil) } // real x @@ -2727,13 +2727,13 @@ func (b *builtinFormatSig) vecEvalString(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(xBuf) - if err := b.args[0].VecEvalReal(b.ctx, input, xBuf); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, xBuf); err != nil { return err } result.ReserveString(n) xBuf.MergeNulls(dBuf) - return formatReal(b.ctx, xBuf, dInt64s, result, nil) + return formatReal(ctx, xBuf, dInt64s, result, nil) } func (b *builtinRightSig) vectorized() bool { @@ -2747,7 +2747,7 @@ func (b *builtinRightSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chu return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } buf2, err := b.bufAllocator.get() @@ -2755,7 +2755,7 @@ func (b *builtinRightSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chu return err } defer b.bufAllocator.put(buf2) - if err := b.args[1].VecEvalInt(b.ctx, input, buf2); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf2); err != nil { return err } right := buf2.Int64s() @@ -2790,7 +2790,7 @@ func (b *builtinSubstring3ArgsSig) vecEvalString(ctx sessionctx.Context, input * return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } @@ -2799,7 +2799,7 @@ func (b *builtinSubstring3ArgsSig) vecEvalString(ctx sessionctx.Context, input * return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalInt(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf1); err != nil { return err } @@ -2808,7 +2808,7 @@ func (b *builtinSubstring3ArgsSig) vecEvalString(ctx sessionctx.Context, input * return err } defer b.bufAllocator.put(buf2) - if err := b.args[2].VecEvalInt(b.ctx, input, buf2); err != nil { + if err := b.args[2].VecEvalInt(ctx, input, buf2); err != nil { return err } @@ -2859,7 +2859,7 @@ func (b *builtinHexIntArgSig) vecEvalString(ctx sessionctx.Context, input *chunk return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf); err != nil { return err } result.ReserveString(n) @@ -2887,7 +2887,7 @@ func (b *builtinFromBase64Sig) vecEvalString(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } @@ -2903,7 +2903,7 @@ func (b *builtinFromBase64Sig) vecEvalString(ctx sessionctx.Context, input *chun result.AppendNull() continue } else if needDecodeLen > int(b.maxAllowedPacket) { - if err := handleAllowedPacketOverflowed(b.ctx, "from_base64", b.maxAllowedPacket); err != nil { + if err := handleAllowedPacketOverflowed(ctx, "from_base64", b.maxAllowedPacket); err != nil { return err } @@ -2935,7 +2935,7 @@ func (b *builtinCharLengthUTF8Sig) vecEvalInt(ctx sessionctx.Context, input *chu return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } @@ -3049,13 +3049,13 @@ func (b *builtinTranslateBinarySig) vecEvalString(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(buf2) - if err := b.args[0].VecEvalString(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf0); err != nil { return err } - if err := b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } - if err := b.args[2].VecEvalString(b.ctx, input, buf2); err != nil { + if err := b.args[2].VecEvalString(ctx, input, buf2); err != nil { return err } result.ReserveString(n) @@ -3122,13 +3122,13 @@ func (b *builtinTranslateUTF8Sig) vecEvalString(ctx sessionctx.Context, input *c return err } defer b.bufAllocator.put(buf2) - if err := b.args[0].VecEvalString(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf0); err != nil { return err } - if err := b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } - if err := b.args[2].VecEvalString(b.ctx, input, buf2); err != nil { + if err := b.args[2].VecEvalString(ctx, input, buf2); err != nil { return err } result.ReserveString(n) diff --git a/pkg/expression/builtin_string_vec_generated.go b/pkg/expression/builtin_string_vec_generated.go index 861ed3397f71b..696353dcd7a58 100644 --- a/pkg/expression/builtin_string_vec_generated.go +++ b/pkg/expression/builtin_string_vec_generated.go @@ -30,7 +30,7 @@ func (b *builtinFieldIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chu return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalInt(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -47,7 +47,7 @@ func (b *builtinFieldIntSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chu i64s[i] = 0 } for i := 1; i < len(b.args); i++ { - if err := b.args[i].VecEvalInt(b.ctx, input, buf1); err != nil { + if err := b.args[i].VecEvalInt(ctx, input, buf1); err != nil { return err } @@ -80,7 +80,7 @@ func (b *builtinFieldRealSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalReal(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -97,7 +97,7 @@ func (b *builtinFieldRealSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch i64s[i] = 0 } for i := 1; i < len(b.args); i++ { - if err := b.args[i].VecEvalReal(b.ctx, input, buf1); err != nil { + if err := b.args[i].VecEvalReal(ctx, input, buf1); err != nil { return err } @@ -130,7 +130,7 @@ func (b *builtinFieldStringSig) vecEvalInt(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalString(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -145,7 +145,7 @@ func (b *builtinFieldStringSig) vecEvalInt(ctx sessionctx.Context, input *chunk. i64s[i] = 0 } for i := 1; i < len(b.args); i++ { - if err := b.args[i].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[i].VecEvalString(ctx, input, buf1); err != nil { return err } diff --git a/pkg/expression/builtin_test.go b/pkg/expression/builtin_test.go index 72dc0a918a510..703059a2b1b26 100644 --- a/pkg/expression/builtin_test.go +++ b/pkg/expression/builtin_test.go @@ -178,6 +178,7 @@ func newFunctionForTest(ctx sessionctx.Context, funcName string, args ...Express FuncName: model.NewCIStr(funcName), RetType: f.getRetTp(), Function: f, + ctx: ctx, }, nil } diff --git a/pkg/expression/builtin_time.go b/pkg/expression/builtin_time.go index a62acec89f00f..82f9708a34fdb 100644 --- a/pkg/expression/builtin_time.go +++ b/pkg/expression/builtin_time.go @@ -127,10 +127,6 @@ var ( _ functionClass = &addSubDateFunctionClass{} ) -var ( - _ builtinFuncNew = &builtinUnixTimestampIntSig{} -) - var ( _ builtinFunc = &builtinDateSig{} _ builtinFunc = &builtinDateLiteralSig{} @@ -275,13 +271,13 @@ func (b *builtinDateSig) Clone() builtinFunc { // evalTime evals DATE(expr). // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date func (b *builtinDateSig) evalTime(ctx sessionctx.Context, row chunk.Row) (types.Time, bool, error) { - expr, isNull, err := b.args[0].EvalTime(b.ctx, row) + expr, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { - return types.ZeroTime, true, handleInvalidTimeError(b.ctx, err) + return types.ZeroTime, true, handleInvalidTimeError(ctx, err) } - if expr.IsZero() && b.ctx.GetSessionVars().SQLMode.HasNoZeroDateMode() { - return types.ZeroTime, true, handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, expr.String())) + if expr.IsZero() && ctx.GetSessionVars().SQLMode.HasNoZeroDateMode() { + return types.ZeroTime, true, handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, expr.String())) } expr.SetCoreTime(types.FromDate(expr.Year(), expr.Month(), expr.Day(), 0, 0, 0, 0)) @@ -301,7 +297,7 @@ func (c *dateLiteralFunctionClass) getFunction(ctx sessionctx.Context, args []Ex if !ok { panic("Unexpected parameter for date literal") } - dt, err := con.Eval(chunk.Row{}) + dt, err := con.Eval(ctx, chunk.Row{}) if err != nil { return nil, err } @@ -336,7 +332,7 @@ func (b *builtinDateLiteralSig) Clone() builtinFunc { // evalTime evals DATE 'stringLit'. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-literals.html func (b *builtinDateLiteralSig) evalTime(ctx sessionctx.Context, row chunk.Row) (types.Time, bool, error) { - mode := b.ctx.GetSessionVars().SQLMode + mode := ctx.GetSessionVars().SQLMode if mode.HasNoZeroDateMode() && b.literal.IsZero() { return b.literal, true, types.ErrWrongValue.GenWithStackByArgs(types.DateStr, b.literal.String()) } @@ -376,20 +372,20 @@ func (b *builtinDateDiffSig) Clone() builtinFunc { // evalInt evals a builtinDateDiffSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_datediff func (b *builtinDateDiffSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - lhs, isNull, err := b.args[0].EvalTime(b.ctx, row) + lhs, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { - return 0, true, handleInvalidTimeError(b.ctx, err) + return 0, true, handleInvalidTimeError(ctx, err) } - rhs, isNull, err := b.args[1].EvalTime(b.ctx, row) + rhs, isNull, err := b.args[1].EvalTime(ctx, row) if isNull || err != nil { - return 0, true, handleInvalidTimeError(b.ctx, err) + return 0, true, handleInvalidTimeError(ctx, err) } if invalidLHS, invalidRHS := lhs.InvalidZero(), rhs.InvalidZero(); invalidLHS || invalidRHS { if invalidLHS { - err = handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, lhs.String())) + err = handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, lhs.String())) } if invalidRHS { - err = handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, rhs.String())) + err = handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, rhs.String())) } return 0, true, err } @@ -487,17 +483,17 @@ func (b *builtinDurationDurationTimeDiffSig) Clone() builtinFunc { // evalDuration evals a builtinDurationDurationTimeDiffSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_timediff func (b *builtinDurationDurationTimeDiffSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (d types.Duration, isNull bool, err error) { - lhs, isNull, err := b.args[0].EvalDuration(b.ctx, row) + lhs, isNull, err := b.args[0].EvalDuration(ctx, row) if isNull || err != nil { return d, isNull, err } - rhs, isNull, err := b.args[1].EvalDuration(b.ctx, row) + rhs, isNull, err := b.args[1].EvalDuration(ctx, row) if isNull || err != nil { return d, isNull, err } - d, isNull, err = calculateDurationTimeDiff(b.ctx, lhs, rhs) + d, isNull, err = calculateDurationTimeDiff(ctx, lhs, rhs) return d, isNull, err } @@ -514,17 +510,17 @@ func (b *builtinTimeTimeTimeDiffSig) Clone() builtinFunc { // evalDuration evals a builtinTimeTimeTimeDiffSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_timediff func (b *builtinTimeTimeTimeDiffSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (d types.Duration, isNull bool, err error) { - lhs, isNull, err := b.args[0].EvalTime(b.ctx, row) + lhs, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { return d, isNull, err } - rhs, isNull, err := b.args[1].EvalTime(b.ctx, row) + rhs, isNull, err := b.args[1].EvalTime(ctx, row) if isNull || err != nil { return d, isNull, err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx d, isNull, err = calculateTimeDiff(sc, lhs, rhs) return d, isNull, err } @@ -542,23 +538,23 @@ func (b *builtinDurationStringTimeDiffSig) Clone() builtinFunc { // evalDuration evals a builtinDurationStringTimeDiffSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_timediff func (b *builtinDurationStringTimeDiffSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (d types.Duration, isNull bool, err error) { - lhs, isNull, err := b.args[0].EvalDuration(b.ctx, row) + lhs, isNull, err := b.args[0].EvalDuration(ctx, row) if isNull || err != nil { return d, isNull, err } - rhsStr, isNull, err := b.args[1].EvalString(b.ctx, row) + rhsStr, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return d, isNull, err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx rhs, _, isDuration, err := convertStringToDuration(sc, rhsStr, b.tp.GetDecimal()) if err != nil || !isDuration { return d, true, err } - d, isNull, err = calculateDurationTimeDiff(b.ctx, lhs, rhs) + d, isNull, err = calculateDurationTimeDiff(ctx, lhs, rhs) return d, isNull, err } @@ -575,23 +571,23 @@ func (b *builtinStringDurationTimeDiffSig) Clone() builtinFunc { // evalDuration evals a builtinStringDurationTimeDiffSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_timediff func (b *builtinStringDurationTimeDiffSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (d types.Duration, isNull bool, err error) { - lhsStr, isNull, err := b.args[0].EvalString(b.ctx, row) + lhsStr, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return d, isNull, err } - rhs, isNull, err := b.args[1].EvalDuration(b.ctx, row) + rhs, isNull, err := b.args[1].EvalDuration(ctx, row) if isNull || err != nil { return d, isNull, err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx lhs, _, isDuration, err := convertStringToDuration(sc, lhsStr, b.tp.GetDecimal()) if err != nil || !isDuration { return d, true, err } - d, isNull, err = calculateDurationTimeDiff(b.ctx, lhs, rhs) + d, isNull, err = calculateDurationTimeDiff(ctx, lhs, rhs) return d, isNull, err } @@ -633,17 +629,17 @@ func (b *builtinTimeStringTimeDiffSig) Clone() builtinFunc { // evalDuration evals a builtinTimeStringTimeDiffSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_timediff func (b *builtinTimeStringTimeDiffSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (d types.Duration, isNull bool, err error) { - lhs, isNull, err := b.args[0].EvalTime(b.ctx, row) + lhs, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { return d, isNull, err } - rhsStr, isNull, err := b.args[1].EvalString(b.ctx, row) + rhsStr, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return d, isNull, err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx _, rhs, isDuration, err := convertStringToDuration(sc, rhsStr, b.tp.GetDecimal()) if err != nil || isDuration { return d, true, err @@ -666,17 +662,17 @@ func (b *builtinStringTimeTimeDiffSig) Clone() builtinFunc { // evalDuration evals a builtinStringTimeTimeDiffSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_timediff func (b *builtinStringTimeTimeDiffSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (d types.Duration, isNull bool, err error) { - lhsStr, isNull, err := b.args[0].EvalString(b.ctx, row) + lhsStr, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return d, isNull, err } - rhs, isNull, err := b.args[1].EvalTime(b.ctx, row) + rhs, isNull, err := b.args[1].EvalTime(ctx, row) if isNull || err != nil { return d, isNull, err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx _, lhs, isDuration, err := convertStringToDuration(sc, lhsStr, b.tp.GetDecimal()) if err != nil || isDuration { return d, true, err @@ -699,17 +695,17 @@ func (b *builtinStringStringTimeDiffSig) Clone() builtinFunc { // evalDuration evals a builtinStringStringTimeDiffSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_timediff func (b *builtinStringStringTimeDiffSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (d types.Duration, isNull bool, err error) { - lhs, isNull, err := b.args[0].EvalString(b.ctx, row) + lhs, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return d, isNull, err } - rhs, isNull, err := b.args[1].EvalString(b.ctx, row) + rhs, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return d, isNull, err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx fsp := b.tp.GetDecimal() lhsDur, lhsTime, lhsIsDuration, err := convertStringToDuration(sc, lhs, fsp) if err != nil { @@ -726,7 +722,7 @@ func (b *builtinStringStringTimeDiffSig) evalDuration(ctx sessionctx.Context, ro } if lhsIsDuration { - d, isNull, err = calculateDurationTimeDiff(b.ctx, lhsDur, rhsDur) + d, isNull, err = calculateDurationTimeDiff(ctx, lhsDur, rhsDur) } else { d, isNull, err = calculateTimeDiff(sc, lhsTime, rhsTime) } @@ -795,11 +791,11 @@ func (b *builtinDateFormatSig) Clone() builtinFunc { // evalString evals a builtinDateFormatSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format func (b *builtinDateFormatSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - t, isNull, err := b.args[0].EvalTime(b.ctx, row) + t, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { - return "", isNull, handleInvalidTimeError(b.ctx, err) + return "", isNull, handleInvalidTimeError(ctx, err) } - formatMask, isNull, err := b.args[1].EvalString(b.ctx, row) + formatMask, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return "", isNull, err } @@ -819,7 +815,7 @@ func (b *builtinDateFormatSig) evalString(ctx sessionctx.Context, row chunk.Row) if isOriginalIntOrDecimalZero && !isOriginalStringZero { return "", true, nil } - return "", true, handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, t.String())) + return "", true, handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, t.String())) } res, err := t.DateFormat(formatMask) @@ -857,7 +853,7 @@ func (b *builtinFromDaysSig) Clone() builtinFunc { // evalTime evals FROM_DAYS(N). // See https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_from-days func (b *builtinFromDaysSig) evalTime(ctx sessionctx.Context, row chunk.Row) (types.Time, bool, error) { - n, isNull, err := b.args[0].EvalInt(b.ctx, row) + n, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return types.ZeroTime, true, err } @@ -901,7 +897,7 @@ func (b *builtinHourSig) Clone() builtinFunc { // evalInt evals HOUR(time). // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_hour func (b *builtinHourSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - dur, isNull, err := b.args[0].EvalDuration(b.ctx, row) + dur, isNull, err := b.args[0].EvalDuration(ctx, row) // ignore error and return NULL if isNull || err != nil { return 0, true, nil @@ -941,7 +937,7 @@ func (b *builtinMinuteSig) Clone() builtinFunc { // evalInt evals MINUTE(time). // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_minute func (b *builtinMinuteSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - dur, isNull, err := b.args[0].EvalDuration(b.ctx, row) + dur, isNull, err := b.args[0].EvalDuration(ctx, row) // ignore error and return NULL if isNull || err != nil { return 0, true, nil @@ -981,7 +977,7 @@ func (b *builtinSecondSig) Clone() builtinFunc { // evalInt evals SECOND(time). // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_second func (b *builtinSecondSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - dur, isNull, err := b.args[0].EvalDuration(b.ctx, row) + dur, isNull, err := b.args[0].EvalDuration(ctx, row) // ignore error and return NULL if isNull || err != nil { return 0, true, nil @@ -1021,7 +1017,7 @@ func (b *builtinMicroSecondSig) Clone() builtinFunc { // evalInt evals MICROSECOND(expr). // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_microsecond func (b *builtinMicroSecondSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - dur, isNull, err := b.args[0].EvalDuration(b.ctx, row) + dur, isNull, err := b.args[0].EvalDuration(ctx, row) // ignore error and return NULL if isNull || err != nil { return 0, true, nil @@ -1061,10 +1057,10 @@ func (b *builtinMonthSig) Clone() builtinFunc { // evalInt evals MONTH(date). // see: https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_month func (b *builtinMonthSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - date, isNull, err := b.args[0].EvalTime(b.ctx, row) + date, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { - return 0, true, handleInvalidTimeError(b.ctx, err) + return 0, true, handleInvalidTimeError(ctx, err) } return int64(date.Month()), false, nil @@ -1103,13 +1099,13 @@ func (b *builtinMonthNameSig) Clone() builtinFunc { } func (b *builtinMonthNameSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - arg, isNull, err := b.args[0].EvalTime(b.ctx, row) + arg, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { - return "", true, handleInvalidTimeError(b.ctx, err) + return "", true, handleInvalidTimeError(ctx, err) } mon := arg.Month() - if (arg.IsZero() && b.ctx.GetSessionVars().SQLMode.HasNoZeroDateMode()) || mon < 0 || mon > len(types.MonthNames) { - return "", true, handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, arg.String())) + if (arg.IsZero() && ctx.GetSessionVars().SQLMode.HasNoZeroDateMode()) || mon < 0 || mon > len(types.MonthNames) { + return "", true, handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, arg.String())) } else if mon == 0 || arg.IsZero() { return "", true, nil } @@ -1147,13 +1143,13 @@ func (b *builtinDayNameSig) Clone() builtinFunc { return newSig } -func (b *builtinDayNameSig) evalIndex(row chunk.Row) (int64, bool, error) { - arg, isNull, err := b.args[0].EvalTime(b.ctx, row) +func (b *builtinDayNameSig) evalIndex(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { + arg, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { return 0, isNull, err } if arg.InvalidZero() { - return 0, true, handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, arg.String())) + return 0, true, handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, arg.String())) } // Monday is 0, ... Sunday = 6 in MySQL // but in go, Sunday is 0, ... Saturday is 6 @@ -1165,7 +1161,7 @@ func (b *builtinDayNameSig) evalIndex(row chunk.Row) (int64, bool, error) { // evalString evals a builtinDayNameSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_dayname func (b *builtinDayNameSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - idx, isNull, err := b.evalIndex(row) + idx, isNull, err := b.evalIndex(ctx, row) if isNull || err != nil { return "", isNull, err } @@ -1173,7 +1169,7 @@ func (b *builtinDayNameSig) evalString(ctx sessionctx.Context, row chunk.Row) (s } func (b *builtinDayNameSig) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - idx, isNull, err := b.evalIndex(row) + idx, isNull, err := b.evalIndex(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -1181,7 +1177,7 @@ func (b *builtinDayNameSig) evalReal(ctx sessionctx.Context, row chunk.Row) (flo } func (b *builtinDayNameSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - idx, isNull, err := b.evalIndex(row) + idx, isNull, err := b.evalIndex(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -1219,9 +1215,9 @@ func (b *builtinDayOfMonthSig) Clone() builtinFunc { // evalInt evals a builtinDayOfMonthSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_dayofmonth func (b *builtinDayOfMonthSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - arg, isNull, err := b.args[0].EvalTime(b.ctx, row) + arg, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { - return 0, true, handleInvalidTimeError(b.ctx, err) + return 0, true, handleInvalidTimeError(ctx, err) } return int64(arg.Day()), false, nil } @@ -1257,12 +1253,12 @@ func (b *builtinDayOfWeekSig) Clone() builtinFunc { // evalInt evals a builtinDayOfWeekSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_dayofweek func (b *builtinDayOfWeekSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - arg, isNull, err := b.args[0].EvalTime(b.ctx, row) + arg, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { - return 0, true, handleInvalidTimeError(b.ctx, err) + return 0, true, handleInvalidTimeError(ctx, err) } if arg.InvalidZero() { - return 0, true, handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, arg.String())) + return 0, true, handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, arg.String())) } // 1 is Sunday, 2 is Monday, .... 7 is Saturday return int64(arg.Weekday() + 1), false, nil @@ -1299,12 +1295,12 @@ func (b *builtinDayOfYearSig) Clone() builtinFunc { // evalInt evals a builtinDayOfYearSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_dayofyear func (b *builtinDayOfYearSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - arg, isNull, err := b.args[0].EvalTime(b.ctx, row) + arg, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { - return 0, isNull, handleInvalidTimeError(b.ctx, err) + return 0, isNull, handleInvalidTimeError(ctx, err) } if arg.InvalidZero() { - return 0, true, handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, arg.String())) + return 0, true, handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, arg.String())) } return int64(arg.YearDay()), false, nil @@ -1355,17 +1351,17 @@ func (b *builtinWeekWithModeSig) Clone() builtinFunc { // evalInt evals WEEK(date, mode). // see: https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_week func (b *builtinWeekWithModeSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - date, isNull, err := b.args[0].EvalTime(b.ctx, row) + date, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { - return 0, true, handleInvalidTimeError(b.ctx, err) + return 0, true, handleInvalidTimeError(ctx, err) } if date.IsZero() || date.InvalidZero() { - return 0, true, handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, date.String())) + return 0, true, handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, date.String())) } - mode, isNull, err := b.args[1].EvalInt(b.ctx, row) + mode, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -1387,22 +1383,22 @@ func (b *builtinWeekWithoutModeSig) Clone() builtinFunc { // evalInt evals WEEK(date). // see: https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_week func (b *builtinWeekWithoutModeSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - date, isNull, err := b.args[0].EvalTime(b.ctx, row) + date, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { - return 0, true, handleInvalidTimeError(b.ctx, err) + return 0, true, handleInvalidTimeError(ctx, err) } if date.IsZero() || date.InvalidZero() { - return 0, true, handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, date.String())) + return 0, true, handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, date.String())) } mode := 0 - modeStr, ok := b.ctx.GetSessionVars().GetSystemVar(variable.DefaultWeekFormat) + modeStr, ok := ctx.GetSessionVars().GetSystemVar(variable.DefaultWeekFormat) if ok && modeStr != "" { mode, err = strconv.Atoi(modeStr) if err != nil { - return 0, true, handleInvalidTimeError(b.ctx, types.ErrInvalidWeekModeFormat.GenWithStackByArgs(modeStr)) + return 0, true, handleInvalidTimeError(ctx, types.ErrInvalidWeekModeFormat.GenWithStackByArgs(modeStr)) } } @@ -1442,13 +1438,13 @@ func (b *builtinWeekDaySig) Clone() builtinFunc { // evalInt evals WEEKDAY(date). func (b *builtinWeekDaySig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - date, isNull, err := b.args[0].EvalTime(b.ctx, row) + date, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { - return 0, true, handleInvalidTimeError(b.ctx, err) + return 0, true, handleInvalidTimeError(ctx, err) } if date.IsZero() || date.InvalidZero() { - return 0, true, handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, date.String())) + return 0, true, handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, date.String())) } return int64(date.Weekday()+6) % 7, false, nil @@ -1486,14 +1482,14 @@ func (b *builtinWeekOfYearSig) Clone() builtinFunc { // evalInt evals WEEKOFYEAR(date). // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_weekofyear func (b *builtinWeekOfYearSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - date, isNull, err := b.args[0].EvalTime(b.ctx, row) + date, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { - return 0, true, handleInvalidTimeError(b.ctx, err) + return 0, true, handleInvalidTimeError(ctx, err) } if date.IsZero() || date.InvalidZero() { - return 0, true, handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, date.String())) + return 0, true, handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, date.String())) } week := date.Week(3) @@ -1532,10 +1528,10 @@ func (b *builtinYearSig) Clone() builtinFunc { // evalInt evals YEAR(date). // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_year func (b *builtinYearSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - date, isNull, err := b.args[0].EvalTime(b.ctx, row) + date, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { - return 0, true, handleInvalidTimeError(b.ctx, err) + return 0, true, handleInvalidTimeError(ctx, err) } return int64(date.Year()), false, nil } @@ -1585,15 +1581,15 @@ func (b *builtinYearWeekWithModeSig) Clone() builtinFunc { // evalInt evals YEARWEEK(date,mode). // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_yearweek func (b *builtinYearWeekWithModeSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - date, isNull, err := b.args[0].EvalTime(b.ctx, row) + date, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { - return 0, isNull, handleInvalidTimeError(b.ctx, err) + return 0, isNull, handleInvalidTimeError(ctx, err) } if date.IsZero() || date.InvalidZero() { - return 0, true, handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, date.String())) + return 0, true, handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, date.String())) } - mode, isNull, err := b.args[1].EvalInt(b.ctx, row) + mode, isNull, err := b.args[1].EvalInt(ctx, row) if err != nil { return 0, true, err } @@ -1622,13 +1618,13 @@ func (b *builtinYearWeekWithoutModeSig) Clone() builtinFunc { // evalInt evals YEARWEEK(date). // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_yearweek func (b *builtinYearWeekWithoutModeSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - date, isNull, err := b.args[0].EvalTime(b.ctx, row) + date, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { - return 0, true, handleInvalidTimeError(b.ctx, err) + return 0, true, handleInvalidTimeError(ctx, err) } if date.InvalidZero() { - return 0, true, handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, date.String())) + return 0, true, handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, date.String())) } year, week := date.YearWeek(0) @@ -1768,11 +1764,11 @@ func (b *builtinFromUnixTime1ArgSig) Clone() builtinFunc { // evalTime evals a builtinFromUnixTime1ArgSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_from-unixtime func (b *builtinFromUnixTime1ArgSig) evalTime(ctx sessionctx.Context, row chunk.Row) (res types.Time, isNull bool, err error) { - unixTimeStamp, isNull, err := b.args[0].EvalDecimal(b.ctx, row) + unixTimeStamp, isNull, err := b.args[0].EvalDecimal(ctx, row) if err != nil || isNull { return res, isNull, err } - return evalFromUnixTime(b.ctx, b.tp.GetDecimal(), unixTimeStamp) + return evalFromUnixTime(ctx, b.tp.GetDecimal(), unixTimeStamp) } type builtinFromUnixTime2ArgSig struct { @@ -1788,15 +1784,15 @@ func (b *builtinFromUnixTime2ArgSig) Clone() builtinFunc { // evalString evals a builtinFromUnixTime2ArgSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_from-unixtime func (b *builtinFromUnixTime2ArgSig) evalString(ctx sessionctx.Context, row chunk.Row) (res string, isNull bool, err error) { - format, isNull, err := b.args[1].EvalString(b.ctx, row) + format, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return "", true, err } - unixTimeStamp, isNull, err := b.args[0].EvalDecimal(b.ctx, row) + unixTimeStamp, isNull, err := b.args[0].EvalDecimal(ctx, row) if err != nil || isNull { return "", isNull, err } - t, isNull, err := evalFromUnixTime(b.ctx, b.tp.GetDecimal(), unixTimeStamp) + t, isNull, err := evalFromUnixTime(ctx, b.tp.GetDecimal(), unixTimeStamp) if isNull || err != nil { return "", isNull, err } @@ -1835,11 +1831,11 @@ func (b *builtinGetFormatSig) Clone() builtinFunc { // evalString evals a builtinGetFormatSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_get-format func (b *builtinGetFormatSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - t, isNull, err := b.args[0].EvalString(b.ctx, row) + t, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", isNull, err } - l, isNull, err := b.args[1].EvalString(b.ctx, row) + l, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return "", isNull, err } @@ -1921,22 +1917,22 @@ func (b *builtinStrToDateDateSig) Clone() builtinFunc { } func (b *builtinStrToDateDateSig) evalTime(ctx sessionctx.Context, row chunk.Row) (types.Time, bool, error) { - date, isNull, err := b.args[0].EvalString(b.ctx, row) + date, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return types.ZeroTime, isNull, err } - format, isNull, err := b.args[1].EvalString(b.ctx, row) + format, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return types.ZeroTime, isNull, err } var t types.Time - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx succ := t.StrToDate(sc.TypeCtx(), date, format) if !succ { - return types.ZeroTime, true, handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, t.String())) + return types.ZeroTime, true, handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, t.String())) } - if b.ctx.GetSessionVars().SQLMode.HasNoZeroDateMode() && (t.Year() == 0 || t.Month() == 0 || t.Day() == 0) { - return types.ZeroTime, true, handleInvalidTimeError(b.ctx, types.ErrWrongValueForType.GenWithStackByArgs(types.DateTimeStr, date, ast.StrToDate)) + if ctx.GetSessionVars().SQLMode.HasNoZeroDateMode() && (t.Year() == 0 || t.Month() == 0 || t.Day() == 0) { + return types.ZeroTime, true, handleInvalidTimeError(ctx, types.ErrWrongValueForType.GenWithStackByArgs(types.DateTimeStr, date, ast.StrToDate)) } t.SetType(mysql.TypeDate) t.SetFsp(types.MinFsp) @@ -1954,22 +1950,22 @@ func (b *builtinStrToDateDatetimeSig) Clone() builtinFunc { } func (b *builtinStrToDateDatetimeSig) evalTime(ctx sessionctx.Context, row chunk.Row) (types.Time, bool, error) { - date, isNull, err := b.args[0].EvalString(b.ctx, row) + date, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return types.ZeroTime, isNull, err } - format, isNull, err := b.args[1].EvalString(b.ctx, row) + format, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return types.ZeroTime, isNull, err } var t types.Time - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx succ := t.StrToDate(sc.TypeCtx(), date, format) if !succ { - return types.ZeroTime, true, handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, t.String())) + return types.ZeroTime, true, handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, t.String())) } - if b.ctx.GetSessionVars().SQLMode.HasNoZeroDateMode() && (t.Year() == 0 || t.Month() == 0 || t.Day() == 0) { - return types.ZeroTime, true, handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, t.String())) + if ctx.GetSessionVars().SQLMode.HasNoZeroDateMode() && (t.Year() == 0 || t.Month() == 0 || t.Day() == 0) { + return types.ZeroTime, true, handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, t.String())) } t.SetType(mysql.TypeDatetime) t.SetFsp(b.tp.GetDecimal()) @@ -1990,19 +1986,19 @@ func (b *builtinStrToDateDurationSig) Clone() builtinFunc { // TODO: If the NO_ZERO_DATE or NO_ZERO_IN_DATE SQL mode is enabled, zero dates or part of dates are disallowed. // In that case, STR_TO_DATE() returns NULL and generates a warning. func (b *builtinStrToDateDurationSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (types.Duration, bool, error) { - date, isNull, err := b.args[0].EvalString(b.ctx, row) + date, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return types.Duration{}, isNull, err } - format, isNull, err := b.args[1].EvalString(b.ctx, row) + format, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return types.Duration{}, isNull, err } var t types.Time - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx succ := t.StrToDate(sc.TypeCtx(), date, format) if !succ { - return types.Duration{}, true, handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, t.String())) + return types.Duration{}, true, handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, t.String())) } t.SetFsp(b.tp.GetDecimal()) dur, err := t.ConvertToDuration() @@ -2057,12 +2053,12 @@ func (b *builtinSysDateWithFspSig) Clone() builtinFunc { // evalTime evals SYSDATE(fsp). // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_sysdate func (b *builtinSysDateWithFspSig) evalTime(ctx sessionctx.Context, row chunk.Row) (val types.Time, isNull bool, err error) { - fsp, isNull, err := b.args[0].EvalInt(b.ctx, row) + fsp, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return types.ZeroTime, isNull, err } - loc := b.ctx.GetSessionVars().Location() + loc := ctx.GetSessionVars().Location() now := time.Now().In(loc) result, err := convertTimeToMysqlTime(now, int(fsp), types.ModeHalfUp) if err != nil { @@ -2084,7 +2080,7 @@ func (b *builtinSysDateWithoutFspSig) Clone() builtinFunc { // evalTime evals SYSDATE(). // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_sysdate func (b *builtinSysDateWithoutFspSig) evalTime(ctx sessionctx.Context, row chunk.Row) (val types.Time, isNull bool, err error) { - tz := b.ctx.GetSessionVars().Location() + tz := ctx.GetSessionVars().Location() now := time.Now().In(tz) result, err := convertTimeToMysqlTime(now, 0, types.ModeHalfUp) if err != nil { @@ -2123,8 +2119,8 @@ func (b *builtinCurrentDateSig) Clone() builtinFunc { // evalTime evals CURDATE(). // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_curdate func (b *builtinCurrentDateSig) evalTime(ctx sessionctx.Context, row chunk.Row) (val types.Time, isNull bool, err error) { - tz := b.ctx.GetSessionVars().Location() - nowTs, err := getStmtTimestamp(b.ctx) + tz := ctx.GetSessionVars().Location() + nowTs, err := getStmtTimestamp(ctx) if err != nil { return types.ZeroTime, true, err } @@ -2179,13 +2175,13 @@ func (b *builtinCurrentTime0ArgSig) Clone() builtinFunc { } func (b *builtinCurrentTime0ArgSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (types.Duration, bool, error) { - tz := b.ctx.GetSessionVars().Location() - nowTs, err := getStmtTimestamp(b.ctx) + tz := ctx.GetSessionVars().Location() + nowTs, err := getStmtTimestamp(ctx) if err != nil { return types.Duration{}, true, err } dur := nowTs.In(tz).Format(types.TimeFormat) - res, _, err := types.ParseDuration(b.ctx.GetSessionVars().StmtCtx.TypeCtx(), dur, types.MinFsp) + res, _, err := types.ParseDuration(ctx.GetSessionVars().StmtCtx.TypeCtx(), dur, types.MinFsp) if err != nil { return types.Duration{}, true, err } @@ -2203,17 +2199,17 @@ func (b *builtinCurrentTime1ArgSig) Clone() builtinFunc { } func (b *builtinCurrentTime1ArgSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (types.Duration, bool, error) { - fsp, _, err := b.args[0].EvalInt(b.ctx, row) + fsp, _, err := b.args[0].EvalInt(ctx, row) if err != nil { return types.Duration{}, true, err } - tz := b.ctx.GetSessionVars().Location() - nowTs, err := getStmtTimestamp(b.ctx) + tz := ctx.GetSessionVars().Location() + nowTs, err := getStmtTimestamp(ctx) if err != nil { return types.Duration{}, true, err } dur := nowTs.In(tz).Format(types.TimeFSPFormat) - res, _, err := types.ParseDuration(b.ctx.GetSessionVars().StmtCtx.TypeCtx(), dur, int(fsp)) + res, _, err := types.ParseDuration(ctx.GetSessionVars().StmtCtx.TypeCtx(), dur, int(fsp)) if err != nil { return types.Duration{}, true, err } @@ -2256,7 +2252,7 @@ func (b *builtinTimeSig) Clone() builtinFunc { // evalDuration evals a builtinTimeSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_time. func (b *builtinTimeSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (res types.Duration, isNull bool, err error) { - expr, isNull, err := b.args[0].EvalString(b.ctx, row) + expr, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return res, isNull, err } @@ -2272,7 +2268,7 @@ func (b *builtinTimeSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (re } fsp = tmpFsp - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx res, _, err = types.ParseDuration(sc.TypeCtx(), expr, fsp) if types.ErrTruncatedWrongVal.Equal(err) { err = sc.HandleTruncate(err) @@ -2292,7 +2288,7 @@ func (c *timeLiteralFunctionClass) getFunction(ctx sessionctx.Context, args []Ex if !ok { panic("Unexpected parameter for time literal") } - dt, err := con.Eval(chunk.Row{}) + dt, err := con.Eval(ctx, chunk.Row{}) if err != nil { return nil, err } @@ -2360,7 +2356,7 @@ func (b *builtinUTCDateSig) Clone() builtinFunc { // evalTime evals UTC_DATE, UTC_DATE(). // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_utc-date func (b *builtinUTCDateSig) evalTime(ctx sessionctx.Context, row chunk.Row) (types.Time, bool, error) { - nowTs, err := getStmtTimestamp(b.ctx) + nowTs, err := getStmtTimestamp(ctx) if err != nil { return types.ZeroTime, true, err } @@ -2386,7 +2382,7 @@ func (c *utcTimestampFunctionClass) getFunction(ctx sessionctx.Context, args []E return nil, err } - fsp, err := getFspByIntArg(bf.ctx, args) + fsp, err := getFspByIntArg(ctx, args) if err != nil { return nil, err } @@ -2427,7 +2423,7 @@ func (b *builtinUTCTimestampWithArgSig) Clone() builtinFunc { // evalTime evals UTC_TIMESTAMP(fsp). // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_utc-timestamp func (b *builtinUTCTimestampWithArgSig) evalTime(ctx sessionctx.Context, row chunk.Row) (types.Time, bool, error) { - num, isNull, err := b.args[0].EvalInt(b.ctx, row) + num, isNull, err := b.args[0].EvalInt(ctx, row) if err != nil { return types.ZeroTime, true, err } @@ -2439,7 +2435,7 @@ func (b *builtinUTCTimestampWithArgSig) evalTime(ctx sessionctx.Context, row chu return types.ZeroTime, true, errors.Errorf("Invalid negative %d specified, must in [0, 6]", num) } - result, isNull, err := evalUTCTimestampWithFsp(b.ctx, int(num)) + result, isNull, err := evalUTCTimestampWithFsp(ctx, int(num)) return result, isNull, err } @@ -2456,7 +2452,7 @@ func (b *builtinUTCTimestampWithoutArgSig) Clone() builtinFunc { // evalTime evals UTC_TIMESTAMP(). // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_utc-timestamp func (b *builtinUTCTimestampWithoutArgSig) evalTime(ctx sessionctx.Context, row chunk.Row) (types.Time, bool, error) { - result, isNull, err := evalUTCTimestampWithFsp(b.ctx, 0) + result, isNull, err := evalUTCTimestampWithFsp(ctx, 0) return result, isNull, err } @@ -2477,7 +2473,7 @@ func (c *nowFunctionClass) getFunction(ctx sessionctx.Context, args []Expression return nil, err } - fsp, err := getFspByIntArg(bf.ctx, args) + fsp, err := getFspByIntArg(ctx, args) if err != nil { return nil, err } @@ -2548,7 +2544,7 @@ func (b *builtinNowWithArgSig) Clone() builtinFunc { // evalTime evals NOW(fsp) // see: https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_now func (b *builtinNowWithArgSig) evalTime(ctx sessionctx.Context, row chunk.Row) (types.Time, bool, error) { - fsp, isNull, err := b.args[0].EvalInt(b.ctx, row) + fsp, isNull, err := b.args[0].EvalInt(ctx, row) if err != nil { return types.ZeroTime, true, err @@ -2562,7 +2558,7 @@ func (b *builtinNowWithArgSig) evalTime(ctx sessionctx.Context, row chunk.Row) ( return types.ZeroTime, true, errors.Errorf("Invalid negative %d specified, must in [0, 6]", fsp) } - result, isNull, err := evalNowWithFsp(b.ctx, int(fsp)) + result, isNull, err := evalNowWithFsp(ctx, int(fsp)) return result, isNull, err } @@ -2579,7 +2575,7 @@ func (b *builtinNowWithoutArgSig) Clone() builtinFunc { // evalTime evals NOW() // see: https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_now func (b *builtinNowWithoutArgSig) evalTime(ctx sessionctx.Context, row chunk.Row) (types.Time, bool, error) { - result, isNull, err := evalNowWithFsp(b.ctx, 0) + result, isNull, err := evalNowWithFsp(ctx, 0) return result, isNull, err } @@ -2668,15 +2664,15 @@ func (b *builtinExtractDatetimeFromStringSig) Clone() builtinFunc { // evalInt evals a builtinExtractDatetimeFromStringSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_extract func (b *builtinExtractDatetimeFromStringSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - unit, isNull, err := b.args[0].EvalString(b.ctx, row) + unit, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } - dtStr, isNull, err := b.args[1].EvalString(b.ctx, row) + dtStr, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx if types.IsClockUnit(unit) && types.IsDateUnit(unit) { dur, _, err := types.ParseDuration(sc.TypeCtx(), dtStr, types.GetFsp(dtStr)) if err != nil { @@ -2712,11 +2708,11 @@ func (b *builtinExtractDatetimeSig) Clone() builtinFunc { // evalInt evals a builtinExtractDatetimeSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_extract func (b *builtinExtractDatetimeSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - unit, isNull, err := b.args[0].EvalString(b.ctx, row) + unit, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } - dt, isNull, err := b.args[1].EvalTime(b.ctx, row) + dt, isNull, err := b.args[1].EvalTime(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -2737,11 +2733,11 @@ func (b *builtinExtractDurationSig) Clone() builtinFunc { // evalInt evals a builtinExtractDurationSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_extract func (b *builtinExtractDurationSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - unit, isNull, err := b.args[0].EvalString(b.ctx, row) + unit, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } - dur, isNull, err := b.args[1].EvalDuration(b.ctx, row) + dur, isNull, err := b.args[1].EvalDuration(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -2774,7 +2770,7 @@ func (du *baseDateArithmetical) getDateFromString(ctx sessionctx.Context, args [ } sc := ctx.GetSessionVars().StmtCtx - date, err := types.ParseTime(sc.TypeCtx(), dateStr, dateTp, types.MaxFsp, nil) + date, err := types.ParseTime(sc.TypeCtx(), dateStr, dateTp, types.MaxFsp) if err != nil { err = handleInvalidTimeError(ctx, err) if err != nil { @@ -3031,14 +3027,14 @@ func (du *baseDateArithmetical) sub(ctx sessionctx.Context, date types.Time, int return du.addDate(ctx, date, -year, -month, -day, -nano, resultFsp) } -func (du *baseDateArithmetical) vecGetDateFromInt(b *baseBuiltinFunc, input *chunk.Chunk, unit string, result *chunk.Column) error { +func (du *baseDateArithmetical) vecGetDateFromInt(b *baseBuiltinFunc, ctx sessionctx.Context, input *chunk.Chunk, unit string, result *chunk.Column) error { n := input.NumRows() buf, err := b.bufAllocator.get() if err != nil { return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf); err != nil { return err } @@ -3046,7 +3042,7 @@ func (du *baseDateArithmetical) vecGetDateFromInt(b *baseBuiltinFunc, input *chu result.MergeNulls(buf) dates := result.Times() i64s := buf.Int64s() - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx isClockUnit := types.IsClockUnit(unit) for i := 0; i < n; i++ { if result.IsNull(i) { @@ -3055,7 +3051,7 @@ func (du *baseDateArithmetical) vecGetDateFromInt(b *baseBuiltinFunc, input *chu date, err := types.ParseTimeFromInt64(sc.TypeCtx(), i64s[i]) if err != nil { - err = handleInvalidTimeError(b.ctx, err) + err = handleInvalidTimeError(ctx, err) if err != nil { return err } @@ -3073,14 +3069,14 @@ func (du *baseDateArithmetical) vecGetDateFromInt(b *baseBuiltinFunc, input *chu return nil } -func (du *baseDateArithmetical) vecGetDateFromReal(b *baseBuiltinFunc, input *chunk.Chunk, unit string, result *chunk.Column) error { +func (du *baseDateArithmetical) vecGetDateFromReal(b *baseBuiltinFunc, ctx sessionctx.Context, input *chunk.Chunk, unit string, result *chunk.Column) error { n := input.NumRows() buf, err := b.bufAllocator.get() if err != nil { return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalReal(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, buf); err != nil { return err } @@ -3088,7 +3084,7 @@ func (du *baseDateArithmetical) vecGetDateFromReal(b *baseBuiltinFunc, input *ch result.MergeNulls(buf) dates := result.Times() f64s := buf.Float64s() - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx isClockUnit := types.IsClockUnit(unit) for i := 0; i < n; i++ { if result.IsNull(i) { @@ -3097,7 +3093,7 @@ func (du *baseDateArithmetical) vecGetDateFromReal(b *baseBuiltinFunc, input *ch date, err := types.ParseTimeFromFloat64(sc.TypeCtx(), f64s[i]) if err != nil { - err = handleInvalidTimeError(b.ctx, err) + err = handleInvalidTimeError(ctx, err) if err != nil { return err } @@ -3115,21 +3111,21 @@ func (du *baseDateArithmetical) vecGetDateFromReal(b *baseBuiltinFunc, input *ch return nil } -func (du *baseDateArithmetical) vecGetDateFromDecimal(b *baseBuiltinFunc, input *chunk.Chunk, unit string, result *chunk.Column) error { +func (du *baseDateArithmetical) vecGetDateFromDecimal(b *baseBuiltinFunc, ctx sessionctx.Context, input *chunk.Chunk, unit string, result *chunk.Column) error { n := input.NumRows() buf, err := b.bufAllocator.get() if err != nil { return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalDecimal(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalDecimal(ctx, input, buf); err != nil { return err } result.ResizeTime(n, false) result.MergeNulls(buf) dates := result.Times() - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx isClockUnit := types.IsClockUnit(unit) for i := 0; i < n; i++ { if result.IsNull(i) { @@ -3139,7 +3135,7 @@ func (du *baseDateArithmetical) vecGetDateFromDecimal(b *baseBuiltinFunc, input dec := buf.GetDecimal(i) date, err := types.ParseTimeFromDecimal(sc.TypeCtx(), dec) if err != nil { - err = handleInvalidTimeError(b.ctx, err) + err = handleInvalidTimeError(ctx, err) if err != nil { return err } @@ -3157,21 +3153,21 @@ func (du *baseDateArithmetical) vecGetDateFromDecimal(b *baseBuiltinFunc, input return nil } -func (du *baseDateArithmetical) vecGetDateFromString(b *baseBuiltinFunc, input *chunk.Chunk, unit string, result *chunk.Column) error { +func (du *baseDateArithmetical) vecGetDateFromString(b *baseBuiltinFunc, ctx sessionctx.Context, input *chunk.Chunk, unit string, result *chunk.Column) error { n := input.NumRows() buf, err := b.bufAllocator.get() if err != nil { return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } result.ResizeTime(n, false) result.MergeNulls(buf) dates := result.Times() - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx isClockUnit := types.IsClockUnit(unit) for i := 0; i < n; i++ { if result.IsNull(i) { @@ -3184,15 +3180,15 @@ func (du *baseDateArithmetical) vecGetDateFromString(b *baseBuiltinFunc, input * dateTp = mysql.TypeDatetime } - date, err := types.ParseTime(sc.TypeCtx(), dateStr, dateTp, types.MaxFsp, nil) + date, err := types.ParseTime(sc.TypeCtx(), dateStr, dateTp, types.MaxFsp) if err != nil { - err = handleInvalidTimeError(b.ctx, err) + err = handleInvalidTimeError(ctx, err) if err != nil { return err } result.SetNull(i, true) - } else if b.ctx.GetSessionVars().SQLMode.HasNoZeroDateMode() && (date.Year() == 0 || date.Month() == 0 || date.Day() == 0) { - err = handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, dateStr)) + } else if ctx.GetSessionVars().SQLMode.HasNoZeroDateMode() && (date.Year() == 0 || date.Month() == 0 || date.Day() == 0) { + err = handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, dateStr)) if err != nil { return err } @@ -3204,10 +3200,10 @@ func (du *baseDateArithmetical) vecGetDateFromString(b *baseBuiltinFunc, input * return nil } -func (du *baseDateArithmetical) vecGetDateFromDatetime(b *baseBuiltinFunc, input *chunk.Chunk, unit string, result *chunk.Column) error { +func (du *baseDateArithmetical) vecGetDateFromDatetime(b *baseBuiltinFunc, ctx sessionctx.Context, input *chunk.Chunk, unit string, result *chunk.Column) error { n := input.NumRows() result.ResizeTime(n, false) - if err := b.args[0].VecEvalTime(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, result); err != nil { return err } @@ -3229,14 +3225,14 @@ func (du *baseDateArithmetical) vecGetDateFromDatetime(b *baseBuiltinFunc, input return nil } -func (du *baseDateArithmetical) vecGetIntervalFromString(b *baseBuiltinFunc, input *chunk.Chunk, unit string, result *chunk.Column) error { +func (du *baseDateArithmetical) vecGetIntervalFromString(b *baseBuiltinFunc, ctx sessionctx.Context, input *chunk.Chunk, unit string, result *chunk.Column) error { n := input.NumRows() buf, err := b.bufAllocator.get() if err != nil { return err } defer b.bufAllocator.put(buf) - if err := b.args[1].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf); err != nil { return err } @@ -3266,14 +3262,14 @@ func (du *baseDateArithmetical) vecGetIntervalFromString(b *baseBuiltinFunc, inp return nil } -func (du *baseDateArithmetical) vecGetIntervalFromDecimal(b *baseBuiltinFunc, input *chunk.Chunk, unit string, result *chunk.Column) error { +func (du *baseDateArithmetical) vecGetIntervalFromDecimal(b *baseBuiltinFunc, ctx sessionctx.Context, input *chunk.Chunk, unit string, result *chunk.Column) error { n := input.NumRows() buf, err := b.bufAllocator.get() if err != nil { return err } defer b.bufAllocator.put(buf) - if err := b.args[1].VecEvalDecimal(b.ctx, input, buf); err != nil { + if err := b.args[1].VecEvalDecimal(ctx, input, buf); err != nil { return err } @@ -3329,9 +3325,9 @@ func (du *baseDateArithmetical) vecGetIntervalFromDecimal(b *baseBuiltinFunc, in /* keep interval as original decimal */ default: // YEAR, QUARTER, MONTH, WEEK, DAY, HOUR, MINUTE, MICROSECOND - castExpr := WrapWithCastAsString(b.ctx, WrapWithCastAsInt(b.ctx, b.args[1])) + castExpr := WrapWithCastAsString(ctx, WrapWithCastAsInt(ctx, b.args[1])) amendInterval = func(_ string, row *chunk.Row) (string, bool, error) { - interval, isNull, err := castExpr.EvalString(b.ctx, *row) + interval, isNull, err := castExpr.EvalString(ctx, *row) return interval, isNull || err != nil, err } } @@ -3367,14 +3363,14 @@ func (du *baseDateArithmetical) vecGetIntervalFromDecimal(b *baseBuiltinFunc, in return nil } -func (du *baseDateArithmetical) vecGetIntervalFromInt(b *baseBuiltinFunc, input *chunk.Chunk, unit string, result *chunk.Column) error { +func (du *baseDateArithmetical) vecGetIntervalFromInt(b *baseBuiltinFunc, ctx sessionctx.Context, input *chunk.Chunk, unit string, result *chunk.Column) error { n := input.NumRows() buf, err := b.bufAllocator.get() if err != nil { return err } defer b.bufAllocator.put(buf) - if err := b.args[1].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf); err != nil { return err } @@ -3390,14 +3386,14 @@ func (du *baseDateArithmetical) vecGetIntervalFromInt(b *baseBuiltinFunc, input return nil } -func (du *baseDateArithmetical) vecGetIntervalFromReal(b *baseBuiltinFunc, input *chunk.Chunk, unit string, result *chunk.Column) error { +func (du *baseDateArithmetical) vecGetIntervalFromReal(b *baseBuiltinFunc, ctx sessionctx.Context, input *chunk.Chunk, unit string, result *chunk.Column) error { n := input.NumRows() buf, err := b.bufAllocator.get() if err != nil { return err } defer b.bufAllocator.put(buf) - if err := b.args[1].VecEvalReal(b.ctx, input, buf); err != nil { + if err := b.args[1].VecEvalReal(ctx, input, buf); err != nil { return err } @@ -3462,22 +3458,22 @@ func getDateFromDecimal(da *baseDateArithmetical, ctx sessionctx.Context, args [ return da.getDateFromDecimal(ctx, args, row, unit) } -type funcVecGetDateForDateAddSub func(da *baseDateArithmetical, b *baseBuiltinFunc, input *chunk.Chunk, unit string, result *chunk.Column) error +type funcVecGetDateForDateAddSub func(da *baseDateArithmetical, ctx sessionctx.Context, b *baseBuiltinFunc, input *chunk.Chunk, unit string, result *chunk.Column) error -func vecGetDateFromString(da *baseDateArithmetical, b *baseBuiltinFunc, input *chunk.Chunk, unit string, result *chunk.Column) error { - return da.vecGetDateFromString(b, input, unit, result) +func vecGetDateFromString(da *baseDateArithmetical, ctx sessionctx.Context, b *baseBuiltinFunc, input *chunk.Chunk, unit string, result *chunk.Column) error { + return da.vecGetDateFromString(b, ctx, input, unit, result) } -func vecGetDateFromInt(da *baseDateArithmetical, b *baseBuiltinFunc, input *chunk.Chunk, unit string, result *chunk.Column) error { - return da.vecGetDateFromInt(b, input, unit, result) +func vecGetDateFromInt(da *baseDateArithmetical, ctx sessionctx.Context, b *baseBuiltinFunc, input *chunk.Chunk, unit string, result *chunk.Column) error { + return da.vecGetDateFromInt(b, ctx, input, unit, result) } -func vecGetDateFromReal(da *baseDateArithmetical, b *baseBuiltinFunc, input *chunk.Chunk, unit string, result *chunk.Column) error { - return da.vecGetDateFromReal(b, input, unit, result) +func vecGetDateFromReal(da *baseDateArithmetical, ctx sessionctx.Context, b *baseBuiltinFunc, input *chunk.Chunk, unit string, result *chunk.Column) error { + return da.vecGetDateFromReal(b, ctx, input, unit, result) } -func vecGetDateFromDecimal(da *baseDateArithmetical, b *baseBuiltinFunc, input *chunk.Chunk, unit string, result *chunk.Column) error { - return da.vecGetDateFromDecimal(b, input, unit, result) +func vecGetDateFromDecimal(da *baseDateArithmetical, ctx sessionctx.Context, b *baseBuiltinFunc, input *chunk.Chunk, unit string, result *chunk.Column) error { + return da.vecGetDateFromDecimal(b, ctx, input, unit, result) } type funcGetIntervalForDateAddSub func(da *baseDateArithmetical, ctx sessionctx.Context, args []Expression, row chunk.Row, unit string) (string, bool, error) @@ -3498,22 +3494,22 @@ func getIntervalFromDecimal(da *baseDateArithmetical, ctx sessionctx.Context, ar return da.getIntervalFromDecimal(ctx, args, row, unit) } -type funcVecGetIntervalForDateAddSub func(da *baseDateArithmetical, b *baseBuiltinFunc, input *chunk.Chunk, unit string, result *chunk.Column) error +type funcVecGetIntervalForDateAddSub func(da *baseDateArithmetical, ctx sessionctx.Context, b *baseBuiltinFunc, input *chunk.Chunk, unit string, result *chunk.Column) error -func vecGetIntervalFromString(da *baseDateArithmetical, b *baseBuiltinFunc, input *chunk.Chunk, unit string, result *chunk.Column) error { - return da.vecGetIntervalFromString(b, input, unit, result) +func vecGetIntervalFromString(da *baseDateArithmetical, ctx sessionctx.Context, b *baseBuiltinFunc, input *chunk.Chunk, unit string, result *chunk.Column) error { + return da.vecGetIntervalFromString(b, ctx, input, unit, result) } -func vecGetIntervalFromInt(da *baseDateArithmetical, b *baseBuiltinFunc, input *chunk.Chunk, unit string, result *chunk.Column) error { - return da.vecGetIntervalFromInt(b, input, unit, result) +func vecGetIntervalFromInt(da *baseDateArithmetical, ctx sessionctx.Context, b *baseBuiltinFunc, input *chunk.Chunk, unit string, result *chunk.Column) error { + return da.vecGetIntervalFromInt(b, ctx, input, unit, result) } -func vecGetIntervalFromReal(da *baseDateArithmetical, b *baseBuiltinFunc, input *chunk.Chunk, unit string, result *chunk.Column) error { - return da.vecGetIntervalFromReal(b, input, unit, result) +func vecGetIntervalFromReal(da *baseDateArithmetical, ctx sessionctx.Context, b *baseBuiltinFunc, input *chunk.Chunk, unit string, result *chunk.Column) error { + return da.vecGetIntervalFromReal(b, ctx, input, unit, result) } -func vecGetIntervalFromDecimal(da *baseDateArithmetical, b *baseBuiltinFunc, input *chunk.Chunk, unit string, result *chunk.Column) error { - return da.vecGetIntervalFromDecimal(b, input, unit, result) +func vecGetIntervalFromDecimal(da *baseDateArithmetical, ctx sessionctx.Context, b *baseBuiltinFunc, input *chunk.Chunk, unit string, result *chunk.Column) error { + return da.vecGetIntervalFromDecimal(b, ctx, input, unit, result) } type addSubDateFunctionClass struct { @@ -3897,25 +3893,25 @@ func (b *builtinAddSubDateAsStringSig) Clone() builtinFunc { } func (b *builtinAddSubDateAsStringSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) + unit, isNull, err := b.args[2].EvalString(ctx, row) if isNull || err != nil { return types.ZeroTime.String(), true, err } - date, isNull, err := b.getDate(&b.baseDateArithmetical, b.ctx, b.args, row, unit) + date, isNull, err := b.getDate(&b.baseDateArithmetical, ctx, b.args, row, unit) if isNull || err != nil { return types.ZeroTime.String(), true, err } if date.InvalidZero() { - return types.ZeroTime.String(), true, handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, date.String())) + return types.ZeroTime.String(), true, handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, date.String())) } - interval, isNull, err := b.getInterval(&b.baseDateArithmetical, b.ctx, b.args, row, unit) + interval, isNull, err := b.getInterval(&b.baseDateArithmetical, ctx, b.args, row, unit) if isNull || err != nil { return types.ZeroTime.String(), true, err } - result, isNull, err := b.timeOp(&b.baseDateArithmetical, b.ctx, date, interval, unit, b.tp.GetDecimal()) + result, isNull, err := b.timeOp(&b.baseDateArithmetical, ctx, date, interval, unit, b.tp.GetDecimal()) if result.Microsecond() == 0 { result.SetFsp(types.MinFsp) } else { @@ -3945,22 +3941,22 @@ func (b *builtinAddSubDateDatetimeAnySig) Clone() builtinFunc { } func (b *builtinAddSubDateDatetimeAnySig) evalTime(ctx sessionctx.Context, row chunk.Row) (types.Time, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) + unit, isNull, err := b.args[2].EvalString(ctx, row) if isNull || err != nil { return types.ZeroTime, true, err } - date, isNull, err := b.getDateFromDatetime(b.ctx, b.args, row, unit) + date, isNull, err := b.getDateFromDatetime(ctx, b.args, row, unit) if isNull || err != nil { return types.ZeroTime, true, err } - interval, isNull, err := b.getInterval(&b.baseDateArithmetical, b.ctx, b.args, row, unit) + interval, isNull, err := b.getInterval(&b.baseDateArithmetical, ctx, b.args, row, unit) if isNull || err != nil { return types.ZeroTime, true, err } - result, isNull, err := b.timeOp(&b.baseDateArithmetical, b.ctx, date, interval, unit, b.tp.GetDecimal()) + result, isNull, err := b.timeOp(&b.baseDateArithmetical, ctx, date, interval, unit, b.tp.GetDecimal()) return result, isNull || err != nil, err } @@ -3986,47 +3982,47 @@ func (b *builtinAddSubDateDurationAnySig) Clone() builtinFunc { } func (b *builtinAddSubDateDurationAnySig) evalTime(ctx sessionctx.Context, row chunk.Row) (types.Time, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) + unit, isNull, err := b.args[2].EvalString(ctx, row) if isNull || err != nil { return types.ZeroTime, true, err } - d, isNull, err := b.args[0].EvalDuration(b.ctx, row) + d, isNull, err := b.args[0].EvalDuration(ctx, row) if isNull || err != nil { return types.ZeroTime, true, err } - interval, isNull, err := b.getInterval(&b.baseDateArithmetical, b.ctx, b.args, row, unit) + interval, isNull, err := b.getInterval(&b.baseDateArithmetical, ctx, b.args, row, unit) if isNull || err != nil { return types.ZeroTime, true, err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx t, err := d.ConvertToTime(sc.TypeCtx(), mysql.TypeDatetime) if err != nil { return types.ZeroTime, true, err } - result, isNull, err := b.timeOp(&b.baseDateArithmetical, b.ctx, t, interval, unit, b.tp.GetDecimal()) + result, isNull, err := b.timeOp(&b.baseDateArithmetical, ctx, t, interval, unit, b.tp.GetDecimal()) return result, isNull || err != nil, err } func (b *builtinAddSubDateDurationAnySig) evalDuration(ctx sessionctx.Context, row chunk.Row) (types.Duration, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) + unit, isNull, err := b.args[2].EvalString(ctx, row) if isNull || err != nil { return types.ZeroDuration, true, err } - dur, isNull, err := b.args[0].EvalDuration(b.ctx, row) + dur, isNull, err := b.args[0].EvalDuration(ctx, row) if isNull || err != nil { return types.ZeroDuration, true, err } - interval, isNull, err := b.getInterval(&b.baseDateArithmetical, b.ctx, b.args, row, unit) + interval, isNull, err := b.getInterval(&b.baseDateArithmetical, ctx, b.args, row, unit) if isNull || err != nil { return types.ZeroDuration, true, err } - result, isNull, err := b.durationOp(&b.baseDateArithmetical, b.ctx, dur, interval, unit, b.tp.GetDecimal()) + result, isNull, err := b.durationOp(&b.baseDateArithmetical, ctx, dur, interval, unit, b.tp.GetDecimal()) return result, isNull || err != nil, err } @@ -4060,24 +4056,24 @@ func (b *builtinTimestampDiffSig) Clone() builtinFunc { // evalInt evals a builtinTimestampDiffSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_timestampdiff func (b *builtinTimestampDiffSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - unit, isNull, err := b.args[0].EvalString(b.ctx, row) + unit, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return 0, isNull, err } - lhs, isNull, err := b.args[1].EvalTime(b.ctx, row) + lhs, isNull, err := b.args[1].EvalTime(ctx, row) if isNull || err != nil { - return 0, isNull, handleInvalidTimeError(b.ctx, err) + return 0, isNull, handleInvalidTimeError(ctx, err) } - rhs, isNull, err := b.args[2].EvalTime(b.ctx, row) + rhs, isNull, err := b.args[2].EvalTime(ctx, row) if isNull || err != nil { - return 0, isNull, handleInvalidTimeError(b.ctx, err) + return 0, isNull, handleInvalidTimeError(ctx, err) } if invalidLHS, invalidRHS := lhs.InvalidZero(), rhs.InvalidZero(); invalidLHS || invalidRHS { if invalidLHS { - err = handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, lhs.String())) + err = handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, lhs.String())) } if invalidRHS { - err = handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, rhs.String())) + err = handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, rhs.String())) } return 0, true, err } @@ -4204,7 +4200,7 @@ func (b *builtinUnixTimestampCurrentSig) Clone() builtinFunc { // evalInt evals a UNIX_TIMESTAMP(). // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_unix-timestamp func (b *builtinUnixTimestampCurrentSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - nowTs, err := getStmtTimestamp(b.ctx) + nowTs, err := getStmtTimestamp(ctx) if err != nil { return 0, true, err } @@ -4232,10 +4228,6 @@ func (b *builtinUnixTimestampIntSig) Clone() builtinFunc { // evalInt evals a UNIX_TIMESTAMP(time). // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_unix-timestamp func (b *builtinUnixTimestampIntSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - return b.evalIntWithCtx(b.ctx, row) -} - -func (b *builtinUnixTimestampIntSig) evalIntWithCtx(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { val, isNull, err := b.args[0].EvalTime(ctx, row) if err != nil && terror.ErrorEqual(types.ErrWrongValue.GenWithStackByArgs(types.TimeStr, val), err) { // Return 0 for invalid date time. @@ -4274,12 +4266,12 @@ func (b *builtinUnixTimestampDecSig) Clone() builtinFunc { // evalDecimal evals a UNIX_TIMESTAMP(time). // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_unix-timestamp func (b *builtinUnixTimestampDecSig) evalDecimal(ctx sessionctx.Context, row chunk.Row) (*types.MyDecimal, bool, error) { - val, isNull, err := b.args[0].EvalTime(b.ctx, row) + val, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { // Return 0 for invalid date time. return new(types.MyDecimal), isNull, nil } - t, err := val.GoTime(getTimeZone(b.ctx)) + t, err := val.GoTime(getTimeZone(ctx)) if err != nil { return new(types.MyDecimal), false, nil } @@ -4348,19 +4340,19 @@ func (b *builtinTimestamp1ArgSig) Clone() builtinFunc { // evalTime evals a builtinTimestamp1ArgSig. // See https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timestamp func (b *builtinTimestamp1ArgSig) evalTime(ctx sessionctx.Context, row chunk.Row) (types.Time, bool, error) { - s, isNull, err := b.args[0].EvalString(b.ctx, row) + s, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return types.ZeroTime, isNull, err } var tm types.Time - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx if b.isFloat { tm, err = types.ParseTimeFromFloatString(sc.TypeCtx(), s, mysql.TypeDatetime, types.GetFsp(s)) } else { - tm, err = types.ParseTime(sc.TypeCtx(), s, mysql.TypeDatetime, types.GetFsp(s), nil) + tm, err = types.ParseTime(sc.TypeCtx(), s, mysql.TypeDatetime, types.GetFsp(s)) } if err != nil { - return types.ZeroTime, true, handleInvalidTimeError(b.ctx, err) + return types.ZeroTime, true, handleInvalidTimeError(ctx, err) } return tm, false, nil } @@ -4380,26 +4372,26 @@ func (b *builtinTimestamp2ArgsSig) Clone() builtinFunc { // evalTime evals a builtinTimestamp2ArgsSig. // See https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timestamp func (b *builtinTimestamp2ArgsSig) evalTime(ctx sessionctx.Context, row chunk.Row) (types.Time, bool, error) { - arg0, isNull, err := b.args[0].EvalString(b.ctx, row) + arg0, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return types.ZeroTime, isNull, err } var tm types.Time - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx if b.isFloat { tm, err = types.ParseTimeFromFloatString(sc.TypeCtx(), arg0, mysql.TypeDatetime, types.GetFsp(arg0)) } else { - tm, err = types.ParseTime(sc.TypeCtx(), arg0, mysql.TypeDatetime, types.GetFsp(arg0), nil) + tm, err = types.ParseTime(sc.TypeCtx(), arg0, mysql.TypeDatetime, types.GetFsp(arg0)) } if err != nil { - return types.ZeroTime, true, handleInvalidTimeError(b.ctx, err) + return types.ZeroTime, true, handleInvalidTimeError(ctx, err) } if tm.Year() == 0 { // MySQL won't evaluate add for date with zero year. // See https://github.com/mysql/mysql-server/blob/5.7/sql/item_timefunc.cc#L2805 return types.ZeroTime, true, nil } - arg1, isNull, err := b.args[1].EvalString(b.ctx, row) + arg1, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return types.ZeroTime, isNull, err } @@ -4408,7 +4400,7 @@ func (b *builtinTimestamp2ArgsSig) evalTime(ctx sessionctx.Context, row chunk.Ro } duration, _, err := types.ParseDuration(sc.TypeCtx(), arg1, types.GetFsp(arg1)) if err != nil { - return types.ZeroTime, true, handleInvalidTimeError(b.ctx, err) + return types.ZeroTime, true, handleInvalidTimeError(ctx, err) } tmp, err := tm.Add(sc.TypeCtx(), duration) if err != nil { @@ -4429,7 +4421,7 @@ func (c *timestampLiteralFunctionClass) getFunction(ctx sessionctx.Context, args if !ok { panic("Unexpected parameter for timestamp literal") } - dt, err := con.Eval(chunk.Row{}) + dt, err := con.Eval(ctx, chunk.Row{}) if err != nil { return nil, err } @@ -4440,7 +4432,7 @@ func (c *timestampLiteralFunctionClass) getFunction(ctx sessionctx.Context, args if !timestampPattern.MatchString(str) { return nil, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, str) } - tm, err := types.ParseTime(ctx.GetSessionVars().StmtCtx.TypeCtx(), str, mysql.TypeDatetime, types.GetFsp(str), nil) + tm, err := types.ParseTime(ctx.GetSessionVars().StmtCtx.TypeCtx(), str, mysql.TypeDatetime, types.GetFsp(str)) if err != nil { return nil, err } @@ -4548,7 +4540,7 @@ func isDuration(str string) bool { // strDatetimeAddDuration adds duration to datetime string, returns a string value. func strDatetimeAddDuration(sc *stmtctx.StatementContext, d string, arg1 types.Duration) (result string, isNull bool, err error) { - arg0, err := types.ParseTime(sc.TypeCtx(), d, mysql.TypeDatetime, types.MaxFsp, nil) + arg0, err := types.ParseTime(sc.TypeCtx(), d, mysql.TypeDatetime, types.MaxFsp) if err != nil { // Return a warning regardless of the sql_mode, this is compatible with MySQL. sc.AppendWarning(err) @@ -4585,7 +4577,7 @@ func strDurationAddDuration(sc *stmtctx.StatementContext, d string, arg1 types.D // strDatetimeSubDuration subtracts duration from datetime string, returns a string value. func strDatetimeSubDuration(sc *stmtctx.StatementContext, d string, arg1 types.Duration) (result string, isNull bool, err error) { - arg0, err := types.ParseTime(sc.TypeCtx(), d, mysql.TypeDatetime, types.MaxFsp, nil) + arg0, err := types.ParseTime(sc.TypeCtx(), d, mysql.TypeDatetime, types.MaxFsp) if err != nil { // Return a warning regardless of the sql_mode, this is compatible with MySQL. sc.AppendWarning(err) @@ -4717,15 +4709,15 @@ func (b *builtinAddDatetimeAndDurationSig) Clone() builtinFunc { // evalTime evals a builtinAddDatetimeAndDurationSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_addtime func (b *builtinAddDatetimeAndDurationSig) evalTime(ctx sessionctx.Context, row chunk.Row) (types.Time, bool, error) { - arg0, isNull, err := b.args[0].EvalTime(b.ctx, row) + arg0, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { return types.ZeroDatetime, isNull, err } - arg1, isNull, err := b.args[1].EvalDuration(b.ctx, row) + arg1, isNull, err := b.args[1].EvalDuration(ctx, row) if isNull || err != nil { return types.ZeroDatetime, isNull, err } - result, err := arg0.Add(b.ctx.GetSessionVars().StmtCtx.TypeCtx(), arg1) + result, err := arg0.Add(ctx.GetSessionVars().StmtCtx.TypeCtx(), arg1) return result, err != nil, err } @@ -4742,18 +4734,18 @@ func (b *builtinAddDatetimeAndStringSig) Clone() builtinFunc { // evalTime evals a builtinAddDatetimeAndStringSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_addtime func (b *builtinAddDatetimeAndStringSig) evalTime(ctx sessionctx.Context, row chunk.Row) (types.Time, bool, error) { - arg0, isNull, err := b.args[0].EvalTime(b.ctx, row) + arg0, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { return types.ZeroDatetime, isNull, err } - s, isNull, err := b.args[1].EvalString(b.ctx, row) + s, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return types.ZeroDatetime, isNull, err } if !isDuration(s) { return types.ZeroDatetime, true, nil } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx arg1, _, err := types.ParseDuration(sc.TypeCtx(), s, types.GetFsp(s)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { @@ -4795,11 +4787,11 @@ func (b *builtinAddDurationAndDurationSig) Clone() builtinFunc { // evalDuration evals a builtinAddDurationAndDurationSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_addtime func (b *builtinAddDurationAndDurationSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (types.Duration, bool, error) { - arg0, isNull, err := b.args[0].EvalDuration(b.ctx, row) + arg0, isNull, err := b.args[0].EvalDuration(ctx, row) if isNull || err != nil { return types.ZeroDuration, isNull, err } - arg1, isNull, err := b.args[1].EvalDuration(b.ctx, row) + arg1, isNull, err := b.args[1].EvalDuration(ctx, row) if isNull || err != nil { return types.ZeroDuration, isNull, err } @@ -4823,18 +4815,18 @@ func (b *builtinAddDurationAndStringSig) Clone() builtinFunc { // evalDuration evals a builtinAddDurationAndStringSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_addtime func (b *builtinAddDurationAndStringSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (types.Duration, bool, error) { - arg0, isNull, err := b.args[0].EvalDuration(b.ctx, row) + arg0, isNull, err := b.args[0].EvalDuration(ctx, row) if isNull || err != nil { return types.ZeroDuration, isNull, err } - s, isNull, err := b.args[1].EvalString(b.ctx, row) + s, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return types.ZeroDuration, isNull, err } if !isDuration(s) { return types.ZeroDuration, true, nil } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx arg1, _, err := types.ParseDuration(sc.TypeCtx(), s, types.GetFsp(s)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { @@ -4883,15 +4875,15 @@ func (b *builtinAddStringAndDurationSig) evalString(ctx sessionctx.Context, row arg0 string arg1 types.Duration ) - arg0, isNull, err = b.args[0].EvalString(b.ctx, row) + arg0, isNull, err = b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", isNull, err } - arg1, isNull, err = b.args[1].EvalDuration(b.ctx, row) + arg1, isNull, err = b.args[1].EvalDuration(ctx, row) if isNull || err != nil { return "", isNull, err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx if isDuration(arg0) { result, err = strDurationAddDuration(sc, arg0, arg1) if err != nil { @@ -4924,7 +4916,7 @@ func (b *builtinAddStringAndStringSig) evalString(ctx sessionctx.Context, row ch arg0, arg1Str string arg1 types.Duration ) - arg0, isNull, err = b.args[0].EvalString(b.ctx, row) + arg0, isNull, err = b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", isNull, err } @@ -4932,11 +4924,11 @@ func (b *builtinAddStringAndStringSig) evalString(ctx sessionctx.Context, row ch if mysql.HasBinaryFlag(arg1Type.GetFlag()) { return "", true, nil } - arg1Str, isNull, err = b.args[1].EvalString(b.ctx, row) + arg1Str, isNull, err = b.args[1].EvalString(ctx, row) if isNull || err != nil { return "", isNull, err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx arg1, _, err = types.ParseDuration(sc.TypeCtx(), arg1Str, getFsp4TimeAddSub(arg1Str)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { @@ -4983,11 +4975,11 @@ 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 sessionctx.Context, row chunk.Row) (string, bool, error) { - arg0, isNull, err := b.args[0].EvalDuration(b.ctx, row) + arg0, isNull, err := b.args[0].EvalDuration(ctx, row) if isNull || err != nil { return "", isNull, err } - arg1, isNull, err := b.args[1].EvalDuration(b.ctx, row) + arg1, isNull, err := b.args[1].EvalDuration(ctx, row) if isNull || err != nil { return "", isNull, err } @@ -5008,18 +5000,18 @@ 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 sessionctx.Context, row chunk.Row) (string, bool, error) { - arg0, isNull, err := b.args[0].EvalDuration(b.ctx, row) + arg0, isNull, err := b.args[0].EvalDuration(ctx, row) if isNull || err != nil { return "", isNull, err } - s, isNull, err := b.args[1].EvalString(b.ctx, row) + s, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return "", isNull, err } if !isDuration(s) { return "", true, nil } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx arg1, _, err := types.ParseDuration(sc.TypeCtx(), s, getFsp4TimeAddSub(s)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { @@ -5099,19 +5091,19 @@ func (b *builtinConvertTzSig) Clone() builtinFunc { // `CONVERT_TZ` function returns NULL if the arguments are invalid. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_convert-tz func (b *builtinConvertTzSig) evalTime(ctx sessionctx.Context, row chunk.Row) (types.Time, bool, error) { - dt, isNull, err := b.args[0].EvalTime(b.ctx, row) + dt, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { return types.ZeroTime, true, nil } if dt.InvalidZero() { - return types.ZeroTime, true, handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, dt.String())) + return types.ZeroTime, true, handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, dt.String())) } - fromTzStr, isNull, err := b.args[1].EvalString(b.ctx, row) + fromTzStr, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return types.ZeroTime, true, nil } - toTzStr, isNull, err := b.args[2].EvalString(b.ctx, row) + toTzStr, isNull, err := b.args[2].EvalString(ctx, row) if isNull || err != nil { return types.ZeroTime, true, nil } @@ -5195,11 +5187,11 @@ func (b *builtinMakeDateSig) Clone() builtinFunc { func (b *builtinMakeDateSig) evalTime(ctx sessionctx.Context, row chunk.Row) (d types.Time, isNull bool, err error) { args := b.getArgs() var year, dayOfYear int64 - year, isNull, err = args[0].EvalInt(b.ctx, row) + year, isNull, err = args[0].EvalInt(ctx, row) if isNull || err != nil { return d, true, err } - dayOfYear, isNull, err = args[1].EvalInt(b.ctx, row) + dayOfYear, isNull, err = args[1].EvalInt(ctx, row) if isNull || err != nil { return d, true, err } @@ -5214,7 +5206,7 @@ func (b *builtinMakeDateSig) evalTime(ctx sessionctx.Context, row chunk.Row) (d startTime := types.NewTime(types.FromDate(int(year), 1, 1, 0, 0, 0, 0), mysql.TypeDate, 0) retTimestamp := types.TimestampDiff("DAY", types.ZeroDate, startTime) if retTimestamp == 0 { - return d, true, handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, startTime.String())) + return d, true, handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, startTime.String())) } ret := types.TimeFromDays(retTimestamp + dayOfYear - 1) if ret.IsZero() || ret.Year() > 9999 { @@ -5263,7 +5255,7 @@ func (b *builtinMakeTimeSig) Clone() builtinFunc { return newSig } -func (b *builtinMakeTimeSig) makeTime(hour int64, minute int64, second float64, hourUnsignedFlag bool) (types.Duration, error) { +func (b *builtinMakeTimeSig) makeTime(ctx types.Context, hour int64, minute int64, second float64, hourUnsignedFlag bool) (types.Duration, error) { var overflow bool // MySQL TIME datatype: https://dev.mysql.com/doc/refman/5.7/en/time.html // ranges from '-838:59:59.000000' to '838:59:59.000000' @@ -5286,7 +5278,7 @@ func (b *builtinMakeTimeSig) makeTime(hour int64, minute int64, second float64, second = 59 } fsp := b.tp.GetDecimal() - d, _, err := types.ParseDuration(b.ctx.GetSessionVars().StmtCtx.TypeCtx(), fmt.Sprintf("%02d:%02d:%v", hour, minute, second), fsp) + d, _, err := types.ParseDuration(ctx, fmt.Sprintf("%02d:%02d:%v", hour, minute, second), fsp) return d, err } @@ -5295,25 +5287,25 @@ func (b *builtinMakeTimeSig) makeTime(hour int64, minute int64, second float64, func (b *builtinMakeTimeSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (types.Duration, bool, error) { dur := types.ZeroDuration dur.Fsp = types.MaxFsp - hour, isNull, err := b.args[0].EvalInt(b.ctx, row) + hour, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return dur, isNull, err } - minute, isNull, err := b.args[1].EvalInt(b.ctx, row) + minute, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return dur, isNull, err } if minute < 0 || minute >= 60 { return dur, true, nil } - second, isNull, err := b.args[2].EvalReal(b.ctx, row) + second, isNull, err := b.args[2].EvalReal(ctx, row) if isNull || err != nil { return dur, isNull, err } if second < 0 || second >= 60 { return dur, true, nil } - dur, err = b.makeTime(hour, minute, second, mysql.HasUnsignedFlag(b.args[0].GetType().GetFlag())) + dur, err = b.makeTime(ctx.GetSessionVars().StmtCtx.TypeCtx(), hour, minute, second, mysql.HasUnsignedFlag(b.args[0].GetType().GetFlag())) if err != nil { return dur, true, err } @@ -5389,12 +5381,12 @@ func (b *builtinPeriodAddSig) Clone() builtinFunc { // evalInt evals PERIOD_ADD(P,N). // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_period-add func (b *builtinPeriodAddSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - p, isNull, err := b.args[0].EvalInt(b.ctx, row) + p, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return 0, true, err } - n, isNull, err := b.args[1].EvalInt(b.ctx, row) + n, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return 0, true, err } @@ -5438,12 +5430,12 @@ func (b *builtinPeriodDiffSig) Clone() builtinFunc { // evalInt evals PERIOD_DIFF(P1,P2). // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_period-diff func (b *builtinPeriodDiffSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - p1, isNull, err := b.args[0].EvalInt(b.ctx, row) + p1, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } - p2, isNull, err := b.args[1].EvalInt(b.ctx, row) + p2, isNull, err := b.args[1].EvalInt(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -5492,9 +5484,9 @@ func (b *builtinQuarterSig) Clone() builtinFunc { // evalInt evals QUARTER(date). // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_quarter func (b *builtinQuarterSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - date, isNull, err := b.args[0].EvalTime(b.ctx, row) + date, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { - return 0, true, handleInvalidTimeError(b.ctx, err) + return 0, true, handleInvalidTimeError(ctx, err) } return int64((date.Month() + 2) / 3), false, nil @@ -5544,7 +5536,7 @@ func (b *builtinSecToTimeSig) Clone() builtinFunc { // evalDuration evals SEC_TO_TIME(seconds). // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_sec-to-time func (b *builtinSecToTimeSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (types.Duration, bool, error) { - secondsFloat, isNull, err := b.args[0].EvalReal(b.ctx, row) + secondsFloat, isNull, err := b.args[0].EvalReal(ctx, row) if isNull || err != nil { return types.Duration{}, isNull, err } @@ -5570,7 +5562,7 @@ func (b *builtinSecToTimeSig) evalDuration(ctx sessionctx.Context, row chunk.Row minute = 59 second = 59 demical = 0 - err = b.ctx.GetSessionVars().StmtCtx.HandleTruncate(errTruncatedWrongValue.GenWithStackByArgs("time", strconv.FormatFloat(secondsFloat, 'f', -1, 64))) + err = ctx.GetSessionVars().StmtCtx.HandleTruncate(errTruncatedWrongValue.GenWithStackByArgs("time", strconv.FormatFloat(secondsFloat, 'f', -1, 64))) if err != nil { return types.Duration{}, err != nil, err } @@ -5581,7 +5573,7 @@ func (b *builtinSecToTimeSig) evalDuration(ctx sessionctx.Context, row chunk.Row secondDemical = float64(second) + demical var dur types.Duration - dur, _, err = types.ParseDuration(b.ctx.GetSessionVars().StmtCtx.TypeCtx(), fmt.Sprintf("%s%02d:%02d:%s", negative, hour, minute, strconv.FormatFloat(secondDemical, 'f', -1, 64)), b.tp.GetDecimal()) + dur, _, err = types.ParseDuration(ctx.GetSessionVars().StmtCtx.TypeCtx(), fmt.Sprintf("%s%02d:%02d:%s", negative, hour, minute, strconv.FormatFloat(secondDemical, 'f', -1, 64)), b.tp.GetDecimal()) if err != nil { return types.Duration{}, err != nil, err } @@ -5669,15 +5661,15 @@ func (b *builtinSubDatetimeAndDurationSig) Clone() builtinFunc { // evalTime evals a builtinSubDatetimeAndDurationSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_subtime func (b *builtinSubDatetimeAndDurationSig) evalTime(ctx sessionctx.Context, row chunk.Row) (types.Time, bool, error) { - arg0, isNull, err := b.args[0].EvalTime(b.ctx, row) + arg0, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { return types.ZeroDatetime, isNull, err } - arg1, isNull, err := b.args[1].EvalDuration(b.ctx, row) + arg1, isNull, err := b.args[1].EvalDuration(ctx, row) if isNull || err != nil { return types.ZeroDatetime, isNull, err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx result, err := arg0.Add(sc.TypeCtx(), arg1.Neg()) return result, err != nil, err } @@ -5695,18 +5687,18 @@ func (b *builtinSubDatetimeAndStringSig) Clone() builtinFunc { // evalTime evals a builtinSubDatetimeAndStringSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_subtime func (b *builtinSubDatetimeAndStringSig) evalTime(ctx sessionctx.Context, row chunk.Row) (types.Time, bool, error) { - arg0, isNull, err := b.args[0].EvalTime(b.ctx, row) + arg0, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { return types.ZeroDatetime, isNull, err } - s, isNull, err := b.args[1].EvalString(b.ctx, row) + s, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return types.ZeroDatetime, isNull, err } if !isDuration(s) { return types.ZeroDatetime, true, nil } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx arg1, _, err := types.ParseDuration(sc.TypeCtx(), s, types.GetFsp(s)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { @@ -5752,15 +5744,15 @@ func (b *builtinSubStringAndDurationSig) evalString(ctx sessionctx.Context, row arg0 string arg1 types.Duration ) - arg0, isNull, err = b.args[0].EvalString(b.ctx, row) + arg0, isNull, err = b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", isNull, err } - arg1, isNull, err = b.args[1].EvalDuration(b.ctx, row) + arg1, isNull, err = b.args[1].EvalDuration(ctx, row) if isNull || err != nil { return "", isNull, err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx if isDuration(arg0) { result, err = strDurationSubDuration(sc, arg0, arg1) if err != nil { @@ -5793,7 +5785,7 @@ func (b *builtinSubStringAndStringSig) evalString(ctx sessionctx.Context, row ch s, arg0 string arg1 types.Duration ) - arg0, isNull, err = b.args[0].EvalString(b.ctx, row) + arg0, isNull, err = b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", isNull, err } @@ -5801,11 +5793,11 @@ func (b *builtinSubStringAndStringSig) evalString(ctx sessionctx.Context, row ch if mysql.HasBinaryFlag(arg1Type.GetFlag()) { return "", true, nil } - s, isNull, err = b.args[1].EvalString(b.ctx, row) + s, isNull, err = b.args[1].EvalString(ctx, row) if isNull || err != nil { return "", isNull, err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx arg1, _, err = types.ParseDuration(sc.TypeCtx(), s, getFsp4TimeAddSub(s)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { @@ -5858,11 +5850,11 @@ func (b *builtinSubDurationAndDurationSig) Clone() builtinFunc { // evalDuration evals a builtinSubDurationAndDurationSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_subtime func (b *builtinSubDurationAndDurationSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (types.Duration, bool, error) { - arg0, isNull, err := b.args[0].EvalDuration(b.ctx, row) + arg0, isNull, err := b.args[0].EvalDuration(ctx, row) if isNull || err != nil { return types.ZeroDuration, isNull, err } - arg1, isNull, err := b.args[1].EvalDuration(b.ctx, row) + arg1, isNull, err := b.args[1].EvalDuration(ctx, row) if isNull || err != nil { return types.ZeroDuration, isNull, err } @@ -5886,18 +5878,18 @@ func (b *builtinSubDurationAndStringSig) Clone() builtinFunc { // evalDuration evals a builtinSubDurationAndStringSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_subtime func (b *builtinSubDurationAndStringSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (types.Duration, bool, error) { - arg0, isNull, err := b.args[0].EvalDuration(b.ctx, row) + arg0, isNull, err := b.args[0].EvalDuration(ctx, row) if isNull || err != nil { return types.ZeroDuration, isNull, err } - s, isNull, err := b.args[1].EvalString(b.ctx, row) + s, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return types.ZeroDuration, isNull, err } if !isDuration(s) { return types.ZeroDuration, true, nil } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx arg1, _, err := types.ParseDuration(sc.TypeCtx(), s, types.GetFsp(s)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { @@ -5939,11 +5931,11 @@ 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 sessionctx.Context, row chunk.Row) (string, bool, error) { - arg0, isNull, err := b.args[0].EvalDuration(b.ctx, row) + arg0, isNull, err := b.args[0].EvalDuration(ctx, row) if isNull || err != nil { return "", isNull, err } - arg1, isNull, err := b.args[1].EvalDuration(b.ctx, row) + arg1, isNull, err := b.args[1].EvalDuration(ctx, row) if isNull || err != nil { return "", isNull, err } @@ -5964,18 +5956,18 @@ 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 sessionctx.Context, row chunk.Row) (string, bool, error) { - arg0, isNull, err := b.args[0].EvalDuration(b.ctx, row) + arg0, isNull, err := b.args[0].EvalDuration(ctx, row) if isNull || err != nil { return "", isNull, err } - s, isNull, err := b.args[1].EvalString(b.ctx, row) + s, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return "", isNull, err } if !isDuration(s) { return "", true, nil } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx arg1, _, err := types.ParseDuration(sc.TypeCtx(), s, getFsp4TimeAddSub(s)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { @@ -6023,7 +6015,7 @@ func (b *builtinTimeFormatSig) Clone() builtinFunc { // evalString evals a builtinTimeFormatSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_time-format func (b *builtinTimeFormatSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - dur, isNull, err := b.args[0].EvalDuration(b.ctx, row) + dur, isNull, err := b.args[0].EvalDuration(ctx, row) // if err != nil, then dur is ZeroDuration, outputs 00:00:00 in this case which follows the behavior of mysql. if err != nil { logutil.BgLogger().Warn("time_format.args[0].EvalDuration failed", zap.Error(err)) @@ -6031,11 +6023,11 @@ func (b *builtinTimeFormatSig) evalString(ctx sessionctx.Context, row chunk.Row) if isNull { return "", isNull, err } - formatMask, isNull, err := b.args[1].EvalString(b.ctx, row) + formatMask, isNull, err := b.args[1].EvalString(ctx, row) if err != nil || isNull { return "", isNull, err } - res, err := b.formatTime(b.ctx, dur, formatMask) + res, err := b.formatTime(ctx, dur, formatMask) return res, isNull, err } @@ -6075,7 +6067,7 @@ func (b *builtinTimeToSecSig) Clone() builtinFunc { // evalInt evals TIME_TO_SEC(time). // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_time-to-sec func (b *builtinTimeToSecSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - duration, isNull, err := b.args[0].EvalDuration(b.ctx, row) + duration, isNull, err := b.args[0].EvalDuration(ctx, row) if isNull || err != nil { return 0, isNull, err } @@ -6208,21 +6200,21 @@ func addUnitToTime(unit string, t time.Time, v float64) (time.Time, bool, error) // evalString evals a builtinTimestampAddSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_timestampadd func (b *builtinTimestampAddSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - unit, isNull, err := b.args[0].EvalString(b.ctx, row) + unit, isNull, err := b.args[0].EvalString(ctx, row) if isNull || err != nil { return "", isNull, err } - v, isNull, err := b.args[1].EvalReal(b.ctx, row) + v, isNull, err := b.args[1].EvalReal(ctx, row) if isNull || err != nil { return "", isNull, err } - arg, isNull, err := b.args[2].EvalTime(b.ctx, row) + arg, isNull, err := b.args[2].EvalTime(ctx, row) if isNull || err != nil { return "", isNull, err } tm1, err := arg.GoTime(time.Local) if err != nil { - b.ctx.GetSessionVars().StmtCtx.AppendWarning(err) + ctx.GetSessionVars().StmtCtx.AppendWarning(err) return "", true, nil } tb, overflow, err := addUnitToTime(unit, tm1, v) @@ -6230,7 +6222,7 @@ func (b *builtinTimestampAddSig) evalString(ctx sessionctx.Context, row chunk.Ro return "", true, err } if overflow { - return "", true, handleInvalidTimeError(b.ctx, types.ErrDatetimeFunctionOverflow.GenWithStackByArgs("datetime")) + return "", true, handleInvalidTimeError(ctx, types.ErrDatetimeFunctionOverflow.GenWithStackByArgs("datetime")) } fsp := types.DefaultFsp // use MaxFsp when microsecond is not zero @@ -6238,8 +6230,8 @@ func (b *builtinTimestampAddSig) evalString(ctx sessionctx.Context, row chunk.Ro fsp = types.MaxFsp } r := types.NewTime(types.FromGoTime(tb), b.resolveType(arg.Type(), unit), fsp) - if err = r.Check(b.ctx.GetSessionVars().StmtCtx.TypeCtx()); err != nil { - return "", true, handleInvalidTimeError(b.ctx, err) + if err = r.Check(ctx.GetSessionVars().StmtCtx.TypeCtx()); err != nil { + return "", true, handleInvalidTimeError(ctx, err) } return r.String(), false, nil } @@ -6291,17 +6283,17 @@ func (b *builtinToDaysSig) Clone() builtinFunc { // evalInt evals a builtinToDaysSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_to-days func (b *builtinToDaysSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - arg, isNull, err := b.args[0].EvalTime(b.ctx, row) + arg, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { - return 0, true, handleInvalidTimeError(b.ctx, err) + return 0, true, handleInvalidTimeError(ctx, err) } if arg.InvalidZero() { - return 0, true, handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, arg.String())) + return 0, true, handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, arg.String())) } ret := types.TimestampDiff("DAY", types.ZeroDate, arg) if ret == 0 { - return 0, true, handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, arg.String())) + return 0, true, handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, arg.String())) } return ret, false, nil } @@ -6336,16 +6328,16 @@ func (b *builtinToSecondsSig) Clone() builtinFunc { // evalInt evals a builtinToSecondsSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_to-seconds func (b *builtinToSecondsSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - arg, isNull, err := b.args[0].EvalTime(b.ctx, row) + arg, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { - return 0, true, handleInvalidTimeError(b.ctx, err) + return 0, true, handleInvalidTimeError(ctx, err) } if arg.InvalidZero() { - return 0, true, handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, arg.String())) + return 0, true, handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, arg.String())) } ret := types.TimestampDiff("SECOND", types.ZeroDate, arg) if ret == 0 { - return 0, true, handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, arg.String())) + return 0, true, handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, arg.String())) } return ret, false, nil } @@ -6366,7 +6358,7 @@ func (c *utcTimeFunctionClass) getFunction(ctx sessionctx.Context, args []Expres if err != nil { return nil, err } - fsp, err := getFspByIntArg(bf.ctx, args) + fsp, err := getFspByIntArg(ctx, args) if err != nil { return nil, err } @@ -6399,11 +6391,11 @@ func (b *builtinUTCTimeWithoutArgSig) Clone() builtinFunc { // evalDuration evals a builtinUTCTimeWithoutArgSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_utc-time func (b *builtinUTCTimeWithoutArgSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (types.Duration, bool, error) { - nowTs, err := getStmtTimestamp(b.ctx) + nowTs, err := getStmtTimestamp(ctx) if err != nil { return types.Duration{}, true, err } - v, _, err := types.ParseDuration(b.ctx.GetSessionVars().StmtCtx.TypeCtx(), nowTs.UTC().Format(types.TimeFormat), 0) + v, _, err := types.ParseDuration(ctx.GetSessionVars().StmtCtx.TypeCtx(), nowTs.UTC().Format(types.TimeFormat), 0) return v, false, err } @@ -6420,7 +6412,7 @@ func (b *builtinUTCTimeWithArgSig) Clone() builtinFunc { // evalDuration evals a builtinUTCTimeWithArgSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_utc-time func (b *builtinUTCTimeWithArgSig) evalDuration(ctx sessionctx.Context, row chunk.Row) (types.Duration, bool, error) { - fsp, isNull, err := b.args[0].EvalInt(b.ctx, row) + fsp, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil { return types.Duration{}, isNull, err } @@ -6430,11 +6422,11 @@ func (b *builtinUTCTimeWithArgSig) evalDuration(ctx sessionctx.Context, row chun if fsp < int64(types.MinFsp) { return types.Duration{}, true, errors.Errorf("Invalid negative %d specified, must in [0, 6]", fsp) } - nowTs, err := getStmtTimestamp(b.ctx) + nowTs, err := getStmtTimestamp(ctx) if err != nil { return types.Duration{}, true, err } - v, _, err := types.ParseDuration(b.ctx.GetSessionVars().StmtCtx.TypeCtx(), nowTs.UTC().Format(types.TimeFSPFormat), int(fsp)) + v, _, err := types.ParseDuration(ctx.GetSessionVars().StmtCtx.TypeCtx(), nowTs.UTC().Format(types.TimeFSPFormat), int(fsp)) return v, false, err } @@ -6469,14 +6461,14 @@ func (b *builtinLastDaySig) Clone() builtinFunc { // evalTime evals a builtinLastDaySig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_last-day func (b *builtinLastDaySig) evalTime(ctx sessionctx.Context, row chunk.Row) (types.Time, bool, error) { - arg, isNull, err := b.args[0].EvalTime(b.ctx, row) + arg, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { - return types.ZeroTime, true, handleInvalidTimeError(b.ctx, err) + return types.ZeroTime, true, handleInvalidTimeError(ctx, err) } tm := arg year, month := tm.Year(), tm.Month() - if tm.Month() == 0 || (tm.Day() == 0 && b.ctx.GetSessionVars().SQLMode.HasNoZeroDateMode()) { - return types.ZeroTime, true, handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, arg.String())) + if tm.Month() == 0 || (tm.Day() == 0 && ctx.GetSessionVars().SQLMode.HasNoZeroDateMode()) { + return types.ZeroTime, true, handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, arg.String())) } lastDay := types.GetLastDay(year, month) ret := types.NewTime(types.FromDate(year, month, lastDay, 0, 0, 0, 0), mysql.TypeDate, types.DefaultFsp) @@ -6532,14 +6524,14 @@ func (b *builtinTidbParseTsoSig) Clone() builtinFunc { // evalTime evals a builtinTidbParseTsoSig. func (b *builtinTidbParseTsoSig) evalTime(ctx sessionctx.Context, row chunk.Row) (types.Time, bool, error) { - arg, isNull, err := b.args[0].EvalInt(b.ctx, row) + arg, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil || arg <= 0 { - return types.ZeroTime, true, handleInvalidTimeError(b.ctx, err) + return types.ZeroTime, true, handleInvalidTimeError(ctx, err) } t := oracle.GetTimeFromTS(uint64(arg)) result := types.NewTime(types.FromGoTime(t), mysql.TypeDatetime, types.MaxFsp) - err = result.ConvertTimeZone(time.Local, b.ctx.GetSessionVars().Location()) + err = result.ConvertTimeZone(time.Local, ctx.GetSessionVars().Location()) if err != nil { return types.ZeroTime, true, err } @@ -6576,7 +6568,7 @@ func (b *builtinTidbParseTsoLogicalSig) Clone() builtinFunc { // evalTime evals a builtinTidbParseTsoLogicalSig. func (b *builtinTidbParseTsoLogicalSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - arg, isNull, err := b.args[0].EvalInt(b.ctx, row) + arg, isNull, err := b.args[0].EvalInt(ctx, row) if isNull || err != nil || arg <= 0 { return 0, true, err } @@ -6615,24 +6607,24 @@ func (b *builtinTiDBBoundedStalenessSig) Clone() builtinFunc { } func (b *builtinTiDBBoundedStalenessSig) evalTime(ctx sessionctx.Context, row chunk.Row) (types.Time, bool, error) { - leftTime, isNull, err := b.args[0].EvalTime(b.ctx, row) + leftTime, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { - return types.ZeroTime, true, handleInvalidTimeError(b.ctx, err) + return types.ZeroTime, true, handleInvalidTimeError(ctx, err) } - rightTime, isNull, err := b.args[1].EvalTime(b.ctx, row) + rightTime, isNull, err := b.args[1].EvalTime(ctx, row) if isNull || err != nil { - return types.ZeroTime, true, handleInvalidTimeError(b.ctx, err) + return types.ZeroTime, true, handleInvalidTimeError(ctx, err) } if invalidLeftTime, invalidRightTime := leftTime.InvalidZero(), rightTime.InvalidZero(); invalidLeftTime || invalidRightTime { if invalidLeftTime { - err = handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, leftTime.String())) + err = handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, leftTime.String())) } if invalidRightTime { - err = handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, rightTime.String())) + err = handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, rightTime.String())) } return types.ZeroTime, true, err } - timeZone := getTimeZone(b.ctx) + timeZone := getTimeZone(ctx) minTime, err := leftTime.GoTime(timeZone) if err != nil { return types.ZeroTime, true, err @@ -6645,7 +6637,7 @@ func (b *builtinTiDBBoundedStalenessSig) evalTime(ctx sessionctx.Context, row ch return types.ZeroTime, true, nil } // Because the minimum unit of a TSO is millisecond, so we only need fsp to be 3. - return types.NewTime(types.FromGoTime(calAppropriateTime(minTime, maxTime, getMinSafeTime(b.ctx, timeZone))), mysql.TypeDatetime, 3), false, nil + return types.NewTime(types.FromGoTime(calAppropriateTime(minTime, maxTime, getMinSafeTime(ctx, timeZone))), mysql.TypeDatetime, 3), false, nil } // GetMinSafeTime get minSafeTime @@ -6755,7 +6747,7 @@ func (b *builtinTiDBCurrentTsoSig) Clone() builtinFunc { // evalInt evals currentTSO(). func (b *builtinTiDBCurrentTsoSig) evalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { - tso, _ := b.ctx.GetSessionVars().GetSessionOrGlobalSystemVar(context.Background(), "tidb_current_ts") + tso, _ := ctx.GetSessionVars().GetSessionOrGlobalSystemVar(context.Background(), "tidb_current_ts") itso, _ := strconv.ParseInt(tso, 10, 64) return itso, false, nil } diff --git a/pkg/expression/builtin_time_test.go b/pkg/expression/builtin_time_test.go index efc6045eac281..0552aa2dc473e 100644 --- a/pkg/expression/builtin_time_test.go +++ b/pkg/expression/builtin_time_test.go @@ -437,7 +437,7 @@ func TestMonthName(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, ast.MonthName, primitiveValsToConstants(ctx, []interface{}{c.args})...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -475,7 +475,7 @@ func TestDayName(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, ast.DayName, primitiveValsToConstants(ctx, []interface{}{c.args})...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -511,7 +511,7 @@ func TestDayOfWeek(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, ast.DayOfWeek, primitiveValsToConstants(ctx, []interface{}{c.args})...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -547,7 +547,7 @@ func TestDayOfMonth(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, ast.DayOfMonth, primitiveValsToConstants(ctx, []interface{}{c.args})...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -583,7 +583,7 @@ func TestDayOfYear(t *testing.T) { for _, c := range cases { f, err := newFunctionForTest(ctx, ast.DayOfYear, primitiveValsToConstants(ctx, []interface{}{c.args})...) require.NoError(t, err) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -803,7 +803,7 @@ func TestTime(t *testing.T) { require.Equal(t, charset.CollationBin, tp.GetCollate()) require.Equal(t, mysql.BinaryFlag, tp.GetFlag()&mysql.BinaryFlag) require.Equal(t, c.flen, tp.GetFlen()) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -1643,7 +1643,7 @@ func TestTimeDiff(t *testing.T) { require.Equal(t, charset.CollationBin, tp.GetCollate()) require.Equal(t, mysql.BinaryFlag, tp.GetFlag()) require.Equal(t, c.flen, tp.GetFlen()) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getWarning { require.NoError(t, err) require.Equal(t, preWarningCnt+1, ctx.GetSessionVars().StmtCtx.WarningCount()) @@ -2276,7 +2276,7 @@ func TestMakeDate(t *testing.T) { require.Equal(t, charset.CollationBin, tp.GetCollate()) require.Equal(t, mysql.BinaryFlag, tp.GetFlag()) require.Equal(t, mysql.MaxDateWidth, tp.GetFlen()) - d, err := f.Eval(chunk.Row{}) + d, err := f.Eval(ctx, chunk.Row{}) if c.getErr { require.Error(t, err) } else { @@ -2369,7 +2369,7 @@ func TestMakeTime(t *testing.T) { // MAKETIME(CAST(-1 AS UNSIGNED),0,0); tp1 := types.NewFieldTypeBuilder().SetType(mysql.TypeLonglong).SetFlag(mysql.UnsignedFlag).SetFlen(mysql.MaxIntWidth).SetCharset(charset.CharsetBin).SetCollate(charset.CollationBin).BuildP() f := BuildCastFunction(ctx, &Constant{Value: types.NewDatum("-1"), RetType: types.NewFieldType(mysql.TypeString)}, tp1) - res, err := f.Eval(chunk.Row{}) + res, err := f.Eval(ctx, chunk.Row{}) require.NoError(t, err) f1, err := maketime.getFunction(ctx, datumsToConstants([]types.Datum{res, makeDatums(0)[0], makeDatums(0)[0]})) require.NoError(t, err) diff --git a/pkg/expression/builtin_time_vec.go b/pkg/expression/builtin_time_vec.go index 457a531e9ab68..075f3965edc18 100644 --- a/pkg/expression/builtin_time_vec.go +++ b/pkg/expression/builtin_time_vec.go @@ -38,7 +38,7 @@ func (b *builtinMonthSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalTime(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf); err != nil { return err } @@ -66,7 +66,7 @@ func (b *builtinYearSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalTime(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf); err != nil { return err } @@ -88,7 +88,7 @@ func (b *builtinYearSig) vectorized() bool { } func (b *builtinDateSig) vecEvalTime(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalTime(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, result); err != nil { return err } times := result.Times() @@ -96,8 +96,8 @@ func (b *builtinDateSig) vecEvalTime(ctx sessionctx.Context, input *chunk.Chunk, if result.IsNull(i) { continue } - if times[i].IsZero() && b.ctx.GetSessionVars().SQLMode.HasNoZeroDateMode() { - if err := handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, times[i].String())); err != nil { + if times[i].IsZero() && ctx.GetSessionVars().SQLMode.HasNoZeroDateMode() { + if err := handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, times[i].String())); err != nil { return err } result.SetNull(i, true) @@ -124,7 +124,7 @@ func (b *builtinFromUnixTime2ArgSig) vecEvalString(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(buf1) - if err = b.args[0].VecEvalDecimal(b.ctx, input, buf1); err != nil { + if err = b.args[0].VecEvalDecimal(ctx, input, buf1); err != nil { return err } @@ -133,7 +133,7 @@ func (b *builtinFromUnixTime2ArgSig) vecEvalString(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(buf2) - if err = b.args[1].VecEvalString(b.ctx, input, buf2); err != nil { + if err = b.args[1].VecEvalString(ctx, input, buf2); err != nil { return err } @@ -145,7 +145,7 @@ func (b *builtinFromUnixTime2ArgSig) vecEvalString(ctx sessionctx.Context, input result.AppendNull() continue } - t, isNull, err := evalFromUnixTime(b.ctx, fsp, &ds[i]) + t, isNull, err := evalFromUnixTime(ctx, fsp, &ds[i]) if err != nil { return err } @@ -168,7 +168,7 @@ func (b *builtinSysDateWithoutFspSig) vectorized() bool { func (b *builtinSysDateWithoutFspSig) vecEvalTime(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - loc := b.ctx.GetSessionVars().Location() + loc := ctx.GetSessionVars().Location() now := time.Now().In(loc) result.ResizeTime(n, false) @@ -195,7 +195,7 @@ func (b *builtinExtractDatetimeFromStringSig) vecEvalInt(ctx sessionctx.Context, return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } @@ -204,7 +204,7 @@ func (b *builtinExtractDatetimeFromStringSig) vecEvalInt(ctx sessionctx.Context, return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalTime(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalTime(ctx, input, buf1); err != nil { return err } @@ -229,14 +229,14 @@ func (b *builtinDayNameSig) vectorized() bool { return true } -func (b *builtinDayNameSig) vecEvalIndex(input *chunk.Chunk, apply func(i, res int), applyNull func(i int)) error { +func (b *builtinDayNameSig) vecEvalIndex(ctx sessionctx.Context, input *chunk.Chunk, apply func(i int, res int), applyNull func(i int)) error { n := input.NumRows() buf, err := b.bufAllocator.get() if err != nil { return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalTime(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf); err != nil { return err } @@ -247,7 +247,7 @@ func (b *builtinDayNameSig) vecEvalIndex(input *chunk.Chunk, apply func(i, res i continue } if ds[i].InvalidZero() { - if err := handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, ds[i].String())); err != nil { + if err := handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, ds[i].String())); err != nil { return err } applyNull(i) @@ -268,14 +268,11 @@ func (b *builtinDayNameSig) vecEvalString(ctx sessionctx.Context, input *chunk.C n := input.NumRows() result.ReserveString(n) - return b.vecEvalIndex(input, - func(i, res int) { - result.AppendString(types.WeekdayNames[res]) - }, - func(i int) { - result.AppendNull() - }, - ) + return b.vecEvalIndex(ctx, input, func(i, res int) { + result.AppendString(types.WeekdayNames[res]) + }, func(i int) { + result.AppendNull() + }) } func (b *builtinDayNameSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { @@ -283,14 +280,11 @@ func (b *builtinDayNameSig) vecEvalReal(ctx sessionctx.Context, input *chunk.Chu result.ResizeFloat64(n, false) f64s := result.Float64s() - return b.vecEvalIndex(input, - func(i, res int) { - f64s[i] = float64(res) - }, - func(i int) { - result.SetNull(i, true) - }, - ) + return b.vecEvalIndex(ctx, input, func(i, res int) { + f64s[i] = float64(res) + }, func(i int) { + result.SetNull(i, true) + }) } func (b *builtinDayNameSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { @@ -298,14 +292,11 @@ func (b *builtinDayNameSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chun result.ResizeInt64(n, false) i64s := result.Int64s() - return b.vecEvalIndex(input, - func(i, res int) { - i64s[i] = int64(res) - }, - func(i int) { - result.SetNull(i, true) - }, - ) + return b.vecEvalIndex(ctx, input, func(i, res int) { + i64s[i] = int64(res) + }, func(i int) { + result.SetNull(i, true) + }) } func (b *builtinWeekDaySig) vectorized() bool { @@ -319,7 +310,7 @@ func (b *builtinWeekDaySig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chun return err } defer b.bufAllocator.put(buf) - if err = b.args[0].VecEvalTime(b.ctx, input, buf); err != nil { + if err = b.args[0].VecEvalTime(ctx, input, buf); err != nil { return err } @@ -332,7 +323,7 @@ func (b *builtinWeekDaySig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chun continue } if ds[i].IsZero() { - if err = handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, ds[i].String())); err != nil { + if err = handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, ds[i].String())); err != nil { return err } result.SetNull(i, true) @@ -354,7 +345,7 @@ func (b *builtinTimeFormatSig) vecEvalString(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalDuration(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalDuration(ctx, input, buf); err != nil { // If err != nil, then dur is ZeroDuration, outputs 00:00:00 // in this case which follows the behavior of mysql. // Use the non-vectorized method to handle this kind of error. @@ -366,7 +357,7 @@ func (b *builtinTimeFormatSig) vecEvalString(ctx sessionctx.Context, input *chun return err1 } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } @@ -376,7 +367,7 @@ func (b *builtinTimeFormatSig) vecEvalString(ctx sessionctx.Context, input *chun result.AppendNull() continue } - res, err := b.formatTime(b.ctx, buf.GetDuration(i, 0), buf1.GetString(i)) + res, err := b.formatTime(ctx, buf.GetDuration(i, 0), buf1.GetString(i)) if err != nil { return err } @@ -398,15 +389,15 @@ func (b *builtinUTCTimeWithArgSig) vecEvalDuration(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf); err != nil { return err } - nowTs, err := getStmtTimestamp(b.ctx) + nowTs, err := getStmtTimestamp(ctx) if err != nil { return err } utc := nowTs.UTC().Format(types.TimeFSPFormat) - stmtCtx := b.ctx.GetSessionVars().StmtCtx + stmtCtx := ctx.GetSessionVars().StmtCtx result.ResizeGoDuration(n, false) d64s := result.GoDurations() i64s := buf.Int64s() @@ -436,7 +427,7 @@ func (b *builtinUnixTimestampCurrentSig) vectorized() bool { } func (b *builtinUnixTimestampCurrentSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - nowTs, err := getStmtTimestamp(b.ctx) + nowTs, err := getStmtTimestamp(ctx) if err != nil { return err } @@ -470,7 +461,7 @@ func (b *builtinYearWeekWithoutModeSig) vecEvalInt(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalTime(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf); err != nil { return err } @@ -484,7 +475,7 @@ func (b *builtinYearWeekWithoutModeSig) vecEvalInt(ctx sessionctx.Context, input } date := ds[i] if date.InvalidZero() { - if err := handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, date.String())); err != nil { + if err := handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, date.String())); err != nil { return err } result.SetNull(i, true) @@ -506,7 +497,7 @@ func (b *builtinPeriodDiffSig) vectorized() bool { // vecEvalInt evals PERIOD_DIFF(P1,P2). // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_period-diff func (b *builtinPeriodDiffSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, result); err != nil { return err } @@ -516,7 +507,7 @@ func (b *builtinPeriodDiffSig) vecEvalInt(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(buf) - if err := b.args[1].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf); err != nil { return err } @@ -546,7 +537,7 @@ func (b *builtinNowWithArgSig) vecEvalTime(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(bufFsp) - if err = b.args[0].VecEvalInt(b.ctx, input, bufFsp); err != nil { + if err = b.args[0].VecEvalInt(ctx, input, bufFsp); err != nil { return err } @@ -566,7 +557,7 @@ func (b *builtinNowWithArgSig) vecEvalTime(ctx sessionctx.Context, input *chunk. fsp = int(fsps[i]) } - t, isNull, err := evalNowWithFsp(b.ctx, fsp) + t, isNull, err := evalNowWithFsp(ctx, fsp) if err != nil { return err } @@ -593,7 +584,7 @@ func (b *builtinGetFormatSig) vecEvalString(ctx sessionctx.Context, input *chunk return err } defer b.bufAllocator.put(buf0) - if err = b.args[0].VecEvalString(b.ctx, input, buf0); err != nil { + if err = b.args[0].VecEvalString(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -601,7 +592,7 @@ func (b *builtinGetFormatSig) vecEvalString(ctx sessionctx.Context, input *chunk return err } defer b.bufAllocator.put(buf1) - if err = b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err = b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } @@ -671,7 +662,7 @@ func (b *builtinLastDaySig) vectorized() bool { func (b *builtinLastDaySig) vecEvalTime(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - if err := b.args[0].VecEvalTime(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, result); err != nil { return err } times := result.Times() @@ -681,8 +672,8 @@ func (b *builtinLastDaySig) vecEvalTime(ctx sessionctx.Context, input *chunk.Chu } tm := times[i] year, month := tm.Year(), tm.Month() - if tm.Month() == 0 || (tm.Day() == 0 && b.ctx.GetSessionVars().SQLMode.HasNoZeroDateMode()) { - if err := handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, times[i].String())); err != nil { + if tm.Month() == 0 || (tm.Day() == 0 && ctx.GetSessionVars().SQLMode.HasNoZeroDateMode()) { + if err := handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, times[i].String())); err != nil { return err } result.SetNull(i, true) @@ -705,7 +696,7 @@ func (b *builtinStrToDateDateSig) vecEvalTime(ctx sessionctx.Context, input *chu return err } defer b.bufAllocator.put(bufStrings) - if err := b.args[0].VecEvalString(b.ctx, input, bufStrings); err != nil { + if err := b.args[0].VecEvalString(ctx, input, bufStrings); err != nil { return err } @@ -714,14 +705,14 @@ func (b *builtinStrToDateDateSig) vecEvalTime(ctx sessionctx.Context, input *chu return err } defer b.bufAllocator.put(bufFormats) - if err := b.args[1].VecEvalString(b.ctx, input, bufFormats); err != nil { + if err := b.args[1].VecEvalString(ctx, input, bufFormats); err != nil { return err } result.ResizeTime(n, false) result.MergeNulls(bufStrings, bufFormats) times := result.Times() - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx for i := 0; i < n; i++ { if result.IsNull(i) { continue @@ -729,14 +720,14 @@ func (b *builtinStrToDateDateSig) vecEvalTime(ctx sessionctx.Context, input *chu var t types.Time succ := t.StrToDate(sc.TypeCtx(), bufStrings.GetString(i), bufFormats.GetString(i)) if !succ { - if err := handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, t.String())); err != nil { + if err := handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, t.String())); err != nil { return err } result.SetNull(i, true) continue } - if b.ctx.GetSessionVars().SQLMode.HasNoZeroDateMode() && (t.Year() == 0 || t.Month() == 0 || t.Day() == 0) { - if err := handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, t.String())); err != nil { + if ctx.GetSessionVars().SQLMode.HasNoZeroDateMode() && (t.Year() == 0 || t.Month() == 0 || t.Day() == 0) { + if err := handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, t.String())); err != nil { return err } result.SetNull(i, true) @@ -760,11 +751,11 @@ func (b *builtinSysDateWithFspSig) vecEvalTime(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(buf) - if err = b.args[0].VecEvalInt(b.ctx, input, buf); err != nil { + if err = b.args[0].VecEvalInt(ctx, input, buf); err != nil { return err } - loc := b.ctx.GetSessionVars().Location() + loc := ctx.GetSessionVars().Location() now := time.Now().In(loc) result.ResizeTime(n, false) @@ -796,7 +787,7 @@ func (b *builtinTidbParseTsoSig) vecEvalTime(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf); err != nil { return err } args := buf.Int64s() @@ -813,7 +804,7 @@ func (b *builtinTidbParseTsoSig) vecEvalTime(ctx sessionctx.Context, input *chun } t := oracle.GetTimeFromTS(uint64(args[i])) r := types.NewTime(types.FromGoTime(t), mysql.TypeDatetime, types.MaxFsp) - if err := r.ConvertTimeZone(time.Local, b.ctx.GetSessionVars().Location()); err != nil { + if err := r.ConvertTimeZone(time.Local, ctx.GetSessionVars().Location()); err != nil { return err } times[i] = r @@ -832,7 +823,7 @@ func (b *builtinTiDBBoundedStalenessSig) vecEvalTime(ctx sessionctx.Context, inp return err } defer b.bufAllocator.put(buf0) - if err = b.args[0].VecEvalTime(b.ctx, input, buf0); err != nil { + if err = b.args[0].VecEvalTime(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -840,13 +831,13 @@ func (b *builtinTiDBBoundedStalenessSig) vecEvalTime(ctx sessionctx.Context, inp return err } defer b.bufAllocator.put(buf1) - if err = b.args[1].VecEvalTime(b.ctx, input, buf1); err != nil { + if err = b.args[1].VecEvalTime(ctx, input, buf1); err != nil { return err } args0 := buf0.Times() args1 := buf1.Times() - timeZone := getTimeZone(b.ctx) - minSafeTime := getMinSafeTime(b.ctx, timeZone) + timeZone := getTimeZone(ctx) + minSafeTime := getMinSafeTime(ctx, timeZone) result.ResizeTime(n, false) result.MergeNulls(buf0, buf1) times := result.Times() @@ -856,10 +847,10 @@ func (b *builtinTiDBBoundedStalenessSig) vecEvalTime(ctx sessionctx.Context, inp } if invalidArg0, invalidArg1 := args0[i].InvalidZero(), args1[i].InvalidZero(); invalidArg0 || invalidArg1 { if invalidArg0 { - err = handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, args0[i].String())) + err = handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, args0[i].String())) } if invalidArg1 { - err = handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, args1[i].String())) + err = handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, args1[i].String())) } if err != nil { return err @@ -896,7 +887,7 @@ func (b *builtinFromDaysSig) vecEvalTime(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf) - if err = b.args[0].VecEvalInt(b.ctx, input, buf); err != nil { + if err = b.args[0].VecEvalInt(ctx, input, buf); err != nil { return err } @@ -924,7 +915,7 @@ func (b *builtinMicroSecondSig) vecEvalInt(ctx sessionctx.Context, input *chunk. return err } defer b.bufAllocator.put(buf) - if err = b.args[0].VecEvalDuration(b.ctx, input, buf); err != nil { + if err = b.args[0].VecEvalDuration(ctx, input, buf); err != nil { return vecEvalIntByRows(ctx, b, input, result) } @@ -953,7 +944,7 @@ func (b *builtinQuarterSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chun return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalTime(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf); err != nil { return err } @@ -981,7 +972,7 @@ func (b *builtinWeekWithModeSig) vecEvalInt(ctx sessionctx.Context, input *chunk if err != nil { return err } - if err := b.args[0].VecEvalTime(b.ctx, input, buf1); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf1); err != nil { return err } defer b.bufAllocator.put(buf1) @@ -990,7 +981,7 @@ func (b *builtinWeekWithModeSig) vecEvalInt(ctx sessionctx.Context, input *chunk if err != nil { return err } - if err := b.args[1].VecEvalInt(b.ctx, input, buf2); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf2); err != nil { return err } defer b.bufAllocator.put(buf2) @@ -1006,7 +997,7 @@ func (b *builtinWeekWithModeSig) vecEvalInt(ctx sessionctx.Context, input *chunk } date := ds[i] if date.IsZero() { - if err := handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, date.String())); err != nil { + if err := handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, date.String())); err != nil { return err } result.SetNull(i, true) @@ -1034,7 +1025,7 @@ func (b *builtinExtractDatetimeSig) vecEvalInt(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(unit) - if err := b.args[0].VecEvalString(b.ctx, input, unit); err != nil { + if err := b.args[0].VecEvalString(ctx, input, unit); err != nil { return err } dt, err := b.bufAllocator.get() @@ -1042,7 +1033,7 @@ func (b *builtinExtractDatetimeSig) vecEvalInt(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(dt) - if err = b.args[1].VecEvalTime(b.ctx, input, dt); err != nil { + if err = b.args[1].VecEvalTime(ctx, input, dt); err != nil { return err } result.ResizeInt64(n, false) @@ -1075,7 +1066,7 @@ func (b *builtinExtractDurationSig) vecEvalInt(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(unit) - if err := b.args[0].VecEvalString(b.ctx, input, unit); err != nil { + if err := b.args[0].VecEvalString(ctx, input, unit); err != nil { return err } dur, err := b.bufAllocator.get() @@ -1083,7 +1074,7 @@ func (b *builtinExtractDurationSig) vecEvalInt(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(dur) - if err = b.args[1].VecEvalDuration(b.ctx, input, dur); err != nil { + if err = b.args[1].VecEvalDuration(ctx, input, dur); err != nil { return err } result.ResizeInt64(n, false) @@ -1117,7 +1108,7 @@ func (b *builtinStrToDateDurationSig) vecEvalDuration(ctx sessionctx.Context, in return err } defer b.bufAllocator.put(bufStrings) - if err := b.args[0].VecEvalString(b.ctx, input, bufStrings); err != nil { + if err := b.args[0].VecEvalString(ctx, input, bufStrings); err != nil { return err } @@ -1126,14 +1117,14 @@ func (b *builtinStrToDateDurationSig) vecEvalDuration(ctx sessionctx.Context, in return err } defer b.bufAllocator.put(bufFormats) - if err := b.args[1].VecEvalString(b.ctx, input, bufFormats); err != nil { + if err := b.args[1].VecEvalString(ctx, input, bufFormats); err != nil { return err } result.ResizeGoDuration(n, false) result.MergeNulls(bufStrings, bufFormats) d64s := result.GoDurations() - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx for i := 0; i < n; i++ { if result.IsNull(i) { continue @@ -1141,7 +1132,7 @@ func (b *builtinStrToDateDurationSig) vecEvalDuration(ctx sessionctx.Context, in var t types.Time succ := t.StrToDate(sc.TypeCtx(), bufStrings.GetString(i), bufFormats.GetString(i)) if !succ { - if err := handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, t.String())); err != nil { + if err := handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, t.String())); err != nil { return err } result.SetNull(i, true) @@ -1170,7 +1161,7 @@ func (b *builtinToSecondsSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalTime(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf); err != nil { return err } @@ -1185,7 +1176,7 @@ func (b *builtinToSecondsSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch arg := ds[i] ret := types.TimestampDiff("SECOND", types.ZeroDate, arg) if ret == 0 { - if err := handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, arg.String())); err != nil { + if err := handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, arg.String())); err != nil { return err } result.SetNull(i, true) @@ -1207,7 +1198,7 @@ func (b *builtinMinuteSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf) - if err = b.args[0].VecEvalDuration(b.ctx, input, buf); err != nil { + if err = b.args[0].VecEvalDuration(ctx, input, buf); err != nil { return vecEvalIntByRows(ctx, b, input, result) } @@ -1234,7 +1225,7 @@ func (b *builtinSecondSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf) - if err = b.args[0].VecEvalDuration(b.ctx, input, buf); err != nil { + if err = b.args[0].VecEvalDuration(ctx, input, buf); err != nil { return vecEvalIntByRows(ctx, b, input, result) } @@ -1256,7 +1247,7 @@ func (b *builtinNowWithoutArgSig) vectorized() bool { func (b *builtinNowWithoutArgSig) vecEvalTime(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - nowTs, isNull, err := evalNowWithFsp(b.ctx, 0) + nowTs, isNull, err := evalNowWithFsp(ctx, 0) if err != nil { return err } @@ -1297,7 +1288,7 @@ func (b *builtinMakeDateSig) vecEvalTime(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf1) - if err := b.args[0].VecEvalInt(b.ctx, input, buf1); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf1); err != nil { return err } @@ -1306,7 +1297,7 @@ func (b *builtinMakeDateSig) vecEvalTime(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf2) - if err := b.args[1].VecEvalInt(b.ctx, input, buf2); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf2); err != nil { return err } @@ -1333,7 +1324,7 @@ func (b *builtinMakeDateSig) vecEvalTime(ctx sessionctx.Context, input *chunk.Ch startTime := types.NewTime(types.FromDate(int(years[i]), 1, 1, 0, 0, 0, 0), mysql.TypeDate, 0) retTimestamp := types.TimestampDiff("DAY", types.ZeroDate, startTime) if retTimestamp == 0 { - if err = handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, startTime.String())); err != nil { + if err = handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, startTime.String())); err != nil { return err } result.SetNull(i, true) @@ -1360,7 +1351,7 @@ func (b *builtinWeekOfYearSig) vecEvalInt(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(buf) - if err = b.args[0].VecEvalTime(b.ctx, input, buf); err != nil { + if err = b.args[0].VecEvalTime(ctx, input, buf); err != nil { return err } result.ResizeInt64(n, false) @@ -1372,7 +1363,7 @@ func (b *builtinWeekOfYearSig) vecEvalInt(ctx sessionctx.Context, input *chunk.C continue } if ds[i].IsZero() { - if err = handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, ds[i].String())); err != nil { + if err = handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, ds[i].String())); err != nil { return err } result.SetNull(i, true) @@ -1397,7 +1388,7 @@ func (b *builtinUTCTimestampWithArgSig) vecEvalTime(ctx sessionctx.Context, inpu return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf); err != nil { return err } result.ResizeTime(n, false) @@ -1415,7 +1406,7 @@ func (b *builtinUTCTimestampWithArgSig) vecEvalTime(ctx sessionctx.Context, inpu if fsp < int64(types.MinFsp) { return errors.Errorf("Invalid negative %d specified, must in [0, 6]", fsp) } - res, isNull, err := evalUTCTimestampWithFsp(b.ctx, int(fsp)) + res, isNull, err := evalUTCTimestampWithFsp(ctx, int(fsp)) if err != nil { return err } @@ -1441,7 +1432,7 @@ func (b *builtinTimeToSecSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf) - if err = b.args[0].VecEvalDuration(b.ctx, input, buf); err != nil { + if err = b.args[0].VecEvalDuration(ctx, input, buf); err != nil { return err } @@ -1476,7 +1467,7 @@ func (b *builtinStrToDateDatetimeSig) vecEvalTime(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(dateBuf) - if err = b.args[0].VecEvalString(b.ctx, input, dateBuf); err != nil { + if err = b.args[0].VecEvalString(ctx, input, dateBuf); err != nil { return err } @@ -1485,15 +1476,15 @@ func (b *builtinStrToDateDatetimeSig) vecEvalTime(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(formatBuf) - if err = b.args[1].VecEvalString(b.ctx, input, formatBuf); err != nil { + if err = b.args[1].VecEvalString(ctx, input, formatBuf); err != nil { return err } result.ResizeTime(n, false) result.MergeNulls(dateBuf, formatBuf) times := result.Times() - sc := b.ctx.GetSessionVars().StmtCtx - hasNoZeroDateMode := b.ctx.GetSessionVars().SQLMode.HasNoZeroDateMode() + sc := ctx.GetSessionVars().StmtCtx + hasNoZeroDateMode := ctx.GetSessionVars().SQLMode.HasNoZeroDateMode() fsp := b.tp.GetDecimal() for i := 0; i < n; i++ { @@ -1503,14 +1494,14 @@ func (b *builtinStrToDateDatetimeSig) vecEvalTime(ctx sessionctx.Context, input var t types.Time succ := t.StrToDate(sc.TypeCtx(), dateBuf.GetString(i), formatBuf.GetString(i)) if !succ { - if err = handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, t.String())); err != nil { + if err = handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, t.String())); err != nil { return err } result.SetNull(i, true) continue } if hasNoZeroDateMode && (t.Year() == 0 || t.Month() == 0 || t.Day() == 0) { - if err = handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, t.String())); err != nil { + if err = handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, t.String())); err != nil { return err } result.SetNull(i, true) @@ -1528,7 +1519,7 @@ func (b *builtinUTCDateSig) vectorized() bool { } func (b *builtinUTCDateSig) vecEvalTime(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - nowTs, err := getStmtTimestamp(b.ctx) + nowTs, err := getStmtTimestamp(ctx) if err != nil { return err } @@ -1554,7 +1545,7 @@ func (b *builtinWeekWithoutModeSig) vecEvalInt(ctx sessionctx.Context, input *ch if err != nil { return err } - if err := b.args[0].VecEvalTime(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf); err != nil { return err } defer b.bufAllocator.put(buf) @@ -1565,11 +1556,11 @@ func (b *builtinWeekWithoutModeSig) vecEvalInt(ctx sessionctx.Context, input *ch ds := buf.Times() mode := 0 - modeStr, ok := b.ctx.GetSessionVars().GetSystemVar(variable.DefaultWeekFormat) + modeStr, ok := ctx.GetSessionVars().GetSystemVar(variable.DefaultWeekFormat) if ok && modeStr != "" { mode, err = strconv.Atoi(modeStr) if err != nil { - return handleInvalidTimeError(b.ctx, types.ErrInvalidWeekModeFormat.GenWithStackByArgs(modeStr)) + return handleInvalidTimeError(ctx, types.ErrInvalidWeekModeFormat.GenWithStackByArgs(modeStr)) } } for i := 0; i < n; i++ { @@ -1578,7 +1569,7 @@ func (b *builtinWeekWithoutModeSig) vecEvalInt(ctx sessionctx.Context, input *ch } date := ds[i] if date.IsZero() { - if err := handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, date.String())); err != nil { + if err := handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, date.String())); err != nil { return err } result.SetNull(i, true) @@ -1604,7 +1595,7 @@ func (b *builtinUnixTimestampDecSig) vecEvalDecimal(ctx sessionctx.Context, inpu return err } defer b.bufAllocator.put(timeBuf) - if err := b.args[0].VecEvalTime(b.ctx, input, timeBuf); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, timeBuf); err != nil { for i := 0; i < n; i++ { temp, isNull, err := b.evalDecimal(ctx, input.GetRow(i)) if err != nil { @@ -1621,7 +1612,7 @@ func (b *builtinUnixTimestampDecSig) vecEvalDecimal(ctx sessionctx.Context, inpu if result.IsNull(i) { continue } - t, err := timeBuf.GetTime(i).GoTime(getTimeZone(b.ctx)) + t, err := timeBuf.GetTime(i).GoTime(getTimeZone(ctx)) if err != nil { ts[i] = *new(types.MyDecimal) continue @@ -1643,7 +1634,7 @@ func (b *builtinPeriodAddSig) vectorized() bool { // vecEvalInt evals PERIOD_ADD(P,N). // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_period-add func (b *builtinPeriodAddSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := b.args[0].VecEvalInt(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, result); err != nil { return err } @@ -1653,7 +1644,7 @@ func (b *builtinPeriodAddSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf) - if err := b.args[1].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf); err != nil { return err } i64s := result.Int64s() @@ -1687,7 +1678,7 @@ func (b *builtinTimestampAddSig) vecEvalString(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } @@ -1696,7 +1687,7 @@ func (b *builtinTimestampAddSig) vecEvalString(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalReal(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalReal(ctx, input, buf1); err != nil { return err } @@ -1705,7 +1696,7 @@ func (b *builtinTimestampAddSig) vecEvalString(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(buf2) - if err := b.args[2].VecEvalTime(b.ctx, input, buf2); err != nil { + if err := b.args[2].VecEvalTime(ctx, input, buf2); err != nil { return err } @@ -1724,7 +1715,7 @@ func (b *builtinTimestampAddSig) vecEvalString(ctx sessionctx.Context, input *ch tm1, err := arg.GoTime(time.Local) if err != nil { - b.ctx.GetSessionVars().StmtCtx.AppendWarning(err) + ctx.GetSessionVars().StmtCtx.AppendWarning(err) result.AppendNull() continue } @@ -1733,7 +1724,7 @@ func (b *builtinTimestampAddSig) vecEvalString(ctx sessionctx.Context, input *ch return err } if overflow { - if err = handleInvalidTimeError(b.ctx, types.ErrDatetimeFunctionOverflow.GenWithStackByArgs("datetime")); err != nil { + if err = handleInvalidTimeError(ctx, types.ErrDatetimeFunctionOverflow.GenWithStackByArgs("datetime")); err != nil { return err } result.AppendNull() @@ -1745,8 +1736,8 @@ func (b *builtinTimestampAddSig) vecEvalString(ctx sessionctx.Context, input *ch fsp = types.MaxFsp } r := types.NewTime(types.FromGoTime(tb), b.resolveType(arg.Type(), unit), fsp) - if err = r.Check(b.ctx.GetSessionVars().StmtCtx.TypeCtx()); err != nil { - if err = handleInvalidTimeError(b.ctx, err); err != nil { + if err = r.Check(ctx.GetSessionVars().StmtCtx.TypeCtx()); err != nil { + if err = handleInvalidTimeError(ctx, err); err != nil { return err } result.AppendNull() @@ -1770,7 +1761,7 @@ func (b *builtinToDaysSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalTime(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf); err != nil { return err } @@ -1785,7 +1776,7 @@ func (b *builtinToDaysSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk arg := ds[i] ret := types.TimestampDiff("DAY", types.ZeroDate, arg) if ret == 0 { - if err := handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, arg.String())); err != nil { + if err := handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, arg.String())); err != nil { return err } result.SetNull(i, true) @@ -1808,7 +1799,7 @@ func (b *builtinDateFormatSig) vecEvalString(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(dateBuf) - if err := b.args[0].VecEvalTime(b.ctx, input, dateBuf); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, dateBuf); err != nil { return err } times := dateBuf.Times() @@ -1818,7 +1809,7 @@ func (b *builtinDateFormatSig) vecEvalString(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(formatBuf) - if err := b.args[1].VecEvalString(b.ctx, input, formatBuf); err != nil { + if err := b.args[1].VecEvalString(ctx, input, formatBuf); err != nil { return err } @@ -1851,7 +1842,7 @@ func (b *builtinDateFormatSig) vecEvalString(ctx sessionctx.Context, input *chun if isOriginalIntOrDecimalZero && !isOriginalStringZero { continue } - if errHandled := handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, t.String())); errHandled != nil { + if errHandled := handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, t.String())); errHandled != nil { return errHandled } continue @@ -1876,7 +1867,7 @@ func (b *builtinHourSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, return err } defer b.bufAllocator.put(buf) - if err = b.args[0].VecEvalDuration(b.ctx, input, buf); err != nil { + if err = b.args[0].VecEvalDuration(ctx, input, buf); err != nil { return vecEvalIntByRows(ctx, b, input, result) } @@ -1903,7 +1894,7 @@ func (b *builtinSecToTimeSig) vecEvalDuration(ctx sessionctx.Context, input *chu return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalReal(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalReal(ctx, input, buf); err != nil { return err } args := buf.Float64s() @@ -1929,7 +1920,7 @@ func (b *builtinSecToTimeSig) vecEvalDuration(ctx sessionctx.Context, input *chu minute = 59 second = 59 demical = 0 - err = b.ctx.GetSessionVars().StmtCtx.HandleTruncate(errTruncatedWrongValue.GenWithStackByArgs("time", strconv.FormatFloat(secondsFloat, 'f', -1, 64))) + err = ctx.GetSessionVars().StmtCtx.HandleTruncate(errTruncatedWrongValue.GenWithStackByArgs("time", strconv.FormatFloat(secondsFloat, 'f', -1, 64))) if err != nil { return err } @@ -1938,7 +1929,7 @@ func (b *builtinSecToTimeSig) vecEvalDuration(ctx sessionctx.Context, input *chu second = seconds % 60 } secondDemical := float64(second) + demical - duration, _, err := types.ParseDuration(b.ctx.GetSessionVars().StmtCtx.TypeCtx(), fmt.Sprintf("%s%02d:%02d:%s", negative, hour, minute, strconv.FormatFloat(secondDemical, 'f', -1, 64)), b.tp.GetDecimal()) + duration, _, err := types.ParseDuration(ctx.GetSessionVars().StmtCtx.TypeCtx(), fmt.Sprintf("%s%02d:%02d:%s", negative, hour, minute, strconv.FormatFloat(secondDemical, 'f', -1, 64)), b.tp.GetDecimal()) if err != nil { return err } @@ -1955,11 +1946,11 @@ func (b *builtinUTCTimeWithoutArgSig) vectorized() bool { // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_utc-time func (b *builtinUTCTimeWithoutArgSig) vecEvalDuration(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - nowTs, err := getStmtTimestamp(b.ctx) + nowTs, err := getStmtTimestamp(ctx) if err != nil { return err } - res, _, err := types.ParseDuration(b.ctx.GetSessionVars().StmtCtx.TypeCtx(), nowTs.UTC().Format(types.TimeFormat), types.DefaultFsp) + res, _, err := types.ParseDuration(ctx.GetSessionVars().StmtCtx.TypeCtx(), nowTs.UTC().Format(types.TimeFormat), types.DefaultFsp) if err != nil { return err } @@ -1982,7 +1973,7 @@ func (b *builtinDateDiffSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chu return err } defer b.bufAllocator.put(buf0) - if err = b.args[0].VecEvalTime(b.ctx, input, buf0); err != nil { + if err = b.args[0].VecEvalTime(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -1990,7 +1981,7 @@ func (b *builtinDateDiffSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chu return err } defer b.bufAllocator.put(buf1) - if err = b.args[1].VecEvalTime(b.ctx, input, buf1); err != nil { + if err = b.args[1].VecEvalTime(ctx, input, buf1); err != nil { return err } result.ResizeInt64(n, false) @@ -2004,10 +1995,10 @@ func (b *builtinDateDiffSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Chu } if invalidArg0, invalidArg1 := args0[i].InvalidZero(), args1[i].InvalidZero(); invalidArg0 || invalidArg1 { if invalidArg0 { - err = handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, args0[i].String())) + err = handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, args0[i].String())) } if invalidArg1 { - err = handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, args1[i].String())) + err = handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, args1[i].String())) } if err != nil { return err @@ -2025,12 +2016,12 @@ func (b *builtinCurrentDateSig) vectorized() bool { } func (b *builtinCurrentDateSig) vecEvalTime(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - nowTs, err := getStmtTimestamp(b.ctx) + nowTs, err := getStmtTimestamp(ctx) if err != nil { return err } - tz := b.ctx.GetSessionVars().Location() + tz := ctx.GetSessionVars().Location() year, month, day := nowTs.In(tz).Date() timeValue := types.NewTime(types.FromDate(year, int(month), day, 0, 0, 0, 0), mysql.TypeDate, 0) @@ -2047,9 +2038,9 @@ func (b *builtinMakeTimeSig) vectorized() bool { return true } -func (b *builtinMakeTimeSig) getVecIntParam(arg Expression, input *chunk.Chunk, col *chunk.Column) (err error) { +func (b *builtinMakeTimeSig) getVecIntParam(ctx sessionctx.Context, arg Expression, input *chunk.Chunk, col *chunk.Column) (err error) { if arg.GetType().EvalType() == types.ETReal { - err = arg.VecEvalReal(b.ctx, input, col) + err = arg.VecEvalReal(ctx, input, col) if err != nil { return err } @@ -2061,7 +2052,7 @@ func (b *builtinMakeTimeSig) getVecIntParam(arg Expression, input *chunk.Chunk, } return nil } - err = arg.VecEvalInt(b.ctx, input, col) + err = arg.VecEvalInt(ctx, input, col) return err } @@ -2070,7 +2061,7 @@ func (b *builtinMakeTimeSig) vecEvalDuration(ctx sessionctx.Context, input *chun result.ResizeInt64(n, false) hoursBuf := result var err error - if err = b.getVecIntParam(b.args[0], input, hoursBuf); err != nil { + if err = b.getVecIntParam(ctx, b.args[0], input, hoursBuf); err != nil { return err } minutesBuf, err := b.bufAllocator.get() @@ -2078,7 +2069,7 @@ func (b *builtinMakeTimeSig) vecEvalDuration(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(minutesBuf) - if err = b.getVecIntParam(b.args[1], input, minutesBuf); err != nil { + if err = b.getVecIntParam(ctx, b.args[1], input, minutesBuf); err != nil { return err } secondsBuf, err := b.bufAllocator.get() @@ -2086,7 +2077,7 @@ func (b *builtinMakeTimeSig) vecEvalDuration(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(secondsBuf) - if err = b.args[2].VecEvalReal(b.ctx, input, secondsBuf); err != nil { + if err = b.args[2].VecEvalReal(ctx, input, secondsBuf); err != nil { return err } hours := hoursBuf.Int64s() @@ -2103,7 +2094,7 @@ func (b *builtinMakeTimeSig) vecEvalDuration(ctx sessionctx.Context, input *chun result.SetNull(i, true) continue } - dur, err := b.makeTime(hours[i], minutes[i], seconds[i], hourUnsignedFlag) + dur, err := b.makeTime(ctx.GetSessionVars().StmtCtx.TypeCtx(), hours[i], minutes[i], seconds[i], hourUnsignedFlag) if err != nil { return err } @@ -2123,7 +2114,7 @@ func (b *builtinDayOfYearSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalTime(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf); err != nil { return err } result.ResizeInt64(n, false) @@ -2135,7 +2126,7 @@ func (b *builtinDayOfYearSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch continue } if ds[i].InvalidZero() { - if err := handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, ds[i].String())); err != nil { + if err := handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, ds[i].String())); err != nil { return err } result.SetNull(i, true) @@ -2157,7 +2148,7 @@ func (b *builtinFromUnixTime1ArgSig) vecEvalTime(ctx sessionctx.Context, input * return err } defer b.bufAllocator.put(buf) - if err = b.args[0].VecEvalDecimal(b.ctx, input, buf); err != nil { + if err = b.args[0].VecEvalDecimal(ctx, input, buf); err != nil { return err } result.ResizeTime(n, false) @@ -2169,7 +2160,7 @@ func (b *builtinFromUnixTime1ArgSig) vecEvalTime(ctx sessionctx.Context, input * if result.IsNull(i) { continue } - t, isNull, err := evalFromUnixTime(b.ctx, fsp, &ds[i]) + t, isNull, err := evalFromUnixTime(ctx, fsp, &ds[i]) if err != nil { return err } @@ -2194,14 +2185,14 @@ func (b *builtinYearWeekWithModeSig) vecEvalInt(ctx sessionctx.Context, input *c if err != nil { return err } - if err := b.args[0].VecEvalTime(b.ctx, input, buf1); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf1); err != nil { return err } buf2, err := b.bufAllocator.get() if err != nil { return err } - if err := b.args[1].VecEvalInt(b.ctx, input, buf2); err != nil { + if err := b.args[1].VecEvalInt(ctx, input, buf2); err != nil { return err } @@ -2216,7 +2207,7 @@ func (b *builtinYearWeekWithModeSig) vecEvalInt(ctx sessionctx.Context, input *c } date := ds[i] if date.IsZero() { - if err := handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, date.String())); err != nil { + if err := handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, date.String())); err != nil { return err } result.SetNull(i, true) @@ -2248,7 +2239,7 @@ func (b *builtinTimestampDiffSig) vecEvalInt(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(unitBuf) - if err := b.args[0].VecEvalString(b.ctx, input, unitBuf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, unitBuf); err != nil { return err } lhsBuf, err := b.bufAllocator.get() @@ -2256,7 +2247,7 @@ func (b *builtinTimestampDiffSig) vecEvalInt(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(lhsBuf) - if err := b.args[1].VecEvalTime(b.ctx, input, lhsBuf); err != nil { + if err := b.args[1].VecEvalTime(ctx, input, lhsBuf); err != nil { return err } rhsBuf, err := b.bufAllocator.get() @@ -2264,7 +2255,7 @@ func (b *builtinTimestampDiffSig) vecEvalInt(ctx sessionctx.Context, input *chun return err } defer b.bufAllocator.put(rhsBuf) - if err := b.args[2].VecEvalTime(b.ctx, input, rhsBuf); err != nil { + if err := b.args[2].VecEvalTime(ctx, input, rhsBuf); err != nil { return err } @@ -2279,10 +2270,10 @@ func (b *builtinTimestampDiffSig) vecEvalInt(ctx sessionctx.Context, input *chun } if invalidLHS, invalidRHS := lhs[i].InvalidZero(), rhs[i].InvalidZero(); invalidLHS || invalidRHS { if invalidLHS { - err = handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, lhs[i].String())) + err = handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, lhs[i].String())) } if invalidRHS { - err = handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, rhs[i].String())) + err = handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, rhs[i].String())) } if err != nil { return err @@ -2312,7 +2303,7 @@ func (b *builtinUnixTimestampIntSig) vecEvalInt(ctx sessionctx.Context, input *c result.ResizeInt64(n, false) i64s := result.Int64s() - if err := b.args[0].VecEvalTime(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf); err != nil { var isNull bool for i := 0; i < n; i++ { i64s[i], isNull, err = b.evalInt(ctx, input.GetRow(i)) @@ -2330,7 +2321,7 @@ func (b *builtinUnixTimestampIntSig) vecEvalInt(ctx sessionctx.Context, input *c continue } - t, err := buf.GetTime(i).AdjustedGoTime(getTimeZone(b.ctx)) + t, err := buf.GetTime(i).AdjustedGoTime(getTimeZone(ctx)) if err != nil { i64s[i] = 0 continue @@ -2356,13 +2347,13 @@ func (b *builtinCurrentTime0ArgSig) vectorized() bool { func (b *builtinCurrentTime0ArgSig) vecEvalDuration(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - nowTs, err := getStmtTimestamp(b.ctx) + nowTs, err := getStmtTimestamp(ctx) if err != nil { return err } - tz := b.ctx.GetSessionVars().Location() + tz := ctx.GetSessionVars().Location() dur := nowTs.In(tz).Format(types.TimeFormat) - res, _, err := types.ParseDuration(b.ctx.GetSessionVars().StmtCtx.TypeCtx(), dur, types.MinFsp) + res, _, err := types.ParseDuration(ctx.GetSessionVars().StmtCtx.TypeCtx(), dur, types.MinFsp) if err != nil { return err } @@ -2385,14 +2376,14 @@ func (b *builtinTimeSig) vecEvalDuration(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } result.ResizeGoDuration(n, false) result.MergeNulls(buf) ds := result.GoDurations() - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx for i := 0; i < n; i++ { if result.IsNull(i) { continue @@ -2428,7 +2419,7 @@ func (b *builtinDateLiteralSig) vectorized() bool { func (b *builtinDateLiteralSig) vecEvalTime(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - mode := b.ctx.GetSessionVars().SQLMode + mode := ctx.GetSessionVars().SQLMode if mode.HasNoZeroDateMode() && b.literal.IsZero() { return types.ErrWrongValue.GenWithStackByArgs(types.DateStr, b.literal.String()) } @@ -2465,7 +2456,7 @@ func (b *builtinMonthNameSig) vecEvalString(ctx sessionctx.Context, input *chunk return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalTime(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf); err != nil { return err } @@ -2477,8 +2468,8 @@ func (b *builtinMonthNameSig) vecEvalString(ctx sessionctx.Context, input *chunk continue } mon := ds[i].Month() - if (ds[i].IsZero() && b.ctx.GetSessionVars().SQLMode.HasNoZeroDateMode()) || mon < 0 || mon > len(types.MonthNames) { - if err := handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, ds[i].String())); err != nil { + if (ds[i].IsZero() && ctx.GetSessionVars().SQLMode.HasNoZeroDateMode()) || mon < 0 || mon > len(types.MonthNames) { + if err := handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, ds[i].String())); err != nil { return err } result.AppendNull() @@ -2507,7 +2498,7 @@ func (b *builtinDayOfWeekSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalTime(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf); err != nil { return err } result.ResizeInt64(n, false) @@ -2519,7 +2510,7 @@ func (b *builtinDayOfWeekSig) vecEvalInt(ctx sessionctx.Context, input *chunk.Ch continue } if ds[i].InvalidZero() { - if err := handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, ds[i].String())); err != nil { + if err := handleInvalidTimeError(ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, ds[i].String())); err != nil { return err } result.SetNull(i, true) @@ -2541,17 +2532,17 @@ func (b *builtinCurrentTime1ArgSig) vecEvalDuration(ctx sessionctx.Context, inpu return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalInt(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf); err != nil { return err } - nowTs, err := getStmtTimestamp(b.ctx) + nowTs, err := getStmtTimestamp(ctx) if err != nil { return err } - tz := b.ctx.GetSessionVars().Location() + tz := ctx.GetSessionVars().Location() dur := nowTs.In(tz).Format(types.TimeFSPFormat) - stmtCtx := b.ctx.GetSessionVars().StmtCtx + stmtCtx := ctx.GetSessionVars().StmtCtx i64s := buf.Int64s() result.ResizeGoDuration(n, false) durations := result.GoDurations() @@ -2573,7 +2564,7 @@ func (b *builtinUTCTimestampWithoutArgSig) vectorized() bool { // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_utc-timestamp func (b *builtinUTCTimestampWithoutArgSig) vecEvalTime(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - res, isNull, err := evalUTCTimestampWithFsp(b.ctx, types.DefaultFsp) + res, isNull, err := evalUTCTimestampWithFsp(ctx, types.DefaultFsp) if err != nil { return err } @@ -2595,7 +2586,7 @@ func (b *builtinConvertTzSig) vectorized() bool { func (b *builtinConvertTzSig) vecEvalTime(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - if err := b.args[0].VecEvalTime(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, result); err != nil { return err } @@ -2604,7 +2595,7 @@ func (b *builtinConvertTzSig) vecEvalTime(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(fromTzBuf) - if err := b.args[1].VecEvalString(b.ctx, input, fromTzBuf); err != nil { + if err := b.args[1].VecEvalString(ctx, input, fromTzBuf); err != nil { return err } @@ -2613,7 +2604,7 @@ func (b *builtinConvertTzSig) vecEvalTime(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(toTzBuf) - if err := b.args[2].VecEvalString(b.ctx, input, toTzBuf); err != nil { + if err := b.args[2].VecEvalString(ctx, input, toTzBuf); err != nil { return err } @@ -2643,14 +2634,14 @@ func (b *builtinTimestamp1ArgSig) vecEvalTime(ctx sessionctx.Context, input *chu return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalString(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf); err != nil { return err } result.ResizeTime(n, false) result.MergeNulls(buf) times := result.Times() - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx var tm types.Time for i := 0; i < n; i++ { if result.IsNull(i) { @@ -2661,10 +2652,10 @@ func (b *builtinTimestamp1ArgSig) vecEvalTime(ctx sessionctx.Context, input *chu if b.isFloat { tm, err = types.ParseTimeFromFloatString(sc.TypeCtx(), s, mysql.TypeDatetime, types.GetFsp(s)) } else { - tm, err = types.ParseTime(sc.TypeCtx(), s, mysql.TypeDatetime, types.GetFsp(s), nil) + tm, err = types.ParseTime(sc.TypeCtx(), s, mysql.TypeDatetime, types.GetFsp(s)) } if err != nil { - if err = handleInvalidTimeError(b.ctx, err); err != nil { + if err = handleInvalidTimeError(ctx, err); err != nil { return err } result.SetNull(i, true) @@ -2686,7 +2677,7 @@ func (b *builtinTimestamp2ArgsSig) vecEvalTime(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalString(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf0); err != nil { return err } @@ -2695,14 +2686,14 @@ func (b *builtinTimestamp2ArgsSig) vecEvalTime(ctx sessionctx.Context, input *ch return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } result.ResizeTime(n, false) result.MergeNulls(buf0, buf1) times := result.Times() - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx var tm types.Time for i := 0; i < n; i++ { if result.IsNull(i) { @@ -2714,10 +2705,10 @@ func (b *builtinTimestamp2ArgsSig) vecEvalTime(ctx sessionctx.Context, input *ch if b.isFloat { tm, err = types.ParseTimeFromFloatString(sc.TypeCtx(), arg0, mysql.TypeDatetime, types.GetFsp(arg0)) } else { - tm, err = types.ParseTime(sc.TypeCtx(), arg0, mysql.TypeDatetime, types.GetFsp(arg0), nil) + tm, err = types.ParseTime(sc.TypeCtx(), arg0, mysql.TypeDatetime, types.GetFsp(arg0)) } if err != nil { - if err = handleInvalidTimeError(b.ctx, err); err != nil { + if err = handleInvalidTimeError(ctx, err); err != nil { return err } result.SetNull(i, true) @@ -2737,7 +2728,7 @@ func (b *builtinTimestamp2ArgsSig) vecEvalTime(ctx sessionctx.Context, input *ch duration, _, err := types.ParseDuration(sc.TypeCtx(), arg1, types.GetFsp(arg1)) if err != nil { - if err = handleInvalidTimeError(b.ctx, err); err != nil { + if err = handleInvalidTimeError(ctx, err); err != nil { return err } result.SetNull(i, true) @@ -2763,7 +2754,7 @@ func (b *builtinDayOfMonthSig) vecEvalInt(ctx sessionctx.Context, input *chunk.C return err } defer b.bufAllocator.put(buf) - if err := b.args[0].VecEvalTime(b.ctx, input, buf); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf); err != nil { return err } result.ResizeInt64(n, false) @@ -2785,7 +2776,7 @@ func (b *builtinDayOfMonthSig) vectorized() bool { func (b *builtinAddSubDateAsStringSig) vecEvalString(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) + unit, isNull, err := b.args[2].EvalString(ctx, chunk.Row{}) if err != nil { return err } @@ -2800,7 +2791,7 @@ func (b *builtinAddSubDateAsStringSig) vecEvalString(ctx sessionctx.Context, inp return err } defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetInterval(&b.baseDateArithmetical, &b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { + if err := b.vecGetInterval(&b.baseDateArithmetical, ctx, &b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { return err } @@ -2809,7 +2800,7 @@ func (b *builtinAddSubDateAsStringSig) vecEvalString(ctx sessionctx.Context, inp return err } defer b.bufAllocator.put(dateBuf) - if err := b.vecGetDate(&b.baseDateArithmetical, &b.baseBuiltinFunc, input, unit, dateBuf); err != nil { + if err := b.vecGetDate(&b.baseDateArithmetical, ctx, &b.baseBuiltinFunc, input, unit, dateBuf); err != nil { return err } @@ -2821,7 +2812,7 @@ func (b *builtinAddSubDateAsStringSig) vecEvalString(ctx sessionctx.Context, inp result.AppendNull() continue } - resDate, isNull, err := b.timeOp(&b.baseDateArithmetical, b.ctx, dateBuf.Times()[i], intervalBuf.GetString(i), unit, b.tp.GetDecimal()) + resDate, isNull, err := b.timeOp(&b.baseDateArithmetical, ctx, dateBuf.Times()[i], intervalBuf.GetString(i), unit, b.tp.GetDecimal()) if err != nil { return err } @@ -2845,7 +2836,7 @@ func (b *builtinAddSubDateAsStringSig) vectorized() bool { func (b *builtinAddSubDateDatetimeAnySig) vecEvalTime(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) + unit, isNull, err := b.args[2].EvalString(ctx, chunk.Row{}) if err != nil { return err } @@ -2859,11 +2850,11 @@ func (b *builtinAddSubDateDatetimeAnySig) vecEvalTime(ctx sessionctx.Context, in return err } defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetInterval(&b.baseDateArithmetical, &b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { + if err := b.vecGetInterval(&b.baseDateArithmetical, ctx, &b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { return err } - if err := b.vecGetDateFromDatetime(&b.baseBuiltinFunc, input, unit, result); err != nil { + if err := b.vecGetDateFromDatetime(&b.baseBuiltinFunc, ctx, input, unit, result); err != nil { return err } @@ -2873,7 +2864,7 @@ func (b *builtinAddSubDateDatetimeAnySig) vecEvalTime(ctx sessionctx.Context, in if result.IsNull(i) { continue } - resDate, isNull, err := b.timeOp(&b.baseDateArithmetical, b.ctx, resDates[i], intervalBuf.GetString(i), unit, b.tp.GetDecimal()) + resDate, isNull, err := b.timeOp(&b.baseDateArithmetical, ctx, resDates[i], intervalBuf.GetString(i), unit, b.tp.GetDecimal()) if err != nil { return err } @@ -2892,7 +2883,7 @@ func (b *builtinAddSubDateDatetimeAnySig) vectorized() bool { func (b *builtinAddSubDateDurationAnySig) vecEvalTime(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) + unit, isNull, err := b.args[2].EvalString(ctx, chunk.Row{}) if err != nil { return err } @@ -2906,7 +2897,7 @@ func (b *builtinAddSubDateDurationAnySig) vecEvalTime(ctx sessionctx.Context, in return err } defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetInterval(&b.baseDateArithmetical, &b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { + if err := b.vecGetInterval(&b.baseDateArithmetical, ctx, &b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { return err } @@ -2915,7 +2906,7 @@ func (b *builtinAddSubDateDurationAnySig) vecEvalTime(ctx sessionctx.Context, in return err } defer b.bufAllocator.put(durBuf) - if err := b.args[0].VecEvalDuration(b.ctx, input, durBuf); err != nil { + if err := b.args[0].VecEvalDuration(ctx, input, durBuf); err != nil { return err } @@ -2924,7 +2915,7 @@ func (b *builtinAddSubDateDurationAnySig) vecEvalTime(ctx sessionctx.Context, in result.MergeNulls(durBuf, intervalBuf) resDates := result.Times() iterDuration := types.Duration{Fsp: types.MaxFsp} - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx for i := 0; i < n; i++ { if result.IsNull(i) { continue @@ -2934,7 +2925,7 @@ func (b *builtinAddSubDateDurationAnySig) vecEvalTime(ctx sessionctx.Context, in if err != nil { result.SetNull(i, true) } - resDate, isNull, err := b.timeOp(&b.baseDateArithmetical, b.ctx, t, intervalBuf.GetString(i), unit, b.tp.GetDecimal()) + resDate, isNull, err := b.timeOp(&b.baseDateArithmetical, ctx, t, intervalBuf.GetString(i), unit, b.tp.GetDecimal()) if err != nil { return err } @@ -2949,7 +2940,7 @@ func (b *builtinAddSubDateDurationAnySig) vecEvalTime(ctx sessionctx.Context, in func (b *builtinAddSubDateDurationAnySig) vecEvalDuration(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) + unit, isNull, err := b.args[2].EvalString(ctx, chunk.Row{}) if err != nil { return err } @@ -2963,12 +2954,12 @@ func (b *builtinAddSubDateDurationAnySig) vecEvalDuration(ctx sessionctx.Context return err } defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetInterval(&b.baseDateArithmetical, &b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { + if err := b.vecGetInterval(&b.baseDateArithmetical, ctx, &b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { return err } result.ResizeGoDuration(n, false) - if err := b.args[0].VecEvalDuration(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalDuration(ctx, input, result); err != nil { return err } @@ -2980,7 +2971,7 @@ func (b *builtinAddSubDateDurationAnySig) vecEvalDuration(ctx sessionctx.Context continue } iterDuration.Duration = resDurations[i] - resDuration, isNull, err := b.durationOp(&b.baseDateArithmetical, b.ctx, iterDuration, intervalBuf.GetString(i), unit, b.tp.GetDecimal()) + resDuration, isNull, err := b.durationOp(&b.baseDateArithmetical, ctx, iterDuration, intervalBuf.GetString(i), unit, b.tp.GetDecimal()) if err != nil { return err } diff --git a/pkg/expression/builtin_time_vec_generated.go b/pkg/expression/builtin_time_vec_generated.go index 4eb4fbc1c9034..0976e14a138be 100644 --- a/pkg/expression/builtin_time_vec_generated.go +++ b/pkg/expression/builtin_time_vec_generated.go @@ -27,7 +27,7 @@ import ( func (b *builtinAddDatetimeAndDurationSig) vecEvalTime(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - if err := b.args[0].VecEvalTime(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, result); err != nil { return err } buf0 := result @@ -37,7 +37,7 @@ func (b *builtinAddDatetimeAndDurationSig) vecEvalTime(ctx sessionctx.Context, i return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalDuration(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalDuration(ctx, input, buf1); err != nil { return err } @@ -63,7 +63,7 @@ func (b *builtinAddDatetimeAndDurationSig) vecEvalTime(ctx sessionctx.Context, i // calculate - output, err := arg0.Add(b.ctx.GetSessionVars().StmtCtx.TypeCtx(), types.Duration{Duration: arg1, Fsp: -1}) + output, err := arg0.Add(ctx.GetSessionVars().StmtCtx.TypeCtx(), types.Duration{Duration: arg1, Fsp: -1}) if err != nil { return err @@ -84,7 +84,7 @@ func (b *builtinAddDatetimeAndDurationSig) vectorized() bool { func (b *builtinAddDatetimeAndStringSig) vecEvalTime(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - if err := b.args[0].VecEvalTime(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, result); err != nil { return err } buf0 := result @@ -94,7 +94,7 @@ func (b *builtinAddDatetimeAndStringSig) vecEvalTime(ctx sessionctx.Context, inp return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } @@ -122,7 +122,7 @@ func (b *builtinAddDatetimeAndStringSig) vecEvalTime(ctx sessionctx.Context, inp result.SetNull(i, true) // fixed: true continue } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx arg1Duration, _, err := types.ParseDuration(sc.TypeCtx(), arg1, types.GetFsp(arg1)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { @@ -154,7 +154,7 @@ func (b *builtinAddDatetimeAndStringSig) vectorized() bool { func (b *builtinAddDurationAndDurationSig) vecEvalDuration(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - if err := b.args[0].VecEvalDuration(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalDuration(ctx, input, result); err != nil { return err } buf0 := result @@ -164,7 +164,7 @@ func (b *builtinAddDurationAndDurationSig) vecEvalDuration(ctx sessionctx.Contex return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalDuration(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalDuration(ctx, input, buf1); err != nil { return err } @@ -210,7 +210,7 @@ func (b *builtinAddDurationAndDurationSig) vectorized() bool { func (b *builtinAddDurationAndStringSig) vecEvalDuration(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - if err := b.args[0].VecEvalDuration(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalDuration(ctx, input, result); err != nil { return err } buf0 := result @@ -220,7 +220,7 @@ func (b *builtinAddDurationAndStringSig) vecEvalDuration(ctx sessionctx.Context, return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } @@ -248,7 +248,7 @@ func (b *builtinAddDurationAndStringSig) vecEvalDuration(ctx sessionctx.Context, result.SetNull(i, true) // fixed: true continue } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx arg1Duration, _, err := types.ParseDuration(sc.TypeCtx(), arg1, types.GetFsp(arg1)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { @@ -284,7 +284,7 @@ func (b *builtinAddStringAndDurationSig) vecEvalString(ctx sessionctx.Context, i return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalString(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf0); err != nil { return err } @@ -293,7 +293,7 @@ func (b *builtinAddStringAndDurationSig) vecEvalString(ctx sessionctx.Context, i return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalDuration(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalDuration(ctx, input, buf1); err != nil { return err } @@ -316,7 +316,7 @@ func (b *builtinAddStringAndDurationSig) vecEvalString(ctx sessionctx.Context, i // calculate - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx fsp1 := b.args[1].GetType().GetDecimal() arg1Duration := types.Duration{Duration: arg1, Fsp: fsp1} var output string @@ -367,7 +367,7 @@ func (b *builtinAddStringAndStringSig) vecEvalString(ctx sessionctx.Context, inp return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalString(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf0); err != nil { return err } @@ -385,7 +385,7 @@ func (b *builtinAddStringAndStringSig) vecEvalString(ctx sessionctx.Context, inp return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } @@ -406,7 +406,7 @@ func (b *builtinAddStringAndStringSig) vecEvalString(ctx sessionctx.Context, inp // calculate - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx arg1Duration, _, err := types.ParseDuration(sc.TypeCtx(), arg1, getFsp4TimeAddSub(arg1)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { @@ -465,7 +465,7 @@ func (b *builtinAddDateAndDurationSig) vecEvalString(ctx sessionctx.Context, inp return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalDuration(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalDuration(ctx, input, buf0); err != nil { return err } @@ -474,7 +474,7 @@ func (b *builtinAddDateAndDurationSig) vecEvalString(ctx sessionctx.Context, inp return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalDuration(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalDuration(ctx, input, buf1); err != nil { return err } @@ -530,7 +530,7 @@ func (b *builtinAddDateAndStringSig) vecEvalString(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalDuration(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalDuration(ctx, input, buf0); err != nil { return err } @@ -539,7 +539,7 @@ func (b *builtinAddDateAndStringSig) vecEvalString(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } @@ -566,7 +566,7 @@ func (b *builtinAddDateAndStringSig) vecEvalString(ctx sessionctx.Context, input result.AppendNull() // fixed: false continue } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx arg1Duration, _, err := types.ParseDuration(sc.TypeCtx(), arg1, getFsp4TimeAddSub(arg1)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { @@ -640,7 +640,7 @@ func (b *builtinAddTimeDurationNullSig) vectorized() bool { func (b *builtinSubDatetimeAndDurationSig) vecEvalTime(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - if err := b.args[0].VecEvalTime(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, result); err != nil { return err } buf0 := result @@ -650,7 +650,7 @@ func (b *builtinSubDatetimeAndDurationSig) vecEvalTime(ctx sessionctx.Context, i return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalDuration(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalDuration(ctx, input, buf1); err != nil { return err } @@ -676,7 +676,7 @@ func (b *builtinSubDatetimeAndDurationSig) vecEvalTime(ctx sessionctx.Context, i // calculate - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx arg1Duration := types.Duration{Duration: arg1, Fsp: -1} output, err := arg0.Add(sc.TypeCtx(), arg1Duration.Neg()) @@ -699,7 +699,7 @@ func (b *builtinSubDatetimeAndDurationSig) vectorized() bool { func (b *builtinSubDatetimeAndStringSig) vecEvalTime(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - if err := b.args[0].VecEvalTime(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, result); err != nil { return err } buf0 := result @@ -709,7 +709,7 @@ func (b *builtinSubDatetimeAndStringSig) vecEvalTime(ctx sessionctx.Context, inp return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } @@ -737,7 +737,7 @@ func (b *builtinSubDatetimeAndStringSig) vecEvalTime(ctx sessionctx.Context, inp result.SetNull(i, true) // fixed: true continue } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx arg1Duration, _, err := types.ParseDuration(sc.TypeCtx(), arg1, types.GetFsp(arg1)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { @@ -768,7 +768,7 @@ func (b *builtinSubDatetimeAndStringSig) vectorized() bool { func (b *builtinSubDurationAndDurationSig) vecEvalDuration(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - if err := b.args[0].VecEvalDuration(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalDuration(ctx, input, result); err != nil { return err } buf0 := result @@ -778,7 +778,7 @@ func (b *builtinSubDurationAndDurationSig) vecEvalDuration(ctx sessionctx.Contex return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalDuration(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalDuration(ctx, input, buf1); err != nil { return err } @@ -824,7 +824,7 @@ func (b *builtinSubDurationAndDurationSig) vectorized() bool { func (b *builtinSubDurationAndStringSig) vecEvalDuration(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() - if err := b.args[0].VecEvalDuration(b.ctx, input, result); err != nil { + if err := b.args[0].VecEvalDuration(ctx, input, result); err != nil { return err } buf0 := result @@ -834,7 +834,7 @@ func (b *builtinSubDurationAndStringSig) vecEvalDuration(ctx sessionctx.Context, return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } @@ -862,7 +862,7 @@ func (b *builtinSubDurationAndStringSig) vecEvalDuration(ctx sessionctx.Context, result.SetNull(i, true) // fixed: true continue } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx arg1Duration, _, err := types.ParseDuration(sc.TypeCtx(), arg1, types.GetFsp(arg1)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { @@ -898,7 +898,7 @@ func (b *builtinSubStringAndDurationSig) vecEvalString(ctx sessionctx.Context, i return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalString(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf0); err != nil { return err } @@ -907,7 +907,7 @@ func (b *builtinSubStringAndDurationSig) vecEvalString(ctx sessionctx.Context, i return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalDuration(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalDuration(ctx, input, buf1); err != nil { return err } @@ -930,7 +930,7 @@ func (b *builtinSubStringAndDurationSig) vecEvalString(ctx sessionctx.Context, i // calculate - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx fsp1 := b.args[1].GetType().GetDecimal() arg1Duration := types.Duration{Duration: arg1, Fsp: fsp1} var output string @@ -981,7 +981,7 @@ func (b *builtinSubStringAndStringSig) vecEvalString(ctx sessionctx.Context, inp return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalString(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf0); err != nil { return err } @@ -999,7 +999,7 @@ func (b *builtinSubStringAndStringSig) vecEvalString(ctx sessionctx.Context, inp return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } @@ -1020,7 +1020,7 @@ func (b *builtinSubStringAndStringSig) vecEvalString(ctx sessionctx.Context, inp // calculate - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx arg1Duration, _, err := types.ParseDuration(sc.TypeCtx(), arg1, getFsp4TimeAddSub(arg1)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { @@ -1079,7 +1079,7 @@ func (b *builtinSubDateAndDurationSig) vecEvalString(ctx sessionctx.Context, inp return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalDuration(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalDuration(ctx, input, buf0); err != nil { return err } @@ -1088,7 +1088,7 @@ func (b *builtinSubDateAndDurationSig) vecEvalString(ctx sessionctx.Context, inp return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalDuration(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalDuration(ctx, input, buf1); err != nil { return err } @@ -1144,7 +1144,7 @@ func (b *builtinSubDateAndStringSig) vecEvalString(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalDuration(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalDuration(ctx, input, buf0); err != nil { return err } @@ -1153,7 +1153,7 @@ func (b *builtinSubDateAndStringSig) vecEvalString(ctx sessionctx.Context, input return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } @@ -1180,7 +1180,7 @@ func (b *builtinSubDateAndStringSig) vecEvalString(ctx sessionctx.Context, input result.AppendNull() // fixed: false continue } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx arg1Duration, _, err := types.ParseDuration(sc.TypeCtx(), arg1, getFsp4TimeAddSub(arg1)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { @@ -1277,16 +1277,16 @@ func (b *builtinTimeStringTimeDiffSig) vecEvalDuration(ctx sessionctx.Context, i } defer b.bufAllocator.put(buf1) - if err := b.args[0].VecEvalTime(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf0); err != nil { return err } - if err := b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } result.MergeNulls(buf0, buf1) arg0 := buf0.Times() - stmtCtx := b.ctx.GetSessionVars().StmtCtx + stmtCtx := ctx.GetSessionVars().StmtCtx for i := 0; i < n; i++ { if result.IsNull(i) { continue @@ -1328,10 +1328,10 @@ func (b *builtinDurationStringTimeDiffSig) vecEvalDuration(ctx sessionctx.Contex } defer b.bufAllocator.put(buf1) - if err := b.args[0].VecEvalDuration(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalDuration(ctx, input, buf0); err != nil { return err } - if err := b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } @@ -1341,7 +1341,7 @@ func (b *builtinDurationStringTimeDiffSig) vecEvalDuration(ctx sessionctx.Contex lhs types.Duration rhs types.Duration ) - stmtCtx := b.ctx.GetSessionVars().StmtCtx + stmtCtx := ctx.GetSessionVars().StmtCtx for i := 0; i < n; i++ { if result.IsNull(i) { continue @@ -1356,7 +1356,7 @@ func (b *builtinDurationStringTimeDiffSig) vecEvalDuration(ctx sessionctx.Contex continue } rhs = rhsDur - d, isNull, err := calculateDurationTimeDiff(b.ctx, lhs, rhs) + d, isNull, err := calculateDurationTimeDiff(ctx, lhs, rhs) if err != nil { return err } @@ -1384,10 +1384,10 @@ func (b *builtinDurationDurationTimeDiffSig) vecEvalDuration(ctx sessionctx.Cont } defer b.bufAllocator.put(buf1) - if err := b.args[0].VecEvalDuration(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalDuration(ctx, input, buf0); err != nil { return err } - if err := b.args[1].VecEvalDuration(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalDuration(ctx, input, buf1); err != nil { return err } @@ -1404,7 +1404,7 @@ func (b *builtinDurationDurationTimeDiffSig) vecEvalDuration(ctx sessionctx.Cont } lhs.Duration = arg0[i] rhs.Duration = arg1[i] - d, isNull, err := calculateDurationTimeDiff(b.ctx, lhs, rhs) + d, isNull, err := calculateDurationTimeDiff(ctx, lhs, rhs) if err != nil { return err } @@ -1437,16 +1437,16 @@ func (b *builtinStringTimeTimeDiffSig) vecEvalDuration(ctx sessionctx.Context, i } defer b.bufAllocator.put(buf1) - if err := b.args[0].VecEvalString(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf0); err != nil { return err } - if err := b.args[1].VecEvalTime(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalTime(ctx, input, buf1); err != nil { return err } result.MergeNulls(buf0, buf1) arg1 := buf1.Times() - stmtCtx := b.ctx.GetSessionVars().StmtCtx + stmtCtx := ctx.GetSessionVars().StmtCtx for i := 0; i < n; i++ { if result.IsNull(i) { continue @@ -1488,10 +1488,10 @@ func (b *builtinStringDurationTimeDiffSig) vecEvalDuration(ctx sessionctx.Contex } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalString(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf0); err != nil { return err } - if err := b.args[1].VecEvalDuration(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalDuration(ctx, input, buf1); err != nil { return err } @@ -1501,7 +1501,7 @@ func (b *builtinStringDurationTimeDiffSig) vecEvalDuration(ctx sessionctx.Contex lhs types.Duration rhs types.Duration ) - stmtCtx := b.ctx.GetSessionVars().StmtCtx + stmtCtx := ctx.GetSessionVars().StmtCtx for i := 0; i < n; i++ { if result.IsNull(i) { continue @@ -1516,7 +1516,7 @@ func (b *builtinStringDurationTimeDiffSig) vecEvalDuration(ctx sessionctx.Contex } lhs = lhsDur rhs.Duration = arg1[i] - d, isNull, err := calculateDurationTimeDiff(b.ctx, lhs, rhs) + d, isNull, err := calculateDurationTimeDiff(ctx, lhs, rhs) if err != nil { return err } @@ -1549,15 +1549,15 @@ func (b *builtinStringStringTimeDiffSig) vecEvalDuration(ctx sessionctx.Context, } defer b.bufAllocator.put(buf1) - if err := b.args[0].VecEvalString(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalString(ctx, input, buf0); err != nil { return err } - if err := b.args[1].VecEvalString(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalString(ctx, input, buf1); err != nil { return err } result.MergeNulls(buf0, buf1) - stmtCtx := b.ctx.GetSessionVars().StmtCtx + stmtCtx := ctx.GetSessionVars().StmtCtx for i := 0; i < n; i++ { if result.IsNull(i) { continue @@ -1579,7 +1579,7 @@ func (b *builtinStringStringTimeDiffSig) vecEvalDuration(ctx sessionctx.Context, isNull bool ) if lhsIsDuration { - d, isNull, err = calculateDurationTimeDiff(b.ctx, lhsDur, rhsDur) + d, isNull, err = calculateDurationTimeDiff(ctx, lhsDur, rhsDur) } else { d, isNull, err = calculateTimeDiff(stmtCtx, lhsTime, rhsTime) } @@ -1615,17 +1615,17 @@ func (b *builtinTimeTimeTimeDiffSig) vecEvalDuration(ctx sessionctx.Context, inp } defer b.bufAllocator.put(buf1) - if err := b.args[0].VecEvalTime(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf0); err != nil { return err } - if err := b.args[1].VecEvalTime(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEvalTime(ctx, input, buf1); err != nil { return err } result.MergeNulls(buf0, buf1) arg0 := buf0.Times() arg1 := buf1.Times() - stmtCtx := b.ctx.GetSessionVars().StmtCtx + stmtCtx := ctx.GetSessionVars().StmtCtx for i := 0; i < n; i++ { if result.IsNull(i) { continue diff --git a/pkg/expression/builtin_vectorized_test.go b/pkg/expression/builtin_vectorized_test.go index 2c65a88fb5851..47a7e87cce8e8 100644 --- a/pkg/expression/builtin_vectorized_test.go +++ b/pkg/expression/builtin_vectorized_test.go @@ -60,10 +60,10 @@ func (p *mockVecPlusIntBuiltinFunc) vecEvalInt(ctx sessionctx.Context, input *ch return err } defer p.releaseBuf(buf) - if err := p.args[0].VecEvalInt(p.ctx, input, result); err != nil { + if err := p.args[0].VecEvalInt(ctx, input, result); err != nil { return err } - if err := p.args[1].VecEvalInt(p.ctx, input, buf); err != nil { + if err := p.args[1].VecEvalInt(ctx, input, buf); err != nil { return err } dst64s := result.Int64s() @@ -79,13 +79,13 @@ func (p *mockVecPlusIntBuiltinFunc) vecEvalInt(ctx sessionctx.Context, input *ch return nil } -func genMockVecPlusIntBuiltinFunc() (*mockVecPlusIntBuiltinFunc, *chunk.Chunk, *chunk.Column) { +func genMockVecPlusIntBuiltinFunc(ctx sessionctx.Context) (*mockVecPlusIntBuiltinFunc, *chunk.Chunk, *chunk.Column) { tp := types.NewFieldType(mysql.TypeLonglong) col1 := newColumn(0) col1.Index, col1.RetType = 0, tp col2 := newColumn(1) col2.Index, col2.RetType = 1, tp - bf, err := newBaseBuiltinFuncWithTp(mock.NewContext(), "", []Expression{col1, col2}, types.ETInt, types.ETInt, types.ETInt) + bf, err := newBaseBuiltinFuncWithTp(ctx, "", []Expression{col1, col2}, types.ETInt, types.ETInt, types.ETInt) if err != nil { panic(err) } @@ -100,9 +100,9 @@ func genMockVecPlusIntBuiltinFunc() (*mockVecPlusIntBuiltinFunc, *chunk.Chunk, * } func TestMockVecPlusInt(t *testing.T) { - plus, input, buf := genMockVecPlusIntBuiltinFunc() + ctx := mock.NewContext() + plus, input, buf := genMockVecPlusIntBuiltinFunc(ctx) plus.enableAlloc = false - ctx := plus.ctx require.NoError(t, plus.vecEvalInt(ctx, input, buf)) for i := 0; i < 1024; i++ { require.False(t, buf.IsNull(i)) @@ -118,9 +118,9 @@ func TestMockVecPlusInt(t *testing.T) { } func TestMockVecPlusIntParallel(t *testing.T) { - plus, input, buf := genMockVecPlusIntBuiltinFunc() + ctx := mock.NewContext() + plus, input, buf := genMockVecPlusIntBuiltinFunc(ctx) plus.enableAlloc = true // it's concurrency-safe if enableAlloc is true - ctx := plus.ctx var wg sync.WaitGroup for i := 0; i < 5; i++ { wg.Add(1) @@ -190,8 +190,8 @@ func BenchmarkColumnPoolGetPutParallel(b *testing.B) { } func BenchmarkPlusIntBufAllocator(b *testing.B) { - plus, input, buf := genMockVecPlusIntBuiltinFunc() - ctx := plus.ctx + ctx := mock.NewContext() + plus, input, buf := genMockVecPlusIntBuiltinFunc(ctx) names := []string{"enable", "disable"} enable := []bool{true, false} for i := range enable { @@ -219,7 +219,7 @@ func (p *mockBuiltinDouble) vectorized() bool { } func (p *mockBuiltinDouble) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := p.args[0].VecEvalInt(p.ctx, input, result); err != nil { + if err := p.args[0].VecEvalInt(ctx, input, result); err != nil { return err } i64s := result.Int64s() @@ -230,7 +230,7 @@ func (p *mockBuiltinDouble) vecEvalInt(ctx sessionctx.Context, input *chunk.Chun } func (p *mockBuiltinDouble) vecEvalReal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := p.args[0].VecEvalReal(p.ctx, input, result); err != nil { + if err := p.args[0].VecEvalReal(ctx, input, result); err != nil { return err } f64s := result.Float64s() @@ -246,7 +246,7 @@ func (p *mockBuiltinDouble) vecEvalString(ctx sessionctx.Context, input *chunk.C if buf, err = p.baseBuiltinFunc.bufAllocator.get(); err != nil { return err } - if err := p.args[0].VecEvalString(p.ctx, input, buf); err != nil { + if err := p.args[0].VecEvalString(ctx, input, buf); err != nil { return err } result.ReserveString(input.NumRows()) @@ -259,7 +259,7 @@ func (p *mockBuiltinDouble) vecEvalString(ctx sessionctx.Context, input *chunk.C } func (p *mockBuiltinDouble) vecEvalDecimal(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := p.args[0].VecEvalDecimal(p.ctx, input, result); err != nil { + if err := p.args[0].VecEvalDecimal(ctx, input, result); err != nil { return err } ds := result.Decimals() @@ -274,7 +274,7 @@ func (p *mockBuiltinDouble) vecEvalDecimal(ctx sessionctx.Context, input *chunk. } func (p *mockBuiltinDouble) vecEvalTime(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := p.args[0].VecEvalTime(p.ctx, input, result); err != nil { + if err := p.args[0].VecEvalTime(ctx, input, result); err != nil { return err } ts := result.Times() @@ -283,7 +283,7 @@ func (p *mockBuiltinDouble) vecEvalTime(ctx sessionctx.Context, input *chunk.Chu if err != nil { return err } - if ts[i], err = ts[i].Add(p.ctx.GetSessionVars().StmtCtx.TypeCtx(), d); err != nil { + if ts[i], err = ts[i].Add(ctx.GetSessionVars().StmtCtx.TypeCtx(), d); err != nil { return err } } @@ -291,7 +291,7 @@ func (p *mockBuiltinDouble) vecEvalTime(ctx sessionctx.Context, input *chunk.Chu } func (p *mockBuiltinDouble) vecEvalDuration(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { - if err := p.args[0].VecEvalDuration(p.ctx, input, result); err != nil { + if err := p.args[0].VecEvalDuration(ctx, input, result); err != nil { return err } ds := result.GoDurations() @@ -307,7 +307,7 @@ func (p *mockBuiltinDouble) vecEvalJSON(ctx sessionctx.Context, input *chunk.Chu if buf, err = p.baseBuiltinFunc.bufAllocator.get(); err != nil { return err } - if err := p.args[0].VecEvalJSON(p.ctx, input, buf); err != nil { + if err := p.args[0].VecEvalJSON(ctx, input, buf); err != nil { return err } result.ReserveString(input.NumRows()) @@ -331,7 +331,7 @@ func (p *mockBuiltinDouble) vecEvalJSON(ctx sessionctx.Context, input *chunk.Chu } func (p *mockBuiltinDouble) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - v, isNull, err := p.args[0].EvalInt(p.ctx, row) + v, isNull, err := p.args[0].EvalInt(ctx, row) if err != nil { return 0, false, err } @@ -339,7 +339,7 @@ func (p *mockBuiltinDouble) evalInt(ctx sessionctx.Context, row chunk.Row) (int6 } func (p *mockBuiltinDouble) evalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - v, isNull, err := p.args[0].EvalReal(p.ctx, row) + v, isNull, err := p.args[0].EvalReal(ctx, row) if err != nil { return 0, false, err } @@ -347,7 +347,7 @@ func (p *mockBuiltinDouble) evalReal(ctx sessionctx.Context, row chunk.Row) (flo } func (p *mockBuiltinDouble) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - v, isNull, err := p.args[0].EvalString(p.ctx, row) + v, isNull, err := p.args[0].EvalString(ctx, row) if err != nil { return "", false, err } @@ -355,7 +355,7 @@ func (p *mockBuiltinDouble) evalString(ctx sessionctx.Context, row chunk.Row) (s } func (p *mockBuiltinDouble) evalDecimal(ctx sessionctx.Context, row chunk.Row) (*types.MyDecimal, bool, error) { - v, isNull, err := p.args[0].EvalDecimal(p.ctx, row) + v, isNull, err := p.args[0].EvalDecimal(ctx, row) if err != nil { return nil, false, err } @@ -367,7 +367,7 @@ func (p *mockBuiltinDouble) evalDecimal(ctx sessionctx.Context, row chunk.Row) ( } func (p *mockBuiltinDouble) evalTime(ctx sessionctx.Context, row chunk.Row) (types.Time, bool, error) { - v, isNull, err := p.args[0].EvalTime(p.ctx, row) + v, isNull, err := p.args[0].EvalTime(ctx, row) if err != nil { return types.ZeroTime, false, err } @@ -375,12 +375,12 @@ func (p *mockBuiltinDouble) evalTime(ctx sessionctx.Context, row chunk.Row) (typ if err != nil { return types.ZeroTime, false, err } - v, err = v.Add(p.ctx.GetSessionVars().StmtCtx.TypeCtx(), d) + v, err = v.Add(ctx.GetSessionVars().StmtCtx.TypeCtx(), d) return v, isNull, err } func (p *mockBuiltinDouble) evalDuration(ctx sessionctx.Context, row chunk.Row) (types.Duration, bool, error) { - v, isNull, err := p.args[0].EvalDuration(p.ctx, row) + v, isNull, err := p.args[0].EvalDuration(ctx, row) if err != nil { return types.Duration{}, false, err } @@ -389,7 +389,7 @@ func (p *mockBuiltinDouble) evalDuration(ctx sessionctx.Context, row chunk.Row) } func (p *mockBuiltinDouble) evalJSON(ctx sessionctx.Context, row chunk.Row) (types.BinaryJSON, bool, error) { - j, isNull, err := p.args[0].EvalJSON(p.ctx, row) + j, isNull, err := p.args[0].EvalJSON(ctx, row) if err != nil { return types.BinaryJSON{}, false, err } @@ -775,11 +775,11 @@ func TestVectorizedCheck(t *testing.T) { ctx := mock.NewContext() vecF, _, _, _ := genMockRowDouble(ctx, types.ETInt, true) - sf := &ScalarFunction{Function: vecF} + sf := &ScalarFunction{Function: vecF, ctx: ctx} require.True(t, sf.Vectorized()) rowF, _, _, _ := genMockRowDouble(ctx, types.ETInt, false) - sf = &ScalarFunction{Function: rowF} + sf = &ScalarFunction{Function: rowF, ctx: ctx} require.False(t, sf.Vectorized()) } diff --git a/pkg/expression/column.go b/pkg/expression/column.go index bfd1d051ea577..70915747d1cd5 100644 --- a/pkg/expression/column.go +++ b/pkg/expression/column.go @@ -90,7 +90,14 @@ func (col *CorrelatedColumn) Traverse(action TraverseAction) Expression { } // Eval implements Expression interface. -func (col *CorrelatedColumn) Eval(row chunk.Row) (types.Datum, error) { +func (col *CorrelatedColumn) Eval(_ sessionctx.Context, _ chunk.Row) (types.Datum, error) { + return *col.Data, nil +} + +// EvalWithInnerCtx evaluates expression with inner ctx. +// Deprecated: This function is only used during refactoring, please do not use it in new code. +// TODO: remove this method after refactoring. +func (col *CorrelatedColumn) EvalWithInnerCtx(_ chunk.Row) (types.Datum, error) { return *col.Data, nil } @@ -156,9 +163,14 @@ func (col *CorrelatedColumn) EvalJSON(ctx sessionctx.Context, row chunk.Row) (ty } // Equal implements Expression interface. -func (col *CorrelatedColumn) Equal(ctx sessionctx.Context, expr Expression) bool { +func (col *CorrelatedColumn) Equal(_ sessionctx.Context, expr Expression) bool { + return col.EqualColumn(expr) +} + +// EqualColumn returns whether two colum is equal +func (col *CorrelatedColumn) EqualColumn(expr Expression) bool { if cc, ok := expr.(*CorrelatedColumn); ok { - return col.Column.Equal(ctx, &cc.Column) + return col.Column.EqualColumn(&cc.Column) } return false } @@ -191,11 +203,11 @@ func (col *CorrelatedColumn) resolveIndices(_ *Schema) error { } // ResolveIndicesByVirtualExpr implements Expression interface. -func (col *CorrelatedColumn) ResolveIndicesByVirtualExpr(_ *Schema) (Expression, bool) { +func (col *CorrelatedColumn) ResolveIndicesByVirtualExpr(_ sessionctx.Context, _ *Schema) (Expression, bool) { return col, true } -func (col *CorrelatedColumn) resolveIndicesByVirtualExpr(_ *Schema) bool { +func (col *CorrelatedColumn) resolveIndicesByVirtualExpr(_ sessionctx.Context, _ *Schema) bool { return true } @@ -262,6 +274,11 @@ type Column struct { // Equal implements Expression interface. func (col *Column) Equal(_ sessionctx.Context, expr Expression) bool { + return col.EqualColumn(expr) +} + +// EqualColumn returns whether two colum is equal +func (col *Column) EqualColumn(expr Expression) bool { if newCol, ok := expr.(*Column); ok { return newCol.UniqueID == col.UniqueID } @@ -269,10 +286,10 @@ func (col *Column) Equal(_ sessionctx.Context, expr Expression) bool { } // EqualByExprAndID extends Equal by comparing virual expression -func (col *Column) EqualByExprAndID(_ sessionctx.Context, expr Expression) bool { +func (col *Column) EqualByExprAndID(ctx sessionctx.Context, expr Expression) bool { if newCol, ok := expr.(*Column); ok { expr, isOk := col.VirtualExpr.(*ScalarFunction) - isVirExprMatched := isOk && expr.Equal(nil, newCol.VirtualExpr) && col.RetType.Equal(newCol.RetType) + isVirExprMatched := isOk && expr.Equal(ctx, newCol.VirtualExpr) && col.RetType.Equal(newCol.RetType) return (newCol.UniqueID == col.UniqueID) || isVirExprMatched } return false @@ -410,7 +427,14 @@ func (col *Column) Traverse(action TraverseAction) Expression { } // Eval implements Expression interface. -func (col *Column) Eval(row chunk.Row) (types.Datum, error) { +func (col *Column) Eval(_ sessionctx.Context, row chunk.Row) (types.Datum, error) { + return row.GetDatum(col.Index, col.RetType), nil +} + +// EvalWithInnerCtx evaluates expression with inner ctx. +// Deprecated: This function is only used during refactoring, please do not use it in new code. +// TODO: remove this method after refactoring. +func (col *Column) EvalWithInnerCtx(row chunk.Row) (types.Datum, error) { return row.GetDatum(col.Index, col.RetType), nil } @@ -517,7 +541,7 @@ func (col *Column) Decorrelate(_ *Schema) Expression { } // HashCode implements Expression interface. -func (col *Column) HashCode(_ *stmtctx.StatementContext) []byte { +func (col *Column) HashCode() []byte { if len(col.hashcode) != 0 { return col.hashcode } @@ -527,6 +551,11 @@ func (col *Column) HashCode(_ *stmtctx.StatementContext) []byte { return col.hashcode } +// CanonicalHashCode implements Expression interface. +func (col *Column) CanonicalHashCode() []byte { + return col.HashCode() +} + // CleanHashCode will clean the hashcode you may be cached before. It's used especially in schema-cloned & reallocated-uniqueID's cases. func (col *Column) CleanHashCode() { col.hashcode = make([]byte, 0, 9) @@ -548,15 +577,15 @@ func (col *Column) resolveIndices(schema *Schema) error { } // ResolveIndicesByVirtualExpr implements Expression interface. -func (col *Column) ResolveIndicesByVirtualExpr(schema *Schema) (Expression, bool) { +func (col *Column) ResolveIndicesByVirtualExpr(ctx sessionctx.Context, schema *Schema) (Expression, bool) { newCol := col.Clone() - isOk := newCol.resolveIndicesByVirtualExpr(schema) + isOk := newCol.resolveIndicesByVirtualExpr(ctx, schema) return newCol, isOk } -func (col *Column) resolveIndicesByVirtualExpr(schema *Schema) bool { +func (col *Column) resolveIndicesByVirtualExpr(ctx sessionctx.Context, schema *Schema) bool { for i, c := range schema.Columns { - if c.EqualByExprAndID(nil, col) { + if c.EqualByExprAndID(ctx, col) { col.Index = i return true } @@ -687,8 +716,8 @@ idLoop: } // EvalVirtualColumn evals the virtual column -func (col *Column) EvalVirtualColumn(row chunk.Row) (types.Datum, error) { - return col.VirtualExpr.Eval(row) +func (col *Column) EvalVirtualColumn(ctx sessionctx.Context, row chunk.Row) (types.Datum, error) { + return col.VirtualExpr.Eval(ctx, row) } // SupportReverseEval checks whether the builtinFunc support reverse evaluation. @@ -745,7 +774,7 @@ func SortColumns(cols []*Column) []*Column { // InColumnArray check whether the col is in the cols array func (col *Column) InColumnArray(cols []*Column) bool { for _, c := range cols { - if col.Equal(nil, c) { + if col.EqualColumn(c) { return true } } diff --git a/pkg/expression/column_test.go b/pkg/expression/column_test.go index 1f71d8407483c..8924ce7f2120f 100644 --- a/pkg/expression/column_test.go +++ b/pkg/expression/column_test.go @@ -31,10 +31,10 @@ func TestColumn(t *testing.T) { ctx := mock.NewContext() col := &Column{RetType: types.NewFieldType(mysql.TypeLonglong), UniqueID: 1} - require.True(t, col.Equal(nil, col)) - require.False(t, col.Equal(nil, &Column{})) + require.True(t, col.EqualColumn(col)) + require.False(t, col.EqualColumn(&Column{})) require.False(t, col.IsCorrelated()) - require.True(t, col.Equal(nil, col.Decorrelate(nil))) + require.True(t, col.EqualColumn(col.Decorrelate(nil))) marshal, err := col.MarshalJSON() require.NoError(t, err) @@ -44,12 +44,12 @@ func TestColumn(t *testing.T) { corCol := &CorrelatedColumn{Column: *col, Data: &intDatum} invalidCorCol := &CorrelatedColumn{Column: Column{}} schema := NewSchema(&Column{UniqueID: 1}) - require.True(t, corCol.Equal(nil, corCol)) - require.False(t, corCol.Equal(nil, invalidCorCol)) + require.True(t, corCol.EqualColumn(corCol)) + require.False(t, corCol.EqualColumn(invalidCorCol)) require.True(t, corCol.IsCorrelated()) require.False(t, corCol.ConstItem(nil)) - require.True(t, corCol.Decorrelate(schema).Equal(nil, col)) - require.True(t, invalidCorCol.Decorrelate(schema).Equal(nil, invalidCorCol)) + require.True(t, col.EqualColumn(corCol.Decorrelate(schema))) + require.True(t, invalidCorCol.EqualColumn(invalidCorCol.Decorrelate(schema))) intCorCol := &CorrelatedColumn{Column: Column{RetType: types.NewFieldType(mysql.TypeLonglong)}, Data: &intDatum} @@ -102,12 +102,12 @@ func TestColumnHashCode(t *testing.T) { col1 := &Column{ UniqueID: 12, } - require.EqualValues(t, []byte{0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc}, col1.HashCode(nil)) + require.EqualValues(t, []byte{0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc}, col1.HashCode()) col2 := &Column{ UniqueID: 2, } - require.EqualValues(t, []byte{0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2}, col2.HashCode(nil)) + require.EqualValues(t, []byte{0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2}, col2.HashCode()) } func TestColumn2Expr(t *testing.T) { @@ -118,7 +118,7 @@ func TestColumn2Expr(t *testing.T) { exprs := Column2Exprs(cols) for i := range exprs { - require.True(t, exprs[i].Equal(nil, cols[i])) + require.True(t, cols[i].EqualColumn(exprs[i])) } } @@ -127,7 +127,7 @@ func TestColInfo2Col(t *testing.T) { cols := []*Column{col0, col1} colInfo := &model.ColumnInfo{ID: 0} res := ColInfo2Col(cols, colInfo) - require.True(t, res.Equal(nil, col1)) + require.True(t, res.EqualColumn(col1)) colInfo.ID = 3 res = ColInfo2Col(cols, colInfo) @@ -147,7 +147,7 @@ func TestIndexInfo2Cols(t *testing.T) { resCols, lengths := IndexInfo2PrefixCols(colInfos, cols, indexInfo) require.Len(t, resCols, 1) require.Len(t, lengths, 1) - require.True(t, resCols[0].Equal(nil, col0)) + require.True(t, resCols[0].EqualColumn(col0)) cols = []*Column{col1} colInfos = []*model.ColumnInfo{colInfo1} @@ -160,8 +160,8 @@ func TestIndexInfo2Cols(t *testing.T) { resCols, lengths = IndexInfo2PrefixCols(colInfos, cols, indexInfo) require.Len(t, resCols, 2) require.Len(t, lengths, 2) - require.True(t, resCols[0].Equal(nil, col0)) - require.True(t, resCols[1].Equal(nil, col1)) + require.True(t, resCols[0].EqualColumn(col0)) + require.True(t, resCols[1].EqualColumn(col1)) } func TestColHybird(t *testing.T) { diff --git a/pkg/expression/constant.go b/pkg/expression/constant.go index 91703c3c29595..b260db16a920d 100644 --- a/pkg/expression/constant.go +++ b/pkg/expression/constant.go @@ -19,13 +19,13 @@ import ( "unsafe" "github.com/pingcap/tidb/pkg/parser/mysql" - "github.com/pingcap/tidb/pkg/parser/terror" "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "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/collate" + "github.com/pingcap/tidb/pkg/util/intest" ) // NewOne stands for a number 1. @@ -221,11 +221,11 @@ func (c *Constant) VecEvalJSON(ctx sessionctx.Context, input *chunk.Chunk, resul return c.DeferredExpr.VecEvalJSON(ctx, input, result) } -func (c *Constant) getLazyDatum(row chunk.Row) (dt types.Datum, isLazy bool, err error) { +func (c *Constant) getLazyDatum(ctx sessionctx.Context, row chunk.Row) (dt types.Datum, isLazy bool, err error) { if c.ParamMarker != nil { return c.ParamMarker.GetUserVar(), true, nil } else if c.DeferredExpr != nil { - dt, err = c.DeferredExpr.Eval(row) + dt, err = c.DeferredExpr.Eval(ctx, row) return dt, true, err } return types.Datum{}, false, nil @@ -236,9 +236,22 @@ func (c *Constant) Traverse(action TraverseAction) Expression { return action.Transform(c) } +// EvalWithInnerCtx evaluates expression with inner ctx. +// Deprecated: This function is only used during refactoring, please do not use it in new code. +// TODO: remove this method after refactoring. +func (c *Constant) EvalWithInnerCtx(row chunk.Row) (types.Datum, error) { + var ctx sessionctx.Context + if c.DeferredExpr != nil { + if sf, sfOk := c.DeferredExpr.(*ScalarFunction); sfOk { + ctx = sf.GetCtx() + } + } + return c.Eval(ctx, row) +} + // Eval implements Expression interface. -func (c *Constant) Eval(row chunk.Row) (types.Datum, error) { - if dt, lazy, err := c.getLazyDatum(row); lazy { +func (c *Constant) Eval(ctx sessionctx.Context, row chunk.Row) (types.Datum, error) { + if dt, lazy, err := c.getLazyDatum(ctx, row); lazy { if err != nil { return c.Value, err } @@ -247,10 +260,10 @@ func (c *Constant) Eval(row chunk.Row) (types.Datum, error) { return c.Value, nil } if c.DeferredExpr != nil { - sf, sfOk := c.DeferredExpr.(*ScalarFunction) - if sfOk { + if _, sfOk := c.DeferredExpr.(*ScalarFunction); sfOk { + intest.AssertNotNil(ctx) if dt.Kind() != types.KindMysqlDecimal { - val, err := dt.ConvertTo(sf.GetCtx().GetSessionVars().StmtCtx.TypeCtx(), c.RetType) + val, err := dt.ConvertTo(ctx.GetSessionVars().StmtCtx.TypeCtx(), c.RetType) if err != nil { return dt, err } @@ -268,7 +281,7 @@ func (c *Constant) Eval(row chunk.Row) (types.Datum, error) { // EvalInt returns int representation of Constant. func (c *Constant) EvalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - dt, lazy, err := c.getLazyDatum(row) + dt, lazy, err := c.getLazyDatum(ctx, row) if err != nil { return 0, false, err } @@ -292,7 +305,7 @@ func (c *Constant) EvalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, // EvalReal returns real representation of Constant. func (c *Constant) EvalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { - dt, lazy, err := c.getLazyDatum(row) + dt, lazy, err := c.getLazyDatum(ctx, row) if err != nil { return 0, false, err } @@ -311,7 +324,7 @@ func (c *Constant) EvalReal(ctx sessionctx.Context, row chunk.Row) (float64, boo // EvalString returns string representation of Constant. func (c *Constant) EvalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { - dt, lazy, err := c.getLazyDatum(row) + dt, lazy, err := c.getLazyDatum(ctx, row) if err != nil { return "", false, err } @@ -327,7 +340,7 @@ func (c *Constant) EvalString(ctx sessionctx.Context, row chunk.Row) (string, bo // EvalDecimal returns decimal representation of Constant. func (c *Constant) EvalDecimal(ctx sessionctx.Context, row chunk.Row) (*types.MyDecimal, bool, error) { - dt, lazy, err := c.getLazyDatum(row) + dt, lazy, err := c.getLazyDatum(ctx, row) if err != nil { return nil, false, err } @@ -358,7 +371,7 @@ func (c *Constant) adjustDecimal(d *types.MyDecimal) error { // EvalTime returns DATE/DATETIME/TIMESTAMP representation of Constant. func (c *Constant) EvalTime(ctx sessionctx.Context, row chunk.Row) (val types.Time, isNull bool, err error) { - dt, lazy, err := c.getLazyDatum(row) + dt, lazy, err := c.getLazyDatum(ctx, row) if err != nil { return types.ZeroTime, false, err } @@ -373,7 +386,7 @@ func (c *Constant) EvalTime(ctx sessionctx.Context, row chunk.Row) (val types.Ti // EvalDuration returns Duration representation of Constant. func (c *Constant) EvalDuration(ctx sessionctx.Context, row chunk.Row) (val types.Duration, isNull bool, err error) { - dt, lazy, err := c.getLazyDatum(row) + dt, lazy, err := c.getLazyDatum(ctx, row) if err != nil { return types.Duration{}, false, err } @@ -388,7 +401,7 @@ func (c *Constant) EvalDuration(ctx sessionctx.Context, row chunk.Row) (val type // EvalJSON returns JSON representation of Constant. func (c *Constant) EvalJSON(ctx sessionctx.Context, row chunk.Row) (types.BinaryJSON, bool, error) { - dt, lazy, err := c.getLazyDatum(row) + dt, lazy, err := c.getLazyDatum(ctx, row) if err != nil { return types.BinaryJSON{}, false, err } @@ -407,8 +420,8 @@ func (c *Constant) Equal(ctx sessionctx.Context, b Expression) bool { if !ok { return false } - _, err1 := y.Eval(chunk.Row{}) - _, err2 := c.Eval(chunk.Row{}) + _, err1 := y.Eval(ctx, chunk.Row{}) + _, err2 := c.Eval(ctx, chunk.Row{}) if err1 != nil || err2 != nil { return false } @@ -435,13 +448,26 @@ func (c *Constant) Decorrelate(_ *Schema) Expression { } // HashCode implements Expression interface. -func (c *Constant) HashCode(sc *stmtctx.StatementContext) []byte { +func (c *Constant) HashCode() []byte { + return c.getHashCode(false) +} + +// CanonicalHashCode implements Expression interface. +func (c *Constant) CanonicalHashCode() []byte { + return c.getHashCode(true) +} + +func (c *Constant) getHashCode(canonical bool) []byte { if len(c.hashcode) > 0 { return c.hashcode } if c.DeferredExpr != nil { - c.hashcode = c.DeferredExpr.HashCode(sc) + if canonical { + c.hashcode = c.DeferredExpr.CanonicalHashCode() + } else { + c.hashcode = c.DeferredExpr.HashCode() + } return c.hashcode } @@ -451,10 +477,7 @@ func (c *Constant) HashCode(sc *stmtctx.StatementContext) []byte { return c.hashcode } - _, err := c.Eval(chunk.Row{}) - if err != nil { - terror.Log(err) - } + intest.Assert(c.DeferredExpr == nil && c.ParamMarker == nil) c.hashcode = append(c.hashcode, constantFlag) c.hashcode = codec.HashCode(c.hashcode, c.Value) return c.hashcode @@ -470,11 +493,11 @@ func (c *Constant) resolveIndices(_ *Schema) error { } // ResolveIndicesByVirtualExpr implements Expression interface. -func (c *Constant) ResolveIndicesByVirtualExpr(_ *Schema) (Expression, bool) { +func (c *Constant) ResolveIndicesByVirtualExpr(_ sessionctx.Context, _ *Schema) (Expression, bool) { return c, true } -func (c *Constant) resolveIndicesByVirtualExpr(_ *Schema) bool { +func (c *Constant) resolveIndicesByVirtualExpr(_ sessionctx.Context, _ *Schema) bool { return true } diff --git a/pkg/expression/constant_fold.go b/pkg/expression/constant_fold.go index 4b391e00258ad..fe9d5b6b95d35 100644 --- a/pkg/expression/constant_fold.go +++ b/pkg/expression/constant_fold.go @@ -17,6 +17,7 @@ package expression 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/types" "github.com/pingcap/tidb/pkg/util/chunk" "github.com/pingcap/tidb/pkg/util/logutil" @@ -24,10 +25,10 @@ import ( ) // specialFoldHandler stores functions for special UDF to constant fold -var specialFoldHandler = map[string]func(*ScalarFunction) (Expression, bool){} +var specialFoldHandler = map[string]func(sessionctx.Context, *ScalarFunction) (Expression, bool){} func init() { - specialFoldHandler = map[string]func(*ScalarFunction) (Expression, bool){ + specialFoldHandler = map[string]func(sessionctx.Context, *ScalarFunction) (Expression, bool){ ast.If: ifFoldHandler, ast.Ifnull: ifNullFoldHandler, ast.Case: caseWhenHandler, @@ -36,8 +37,8 @@ func init() { } // FoldConstant does constant folding optimization on an expression excluding deferred ones. -func FoldConstant(expr Expression) Expression { - e, _ := foldConstant(expr) +func FoldConstant(ctx sessionctx.Context, expr Expression) Expression { + e, _ := foldConstant(ctx, expr) // keep the original coercibility, charset, collation and repertoire values after folding e.SetCoercibility(expr.Coercibility()) @@ -48,16 +49,16 @@ func FoldConstant(expr Expression) Expression { return e } -func isNullHandler(expr *ScalarFunction) (Expression, bool) { +func isNullHandler(ctx sessionctx.Context, expr *ScalarFunction) (Expression, bool) { arg0 := expr.GetArgs()[0] if constArg, isConst := arg0.(*Constant); isConst { isDeferredConst := constArg.DeferredExpr != nil || constArg.ParamMarker != nil - value, err := expr.Eval(chunk.Row{}) + value, err := expr.Eval(ctx, chunk.Row{}) if err != nil { // Failed to fold this expr to a constant, print the DEBUG log and // return the original expression to let the error to be evaluated // again, in that time, the error is returned to the client. - logutil.BgLogger().Debug("fold expression to constant", zap.String("expression", expr.ExplainInfo()), zap.Error(err)) + logutil.BgLogger().Debug("fold expression to constant", zap.String("expression", expr.ExplainInfo(ctx)), zap.Error(err)) return expr, isDeferredConst } if isDeferredConst { @@ -71,36 +72,36 @@ func isNullHandler(expr *ScalarFunction) (Expression, bool) { return expr, false } -func ifFoldHandler(expr *ScalarFunction) (Expression, bool) { +func ifFoldHandler(ctx sessionctx.Context, expr *ScalarFunction) (Expression, bool) { args := expr.GetArgs() - foldedArg0, _ := foldConstant(args[0]) + foldedArg0, _ := foldConstant(ctx, args[0]) if constArg, isConst := foldedArg0.(*Constant); isConst { - arg0, isNull0, err := constArg.EvalInt(expr.Function.getCtx(), chunk.Row{}) + arg0, isNull0, err := constArg.EvalInt(ctx, chunk.Row{}) if err != nil { // Failed to fold this expr to a constant, print the DEBUG log and // return the original expression to let the error to be evaluated // again, in that time, the error is returned to the client. - logutil.BgLogger().Debug("fold expression to constant", zap.String("expression", expr.ExplainInfo()), zap.Error(err)) + logutil.BgLogger().Debug("fold expression to constant", zap.String("expression", expr.ExplainInfo(ctx)), zap.Error(err)) return expr, false } if !isNull0 && arg0 != 0 { - return foldConstant(args[1]) + return foldConstant(ctx, args[1]) } - return foldConstant(args[2]) + return foldConstant(ctx, args[2]) } // if the condition is not const, which branch is unknown to run, so directly return. return expr, false } -func ifNullFoldHandler(expr *ScalarFunction) (Expression, bool) { +func ifNullFoldHandler(ctx sessionctx.Context, expr *ScalarFunction) (Expression, bool) { args := expr.GetArgs() - foldedArg0, isDeferred := foldConstant(args[0]) + foldedArg0, isDeferred := foldConstant(ctx, args[0]) if constArg, isConst := foldedArg0.(*Constant); isConst { // Only check constArg.Value here. Because deferred expression is // evaluated to constArg.Value after foldConstant(args[0]), it's not // needed to be checked. if constArg.Value.IsNull() { - return foldConstant(args[1]) + return foldConstant(ctx, args[1]) } return constArg, isDeferred } @@ -108,11 +109,11 @@ func ifNullFoldHandler(expr *ScalarFunction) (Expression, bool) { return expr, false } -func caseWhenHandler(expr *ScalarFunction) (Expression, bool) { +func caseWhenHandler(ctx sessionctx.Context, expr *ScalarFunction) (Expression, bool) { args, l := expr.GetArgs(), len(expr.GetArgs()) var isDeferred, isDeferredConst bool for i := 0; i < l-1; i += 2 { - expr.GetArgs()[i], isDeferred = foldConstant(args[i]) + expr.GetArgs()[i], isDeferred = foldConstant(ctx, args[i]) isDeferredConst = isDeferredConst || isDeferred if _, isConst := expr.GetArgs()[i].(*Constant); !isConst { // for no-const, here should return directly, because the following branches are unknown to be run or not @@ -121,12 +122,12 @@ func caseWhenHandler(expr *ScalarFunction) (Expression, bool) { // If the condition is const and true, and the previous conditions // has no expr, then the folded execution body is returned, otherwise // the arguments of the casewhen are folded and replaced. - val, isNull, err := args[i].EvalInt(expr.GetCtx(), chunk.Row{}) + val, isNull, err := args[i].EvalInt(ctx, chunk.Row{}) if err != nil { return expr, false } if val != 0 && !isNull { - foldedExpr, isDeferred := foldConstant(args[i+1]) + foldedExpr, isDeferred := foldConstant(ctx, args[i+1]) isDeferredConst = isDeferredConst || isDeferred if _, isConst := foldedExpr.(*Constant); isConst { foldedExpr.GetType().SetDecimal(expr.GetType().GetDecimal()) @@ -139,7 +140,7 @@ func caseWhenHandler(expr *ScalarFunction) (Expression, bool) { // is false, then the folded else execution body is returned. otherwise // the execution body of the else are folded and replaced. if l%2 == 1 { - foldedExpr, isDeferred := foldConstant(args[l-1]) + foldedExpr, isDeferred := foldConstant(ctx, args[l-1]) isDeferredConst = isDeferredConst || isDeferred if _, isConst := foldedExpr.(*Constant); isConst { foldedExpr.GetType().SetDecimal(expr.GetType().GetDecimal()) @@ -150,18 +151,18 @@ func caseWhenHandler(expr *ScalarFunction) (Expression, bool) { return expr, isDeferredConst } -func foldConstant(expr Expression) (Expression, bool) { +func foldConstant(ctx sessionctx.Context, expr Expression) (Expression, bool) { switch x := expr.(type) { case *ScalarFunction: if _, ok := unFoldableFunctions[x.FuncName.L]; ok { return expr, false } - if function := specialFoldHandler[x.FuncName.L]; function != nil && !MaybeOverOptimized4PlanCache(x.GetCtx(), []Expression{expr}) { - return function(x) + if function := specialFoldHandler[x.FuncName.L]; function != nil && !MaybeOverOptimized4PlanCache(ctx, []Expression{expr}) { + return function(ctx, x) } args := x.GetArgs() - sc := x.GetCtx().GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx argIsConst := make([]bool, len(args)) hasNullArg := false allConstArg := true @@ -193,11 +194,11 @@ func foldConstant(expr Expression) (Expression, bool) { constArgs[i] = NewOne() } } - dummyScalarFunc, err := NewFunctionBase(x.GetCtx(), x.FuncName.L, x.GetType(), constArgs...) + dummyScalarFunc, err := NewFunctionBase(ctx, x.FuncName.L, x.GetType(), constArgs...) if err != nil { return expr, isDeferredConst } - value, err := dummyScalarFunc.Eval(chunk.Row{}) + value, err := dummyScalarFunc.Eval(ctx, chunk.Row{}) if err != nil { return expr, isDeferredConst } @@ -217,7 +218,7 @@ func foldConstant(expr Expression) (Expression, bool) { } return expr, isDeferredConst } - value, err := x.Eval(chunk.Row{}) + value, err := x.Eval(ctx, chunk.Row{}) retType := x.RetType.Clone() if !hasNullArg { // set right not null flag for constant value @@ -229,7 +230,7 @@ func foldConstant(expr Expression) (Expression, bool) { } } if err != nil { - logutil.BgLogger().Debug("fold expression to constant", zap.String("expression", x.ExplainInfo()), zap.Error(err)) + logutil.BgLogger().Debug("fold expression to constant", zap.String("expression", x.ExplainInfo(ctx)), zap.Error(err)) return expr, isDeferredConst } if isDeferredConst { @@ -245,9 +246,9 @@ func foldConstant(expr Expression) (Expression, bool) { ParamMarker: x.ParamMarker, }, true } else if x.DeferredExpr != nil { - value, err := x.DeferredExpr.Eval(chunk.Row{}) + value, err := x.DeferredExpr.Eval(ctx, chunk.Row{}) if err != nil { - logutil.BgLogger().Debug("fold expression to constant", zap.String("expression", x.ExplainInfo()), zap.Error(err)) + logutil.BgLogger().Debug("fold expression to constant", zap.String("expression", x.ExplainInfo(ctx)), zap.Error(err)) return expr, true } return &Constant{Value: value, RetType: x.RetType, DeferredExpr: x.DeferredExpr}, true diff --git a/pkg/expression/constant_propagation.go b/pkg/expression/constant_propagation.go index 5b19da65c55e9..0e6b843df0d7c 100644 --- a/pkg/expression/constant_propagation.go +++ b/pkg/expression/constant_propagation.go @@ -155,7 +155,7 @@ func tryToReplaceCond(ctx sessionctx.Context, src *Column, tgt *Column, cond Exp return false, true, cond } for idx, expr := range sf.GetArgs() { - if src.Equal(nil, expr) { + if src.EqualColumn(expr) { _, coll := cond.CharsetAndCollation() if tgt.GetType().GetCollate() != coll { continue @@ -212,7 +212,7 @@ func (s *propConstSolver) propagateConstantEQ() { } for i, cond := range s.conditions { if !visited[i] { - s.conditions[i] = ColumnSubstitute(cond, NewSchema(cols...), cons) + s.conditions[i] = ColumnSubstitute(s.ctx, cond, NewSchema(cols...), cons) } } } @@ -353,7 +353,7 @@ func (s *propConstSolver) solve(conditions []Expression) []Expression { s.propagateConstantEQ() s.propagateColumnEQ() s.conditions = propagateConstantDNF(s.ctx, s.conditions) - s.conditions = RemoveDupExprs(s.ctx, s.conditions) + s.conditions = RemoveDupExprs(s.conditions) return s.conditions } @@ -470,7 +470,7 @@ func (s *propOuterJoinConstSolver) propagateConstantEQ() { } for i, cond := range s.joinConds { if !visited[i+lenFilters] { - s.joinConds[i] = ColumnSubstitute(cond, NewSchema(cols...), cons) + s.joinConds[i] = ColumnSubstitute(s.ctx, cond, NewSchema(cols...), cons) } } } diff --git a/pkg/expression/constant_test.go b/pkg/expression/constant_test.go index e3cee448792c3..9dc8f2f9aede9 100644 --- a/pkg/expression/constant_test.go +++ b/pkg/expression/constant_test.go @@ -23,6 +23,7 @@ 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/types" "github.com/pingcap/tidb/pkg/util/chunk" "github.com/pingcap/tidb/pkg/util/mock" @@ -54,12 +55,16 @@ func newString(value string, collation string) *Constant { } } -func newFunction(funcName string, args ...Expression) Expression { - return newFunctionWithType(funcName, types.NewFieldType(mysql.TypeLonglong), args...) +func newFunctionWithMockCtx(funcName string, args ...Expression) Expression { + return newFunction(mock.NewContext(), funcName, args...) } -func newFunctionWithType(funcName string, tp *types.FieldType, args ...Expression) Expression { - return NewFunctionInternal(mock.NewContext(), funcName, tp, args...) +func newFunction(ctx sessionctx.Context, funcName string, args ...Expression) Expression { + return newFunctionWithType(ctx, funcName, types.NewFieldType(mysql.TypeLonglong), args...) +} + +func newFunctionWithType(ctx sessionctx.Context, funcName string, tp *types.FieldType, args ...Expression) Expression { + return NewFunctionInternal(ctx, funcName, tp, args...) } func TestConstantPropagation(t *testing.T) { @@ -71,59 +76,59 @@ func TestConstantPropagation(t *testing.T) { { solver: []PropagateConstantSolver{newPropConstSolver()}, conditions: []Expression{ - newFunction(ast.EQ, newColumn(0), newColumn(1)), - newFunction(ast.EQ, newColumn(1), newColumn(2)), - newFunction(ast.EQ, newColumn(2), newColumn(3)), - newFunction(ast.EQ, newColumn(3), newLonglong(1)), - newFunction(ast.LogicOr, newLonglong(1), newColumn(0)), + newFunctionWithMockCtx(ast.EQ, newColumn(0), newColumn(1)), + newFunctionWithMockCtx(ast.EQ, newColumn(1), newColumn(2)), + newFunctionWithMockCtx(ast.EQ, newColumn(2), newColumn(3)), + newFunctionWithMockCtx(ast.EQ, newColumn(3), newLonglong(1)), + newFunctionWithMockCtx(ast.LogicOr, newLonglong(1), newColumn(0)), }, result: "1, eq(Column#0, 1), eq(Column#1, 1), eq(Column#2, 1), eq(Column#3, 1)", }, { solver: []PropagateConstantSolver{newPropConstSolver()}, conditions: []Expression{ - newFunction(ast.EQ, newColumn(0), newColumn(1)), - newFunction(ast.EQ, newColumn(1), newLonglong(1)), - newFunction(ast.NE, newColumn(2), newLonglong(2)), + newFunctionWithMockCtx(ast.EQ, newColumn(0), newColumn(1)), + newFunctionWithMockCtx(ast.EQ, newColumn(1), newLonglong(1)), + newFunctionWithMockCtx(ast.NE, newColumn(2), newLonglong(2)), }, result: "eq(Column#0, 1), eq(Column#1, 1), ne(Column#2, 2)", }, { solver: []PropagateConstantSolver{newPropConstSolver()}, conditions: []Expression{ - newFunction(ast.EQ, newColumn(0), newColumn(1)), - newFunction(ast.EQ, newColumn(1), newLonglong(1)), - newFunction(ast.EQ, newColumn(2), newColumn(3)), - newFunction(ast.GE, newColumn(2), newLonglong(2)), - newFunction(ast.NE, newColumn(2), newLonglong(4)), - newFunction(ast.NE, newColumn(3), newLonglong(5)), + newFunctionWithMockCtx(ast.EQ, newColumn(0), newColumn(1)), + newFunctionWithMockCtx(ast.EQ, newColumn(1), newLonglong(1)), + newFunctionWithMockCtx(ast.EQ, newColumn(2), newColumn(3)), + newFunctionWithMockCtx(ast.GE, newColumn(2), newLonglong(2)), + newFunctionWithMockCtx(ast.NE, newColumn(2), newLonglong(4)), + newFunctionWithMockCtx(ast.NE, newColumn(3), newLonglong(5)), }, result: "eq(Column#0, 1), eq(Column#1, 1), eq(Column#2, Column#3), ge(Column#2, 2), ge(Column#3, 2), ne(Column#2, 4), ne(Column#2, 5), ne(Column#3, 4), ne(Column#3, 5)", }, { solver: []PropagateConstantSolver{newPropConstSolver()}, conditions: []Expression{ - newFunction(ast.EQ, newColumn(0), newColumn(1)), - newFunction(ast.EQ, newColumn(0), newColumn(2)), - newFunction(ast.GE, newColumn(1), newLonglong(0)), + newFunctionWithMockCtx(ast.EQ, newColumn(0), newColumn(1)), + newFunctionWithMockCtx(ast.EQ, newColumn(0), newColumn(2)), + newFunctionWithMockCtx(ast.GE, newColumn(1), newLonglong(0)), }, result: "eq(Column#0, Column#1), eq(Column#0, Column#2), ge(Column#0, 0), ge(Column#1, 0), ge(Column#2, 0)", }, { solver: []PropagateConstantSolver{newPropConstSolver()}, conditions: []Expression{ - newFunction(ast.EQ, newColumn(0), newColumn(1)), - newFunction(ast.GT, newColumn(0), newLonglong(2)), - newFunction(ast.GT, newColumn(1), newLonglong(3)), - newFunction(ast.LT, newColumn(0), newLonglong(1)), - newFunction(ast.GT, newLonglong(2), newColumn(1)), + newFunctionWithMockCtx(ast.EQ, newColumn(0), newColumn(1)), + newFunctionWithMockCtx(ast.GT, newColumn(0), newLonglong(2)), + newFunctionWithMockCtx(ast.GT, newColumn(1), newLonglong(3)), + newFunctionWithMockCtx(ast.LT, newColumn(0), newLonglong(1)), + newFunctionWithMockCtx(ast.GT, newLonglong(2), newColumn(1)), }, result: "eq(Column#0, Column#1), gt(2, Column#0), gt(2, Column#1), gt(Column#0, 2), gt(Column#0, 3), gt(Column#1, 2), gt(Column#1, 3), lt(Column#0, 1), lt(Column#1, 1)", }, { solver: []PropagateConstantSolver{newPropConstSolver()}, conditions: []Expression{ - newFunction(ast.EQ, newLonglong(1), newColumn(0)), + newFunctionWithMockCtx(ast.EQ, newLonglong(1), newColumn(0)), newLonglong(0), }, result: "0", @@ -131,41 +136,41 @@ func TestConstantPropagation(t *testing.T) { { solver: []PropagateConstantSolver{newPropConstSolver()}, conditions: []Expression{ - newFunction(ast.EQ, newColumn(0), newColumn(1)), - newFunction(ast.In, newColumn(0), newLonglong(1), newLonglong(2)), - newFunction(ast.In, newColumn(1), newLonglong(3), newLonglong(4)), + newFunctionWithMockCtx(ast.EQ, newColumn(0), newColumn(1)), + newFunctionWithMockCtx(ast.In, newColumn(0), newLonglong(1), newLonglong(2)), + newFunctionWithMockCtx(ast.In, newColumn(1), newLonglong(3), newLonglong(4)), }, result: "eq(Column#0, Column#1), in(Column#0, 1, 2), in(Column#0, 3, 4), in(Column#1, 1, 2), in(Column#1, 3, 4)", }, { solver: []PropagateConstantSolver{newPropConstSolver()}, conditions: []Expression{ - newFunction(ast.EQ, newColumn(0), newColumn(1)), - newFunction(ast.EQ, newColumn(0), newFunction(ast.BitLength, newColumn(2))), + newFunctionWithMockCtx(ast.EQ, newColumn(0), newColumn(1)), + newFunctionWithMockCtx(ast.EQ, newColumn(0), newFunctionWithMockCtx(ast.BitLength, newColumn(2))), }, result: "eq(Column#0, Column#1), eq(Column#0, bit_length(cast(Column#2, var_string(20)))), eq(Column#1, bit_length(cast(Column#2, var_string(20))))", }, { solver: []PropagateConstantSolver{newPropConstSolver()}, conditions: []Expression{ - newFunction(ast.EQ, newColumn(0), newColumn(1)), - newFunction(ast.LE, newFunction(ast.Mul, newColumn(0), newColumn(0)), newLonglong(50)), + newFunctionWithMockCtx(ast.EQ, newColumn(0), newColumn(1)), + newFunctionWithMockCtx(ast.LE, newFunctionWithMockCtx(ast.Mul, newColumn(0), newColumn(0)), newLonglong(50)), }, result: "eq(Column#0, Column#1), le(mul(Column#0, Column#0), 50), le(mul(Column#1, Column#1), 50)", }, { solver: []PropagateConstantSolver{newPropConstSolver()}, conditions: []Expression{ - newFunction(ast.EQ, newColumn(0), newColumn(1)), - newFunction(ast.LE, newColumn(0), newFunction(ast.Plus, newColumn(1), newLonglong(1))), + newFunctionWithMockCtx(ast.EQ, newColumn(0), newColumn(1)), + newFunctionWithMockCtx(ast.LE, newColumn(0), newFunctionWithMockCtx(ast.Plus, newColumn(1), newLonglong(1))), }, result: "eq(Column#0, Column#1), le(Column#0, plus(Column#0, 1)), le(Column#0, plus(Column#1, 1)), le(Column#1, plus(Column#1, 1))", }, { solver: []PropagateConstantSolver{newPropConstSolver()}, conditions: []Expression{ - newFunction(ast.EQ, newColumn(0), newColumn(1)), - newFunction(ast.LE, newColumn(0), newFunction(ast.Rand)), + newFunctionWithMockCtx(ast.EQ, newColumn(0), newColumn(1)), + newFunctionWithMockCtx(ast.LE, newColumn(0), newFunctionWithMockCtx(ast.Rand)), }, result: "eq(Column#0, Column#1), le(cast(Column#0, double BINARY), rand())", }, @@ -175,7 +180,7 @@ func TestConstantPropagation(t *testing.T) { ctx := mock.NewContext() conds := make([]Expression, 0, len(tt.conditions)) for _, cd := range tt.conditions { - conds = append(conds, FoldConstant(cd)) + conds = append(conds, FoldConstant(ctx, cd)) } newConds := solver.PropagateConstant(ctx, conds) var result []string @@ -190,75 +195,93 @@ func TestConstantPropagation(t *testing.T) { func TestConstantFolding(t *testing.T) { tests := []struct { - condition Expression + condition func(ctx sessionctx.Context) Expression result string }{ { - condition: newFunction(ast.LT, newColumn(0), newFunction(ast.Plus, newLonglong(1), newLonglong(2))), - result: "lt(Column#0, 3)", + condition: func(ctx sessionctx.Context) Expression { + return newFunction(ctx, ast.LT, newColumn(0), newFunction(ctx, ast.Plus, newLonglong(1), newLonglong(2))) + }, + result: "lt(Column#0, 3)", }, { - condition: newFunction(ast.LT, newColumn(0), newFunction(ast.Greatest, newLonglong(1), newLonglong(2))), - result: "lt(Column#0, 2)", + condition: func(ctx sessionctx.Context) Expression { + return newFunction(ctx, ast.LT, newColumn(0), newFunction(ctx, ast.Greatest, newLonglong(1), newLonglong(2))) + }, + result: "lt(Column#0, 2)", }, { - condition: newFunction(ast.EQ, newColumn(0), newFunction(ast.Rand)), - result: "eq(cast(Column#0, double BINARY), rand())", + condition: func(ctx sessionctx.Context) Expression { + return newFunction(ctx, ast.EQ, newColumn(0), newFunction(ctx, ast.Rand)) + }, + result: "eq(cast(Column#0, double BINARY), rand())", }, { - condition: newFunction(ast.IsNull, newLonglong(1)), - result: "0", + condition: func(ctx sessionctx.Context) Expression { + return newFunction(ctx, ast.IsNull, newLonglong(1)) + }, + result: "0", }, { - condition: newFunction(ast.EQ, newColumn(0), newFunction(ast.UnaryNot, newFunction(ast.Plus, newLonglong(1), newLonglong(1)))), - result: "eq(Column#0, 0)", + condition: func(ctx sessionctx.Context) Expression { + return newFunction(ctx, ast.EQ, newColumn(0), newFunction(ctx, ast.UnaryNot, newFunctionWithMockCtx(ast.Plus, newLonglong(1), newLonglong(1)))) + }, + result: "eq(Column#0, 0)", }, { - condition: newFunction(ast.LT, newColumn(0), newFunction(ast.Plus, newColumn(1), newFunction(ast.Plus, newLonglong(2), newLonglong(1)))), - result: "lt(Column#0, plus(Column#1, 3))", + condition: func(ctx sessionctx.Context) Expression { + return newFunction(ctx, ast.LT, newColumn(0), newFunction(ctx, ast.Plus, newColumn(1), newFunctionWithMockCtx(ast.Plus, newLonglong(2), newLonglong(1)))) + }, + result: "lt(Column#0, plus(Column#1, 3))", }, { - condition: func() Expression { - expr := newFunction(ast.ConcatWS, newColumn(0), NewNull()) - function := expr.(*ScalarFunction) - function.GetCtx().GetSessionVars().StmtCtx.InNullRejectCheck = true - return function - }(), + condition: func(ctx sessionctx.Context) Expression { + expr := newFunction(ctx, ast.ConcatWS, newColumn(0), NewNull()) + ctx.GetSessionVars().StmtCtx.InNullRejectCheck = true + return expr + }, result: "concat_ws(cast(Column#0, var_string(20)), )", }, } for _, tt := range tests { - newConds := FoldConstant(tt.condition) + ctx := mock.NewContext() + expr := tt.condition(ctx) + newConds := FoldConstant(ctx, expr) require.Equalf(t, tt.result, newConds.String(), "different for expr %s", tt.condition) } } func TestConstantFoldingCharsetConvert(t *testing.T) { + ctx := mock.NewContext() tests := []struct { condition Expression result string }{ { - condition: newFunction(ast.Length, newFunctionWithType( + condition: newFunction(ctx, ast.Length, newFunctionWithType( + ctx, InternalFuncToBinary, types.NewFieldType(mysql.TypeVarchar), newString("中文", "gbk_bin"))), result: "4", }, { - condition: newFunction(ast.Length, newFunctionWithType( + condition: newFunction(ctx, ast.Length, newFunctionWithType( + ctx, InternalFuncToBinary, types.NewFieldType(mysql.TypeVarchar), newString("中文", "utf8mb4_bin"))), result: "6", }, { - condition: newFunction(ast.Concat, newFunctionWithType( + condition: newFunction(ctx, ast.Concat, newFunctionWithType( + ctx, InternalFuncFromBinary, types.NewFieldType(mysql.TypeVarchar), newString("中文", "binary"))), result: "中文", }, { - condition: newFunction(ast.Concat, + condition: newFunction(ctx, ast.Concat, newFunctionWithType( + ctx, InternalFuncFromBinary, types.NewFieldTypeWithCollation(mysql.TypeVarchar, "gbk_bin", -1), newString("\xd2\xbb", "binary")), newString("中文", "gbk_bin"), @@ -266,9 +289,10 @@ func TestConstantFoldingCharsetConvert(t *testing.T) { result: "一中文", }, { - condition: newFunction(ast.Concat, + condition: newFunction(ctx, ast.Concat, newString("中文", "gbk_bin"), newFunctionWithType( + ctx, InternalFuncFromBinary, types.NewFieldTypeWithCollation(mysql.TypeVarchar, "gbk_bin", -1), newString("\xd2\xbb", "binary")), ), @@ -276,7 +300,7 @@ func TestConstantFoldingCharsetConvert(t *testing.T) { }, // The result is binary charset, so gbk constant will convert to binary which is \xd6\xd0\xce\xc4. { - condition: newFunction(ast.Concat, + condition: newFunction(ctx, ast.Concat, newString("中文", "gbk_bin"), newString("\xd2\xbb", "binary"), ), @@ -284,7 +308,7 @@ func TestConstantFoldingCharsetConvert(t *testing.T) { }, } for _, tt := range tests { - newConds := FoldConstant(tt.condition) + newConds := FoldConstant(ctx, tt.condition) require.Equalf(t, tt.result, newConds.String(), "different for expr %s", tt.condition) } } diff --git a/pkg/expression/distsql_builtin.go b/pkg/expression/distsql_builtin.go index 1105052d7660b..fbd2296bab335 100644 --- a/pkg/expression/distsql_builtin.go +++ b/pkg/expression/distsql_builtin.go @@ -24,12 +24,10 @@ import ( "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/sessionctx" - "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/codec" "github.com/pingcap/tidb/pkg/util/collate" - "github.com/pingcap/tidb/pkg/util/mock" "github.com/pingcap/tipb/go-tipb" ) @@ -1093,9 +1091,7 @@ func getSignatureByPB(ctx sessionctx.Context, sigCode tipb.ScalarFuncSig, tp *ti return f, nil } -func newDistSQLFunctionBySig(sc *stmtctx.StatementContext, sigCode tipb.ScalarFuncSig, tp *tipb.FieldType, args []Expression) (Expression, error) { - ctx := mock.NewContext() - ctx.GetSessionVars().StmtCtx = sc +func newDistSQLFunctionBySig(ctx sessionctx.Context, sigCode tipb.ScalarFuncSig, tp *tipb.FieldType, args []Expression) (Expression, error) { f, err := getSignatureByPB(ctx, sigCode, tp, args) if err != nil { return nil, err @@ -1104,14 +1100,15 @@ func newDistSQLFunctionBySig(sc *stmtctx.StatementContext, sigCode tipb.ScalarFu FuncName: model.NewCIStr(fmt.Sprintf("sig_%T", f)), Function: f, RetType: f.getRetTp(), + ctx: ctx, }, nil } // PBToExprs converts pb structures to expressions. -func PBToExprs(pbExprs []*tipb.Expr, fieldTps []*types.FieldType, sc *stmtctx.StatementContext) ([]Expression, error) { +func PBToExprs(ctx sessionctx.Context, pbExprs []*tipb.Expr, fieldTps []*types.FieldType) ([]Expression, error) { exprs := make([]Expression, 0, len(pbExprs)) for _, expr := range pbExprs { - e, err := PBToExpr(expr, fieldTps, sc) + e, err := PBToExpr(ctx, expr, fieldTps) if err != nil { return nil, errors.Trace(err) } @@ -1124,7 +1121,8 @@ func PBToExprs(pbExprs []*tipb.Expr, fieldTps []*types.FieldType, sc *stmtctx.St } // PBToExpr converts pb structure to expression. -func PBToExpr(expr *tipb.Expr, tps []*types.FieldType, sc *stmtctx.StatementContext) (Expression, error) { +func PBToExpr(ctx sessionctx.Context, expr *tipb.Expr, tps []*types.FieldType) (Expression, error) { + sc := ctx.GetSessionVars().StmtCtx switch expr.Tp { case tipb.ExprType_ColumnRef: _, offset, err := codec.DecodeInt(expr.Val) @@ -1176,13 +1174,13 @@ func PBToExpr(expr *tipb.Expr, tps []*types.FieldType, sc *stmtctx.StatementCont args = append(args, results...) continue } - arg, err := PBToExpr(child, tps, sc) + arg, err := PBToExpr(ctx, child, tps) if err != nil { return nil, err } args = append(args, arg) } - sf, err := newDistSQLFunctionBySig(sc, expr.Sig, expr.FieldType, args) + sf, err := newDistSQLFunctionBySig(ctx, expr.Sig, expr.FieldType, args) if err != nil { return nil, err } diff --git a/pkg/expression/distsql_builtin_test.go b/pkg/expression/distsql_builtin_test.go index b12fb40f8fc08..ec89e6d3a56fd 100644 --- a/pkg/expression/distsql_builtin_test.go +++ b/pkg/expression/distsql_builtin_test.go @@ -20,17 +20,17 @@ import ( "github.com/pingcap/tidb/pkg/parser/charset" "github.com/pingcap/tidb/pkg/parser/mysql" - "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/chunk" "github.com/pingcap/tidb/pkg/util/codec" "github.com/pingcap/tidb/pkg/util/collate" + "github.com/pingcap/tidb/pkg/util/mock" "github.com/pingcap/tipb/go-tipb" "github.com/stretchr/testify/require" ) func TestPBToExpr(t *testing.T) { - sc := stmtctx.NewStmtCtx() + ctx := mock.NewContext() fieldTps := make([]*types.FieldType, 1) ds := []types.Datum{types.NewIntDatum(1), types.NewUintDatum(1), types.NewFloat64Datum(1), types.NewDecimalDatum(newMyDecimal(t, "1")), types.NewDurationDatum(newDuration(time.Second))} @@ -38,7 +38,7 @@ func TestPBToExpr(t *testing.T) { for _, d := range ds { expr := datumExpr(t, d) expr.Val = expr.Val[:len(expr.Val)/2] - _, err := PBToExpr(expr, fieldTps, sc) + _, err := PBToExpr(ctx, expr, fieldTps) require.Error(t, err) } @@ -50,7 +50,7 @@ func TestPBToExpr(t *testing.T) { }, }, } - _, err := PBToExpr(expr, fieldTps, sc) + _, err := PBToExpr(ctx, expr, fieldTps) require.NoError(t, err) val := make([]byte, 0, 32) @@ -64,7 +64,7 @@ func TestPBToExpr(t *testing.T) { }, }, } - _, err = PBToExpr(expr, fieldTps, sc) + _, err = PBToExpr(ctx, expr, fieldTps) require.Error(t, err) expr = &tipb.Expr{ @@ -78,7 +78,7 @@ func TestPBToExpr(t *testing.T) { Sig: tipb.ScalarFuncSig_AbsInt, FieldType: ToPBFieldType(newIntFieldType()), } - _, err = PBToExpr(expr, fieldTps, sc) + _, err = PBToExpr(ctx, expr, fieldTps) require.Error(t, err) } @@ -778,14 +778,14 @@ func TestEval(t *testing.T) { types.NewIntDatum(1), }, } - sc := stmtctx.NewStmtCtx() + ctx := mock.NewContext() for _, tt := range tests { - expr, err := PBToExpr(tt.expr, fieldTps, sc) + expr, err := PBToExpr(ctx, tt.expr, fieldTps) require.NoError(t, err) - result, err := expr.Eval(row) + result, err := expr.Eval(ctx, row) require.NoError(t, err) require.Equal(t, tt.result.Kind(), result.Kind()) - cmp, err := result.Compare(sc.TypeCtx(), &tt.result, collate.GetCollator(fieldTps[0].GetCollate())) + cmp, err := result.Compare(ctx.GetSessionVars().StmtCtx.TypeCtx(), &tt.result, collate.GetCollator(fieldTps[0].GetCollate())) require.NoError(t, err) require.Equal(t, 0, cmp) } @@ -793,7 +793,7 @@ func TestEval(t *testing.T) { func TestPBToExprWithNewCollation(t *testing.T) { collate.SetNewCollationEnabledForTest(false) - sc := stmtctx.NewStmtCtx() + ctx := mock.NewContext() fieldTps := make([]*types.FieldType, 1) cases := []struct { @@ -821,7 +821,7 @@ func TestPBToExprWithNewCollation(t *testing.T) { expr.FieldType = toPBFieldType(ft) require.Equal(t, cs.pbID, expr.FieldType.Collate) - e, err := PBToExpr(expr, fieldTps, sc) + e, err := PBToExpr(ctx, expr, fieldTps) require.NoError(t, err) cons, ok := e.(*Constant) require.True(t, ok) @@ -838,7 +838,7 @@ func TestPBToExprWithNewCollation(t *testing.T) { expr.FieldType = toPBFieldType(ft) require.Equal(t, -cs.pbID, expr.FieldType.Collate) - e, err := PBToExpr(expr, fieldTps, sc) + e, err := PBToExpr(ctx, expr, fieldTps) require.NoError(t, err) cons, ok := e.(*Constant) require.True(t, ok) @@ -848,7 +848,7 @@ func TestPBToExprWithNewCollation(t *testing.T) { // Test convert various scalar functions. func TestPBToScalarFuncExpr(t *testing.T) { - sc := stmtctx.NewStmtCtx() + ctx := mock.NewContext() fieldTps := make([]*types.FieldType, 1) exprs := []*tipb.Expr{ { @@ -863,7 +863,7 @@ func TestPBToScalarFuncExpr(t *testing.T) { }, } for _, expr := range exprs { - _, err := PBToExpr(expr, fieldTps, sc) + _, err := PBToExpr(ctx, expr, fieldTps) require.NoError(t, err) } } @@ -904,7 +904,7 @@ func datumExpr(t *testing.T, d types.Datum) *tipb.Expr { expr.Tp = tipb.ExprType_MysqlJson var err error expr.Val = make([]byte, 0, 1024) - expr.Val, err = codec.EncodeValue(nil, expr.Val, d) + expr.Val, err = codec.EncodeValue(time.UTC, expr.Val, d) require.NoError(t, err) case types.KindMysqlTime: expr.Tp = tipb.ExprType_MysqlTime diff --git a/pkg/expression/explain.go b/pkg/expression/explain.go index 2591f5e18b743..ae7c1c0a2e196 100644 --- a/pkg/expression/explain.go +++ b/pkg/expression/explain.go @@ -21,16 +21,20 @@ import ( "strings" "github.com/pingcap/tidb/pkg/parser/ast" + "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/intest" ) // ExplainInfo implements the Expression interface. -func (expr *ScalarFunction) ExplainInfo() string { - return expr.explainInfo(false) +func (expr *ScalarFunction) ExplainInfo(ctx sessionctx.Context) string { + return expr.explainInfo(ctx, false) } -func (expr *ScalarFunction) explainInfo(normalized bool) string { +func (expr *ScalarFunction) explainInfo(ctx sessionctx.Context, normalized bool) string { + // we only need ctx for non-normalized explain info. + intest.Assert(normalized || ctx != nil) var buffer bytes.Buffer fmt.Fprintf(&buffer, "%s(", expr.FuncName.L) switch expr.FuncName.L { @@ -39,7 +43,8 @@ func (expr *ScalarFunction) explainInfo(normalized bool) string { if normalized { buffer.WriteString(arg.ExplainNormalizedInfo()) } else { - buffer.WriteString(arg.ExplainInfo()) + intest.Assert(ctx != nil) + buffer.WriteString(arg.ExplainInfo(ctx)) } buffer.WriteString(", ") buffer.WriteString(expr.RetType.String()) @@ -49,7 +54,8 @@ func (expr *ScalarFunction) explainInfo(normalized bool) string { if normalized { buffer.WriteString(arg.ExplainNormalizedInfo()) } else { - buffer.WriteString(arg.ExplainInfo()) + intest.Assert(ctx != nil) + buffer.WriteString(arg.ExplainInfo(ctx)) } if i+1 < len(expr.GetArgs()) { buffer.WriteString(", ") @@ -62,7 +68,7 @@ func (expr *ScalarFunction) explainInfo(normalized bool) string { // ExplainNormalizedInfo implements the Expression interface. func (expr *ScalarFunction) ExplainNormalizedInfo() string { - return expr.explainInfo(true) + return expr.explainInfo(nil, true) } // ExplainNormalizedInfo4InList implements the Expression interface. @@ -90,32 +96,37 @@ func (expr *ScalarFunction) ExplainNormalizedInfo4InList() string { return buffer.String() } -// ExplainInfo implements the Expression interface. -func (col *Column) ExplainInfo() string { +// ColumnExplainInfo returns the explained info for column. +func (col *Column) ColumnExplainInfo(normalized bool) string { + if normalized { + if col.OrigName != "" { + return col.OrigName + } + return "?" + } return col.String() } +// ExplainInfo implements the Expression interface. +func (col *Column) ExplainInfo(sessionctx.Context) string { + return col.ColumnExplainInfo(false) +} + // ExplainNormalizedInfo implements the Expression interface. func (col *Column) ExplainNormalizedInfo() string { - if col.OrigName != "" { - return col.OrigName - } - return "?" + return col.ColumnExplainInfo(true) } // ExplainNormalizedInfo4InList implements the Expression interface. func (col *Column) ExplainNormalizedInfo4InList() string { - if col.OrigName != "" { - return col.OrigName - } - return "?" + return col.ColumnExplainInfo(true) } // ExplainInfo implements the Expression interface. -func (expr *Constant) ExplainInfo() string { - dt, err := expr.Eval(chunk.Row{}) +func (expr *Constant) ExplainInfo(ctx sessionctx.Context) string { + dt, err := expr.Eval(ctx, chunk.Row{}) if err != nil { - return "not recognized const vanue" + return "not recognized const value" } return expr.format(dt) } @@ -179,16 +190,17 @@ func ExplainExpressionList(exprs []Expression, schema *Schema) string { // SortedExplainExpressionList generates explain information for a list of expressions in order. // In some scenarios, the expr's order may not be stable when executing multiple times. // So we add a sort to make its explain result stable. -func SortedExplainExpressionList(exprs []Expression) []byte { - return sortedExplainExpressionList(exprs, false, false) +func SortedExplainExpressionList(ctx sessionctx.Context, exprs []Expression) []byte { + return sortedExplainExpressionList(ctx, exprs, false, false) } // SortedExplainExpressionListIgnoreInlist generates explain information for a list of expressions in order. func SortedExplainExpressionListIgnoreInlist(exprs []Expression) []byte { - return sortedExplainExpressionList(exprs, false, true) + return sortedExplainExpressionList(nil, exprs, false, true) } -func sortedExplainExpressionList(exprs []Expression, normalized bool, ignoreInlist bool) []byte { +func sortedExplainExpressionList(ctx sessionctx.Context, exprs []Expression, normalized bool, ignoreInlist bool) []byte { + intest.Assert(ignoreInlist || normalized || ctx != nil) buffer := bytes.NewBufferString("") exprInfos := make([]string, 0, len(exprs)) for _, expr := range exprs { @@ -197,7 +209,8 @@ func sortedExplainExpressionList(exprs []Expression, normalized bool, ignoreInli } else if normalized { exprInfos = append(exprInfos, expr.ExplainNormalizedInfo()) } else { - exprInfos = append(exprInfos, expr.ExplainInfo()) + intest.Assert(ctx != nil) + exprInfos = append(exprInfos, expr.ExplainInfo(ctx)) } } slices.Sort(exprInfos) @@ -212,7 +225,7 @@ func sortedExplainExpressionList(exprs []Expression, normalized bool, ignoreInli // SortedExplainNormalizedExpressionList is same like SortedExplainExpressionList, but use for generating normalized information. func SortedExplainNormalizedExpressionList(exprs []Expression) []byte { - return sortedExplainExpressionList(exprs, true, false) + return sortedExplainExpressionList(nil, exprs, true, false) } // SortedExplainNormalizedScalarFuncList is same like SortedExplainExpressionList, but use for generating normalized information. @@ -221,14 +234,14 @@ func SortedExplainNormalizedScalarFuncList(exprs []*ScalarFunction) []byte { for i := range exprs { expressions[i] = exprs[i] } - return sortedExplainExpressionList(expressions, true, false) + return sortedExplainExpressionList(nil, expressions, true, false) } // ExplainColumnList generates explain information for a list of columns. -func ExplainColumnList(cols []*Column) []byte { +func ExplainColumnList(ctx sessionctx.Context, cols []*Column) []byte { buffer := bytes.NewBufferString("") for i, col := range cols { - buffer.WriteString(col.ExplainInfo()) + buffer.WriteString(col.ExplainInfo(ctx)) if i+1 < len(cols) { buffer.WriteString(", ") } diff --git a/pkg/expression/expr_to_pb.go b/pkg/expression/expr_to_pb.go index 9f884f750db36..99e1fc177b23d 100644 --- a/pkg/expression/expr_to_pb.go +++ b/pkg/expression/expr_to_pb.go @@ -23,7 +23,7 @@ import ( "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/parser/mysql" ast "github.com/pingcap/tidb/pkg/parser/types" - "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" + "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" @@ -34,8 +34,8 @@ import ( ) // ExpressionsToPBList converts expressions to tipb.Expr list for new plan. -func ExpressionsToPBList(sc *stmtctx.StatementContext, exprs []Expression, client kv.Client) (pbExpr []*tipb.Expr, err error) { - pc := PbConverter{client: client, sc: sc} +func ExpressionsToPBList(ctx sessionctx.Context, exprs []Expression, client kv.Client) (pbExpr []*tipb.Expr, err error) { + pc := PbConverter{client: client, ctx: ctx} for _, expr := range exprs { v := pc.ExprToPB(expr) if v == nil { @@ -49,12 +49,12 @@ func ExpressionsToPBList(sc *stmtctx.StatementContext, exprs []Expression, clien // PbConverter supplies methods to convert TiDB expressions to TiPB. type PbConverter struct { client kv.Client - sc *stmtctx.StatementContext + ctx sessionctx.Context } // NewPBConverter creates a PbConverter. -func NewPBConverter(client kv.Client, sc *stmtctx.StatementContext) PbConverter { - return PbConverter{client: client, sc: sc} +func NewPBConverter(client kv.Client, ctx sessionctx.Context) PbConverter { + return PbConverter{client: client, ctx: ctx} } // ExprToPB converts Expression to TiPB. @@ -78,9 +78,9 @@ func (pc PbConverter) ExprToPB(expr Expression) *tipb.Expr { func (pc PbConverter) conOrCorColToPBExpr(expr Expression) *tipb.Expr { ft := expr.GetType() - d, err := expr.Eval(chunk.Row{}) + d, err := expr.Eval(pc.ctx, chunk.Row{}) if err != nil { - logutil.BgLogger().Error("eval constant or correlated column", zap.String("expression", expr.ExplainInfo()), zap.Error(err)) + logutil.BgLogger().Error("eval constant or correlated column", zap.String("expression", expr.ExplainInfo(pc.ctx)), zap.Error(err)) return nil } tp, val, ok := pc.encodeDatum(ft, d) @@ -143,7 +143,9 @@ func (pc *PbConverter) encodeDatum(ft *types.FieldType, d types.Datum) (tipb.Exp case types.KindMysqlTime: if pc.client.IsRequestTypeSupported(kv.ReqTypeDAG, int64(tipb.ExprType_MysqlTime)) { tp = tipb.ExprType_MysqlTime - val, err := codec.EncodeMySQLTime(pc.sc, d.GetMysqlTime(), ft.GetType(), nil) + sc := pc.ctx.GetSessionVars().StmtCtx + val, err := codec.EncodeMySQLTime(sc.TimeZone(), d.GetMysqlTime(), ft.GetType(), nil) + err = sc.HandleError(err) if err != nil { logutil.BgLogger().Error("encode mysql time", zap.Error(err)) return tp, nil, false @@ -276,8 +278,8 @@ func (pc PbConverter) scalarFuncToPBExpr(expr *ScalarFunction) *tipb.Expr { } // GroupByItemToPB converts group by items to pb. -func GroupByItemToPB(sc *stmtctx.StatementContext, client kv.Client, expr Expression) *tipb.ByItem { - pc := PbConverter{client: client, sc: sc} +func GroupByItemToPB(ctx sessionctx.Context, client kv.Client, expr Expression) *tipb.ByItem { + pc := PbConverter{client: client, ctx: ctx} e := pc.ExprToPB(expr) if e == nil { return nil @@ -286,8 +288,8 @@ func GroupByItemToPB(sc *stmtctx.StatementContext, client kv.Client, expr Expres } // SortByItemToPB converts order by items to pb. -func SortByItemToPB(sc *stmtctx.StatementContext, client kv.Client, expr Expression, desc bool) *tipb.ByItem { - pc := PbConverter{client: client, sc: sc} +func SortByItemToPB(ctx sessionctx.Context, client kv.Client, expr Expression, desc bool) *tipb.ByItem { + pc := PbConverter{client: client, ctx: ctx} e := pc.ExprToPB(expr) if e == nil { return nil diff --git a/pkg/expression/expr_to_pb_test.go b/pkg/expression/expr_to_pb_test.go index 1d112923d1eeb..e083d35c3abaa 100644 --- a/pkg/expression/expr_to_pb_test.go +++ b/pkg/expression/expr_to_pb_test.go @@ -26,7 +26,6 @@ import ( "github.com/pingcap/tidb/pkg/parser/ast" "github.com/pingcap/tidb/pkg/parser/charset" "github.com/pingcap/tidb/pkg/parser/mysql" - "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/mock" "github.com/pingcap/tipb/go-tipb" @@ -44,7 +43,7 @@ func genColumn(tp byte, id int64) *Column { func TestConstant2Pb(t *testing.T) { t.Skip("constant pb has changed") var constExprs []Expression - sc := stmtctx.NewStmtCtx() + ctx := mock.NewContext() client := new(mock.Client) // can be transformed @@ -99,11 +98,11 @@ func TestConstant2Pb(t *testing.T) { require.Equal(t, types.KindMysqlEnum, constValue.Value.Kind()) constExprs = append(constExprs, constValue) - pushed, remained := PushDownExprs(sc, constExprs, client, kv.UnSpecified) + pushed, remained := PushDownExprs(ctx, constExprs, client, kv.UnSpecified) require.Len(t, pushed, len(constExprs)-3) require.Len(t, remained, 3) - pbExprs, err := ExpressionsToPBList(sc, constExprs, client) + pbExprs, err := ExpressionsToPBList(ctx, constExprs, client) require.NoError(t, err) jsons := []string{ "{\"tp\":0,\"sig\":0}", @@ -127,19 +126,19 @@ func TestConstant2Pb(t *testing.T) { func TestColumn2Pb(t *testing.T) { var colExprs []Expression - sc := stmtctx.NewStmtCtx() + ctx := mock.NewContext() client := new(mock.Client) colExprs = append(colExprs, genColumn(mysql.TypeSet, 1)) colExprs = append(colExprs, genColumn(mysql.TypeGeometry, 2)) colExprs = append(colExprs, genColumn(mysql.TypeUnspecified, 3)) - pushed, remained := PushDownExprs(sc, colExprs, client, kv.UnSpecified) + pushed, remained := PushDownExprs(ctx, colExprs, client, kv.UnSpecified) require.Len(t, pushed, 0) require.Len(t, remained, len(colExprs)) for _, col := range colExprs { // cannot be pushed down - _, err := ExpressionsToPBList(sc, []Expression{col}, client) + _, err := ExpressionsToPBList(ctx, []Expression{col}, client) require.Error(t, err) } @@ -168,11 +167,11 @@ func TestColumn2Pb(t *testing.T) { colExprs = append(colExprs, genColumn(mysql.TypeString, 23)) colExprs = append(colExprs, genColumn(mysql.TypeEnum, 24)) colExprs = append(colExprs, genColumn(mysql.TypeBit, 25)) - pushed, remained = PushDownExprs(sc, colExprs, client, kv.UnSpecified) + pushed, remained = PushDownExprs(ctx, colExprs, client, kv.UnSpecified) require.Len(t, pushed, len(colExprs)) require.Len(t, remained, 0) - pbExprs, err := ExpressionsToPBList(sc, colExprs, client) + pbExprs, err := ExpressionsToPBList(ctx, colExprs, client) require.NoError(t, err) jsons := []string{ "{\"tp\":201,\"val\":\"gAAAAAAAAAE=\",\"sig\":0,\"field_type\":{\"tp\":1,\"flag\":0,\"flen\":4,\"decimal\":0,\"collate\":-63,\"charset\":\"binary\",\"array\":false},\"has_distinct\":false}", @@ -212,14 +211,14 @@ func TestColumn2Pb(t *testing.T) { expr.(*Column).Index = 0 } - pushed, remained = PushDownExprs(sc, colExprs, client, kv.UnSpecified) + pushed, remained = PushDownExprs(ctx, colExprs, client, kv.UnSpecified) require.Len(t, pushed, len(colExprs)) require.Len(t, remained, 0) } func TestCompareFunc2Pb(t *testing.T) { var compareExprs = make([]Expression, 0) - sc := stmtctx.NewStmtCtx() + ctx := mock.NewContext() client := new(mock.Client) funcNames := []string{ast.LT, ast.LE, ast.GT, ast.GE, ast.EQ, ast.NE, ast.NullEQ} @@ -229,11 +228,11 @@ func TestCompareFunc2Pb(t *testing.T) { compareExprs = append(compareExprs, fc) } - pushed, remained := PushDownExprs(sc, compareExprs, client, kv.UnSpecified) + pushed, remained := PushDownExprs(ctx, compareExprs, client, kv.UnSpecified) require.Len(t, pushed, len(compareExprs)) require.Len(t, remained, 0) - pbExprs, err := ExpressionsToPBList(sc, compareExprs, client) + pbExprs, err := ExpressionsToPBList(ctx, compareExprs, client) require.NoError(t, err) require.Len(t, pbExprs, len(compareExprs)) jsons := []string{ @@ -255,7 +254,7 @@ func TestCompareFunc2Pb(t *testing.T) { func TestLikeFunc2Pb(t *testing.T) { var likeFuncs []Expression - sc := stmtctx.NewStmtCtx() + ctx := mock.NewContext() client := new(mock.Client) retTp := types.NewFieldType(mysql.TypeString) @@ -268,7 +267,6 @@ func TestLikeFunc2Pb(t *testing.T) { &Constant{RetType: retTp, Value: types.NewDatum(`%abc%`)}, &Constant{RetType: retTp, Value: types.NewDatum("\\")}, } - ctx := mock.NewContext() retTp = types.NewFieldType(mysql.TypeUnspecified) fc, err := NewFunction(ctx, ast.Like, retTp, args[0], args[1], args[3]) require.NoError(t, err) @@ -278,7 +276,7 @@ func TestLikeFunc2Pb(t *testing.T) { require.NoError(t, err) likeFuncs = append(likeFuncs, fc) - pbExprs, err := ExpressionsToPBList(sc, likeFuncs, client) + pbExprs, err := ExpressionsToPBList(ctx, likeFuncs, client) require.NoError(t, err) results := []string{ `{"tp":10000,"children":[{"tp":5,"val":"c3RyaW5n","sig":0,"field_type":{"tp":254,"flag":1,"flen":-1,"decimal":-1,"collate":-83,"charset":"utf8","array":false},"has_distinct":false},{"tp":5,"val":"cGF0dGVybg==","sig":0,"field_type":{"tp":254,"flag":1,"flen":-1,"decimal":-1,"collate":-83,"charset":"utf8","array":false},"has_distinct":false},{"tp":10000,"val":"CAA=","children":[{"tp":5,"val":"XA==","sig":0,"field_type":{"tp":254,"flag":1,"flen":-1,"decimal":-1,"collate":-83,"charset":"utf8","array":false},"has_distinct":false}],"sig":30,"field_type":{"tp":8,"flag":129,"flen":-1,"decimal":0,"collate":-83,"charset":"binary","array":false},"has_distinct":false}],"sig":4310,"field_type":{"tp":8,"flag":524416,"flen":1,"decimal":0,"collate":-83,"charset":"binary","array":false},"has_distinct":false}`, @@ -293,7 +291,7 @@ func TestLikeFunc2Pb(t *testing.T) { func TestArithmeticalFunc2Pb(t *testing.T) { var arithmeticalFuncs = make([]Expression, 0) - sc := stmtctx.NewStmtCtx() + ctx := mock.NewContext() client := new(mock.Client) funcNames := []string{ast.Plus, ast.Minus, ast.Mul, ast.Div} @@ -315,7 +313,7 @@ func TestArithmeticalFunc2Pb(t *testing.T) { jsons[ast.Div] = "{\"tp\":10000,\"children\":[{\"tp\":201,\"val\":\"gAAAAAAAAAE=\",\"sig\":0,\"field_type\":{\"tp\":5,\"flag\":0,\"flen\":-1,\"decimal\":-1,\"collate\":-63,\"charset\":\"binary\",\"array\":false},\"has_distinct\":false},{\"tp\":201,\"val\":\"gAAAAAAAAAI=\",\"sig\":0,\"field_type\":{\"tp\":5,\"flag\":0,\"flen\":-1,\"decimal\":-1,\"collate\":-63,\"charset\":\"binary\",\"array\":false},\"has_distinct\":false}],\"sig\":211,\"field_type\":{\"tp\":5,\"flag\":128,\"flen\":23,\"decimal\":-1,\"collate\":-63,\"charset\":\"binary\",\"array\":false},\"has_distinct\":false}" jsons[ast.Mod] = "{\"tp\":10000,\"children\":[{\"tp\":201,\"val\":\"gAAAAAAAAAE=\",\"sig\":0,\"field_type\":{\"tp\":5,\"flag\":0,\"flen\":-1,\"decimal\":-1,\"collate\":-63,\"charset\":\"binary\",\"array\":false},\"has_distinct\":false},{\"tp\":201,\"val\":\"gAAAAAAAAAI=\",\"sig\":0,\"field_type\":{\"tp\":5,\"flag\":0,\"flen\":-1,\"decimal\":-1,\"collate\":-63,\"charset\":\"binary\",\"array\":false},\"has_distinct\":false}],\"sig\":215,\"field_type\":{\"tp\":5,\"flag\":128,\"flen\":23,\"decimal\":-1,\"collate\":-63,\"charset\":\"binary\",\"array\":false},\"has_distinct\":false}" - pbExprs, err := ExpressionsToPBList(sc, arithmeticalFuncs, client) + pbExprs, err := ExpressionsToPBList(ctx, arithmeticalFuncs, client) require.NoError(t, err) for i, pbExpr := range pbExprs { require.NotNil(t, pbExpr) @@ -333,13 +331,13 @@ func TestArithmeticalFunc2Pb(t *testing.T) { genColumn(mysql.TypeDouble, 1), genColumn(mysql.TypeDouble, 2)) require.NoError(t, err) - _, err = ExpressionsToPBList(sc, []Expression{fc}, client) + _, err = ExpressionsToPBList(ctx, []Expression{fc}, client) require.Error(t, err) } } func TestDateFunc2Pb(t *testing.T) { - sc := stmtctx.NewStmtCtx() + ctx := mock.NewContext() client := new(mock.Client) fc, err := NewFunction( @@ -350,7 +348,7 @@ func TestDateFunc2Pb(t *testing.T) { genColumn(mysql.TypeString, 2)) require.NoError(t, err) funcs := []Expression{fc} - pbExprs, err := ExpressionsToPBList(sc, funcs, client) + pbExprs, err := ExpressionsToPBList(ctx, funcs, client) require.NoError(t, err) require.NotNil(t, pbExprs[0]) js, err := json.Marshal(pbExprs[0]) @@ -360,7 +358,7 @@ func TestDateFunc2Pb(t *testing.T) { func TestLogicalFunc2Pb(t *testing.T) { var logicalFuncs = make([]Expression, 0) - sc := stmtctx.NewStmtCtx() + ctx := mock.NewContext() client := new(mock.Client) funcNames := []string{ast.LogicAnd, ast.LogicOr, ast.LogicXor, ast.UnaryNot} @@ -379,7 +377,7 @@ func TestLogicalFunc2Pb(t *testing.T) { logicalFuncs = append(logicalFuncs, fc) } - pbExprs, err := ExpressionsToPBList(sc, logicalFuncs, client) + pbExprs, err := ExpressionsToPBList(ctx, logicalFuncs, client) require.NoError(t, err) jsons := []string{ "{\"tp\":10000,\"children\":[{\"tp\":201,\"val\":\"gAAAAAAAAAE=\",\"sig\":0,\"field_type\":{\"tp\":1,\"flag\":0,\"flen\":4,\"decimal\":0,\"collate\":-63,\"charset\":\"binary\",\"array\":false},\"has_distinct\":false},{\"tp\":201,\"val\":\"gAAAAAAAAAI=\",\"sig\":0,\"field_type\":{\"tp\":1,\"flag\":0,\"flen\":4,\"decimal\":0,\"collate\":-63,\"charset\":\"binary\",\"array\":false},\"has_distinct\":false}],\"sig\":3101,\"field_type\":{\"tp\":8,\"flag\":524416,\"flen\":1,\"decimal\":0,\"collate\":-63,\"charset\":\"binary\",\"array\":false},\"has_distinct\":false}", @@ -396,7 +394,7 @@ func TestLogicalFunc2Pb(t *testing.T) { func TestBitwiseFunc2Pb(t *testing.T) { var bitwiseFuncs = make([]Expression, 0) - sc := stmtctx.NewStmtCtx() + ctx := mock.NewContext() client := new(mock.Client) funcNames := []string{ast.And, ast.Or, ast.Xor, ast.LeftShift, ast.RightShift, ast.BitNeg} @@ -415,7 +413,7 @@ func TestBitwiseFunc2Pb(t *testing.T) { bitwiseFuncs = append(bitwiseFuncs, fc) } - pbExprs, err := ExpressionsToPBList(sc, bitwiseFuncs, client) + pbExprs, err := ExpressionsToPBList(ctx, bitwiseFuncs, client) require.NoError(t, err) jsons := []string{ "{\"tp\":10000,\"children\":[{\"tp\":201,\"val\":\"gAAAAAAAAAE=\",\"sig\":0,\"field_type\":{\"tp\":3,\"flag\":0,\"flen\":11,\"decimal\":0,\"collate\":-63,\"charset\":\"binary\",\"array\":false},\"has_distinct\":false},{\"tp\":201,\"val\":\"gAAAAAAAAAI=\",\"sig\":0,\"field_type\":{\"tp\":3,\"flag\":0,\"flen\":11,\"decimal\":0,\"collate\":-63,\"charset\":\"binary\",\"array\":false},\"has_distinct\":false}],\"sig\":3118,\"field_type\":{\"tp\":8,\"flag\":160,\"flen\":20,\"decimal\":0,\"collate\":-63,\"charset\":\"binary\",\"array\":false},\"has_distinct\":false}", @@ -434,7 +432,7 @@ func TestBitwiseFunc2Pb(t *testing.T) { func TestControlFunc2Pb(t *testing.T) { var controlFuncs = make([]Expression, 0) - sc := stmtctx.NewStmtCtx() + ctx := mock.NewContext() client := new(mock.Client) funcNames := []string{ @@ -458,7 +456,7 @@ func TestControlFunc2Pb(t *testing.T) { controlFuncs = append(controlFuncs, fc) } - pbExprs, err := ExpressionsToPBList(sc, controlFuncs, client) + pbExprs, err := ExpressionsToPBList(ctx, controlFuncs, client) require.NoError(t, err) jsons := []string{ "{\"tp\":10000,\"children\":[{\"tp\":201,\"val\":\"gAAAAAAAAAE=\",\"sig\":0,\"field_type\":{\"tp\":3,\"flag\":0,\"flen\":11,\"decimal\":0,\"collate\":-63,\"charset\":\"binary\",\"array\":false},\"has_distinct\":false},{\"tp\":201,\"val\":\"gAAAAAAAAAI=\",\"sig\":0,\"field_type\":{\"tp\":3,\"flag\":0,\"flen\":11,\"decimal\":0,\"collate\":-63,\"charset\":\"binary\",\"array\":false},\"has_distinct\":false},{\"tp\":201,\"val\":\"gAAAAAAAAAM=\",\"sig\":0,\"field_type\":{\"tp\":3,\"flag\":0,\"flen\":11,\"decimal\":0,\"collate\":-63,\"charset\":\"binary\",\"array\":false},\"has_distinct\":false}],\"sig\":4208,\"field_type\":{\"tp\":3,\"flag\":128,\"flen\":11,\"decimal\":0,\"collate\":-63,\"charset\":\"binary\",\"array\":false},\"has_distinct\":false}", @@ -475,7 +473,6 @@ func TestControlFunc2Pb(t *testing.T) { func TestOtherFunc2Pb(t *testing.T) { var otherFuncs = make([]Expression, 0) - sc := stmtctx.NewStmtCtx() client := new(mock.Client) funcNames := []string{ast.Coalesce, ast.IsNull} @@ -490,7 +487,7 @@ func TestOtherFunc2Pb(t *testing.T) { otherFuncs = append(otherFuncs, fc) } - pbExprs, err := ExpressionsToPBList(sc, otherFuncs, client) + pbExprs, err := ExpressionsToPBList(mock.NewContext(), otherFuncs, client) require.NoError(t, err) jsons := map[string]string{ ast.Coalesce: "{\"tp\":10000,\"children\":[{\"tp\":201,\"val\":\"gAAAAAAAAAE=\",\"sig\":0,\"field_type\":{\"tp\":3,\"flag\":0,\"flen\":11,\"decimal\":0,\"collate\":-63,\"charset\":\"binary\",\"array\":false},\"has_distinct\":false}],\"sig\":4201,\"field_type\":{\"tp\":3,\"flag\":0,\"flen\":11,\"decimal\":0,\"collate\":-63,\"charset\":\"binary\",\"array\":false},\"has_distinct\":false}", @@ -504,7 +501,7 @@ func TestOtherFunc2Pb(t *testing.T) { } func TestExprPushDownToFlash(t *testing.T) { - sc := stmtctx.NewStmtCtx() + ctx := mock.NewContext() client := new(mock.Client) exprs := make([]Expression, 0) @@ -978,7 +975,7 @@ func TestExprPushDownToFlash(t *testing.T) { require.NoError(t, err) exprs = append(exprs, function) - canPush := CanExprsPushDown(sc, exprs, client, kv.TiFlash) + canPush := CanExprsPushDown(mock.NewContext(), exprs, client, kv.TiFlash) require.Equal(t, true, canPush) exprs = exprs[:0] @@ -1037,11 +1034,11 @@ func TestExprPushDownToFlash(t *testing.T) { require.NoError(t, err) exprs = append(exprs, function) - pushed, remained := PushDownExprs(sc, exprs, client, kv.TiFlash) + pushed, remained := PushDownExprs(ctx, exprs, client, kv.TiFlash) require.Len(t, pushed, 0) require.Len(t, remained, len(exprs)) - pushed, remained = PushDownExprsWithExtraInfo(sc, exprs, client, kv.TiFlash, true) + pushed, remained = PushDownExprsWithExtraInfo(ctx, exprs, client, kv.TiFlash, true) require.Len(t, pushed, 0) require.Len(t, remained, len(exprs)) @@ -1332,18 +1329,17 @@ func TestExprPushDownToFlash(t *testing.T) { require.NoError(t, err) exprs = append(exprs, function) - pushed, remained = PushDownExprs(sc, exprs, client, kv.TiFlash) + pushed, remained = PushDownExprs(ctx, exprs, client, kv.TiFlash) require.Len(t, pushed, len(exprs)) require.Len(t, remained, 0) - pushed, remained = PushDownExprsWithExtraInfo(sc, exprs, client, kv.TiFlash, true) + pushed, remained = PushDownExprsWithExtraInfo(ctx, exprs, client, kv.TiFlash, true) require.Len(t, pushed, len(exprs)) require.Len(t, remained, 0) } func TestExprOnlyPushDownToFlash(t *testing.T) { t.Skip("Skip this unstable test temporarily and bring it back before 2021-07-26") - sc := stmtctx.NewStmtCtx() client := new(mock.Client) exprs := make([]Expression, 0) @@ -1381,26 +1377,25 @@ func TestExprOnlyPushDownToFlash(t *testing.T) { require.NoError(t, err) exprs = append(exprs, function) - pushed, remained := PushDownExprs(sc, exprs, client, kv.UnSpecified) + pushed, remained := PushDownExprs(mock.NewContext(), exprs, client, kv.UnSpecified) require.Len(t, pushed, len(exprs)) require.Len(t, remained, 0) - canPush := CanExprsPushDown(sc, exprs, client, kv.TiFlash) + canPush := CanExprsPushDown(mock.NewContext(), exprs, client, kv.TiFlash) require.Equal(t, true, canPush) - canPush = CanExprsPushDown(sc, exprs, client, kv.TiKV) + canPush = CanExprsPushDown(mock.NewContext(), exprs, client, kv.TiKV) require.Equal(t, false, canPush) - pushed, remained = PushDownExprs(sc, exprs, client, kv.TiFlash) + pushed, remained = PushDownExprs(mock.NewContext(), exprs, client, kv.TiFlash) require.Len(t, pushed, len(exprs)) require.Len(t, remained, 0) - pushed, remained = PushDownExprs(sc, exprs, client, kv.TiKV) + pushed, remained = PushDownExprs(mock.NewContext(), exprs, client, kv.TiKV) require.Len(t, pushed, 0) require.Len(t, remained, len(exprs)) } func TestExprPushDownToTiKV(t *testing.T) { - sc := stmtctx.NewStmtCtx() client := new(mock.Client) exprs := make([]Expression, 0) @@ -1448,7 +1443,7 @@ func TestExprPushDownToTiKV(t *testing.T) { require.NoError(t, err) exprs = append(exprs, function) - pushed, remained := PushDownExprs(sc, exprs, client, kv.TiKV) + pushed, remained := PushDownExprs(mock.NewContext(), exprs, client, kv.TiKV) require.Len(t, pushed, 0) require.Len(t, remained, len(exprs)) @@ -1576,95 +1571,96 @@ func TestExprPushDownToTiKV(t *testing.T) { }, } + ctx := mock.NewContext() for _, tc := range testcases { - function, err = NewFunction(mock.NewContext(), tc.functionName, tc.retType, tc.args...) + function, err = NewFunction(ctx, tc.functionName, tc.retType, tc.args...) require.NoError(t, err) exprs = append(exprs, function) } - pushed, remained = PushDownExprs(sc, exprs, client, kv.TiKV) + pushed, remained = PushDownExprs(ctx, exprs, client, kv.TiKV) require.Len(t, pushed, len(exprs)) require.Len(t, remained, 0) } func TestExprOnlyPushDownToTiKV(t *testing.T) { - sc := stmtctx.NewStmtCtx() + ctx := mock.NewContext() client := new(mock.Client) - function, err := NewFunction(mock.NewContext(), "uuid", types.NewFieldType(mysql.TypeLonglong)) + function, err := NewFunction(ctx, "uuid", types.NewFieldType(mysql.TypeLonglong)) require.NoError(t, err) var exprs = make([]Expression, 0) exprs = append(exprs, function) - pushed, remained := PushDownExprs(sc, exprs, client, kv.UnSpecified) + pushed, remained := PushDownExprs(ctx, exprs, client, kv.UnSpecified) require.Len(t, pushed, 1) require.Len(t, remained, 0) - canPush := CanExprsPushDown(sc, exprs, client, kv.TiFlash) + canPush := CanExprsPushDown(ctx, exprs, client, kv.TiFlash) require.Equal(t, false, canPush) - canPush = CanExprsPushDown(sc, exprs, client, kv.TiKV) + canPush = CanExprsPushDown(ctx, exprs, client, kv.TiKV) require.Equal(t, true, canPush) - pushed, remained = PushDownExprs(sc, exprs, client, kv.TiFlash) + pushed, remained = PushDownExprs(ctx, exprs, client, kv.TiFlash) require.Len(t, pushed, 0) require.Len(t, remained, 1) - pushed, remained = PushDownExprs(sc, exprs, client, kv.TiKV) + pushed, remained = PushDownExprs(ctx, exprs, client, kv.TiKV) require.Len(t, pushed, 1) require.Len(t, remained, 0) } func TestGroupByItem2Pb(t *testing.T) { - sc := stmtctx.NewStmtCtx() + ctx := mock.NewContext() client := new(mock.Client) item := genColumn(mysql.TypeDouble, 0) - pbByItem := GroupByItemToPB(sc, client, item) + pbByItem := GroupByItemToPB(ctx, client, item) js, err := json.Marshal(pbByItem) require.NoError(t, err) require.Equal(t, "{\"expr\":{\"tp\":201,\"val\":\"gAAAAAAAAAA=\",\"sig\":0,\"field_type\":{\"tp\":5,\"flag\":0,\"flen\":-1,\"decimal\":-1,\"collate\":-63,\"charset\":\"binary\",\"array\":false},\"has_distinct\":false},\"desc\":false}", string(js)) item = genColumn(mysql.TypeDouble, 1) - pbByItem = GroupByItemToPB(sc, client, item) + pbByItem = GroupByItemToPB(ctx, client, item) js, err = json.Marshal(pbByItem) require.NoError(t, err) require.Equal(t, "{\"expr\":{\"tp\":201,\"val\":\"gAAAAAAAAAE=\",\"sig\":0,\"field_type\":{\"tp\":5,\"flag\":0,\"flen\":-1,\"decimal\":-1,\"collate\":-63,\"charset\":\"binary\",\"array\":false},\"has_distinct\":false},\"desc\":false}", string(js)) } func TestSortByItem2Pb(t *testing.T) { - sc := stmtctx.NewStmtCtx() + ctx := mock.NewContext() client := new(mock.Client) item := genColumn(mysql.TypeDouble, 0) - pbByItem := SortByItemToPB(sc, client, item, false) + pbByItem := SortByItemToPB(ctx, client, item, false) js, err := json.Marshal(pbByItem) require.NoError(t, err) require.Equal(t, "{\"expr\":{\"tp\":201,\"val\":\"gAAAAAAAAAA=\",\"sig\":0,\"field_type\":{\"tp\":5,\"flag\":0,\"flen\":-1,\"decimal\":-1,\"collate\":-63,\"charset\":\"binary\",\"array\":false},\"has_distinct\":false},\"desc\":false}", string(js)) item = genColumn(mysql.TypeDouble, 1) - pbByItem = SortByItemToPB(sc, client, item, false) + pbByItem = SortByItemToPB(ctx, client, item, false) js, err = json.Marshal(pbByItem) require.NoError(t, err) require.Equal(t, "{\"expr\":{\"tp\":201,\"val\":\"gAAAAAAAAAE=\",\"sig\":0,\"field_type\":{\"tp\":5,\"flag\":0,\"flen\":-1,\"decimal\":-1,\"collate\":-63,\"charset\":\"binary\",\"array\":false},\"has_distinct\":false},\"desc\":false}", string(js)) item = genColumn(mysql.TypeDouble, 1) - pbByItem = SortByItemToPB(sc, client, item, true) + pbByItem = SortByItemToPB(ctx, client, item, true) js, err = json.Marshal(pbByItem) require.NoError(t, err) require.Equal(t, "{\"expr\":{\"tp\":201,\"val\":\"gAAAAAAAAAE=\",\"sig\":0,\"field_type\":{\"tp\":5,\"flag\":0,\"flen\":-1,\"decimal\":-1,\"collate\":-63,\"charset\":\"binary\",\"array\":false},\"has_distinct\":false},\"desc\":true}", string(js)) } func TestPushCollationDown(t *testing.T) { - fc, err := NewFunction(mock.NewContext(), ast.EQ, types.NewFieldType(mysql.TypeUnspecified), genColumn(mysql.TypeVarchar, 0), genColumn(mysql.TypeVarchar, 1)) + ctx := mock.NewContext() + fc, err := NewFunction(ctx, ast.EQ, types.NewFieldType(mysql.TypeUnspecified), genColumn(mysql.TypeVarchar, 0), genColumn(mysql.TypeVarchar, 1)) require.NoError(t, err) client := new(mock.Client) - sc := stmtctx.NewStmtCtx() tps := []*types.FieldType{types.NewFieldType(mysql.TypeVarchar), types.NewFieldType(mysql.TypeVarchar)} for _, coll := range []string{charset.CollationBin, charset.CollationLatin1, charset.CollationUTF8, charset.CollationUTF8MB4} { fc.SetCharsetAndCollation("binary", coll) // only collation matters - pbExpr, err := ExpressionsToPBList(sc, []Expression{fc}, client) + pbExpr, err := ExpressionsToPBList(ctx, []Expression{fc}, client) require.NoError(t, err) - expr, err := PBToExpr(pbExpr[0], tps, sc) + expr, err := PBToExpr(ctx, pbExpr[0], tps) require.NoError(t, err) _, eColl := expr.CharsetAndCollation() require.Equal(t, coll, eColl) @@ -1679,7 +1675,7 @@ func columnCollation(c *Column, chs, coll string) *Column { func TestNewCollationsEnabled(t *testing.T) { var colExprs []Expression - sc := stmtctx.NewStmtCtx() + ctx := mock.NewContext() client := new(mock.Client) colExprs = colExprs[:0] @@ -1690,9 +1686,9 @@ func TestNewCollationsEnabled(t *testing.T) { colExprs = append(colExprs, columnCollation(genColumn(mysql.TypeVarchar, 5), "utf8", "utf8_bin")) colExprs = append(colExprs, columnCollation(genColumn(mysql.TypeVarchar, 6), "utf8", "utf8_unicode_ci")) colExprs = append(colExprs, columnCollation(genColumn(mysql.TypeVarchar, 7), "utf8mb4", "utf8mb4_zh_pinyin_tidb_as_cs")) - pushed, _ := PushDownExprs(sc, colExprs, client, kv.UnSpecified) + pushed, _ := PushDownExprs(ctx, colExprs, client, kv.UnSpecified) require.Equal(t, len(colExprs), len(pushed)) - pbExprs, err := ExpressionsToPBList(sc, colExprs, client) + pbExprs, err := ExpressionsToPBList(ctx, colExprs, client) require.NoError(t, err) jsons := []string{ "{\"tp\":201,\"val\":\"gAAAAAAAAAE=\",\"sig\":0,\"field_type\":{\"tp\":15,\"flag\":0,\"flen\":-1,\"decimal\":-1,\"collate\":-46,\"charset\":\"utf8mb4\",\"array\":false},\"has_distinct\":false}", @@ -1711,14 +1707,14 @@ func TestNewCollationsEnabled(t *testing.T) { } item := columnCollation(genColumn(mysql.TypeDouble, 0), "utf8mb4", "utf8mb4_0900_ai_ci") - pbByItem := GroupByItemToPB(sc, client, item) + pbByItem := GroupByItemToPB(ctx, client, item) js, err := json.Marshal(pbByItem) require.NoError(t, err) require.Equal(t, "{\"expr\":{\"tp\":201,\"val\":\"gAAAAAAAAAA=\",\"sig\":0,\"field_type\":{\"tp\":5,\"flag\":0,\"flen\":-1,\"decimal\":-1,\"collate\":-255,\"charset\":\"utf8mb4\",\"array\":false},\"has_distinct\":false},\"desc\":false}", string(js)) } func TestMetadata(t *testing.T) { - sc := stmtctx.NewStmtCtx() + ctx := mock.NewContext() client := new(mock.Client) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/expression/PushDownTestSwitcher", `return("all")`)) @@ -1726,7 +1722,7 @@ func TestMetadata(t *testing.T) { require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/expression/PushDownTestSwitcher")) }() - pc := PbConverter{client: client, sc: sc} + pc := PbConverter{client: client, ctx: ctx} metadata := new(tipb.InUnionMetadata) var err error @@ -1760,7 +1756,7 @@ func TestMetadata(t *testing.T) { func TestPushDownSwitcher(t *testing.T) { var funcs = make([]Expression, 0) - sc := stmtctx.NewStmtCtx() + ctx := mock.NewContext() client := new(mock.Client) cases := []struct { @@ -1796,7 +1792,7 @@ func TestPushDownSwitcher(t *testing.T) { require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/expression/PushDownTestSwitcher")) }() - pbExprs, err := ExpressionsToPBList(sc, funcs, client) + pbExprs, err := ExpressionsToPBList(ctx, funcs, client) require.NoError(t, err) require.Equal(t, len(cases), len(pbExprs)) for i, pbExpr := range pbExprs { @@ -1805,7 +1801,7 @@ func TestPushDownSwitcher(t *testing.T) { // All disabled require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/expression/PushDownTestSwitcher", `return("")`)) - pc := PbConverter{client: client, sc: sc} + pc := PbConverter{client: client, ctx: ctx} for i := range funcs { pbExpr := pc.ExprToPB(funcs[i]) require.Nil(t, pbExpr) @@ -1841,6 +1837,6 @@ func TestPanicIfPbCodeUnspecified(t *testing.T) { defer func() { require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/expression/PanicIfPbCodeUnspecified")) }() - pc := PbConverter{client: new(mock.Client), sc: stmtctx.NewStmtCtx()} + pc := PbConverter{client: new(mock.Client), ctx: mock.NewContext()} require.PanicsWithError(t, "unspecified PbCode: *expression.builtinBitAndSig", func() { pc.ExprToPB(fn) }) } diff --git a/pkg/expression/expression.go b/pkg/expression/expression.go index 86482e4b9aa5b..d6015049022ee 100644 --- a/pkg/expression/expression.go +++ b/pkg/expression/expression.go @@ -113,8 +113,13 @@ type Expression interface { Traverse(TraverseAction) Expression + // EvalWithInnerCtx evaluates expression with inner ctx. + // Deprecated: This function is only used during refactoring, please do not use it in new code. + // TODO: remove this method after refactoring. + EvalWithInnerCtx(row chunk.Row) (types.Datum, error) + // Eval evaluates an expression through a row. - Eval(row chunk.Row) (types.Datum, error) + Eval(ctx sessionctx.Context, row chunk.Row) (types.Datum, error) // EvalInt returns the int64 representation of expression. EvalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) @@ -169,16 +174,16 @@ type Expression interface { resolveIndices(schema *Schema) error // ResolveIndicesByVirtualExpr resolves indices by the given schema in terms of virual expression. It will copy the original expression and return the copied one. - ResolveIndicesByVirtualExpr(schema *Schema) (Expression, bool) + ResolveIndicesByVirtualExpr(ctx sessionctx.Context, schema *Schema) (Expression, bool) // resolveIndicesByVirtualExpr is called inside the `ResolveIndicesByVirtualExpr` It will perform on the expression itself. - resolveIndicesByVirtualExpr(schema *Schema) bool + resolveIndicesByVirtualExpr(ctx sessionctx.Context, schema *Schema) bool // RemapColumn remaps columns with provided mapping and returns new expression RemapColumn(map[int64]*Column) (Expression, error) // ExplainInfo returns operator information to be explained. - ExplainInfo() string + ExplainInfo(ctx sessionctx.Context) string // ExplainNormalizedInfo returns operator normalized information for generating digest. ExplainNormalizedInfo() string @@ -191,7 +196,12 @@ type Expression interface { // Constant: ConstantFlag+encoded value // Column: ColumnFlag+encoded value // ScalarFunction: SFFlag+encoded function name + encoded arg_1 + encoded arg_2 + ... - HashCode(sc *stmtctx.StatementContext) []byte + HashCode() []byte + + // CanonicalHashCode creates the canonical hashcode for expression. + // Different with `HashCode`, this method will produce the same hashcode for expressions with the same semantic. + // For example, `a + b` and `b + a` have the same return value of this method. + CanonicalHashCode() []byte // MemoryUsage return the memory usage of Expression MemoryUsage() int64 @@ -260,7 +270,7 @@ func HandleOverflowOnSelection(sc *stmtctx.StatementContext, val int64, err erro func EvalBool(ctx sessionctx.Context, exprList CNFExprs, row chunk.Row) (bool, bool, error) { hasNull := false for _, expr := range exprList { - data, err := expr.Eval(row) + data, err := expr.Eval(ctx, row) if err != nil { return false, false, err } @@ -847,7 +857,7 @@ func evaluateExprWithNull(ctx sessionctx.Context, schema *Schema, expr Expressio return &Constant{Value: types.Datum{}, RetType: types.NewFieldType(mysql.TypeNull)} case *Constant: if x.DeferredExpr != nil { - return FoldConstant(x) + return FoldConstant(ctx, x) } } return expr @@ -912,7 +922,7 @@ func evaluateExprWithNullInNullRejectCheck(ctx sessionctx.Context, schema *Schem return &Constant{Value: types.Datum{}, RetType: types.NewFieldType(mysql.TypeNull)}, true case *Constant: if x.DeferredExpr != nil { - return FoldConstant(x), false + return FoldConstant(ctx, x), false } } return expr, false @@ -1035,6 +1045,7 @@ func NewValuesFunc(ctx sessionctx.Context, offset int, retTp *types.FieldType) * FuncName: model.NewCIStr(ast.Values), RetType: retTp, Function: bt, + ctx: ctx, } } @@ -1387,10 +1398,11 @@ func canScalarFuncPushDown(scalarFunc *ScalarFunction, pc PbConverter, storeType storageName = "storage layer" } warnErr := errors.New("Scalar function '" + scalarFunc.FuncName.L + "'(signature: " + scalarFunc.Function.PbCode().String() + ", return type: " + scalarFunc.RetType.CompactStr() + ") is not supported to push down to " + storageName + " now.") - if pc.sc.InExplainStmt { - pc.sc.AppendWarning(warnErr) + sc := pc.ctx.GetSessionVars().StmtCtx + if sc.InExplainStmt { + sc.AppendWarning(warnErr) } else { - pc.sc.AppendExtraWarning(warnErr) + sc.AppendExtraWarning(warnErr) } return false } @@ -1415,25 +1427,26 @@ func canScalarFuncPushDown(scalarFunc *ScalarFunction, pc PbConverter, storeType func canExprPushDown(expr Expression, pc PbConverter, storeType kv.StoreType, canEnumPush bool) bool { if storeType == kv.TiFlash { + sc := pc.ctx.GetSessionVars().StmtCtx switch expr.GetType().GetType() { case mysql.TypeEnum, mysql.TypeBit, mysql.TypeSet, mysql.TypeGeometry, mysql.TypeUnspecified: if expr.GetType().GetType() == mysql.TypeEnum && canEnumPush { break } warnErr := errors.New("Expression about '" + expr.String() + "' can not be pushed to TiFlash because it contains unsupported calculation of type '" + types.TypeStr(expr.GetType().GetType()) + "'.") - if pc.sc.InExplainStmt { - pc.sc.AppendWarning(warnErr) + if sc.InExplainStmt { + sc.AppendWarning(warnErr) } else { - pc.sc.AppendExtraWarning(warnErr) + sc.AppendExtraWarning(warnErr) } return false case mysql.TypeNewDecimal: if !expr.GetType().IsDecimalValid() { warnErr := errors.New("Expression about '" + expr.String() + "' can not be pushed to TiFlash because it contains invalid decimal('" + strconv.Itoa(expr.GetType().GetFlen()) + "','" + strconv.Itoa(expr.GetType().GetDecimal()) + "').") - if pc.sc.InExplainStmt { - pc.sc.AppendWarning(warnErr) + if sc.InExplainStmt { + sc.AppendWarning(warnErr) } else { - pc.sc.AppendExtraWarning(warnErr) + sc.AppendExtraWarning(warnErr) } return false } @@ -1453,8 +1466,8 @@ func canExprPushDown(expr Expression, pc PbConverter, storeType kv.StoreType, ca } // PushDownExprsWithExtraInfo split the input exprs into pushed and remained, pushed include all the exprs that can be pushed down -func PushDownExprsWithExtraInfo(sc *stmtctx.StatementContext, exprs []Expression, client kv.Client, storeType kv.StoreType, canEnumPush bool) (pushed []Expression, remained []Expression) { - pc := PbConverter{sc: sc, client: client} +func PushDownExprsWithExtraInfo(ctx sessionctx.Context, exprs []Expression, client kv.Client, storeType kv.StoreType, canEnumPush bool) (pushed []Expression, remained []Expression) { + pc := PbConverter{ctx: ctx, client: client} for _, expr := range exprs { if canExprPushDown(expr, pc, storeType, canEnumPush) { pushed = append(pushed, expr) @@ -1466,19 +1479,19 @@ func PushDownExprsWithExtraInfo(sc *stmtctx.StatementContext, exprs []Expression } // PushDownExprs split the input exprs into pushed and remained, pushed include all the exprs that can be pushed down -func PushDownExprs(sc *stmtctx.StatementContext, exprs []Expression, client kv.Client, storeType kv.StoreType) (pushed []Expression, remained []Expression) { - return PushDownExprsWithExtraInfo(sc, exprs, client, storeType, false) +func PushDownExprs(ctx sessionctx.Context, exprs []Expression, client kv.Client, storeType kv.StoreType) (pushed []Expression, remained []Expression) { + return PushDownExprsWithExtraInfo(ctx, exprs, client, storeType, false) } // CanExprsPushDownWithExtraInfo return true if all the expr in exprs can be pushed down -func CanExprsPushDownWithExtraInfo(sc *stmtctx.StatementContext, exprs []Expression, client kv.Client, storeType kv.StoreType, canEnumPush bool) bool { - _, remained := PushDownExprsWithExtraInfo(sc, exprs, client, storeType, canEnumPush) +func CanExprsPushDownWithExtraInfo(ctx sessionctx.Context, exprs []Expression, client kv.Client, storeType kv.StoreType, canEnumPush bool) bool { + _, remained := PushDownExprsWithExtraInfo(ctx, exprs, client, storeType, canEnumPush) return len(remained) == 0 } // CanExprsPushDown return true if all the expr in exprs can be pushed down -func CanExprsPushDown(sc *stmtctx.StatementContext, exprs []Expression, client kv.Client, storeType kv.StoreType) bool { - return CanExprsPushDownWithExtraInfo(sc, exprs, client, storeType, false) +func CanExprsPushDown(ctx sessionctx.Context, exprs []Expression, client kv.Client, storeType kv.StoreType) bool { + return CanExprsPushDownWithExtraInfo(ctx, exprs, client, storeType, false) } // wrapWithIsTrue wraps `arg` with istrue function if the return type of expr is not @@ -1513,11 +1526,12 @@ func wrapWithIsTrue(ctx sessionctx.Context, keepNull bool, arg Expression, wrapF FuncName: model.NewCIStr(ast.IsTruthWithoutNull), Function: f, RetType: f.getRetTp(), + ctx: ctx, } if keepNull { sf.FuncName = model.NewCIStr(ast.IsTruthWithNull) } - return FoldConstant(sf), nil + return FoldConstant(ctx, sf), nil } // PropagateType propagates the type information to the `expr`. diff --git a/pkg/expression/expression_test.go b/pkg/expression/expression_test.go index 3d2f2e860dfd8..28c1974dfaea2 100644 --- a/pkg/expression/expression_test.go +++ b/pkg/expression/expression_test.go @@ -110,7 +110,7 @@ func TestConstant(t *testing.T) { require.False(t, NewZero().IsCorrelated()) require.True(t, NewZero().ConstItem(sc)) require.True(t, NewZero().Decorrelate(nil).Equal(ctx, NewZero())) - require.Equal(t, []byte{0x0, 0x8, 0x0}, NewZero().HashCode(sc)) + require.Equal(t, []byte{0x0, 0x8, 0x0}, NewZero().HashCode()) require.False(t, NewZero().Equal(ctx, NewOne())) res, err := NewZero().MarshalJSON() require.NoError(t, err) @@ -135,19 +135,19 @@ func TestIsBinaryLiteral(t *testing.T) { func TestConstItem(t *testing.T) { ctx := createContext(t) - sf := newFunction(ast.Rand) + sf := newFunctionWithMockCtx(ast.Rand) require.False(t, sf.ConstItem(ctx.GetSessionVars().StmtCtx)) - sf = newFunction(ast.UUID) + sf = newFunctionWithMockCtx(ast.UUID) require.False(t, sf.ConstItem(ctx.GetSessionVars().StmtCtx)) - sf = newFunction(ast.GetParam, NewOne()) + sf = newFunctionWithMockCtx(ast.GetParam, NewOne()) require.False(t, sf.ConstItem(ctx.GetSessionVars().StmtCtx)) - sf = newFunction(ast.Abs, NewOne()) + sf = newFunctionWithMockCtx(ast.Abs, NewOne()) require.True(t, sf.ConstItem(ctx.GetSessionVars().StmtCtx)) } func TestVectorizable(t *testing.T) { exprs := make([]Expression, 0, 4) - sf := newFunction(ast.Rand) + sf := newFunctionWithMockCtx(ast.Rand) column := &Column{ UniqueID: 0, RetType: types.NewFieldType(mysql.TypeLonglong), @@ -171,21 +171,21 @@ func TestVectorizable(t *testing.T) { RetType: types.NewFieldType(mysql.TypeLonglong), } exprs = exprs[:0] - sf = newFunction(ast.SetVar, column0, column1) + sf = newFunctionWithMockCtx(ast.SetVar, column0, column1) exprs = append(exprs, sf) require.False(t, Vectorizable(exprs)) exprs = exprs[:0] - sf = newFunction(ast.GetVar, column0) + sf = newFunctionWithMockCtx(ast.GetVar, column0) exprs = append(exprs, sf) require.False(t, Vectorizable(exprs)) exprs = exprs[:0] - sf = newFunction(ast.NextVal, column0) + sf = newFunctionWithMockCtx(ast.NextVal, column0) exprs = append(exprs, sf) - sf = newFunction(ast.LastVal, column0) + sf = newFunctionWithMockCtx(ast.LastVal, column0) exprs = append(exprs, sf) - sf = newFunction(ast.SetVal, column1, column2) + sf = newFunctionWithMockCtx(ast.SetVal, column1, column2) exprs = append(exprs, sf) require.False(t, Vectorizable(exprs)) } diff --git a/pkg/expression/extension.go b/pkg/expression/extension.go index d9e0fb9caade1..aab4d205c29d7 100644 --- a/pkg/expression/extension.go +++ b/pkg/expression/extension.go @@ -109,7 +109,7 @@ func (c *extensionFuncClass) getFunction(ctx sessionctx.Context, args []Expressi return nil, err } bf.tp.SetFlen(c.flen) - sig := &extensionFuncSig{context.TODO(), bf, c.funcDef} + sig := &extensionFuncSig{bf, c.funcDef} return sig, nil } @@ -141,10 +141,9 @@ func (c *extensionFuncClass) checkPrivileges(ctx sessionctx.Context) error { return nil } -var _ extension.FunctionContext = &extensionFuncSig{} +var _ extension.FunctionContext = extensionFnContext{} type extensionFuncSig struct { - context.Context baseBuiltinFunc extension.FunctionDef } @@ -158,26 +157,38 @@ func (b *extensionFuncSig) Clone() builtinFunc { func (b *extensionFuncSig) evalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { if b.EvalTp == types.ETString { - return b.EvalStringFunc(b, row) + fnCtx := newExtensionFnContext(ctx, b) + return b.EvalStringFunc(fnCtx, row) } return b.baseBuiltinFunc.evalString(ctx, row) } func (b *extensionFuncSig) evalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { if b.EvalTp == types.ETInt { - return b.EvalIntFunc(b, row) + fnCtx := newExtensionFnContext(ctx, b) + return b.EvalIntFunc(fnCtx, row) } return b.baseBuiltinFunc.evalInt(ctx, row) } -func (b *extensionFuncSig) EvalArgs(row chunk.Row) ([]types.Datum, error) { - if len(b.args) == 0 { +type extensionFnContext struct { + context.Context + ctx sessionctx.Context + sig *extensionFuncSig +} + +func newExtensionFnContext(ctx sessionctx.Context, sig *extensionFuncSig) extensionFnContext { + return extensionFnContext{Context: context.TODO(), ctx: ctx, sig: sig} +} + +func (b extensionFnContext) EvalArgs(row chunk.Row) ([]types.Datum, error) { + if len(b.sig.args) == 0 { return nil, nil } - result := make([]types.Datum, 0, len(b.args)) - for _, arg := range b.args { - val, err := arg.Eval(row) + result := make([]types.Datum, 0, len(b.sig.args)) + for _, arg := range b.sig.args { + val, err := arg.Eval(b.ctx, row) if err != nil { return nil, err } @@ -187,19 +198,19 @@ func (b *extensionFuncSig) EvalArgs(row chunk.Row) ([]types.Datum, error) { return result, nil } -func (b *extensionFuncSig) ConnectionInfo() *variable.ConnectionInfo { +func (b extensionFnContext) ConnectionInfo() *variable.ConnectionInfo { return b.ctx.GetSessionVars().ConnectionInfo } -func (b *extensionFuncSig) User() *auth.UserIdentity { +func (b extensionFnContext) User() *auth.UserIdentity { return b.ctx.GetSessionVars().User } -func (b *extensionFuncSig) ActiveRoles() []*auth.RoleIdentity { +func (b extensionFnContext) ActiveRoles() []*auth.RoleIdentity { return b.ctx.GetSessionVars().ActiveRoles } -func (b *extensionFuncSig) CurrentDB() string { +func (b extensionFnContext) CurrentDB() string { return b.ctx.GetSessionVars().CurrentDB } diff --git a/pkg/expression/generator/compare_vec.go b/pkg/expression/generator/compare_vec.go index a6448b9031d29..e3e922cb2033a 100644 --- a/pkg/expression/generator/compare_vec.go +++ b/pkg/expression/generator/compare_vec.go @@ -67,7 +67,7 @@ func (b *builtin{{ .compare.CompareName }}{{ .type.TypeName }}Sig) vecEvalInt(ct return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEval{{ .type.TypeName }}(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEval{{ .type.TypeName }}(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -75,7 +75,7 @@ func (b *builtin{{ .compare.CompareName }}{{ .type.TypeName }}Sig) vecEvalInt(ct return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEval{{ .type.TypeName }}(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEval{{ .type.TypeName }}(ctx, input, buf1); err != nil { return err } @@ -121,7 +121,7 @@ func (b *builtin{{ .compare.CompareName }}{{ .type.TypeName }}Sig) vecEvalInt(ct return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEval{{ .type.TypeName }}(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEval{{ .type.TypeName }}(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -129,7 +129,7 @@ func (b *builtin{{ .compare.CompareName }}{{ .type.TypeName }}Sig) vecEvalInt(ct return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEval{{ .type.TypeName }}(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEval{{ .type.TypeName }}(ctx, input, buf1); err != nil { return err } @@ -222,10 +222,10 @@ func (b *builtin{{ .compare.CompareName }}{{ .type.TypeName }}Sig) vecEval{{ .ty return err } defer b.bufAllocator.put(buf1) - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() for j := 0; j < len(b.args); j++{ - err := b.args[j].VecEval{{ .type.TypeName }}(b.ctx, input, buf1) + err := b.args[j].VecEval{{ .type.TypeName }}(ctx, input, buf1) {{- if eq .type.TypeName "Time" }} fsp := b.tp.GetDecimal() {{- end }} @@ -255,7 +255,7 @@ func (b *builtin{{ .compare.CompareName }}{{ .type.TypeName }}Sig) vecEval{{ .ty argLen := len(b.args) bufs := make([]*chunk.Column, argLen) - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() for i := 0; i < argLen; i++ { buf, err := b.bufAllocator.get() @@ -263,7 +263,7 @@ func (b *builtin{{ .compare.CompareName }}{{ .type.TypeName }}Sig) vecEval{{ .ty return err } defer b.bufAllocator.put(buf) - err = b.args[i].VecEval{{ .type.TypeName }}(b.ctx, input, buf) + err = b.args[i].VecEval{{ .type.TypeName }}(ctx, input, buf) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { diff --git a/pkg/expression/generator/control_vec.go b/pkg/expression/generator/control_vec.go index 0d845dc778230..d61f38a9f9128 100644 --- a/pkg/expression/generator/control_vec.go +++ b/pkg/expression/generator/control_vec.go @@ -112,7 +112,7 @@ func (b *builtinCaseWhen{{ .TypeName }}Sig) vecEval{{ .TypeName }}(ctx sessionct thensSlice := make([][]{{.TypeNameGo}}, l/2) var eLseSlice []{{.TypeNameGo}} {{- end }} - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() for j := 0; j < l-1; j+=2 { @@ -121,7 +121,7 @@ func (b *builtinCaseWhen{{ .TypeName }}Sig) vecEval{{ .TypeName }}(ctx sessionct return err } defer b.bufAllocator.put(bufWhen) - err = args[j].VecEvalInt(b.ctx, input, bufWhen) + err = args[j].VecEvalInt(ctx, input, bufWhen) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -137,7 +137,7 @@ func (b *builtinCaseWhen{{ .TypeName }}Sig) vecEval{{ .TypeName }}(ctx sessionct return err } defer b.bufAllocator.put(bufThen) - err = args[j+1].VecEval{{ .TypeName }}(b.ctx, input, bufThen) + err = args[j+1].VecEval{{ .TypeName }}(ctx, input, bufThen) afterWarns = sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -159,7 +159,7 @@ func (b *builtinCaseWhen{{ .TypeName }}Sig) vecEval{{ .TypeName }}(ctx sessionct return err } defer b.bufAllocator.put(bufElse) - err = args[l-1].VecEval{{ .TypeName }}(b.ctx, input, bufElse) + err = args[l-1].VecEval{{ .TypeName }}(ctx, input, bufElse) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -270,7 +270,7 @@ func (b *builtinIfNull{{ .TypeName }}Sig) fallbackEval{{ .TypeName }}(ctx sessio func (b *builtinIfNull{{ .TypeName }}Sig) vecEval{{ .TypeName }}(ctx sessionctx.Context, input *chunk.Chunk, result *chunk.Column) error { n := input.NumRows() {{- if .Fixed }} - if err := b.args[0].VecEval{{ .TypeName }}(b.ctx, input, result); err != nil { + if err := b.args[0].VecEval{{ .TypeName }}(ctx, input, result); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -278,9 +278,9 @@ func (b *builtinIfNull{{ .TypeName }}Sig) vecEval{{ .TypeName }}(ctx sessionctx. return err } defer b.bufAllocator.put(buf1) - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() - err = b.args[1].VecEval{{ .TypeName }}(b.ctx, input, buf1) + err = b.args[1].VecEval{{ .TypeName }}(ctx, input, buf1) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -302,7 +302,7 @@ func (b *builtinIfNull{{ .TypeName }}Sig) vecEval{{ .TypeName }}(ctx sessionctx. return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEval{{ .TypeName }}(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEval{{ .TypeName }}(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -310,9 +310,9 @@ func (b *builtinIfNull{{ .TypeName }}Sig) vecEval{{ .TypeName }}(ctx sessionctx. return err } defer b.bufAllocator.put(buf1) - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() - err = b.args[1].VecEval{{ .TypeName }}(b.ctx, input, buf1) + err = b.args[1].VecEval{{ .TypeName }}(ctx, input, buf1) afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { @@ -390,20 +390,20 @@ func (b *builtinIf{{ .TypeName }}Sig) vecEval{{ .TypeName }}(ctx sessionctx.Cont return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalInt(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalInt(ctx, input, buf0); err != nil { return err } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx beforeWarns := sc.WarningCount() {{- if .Fixed }} - err = b.args[1].VecEval{{ .TypeName }}(b.ctx, input, result) + err = b.args[1].VecEval{{ .TypeName }}(ctx, input, result) {{- else }} buf1, err := b.bufAllocator.get() if err != nil { return err } defer b.bufAllocator.put(buf1) - err = b.args[1].VecEval{{ .TypeName }}(b.ctx, input, buf1) + err = b.args[1].VecEval{{ .TypeName }}(ctx, input, buf1) {{- end }} afterWarns := sc.WarningCount() if err != nil || afterWarns > beforeWarns { @@ -418,7 +418,7 @@ func (b *builtinIf{{ .TypeName }}Sig) vecEval{{ .TypeName }}(ctx sessionctx.Cont return err } defer b.bufAllocator.put(buf2) - err = b.args[2].VecEval{{ .TypeName }}(b.ctx, input, buf2) + err = b.args[2].VecEval{{ .TypeName }}(ctx, input, buf2) afterWarns = sc.WarningCount() if err != nil || afterWarns > beforeWarns { if afterWarns > beforeWarns { diff --git a/pkg/expression/generator/other_vec.go b/pkg/expression/generator/other_vec.go index 332e0d2ceea8c..d5ce5362a8f57 100644 --- a/pkg/expression/generator/other_vec.go +++ b/pkg/expression/generator/other_vec.go @@ -67,7 +67,7 @@ var builtinInTmpl = template.Must(template.New("builtinInTmpl").Parse(` return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEval{{ .Input.TypeName }}(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEval{{ .Input.TypeName }}(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -216,7 +216,7 @@ func (b *{{.SigName}}) vecEvalInt(ctx sessionctx.Context, input *chunk.Chunk, re {{- end }} for j := 0; j < len(args); j++ { - if err := args[j].VecEval{{ .Input.TypeName }}(b.ctx, input, buf1); err != nil { + if err := args[j].VecEval{{ .Input.TypeName }}(ctx, input, buf1); err != nil { return err } {{- if $InputInt }} diff --git a/pkg/expression/generator/string_vec.go b/pkg/expression/generator/string_vec.go index 15a7413c84349..6dfa0f23b4f03 100644 --- a/pkg/expression/generator/string_vec.go +++ b/pkg/expression/generator/string_vec.go @@ -66,7 +66,7 @@ func (b *builtinField{{ .TypeName }}Sig) vecEvalInt(ctx sessionctx.Context, inpu return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEval{{ .TypeName }}(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEval{{ .TypeName }}(ctx, input, buf0); err != nil { return err } buf1, err := b.bufAllocator.get() @@ -83,7 +83,7 @@ func (b *builtinField{{ .TypeName }}Sig) vecEvalInt(ctx sessionctx.Context, inpu i64s[i] = 0 } for i := 1; i < len(b.args); i++ { - if err := b.args[i].VecEval{{ .TypeName }}(b.ctx, input, buf1); err != nil { + if err := b.args[i].VecEval{{ .TypeName }}(ctx, input, buf1); err != nil { return err } {{ if .Fixed }} diff --git a/pkg/expression/generator/time_vec.go b/pkg/expression/generator/time_vec.go index 9380c21d654b8..c552c78bf1781 100644 --- a/pkg/expression/generator/time_vec.go +++ b/pkg/expression/generator/time_vec.go @@ -63,7 +63,7 @@ import ( {{ template "SetNull" . }} continue }{{ end }} - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx arg1Duration, _, err := types.ParseDuration(sc.TypeCtx(), arg1, {{if eq .Output.TypeName "String"}}getFsp4TimeAddSub{{else}}types.GetFsp{{end}}(arg1)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { @@ -92,7 +92,7 @@ func (b *{{.SigName}}) vecEval{{ .Output.TypeName }}(ctx sessionctx.Context, inp n := input.NumRows() {{ $reuse := (and (eq .TypeA.TypeName .Output.TypeName) .TypeA.Fixed) }} {{ if $reuse }} - if err := b.args[0].VecEval{{ .TypeA.TypeName }}(b.ctx, input, result); err != nil { + if err := b.args[0].VecEval{{ .TypeA.TypeName }}(ctx, input, result); err != nil { return err } buf0 := result @@ -102,7 +102,7 @@ func (b *{{.SigName}}) vecEval{{ .Output.TypeName }}(ctx sessionctx.Context, inp return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEval{{ .TypeA.TypeName }}(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEval{{ .TypeA.TypeName }}(ctx, input, buf0); err != nil { return err } {{ end }} @@ -123,7 +123,7 @@ func (b *{{.SigName}}) vecEval{{ .Output.TypeName }}(ctx sessionctx.Context, inp return err } defer b.bufAllocator.put(buf1) - if err := b.args[1].VecEval{{ .TypeB.TypeName }}(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEval{{ .TypeB.TypeName }}(ctx, input, buf1); err != nil { return err } @@ -172,9 +172,9 @@ func (b *{{.SigName}}) vecEval{{ .Output.TypeName }}(ctx sessionctx.Context, inp // calculate {{ if or (eq .SigName "builtinAddDatetimeAndDurationSig") (eq .SigName "builtinSubDatetimeAndDurationSig") }} {{ if eq $.FuncName "AddTime" }} - output, err := arg0.Add(b.ctx.GetSessionVars().StmtCtx.TypeCtx(), types.Duration{Duration: arg1, Fsp: -1}) + output, err := arg0.Add(ctx.GetSessionVars().StmtCtx.TypeCtx(), types.Duration{Duration: arg1, Fsp: -1}) {{ else }} - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx arg1Duration := types.Duration{Duration: arg1, Fsp: -1} output, err := arg0.Add(sc.TypeCtx(), arg1Duration.Neg()) {{ end }} @@ -191,7 +191,7 @@ func (b *{{.SigName}}) vecEval{{ .Output.TypeName }}(ctx sessionctx.Context, inp result.SetNull(i, true) // fixed: true continue } - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx arg1Duration, _, err := types.ParseDuration(sc.TypeCtx(), arg1, types.GetFsp(arg1)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { @@ -232,7 +232,7 @@ func (b *{{.SigName}}) vecEval{{ .Output.TypeName }}(ctx sessionctx.Context, inp } {{ end }} {{ else if or (eq .SigName "builtinAddStringAndDurationSig") (eq .SigName "builtinSubStringAndDurationSig") }} - sc := b.ctx.GetSessionVars().StmtCtx + sc := ctx.GetSessionVars().StmtCtx fsp1 := b.args[1].GetType().GetDecimal() arg1Duration := types.Duration{Duration: arg1, Fsp: fsp1} var output string @@ -359,10 +359,10 @@ var timeDiff = template.Must(template.New("").Parse(` defer b.bufAllocator.put(buf1) {{ end }} {{ define "ArgsVecEval" }} - if err := b.args[0].VecEval{{ .TypeA.TypeName }}(b.ctx, input, buf0); err != nil { + if err := b.args[0].VecEval{{ .TypeA.TypeName }}(ctx, input, buf0); err != nil { return err } - if err := b.args[1].VecEval{{ .TypeB.TypeName }}(b.ctx, input, buf1); err != nil { + if err := b.args[1].VecEval{{ .TypeB.TypeName }}(ctx, input, buf1); err != nil { return err } {{ end }} @@ -416,7 +416,7 @@ func (b *{{.SigName}}) vecEvalDuration(ctx sessionctx.Context, input *chunk.Chun ) {{- end }} {{- if or (or $AIsString $BIsString) (and $AIsTime $BIsTime) }} - stmtCtx := b.ctx.GetSessionVars().StmtCtx + stmtCtx := ctx.GetSessionVars().StmtCtx {{- end }} for i:=0; i beforeWarns { sc.TruncateWarnings(int(beforeWarns)) @@ -326,6 +339,7 @@ func (sf *ScalarFunction) Clone() Expression { RetType: sf.RetType, Function: sf.Function.Clone(), hashcode: sf.hashcode, + ctx: sf.ctx, } c.SetCharsetAndCollation(sf.CharsetAndCollation()) c.SetCoercibility(sf.Coercibility()) @@ -340,6 +354,7 @@ func (sf *ScalarFunction) GetType() *types.FieldType { // Equal implements Expression interface. func (sf *ScalarFunction) Equal(ctx sessionctx.Context, e Expression) bool { + intest.Assert(ctx != nil) fun, ok := e.(*ScalarFunction) if !ok { return false @@ -387,40 +402,46 @@ func (sf *ScalarFunction) Traverse(action TraverseAction) Expression { return action.Transform(sf) } +// EvalWithInnerCtx evaluates expression with inner ctx. +// Deprecated: This function is only used during refactoring, please do not use it in new code. +// TODO: remove this method after refactoring. +func (sf *ScalarFunction) EvalWithInnerCtx(row chunk.Row) (types.Datum, error) { + return sf.Eval(sf.ctx, row) +} + // Eval implements Expression interface. -func (sf *ScalarFunction) Eval(row chunk.Row) (d types.Datum, err error) { +func (sf *ScalarFunction) Eval(ctx sessionctx.Context, row chunk.Row) (d types.Datum, err error) { var ( res interface{} isNull bool ) + intest.AssertNotNil(ctx) switch tp, evalType := sf.GetType(), sf.GetType().EvalType(); evalType { case types.ETInt: var intRes int64 - intRes, isNull, err = sf.EvalInt(sf.GetCtx(), row) + intRes, isNull, err = sf.EvalInt(ctx, row) if mysql.HasUnsignedFlag(tp.GetFlag()) { res = uint64(intRes) } else { res = intRes } case types.ETReal: - res, isNull, err = sf.EvalReal(sf.GetCtx(), row) + res, isNull, err = sf.EvalReal(ctx, row) case types.ETDecimal: - res, isNull, err = sf.EvalDecimal(sf.GetCtx(), row) + res, isNull, err = sf.EvalDecimal(ctx, row) case types.ETDatetime, types.ETTimestamp: - res, isNull, err = sf.EvalTime(sf.GetCtx(), row) + res, isNull, err = sf.EvalTime(ctx, row) case types.ETDuration: - res, isNull, err = sf.EvalDuration(sf.GetCtx(), row) + res, isNull, err = sf.EvalDuration(ctx, row) case types.ETJson: - res, isNull, err = sf.EvalJSON(sf.GetCtx(), row) + res, isNull, err = sf.EvalJSON(ctx, row) case types.ETString: var str string - str, isNull, err = sf.EvalString(sf.GetCtx(), row) + str, isNull, err = sf.EvalString(ctx, row) if !isNull && err == nil && tp.GetType() == mysql.TypeEnum { res, err = types.ParseEnum(tp.GetElems(), str, tp.GetCollate()) - if ctx := sf.GetCtx(); ctx != nil { - if sc := ctx.GetSessionVars().StmtCtx; sc != nil { - err = sc.HandleTruncate(err) - } + if sc := ctx.GetSessionVars().StmtCtx; sc != nil { + err = sc.HandleTruncate(err) } } else { res = str @@ -437,70 +458,71 @@ func (sf *ScalarFunction) Eval(row chunk.Row) (d types.Datum, err error) { // EvalInt implements Expression interface. func (sf *ScalarFunction) EvalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) { - if f, ok := sf.Function.(builtinFuncNew); ok { - return f.evalIntWithCtx(ctx, row) - } + intest.Assert(ctx != nil) return sf.Function.evalInt(ctx, row) } // EvalReal implements Expression interface. func (sf *ScalarFunction) EvalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) { + intest.Assert(ctx != nil) return sf.Function.evalReal(ctx, row) } // EvalDecimal implements Expression interface. func (sf *ScalarFunction) EvalDecimal(ctx sessionctx.Context, row chunk.Row) (*types.MyDecimal, bool, error) { + intest.Assert(ctx != nil) return sf.Function.evalDecimal(ctx, row) } // EvalString implements Expression interface. func (sf *ScalarFunction) EvalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) { + intest.Assert(ctx != nil) return sf.Function.evalString(ctx, row) } // EvalTime implements Expression interface. func (sf *ScalarFunction) EvalTime(ctx sessionctx.Context, row chunk.Row) (types.Time, bool, error) { + intest.Assert(ctx != nil) return sf.Function.evalTime(ctx, row) } // EvalDuration implements Expression interface. func (sf *ScalarFunction) EvalDuration(ctx sessionctx.Context, row chunk.Row) (types.Duration, bool, error) { + intest.Assert(ctx != nil) return sf.Function.evalDuration(ctx, row) } // EvalJSON implements Expression interface. func (sf *ScalarFunction) EvalJSON(ctx sessionctx.Context, row chunk.Row) (types.BinaryJSON, bool, error) { + intest.Assert(ctx != nil) return sf.Function.evalJSON(ctx, row) } // HashCode implements Expression interface. -func (sf *ScalarFunction) HashCode(sc *stmtctx.StatementContext) []byte { - if sc != nil && sc.CanonicalHashCode { - if len(sf.canonicalhashcode) > 0 { - return sf.canonicalhashcode - } - simpleCanonicalizedHashCode(sf, sc) - return sf.canonicalhashcode - } +func (sf *ScalarFunction) HashCode() []byte { if len(sf.hashcode) > 0 { return sf.hashcode } - ReHashCode(sf, sc) + ReHashCode(sf) return sf.hashcode } +// CanonicalHashCode implements Expression interface. +func (sf *ScalarFunction) CanonicalHashCode() []byte { + if len(sf.canonicalhashcode) > 0 { + return sf.canonicalhashcode + } + simpleCanonicalizedHashCode(sf) + return sf.canonicalhashcode +} + // ExpressionsSemanticEqual is used to judge whether two expression tree is semantic equivalent. -func ExpressionsSemanticEqual(ctx sessionctx.Context, expr1, expr2 Expression) bool { - sc := ctx.GetSessionVars().StmtCtx - sc.CanonicalHashCode = true - defer func() { - sc.CanonicalHashCode = false - }() - return bytes.Equal(expr1.HashCode(sc), expr2.HashCode(sc)) +func ExpressionsSemanticEqual(expr1, expr2 Expression) bool { + return bytes.Equal(expr1.CanonicalHashCode(), expr2.CanonicalHashCode()) } // simpleCanonicalizedHashCode is used to judge whether two expression is semantically equal. -func simpleCanonicalizedHashCode(sf *ScalarFunction, sc *stmtctx.StatementContext) { +func simpleCanonicalizedHashCode(sf *ScalarFunction) { if sf.canonicalhashcode != nil { sf.canonicalhashcode = sf.canonicalhashcode[:0] } @@ -508,7 +530,7 @@ func simpleCanonicalizedHashCode(sf *ScalarFunction, sc *stmtctx.StatementContex argsHashCode := make([][]byte, 0, len(sf.GetArgs())) for _, arg := range sf.GetArgs() { - argsHashCode = append(argsHashCode, arg.HashCode(sc)) + argsHashCode = append(argsHashCode, arg.CanonicalHashCode()) } switch sf.FuncName.L { case ast.Plus, ast.Mul, ast.EQ, ast.In, ast.LogicOr, ast.LogicAnd: @@ -558,7 +580,7 @@ func simpleCanonicalizedHashCode(sf *ScalarFunction, sc *stmtctx.StatementContex } else { childArgsHashCode := make([][]byte, 0, len(child.GetArgs())) for _, arg := range child.GetArgs() { - childArgsHashCode = append(childArgsHashCode, arg.HashCode(sc)) + childArgsHashCode = append(childArgsHashCode, arg.CanonicalHashCode()) } switch child.FuncName.L { case ast.GT: // not GT ==> LE ==> use GE and switch args @@ -599,12 +621,12 @@ func simpleCanonicalizedHashCode(sf *ScalarFunction, sc *stmtctx.StatementContex } // ReHashCode is used after we change the argument in place. -func ReHashCode(sf *ScalarFunction, sc *stmtctx.StatementContext) { +func ReHashCode(sf *ScalarFunction) { sf.hashcode = sf.hashcode[:0] sf.hashcode = append(sf.hashcode, scalarFunctionFlag) sf.hashcode = codec.EncodeCompactBytes(sf.hashcode, hack.Slice(sf.FuncName.L)) for _, arg := range sf.GetArgs() { - sf.hashcode = append(sf.hashcode, arg.HashCode(sc)...) + sf.hashcode = append(sf.hashcode, arg.HashCode()...) } // Cast is a special case. The RetType should also be considered as an argument. // Please see `newFunctionImpl()` for detail. @@ -632,15 +654,15 @@ func (sf *ScalarFunction) resolveIndices(schema *Schema) error { } // ResolveIndicesByVirtualExpr implements Expression interface. -func (sf *ScalarFunction) ResolveIndicesByVirtualExpr(schema *Schema) (Expression, bool) { +func (sf *ScalarFunction) ResolveIndicesByVirtualExpr(ctx sessionctx.Context, schema *Schema) (Expression, bool) { newSf := sf.Clone() - isOK := newSf.resolveIndicesByVirtualExpr(schema) + isOK := newSf.resolveIndicesByVirtualExpr(ctx, schema) return newSf, isOK } -func (sf *ScalarFunction) resolveIndicesByVirtualExpr(schema *Schema) bool { +func (sf *ScalarFunction) resolveIndicesByVirtualExpr(ctx sessionctx.Context, schema *Schema) bool { for _, arg := range sf.GetArgs() { - isOk := arg.resolveIndicesByVirtualExpr(schema) + isOk := arg.resolveIndicesByVirtualExpr(ctx, schema) if !isOk { return false } diff --git a/pkg/expression/scalar_function_test.go b/pkg/expression/scalar_function_test.go index 6e2b874f819d9..10f48eadd6063 100644 --- a/pkg/expression/scalar_function_test.go +++ b/pkg/expression/scalar_function_test.go @@ -16,11 +16,9 @@ package expression import ( "testing" - "time" "github.com/pingcap/tidb/pkg/parser/ast" "github.com/pingcap/tidb/pkg/parser/mysql" - "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/chunk" "github.com/pingcap/tidb/pkg/util/mock" @@ -28,7 +26,6 @@ import ( ) func TestExpressionSemanticEqual(t *testing.T) { - ctx := mock.NewContext() a := &Column{ UniqueID: 1, RetType: types.NewFieldType(mysql.TypeDouble), @@ -39,58 +36,58 @@ func TestExpressionSemanticEqual(t *testing.T) { } // order sensitive cases // a < b; b > a - sf1 := newFunction(ast.LT, a, b) - sf2 := newFunction(ast.GT, b, a) - require.True(t, ExpressionsSemanticEqual(ctx, sf1, sf2)) + sf1 := newFunctionWithMockCtx(ast.LT, a, b) + sf2 := newFunctionWithMockCtx(ast.GT, b, a) + require.True(t, ExpressionsSemanticEqual(sf1, sf2)) // a > b; b < a - sf3 := newFunction(ast.GT, a, b) - sf4 := newFunction(ast.LT, b, a) - require.True(t, ExpressionsSemanticEqual(ctx, sf3, sf4)) + sf3 := newFunctionWithMockCtx(ast.GT, a, b) + sf4 := newFunctionWithMockCtx(ast.LT, b, a) + require.True(t, ExpressionsSemanticEqual(sf3, sf4)) // a<=b; b>=a - sf5 := newFunction(ast.LE, a, b) - sf6 := newFunction(ast.GE, b, a) - require.True(t, ExpressionsSemanticEqual(ctx, sf5, sf6)) + sf5 := newFunctionWithMockCtx(ast.LE, a, b) + sf6 := newFunctionWithMockCtx(ast.GE, b, a) + require.True(t, ExpressionsSemanticEqual(sf5, sf6)) // a>=b; b<=a - sf7 := newFunction(ast.GE, a, b) - sf8 := newFunction(ast.LE, b, a) - require.True(t, ExpressionsSemanticEqual(ctx, sf7, sf8)) + sf7 := newFunctionWithMockCtx(ast.GE, a, b) + sf8 := newFunctionWithMockCtx(ast.LE, b, a) + require.True(t, ExpressionsSemanticEqual(sf7, sf8)) // not(a= b - sf9 := newFunction(ast.UnaryNot, sf1) - require.True(t, ExpressionsSemanticEqual(ctx, sf9, sf7)) + sf9 := newFunctionWithMockCtx(ast.UnaryNot, sf1) + require.True(t, ExpressionsSemanticEqual(sf9, sf7)) // a < b; not(a>=b) - sf10 := newFunction(ast.UnaryNot, sf7) - require.True(t, ExpressionsSemanticEqual(ctx, sf1, sf10)) + sf10 := newFunctionWithMockCtx(ast.UnaryNot, sf7) + require.True(t, ExpressionsSemanticEqual(sf1, sf10)) // order insensitive cases // a + b; b + a - p1 := newFunction(ast.Plus, a, b) - p2 := newFunction(ast.Plus, b, a) - require.True(t, ExpressionsSemanticEqual(ctx, p1, p2)) + p1 := newFunctionWithMockCtx(ast.Plus, a, b) + p2 := newFunctionWithMockCtx(ast.Plus, b, a) + require.True(t, ExpressionsSemanticEqual(p1, p2)) // a * b; b * a - m1 := newFunction(ast.Mul, a, b) - m2 := newFunction(ast.Mul, b, a) - require.True(t, ExpressionsSemanticEqual(ctx, m1, m2)) + m1 := newFunctionWithMockCtx(ast.Mul, a, b) + m2 := newFunctionWithMockCtx(ast.Mul, b, a) + require.True(t, ExpressionsSemanticEqual(m1, m2)) // a = b; b = a - e1 := newFunction(ast.EQ, a, b) - e2 := newFunction(ast.EQ, b, a) - require.True(t, ExpressionsSemanticEqual(ctx, e1, e2)) + e1 := newFunctionWithMockCtx(ast.EQ, a, b) + e2 := newFunctionWithMockCtx(ast.EQ, b, a) + require.True(t, ExpressionsSemanticEqual(e1, e2)) // a = b AND b + a; a + b AND b = a - a1 := newFunction(ast.LogicAnd, e1, p2) - a2 := newFunction(ast.LogicAnd, p1, e2) - require.True(t, ExpressionsSemanticEqual(ctx, a1, a2)) + a1 := newFunctionWithMockCtx(ast.LogicAnd, e1, p2) + a2 := newFunctionWithMockCtx(ast.LogicAnd, p1, e2) + require.True(t, ExpressionsSemanticEqual(a1, a2)) // a * b OR a + b; b + a OR b * a - o1 := newFunction(ast.LogicOr, m1, p1) - o2 := newFunction(ast.LogicOr, p2, m2) - require.True(t, ExpressionsSemanticEqual(ctx, o1, o2)) + o1 := newFunctionWithMockCtx(ast.LogicOr, m1, p1) + o2 := newFunctionWithMockCtx(ast.LogicOr, p2, m2) + require.True(t, ExpressionsSemanticEqual(o1, o2)) } func TestScalarFunction(t *testing.T) { @@ -99,15 +96,15 @@ func TestScalarFunction(t *testing.T) { UniqueID: 1, RetType: types.NewFieldType(mysql.TypeDouble), } - sc := stmtctx.NewStmtCtxWithTimeZone(time.Local) - sf := newFunction(ast.LT, a, NewOne()) + + sf := newFunctionWithMockCtx(ast.LT, a, NewOne()) res, err := sf.MarshalJSON() require.NoError(t, err) require.EqualValues(t, []byte{0x22, 0x6c, 0x74, 0x28, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x23, 0x31, 0x2c, 0x20, 0x31, 0x29, 0x22}, res) require.False(t, sf.IsCorrelated()) require.False(t, sf.ConstItem(ctx.GetSessionVars().StmtCtx)) require.True(t, sf.Decorrelate(nil).Equal(ctx, sf)) - require.EqualValues(t, []byte{0x3, 0x4, 0x6c, 0x74, 0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x5, 0xbf, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, sf.HashCode(sc)) + require.EqualValues(t, []byte{0x3, 0x4, 0x6c, 0x74, 0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x5, 0xbf, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, sf.HashCode()) sf = NewValuesFunc(ctx, 0, types.NewFieldType(mysql.TypeLonglong)) newSf, ok := sf.Clone().(*ScalarFunction) @@ -129,8 +126,8 @@ func TestIssue23309(t *testing.T) { a.RetType.SetFlag(a.RetType.GetFlag() | mysql.NotNullFlag) null := NewNull() null.RetType = types.NewFieldType(mysql.TypeNull) - sf, _ := newFunction(ast.NE, a, null).(*ScalarFunction) - v, err := sf.GetArgs()[1].Eval(chunk.Row{}) + sf, _ := newFunctionWithMockCtx(ast.NE, a, null).(*ScalarFunction) + v, err := sf.GetArgs()[1].Eval(mock.NewContext(), chunk.Row{}) require.NoError(t, err) require.True(t, v.IsNull()) require.False(t, mysql.HasNotNullFlag(sf.GetArgs()[1].GetType().GetFlag())) @@ -142,8 +139,8 @@ func TestScalarFuncs2Exprs(t *testing.T) { UniqueID: 1, RetType: types.NewFieldType(mysql.TypeDouble), } - sf0, _ := newFunction(ast.LT, a, NewZero()).(*ScalarFunction) - sf1, _ := newFunction(ast.LT, a, NewOne()).(*ScalarFunction) + sf0, _ := newFunctionWithMockCtx(ast.LT, a, NewZero()).(*ScalarFunction) + sf1, _ := newFunctionWithMockCtx(ast.LT, a, NewOne()).(*ScalarFunction) funcs := []*ScalarFunction{sf0, sf1} exprs := ScalarFuncs2Exprs(funcs) diff --git a/pkg/expression/schema.go b/pkg/expression/schema.go index 01c738d1cee77..babb29ac6379c 100644 --- a/pkg/expression/schema.go +++ b/pkg/expression/schema.go @@ -19,6 +19,7 @@ import ( "unsafe" "github.com/pingcap/tidb/pkg/parser/model" + "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/util/size" ) @@ -110,7 +111,7 @@ func (s *Schema) RetrieveColumn(col *Column) *Column { // 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].Equal(nil, col) { + if len(key) == 1 && key[0].EqualColumn(col) { return true } } @@ -120,7 +121,7 @@ func (s *Schema) IsUniqueKey(col *Column) bool { // 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].Equal(nil, col) { + if len(key) == 1 && key[0].EqualColumn(col) { return true } } @@ -268,7 +269,7 @@ func MergeSchema(lSchema, rSchema *Schema) *Schema { } // GetUsedList shows whether each column in schema is contained in usedCols. -func GetUsedList(usedCols []*Column, schema *Schema) []bool { +func GetUsedList(ctx sessionctx.Context, usedCols []*Column, schema *Schema) []bool { tmpSchema := NewSchema(usedCols...) used := make([]bool, schema.Len()) for i, col := range schema.Columns { @@ -278,7 +279,7 @@ func GetUsedList(usedCols []*Column, schema *Schema) []bool { // When cols are a generated expression col, compare them in terms of virtual expr. if expr, ok := col.VirtualExpr.(*ScalarFunction); ok && used[i] { for j, colToCompare := range schema.Columns { - if !used[j] && j != i && (expr).Equal(nil, colToCompare.VirtualExpr) && col.RetType.Equal(colToCompare.RetType) { + if !used[j] && j != i && (expr).Equal(ctx, colToCompare.VirtualExpr) && col.RetType.Equal(colToCompare.RetType) { used[j] = true } } diff --git a/pkg/expression/schema_test.go b/pkg/expression/schema_test.go index 6ee4dc35b1853..349fb71a2f6c2 100644 --- a/pkg/expression/schema_test.go +++ b/pkg/expression/schema_test.go @@ -18,6 +18,7 @@ import ( "fmt" "testing" + "github.com/pingcap/tidb/pkg/util/mock" "github.com/stretchr/testify/require" ) @@ -151,6 +152,6 @@ func TestGetUsedList(t *testing.T) { usedCols = append(usedCols, schema.Columns[1]) usedCols = append(usedCols, schema.Columns[3]) - used := GetUsedList(usedCols, schema) + used := GetUsedList(mock.NewContext(), usedCols, schema) require.Equal(t, []bool{false, true, false, true, false}, used) } diff --git a/pkg/expression/test/multivaluedindex/BUILD.bazel b/pkg/expression/test/multivaluedindex/BUILD.bazel index 1c6ed8490d878..98443c141a278 100644 --- a/pkg/expression/test/multivaluedindex/BUILD.bazel +++ b/pkg/expression/test/multivaluedindex/BUILD.bazel @@ -8,7 +8,7 @@ go_test( "multi_valued_index_test.go", ], flaky = True, - shard_count = 6, + shard_count = 4, deps = [ "//pkg/config", "//pkg/errno", diff --git a/pkg/expression/test/multivaluedindex/multi_valued_index_test.go b/pkg/expression/test/multivaluedindex/multi_valued_index_test.go index b08a469d2b662..58101dcc25ddb 100644 --- a/pkg/expression/test/multivaluedindex/multi_valued_index_test.go +++ b/pkg/expression/test/multivaluedindex/multi_valued_index_test.go @@ -16,7 +16,6 @@ package multivaluedindex import ( "context" - "fmt" "testing" "github.com/pingcap/tidb/pkg/errno" @@ -31,210 +30,6 @@ import ( "github.com/stretchr/testify/require" ) -func TestMultiValuedIndexDDL(t *testing.T) { - store := testkit.CreateMockStore(t) - - tk := testkit.NewTestKit(t, store) - tk.MustExec("USE test;") - - tk.MustExec("create table t(a json);") - tk.MustGetErrCode("select cast(a as signed array) from t", errno.ErrNotSupportedYet) - tk.MustGetErrCode("select json_extract(cast(a as signed array), '$[0]') from t", errno.ErrNotSupportedYet) - tk.MustGetErrCode("select * from t where cast(a as signed array)", errno.ErrNotSupportedYet) - tk.MustGetErrCode("select cast('[1,2,3]' as unsigned array);", errno.ErrNotSupportedYet) - - tk.MustExec("drop table t") - tk.MustGetErrCode("CREATE TABLE t(x INT, KEY k ((1 AND CAST(JSON_ARRAY(x) AS UNSIGNED ARRAY))));", errno.ErrNotSupportedYet) - tk.MustGetErrCode("CREATE TABLE t1 (f1 json, key mvi((cast(cast(f1 as unsigned array) as unsigned array))));", errno.ErrNotSupportedYet) - tk.MustGetErrCode("CREATE TABLE t1 (f1 json, primary key mvi((cast(cast(f1 as unsigned array) as unsigned array))));", errno.ErrNotSupportedYet) - tk.MustGetErrCode("CREATE TABLE t1 (f1 json, key mvi((cast(f1->>'$[*]' as unsigned array))));", errno.ErrInvalidTypeForJSON) - tk.MustGetErrCode("CREATE TABLE t1 (f1 json, key mvi((cast(f1->'$[*]' as year array))));", errno.ErrNotSupportedYet) - tk.MustGetErrCode("CREATE TABLE t1 (f1 json, key mvi((cast(f1->'$[*]' as json array))));", errno.ErrNotSupportedYet) - tk.MustGetErrCode("CREATE TABLE t1 (f1 json, key mvi((cast(f1->'$[*]' as char(10) charset gbk array))));", errno.ErrNotSupportedYet) - tk.MustGetErrCode("create table t(j json, gc json as ((concat(cast(j->'$[*]' as unsigned array),\"x\"))));", errno.ErrNotSupportedYet) - tk.MustGetErrCode("create table t(j json, gc json as (cast(j->'$[*]' as unsigned array)));", errno.ErrNotSupportedYet) - tk.MustGetErrCode(`create table t1(j json, key i1((cast(j->"$" as char array))));`, errno.ErrNotSupportedYet) - tk.MustGetErrCode(`create table t1(j json, key i1((cast(j->"$" as binary array))));`, errno.ErrNotSupportedYet) - tk.MustGetErrCode(`create table t1(j json, key i1((cast(j->"$" as float array))));`, errno.ErrNotSupportedYet) - tk.MustGetErrCode(`create table t1(j json, key i1((cast(j->"$" as decimal(4,2) array))));`, errno.ErrNotSupportedYet) - tk.MustGetErrCode("create view v as select cast('[1,2,3]' as unsigned array);", errno.ErrNotSupportedYet) - tk.MustExec("create table t(a json, index idx((cast(a as signed array))));") - tk.MustExec("drop table t;") - tk.MustExec("create table t(a json, index idx(((cast(a as signed array)))))") - tk.MustExec("drop table t;") - tk.MustExec(`create table t(j json, key i1((cast(j->"$" as double array))));`) - - tk.MustExec("drop table t") - tk.MustGetErrCode("create table t(a json, b int, index idx(b, (cast(a as signed array)), (cast(a as signed array))));", errno.ErrNotSupportedYet) - tk.MustExec("create table t(a json, b int);") - tk.MustGetErrCode("create index idx on t (b, (cast(a as signed array)), (cast(a as signed array)))", errno.ErrNotSupportedYet) - tk.MustGetErrCode("alter table t add index idx(b, (cast(a as signed array)), (cast(a as signed array)))", errno.ErrNotSupportedYet) - tk.MustExec("create index idx1 on t (b, (cast(a as signed array)))") - tk.MustExec("alter table t add index idx2(b, (cast(a as signed array)))") - - tk.MustExec("drop table t") - tk.MustExec("create table t(a json, b int, index idx3(b, (cast(a as signed array))));") - tk.MustExec("drop table t") - tk.MustExec("set names gbk") - tk.MustExec("create table t(a json, b int, index idx3(b, (cast(a as char(10) array))));") - - tk.MustExec("CREATE TABLE users (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, doc JSON);") - tk.MustExecToErr("CREATE TABLE t (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, doc JSON, FOREIGN KEY fk_user_id ((cast(doc->'$[*]' as signed array))) REFERENCES users(id));") -} - -func TestMultiValuedIndexDML(t *testing.T) { - store := testkit.CreateMockStore(t) - - tk := testkit.NewTestKit(t, store) - tk.MustExec("USE test;") - - mode := []string{`''`, `default`} - - for _, m := range mode { - tk.MustExec(fmt.Sprintf("set @@sql_mode=%s", m)) - - tk.MustExec(`drop table if exists t;`) - tk.MustExec(`create table t(a json, index idx((cast(a as unsigned array))));`) - tk.MustExec(`insert into t values ('[1,2,3]');`) - tk.MustGetErrCode(`insert into t values ('[-1]');`, errno.ErrDataOutOfRangeFunctionalIndex) - tk.MustGetErrCode(`insert into t values ('["1"]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('["a"]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('["汉字"]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('[1.2]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('[1.0]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values (json_array(cast("11:00:00" as time)));`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values (json_array(cast("2022-02-02" as date)));`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime)));`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values (json_array(cast('{"a":1}' as json)));`, errno.ErrInvalidJSONValueForFuncIndex) - - tk.MustExec(`drop table if exists t;`) - tk.MustExec(`create table t(a json, index idx((cast(a as signed array))));`) - tk.MustExec(`insert into t values ('[1,2,3]');`) - tk.MustExec(`insert into t values ('[-1]');`) - tk.MustGetErrCode(`insert into t values ('["1"]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('["a"]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('["汉字"]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('[1.2]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('[1.0]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values (json_array(cast("11:00:00" as time)));`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values (json_array(cast("2022-02-02" as date)));`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime)));`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values (json_array(cast('{"a":1}' as json)));`, errno.ErrInvalidJSONValueForFuncIndex) - - tk.MustExec(`drop table if exists t;`) - tk.MustExec(`create table t(a json, index idx((cast(a as char(1) array))));`) - tk.MustGetErrCode(`insert into t values ('[1,2,3]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('[-1]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustExec(`insert into t values ('["1"]');`) - tk.MustExec(`insert into t values ('["a"]');`) - tk.MustGetErrCode(`insert into t values ('["汉字"]');`, errno.ErrFunctionalIndexDataIsTooLong) - tk.MustGetErrCode(`insert into t values ('[1.2]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('[1.0]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values (json_array(cast("11:00:00" as time)));`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values (json_array(cast("2022-02-02" as date)));`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime)));`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values (json_array(cast('{"a":1}' as json)));`, errno.ErrInvalidJSONValueForFuncIndex) - - tk.MustExec(`drop table if exists t;`) - tk.MustExec(`create table t(a json, index idx((cast(a as char(2) array))));`) - tk.MustGetErrCode(`insert into t values ('[1,2,3]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('[-1]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustExec(`insert into t values ('["1"]');`) - tk.MustExec(`insert into t values ('["a"]');`) - tk.MustExec(`insert into t values ('["汉字"]');`) - tk.MustGetErrCode(`insert into t values ('[1.2]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('[1.0]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values (json_array(cast("11:00:00" as time)));`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values (json_array(cast("2022-02-02" as date)));`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime)));`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values (json_array(cast('{"a":1}' as json)));`, errno.ErrInvalidJSONValueForFuncIndex) - - tk.MustExec(`drop table if exists t;`) - tk.MustExec(`create table t(a json, index idx((cast(a as binary(1) array))));`) - tk.MustGetErrCode(`insert into t values ('[1,2,3]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('[-1]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustExec(`insert into t values ('["1"]');`) - tk.MustExec(`insert into t values ('["a"]');`) - tk.MustGetErrCode(`insert into t values ('["汉字"]');`, errno.ErrFunctionalIndexDataIsTooLong) - tk.MustGetErrCode(`insert into t values ('[1.2]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('[1.0]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values (json_array(cast("11:00:00" as time)));`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values (json_array(cast("2022-02-02" as date)));`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime)));`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values (json_array(cast('{"a":1}' as json)));`, errno.ErrInvalidJSONValueForFuncIndex) - - tk.MustExec(`drop table if exists t;`) - tk.MustExec(`create table t(a json, index idx((cast(a as binary(2) array))));`) - tk.MustGetErrCode(`insert into t values ('[1,2,3]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('[-1]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustExec(`insert into t values ('["1"]');`) - tk.MustExec(`insert into t values ('["a"]');`) - tk.MustGetErrCode(`insert into t values ('["汉字"]');`, errno.ErrFunctionalIndexDataIsTooLong) - tk.MustGetErrCode(`insert into t values ('[1.2]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('[1.0]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values (json_array(cast("11:00:00" as time)));`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values (json_array(cast("2022-02-02" as date)));`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime)));`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values (json_array(cast('{"a":1}' as json)));`, errno.ErrInvalidJSONValueForFuncIndex) - - tk.MustExec(`drop table if exists t;`) - tk.MustExec(`create table t(a json, index idx((cast(a as date array))));`) - tk.MustGetErrCode(`insert into t values ('[1,2,3]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('[-1]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('["1"]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('["a"]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('["汉字"]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('[1.2]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('[1.0]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values (json_array(cast("11:00:00" as time)));`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustExec(`insert into t values (json_array(cast("2022-02-02" as date)));`) - tk.MustGetErrCode(`insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime)));`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values (json_array(cast('{"a":1}' as json)));`, errno.ErrInvalidJSONValueForFuncIndex) - - tk.MustExec(`drop table if exists t;`) - tk.MustExec(`create table t(a json, index idx((cast(a as time array))));`) - tk.MustGetErrCode(`insert into t values ('[1,2,3]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('[-1]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('["1"]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('["a"]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('["汉字"]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('[1.2]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('[1.0]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustExec(`insert into t values (json_array(cast("11:00:00" as time)));`) - tk.MustGetErrCode(`insert into t values (json_array(cast("2022-02-02" as date)));`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime)));`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values (json_array(cast('{"a":1}' as json)));`, errno.ErrInvalidJSONValueForFuncIndex) - - tk.MustExec(`drop table if exists t;`) - tk.MustExec(`create table t(a json, index idx((cast(a as datetime array))));`) - tk.MustGetErrCode(`insert into t values ('[1,2,3]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('[-1]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('["1"]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('["a"]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('["汉字"]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('[1.2]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('[1.0]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values (json_array(cast("11:00:00" as time)));`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values (json_array(cast("2022-02-02" as date)));`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustExec(`insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime)));`) - tk.MustGetErrCode(`insert into t values (json_array(cast('{"a":1}' as json)));`, errno.ErrInvalidJSONValueForFuncIndex) - - tk.MustExec(`drop table if exists t;`) - tk.MustExec(`create table t(a json, index idx((cast(a as double array))));`) - tk.MustExec(`insert into t values ('[1,2,3]');`) - tk.MustExec(`insert into t values ('[-1]');`) - tk.MustGetErrCode(`insert into t values ('["1"]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('["a"]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values ('["汉字"]');`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustExec(`insert into t values ('[1.2]');`) - tk.MustExec(`insert into t values ('[1.0]');`) - tk.MustGetErrCode(`insert into t values (json_array(cast("11:00:00" as time)));`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values (json_array(cast("2022-02-02" as date)));`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime)));`, errno.ErrInvalidJSONValueForFuncIndex) - tk.MustGetErrCode(`insert into t values (json_array(cast('{"a":1}' as json)));`, errno.ErrInvalidJSONValueForFuncIndex) - } -} - func TestWriteMultiValuedIndex(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) tk := testkit.NewTestKit(t, store) diff --git a/pkg/expression/util.go b/pkg/expression/util.go index 2d41fb83927ad..0016bfaa7c0d2 100644 --- a/pkg/expression/util.go +++ b/pkg/expression/util.go @@ -409,8 +409,8 @@ func SetExprColumnInOperand(expr Expression) Expression { // ColumnSubstitute substitutes the columns in filter to expressions in select fields. // e.g. select * from (select b as a from t) k where a < 10 => select * from (select b as a from t where b < 10) k. -func ColumnSubstitute(expr Expression, schema *Schema, newExprs []Expression) Expression { - _, _, resExpr := ColumnSubstituteImpl(expr, schema, newExprs, false) +func ColumnSubstitute(ctx sessionctx.Context, expr Expression, schema *Schema, newExprs []Expression) Expression { + _, _, resExpr := ColumnSubstituteImpl(ctx, expr, schema, newExprs, false) return resExpr } @@ -419,8 +419,8 @@ func ColumnSubstitute(expr Expression, schema *Schema, newExprs []Expression) Ex // // 1: substitute them all once find col in schema. // 2: nothing in expr can be substituted. -func ColumnSubstituteAll(expr Expression, schema *Schema, newExprs []Expression) (bool, Expression) { - _, hasFail, resExpr := ColumnSubstituteImpl(expr, schema, newExprs, true) +func ColumnSubstituteAll(ctx sessionctx.Context, expr Expression, schema *Schema, newExprs []Expression) (bool, Expression) { + _, hasFail, resExpr := ColumnSubstituteImpl(ctx, expr, schema, newExprs, true) return hasFail, resExpr } @@ -429,7 +429,7 @@ func ColumnSubstituteAll(expr Expression, schema *Schema, newExprs []Expression) // @return bool means whether the expr has changed. // @return bool means whether the expr should change (has the dependency in schema, while the corresponding expr has some compatibility), but finally fallback. // @return Expression, the original expr or the changed expr, it depends on the first @return bool. -func ColumnSubstituteImpl(expr Expression, schema *Schema, newExprs []Expression, fail1Return bool) (bool, bool, Expression) { +func ColumnSubstituteImpl(ctx sessionctx.Context, expr Expression, schema *Schema, newExprs []Expression, fail1Return bool) (bool, bool, Expression) { switch v := expr.(type) { case *Column: id := schema.ColumnIndex(v) @@ -446,7 +446,7 @@ func ColumnSubstituteImpl(expr Expression, schema *Schema, newExprs []Expression hasFail := false if v.FuncName.L == ast.Cast || v.FuncName.L == ast.Grouping { var newArg Expression - substituted, hasFail, newArg = ColumnSubstituteImpl(v.GetArgs()[0], schema, newExprs, fail1Return) + substituted, hasFail, newArg = ColumnSubstituteImpl(ctx, v.GetArgs()[0], schema, newExprs, fail1Return) if fail1Return && hasFail { return substituted, hasFail, v } @@ -454,7 +454,7 @@ func ColumnSubstituteImpl(expr Expression, schema *Schema, newExprs []Expression flag := v.RetType.GetFlag() var e Expression if v.FuncName.L == ast.Cast { - e = BuildCastFunction(v.GetCtx(), newArg, v.RetType) + e = BuildCastFunction(ctx, newArg, v.RetType) } else { // for grouping function recreation, use clone (meta included) instead of newFunction e = v.Clone() @@ -469,7 +469,7 @@ func ColumnSubstituteImpl(expr Expression, schema *Schema, newExprs []Expression // cowExprRef is a copy-on-write util, args array allocation happens only // when expr in args is changed refExprArr := cowExprRef{v.GetArgs(), nil} - oldCollEt, err := CheckAndDeriveCollationFromExprs(v.GetCtx(), v.FuncName.L, v.RetType.EvalType(), v.GetArgs()...) + oldCollEt, err := CheckAndDeriveCollationFromExprs(ctx, v.FuncName.L, v.RetType.EvalType(), v.GetArgs()...) if err != nil { logutil.BgLogger().Error("Unexpected error happened during ColumnSubstitution", zap.Stack("stack")) return false, false, v @@ -479,7 +479,7 @@ func ColumnSubstituteImpl(expr Expression, schema *Schema, newExprs []Expression tmpArgForCollCheck = make([]Expression, len(v.GetArgs())) } for idx, arg := range v.GetArgs() { - changed, failed, newFuncExpr := ColumnSubstituteImpl(arg, schema, newExprs, fail1Return) + changed, failed, newFuncExpr := ColumnSubstituteImpl(ctx, arg, schema, newExprs, fail1Return) if fail1Return && failed { return changed, failed, v } @@ -489,7 +489,7 @@ func ColumnSubstituteImpl(expr Expression, schema *Schema, newExprs []Expression changed = false copy(tmpArgForCollCheck, refExprArr.Result()) tmpArgForCollCheck[idx] = newFuncExpr - newCollEt, err := CheckAndDeriveCollationFromExprs(v.GetCtx(), v.FuncName.L, v.RetType.EvalType(), tmpArgForCollCheck...) + newCollEt, err := CheckAndDeriveCollationFromExprs(ctx, v.FuncName.L, v.RetType.EvalType(), tmpArgForCollCheck...) if err != nil { logutil.BgLogger().Error("Unexpected error happened during ColumnSubstitution", zap.Stack("stack")) return false, failed, v @@ -518,7 +518,7 @@ func ColumnSubstituteImpl(expr Expression, schema *Schema, newExprs []Expression } } if substituted { - return true, hasFail, NewFunctionInternal(v.GetCtx(), v.FuncName.L, v.RetType, refExprArr.Result()...) + return true, hasFail, NewFunctionInternal(ctx, v.FuncName.L, v.RetType, refExprArr.Result()...) } } return false, false, expr @@ -585,13 +585,13 @@ Loop: // SubstituteCorCol2Constant will substitute correlated column to constant value which it contains. // If the args of one scalar function are all constant, we will substitute it to constant. -func SubstituteCorCol2Constant(expr Expression) (Expression, error) { +func SubstituteCorCol2Constant(ctx sessionctx.Context, expr Expression) (Expression, error) { switch x := expr.(type) { case *ScalarFunction: allConstant := true newArgs := make([]Expression, 0, len(x.GetArgs())) for _, arg := range x.GetArgs() { - newArg, err := SubstituteCorCol2Constant(arg) + newArg, err := SubstituteCorCol2Constant(ctx, arg) if err != nil { return nil, err } @@ -600,7 +600,7 @@ func SubstituteCorCol2Constant(expr Expression) (Expression, error) { allConstant = allConstant && ok } if allConstant { - val, err := x.Eval(chunk.Row{}) + val, err := x.Eval(ctx, chunk.Row{}) if err != nil { return nil, err } @@ -611,19 +611,19 @@ func SubstituteCorCol2Constant(expr Expression) (Expression, error) { newSf Expression ) if x.FuncName.L == ast.Cast { - newSf = BuildCastFunction(x.GetCtx(), newArgs[0], x.RetType) + newSf = BuildCastFunction(ctx, newArgs[0], x.RetType) } else if x.FuncName.L == ast.Grouping { newSf = x.Clone() newSf.(*ScalarFunction).GetArgs()[0] = newArgs[0] } else { - newSf, err = NewFunction(x.GetCtx(), x.FuncName.L, x.GetType(), newArgs...) + newSf, err = NewFunction(ctx, x.FuncName.L, x.GetType(), newArgs...) } return newSf, err case *CorrelatedColumn: return &Constant{Value: *x.Data, RetType: x.GetType()}, nil case *Constant: if x.DeferredExpr != nil { - newExpr := FoldConstant(x) + newExpr := FoldConstant(ctx, x) return &Constant{Value: newExpr.(*Constant).Value, RetType: x.GetType()}, nil } } @@ -879,20 +879,20 @@ func pushNotAcrossExpr(ctx sessionctx.Context, expr Expression, not bool) (_ Exp return expr, false } var childExpr Expression - childExpr, changed = pushNotAcrossExpr(f.GetCtx(), child, !not) + childExpr, changed = pushNotAcrossExpr(ctx, child, !not) if !changed && !not { return expr, false } return childExpr, true case ast.LT, ast.GE, ast.GT, ast.LE, ast.EQ, ast.NE: if not { - return NewFunctionInternal(f.GetCtx(), oppositeOp[f.FuncName.L], f.GetType(), f.GetArgs()...), true + return NewFunctionInternal(ctx, oppositeOp[f.FuncName.L], f.GetType(), f.GetArgs()...), true } - newArgs, changed := pushNotAcrossArgs(f.GetCtx(), f.GetArgs(), false) + newArgs, changed := pushNotAcrossArgs(ctx, f.GetArgs(), false) if !changed { return f, false } - return NewFunctionInternal(f.GetCtx(), f.FuncName.L, f.GetType(), newArgs...), true + return NewFunctionInternal(ctx, f.FuncName.L, f.GetType(), newArgs...), true case ast.LogicAnd, ast.LogicOr: var ( newArgs []Expression @@ -900,16 +900,16 @@ func pushNotAcrossExpr(ctx sessionctx.Context, expr Expression, not bool) (_ Exp ) funcName := f.FuncName.L if not { - newArgs, _ = pushNotAcrossArgs(f.GetCtx(), f.GetArgs(), true) + newArgs, _ = pushNotAcrossArgs(ctx, f.GetArgs(), true) funcName = oppositeOp[f.FuncName.L] changed = true } else { - newArgs, changed = pushNotAcrossArgs(f.GetCtx(), f.GetArgs(), false) + newArgs, changed = pushNotAcrossArgs(ctx, f.GetArgs(), false) } if !changed { return f, false } - return NewFunctionInternal(f.GetCtx(), funcName, f.GetType(), newArgs...), true + return NewFunctionInternal(ctx, funcName, f.GetType(), newArgs...), true } } if not { @@ -1016,14 +1016,13 @@ func ExtractFiltersFromDNFs(ctx sessionctx.Context, conditions []Expression) []E // extractFiltersFromDNF extracts the same condition that occurs in every DNF item and remove them from dnf leaves. func extractFiltersFromDNF(ctx sessionctx.Context, dnfFunc *ScalarFunction) ([]Expression, Expression) { dnfItems := FlattenDNFConditions(dnfFunc) - sc := ctx.GetSessionVars().StmtCtx codeMap := make(map[string]int) hashcode2Expr := make(map[string]Expression) for i, dnfItem := range dnfItems { innerMap := make(map[string]struct{}) cnfItems := SplitCNFItems(dnfItem) for _, cnfItem := range cnfItems { - code := cnfItem.HashCode(sc) + code := cnfItem.HashCode() if i == 0 { codeMap[string(code)] = 1 hashcode2Expr[string(code)] = cnfItem @@ -1053,7 +1052,7 @@ func extractFiltersFromDNF(ctx sessionctx.Context, dnfFunc *ScalarFunction) ([]E cnfItems := SplitCNFItems(dnfItem) newCNFItems := make([]Expression, 0, len(cnfItems)) for _, cnfItem := range cnfItems { - code := cnfItem.HashCode(sc) + code := cnfItem.HashCode() _, ok := hashcode2Expr[string(code)] if !ok { newCNFItems = append(newCNFItems, cnfItem) @@ -1082,12 +1081,11 @@ func extractFiltersFromDNF(ctx sessionctx.Context, dnfFunc *ScalarFunction) ([]E // the original expression must satisfy the derived expression. Return nil when the derived expression is universal set. // A running example is: for schema of t1, `(t1.a=1 and t2.a=1) or (t1.a=2 and t2.a=2)` would be derived as // `t1.a=1 or t1.a=2`, while `t1.a=1 or t2.a=1` would get nil. -func DeriveRelaxedFiltersFromDNF(expr Expression, schema *Schema) Expression { +func DeriveRelaxedFiltersFromDNF(ctx sessionctx.Context, expr Expression, schema *Schema) Expression { sf, ok := expr.(*ScalarFunction) if !ok || sf.FuncName.L != ast.LogicOr { return nil } - ctx := sf.GetCtx() dnfItems := FlattenDNFConditions(sf) newDNFItems := make([]Expression, 0, len(dnfItems)) for _, dnfItem := range dnfItems { @@ -1095,7 +1093,7 @@ func DeriveRelaxedFiltersFromDNF(expr Expression, schema *Schema) Expression { newCNFItems := make([]Expression, 0, len(cnfItems)) for _, cnfItem := range cnfItems { if itemSF, ok := cnfItem.(*ScalarFunction); ok && itemSF.FuncName.L == ast.LogicOr { - relaxedCNFItem := DeriveRelaxedFiltersFromDNF(cnfItem, schema) + relaxedCNFItem := DeriveRelaxedFiltersFromDNF(ctx, cnfItem, schema) if relaxedCNFItem != nil { newCNFItems = append(newCNFItems, relaxedCNFItem) } @@ -1379,12 +1377,11 @@ func IsInmutableExpr(expr Expression) bool { // RemoveDupExprs removes identical exprs. Not that if expr contains functions which // are mutable or have side effects, we cannot remove it even if it has duplicates; // if the plan is going to be cached, we cannot remove expressions containing `?` neither. -func RemoveDupExprs(ctx sessionctx.Context, exprs []Expression) []Expression { +func RemoveDupExprs(exprs []Expression) []Expression { res := make([]Expression, 0, len(exprs)) exists := make(map[string]struct{}, len(exprs)) - sc := ctx.GetSessionVars().StmtCtx for _, expr := range exprs { - key := string(expr.HashCode(sc)) + key := string(expr.HashCode()) if _, ok := exists[key]; !ok || IsMutableEffectsExpr(expr) { res = append(res, expr) exists[key] = struct{}{} @@ -1394,10 +1391,10 @@ func RemoveDupExprs(ctx sessionctx.Context, exprs []Expression) []Expression { } // GetUint64FromConstant gets a uint64 from constant expression. -func GetUint64FromConstant(expr Expression) (uint64, bool, bool) { +func GetUint64FromConstant(ctx sessionctx.Context, expr Expression) (uint64, bool, bool) { con, ok := expr.(*Constant) if !ok { - logutil.BgLogger().Warn("not a constant expression", zap.String("expression", expr.ExplainInfo())) + logutil.BgLogger().Warn("not a constant expression", zap.String("expression", expr.ExplainInfo(ctx))) return 0, false, false } dt := con.Value @@ -1405,7 +1402,7 @@ func GetUint64FromConstant(expr Expression) (uint64, bool, bool) { dt = con.ParamMarker.GetUserVar() } else if con.DeferredExpr != nil { var err error - dt, err = con.DeferredExpr.Eval(chunk.Row{}) + dt, err = con.DeferredExpr.Eval(ctx, chunk.Row{}) if err != nil { logutil.BgLogger().Warn("eval deferred expr failed", zap.Error(err)) return 0, false, false @@ -1503,7 +1500,7 @@ func RemoveMutableConst(ctx sessionctx.Context, exprs []Expression) (err error) v.ParamMarker = nil if v.DeferredExpr != nil { // evaluate and update v.Value to convert v to a complete immutable constant. // TODO: remove or hide DefferedExpr since it's too dangerous (hard to be consistent with v.Value all the time). - v.Value, err = v.DeferredExpr.Eval(chunk.Row{}) + v.Value, err = v.DeferredExpr.Eval(ctx, chunk.Row{}) if err != nil { return err } diff --git a/pkg/expression/util_test.go b/pkg/expression/util_test.go index ceffcdb91201e..af485be861f99 100644 --- a/pkg/expression/util_test.go +++ b/pkg/expression/util_test.go @@ -154,37 +154,37 @@ func TestClone(t *testing.T) { } func TestGetUint64FromConstant(t *testing.T) { + ctx := mock.NewContext() con := &Constant{ Value: types.NewDatum(nil), } - _, isNull, ok := GetUint64FromConstant(con) + _, isNull, ok := GetUint64FromConstant(ctx, con) require.True(t, ok) require.True(t, isNull) con = &Constant{ Value: types.NewIntDatum(-1), } - _, _, ok = GetUint64FromConstant(con) + _, _, ok = GetUint64FromConstant(ctx, con) require.False(t, ok) con.Value = types.NewIntDatum(1) - num, isNull, ok := GetUint64FromConstant(con) + num, isNull, ok := GetUint64FromConstant(ctx, con) require.True(t, ok) require.False(t, isNull) require.Equal(t, uint64(1), num) con.Value = types.NewUintDatum(1) - num, _, _ = GetUint64FromConstant(con) + num, _, _ = GetUint64FromConstant(ctx, con) require.Equal(t, uint64(1), num) con.DeferredExpr = &Constant{Value: types.NewIntDatum(1)} - num, _, _ = GetUint64FromConstant(con) + num, _, _ = GetUint64FromConstant(ctx, con) require.Equal(t, uint64(1), num) - ctx := mock.NewContext() ctx.GetSessionVars().PlanCacheParams.Append(types.NewUintDatum(100)) con.ParamMarker = &ParamMarker{order: 0, ctx: ctx} - num, _, _ = GetUint64FromConstant(con) + num, _, _ = GetUint64FromConstant(ctx, con) require.Equal(t, uint64(100), num) } @@ -192,18 +192,20 @@ func TestSetExprColumnInOperand(t *testing.T) { col := &Column{RetType: newIntFieldType()} require.True(t, SetExprColumnInOperand(col).(*Column).InOperand) - f, err := funcs[ast.Abs].getFunction(mock.NewContext(), []Expression{col}) + ctx := mock.NewContext() + f, err := funcs[ast.Abs].getFunction(ctx, []Expression{col}) require.NoError(t, err) - fun := &ScalarFunction{Function: f} + fun := &ScalarFunction{Function: f, ctx: ctx} SetExprColumnInOperand(fun) require.True(t, f.getArgs()[0].(*Column).InOperand) } func TestPopRowFirstArg(t *testing.T) { + ctx := mock.NewContext() c1, c2, c3 := &Column{RetType: newIntFieldType()}, &Column{RetType: newIntFieldType()}, &Column{RetType: newIntFieldType()} - f, err := funcs[ast.RowFunc].getFunction(mock.NewContext(), []Expression{c1, c2, c3}) + f, err := funcs[ast.RowFunc].getFunction(ctx, []Expression{c1, c2, c3}) require.NoError(t, err) - fun := &ScalarFunction{Function: f, FuncName: model.NewCIStr(ast.RowFunc), RetType: newIntFieldType()} + fun := &ScalarFunction{Function: f, FuncName: model.NewCIStr(ast.RowFunc), RetType: newIntFieldType(), ctx: ctx} fun2, err := PopRowFirstArg(mock.NewContext(), fun) require.NoError(t, err) require.Len(t, fun2.(*ScalarFunction).GetArgs(), 2) @@ -243,21 +245,21 @@ func TestSubstituteCorCol2Constant(t *testing.T) { corCol2 := &CorrelatedColumn{Data: &NewOne().Value} corCol2.RetType = types.NewFieldType(mysql.TypeLonglong) cast := BuildCastFunction(ctx, corCol1, types.NewFieldType(mysql.TypeLonglong)) - plus := newFunction(ast.Plus, cast, corCol2) - plus2 := newFunction(ast.Plus, plus, NewOne()) + plus := newFunctionWithMockCtx(ast.Plus, cast, corCol2) + plus2 := newFunctionWithMockCtx(ast.Plus, plus, NewOne()) ans1 := &Constant{Value: types.NewIntDatum(3), RetType: types.NewFieldType(mysql.TypeLonglong)} - ret, err := SubstituteCorCol2Constant(plus2) + ret, err := SubstituteCorCol2Constant(ctx, plus2) require.NoError(t, err) require.True(t, ret.Equal(ctx, ans1)) col1 := &Column{Index: 1, RetType: types.NewFieldType(mysql.TypeLonglong)} - ret, err = SubstituteCorCol2Constant(col1) + ret, err = SubstituteCorCol2Constant(ctx, col1) require.NoError(t, err) ans2 := col1 require.True(t, ret.Equal(ctx, ans2)) - plus3 := newFunction(ast.Plus, plus2, col1) - ret, err = SubstituteCorCol2Constant(plus3) + plus3 := newFunctionWithMockCtx(ast.Plus, plus2, col1) + ret, err = SubstituteCorCol2Constant(ctx, plus3) require.NoError(t, err) - ans3 := newFunction(ast.Plus, ans1, col1) + ans3 := newFunctionWithMockCtx(ast.Plus, ans1, col1) require.True(t, ret.Equal(ctx, ans3)) } @@ -265,14 +267,14 @@ func TestPushDownNot(t *testing.T) { ctx := mock.NewContext() col := &Column{Index: 1, RetType: types.NewFieldType(mysql.TypeLonglong)} // !((a=1||a=1)&&a=1) - eqFunc := newFunction(ast.EQ, col, NewOne()) - orFunc := newFunction(ast.LogicOr, eqFunc, eqFunc) - andFunc := newFunction(ast.LogicAnd, orFunc, eqFunc) - notFunc := newFunction(ast.UnaryNot, andFunc) + eqFunc := newFunctionWithMockCtx(ast.EQ, col, NewOne()) + orFunc := newFunctionWithMockCtx(ast.LogicOr, eqFunc, eqFunc) + andFunc := newFunctionWithMockCtx(ast.LogicAnd, orFunc, eqFunc) + notFunc := newFunctionWithMockCtx(ast.UnaryNot, andFunc) // (a!=1&&a!=1)||a=1 - neFunc := newFunction(ast.NE, col, NewOne()) - andFunc2 := newFunction(ast.LogicAnd, neFunc, neFunc) - orFunc2 := newFunction(ast.LogicOr, andFunc2, neFunc) + neFunc := newFunctionWithMockCtx(ast.NE, col, NewOne()) + andFunc2 := newFunctionWithMockCtx(ast.LogicAnd, neFunc, neFunc) + orFunc2 := newFunctionWithMockCtx(ast.LogicOr, andFunc2, neFunc) notFuncCopy := notFunc.Clone() ret := PushDownNot(ctx, notFunc) require.True(t, ret.Equal(ctx, orFunc2)) @@ -280,37 +282,37 @@ func TestPushDownNot(t *testing.T) { // issue 15725 // (not not a) should be optimized to (a is true) - notFunc = newFunction(ast.UnaryNot, col) - notFunc = newFunction(ast.UnaryNot, notFunc) + notFunc = newFunctionWithMockCtx(ast.UnaryNot, col) + notFunc = newFunctionWithMockCtx(ast.UnaryNot, notFunc) ret = PushDownNot(ctx, notFunc) - require.True(t, ret.Equal(ctx, newFunction(ast.IsTruthWithNull, col))) + require.True(t, ret.Equal(ctx, newFunctionWithMockCtx(ast.IsTruthWithNull, col))) // (not not (a+1)) should be optimized to (a+1 is true) - plusFunc := newFunction(ast.Plus, col, NewOne()) - notFunc = newFunction(ast.UnaryNot, plusFunc) - notFunc = newFunction(ast.UnaryNot, notFunc) + plusFunc := newFunctionWithMockCtx(ast.Plus, col, NewOne()) + notFunc = newFunctionWithMockCtx(ast.UnaryNot, plusFunc) + notFunc = newFunctionWithMockCtx(ast.UnaryNot, notFunc) ret = PushDownNot(ctx, notFunc) - require.True(t, ret.Equal(ctx, newFunction(ast.IsTruthWithNull, plusFunc))) + require.True(t, ret.Equal(ctx, newFunctionWithMockCtx(ast.IsTruthWithNull, plusFunc))) // (not not not a) should be optimized to (not (a is true)) - notFunc = newFunction(ast.UnaryNot, col) - notFunc = newFunction(ast.UnaryNot, notFunc) - notFunc = newFunction(ast.UnaryNot, notFunc) + notFunc = newFunctionWithMockCtx(ast.UnaryNot, col) + notFunc = newFunctionWithMockCtx(ast.UnaryNot, notFunc) + notFunc = newFunctionWithMockCtx(ast.UnaryNot, notFunc) ret = PushDownNot(ctx, notFunc) - require.True(t, ret.Equal(ctx, newFunction(ast.UnaryNot, newFunction(ast.IsTruthWithNull, col)))) + require.True(t, ret.Equal(ctx, newFunctionWithMockCtx(ast.UnaryNot, newFunctionWithMockCtx(ast.IsTruthWithNull, col)))) // (not not not not a) should be optimized to (a is true) - notFunc = newFunction(ast.UnaryNot, col) - notFunc = newFunction(ast.UnaryNot, notFunc) - notFunc = newFunction(ast.UnaryNot, notFunc) - notFunc = newFunction(ast.UnaryNot, notFunc) + notFunc = newFunctionWithMockCtx(ast.UnaryNot, col) + notFunc = newFunctionWithMockCtx(ast.UnaryNot, notFunc) + notFunc = newFunctionWithMockCtx(ast.UnaryNot, notFunc) + notFunc = newFunctionWithMockCtx(ast.UnaryNot, notFunc) ret = PushDownNot(ctx, notFunc) - require.True(t, ret.Equal(ctx, newFunction(ast.IsTruthWithNull, col))) + require.True(t, ret.Equal(ctx, newFunctionWithMockCtx(ast.IsTruthWithNull, col))) } func TestFilter(t *testing.T) { conditions := []Expression{ - newFunction(ast.EQ, newColumn(0), newColumn(1)), - newFunction(ast.EQ, newColumn(1), newColumn(2)), - newFunction(ast.LogicOr, newLonglong(1), newColumn(0)), + newFunctionWithMockCtx(ast.EQ, newColumn(0), newColumn(1)), + newFunctionWithMockCtx(ast.EQ, newColumn(1), newColumn(2)), + newFunctionWithMockCtx(ast.LogicOr, newLonglong(1), newColumn(0)), } result := make([]Expression, 0, 5) result = Filter(result, conditions, isLogicOrFunction) @@ -319,9 +321,9 @@ func TestFilter(t *testing.T) { func TestFilterOutInPlace(t *testing.T) { conditions := []Expression{ - newFunction(ast.EQ, newColumn(0), newColumn(1)), - newFunction(ast.EQ, newColumn(1), newColumn(2)), - newFunction(ast.LogicOr, newLonglong(1), newColumn(0)), + newFunctionWithMockCtx(ast.EQ, newColumn(0), newColumn(1)), + newFunctionWithMockCtx(ast.EQ, newColumn(1), newColumn(2)), + newFunctionWithMockCtx(ast.LogicOr, newLonglong(1), newColumn(0)), } remained, filtered := FilterOutInPlace(conditions, isLogicOrFunction) require.Equal(t, 2, len(remained)) @@ -352,14 +354,14 @@ func TestHashGroupKey(t *testing.T) { var err error err = EvalExpr(ctx, colExpr, colExpr.GetType().EvalType(), input, colBuf) require.NoError(t, err) - bufs, err = codec.HashGroupKey(sc, 1024, colBuf, bufs, ft) + bufs, err = codec.HashGroupKey(sc.TimeZone(), 1024, colBuf, bufs, ft) require.NoError(t, err) var buf []byte for j := 0; j < input.NumRows(); j++ { - d, err := colExpr.Eval(input.GetRow(j)) + d, err := colExpr.Eval(ctx, input.GetRow(j)) require.NoError(t, err) - buf, err = codec.EncodeValue(sc, buf[:0], d) + buf, err = codec.EncodeValue(sc.TimeZone(), buf[:0], d) require.NoError(t, err) require.Equal(t, string(bufs[j]), string(buf)) } @@ -457,11 +459,11 @@ func TestSQLDigestTextRetriever(t *testing.T) { func BenchmarkExtractColumns(b *testing.B) { conditions := []Expression{ - newFunction(ast.EQ, newColumn(0), newColumn(1)), - newFunction(ast.EQ, newColumn(1), newColumn(2)), - newFunction(ast.EQ, newColumn(2), newColumn(3)), - newFunction(ast.EQ, newColumn(3), newLonglong(1)), - newFunction(ast.LogicOr, newLonglong(1), newColumn(0)), + newFunctionWithMockCtx(ast.EQ, newColumn(0), newColumn(1)), + newFunctionWithMockCtx(ast.EQ, newColumn(1), newColumn(2)), + newFunctionWithMockCtx(ast.EQ, newColumn(2), newColumn(3)), + newFunctionWithMockCtx(ast.EQ, newColumn(3), newLonglong(1)), + newFunctionWithMockCtx(ast.LogicOr, newLonglong(1), newColumn(0)), } expr := ComposeCNFCondition(mock.NewContext(), conditions...) @@ -474,11 +476,11 @@ func BenchmarkExtractColumns(b *testing.B) { func BenchmarkExprFromSchema(b *testing.B) { conditions := []Expression{ - newFunction(ast.EQ, newColumn(0), newColumn(1)), - newFunction(ast.EQ, newColumn(1), newColumn(2)), - newFunction(ast.EQ, newColumn(2), newColumn(3)), - newFunction(ast.EQ, newColumn(3), newLonglong(1)), - newFunction(ast.LogicOr, newLonglong(1), newColumn(0)), + newFunctionWithMockCtx(ast.EQ, newColumn(0), newColumn(1)), + newFunctionWithMockCtx(ast.EQ, newColumn(1), newColumn(2)), + newFunctionWithMockCtx(ast.EQ, newColumn(2), newColumn(3)), + newFunctionWithMockCtx(ast.EQ, newColumn(3), newLonglong(1)), + newFunctionWithMockCtx(ast.LogicOr, newLonglong(1), newColumn(0)), } expr := ComposeCNFCondition(mock.NewContext(), conditions...) schema := &Schema{Columns: ExtractColumns(expr)} @@ -519,9 +521,14 @@ func (m *MockExpr) VecEvalJSON(ctx sessionctx.Context, input *chunk.Chunk, resul return nil } -func (m *MockExpr) String() string { return "" } -func (m *MockExpr) MarshalJSON() ([]byte, error) { return nil, nil } -func (m *MockExpr) Eval(row chunk.Row) (types.Datum, error) { return types.NewDatum(m.i), m.err } +func (m *MockExpr) String() string { return "" } +func (m *MockExpr) MarshalJSON() ([]byte, error) { return nil, nil } +func (m *MockExpr) Eval(ctx sessionctx.Context, row chunk.Row) (types.Datum, error) { + return types.NewDatum(m.i), m.err +} +func (m *MockExpr) EvalWithInnerCtx(row chunk.Row) (types.Datum, error) { + return types.NewDatum(m.i), m.err +} func (m *MockExpr) EvalInt(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) { if x, ok := m.i.(int64); ok { return x, false, m.err @@ -567,28 +574,33 @@ func (m *MockExpr) EvalJSON(ctx sessionctx.Context, row chunk.Row) (val types.Bi func (m *MockExpr) ReverseEval(sc *stmtctx.StatementContext, res types.Datum, rType types.RoundingType) (val types.Datum, err error) { return types.Datum{}, m.err } -func (m *MockExpr) GetType() *types.FieldType { return m.t } -func (m *MockExpr) Clone() Expression { return nil } -func (m *MockExpr) Equal(ctx sessionctx.Context, e Expression) bool { return false } -func (m *MockExpr) IsCorrelated() bool { return false } -func (m *MockExpr) ConstItem(_ *stmtctx.StatementContext) bool { return false } -func (m *MockExpr) Decorrelate(schema *Schema) Expression { return m } -func (m *MockExpr) ResolveIndices(schema *Schema) (Expression, error) { return m, nil } -func (m *MockExpr) resolveIndices(schema *Schema) error { return nil } -func (m *MockExpr) ResolveIndicesByVirtualExpr(schema *Schema) (Expression, bool) { return m, true } -func (m *MockExpr) resolveIndicesByVirtualExpr(schema *Schema) bool { return true } -func (m *MockExpr) RemapColumn(_ map[int64]*Column) (Expression, error) { return m, nil } -func (m *MockExpr) ExplainInfo() string { return "" } -func (m *MockExpr) ExplainNormalizedInfo() string { return "" } -func (m *MockExpr) ExplainNormalizedInfo4InList() string { return "" } -func (m *MockExpr) HashCode(sc *stmtctx.StatementContext) []byte { return nil } -func (m *MockExpr) Vectorized() bool { return false } -func (m *MockExpr) SupportReverseEval() bool { return false } -func (m *MockExpr) HasCoercibility() bool { return false } -func (m *MockExpr) Coercibility() Coercibility { return 0 } -func (m *MockExpr) SetCoercibility(Coercibility) {} -func (m *MockExpr) Repertoire() Repertoire { return UNICODE } -func (m *MockExpr) SetRepertoire(Repertoire) {} +func (m *MockExpr) GetType() *types.FieldType { return m.t } +func (m *MockExpr) Clone() Expression { return nil } +func (m *MockExpr) Equal(ctx sessionctx.Context, e Expression) bool { return false } +func (m *MockExpr) IsCorrelated() bool { return false } +func (m *MockExpr) ConstItem(_ *stmtctx.StatementContext) bool { return false } +func (m *MockExpr) Decorrelate(schema *Schema) Expression { return m } +func (m *MockExpr) ResolveIndices(schema *Schema) (Expression, error) { return m, nil } +func (m *MockExpr) resolveIndices(schema *Schema) error { return nil } +func (m *MockExpr) ResolveIndicesByVirtualExpr(ctx sessionctx.Context, schema *Schema) (Expression, bool) { + return m, true +} +func (m *MockExpr) resolveIndicesByVirtualExpr(ctx sessionctx.Context, schema *Schema) bool { + return true +} +func (m *MockExpr) RemapColumn(_ map[int64]*Column) (Expression, error) { return m, nil } +func (m *MockExpr) ExplainInfo(sessionctx.Context) string { return "" } +func (m *MockExpr) ExplainNormalizedInfo() string { return "" } +func (m *MockExpr) ExplainNormalizedInfo4InList() string { return "" } +func (m *MockExpr) HashCode() []byte { return nil } +func (m *MockExpr) CanonicalHashCode() []byte { return nil } +func (m *MockExpr) Vectorized() bool { return false } +func (m *MockExpr) SupportReverseEval() bool { return false } +func (m *MockExpr) HasCoercibility() bool { return false } +func (m *MockExpr) Coercibility() Coercibility { return 0 } +func (m *MockExpr) SetCoercibility(Coercibility) {} +func (m *MockExpr) Repertoire() Repertoire { return UNICODE } +func (m *MockExpr) SetRepertoire(Repertoire) {} func (m *MockExpr) CharsetAndCollation() (string, string) { return "", "" diff --git a/pkg/extension/README.md b/pkg/extension/README.md new file mode 100644 index 0000000000000..60f9249ebf2a7 --- /dev/null +++ b/pkg/extension/README.md @@ -0,0 +1,176 @@ +# Extension Framework Usage + + +* [Extension Framework Usage](#extension-framework-usage) + * [Introduction](#introduction) + * [Usage Guidelines](#usage-guidelines) + * [A Simple Example](#a-simple-example) + * [Further Explanation about Session Handler](#further-explanation-about-session-handler) + * [Registering Extensions with Options](#registering-extensions-with-options) + * [Key Extension Options](#key-extension-options) + + +## Introduction + +The Extension Framework facilitates the seamless integration of standalone code with TiDB. This framework is useful when: + +- You aim to extend TiDB functionality but prefer to encapsulate new code within a standalone package, minimizing deep integration. +- Considering confidentiality, you wish to extend TiDB without exposing the code publicly. + +## Usage Guidelines + +### A Simple Example + +The subsequent example demonstrates how to log information when a new connection is established: + +```go +// pkg/extension/example/example.go + +package example + +import ( + "github.com/pingcap/tidb/pkg/extension" + "github.com/pingcap/tidb/pkg/parser/terror" + "github.com/pingcap/tidb/pkg/util/logutil" + "go.uber.org/zap" +) + +func createSessionHandler() *extension.SessionHandler { + return &extension.SessionHandler{ + OnConnectionEvent: func(tp extension.ConnEventTp, info *extension.ConnEventInfo) { + if tp == extension.ConnConnected { + logutil.BgLogger().Info("new connection connected", zap.String("client IP", info.ClientIP)) + } + }, + } +} + +func init() { + err := extension.Register( + "example", + extension.WithSessionHandlerFactory(createSessionHandler), + ) + terror.MustNil(err) +} +``` + +```go +// pkg/extension/_import/import_example.go + +package extensionimport + +import ( + _ "github.com/pingcap/tidb/pkg/extension/example" +) +``` + +Incorporate these files into your TiDB file structure, rebuild, and run the TiDB server. Observe the enhanced logging when a new connection attempts to connect to TiDB: + +``` +[2023/11/14 16:22:26.854 +08:00] [INFO] [example.go:28] ["new connection connected"] ["client IP"=127.0.0.1] +``` + +Let's delve into a step-by-step explanation of how this works: + +In the primary file, `example.go`, a new function named `createSessionHandler` is introduced. This function acts as a factory and is intended to be invoked when a new connection is established. It returns an object of type `extension.SessionHandler` to guide the framework on handling the connection. The `SessionHandler` type provides various customizable fields. In the provided example, we utilize the `OnConnectionEvent` field to manage the `extension.ConnConnected` event for connections, logging the client's IP address. + +The custom code is registered using `extension.Register`. In the `init` function of the `example.go` file, the first parameter passed to `extension.Register` is the extension name. Any string can be used as the name, with the only constraint being its uniqueness across all extensions. Following the extension name, an arbitrary number of options can be passed to `extension.Register`. In our example, we employ the `extension.WithSessionHandlerFactory` option to convey the `createSessionHandler` function to the previously defined framework. + +It's essential to note that `example.go` resides in a newly created package. If this package is not imported by other packages, the `init` function will not be called. To address this, a new file, `example_import.go`, is created within an existing package, specifically `pkg/extension/_import`. This file imports `pkg/extension/example`, ensuring that the extension is registered when TiDB starts. + +### Further Explanation about Session Handler + +The `SessionHandler` is designed to manage session events and is declared as follows: + +```go +// SessionHandler is used to listen session events +type SessionHandler struct { + OnConnectionEvent func(ConnEventTp, *ConnEventInfo) + OnStmtEvent func(StmtEventTp, StmtEventInfo) +} +``` + +`SessionHandler` offers several customizable fields. These fields default to empty, implying that if left unset, the framework will not perform any actions when corresponding events occur. + +**OnConnectionEvent** + +The `OnConnectionEvent` function is used to observe all connection events. The types of connection events are defined by `ConnEventTp`, with key types including: + +- `ConnConnected`: the creation of a new connection that is not yet authenticated. +- `ConnHandshakeAccepted`: successful authentication of a connection. +- `ConnHandshakeRejected`: rejection due to authentication failure. +- `ConnClose`: the close of a connection. + +It is important to note that `OnConnectionEvent` does not return errors; it is designed as a listener, and any encountered errors in custom code must be managed before the function concludes. In essence, **`OnConnectionEvent`** does not disrupt the connection flow but merely observes. + +**OnStmtEvent** + +`OnStmtEvent` serves to monitor events related to statements. Similar to `OnConnectionEvent`, it functions as a listener without influencing the statement flow. Statement event types, defined by `StmtEventTp`, include: + +- `StmtError`: Denoting the completion of a statement with an error. +- `StmtSuccess`: Indicating the successful completion of a statement. + +### **Registering Extensions with Options** + +In addition to `extension.WithSessionHandlerFactory`, various options are available for extension customization. All options can be registered using the `extension.Register` function. For instance: + +```go + err := extension.Register( + "example", + extension.WithSessionHandlerFactory(createSessionHandler), + extension.WithBootstrapSQL("CREATE TABLE IF NOT EXISTS mysql.example(a int)"), + // ... + ) + terror.MustNil(err) +``` + +Alternatively, use `extension.RegisterFactory` for dynamic registration of extension options. This proves beneficial when global configurations influence the selection of options. For example: + +```go + err := extension.RegisterFactory("example", func() ([]extension.Option, error) { + cfg := config.GetGlobalConfig() + var factory func() *extension.SessionHandler + if cfg.SomeFlag { + factory = createSessionHandler1 + } else { + factory = createSessionHandler2 + } + + return []extension.Option{ + extension.WithSessionHandlerFactory(factory), + }, nil + }) + terror.MustNil(err) +``` + +### **Key Extension Options** + +Several important extension options are outlined below: + +**WithCustomSysVariables** + +The `WithCustomSysVariables` option registers custom system variables, accepting a slice of `variable.SysVar` for addition. + +**WithCustomDynPrivs** + +Use `WithCustomDynPrivs` to register custom dynamic privileges. + +**WithCustomFunctions** + +The `WithCustomFunctions` option registers custom functions. + +**AccessCheckFunc** + +The `AccessCheckFunc` option customizes the access check logic, enabling additional checks for table access. + +**WithSessionHandlerFactory** + +This option is instrumental in handling session events. + +**WithBootstrap** + +`WithBootstrap` customizes the bootstrap logic, receiving a function invoked during TiDB bootstrap. Note that `WithBootstrapSQL` and `WithBootstrap` are mutually exclusive, allowing the use of only one. + +**WithBootstrapSQL** + +`WithBootstrapSQL` customizes the bootstrap logic with a string containing SQL statements for bootstrapping. Note that `WithBootstrapSQL` and `WithBootstrap` are mutually exclusive, allowing the use of only one. diff --git a/pkg/extension/enterprise b/pkg/extension/enterprise index eac31cedd37f7..227c9935e1a76 160000 --- a/pkg/extension/enterprise +++ b/pkg/extension/enterprise @@ -1 +1 @@ -Subproject commit eac31cedd37f7143483f4b387c38fc2e8638b379 +Subproject commit 227c9935e1a76a4574a5321a58d19c2bff5f38f2 diff --git a/pkg/infoschema/BUILD.bazel b/pkg/infoschema/BUILD.bazel index 0e62ee3953ca7..b88917fbca2a0 100644 --- a/pkg/infoschema/BUILD.bazel +++ b/pkg/infoschema/BUILD.bazel @@ -43,7 +43,6 @@ go_library( "//pkg/util/execdetails", "//pkg/util/logutil", "//pkg/util/mock", - "//pkg/util/pdapi", "//pkg/util/sem", "//pkg/util/set", "//pkg/util/sqlexec", @@ -55,6 +54,7 @@ go_library( "@com_github_pingcap_kvproto//pkg/metapb", "@com_github_pingcap_log//:log", "@com_github_tikv_client_go_v2//tikv", + "@com_github_tikv_pd_client//http", "@org_golang_google_grpc//:grpc", "@org_golang_google_grpc//credentials", "@org_golang_google_grpc//credentials/insecure", @@ -91,7 +91,7 @@ go_test( "//pkg/util", "//pkg/util/set", "@com_github_pingcap_errors//:errors", - "@com_github_prometheus_prometheus//promql", + "@com_github_prometheus_prometheus//promql/parser", "@com_github_stretchr_testify//require", "@org_uber_go_goleak//:goleak", ], diff --git a/pkg/infoschema/metrics_schema_test.go b/pkg/infoschema/metrics_schema_test.go index c47f77a1b3a9b..c3579b54a7c7f 100644 --- a/pkg/infoschema/metrics_schema_test.go +++ b/pkg/infoschema/metrics_schema_test.go @@ -21,7 +21,7 @@ import ( "github.com/pingcap/tidb/pkg/infoschema" "github.com/pingcap/tidb/pkg/util/set" - "github.com/prometheus/prometheus/promql" + "github.com/prometheus/prometheus/promql/parser" "github.com/stretchr/testify/require" ) @@ -63,7 +63,7 @@ func TestMetricSchemaDef(t *testing.T) { require.Equalf(t, "instance", def.Labels[0], "metrics table %v: expect `instance`is the first label but got %v", name, def.Labels) } - _, err := promql.ParseExpr(mockGenPromQL(def.PromQL)) + _, err := parser.ParseExpr(mockGenPromQL(def.PromQL)) require.NoError(t, err, "fail to parser PromQL %s", def.PromQL) } } diff --git a/pkg/infoschema/perfschema/BUILD.bazel b/pkg/infoschema/perfschema/BUILD.bazel index 8291fbcab1bc9..0e300561f33f5 100644 --- a/pkg/infoschema/perfschema/BUILD.bazel +++ b/pkg/infoschema/perfschema/BUILD.bazel @@ -25,10 +25,10 @@ go_library( "//pkg/table/tables", "//pkg/types", "//pkg/util", - "//pkg/util/pdapi", "//pkg/util/profile", "@com_github_pingcap_errors//:errors", "@com_github_pingcap_failpoint//:failpoint", + "@com_github_tikv_pd_client//http", ], ) @@ -50,9 +50,9 @@ go_test( "//pkg/store/mockstore", "//pkg/testkit", "//pkg/testkit/testsetup", - "//pkg/util/pdapi", "@com_github_pingcap_failpoint//:failpoint", "@com_github_stretchr_testify//require", + "@com_github_tikv_pd_client//http", "@io_opencensus_go//stats/view", "@org_uber_go_goleak//:goleak", ], diff --git a/pkg/infoschema/perfschema/tables.go b/pkg/infoschema/perfschema/tables.go index efc5aefe0f297..22ba0f1e07310 100644 --- a/pkg/infoschema/perfschema/tables.go +++ b/pkg/infoschema/perfschema/tables.go @@ -36,8 +36,8 @@ import ( "github.com/pingcap/tidb/pkg/table/tables" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util" - "github.com/pingcap/tidb/pkg/util/pdapi" "github.com/pingcap/tidb/pkg/util/profile" + pd "github.com/tikv/pd/client/http" ) const ( @@ -242,17 +242,17 @@ func (vt *perfSchemaTable) getRows(ctx context.Context, sctx sessionctx.Context, interval := fmt.Sprintf("%d", profile.CPUProfileInterval/time.Second) fullRows, err = dataForRemoteProfile(sctx, "tikv", "/debug/pprof/profile?seconds="+interval, false) case tableNamePDProfileCPU: - fullRows, err = dataForRemoteProfile(sctx, "pd", pdapi.PProfProfileAPIWithInterval(profile.CPUProfileInterval), false) + fullRows, err = dataForRemoteProfile(sctx, "pd", pd.PProfProfileAPIWithInterval(profile.CPUProfileInterval), false) case tableNamePDProfileMemory: - fullRows, err = dataForRemoteProfile(sctx, "pd", pdapi.PProfHeap, false) + fullRows, err = dataForRemoteProfile(sctx, "pd", pd.PProfHeap, false) case tableNamePDProfileMutex: - fullRows, err = dataForRemoteProfile(sctx, "pd", pdapi.PProfMutex, false) + fullRows, err = dataForRemoteProfile(sctx, "pd", pd.PProfMutex, false) case tableNamePDProfileAllocs: - fullRows, err = dataForRemoteProfile(sctx, "pd", pdapi.PProfAllocs, false) + fullRows, err = dataForRemoteProfile(sctx, "pd", pd.PProfAllocs, false) case tableNamePDProfileBlock: - fullRows, err = dataForRemoteProfile(sctx, "pd", pdapi.PProfBlock, false) + fullRows, err = dataForRemoteProfile(sctx, "pd", pd.PProfBlock, false) case tableNamePDProfileGoroutines: - fullRows, err = dataForRemoteProfile(sctx, "pd", pdapi.PProfGoroutineWithDebugLevel(2), true) + fullRows, err = dataForRemoteProfile(sctx, "pd", pd.PProfGoroutineWithDebugLevel(2), true) case tableNameSessionVariables: fullRows, err = infoschema.GetDataFromSessionVariables(ctx, sctx) case tableNameSessionConnectAttrs: diff --git a/pkg/infoschema/perfschema/tables_test.go b/pkg/infoschema/perfschema/tables_test.go index b68fcd525aa18..cb78f06533738 100644 --- a/pkg/infoschema/perfschema/tables_test.go +++ b/pkg/infoschema/perfschema/tables_test.go @@ -31,8 +31,8 @@ import ( "github.com/pingcap/tidb/pkg/session" "github.com/pingcap/tidb/pkg/store/mockstore" "github.com/pingcap/tidb/pkg/testkit" - "github.com/pingcap/tidb/pkg/util/pdapi" "github.com/stretchr/testify/require" + pd "github.com/tikv/pd/client/http" "go.opencensus.io/stats/view" ) @@ -152,12 +152,12 @@ func TestTiKVProfileCPU(t *testing.T) { } // mock PD profile - router.HandleFunc(pdapi.PProfProfile, copyHandler("testdata/test.pprof")) - router.HandleFunc(pdapi.PProfHeap, handlerFactory("heap")) - router.HandleFunc(pdapi.PProfMutex, handlerFactory("mutex")) - router.HandleFunc(pdapi.PProfAllocs, handlerFactory("allocs")) - router.HandleFunc(pdapi.PProfBlock, handlerFactory("block")) - router.HandleFunc(pdapi.PProfGoroutine, handlerFactory("goroutine", 2)) + router.HandleFunc(pd.PProfProfile, copyHandler("testdata/test.pprof")) + router.HandleFunc(pd.PProfHeap, handlerFactory("heap")) + router.HandleFunc(pd.PProfMutex, handlerFactory("mutex")) + router.HandleFunc(pd.PProfAllocs, handlerFactory("allocs")) + router.HandleFunc(pd.PProfBlock, handlerFactory("block")) + router.HandleFunc(pd.PProfGoroutine, handlerFactory("goroutine", 2)) tk.MustQuery("select * from pd_profile_cpu where depth < 3") warnings = tk.Session().GetSessionVars().StmtCtx.GetWarnings() diff --git a/pkg/infoschema/tables.go b/pkg/infoschema/tables.go index 3a7f48a79ecee..5f0e2b86c70cb 100644 --- a/pkg/infoschema/tables.go +++ b/pkg/infoschema/tables.go @@ -54,11 +54,11 @@ import ( "github.com/pingcap/tidb/pkg/util/deadlockhistory" "github.com/pingcap/tidb/pkg/util/execdetails" "github.com/pingcap/tidb/pkg/util/logutil" - "github.com/pingcap/tidb/pkg/util/pdapi" "github.com/pingcap/tidb/pkg/util/sem" "github.com/pingcap/tidb/pkg/util/set" "github.com/pingcap/tidb/pkg/util/stmtsummary" "github.com/tikv/client-go/v2/tikv" + pd "github.com/tikv/pd/client/http" "go.uber.org/zap" "google.golang.org/grpc" "google.golang.org/grpc/credentials" @@ -209,6 +209,8 @@ const ( TableRunawayWatches = "RUNAWAY_WATCHES" // TableCheckConstraints is the list of CHECK constraints. TableCheckConstraints = "CHECK_CONSTRAINTS" + // TableTiDBCheckConstraints is the list of CHECK constraints, with non-standard TiDB extensions. + TableTiDBCheckConstraints = "TIDB_CHECK_CONSTRAINTS" ) const ( @@ -318,6 +320,7 @@ var tableIDMap = map[string]int64{ TableResourceGroups: autoid.InformationSchemaDBID + 88, TableRunawayWatches: autoid.InformationSchemaDBID + 89, TableCheckConstraints: autoid.InformationSchemaDBID + 90, + TableTiDBCheckConstraints: autoid.InformationSchemaDBID + 91, } // columnInfo represents the basic column information of all kinds of INFORMATION_SCHEMA tables @@ -459,7 +462,7 @@ var columnsCols = []columnInfo{ {name: "COLLATION_NAME", tp: mysql.TypeVarchar, size: 32}, {name: "COLUMN_TYPE", tp: mysql.TypeBlob, size: 196606}, {name: "COLUMN_KEY", tp: mysql.TypeVarchar, size: 3}, - {name: "EXTRA", tp: mysql.TypeVarchar, size: 30}, + {name: "EXTRA", tp: mysql.TypeVarchar, size: 45}, {name: "PRIVILEGES", tp: mysql.TypeVarchar, size: 80}, {name: "COLUMN_COMMENT", tp: mysql.TypeVarchar, size: 1024}, {name: "GENERATION_EXPRESSION", tp: mysql.TypeBlob, size: 589779, flag: mysql.NotNullFlag}, @@ -1157,7 +1160,7 @@ var tableClusterInfoCols = []columnInfo{ {name: "STATUS_ADDRESS", tp: mysql.TypeVarchar, size: 64}, {name: "VERSION", tp: mysql.TypeVarchar, size: 64}, {name: "GIT_HASH", tp: mysql.TypeVarchar, size: 64}, - {name: "START_TIME", tp: mysql.TypeVarchar, size: 32}, + {name: "START_TIME", tp: mysql.TypeDatetime, size: 19}, {name: "UPTIME", tp: mysql.TypeVarchar, size: 32}, {name: "SERVER_ID", tp: mysql.TypeLonglong, size: 21, comment: "invalid if the configuration item `enable-global-kill` is set to FALSE"}, } @@ -1630,6 +1633,7 @@ var tableRunawayWatchListCols = []columnInfo{ {name: "ACTION", tp: mysql.TypeVarchar, size: 12, flag: mysql.NotNullFlag}, } +// information_schema.CHECK_CONSTRAINTS var tableCheckConstraintsCols = []columnInfo{ {name: "CONSTRAINT_CATALOG", tp: mysql.TypeVarchar, size: 64, flag: mysql.NotNullFlag}, {name: "CONSTRAINT_SCHEMA", tp: mysql.TypeVarchar, size: 64, flag: mysql.NotNullFlag}, @@ -1637,6 +1641,16 @@ var tableCheckConstraintsCols = []columnInfo{ {name: "CHECK_CLAUSE", tp: mysql.TypeLongBlob, size: types.UnspecifiedLength, flag: mysql.NotNullFlag}, } +// information_schema.TIDB_CHECK_CONSTRAINTS +var tableTiDBCheckConstraintsCols = []columnInfo{ + {name: "CONSTRAINT_CATALOG", tp: mysql.TypeVarchar, size: 64, flag: mysql.NotNullFlag}, + {name: "CONSTRAINT_SCHEMA", tp: mysql.TypeVarchar, size: 64, flag: mysql.NotNullFlag}, + {name: "CONSTRAINT_NAME", tp: mysql.TypeVarchar, size: 64, flag: mysql.NotNullFlag}, + {name: "CHECK_CLAUSE", tp: mysql.TypeLongBlob, size: types.UnspecifiedLength, flag: mysql.NotNullFlag}, + {name: "TABLE_NAME", tp: mysql.TypeVarchar, size: 64}, + {name: "TABLE_ID", tp: mysql.TypeLonglong, size: 21}, +} + // 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. @@ -1839,7 +1853,7 @@ func GetPDServerInfo(ctx sessionctx.Context) ([]ServerInfo, error) { // Try on each member until one succeeds or all fail. for _, addr := range members { // Get PD version, git_hash - url := fmt.Sprintf("%s://%s%s", util.InternalHTTPSchema(), addr, pdapi.Status) + url := fmt.Sprintf("%s://%s%s", util.InternalHTTPSchema(), addr, pd.Status) req, err := http.NewRequest(http.MethodGet, url, nil) if err != nil { ctx.GetSessionVars().StmtCtx.AppendWarning(err) @@ -2175,6 +2189,7 @@ var tableNameToColumns = map[string][]columnInfo{ TableResourceGroups: tableResourceGroupsCols, TableRunawayWatches: tableRunawayWatchListCols, TableCheckConstraints: tableCheckConstraintsCols, + TableTiDBCheckConstraints: tableTiDBCheckConstraintsCols, } func createInfoSchemaTable(_ autoid.Allocators, meta *model.TableInfo) (table.Table, error) { diff --git a/pkg/infoschema/test/clustertablestest/BUILD.bazel b/pkg/infoschema/test/clustertablestest/BUILD.bazel index 3c6e587dbccaf..e992561b17378 100644 --- a/pkg/infoschema/test/clustertablestest/BUILD.bazel +++ b/pkg/infoschema/test/clustertablestest/BUILD.bazel @@ -9,7 +9,7 @@ go_test( "tables_test.go", ], flaky = True, - shard_count = 45, + shard_count = 46, deps = [ "//pkg/config", "//pkg/domain", @@ -29,7 +29,6 @@ go_test( "//pkg/session", "//pkg/session/txninfo", "//pkg/sessionctx/variable", - "//pkg/store/helper", "//pkg/store/mockstore", "//pkg/store/mockstore/mockstorage", "//pkg/store/mockstore/unistore", @@ -41,7 +40,6 @@ go_test( "//pkg/util/dbterror/exeerrors", "//pkg/util/gctuner", "//pkg/util/memory", - "//pkg/util/pdapi", "//pkg/util/resourcegrouptag", "//pkg/util/set", "//pkg/util/stmtsummary", @@ -53,6 +51,7 @@ go_test( "@com_github_pingcap_tipb//go-tipb", "@com_github_stretchr_testify//require", "@com_github_tikv_client_go_v2//testutils", + "@com_github_tikv_pd_client//http", "@org_golang_google_grpc//:grpc", "@org_uber_go_goleak//:goleak", ], diff --git a/pkg/infoschema/test/clustertablestest/cluster_tables_test.go b/pkg/infoschema/test/clustertablestest/cluster_tables_test.go index c741b42f7eb29..ffd50fb8e798d 100644 --- a/pkg/infoschema/test/clustertablestest/cluster_tables_test.go +++ b/pkg/infoschema/test/clustertablestest/cluster_tables_test.go @@ -42,7 +42,6 @@ import ( "github.com/pingcap/tidb/pkg/parser/auth" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/server" - "github.com/pingcap/tidb/pkg/store/helper" "github.com/pingcap/tidb/pkg/store/mockstore" "github.com/pingcap/tidb/pkg/store/mockstore/mockstorage" "github.com/pingcap/tidb/pkg/store/mockstore/unistore" @@ -50,13 +49,13 @@ import ( "github.com/pingcap/tidb/pkg/testkit/external" "github.com/pingcap/tidb/pkg/util" "github.com/pingcap/tidb/pkg/util/dbterror/exeerrors" - "github.com/pingcap/tidb/pkg/util/pdapi" "github.com/pingcap/tidb/pkg/util/resourcegrouptag" "github.com/pingcap/tidb/pkg/util/set" "github.com/pingcap/tidb/pkg/util/stmtsummary" "github.com/pingcap/tipb/go-tipb" "github.com/stretchr/testify/require" "github.com/tikv/client-go/v2/testutils" + pd "github.com/tikv/pd/client/http" "google.golang.org/grpc" ) @@ -768,12 +767,12 @@ func (s *clusterTablesSuite) setUpMockPDHTTPServer() (*httptest.Server, string) srv := httptest.NewServer(router) // mock store stats stat mockAddr := strings.TrimPrefix(srv.URL, "http://") - router.Handle(pdapi.Stores, fn.Wrap(func() (*helper.StoresStat, error) { - return &helper.StoresStat{ + router.Handle(pd.Stores, fn.Wrap(func() (*pd.StoresInfo, error) { + return &pd.StoresInfo{ Count: 1, - Stores: []helper.StoreStat{ + Stores: []pd.StoreInfo{ { - Store: helper.StoreBaseStat{ + Store: pd.MetaStore{ ID: 1, Address: "127.0.0.1:20160", State: 0, @@ -788,7 +787,7 @@ func (s *clusterTablesSuite) setUpMockPDHTTPServer() (*httptest.Server, string) }, nil })) // mock PD API - router.Handle(pdapi.Status, fn.Wrap(func() (interface{}, error) { + router.Handle(pd.Status, fn.Wrap(func() (interface{}, error) { return struct { Version string `json:"version"` GitHash string `json:"git_hash"` @@ -818,7 +817,7 @@ func (s *clusterTablesSuite) setUpMockPDHTTPServer() (*httptest.Server, string) return configuration, nil } // pd config - router.Handle(pdapi.Config, fn.Wrap(mockConfig)) + router.Handle(pd.Config, fn.Wrap(mockConfig)) // TiDB/TiKV config router.Handle("/config", fn.Wrap(mockConfig)) return srv, mockAddr diff --git a/pkg/infoschema/test/clustertablestest/tables_test.go b/pkg/infoschema/test/clustertablestest/tables_test.go index ddcf6c69a6b88..4f646173e65be 100644 --- a/pkg/infoschema/test/clustertablestest/tables_test.go +++ b/pkg/infoschema/test/clustertablestest/tables_test.go @@ -1417,3 +1417,11 @@ func TestAddFieldsForBinding(t *testing.T) { require.Equal(t, rows[0][7], "use_index(@`sel_1` `test`.`t` ), ignore_index(`t` `a`)") require.Equal(t, rows[0][8], "select * from `t` where `a` = ?") } + +func TestClusterInfoTime(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustQuery("SELECT START_TIME+1 FROM information_schema.CLUSTER_INFO") + warnings := tk.Session().GetSessionVars().StmtCtx.GetWarnings() + require.Nil(t, warnings) +} diff --git a/pkg/kv/BUILD.bazel b/pkg/kv/BUILD.bazel index 99ba85562acdd..61433c6824390 100644 --- a/pkg/kv/BUILD.bazel +++ b/pkg/kv/BUILD.bazel @@ -53,6 +53,7 @@ go_library( "@com_github_tikv_client_go_v2//tikvrpc/interceptor", "@com_github_tikv_client_go_v2//util", "@com_github_tikv_pd_client//:client", + "@com_github_tikv_pd_client//http", "@org_uber_go_atomic//:atomic", "@org_uber_go_zap//:zap", ], diff --git a/pkg/kv/key_test.go b/pkg/kv/key_test.go index fff2d836a34ea..c90f89cfffc9a 100644 --- a/pkg/kv/key_test.go +++ b/pkg/kv/key_test.go @@ -35,13 +35,13 @@ import ( func TestPartialNext(t *testing.T) { sc := stmtctx.NewStmtCtxWithTimeZone(time.Local) // keyA represents a multi column index. - keyA, err := codec.EncodeValue(sc, nil, types.NewDatum("abc"), types.NewDatum("def")) + keyA, err := codec.EncodeValue(sc.TimeZone(), nil, types.NewDatum("abc"), types.NewDatum("def")) require.NoError(t, err) - keyB, err := codec.EncodeValue(sc, nil, types.NewDatum("abca"), types.NewDatum("def")) + keyB, err := codec.EncodeValue(sc.TimeZone(), nil, types.NewDatum("abca"), types.NewDatum("def")) require.NoError(t, err) // We only use first column value to seek. - seekKey, err := codec.EncodeValue(sc, nil, types.NewDatum("abc")) + seekKey, err := codec.EncodeValue(sc.TimeZone(), nil, types.NewDatum("abc")) require.NoError(t, err) nextKey := Key(seekKey).Next() @@ -149,7 +149,7 @@ func TestHandle(t *testing.T) { func TestPaddingHandle(t *testing.T) { dec := types.NewDecFromInt(1) - encoded, err := codec.EncodeKey(stmtctx.NewStmtCtx(), nil, types.NewDecimalDatum(dec)) + encoded, err := codec.EncodeKey(stmtctx.NewStmtCtx().TimeZone(), nil, types.NewDecimalDatum(dec)) assert.Nil(t, err) assert.Less(t, len(encoded), 9) @@ -229,7 +229,7 @@ func TestHandleMapWithPartialHandle(t *testing.T) { m.Set(ih, 3) dec := types.NewDecFromInt(1) - encoded, err := codec.EncodeKey(stmtctx.NewStmtCtx(), nil, types.NewDecimalDatum(dec)) + encoded, err := codec.EncodeKey(stmtctx.NewStmtCtx().TimeZone(), nil, types.NewDecimalDatum(dec)) assert.Nil(t, err) assert.Less(t, len(encoded), 9) @@ -285,7 +285,7 @@ func TestMemAwareHandleMapWithPartialHandle(t *testing.T) { m.Set(ih, 3) dec := types.NewDecFromInt(1) - encoded, err := codec.EncodeKey(stmtctx.NewStmtCtx(), nil, types.NewDecimalDatum(dec)) + encoded, err := codec.EncodeKey(stmtctx.NewStmtCtx().TimeZone(), nil, types.NewDecimalDatum(dec)) assert.Nil(t, err) assert.Less(t, len(encoded), 9) @@ -381,7 +381,7 @@ func BenchmarkMemAwareHandleMap(b *testing.B) { if i%2 == 0 { handles[i] = IntHandle(i) } else { - handleBytes, _ := codec.EncodeKey(&sc, nil, types.NewIntDatum(int64(i))) + handleBytes, _ := codec.EncodeKey(sc.TimeZone(), nil, types.NewIntDatum(int64(i))) handles[i], _ = NewCommonHandle(handleBytes) } } @@ -403,7 +403,7 @@ func BenchmarkNativeHandleMap(b *testing.B) { if i%2 == 0 { handles[i] = IntHandle(i) } else { - handleBytes, _ := codec.EncodeKey(&sc, nil, types.NewIntDatum(int64(i))) + handleBytes, _ := codec.EncodeKey(sc.TimeZone(), nil, types.NewIntDatum(int64(i))) handles[i], _ = NewCommonHandle(handleBytes) } } diff --git a/pkg/kv/kv.go b/pkg/kv/kv.go index 1ee1661d9593c..f82c7919e5180 100644 --- a/pkg/kv/kv.go +++ b/pkg/kv/kv.go @@ -37,6 +37,7 @@ import ( "github.com/tikv/client-go/v2/tikvrpc" "github.com/tikv/client-go/v2/util" pd "github.com/tikv/pd/client" + pdhttp "github.com/tikv/pd/client/http" "go.uber.org/atomic" ) @@ -591,6 +592,8 @@ type Request struct { // ConnID stores the session connection id. ConnID uint64 + // ConnAlias stores the session connection alias. + ConnAlias string } // CoprRequestAdjuster is used to check and adjust a copr request according to specific rules. @@ -713,6 +716,7 @@ type EtcdBackend interface { // StorageWithPD is used to get pd client. type StorageWithPD interface { GetPDClient() pd.Client + GetPDHTTPClient() pdhttp.Client } // FnKeyCmp is the function for iterator the keys diff --git a/pkg/kv/mpp.go b/pkg/kv/mpp.go index ea002f669528e..bde0de12cbbcf 100644 --- a/pkg/kv/mpp.go +++ b/pkg/kv/mpp.go @@ -95,13 +95,15 @@ type MPPQueryID struct { // MPPTask means the minimum execution unit of a mpp computation job. type MPPTask struct { - Meta MPPTaskMeta // on which store this task will execute - ID int64 // mppTaskID - StartTs uint64 - GatherID uint64 - MppQueryID MPPQueryID - TableID int64 // physical table id - MppVersion MppVersion // mpp version + Meta MPPTaskMeta // on which store this task will execute + ID int64 // mppTaskID + StartTs uint64 + GatherID uint64 + MppQueryID MPPQueryID + TableID int64 // physical table id + MppVersion MppVersion // mpp version + SessionID uint64 + SessionAlias string PartitionTableIDs []int64 TiFlashStaticPrune bool @@ -110,13 +112,15 @@ type MPPTask struct { // ToPB generates the pb structure. func (t *MPPTask) ToPB() *mpp.TaskMeta { meta := &mpp.TaskMeta{ - StartTs: t.StartTs, - GatherId: t.GatherID, - QueryTs: t.MppQueryID.QueryTs, - LocalQueryId: t.MppQueryID.LocalQueryID, - ServerId: t.MppQueryID.ServerID, - TaskId: t.ID, - MppVersion: t.MppVersion.ToInt64(), + StartTs: t.StartTs, + GatherId: t.GatherID, + QueryTs: t.MppQueryID.QueryTs, + LocalQueryId: t.MppQueryID.LocalQueryID, + ServerId: t.MppQueryID.ServerID, + TaskId: t.ID, + MppVersion: t.MppVersion.ToInt64(), + ConnectionId: t.SessionID, + ConnectionAlias: t.SessionAlias, } if t.ID != -1 { meta.Address = t.Meta.GetAddress() @@ -155,6 +159,8 @@ type MPPDispatchRequest struct { ReportExecutionSummary bool State MppTaskStates ResourceGroupName string + ConnectionID uint64 + ConnectionAlias string } // CancelMPPTasksParam represents parameter for MPPClient's CancelMPPTasks diff --git a/pkg/meta/BUILD.bazel b/pkg/meta/BUILD.bazel index af33205d801f8..da1708f16099a 100644 --- a/pkg/meta/BUILD.bazel +++ b/pkg/meta/BUILD.bazel @@ -34,6 +34,7 @@ go_test( shard_count = 12, deps = [ "//pkg/kv", + "//pkg/parser/ast", "//pkg/parser/model", "//pkg/store/mockstore", "//pkg/testkit/testsetup", diff --git a/pkg/meta/autoid/BUILD.bazel b/pkg/meta/autoid/BUILD.bazel index 586c4a54974c9..7a13113d39d81 100644 --- a/pkg/meta/autoid/BUILD.bazel +++ b/pkg/meta/autoid/BUILD.bazel @@ -62,7 +62,6 @@ go_test( "@com_github_pingcap_errors//:errors", "@com_github_pingcap_failpoint//:failpoint", "@com_github_stretchr_testify//require", - "@io_etcd_go_etcd_client_v3//:client", "@org_uber_go_goleak//:goleak", ], ) diff --git a/pkg/meta/autoid/autoid.go b/pkg/meta/autoid/autoid.go index afe0bb576613b..3dd48a63b0917 100644 --- a/pkg/meta/autoid/autoid.go +++ b/pkg/meta/autoid/autoid.go @@ -38,7 +38,6 @@ import ( "github.com/pingcap/tidb/pkg/util/tracing" "github.com/tikv/client-go/v2/txnkv/txnsnapshot" tikvutil "github.com/tikv/client-go/v2/util" - clientv3 "go.etcd.io/etcd/client/v3" "go.uber.org/zap" ) @@ -574,12 +573,12 @@ func newSinglePointAlloc(r Requirement, dbID, tblID int64, isUnsigned bool) *sin isUnsigned: isUnsigned, keyspaceID: keyspaceID, } - if r.GetEtcdClient() == nil { + if r.AutoIDClient() == nil { // Only for test in mockstore - spa.clientDiscover = clientDiscover{} + spa.ClientDiscover = &ClientDiscover{} spa.mu.AutoIDAllocClient = MockForTest(r.Store()) } else { - spa.clientDiscover = clientDiscover{etcdCli: r.GetEtcdClient()} + spa.ClientDiscover = r.AutoIDClient() } // mockAutoIDChange failpoint is not implemented in this allocator, so fallback to use the default one. @@ -594,7 +593,7 @@ func newSinglePointAlloc(r Requirement, dbID, tblID int64, isUnsigned bool) *sin // Requirement is the parameter required by NewAllocator type Requirement interface { Store() kv.Storage - GetEtcdClient() *clientv3.Client + AutoIDClient() *ClientDiscover } // NewAllocator returns a new auto increment id generator on the store. diff --git a/pkg/meta/autoid/autoid_service.go b/pkg/meta/autoid/autoid_service.go index 982fae84091ac..3334e9b6af74a 100644 --- a/pkg/meta/autoid/autoid_service.go +++ b/pkg/meta/autoid/autoid_service.go @@ -40,11 +40,12 @@ type singlePointAlloc struct { tblID int64 lastAllocated int64 isUnsigned bool - clientDiscover + *ClientDiscover keyspaceID uint32 } -type clientDiscover struct { +// ClientDiscover is used to get the AutoIDAllocClient, it creates the grpc connection with autoid service leader. +type ClientDiscover struct { // This the etcd client for service discover etcdCli *clientv3.Client // This is the real client for the AutoIDAlloc service @@ -61,7 +62,15 @@ const ( autoIDLeaderPath = "tidb/autoid/leader" ) -func (d *clientDiscover) GetClient(ctx context.Context) (autoid.AutoIDAllocClient, error) { +// NewClientDiscover creates a ClientDiscover object. +func NewClientDiscover(etcdCli *clientv3.Client) *ClientDiscover { + return &ClientDiscover{ + etcdCli: etcdCli, + } +} + +// GetClient gets the AutoIDAllocClient. +func (d *ClientDiscover) GetClient(ctx context.Context) (autoid.AutoIDAllocClient, error) { d.mu.RLock() cli := d.mu.AutoIDAllocClient if cli != nil { @@ -140,7 +149,7 @@ retry: if err != nil { if strings.Contains(err.Error(), "rpc error") { time.Sleep(backoffDuration) - sp.resetConn(err) + sp.ResetConn(err) goto retry } return 0, 0, errors.Trace(err) @@ -157,15 +166,19 @@ retry: const backoffDuration = 200 * time.Millisecond -func (sp *singlePointAlloc) resetConn(reason error) { - logutil.BgLogger().Info("reset grpc connection", zap.String("category", "autoid client"), - zap.String("reason", reason.Error())) +// ResetConn reset the AutoIDAllocClient and underlying grpc connection. +// The next GetClient() call will recreate the client connecting to the correct leader by querying etcd. +func (d *ClientDiscover) ResetConn(reason error) { + if reason != nil { + logutil.BgLogger().Info("reset grpc connection", zap.String("category", "autoid client"), + zap.String("reason", reason.Error())) + } var grpcConn *grpc.ClientConn - sp.mu.Lock() - grpcConn = sp.mu.ClientConn - sp.mu.AutoIDAllocClient = nil - sp.mu.ClientConn = nil - sp.mu.Unlock() + d.mu.Lock() + grpcConn = d.mu.ClientConn + d.mu.AutoIDAllocClient = nil + d.mu.ClientConn = nil + d.mu.Unlock() // Close grpc.ClientConn to release resource. if grpcConn != nil { err := grpcConn.Close() @@ -212,7 +225,7 @@ retry: if err != nil { if strings.Contains(err.Error(), "rpc error") { time.Sleep(backoffDuration) - sp.resetConn(err) + sp.ResetConn(err) goto retry } return errors.Trace(err) diff --git a/pkg/meta/autoid/autoid_test.go b/pkg/meta/autoid/autoid_test.go index 6e5b85b7eb701..d4dc639c680c3 100644 --- a/pkg/meta/autoid/autoid_test.go +++ b/pkg/meta/autoid/autoid_test.go @@ -33,7 +33,6 @@ import ( "github.com/pingcap/tidb/pkg/store/mockstore" "github.com/pingcap/tidb/pkg/util" "github.com/stretchr/testify/require" - clientv3 "go.etcd.io/etcd/client/v3" ) type mockRequirement struct { @@ -44,7 +43,7 @@ func (r mockRequirement) Store() kv.Storage { return r.Storage } -func (r mockRequirement) GetEtcdClient() *clientv3.Client { +func (r mockRequirement) AutoIDClient() *autoid.ClientDiscover { return nil } diff --git a/pkg/meta/meta.go b/pkg/meta/meta.go index b43a039647928..79ac5085a7630 100644 --- a/pkg/meta/meta.go +++ b/pkg/meta/meta.go @@ -78,6 +78,7 @@ var ( mPolicyGlobalID = []byte("PolicyGlobalID") mPolicyMagicByte = CurrentMagicByteVer mDDLTableVersion = []byte("DDLTableVersion") + mBDRRole = []byte("BDRRole") mMetaDataLock = []byte("metadataLock") // the id for 'default' group, the internal ddl can ensure // user created resource group won't duplicate with this id. @@ -680,10 +681,23 @@ func (m *Meta) CreateTableOrView(dbID int64, tableInfo *model.TableInfo) error { return m.txn.HSet(dbKey, tableKey, data) } +// SetBDRRole write BDR role into storage. +func (m *Meta) SetBDRRole(role string) error { + return errors.Trace(m.txn.Set(mBDRRole, []byte(role))) +} + +// GetBDRRole get BDR role from storage. +func (m *Meta) GetBDRRole() (string, error) { + v, err := m.txn.Get(mBDRRole) + if err != nil { + return "", errors.Trace(err) + } + return string(v), nil +} + // SetDDLTables write a key into storage. func (m *Meta) SetDDLTables(ddlTableVersion DDLTableVersion) error { - err := m.txn.Set(mDDLTableVersion, ddlTableVersion.Bytes()) - return errors.Trace(err) + return errors.Trace(m.txn.Set(mDDLTableVersion, ddlTableVersion.Bytes())) } // CheckDDLTableVersion check if the tables related to concurrent DDL exists. diff --git a/pkg/meta/meta_test.go b/pkg/meta/meta_test.go index abeaf7172fbd4..014f67d1433ea 100644 --- a/pkg/meta/meta_test.go +++ b/pkg/meta/meta_test.go @@ -24,6 +24,7 @@ import ( "github.com/pingcap/errors" "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/meta" + "github.com/pingcap/tidb/pkg/parser/ast" "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/store/mockstore" "github.com/pingcap/tidb/pkg/util" @@ -446,6 +447,15 @@ func TestMeta(t *testing.T) { require.NoError(t, err) require.Equal(t, schemaDiff, readDiff) + // Test for BDR role + role, err := m.GetBDRRole() + require.NoError(t, err) + require.Len(t, role, 0) + require.NoError(t, m.SetBDRRole(string(ast.BDRRolePrimary))) + role, err = m.GetBDRRole() + require.NoError(t, err) + require.Equal(t, string(ast.BDRRolePrimary), role) + err = txn.Commit(context.Background()) require.NoError(t, err) diff --git a/pkg/metrics/grafana/tidb.json b/pkg/metrics/grafana/tidb.json index 7c1c8fd1dd616..ee481c8902f91 100644 --- a/pkg/metrics/grafana/tidb.json +++ b/pkg/metrics/grafana/tidb.json @@ -14670,310 +14670,6 @@ "alignLevel": null } }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "${DS_TEST-CLUSTER}", - "fieldConfig": { - "defaults": {}, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 1 - }, - "hiddenSeries": false, - "id": 321, - "interval": "1s", - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.5.11", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "exemplar": true, - "expr": "time() - timestamp(tidb_disttask_start_time{k8s_cluster=\"$k8s_cluster\",tidb_cluster=\"$tidb_cluster\",status=\"waiting\"})", - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{task_type}}_{{task_id}}", - "queryType": "randomWalk", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Task Waiting Duraion", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:121", - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "$$hashKey": "object:122", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "${DS_TEST-CLUSTER}", - "fieldConfig": { - "defaults": {}, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 9 - }, - "hiddenSeries": false, - "id": 323, - "interval": "1s", - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "maxDataPoints": null, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.5.11", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "exemplar": true, - "expr": "time() - timestamp(tidb_disttask_start_time{k8s_cluster=\"$k8s_cluster\",tidb_cluster=\"$tidb_cluster\",status=\"dispatching\"})", - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{task_type}}_{{task_id}}", - "queryType": "randomWalk", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Task Dispatching Duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:275", - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "$$hashKey": "object:276", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "${DS_TEST-CLUSTER}", - "fieldConfig": { - "defaults": {}, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 20 - }, - "hiddenSeries": false, - "id": 325, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.5.11", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "exemplar": true, - "expr": "sum(tidb_disttask_subtask_cnt{k8s_cluster=\"$k8s_cluster\", tidb_cluster=\"$tidb_cluster\", instance=~\"$instance\", status=~\"pending|running|revert_pending|reverting|paused\"}) by (task_id)", - "interval": "", - "legendFormat": "", - "queryType": "randomWalk", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Running Dist Task Subtasks", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, { "aliasColors": {}, "bars": false, @@ -15021,209 +14717,26 @@ "targets": [ { "exemplar": true, - "expr": "sum(tidb_disttask_subtask_cnt{k8s_cluster=\"$k8s_cluster\", tidb_cluster=\"$tidb_cluster\", instance=~\"$instance\", status=~\"succeed|failed|canceled|reverted|revert_failed\"}) by (task_id)", + "expr": "sum(tidb_disttask_subtask_cnt{k8s_cluster=\"$k8s_cluster\", tidb_cluster=\"$tidb_cluster\", instance=~\"$instance\", status=~\"succeed|failed|canceled|reverted|revert_failed\"}) by (task_id, task_type)", "interval": "", - "legendFormat": "", + "legendFormat": "{{task_type}}_{{task_id}}_completed_cnt", "queryType": "randomWalk", "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Finished Dist Task Subtasks", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "${DS_TEST-CLUSTER}", - "fieldConfig": { - "defaults": {}, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 28 - }, - "hiddenSeries": false, - "id": 327, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.5.11", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ { "exemplar": true, - "expr": "sum by (task_id) (increase(tidb_disttask_subtask_cnt{k8s_cluster=\"$k8s_cluster\", tidb_cluster=\"$tidb_cluster\", instance=~\"$instance\", status=\"succeed\"}[1m]))", + "expr": "sum(tidb_disttask_subtask_cnt{k8s_cluster=\"$k8s_cluster\", tidb_cluster=\"$tidb_cluster\", instance=~\"$instance\"}) by (task_id, task_type)", "interval": "", - "legendFormat": "task_id_{{task_id}}", + "legendFormat": "{{task_type}}_{{task_id}}_total_cnt", "queryType": "randomWalk", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Subtasks Complete Speed", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "${DS_TEST-CLUSTER}", - "description": "", - "fieldConfig": { - "defaults": {}, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 28 - }, - "hiddenSeries": false, - "id": 324, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.5.11", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "exemplar": true, - "expr": "increase(tidb_disttask_subtask_cnt{k8s_cluster=\"$k8s_cluster\", tidb_cluster=\"$tidb_cluster\", instance=~\"$instance\", status=\"succeed\"}[1m])", - "interval": "", - "legendFormat": "{{instance}}", - "queryType": "randomWalk", - "refId": "A" + "refId": "B" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Subtask Complete Speed in Each TiDB", + "title": "Dist Task Subtasks", "tooltip": { "shared": true, "sort": 0, diff --git a/pkg/param/binary_params.go b/pkg/param/binary_params.go index ce016f5016918..602f41e9aab1f 100644 --- a/pkg/param/binary_params.go +++ b/pkg/param/binary_params.go @@ -138,6 +138,7 @@ func ExecArgs(typectx types.Context, binaryParams []BinaryParam) (params []expre continue case mysql.TypeDuration: + fsp := 0 switch len(binaryParams[i].Val) { case 0: tmp = "0" @@ -155,13 +156,14 @@ func ExecArgs(typectx types.Context, binaryParams []BinaryParam) (params []expre return } _, tmp = binaryDurationWithMS(1, binaryParams[i].Val, isNegative) + fsp = types.MaxFsp default: err = mysql.ErrMalformPacket return } // TODO: generate the duration datum directly var dur types.Duration - dur, _, err = types.ParseDuration(typectx, tmp.(string), types.MaxFsp) + dur, _, err = types.ParseDuration(typectx, tmp.(string), fsp) err = typectx.HandleTruncate(err) if err != nil { return diff --git a/pkg/parser/OWNERS b/pkg/parser/OWNERS index ce80dfee9729d..c3abf5ba6cc7c 100644 --- a/pkg/parser/OWNERS +++ b/pkg/parser/OWNERS @@ -2,6 +2,9 @@ options: no_parent_owners: true filters: - "(OWNERS|parser\\.y)$": + "(parser\\.y)$": approvers: - sig-critical-approvers-parser + ".*": + approvers: + - sig-approvers-parser diff --git a/pkg/parser/ast/ddl.go b/pkg/parser/ast/ddl.go index 2ed5135215208..8211737d8ffd0 100644 --- a/pkg/parser/ast/ddl.go +++ b/pkg/parser/ast/ddl.go @@ -4417,9 +4417,10 @@ func (n *RecoverTableStmt) Accept(v Visitor) (Node, bool) { type FlashBackToTimestampStmt struct { ddlNode - FlashbackTS ExprNode - Tables []*TableName - DBName model.CIStr + FlashbackTS ExprNode + FlashbackTSO uint64 + Tables []*TableName + DBName model.CIStr } // Restore implements Node interface @@ -4441,9 +4442,14 @@ func (n *FlashBackToTimestampStmt) Restore(ctx *format.RestoreCtx) error { } else { ctx.WriteKeyWord("CLUSTER") } - ctx.WriteKeyWord(" TO TIMESTAMP ") - if err := n.FlashbackTS.Restore(ctx); err != nil { - return errors.Annotate(err, "An error occurred while splicing FlashBackToTimestampStmt.FlashbackTS") + if n.FlashbackTSO == 0 { + ctx.WriteKeyWord(" TO TIMESTAMP ") + if err := n.FlashbackTS.Restore(ctx); err != nil { + return errors.Annotate(err, "An error occurred while splicing FlashBackToTimestampStmt.FlashbackTS") + } + } else { + ctx.WriteKeyWord(" TO TSO ") + ctx.WritePlainf("%d", n.FlashbackTSO) } return nil } @@ -4464,11 +4470,14 @@ func (n *FlashBackToTimestampStmt) Accept(v Visitor) (Node, bool) { n.Tables[i] = node.(*TableName) } } - node, ok := n.FlashbackTS.Accept(v) - if !ok { - return n, false + + if n.FlashbackTSO == 0 { + node, ok := n.FlashbackTS.Accept(v) + if !ok { + return n, false + } + n.FlashbackTS = node.(ExprNode) } - n.FlashbackTS = node.(ExprNode) return v.Leave(n) } diff --git a/pkg/parser/ast/dml.go b/pkg/parser/ast/dml.go index 7636ebf98d9b7..69ea4efb3dd6c 100644 --- a/pkg/parser/ast/dml.go +++ b/pkg/parser/ast/dml.go @@ -2978,6 +2978,7 @@ const ( ShowCreateResourceGroup ShowImportJobs ShowCreateProcedure + ShowBinlogStatus ) const ( @@ -3067,6 +3068,8 @@ func (n *ShowStmt) Restore(ctx *format.RestoreCtx) error { ctx.WriteKeyWord("SHOW ") switch n.Tp { + case ShowBinlogStatus: + ctx.WriteKeyWord("BINARY LOG STATUS") case ShowCreateTable: ctx.WriteKeyWord("CREATE TABLE ") if err := n.Table.Restore(ctx); err != nil { diff --git a/pkg/parser/ast/misc.go b/pkg/parser/ast/misc.go index 0a7f028482289..0a909479cd019 100644 --- a/pkg/parser/ast/misc.go +++ b/pkg/parser/ast/misc.go @@ -800,6 +800,8 @@ const ( SetNames = "SetNAMES" // SetCharset is the const for set charset stmt. SetCharset = "SetCharset" + // TiDBCloudStorageURI is the const for set tidb_cloud_storage_uri stmt. + TiDBCloudStorageURI = "tidb_cloud_storage_uri" ) // VariableAssignment is a variable assignment struct. @@ -838,7 +840,10 @@ func (n *VariableAssignment) Restore(ctx *format.RestoreCtx) error { ctx.WriteName(n.Name) ctx.WritePlain("=") } - if err := n.Value.Restore(ctx); err != nil { + if n.Name == TiDBCloudStorageURI { + // need to redact the url for safety when `show processlist;` + ctx.WritePlain(RedactURL(n.Value.(ValueExpr).GetString())) + } else if err := n.Value.Restore(ctx); err != nil { return errors.Annotate(err, "An error occurred while restore VariableAssignment.Value") } if n.ExtendValue != nil { @@ -1109,6 +1114,15 @@ func (n *SetStmt) Accept(v Visitor) (Node, bool) { return v.Leave(n) } +// SecureText implements SensitiveStatement interface. +// need to redact the tidb_cloud_storage_url for safety when `show processlist;` +func (n *SetStmt) SecureText() string { + redactedStmt := *n + var sb strings.Builder + _ = redactedStmt.Restore(format.NewRestoreCtx(format.DefaultRestoreFlags, &sb)) + return sb.String() +} + // SetConfigStmt is the statement to set cluster configs. type SetConfigStmt struct { stmtNode @@ -2291,7 +2305,7 @@ type AdminStmtType int // Admin statement types. const ( - AdminShowDDL = iota + 1 + AdminShowDDL AdminStmtType = iota + 1 AdminCheckTable AdminShowDDLJobs AdminCancelDDLJobs @@ -2318,6 +2332,8 @@ const ( AdminResetTelemetryID AdminReloadStatistics AdminFlushPlanCache + AdminSetBDRRole + AdminShowBDRRole ) // HandleRange represents a range where handle value >= Begin and < End. @@ -2326,6 +2342,16 @@ type HandleRange struct { End int64 } +// BDRRole represents the role of the cluster in BDR mode. +type BDRRole string + +const ( + BDRRoleNone BDRRole = "none" + BDRRolePrimary BDRRole = "primary" + BDRRoleSecondary BDRRole = "secondary" + BDRRoleLocalOnly BDRRole = "local_only" +) + type StatementScope int const ( @@ -2413,6 +2439,7 @@ type AdminStmt struct { Where ExprNode StatementScope StatementScope LimitSimple LimitSimple + BDRRole BDRRole } // Restore implements Node interface. @@ -2567,6 +2594,21 @@ func (n *AdminStmt) Restore(ctx *format.RestoreCtx) error { } else if n.StatementScope == StatementScopeGlobal { ctx.WriteKeyWord("FLUSH GLOBAL PLAN_CACHE") } + case AdminSetBDRRole: + switch n.BDRRole { + case BDRRoleNone: + ctx.WriteKeyWord("SET BDR ROLE NONE") + case BDRRolePrimary: + ctx.WriteKeyWord("SET BDR ROLE PRIMARY") + case BDRRoleSecondary: + ctx.WriteKeyWord("SET BDR ROLE SECONDARY") + case BDRRoleLocalOnly: + ctx.WriteKeyWord("SET BDR ROLE LOCAL_ONLY") + default: + return errors.New("Unsupported BDR role") + } + case AdminShowBDRRole: + ctx.WriteKeyWord("SHOW BDR ROLE") default: return errors.New("Unsupported AdminStmt type") } diff --git a/pkg/parser/lexer.go b/pkg/parser/lexer.go index 66d47a1b3df20..a6b79b5251deb 100644 --- a/pkg/parser/lexer.go +++ b/pkg/parser/lexer.go @@ -278,6 +278,15 @@ func (s *Scanner) Lex(v *yySymType) int { v.offset = pos.Offset return toTimestamp } + + if tok1 == tsoType && tok2 == intLit { + _, pos, lit = s.scan() + v.ident = fmt.Sprintf("%s %s", v.ident, lit) + s.lastKeyword = toTSO + s.lastScanOffset = pos.Offset + v.offset = pos.Offset + return toTSO + } } // fix shift/reduce conflict with DEFINED NULL BY xxx OPTIONALLY ENCLOSED if tok == optionally { diff --git a/pkg/parser/misc.go b/pkg/parser/misc.go index 434edb2d790ac..d772c17dfbd62 100644 --- a/pkg/parser/misc.go +++ b/pkg/parser/misc.go @@ -184,6 +184,7 @@ var tokenMap = map[string]int{ "BACKEND": backend, "BACKUP": backup, "BACKUPS": backups, + "BDR": bdr, "BEGIN": begin, "BETWEEN": between, "BERNOULLI": bernoulli, @@ -491,9 +492,11 @@ var tokenMap = map[string]int{ "LOCAL": local, "LOCALTIME": localTime, "LOCALTIMESTAMP": localTs, + "LOCAL_ONLY": local_only, "LOCATION": location, "LOCK": lock, "LOCKED": locked, + "LOG": log, "LOGS": logs, "LONG": long, "LONGBLOB": longblobType, @@ -684,6 +687,7 @@ var tokenMap = map[string]int{ "SCHEMAS": databases, "SECOND_MICROSECOND": secondMicrosecond, "SECOND": second, + "SECONDARY": secondary, "SECONDARY_ENGINE": secondaryEngine, "SECONDARY_LOAD": secondaryLoad, "SECONDARY_UNLOAD": secondaryUnload, @@ -830,6 +834,7 @@ var tokenMap = map[string]int{ "TRUE": trueKwd, "TRUNCATE": truncate, "TRUE_CARD_COST": trueCardCost, + "TSO": tsoType, "TTL": ttl, "TTL_ENABLE": ttlEnable, "TTL_JOB_INTERVAL": ttlJobInterval, @@ -895,7 +900,7 @@ var tokenMap = map[string]int{ "REUSE": reuse, } -// See https://dev.mysql.com/doc/refman/5.7/en/function-resolution.html for details. +// See https://dev.mysql.com/doc/refman/8.0/en/function-resolution.html for details. // ADDDATE, SESSION_USER, SUBDATE, and SYSTEM_USER are exceptions because they are actually recognized as // identifiers even in `create table adddate (a int)`. var btFuncTokenMap = map[string]int{ diff --git a/pkg/parser/model/reorg.go b/pkg/parser/model/reorg.go index 68a9f27a0d374..b54e30f2574d0 100644 --- a/pkg/parser/model/reorg.go +++ b/pkg/parser/model/reorg.go @@ -28,6 +28,7 @@ type DDLReorgMeta struct { WarningsCount map[errors.ErrorID]int64 `json:"warnings_count"` Location *TimeZoneLocation `json:"location"` ReorgTp ReorgType `json:"reorg_tp"` + IsFastReorg bool `json:"is_fast_reorg"` IsDistReorg bool `json:"is_dist_reorg"` UseCloudStorage bool `json:"use_cloud_storage"` ResourceGroupName string `json:"resource_group_name"` diff --git a/pkg/parser/mysql/const.go b/pkg/parser/mysql/const.go index 012b71a0c80f9..8c9e68f356e86 100644 --- a/pkg/parser/mysql/const.go +++ b/pkg/parser/mysql/const.go @@ -642,6 +642,9 @@ const ( CursorTypeScrollable ) +// ZlibCompressDefaultLevel is the zlib compression level for the compressed protocol +const ZlibCompressDefaultLevel = 6 + const ( // CompressionNone is no compression in use CompressionNone = iota diff --git a/pkg/parser/parser.go b/pkg/parser/parser.go index d7d0314ca8517..469ba9d88d36e 100644 --- a/pkg/parser/parser.go +++ b/pkg/parser/parser.go @@ -56,2413 +56,2426 @@ type yyXError struct { } const ( - yyDefault = 58193 + yyDefault = 58199 yyEOFCode = 57344 - account = 57595 - action = 57596 - add = 57362 - addDate = 57961 - admin = 58077 - advise = 57597 - after = 57598 - against = 57599 - ago = 57600 - algorithm = 57601 - all = 57363 - alter = 57364 - always = 57602 - analyze = 57365 - and = 57366 - andand = 57357 - andnot = 58153 - any = 57603 - approxCountDistinct = 57962 - approxPercentile = 57963 - array = 57367 - as = 57368 - asc = 57369 - ascii = 57604 + account = 57596 + action = 57597 + add = 57363 + addDate = 57966 + admin = 58083 + advise = 57598 + after = 57599 + against = 57600 + ago = 57601 + algorithm = 57602 + all = 57364 + alter = 57365 + always = 57603 + analyze = 57366 + and = 57367 + andand = 57358 + andnot = 58159 + any = 57604 + approxCountDistinct = 57967 + approxPercentile = 57968 + array = 57368 + as = 57369 + asc = 57370 + ascii = 57605 asof = 57347 - assignmentEq = 58154 - attribute = 57605 - attributes = 57606 - autoIdCache = 57611 - autoIncrement = 57612 - autoRandom = 57613 - autoRandomBase = 57614 - avg = 57615 - avgRowLength = 57616 - backend = 57617 - background = 58075 - backup = 57618 - backups = 57619 - batch = 58078 - begin = 57620 - bernoulli = 57621 - between = 57370 - bigIntType = 57371 - binaryType = 57372 - binding = 57622 - bindingCache = 57623 - bindings = 57624 - binlog = 57625 - bitAnd = 57964 - bitLit = 58152 - bitOr = 57965 - bitType = 57626 - bitXor = 57966 - blobType = 57373 - block = 57627 - boolType = 57629 - booleanType = 57628 - both = 57374 - bound = 57967 - br = 57968 - briefType = 57969 - btree = 57630 - buckets = 58079 - builtinApproxCountDistinct = 58126 - builtinApproxPercentile = 58127 - builtinBitAnd = 58121 - builtinBitOr = 58122 - builtinBitXor = 58123 - builtinCast = 58124 - builtinCount = 58125 - builtinCurDate = 58128 - builtinCurTime = 58129 - builtinDateAdd = 58130 - builtinDateSub = 58131 - builtinExtract = 58132 - builtinGroupConcat = 58133 - builtinMax = 58134 - builtinMin = 58135 - builtinNow = 58136 - builtinPosition = 58137 - builtinStddevPop = 58141 - builtinStddevSamp = 58142 - builtinSubstring = 58138 - builtinSum = 58139 - builtinSysDate = 58140 - builtinTranslate = 58143 - builtinTrim = 58144 - builtinUser = 58145 - builtinVarPop = 58146 - builtinVarSamp = 58147 - builtins = 58080 - burstable = 57970 - by = 57375 - byteType = 57631 - cache = 57632 - calibrate = 57633 - call = 57376 - cancel = 58081 - capture = 57634 - cardinality = 58082 - cascade = 57377 - cascaded = 57635 - caseKwd = 57378 - cast = 57971 - causal = 57636 - chain = 57637 - change = 57379 - charType = 57381 - character = 57380 - charsetKwd = 57638 - check = 57382 - checkpoint = 57639 - checksum = 57640 - cipher = 57641 - cleanup = 57642 - client = 57643 - clientErrorsSummary = 57644 - close = 57670 - cluster = 57671 - clustered = 57672 - cmSketch = 58083 - coalesce = 57645 - collate = 57383 - collation = 57646 - column = 57384 - columnFormat = 57647 - columnStatsUsage = 58084 - columns = 57648 - comment = 57650 - commit = 57651 - committed = 57652 - compact = 57653 - compressed = 57654 - compression = 57655 - concurrency = 57656 - config = 57649 - connection = 57657 - consistency = 57658 - consistent = 57659 - constraint = 57385 - constraints = 57973 - context = 57660 - continueKwd = 57386 - convert = 57387 - cooldown = 58071 - copyKwd = 57972 - correlation = 58085 - cpu = 57661 - create = 57388 - createTableSelect = 58177 - cross = 57389 - csvBackslashEscape = 57662 - csvDelimiter = 57663 - csvHeader = 57664 - csvNotNull = 57665 - csvNull = 57666 - csvSeparator = 57667 - csvTrimLastSeparators = 57668 - cumeDist = 57390 - curDate = 57975 - curTime = 57974 - current = 57669 - currentDate = 57391 - currentRole = 57395 - currentTime = 57392 - currentTs = 57393 - currentUser = 57394 - cursor = 57396 - cycle = 57673 - data = 57674 - database = 57397 - databases = 57398 - dateAdd = 57976 - dateSub = 57977 - dateType = 57676 - datetimeType = 57675 - day = 57677 - dayHour = 57399 - dayMicrosecond = 57400 - dayMinute = 57401 - daySecond = 57402 - ddl = 58086 - deallocate = 57678 - decLit = 58149 - decimalType = 57403 - declare = 57679 - defaultKwd = 57404 - defined = 57978 - definer = 57680 - delayKeyWrite = 57681 - delayed = 57405 - deleteKwd = 57406 - denseRank = 57407 - dependency = 58087 - depth = 58088 - desc = 57408 - describe = 57409 - digest = 57682 - directory = 57683 - disable = 57684 - disabled = 57685 - discard = 57686 - disk = 57687 - distinct = 57410 - distinctRow = 57411 - div = 57412 - do = 57688 - dotType = 57979 - doubleAtIdentifier = 57354 - doubleType = 57413 - drainer = 58089 - drop = 57414 - dry = 58090 - dryRun = 58070 - dual = 57415 - dump = 57980 - duplicate = 57689 - dynamic = 57690 - elseIfKwd = 57416 - elseKwd = 57417 - empty = 58167 - enable = 57691 - enabled = 57692 - enclosed = 57418 - encryption = 57693 - end = 57694 - endTime = 57982 - enforced = 57695 - engine = 57696 - engines = 57697 - enum = 57698 - eq = 58155 + assignmentEq = 58160 + attribute = 57606 + attributes = 57607 + autoIdCache = 57612 + autoIncrement = 57613 + autoRandom = 57614 + autoRandomBase = 57615 + avg = 57616 + avgRowLength = 57617 + backend = 57618 + background = 58081 + backup = 57619 + backups = 57620 + batch = 58084 + bdr = 57621 + begin = 57622 + bernoulli = 57623 + between = 57371 + bigIntType = 57372 + binaryType = 57373 + binding = 57624 + bindingCache = 57625 + bindings = 57626 + binlog = 57627 + bitAnd = 57969 + bitLit = 58158 + bitOr = 57970 + bitType = 57628 + bitXor = 57971 + blobType = 57374 + block = 57629 + boolType = 57631 + booleanType = 57630 + both = 57375 + bound = 57972 + br = 57973 + briefType = 57974 + btree = 57632 + buckets = 58085 + builtinApproxCountDistinct = 58132 + builtinApproxPercentile = 58133 + builtinBitAnd = 58127 + builtinBitOr = 58128 + builtinBitXor = 58129 + builtinCast = 58130 + builtinCount = 58131 + builtinCurDate = 58134 + builtinCurTime = 58135 + builtinDateAdd = 58136 + builtinDateSub = 58137 + builtinExtract = 58138 + builtinGroupConcat = 58139 + builtinMax = 58140 + builtinMin = 58141 + builtinNow = 58142 + builtinPosition = 58143 + builtinStddevPop = 58147 + builtinStddevSamp = 58148 + builtinSubstring = 58144 + builtinSum = 58145 + builtinSysDate = 58146 + builtinTranslate = 58149 + builtinTrim = 58150 + builtinUser = 58151 + builtinVarPop = 58152 + builtinVarSamp = 58153 + builtins = 58086 + burstable = 57975 + by = 57376 + byteType = 57633 + cache = 57634 + calibrate = 57635 + call = 57377 + cancel = 58087 + capture = 57636 + cardinality = 58088 + cascade = 57378 + cascaded = 57637 + caseKwd = 57379 + cast = 57976 + causal = 57638 + chain = 57639 + change = 57380 + charType = 57382 + character = 57381 + charsetKwd = 57640 + check = 57383 + checkpoint = 57641 + checksum = 57642 + cipher = 57643 + cleanup = 57644 + client = 57645 + clientErrorsSummary = 57646 + close = 57672 + cluster = 57673 + clustered = 57674 + cmSketch = 58089 + coalesce = 57647 + collate = 57384 + collation = 57648 + column = 57385 + columnFormat = 57649 + columnStatsUsage = 58090 + columns = 57650 + comment = 57652 + commit = 57653 + committed = 57654 + compact = 57655 + compressed = 57656 + compression = 57657 + concurrency = 57658 + config = 57651 + connection = 57659 + consistency = 57660 + consistent = 57661 + constraint = 57386 + constraints = 57978 + context = 57662 + continueKwd = 57387 + convert = 57388 + cooldown = 58077 + copyKwd = 57977 + correlation = 58091 + cpu = 57663 + create = 57389 + createTableSelect = 58183 + cross = 57390 + csvBackslashEscape = 57664 + csvDelimiter = 57665 + csvHeader = 57666 + csvNotNull = 57667 + csvNull = 57668 + csvSeparator = 57669 + csvTrimLastSeparators = 57670 + cumeDist = 57391 + curDate = 57980 + curTime = 57979 + current = 57671 + currentDate = 57392 + currentRole = 57396 + currentTime = 57393 + currentTs = 57394 + currentUser = 57395 + cursor = 57397 + cycle = 57675 + data = 57676 + database = 57398 + databases = 57399 + dateAdd = 57981 + dateSub = 57982 + dateType = 57678 + datetimeType = 57677 + day = 57679 + dayHour = 57400 + dayMicrosecond = 57401 + dayMinute = 57402 + daySecond = 57403 + ddl = 58092 + deallocate = 57680 + decLit = 58155 + decimalType = 57404 + declare = 57681 + defaultKwd = 57405 + defined = 57983 + definer = 57682 + delayKeyWrite = 57683 + delayed = 57406 + deleteKwd = 57407 + denseRank = 57408 + dependency = 58093 + depth = 58094 + desc = 57409 + describe = 57410 + digest = 57684 + directory = 57685 + disable = 57686 + disabled = 57687 + discard = 57688 + disk = 57689 + distinct = 57411 + distinctRow = 57412 + div = 57413 + do = 57690 + dotType = 57984 + doubleAtIdentifier = 57355 + doubleType = 57414 + drainer = 58095 + drop = 57415 + dry = 58096 + dryRun = 58076 + dual = 57416 + dump = 57985 + duplicate = 57691 + dynamic = 57692 + elseIfKwd = 57417 + elseKwd = 57418 + empty = 58173 + enable = 57693 + enabled = 57694 + enclosed = 57419 + encryption = 57695 + end = 57696 + endTime = 57987 + enforced = 57697 + engine = 57698 + engines = 57699 + enum = 57700 + eq = 58161 yyErrCode = 57345 - errorKwd = 57699 - escape = 57700 - escaped = 57419 - event = 57701 - events = 57702 - evolve = 57703 - exact = 57983 - except = 57423 - exchange = 57704 - exclusive = 57705 - execElapsed = 58069 - execute = 57706 - exists = 57420 - exit = 57421 - expansion = 57707 - expire = 57708 - explain = 57422 - exprPushdownBlacklist = 57984 - extended = 57709 - extract = 57985 - failedLoginAttempts = 57959 - falseKwd = 57424 - faultsSym = 57710 - fetch = 57425 - fields = 57711 - file = 57712 - first = 57713 - firstValue = 57426 - fixed = 57714 - flashback = 57986 - float4Type = 57428 - float8Type = 57429 - floatLit = 58148 - floatType = 57427 - flush = 57715 - follower = 57987 - followerConstraints = 57988 - followers = 57989 - following = 57717 - forKwd = 57430 - force = 57431 - foreign = 57432 - format = 57718 - found = 57716 - from = 57433 - full = 57719 - fullBackupStorage = 57990 - fulltext = 57434 - function = 57720 - gcTTL = 57992 - ge = 58156 - general = 57721 - generated = 57435 - getFormat = 57991 - global = 57722 - grant = 57436 - grants = 57723 - group = 57437 - groupConcat = 57993 - groups = 57438 - handler = 57724 - hash = 57725 - having = 57439 - help = 57726 - hexLit = 58151 - high = 58064 - highPriority = 57440 - higherThanComma = 58192 - higherThanParenthese = 58186 - hintComment = 57356 - histogram = 57727 - histogramsInFlight = 58110 - history = 57728 - hosts = 57729 - hour = 57730 - hourMicrosecond = 57441 - hourMinute = 57442 - hourSecond = 57443 - hypo = 57865 - identSQLErrors = 57732 - identified = 57731 + errorKwd = 57701 + escape = 57702 + escaped = 57420 + event = 57703 + events = 57704 + evolve = 57705 + exact = 57988 + except = 57424 + exchange = 57706 + exclusive = 57707 + execElapsed = 58075 + execute = 57708 + exists = 57421 + exit = 57422 + expansion = 57709 + expire = 57710 + explain = 57423 + exprPushdownBlacklist = 57989 + extended = 57711 + extract = 57990 + failedLoginAttempts = 57964 + falseKwd = 57425 + faultsSym = 57712 + fetch = 57426 + fields = 57713 + file = 57714 + first = 57715 + firstValue = 57427 + fixed = 57716 + flashback = 57991 + float4Type = 57429 + float8Type = 57430 + floatLit = 58154 + floatType = 57428 + flush = 57717 + follower = 57992 + followerConstraints = 57993 + followers = 57994 + following = 57719 + forKwd = 57431 + force = 57432 + foreign = 57433 + format = 57720 + found = 57718 + from = 57434 + full = 57721 + fullBackupStorage = 57995 + fulltext = 57435 + function = 57722 + gcTTL = 57997 + ge = 58162 + general = 57723 + generated = 57436 + getFormat = 57996 + global = 57724 + grant = 57437 + grants = 57725 + group = 57438 + groupConcat = 57998 + groups = 57439 + handler = 57726 + hash = 57727 + having = 57440 + help = 57728 + hexLit = 58157 + high = 58070 + highPriority = 57441 + higherThanComma = 58198 + higherThanParenthese = 58192 + hintComment = 57357 + histogram = 57729 + histogramsInFlight = 58116 + history = 57730 + hosts = 57731 + hour = 57732 + hourMicrosecond = 57442 + hourMinute = 57443 + hourSecond = 57444 + hypo = 57868 + identSQLErrors = 57734 + identified = 57733 identifier = 57346 - ifKwd = 57444 - ignore = 57445 - ilike = 57476 - importKwd = 57733 - imports = 57734 - in = 57446 - increment = 57735 - incremental = 57736 - index = 57447 - indexes = 57737 - infile = 57448 - inner = 57449 - inout = 57450 - inplace = 57995 - insert = 57457 - insertMethod = 57738 - insertValues = 58175 - instance = 57739 - instant = 57996 - int1Type = 57459 - int2Type = 57460 - int3Type = 57461 - int4Type = 57462 - int8Type = 57463 - intLit = 58150 - intType = 57458 - integerType = 57451 - internal = 57997 - intersect = 57452 - interval = 57453 - into = 57454 - invalid = 57355 - invisible = 57740 - invoker = 57741 - io = 57742 - ioReadBandwidth = 58067 - ioWriteBandwidth = 58068 - ipc = 57743 - is = 57456 - isolation = 57744 - issuer = 57745 - iterate = 57464 - job = 58092 - jobs = 58091 - join = 57465 - jsonArrayagg = 57998 - jsonObjectAgg = 57999 - jsonType = 57746 - jss = 58158 - juss = 58159 - key = 57466 - keyBlockSize = 57747 - keys = 57467 - kill = 57468 - labels = 57748 - lag = 57469 - language = 57749 - last = 57750 - lastBackup = 57751 - lastValue = 57470 - lastval = 57752 - le = 58157 - lead = 57471 - leader = 58000 - leaderConstraints = 58001 - leading = 57472 - learner = 58002 - learnerConstraints = 58003 - learners = 58004 - leave = 57473 - left = 57474 - less = 57753 - level = 57754 - like = 57475 - limit = 57477 - linear = 57479 - lines = 57478 - list = 57755 - load = 57480 - local = 57756 - localTime = 57481 - localTs = 57482 - location = 57758 - lock = 57483 - locked = 57757 - logs = 57759 - long = 57579 - longblobType = 57484 - longtextType = 57485 - low = 58066 - lowPriority = 57486 - lowerThanCharsetKwd = 58178 - lowerThanComma = 58191 - lowerThanCreateTableSelect = 58176 - lowerThanEq = 58188 - lowerThanFunction = 58183 - lowerThanInsertValues = 58174 - lowerThanKey = 58179 - lowerThanLocal = 58180 - lowerThanNot = 58190 - lowerThanOn = 58187 - lowerThanParenthese = 58185 - lowerThanRemove = 58181 - lowerThanSelectOpt = 58168 - lowerThanSelectStmt = 58173 - lowerThanSetKeyword = 58172 - lowerThanStringLitToken = 58171 - lowerThanValueKeyword = 58169 - lowerThanWith = 58170 - lowerThenOrder = 58182 - lsh = 58160 - master = 57760 - match = 57487 - max = 58006 - maxConnectionsPerHour = 57763 - maxQueriesPerHour = 57764 - maxRows = 57765 - maxUpdatesPerHour = 57766 - maxUserConnections = 57767 - maxValue = 57488 - max_idxnum = 57761 - max_minutes = 57762 - mb = 57768 - medium = 58065 - mediumIntType = 57490 - mediumblobType = 57489 - mediumtextType = 57491 - member = 57769 - memberof = 57349 - memory = 57770 - merge = 57771 - metadata = 58007 - microsecond = 57772 - middleIntType = 57492 - min = 58005 - minRows = 57773 - minValue = 57775 - minute = 57774 - minuteMicrosecond = 57493 - minuteSecond = 57494 - mod = 57495 - mode = 57776 - modify = 57777 - month = 57778 - names = 57779 - national = 57780 - natural = 57594 - ncharType = 57781 - neg = 58189 - neq = 58161 - neqSynonym = 58162 - never = 57782 - next = 57783 - next_row_id = 57994 - nextval = 57784 - no = 57785 - noWriteToBinLog = 57497 - nocache = 57786 - nocycle = 57787 - nodeID = 58093 - nodeState = 58094 - nodegroup = 57788 - nomaxvalue = 57789 - nominvalue = 57790 - nonclustered = 57791 - none = 57792 - not = 57496 - not2 = 58166 - now = 58008 - nowait = 57793 - nthValue = 57498 - ntile = 57499 - null = 57500 - nulleq = 58163 - nulls = 57795 - numericType = 57501 - nvarcharType = 57794 - odbcDateType = 57359 - odbcTimeType = 57360 - odbcTimestampType = 57361 - of = 57502 - off = 57796 - offset = 57797 - oltpReadOnly = 57798 - oltpReadWrite = 57799 - oltpWriteOnly = 57800 - on = 57503 - onDuplicate = 57802 - online = 57803 - only = 57804 - open = 57805 - optRuleBlacklist = 58009 - optimistic = 58095 - optimize = 57504 - option = 57505 - optional = 57806 - optionally = 57506 - optionallyEnclosedBy = 57350 - or = 57507 - order = 57508 - out = 57509 - outer = 57510 - outfile = 57455 - over = 57511 - packKeys = 57807 - pageSym = 57808 - paramMarker = 58164 - parser = 57809 - partial = 57810 - partition = 57512 - partitioning = 57811 - partitions = 57812 - password = 57813 - passwordLockTime = 57960 - pause = 57814 - per_db = 57816 - per_table = 57817 - percent = 57815 - percentRank = 57513 - pessimistic = 58096 - pipes = 57358 - pipesAsOr = 57818 - placement = 58010 - plan = 58011 - planCache = 58012 - plugins = 57819 - point = 57820 - policy = 57821 - position = 58013 - preSplitRegions = 57822 - preceding = 57823 - precisionType = 57514 - predicate = 58014 - prepare = 57824 - preserve = 57825 - primary = 57515 - primaryRegion = 58015 - priority = 58063 - privileges = 57826 - procedure = 57516 - process = 57827 - processlist = 57828 - profile = 57829 - profiles = 57830 - proxy = 57831 - pump = 58097 - purge = 57832 - quarter = 57833 - queries = 57834 - query = 57835 - queryLimit = 58074 - quick = 57836 - rangeKwd = 57517 - rank = 57518 - rateLimit = 57837 - read = 57519 - realType = 57520 - rebuild = 57838 - recent = 58016 - recover = 57839 - recursive = 57521 - redundant = 57840 - references = 57522 - regexpKwd = 57523 - region = 58120 - regions = 58119 - release = 57524 - reload = 57841 - remove = 57842 - rename = 57525 - reorganize = 57843 - repair = 57844 - repeat = 57526 - repeatable = 57845 - replace = 57527 - replayer = 58017 - replica = 57846 - replicas = 57847 - replication = 57848 - require = 57528 - required = 57849 - reset = 58118 - resource = 57850 - respect = 57851 - restart = 57852 - restore = 57853 - restoredTS = 58018 - restores = 57854 - restrict = 57529 - resume = 57855 - reuse = 57856 - reverse = 57857 - revoke = 57530 - right = 57531 - rlike = 57532 - role = 57858 - rollback = 57859 - rollup = 57860 - routine = 57861 - row = 57533 - rowCount = 57862 - rowFormat = 57863 - rowNumber = 57535 - rows = 57534 - rsh = 58165 - rtree = 57864 - ruRate = 58062 - run = 58098 - running = 58019 - s3 = 58020 - sampleRate = 58100 - samples = 58099 - san = 57866 - savepoint = 57867 - schedule = 58021 - second = 57868 - secondMicrosecond = 57536 - secondaryEngine = 57869 - secondaryLoad = 57870 - secondaryUnload = 57871 - security = 57872 - selectKwd = 57537 - sendCredentialsToTiKV = 57873 - separator = 57874 - sequence = 57875 - serial = 57876 - serializable = 57877 - session = 57878 - sessionStates = 58101 - set = 57538 - setval = 57879 - shardRowIDBits = 57880 - share = 57881 - shared = 57882 - show = 57539 - shutdown = 57883 - signed = 57884 - similar = 58073 - simple = 57885 - singleAtIdentifier = 57353 - skip = 57886 - skipSchemaFiles = 57887 - slave = 57888 - slow = 57889 - smallIntType = 57540 - snapshot = 57890 - some = 57891 - source = 57892 - spatial = 57541 - split = 58116 - sql = 57542 - sqlBigResult = 57543 - sqlBufferResult = 57893 - sqlCache = 57894 - sqlCalcFoundRows = 57544 - sqlNoCache = 57895 - sqlSmallResult = 57545 - sqlTsiDay = 57896 - sqlTsiHour = 57897 - sqlTsiMinute = 57898 - sqlTsiMonth = 57899 - sqlTsiQuarter = 57900 - sqlTsiSecond = 57901 - sqlTsiWeek = 57902 - sqlTsiYear = 57903 - sqlexception = 57546 - sqlstate = 57547 - sqlwarning = 57548 - ssl = 57549 - staleness = 58022 - start = 57904 - startTS = 58024 - startTime = 58023 - starting = 57550 - statistics = 58102 - stats = 58103 - statsAutoRecalc = 57905 - statsBuckets = 58106 - statsColChoice = 57609 - statsColList = 57610 - statsExtended = 57551 - statsHealthy = 58107 - statsHistograms = 58105 - statsLocked = 58109 - statsMeta = 58104 - statsOptions = 57607 - statsPersistent = 57906 - statsSamplePages = 57907 - statsSampleRate = 57608 - statsTopN = 58108 - status = 57908 - std = 58025 - stddev = 58026 - stddevPop = 58027 - stddevSamp = 58028 - stop = 58029 - storage = 57909 - stored = 57556 - straightJoin = 57552 - strict = 58030 - strictFormat = 57910 - stringLit = 57352 - strong = 58031 - subDate = 58032 - subject = 57911 - subpartition = 57912 - subpartitions = 57913 - substring = 58034 - sum = 58033 - super = 57914 - survivalPreferences = 58035 - swaps = 57915 - switchesSym = 57916 - system = 57917 - systemTime = 57918 - tableChecksum = 57919 - tableKwd = 57554 - tableRefPriority = 58184 - tableSample = 57555 - tables = 57920 - tablespace = 57921 - target = 58036 - taskTypes = 58037 - telemetry = 58111 - telemetryID = 58112 - temporary = 57922 - temptable = 57923 - terminated = 57557 - textType = 57924 - than = 57925 - then = 57558 - tiFlash = 58114 - tidb = 58113 - tidbCurrentTSO = 57553 - tidbJson = 58038 - tikvImporter = 57926 - timeDuration = 57981 - timeType = 57928 - timestampAdd = 58039 - timestampDiff = 58040 - timestampType = 57927 - tinyIntType = 57560 - tinyblobType = 57559 - tinytextType = 57561 - tls = 58041 - to = 57562 + ifKwd = 57445 + ignore = 57446 + ilike = 57477 + importKwd = 57735 + imports = 57736 + in = 57447 + increment = 57737 + incremental = 57738 + index = 57448 + indexes = 57739 + infile = 57449 + inner = 57450 + inout = 57451 + inplace = 58000 + insert = 57458 + insertMethod = 57740 + insertValues = 58181 + instance = 57741 + instant = 58001 + int1Type = 57460 + int2Type = 57461 + int3Type = 57462 + int4Type = 57463 + int8Type = 57464 + intLit = 58156 + intType = 57459 + integerType = 57452 + internal = 58002 + intersect = 57453 + interval = 57454 + into = 57455 + invalid = 57356 + invisible = 57742 + invoker = 57743 + io = 57744 + ioReadBandwidth = 58073 + ioWriteBandwidth = 58074 + ipc = 57745 + is = 57457 + isolation = 57746 + issuer = 57747 + iterate = 57465 + job = 58098 + jobs = 58097 + join = 57466 + jsonArrayagg = 58003 + jsonObjectAgg = 58004 + jsonType = 57748 + jss = 58164 + juss = 58165 + key = 57467 + keyBlockSize = 57749 + keys = 57468 + kill = 57469 + labels = 57750 + lag = 57470 + language = 57751 + last = 57752 + lastBackup = 57753 + lastValue = 57471 + lastval = 57754 + le = 58163 + lead = 57472 + leader = 58005 + leaderConstraints = 58006 + leading = 57473 + learner = 58007 + learnerConstraints = 58008 + learners = 58009 + leave = 57474 + left = 57475 + less = 57755 + level = 57756 + like = 57476 + limit = 57478 + linear = 57480 + lines = 57479 + list = 57757 + load = 57481 + local = 57758 + localTime = 57482 + localTs = 57483 + local_only = 57759 + location = 57761 + lock = 57484 + locked = 57760 + log = 58010 + logs = 57762 + long = 57580 + longblobType = 57485 + longtextType = 57486 + low = 58072 + lowPriority = 57487 + lowerThanCharsetKwd = 58184 + lowerThanComma = 58197 + lowerThanCreateTableSelect = 58182 + lowerThanEq = 58194 + lowerThanFunction = 58189 + lowerThanInsertValues = 58180 + lowerThanKey = 58185 + lowerThanLocal = 58186 + lowerThanNot = 58196 + lowerThanOn = 58193 + lowerThanParenthese = 58191 + lowerThanRemove = 58187 + lowerThanSelectOpt = 58174 + lowerThanSelectStmt = 58179 + lowerThanSetKeyword = 58178 + lowerThanStringLitToken = 58177 + lowerThanValueKeyword = 58175 + lowerThanWith = 58176 + lowerThenOrder = 58188 + lsh = 58166 + master = 57763 + match = 57488 + max = 58012 + maxConnectionsPerHour = 57766 + maxQueriesPerHour = 57767 + maxRows = 57768 + maxUpdatesPerHour = 57769 + maxUserConnections = 57770 + maxValue = 57489 + max_idxnum = 57764 + max_minutes = 57765 + mb = 57771 + medium = 58071 + mediumIntType = 57491 + mediumblobType = 57490 + mediumtextType = 57492 + member = 57772 + memberof = 57350 + memory = 57773 + merge = 57774 + metadata = 58013 + microsecond = 57775 + middleIntType = 57493 + min = 58011 + minRows = 57776 + minValue = 57778 + minute = 57777 + minuteMicrosecond = 57494 + minuteSecond = 57495 + mod = 57496 + mode = 57779 + modify = 57780 + month = 57781 + names = 57782 + national = 57783 + natural = 57595 + ncharType = 57784 + neg = 58195 + neq = 58167 + neqSynonym = 58168 + never = 57785 + next = 57786 + next_row_id = 57999 + nextval = 57787 + no = 57788 + noWriteToBinLog = 57498 + nocache = 57789 + nocycle = 57790 + nodeID = 58099 + nodeState = 58100 + nodegroup = 57791 + nomaxvalue = 57792 + nominvalue = 57793 + nonclustered = 57794 + none = 57795 + not = 57497 + not2 = 58172 + now = 58014 + nowait = 57796 + nthValue = 57499 + ntile = 57500 + null = 57501 + nulleq = 58169 + nulls = 57798 + numericType = 57502 + nvarcharType = 57797 + odbcDateType = 57360 + odbcTimeType = 57361 + odbcTimestampType = 57362 + of = 57503 + off = 57799 + offset = 57800 + oltpReadOnly = 57801 + oltpReadWrite = 57802 + oltpWriteOnly = 57803 + on = 57504 + onDuplicate = 57805 + online = 57806 + only = 57807 + open = 57808 + optRuleBlacklist = 58015 + optimistic = 58101 + optimize = 57505 + option = 57506 + optional = 57809 + optionally = 57507 + optionallyEnclosedBy = 57351 + or = 57508 + order = 57509 + out = 57510 + outer = 57511 + outfile = 57456 + over = 57512 + packKeys = 57810 + pageSym = 57811 + paramMarker = 58170 + parser = 57812 + partial = 57813 + partition = 57513 + partitioning = 57814 + partitions = 57815 + password = 57816 + passwordLockTime = 57965 + pause = 57817 + per_db = 57819 + per_table = 57820 + percent = 57818 + percentRank = 57514 + pessimistic = 58102 + pipes = 57359 + pipesAsOr = 57821 + placement = 58016 + plan = 58017 + planCache = 58018 + plugins = 57822 + point = 57823 + policy = 57824 + position = 58019 + preSplitRegions = 57825 + preceding = 57826 + precisionType = 57515 + predicate = 58020 + prepare = 57827 + preserve = 57828 + primary = 57516 + primaryRegion = 58021 + priority = 58069 + privileges = 57829 + procedure = 57517 + process = 57830 + processlist = 57831 + profile = 57832 + profiles = 57833 + proxy = 57834 + pump = 58103 + purge = 57835 + quarter = 57836 + queries = 57837 + query = 57838 + queryLimit = 58080 + quick = 57839 + rangeKwd = 57518 + rank = 57519 + rateLimit = 57840 + read = 57520 + realType = 57521 + rebuild = 57841 + recent = 58022 + recover = 57842 + recursive = 57522 + redundant = 57843 + references = 57523 + regexpKwd = 57524 + region = 58126 + regions = 58125 + release = 57525 + reload = 57844 + remove = 57845 + rename = 57526 + reorganize = 57846 + repair = 57847 + repeat = 57527 + repeatable = 57848 + replace = 57528 + replayer = 58023 + replica = 57849 + replicas = 57850 + replication = 57851 + require = 57529 + required = 57852 + reset = 58124 + resource = 57853 + respect = 57854 + restart = 57855 + restore = 57856 + restoredTS = 58024 + restores = 57857 + restrict = 57530 + resume = 57858 + reuse = 57859 + reverse = 57860 + revoke = 57531 + right = 57532 + rlike = 57533 + role = 57861 + rollback = 57862 + rollup = 57863 + routine = 57864 + row = 57534 + rowCount = 57865 + rowFormat = 57866 + rowNumber = 57536 + rows = 57535 + rsh = 58171 + rtree = 57867 + ruRate = 58068 + run = 58104 + running = 58025 + s3 = 58026 + sampleRate = 58106 + samples = 58105 + san = 57869 + savepoint = 57870 + schedule = 58027 + second = 57871 + secondMicrosecond = 57537 + secondary = 57872 + secondaryEngine = 57873 + secondaryLoad = 57874 + secondaryUnload = 57875 + security = 57876 + selectKwd = 57538 + sendCredentialsToTiKV = 57877 + separator = 57878 + sequence = 57879 + serial = 57880 + serializable = 57881 + session = 57882 + sessionStates = 58107 + set = 57539 + setval = 57883 + shardRowIDBits = 57884 + share = 57885 + shared = 57886 + show = 57540 + shutdown = 57887 + signed = 57888 + similar = 58079 + simple = 57889 + singleAtIdentifier = 57354 + skip = 57890 + skipSchemaFiles = 57891 + slave = 57892 + slow = 57893 + smallIntType = 57541 + snapshot = 57894 + some = 57895 + source = 57896 + spatial = 57542 + split = 58122 + sql = 57543 + sqlBigResult = 57544 + sqlBufferResult = 57897 + sqlCache = 57898 + sqlCalcFoundRows = 57545 + sqlNoCache = 57899 + sqlSmallResult = 57546 + sqlTsiDay = 57900 + sqlTsiHour = 57901 + sqlTsiMinute = 57902 + sqlTsiMonth = 57903 + sqlTsiQuarter = 57904 + sqlTsiSecond = 57905 + sqlTsiWeek = 57906 + sqlTsiYear = 57907 + sqlexception = 57547 + sqlstate = 57548 + sqlwarning = 57549 + ssl = 57550 + staleness = 58028 + start = 57908 + startTS = 58030 + startTime = 58029 + starting = 57551 + statistics = 58108 + stats = 58109 + statsAutoRecalc = 57909 + statsBuckets = 58112 + statsColChoice = 57610 + statsColList = 57611 + statsExtended = 57552 + statsHealthy = 58113 + statsHistograms = 58111 + statsLocked = 58115 + statsMeta = 58110 + statsOptions = 57608 + statsPersistent = 57910 + statsSamplePages = 57911 + statsSampleRate = 57609 + statsTopN = 58114 + status = 57912 + std = 58031 + stddev = 58032 + stddevPop = 58033 + stddevSamp = 58034 + stop = 58035 + storage = 57913 + stored = 57557 + straightJoin = 57553 + strict = 58036 + strictFormat = 57914 + stringLit = 57353 + strong = 58037 + subDate = 58038 + subject = 57915 + subpartition = 57916 + subpartitions = 57917 + substring = 58040 + sum = 58039 + super = 57918 + survivalPreferences = 58041 + swaps = 57919 + switchesSym = 57920 + system = 57921 + systemTime = 57922 + tableChecksum = 57923 + tableKwd = 57555 + tableRefPriority = 58190 + tableSample = 57556 + tables = 57924 + tablespace = 57925 + target = 58042 + taskTypes = 58043 + telemetry = 58117 + telemetryID = 58118 + temporary = 57926 + temptable = 57927 + terminated = 57558 + textType = 57928 + than = 57929 + then = 57559 + tiFlash = 58120 + tidb = 58119 + tidbCurrentTSO = 57554 + tidbJson = 58044 + tikvImporter = 57930 + timeDuration = 57986 + timeType = 57932 + timestampAdd = 58045 + timestampDiff = 58046 + timestampType = 57931 + tinyIntType = 57561 + tinyblobType = 57560 + tinytextType = 57562 + tls = 58047 + to = 57563 + toTSO = 57349 toTimestamp = 57348 - tokenIssuer = 57929 - tokudbDefault = 58042 - tokudbFast = 58043 - tokudbLzma = 58044 - tokudbQuickLZ = 58045 - tokudbSmall = 58047 - tokudbSnappy = 58046 - tokudbUncompressed = 58048 - tokudbZlib = 58049 - tokudbZstd = 58050 - top = 58051 - topn = 58115 - tp = 57930 - tpcc = 57931 - tpch10 = 57801 - trace = 57932 - traditional = 57933 - trailing = 57563 - transaction = 57934 - trigger = 57564 - triggers = 57935 - trim = 58052 - trueCardCost = 58058 - trueKwd = 57565 - truncate = 57936 - ttl = 57937 - ttlEnable = 57938 - ttlJobInterval = 57939 - unbounded = 57940 - uncommitted = 57941 - undefined = 57942 - underscoreCS = 57351 - unicodeSym = 57943 - union = 57567 - unique = 57566 - unknown = 57944 - unlimited = 58076 - unlock = 57568 - unsigned = 57569 - until = 57570 - untilTS = 58053 - update = 57571 - usage = 57572 - use = 57573 - user = 57945 - using = 57574 - utcDate = 57575 - utcTime = 57577 - utcTimestamp = 57576 - validation = 57946 - value = 57947 - values = 57578 - varPop = 58055 - varSamp = 58056 - varbinaryType = 57582 - varcharType = 57580 - varcharacter = 57581 - variables = 57948 - variance = 58054 - varying = 57583 - verboseType = 58057 - view = 57949 - virtual = 57584 - visible = 57950 - voter = 58059 - voterConstraints = 58060 - voters = 58061 - wait = 57958 - warnings = 57951 - watch = 58072 - week = 57952 - weightString = 57953 - when = 57585 - where = 57586 - while = 57587 - width = 58117 - window = 57589 - with = 57590 - without = 57954 - workload = 57955 - write = 57588 - x509 = 57956 - xor = 57591 - yearMonth = 57592 - yearType = 57957 - zerofill = 57593 + tokenIssuer = 57933 + tokudbDefault = 58048 + tokudbFast = 58049 + tokudbLzma = 58050 + tokudbQuickLZ = 58051 + tokudbSmall = 58053 + tokudbSnappy = 58052 + tokudbUncompressed = 58054 + tokudbZlib = 58055 + tokudbZstd = 58056 + top = 58057 + topn = 58121 + tp = 57934 + tpcc = 57935 + tpch10 = 57804 + trace = 57936 + traditional = 57937 + trailing = 57564 + transaction = 57938 + trigger = 57565 + triggers = 57939 + trim = 58058 + trueCardCost = 58064 + trueKwd = 57566 + truncate = 57940 + tsoType = 57941 + ttl = 57942 + ttlEnable = 57943 + ttlJobInterval = 57944 + unbounded = 57945 + uncommitted = 57946 + undefined = 57947 + underscoreCS = 57352 + unicodeSym = 57948 + union = 57568 + unique = 57567 + unknown = 57949 + unlimited = 58082 + unlock = 57569 + unsigned = 57570 + until = 57571 + untilTS = 58059 + update = 57572 + usage = 57573 + use = 57574 + user = 57950 + using = 57575 + utcDate = 57576 + utcTime = 57578 + utcTimestamp = 57577 + validation = 57951 + value = 57952 + values = 57579 + varPop = 58061 + varSamp = 58062 + varbinaryType = 57583 + varcharType = 57581 + varcharacter = 57582 + variables = 57953 + variance = 58060 + varying = 57584 + verboseType = 58063 + view = 57954 + virtual = 57585 + visible = 57955 + voter = 58065 + voterConstraints = 58066 + voters = 58067 + wait = 57963 + warnings = 57956 + watch = 58078 + week = 57957 + weightString = 57958 + when = 57586 + where = 57587 + while = 57588 + width = 58123 + window = 57590 + with = 57591 + without = 57959 + workload = 57960 + write = 57589 + x509 = 57961 + xor = 57592 + yearMonth = 57593 + yearType = 57962 + zerofill = 57594 yyMaxDepth = 200 - yyTabOfs = -2854 + yyTabOfs = -2871 ) var ( yyXLAT = map[int]int{ - 59: 0, // ';' (2503x) - 57344: 1, // $end (2490x) - 57842: 2, // remove (1990x) - 58116: 3, // split (1990x) - 57771: 4, // merge (1989x) - 57843: 5, // reorganize (1988x) - 57650: 6, // comment (1981x) - 57909: 7, // storage (1893x) - 57612: 8, // autoIncrement (1882x) - 44: 9, // ',' (1856x) - 57713: 10, // first (1781x) - 57598: 11, // after (1775x) - 57876: 12, // serial (1771x) - 57613: 13, // autoRandom (1770x) - 57647: 14, // columnFormat (1770x) - 57813: 15, // password (1742x) - 57638: 16, // charsetKwd (1734x) - 57640: 17, // checksum (1724x) - 58010: 18, // placement (1721x) - 57747: 19, // keyBlockSize (1705x) - 57921: 20, // tablespace (1701x) - 57693: 21, // encryption (1699x) - 57674: 22, // data (1697x) - 57696: 23, // engine (1696x) - 57738: 24, // insertMethod (1692x) - 57765: 25, // maxRows (1692x) - 57773: 26, // minRows (1692x) - 57788: 27, // nodegroup (1692x) - 57657: 28, // connection (1684x) - 57614: 29, // autoRandomBase (1681x) - 58106: 30, // statsBuckets (1679x) - 58108: 31, // statsTopN (1679x) - 57937: 32, // ttl (1679x) - 57611: 33, // autoIdCache (1678x) - 57616: 34, // avgRowLength (1678x) - 57655: 35, // compression (1678x) - 57681: 36, // delayKeyWrite (1678x) - 57807: 37, // packKeys (1678x) - 57822: 38, // preSplitRegions (1678x) - 57863: 39, // rowFormat (1678x) - 57869: 40, // secondaryEngine (1678x) - 57880: 41, // shardRowIDBits (1678x) - 57905: 42, // statsAutoRecalc (1678x) - 57609: 43, // statsColChoice (1678x) - 57610: 44, // statsColList (1678x) - 57906: 45, // statsPersistent (1678x) - 57907: 46, // statsSamplePages (1678x) - 57608: 47, // statsSampleRate (1678x) - 57919: 48, // tableChecksum (1678x) - 57938: 49, // ttlEnable (1678x) - 57939: 50, // ttlJobInterval (1678x) - 57850: 51, // resource (1656x) - 57605: 52, // attribute (1629x) - 57595: 53, // account (1627x) - 57959: 54, // failedLoginAttempts (1627x) - 57960: 55, // passwordLockTime (1627x) - 57346: 56, // identifier (1626x) - 41: 57, // ')' (1622x) - 57855: 58, // resume (1614x) - 57884: 59, // signed (1614x) - 57890: 60, // snapshot (1612x) - 57617: 61, // backend (1611x) - 57639: 62, // checkpoint (1611x) - 57656: 63, // concurrency (1611x) - 57662: 64, // csvBackslashEscape (1611x) - 57663: 65, // csvDelimiter (1611x) - 57664: 66, // csvHeader (1611x) - 57665: 67, // csvNotNull (1611x) - 57666: 68, // csvNull (1611x) - 57667: 69, // csvSeparator (1611x) - 57668: 70, // csvTrimLastSeparators (1611x) - 57990: 71, // fullBackupStorage (1611x) - 57992: 72, // gcTTL (1611x) - 57751: 73, // lastBackup (1611x) - 57802: 74, // onDuplicate (1611x) - 57803: 75, // online (1611x) - 57837: 76, // rateLimit (1611x) - 58018: 77, // restoredTS (1611x) - 57873: 78, // sendCredentialsToTiKV (1611x) - 57887: 79, // skipSchemaFiles (1611x) - 58024: 80, // startTS (1611x) - 57910: 81, // strictFormat (1611x) - 57926: 82, // tikvImporter (1611x) - 58053: 83, // untilTS (1611x) - 57620: 84, // begin (1605x) - 57651: 85, // commit (1605x) - 57785: 86, // no (1605x) - 57859: 87, // rollback (1605x) - 57904: 88, // start (1603x) - 57936: 89, // truncate (1602x) - 57632: 90, // cache (1600x) - 57786: 91, // nocache (1599x) - 57805: 92, // open (1599x) - 57596: 93, // action (1598x) - 57670: 94, // close (1598x) - 57673: 95, // cycle (1598x) - 57775: 96, // minValue (1598x) - 57694: 97, // end (1597x) - 57735: 98, // increment (1597x) - 57787: 99, // nocycle (1597x) - 57789: 100, // nomaxvalue (1597x) - 57790: 101, // nominvalue (1597x) - 57601: 102, // algorithm (1595x) - 57852: 103, // restart (1595x) - 57930: 104, // tp (1595x) - 57672: 105, // clustered (1594x) - 57740: 106, // invisible (1594x) - 57791: 107, // nonclustered (1594x) - 58119: 108, // regions (1594x) - 57950: 109, // visible (1594x) - 58075: 110, // background (1592x) - 57970: 111, // burstable (1592x) - 58063: 112, // priority (1592x) - 58074: 113, // queryLimit (1592x) - 58062: 114, // ruRate (1592x) - 57912: 115, // subpartition (1590x) - 57812: 116, // partitions (1589x) - 58011: 117, // plan (1589x) - 57957: 118, // yearType (1589x) - 57973: 119, // constraints (1587x) - 57988: 120, // followerConstraints (1587x) - 57989: 121, // followers (1587x) - 58001: 122, // leaderConstraints (1587x) - 58003: 123, // learnerConstraints (1587x) - 58004: 124, // learners (1587x) - 58015: 125, // primaryRegion (1587x) - 58021: 126, // schedule (1587x) - 57903: 127, // sqlTsiYear (1587x) - 58035: 128, // survivalPreferences (1587x) - 58060: 129, // voterConstraints (1587x) - 58061: 130, // voters (1587x) - 57648: 131, // columns (1585x) - 57949: 132, // view (1585x) - 57677: 133, // day (1584x) - 58072: 134, // watch (1583x) - 57978: 135, // defined (1582x) - 58069: 136, // execElapsed (1582x) - 57868: 137, // second (1582x) - 57730: 138, // hour (1581x) - 57772: 139, // microsecond (1581x) - 57774: 140, // minute (1581x) - 57778: 141, // month (1581x) - 57833: 142, // quarter (1581x) - 57896: 143, // sqlTsiDay (1581x) - 57897: 144, // sqlTsiHour (1581x) - 57898: 145, // sqlTsiMinute (1581x) - 57899: 146, // sqlTsiMonth (1581x) - 57900: 147, // sqlTsiQuarter (1581x) - 57901: 148, // sqlTsiSecond (1581x) - 57902: 149, // sqlTsiWeek (1581x) - 57952: 150, // week (1581x) - 57604: 151, // ascii (1580x) - 57631: 152, // byteType (1580x) - 57943: 153, // unicodeSym (1580x) - 57711: 154, // fields (1579x) - 57759: 155, // logs (1578x) - 57908: 156, // status (1578x) - 57920: 157, // tables (1578x) - 57981: 158, // timeDuration (1578x) - 57835: 159, // query (1576x) - 57874: 160, // separator (1576x) - 57641: 161, // cipher (1575x) - 57745: 162, // issuer (1575x) - 57763: 163, // maxConnectionsPerHour (1575x) - 57764: 164, // maxQueriesPerHour (1575x) - 57766: 165, // maxUpdatesPerHour (1575x) - 57767: 166, // maxUserConnections (1575x) - 57823: 167, // preceding (1575x) - 57866: 168, // san (1575x) - 57911: 169, // subject (1575x) - 57929: 170, // tokenIssuer (1575x) - 57982: 171, // endTime (1574x) - 57746: 172, // jsonType (1574x) - 57756: 173, // local (1574x) - 58023: 174, // startTime (1574x) - 57675: 175, // datetimeType (1573x) - 57676: 176, // dateType (1573x) - 57714: 177, // fixed (1573x) - 58092: 178, // job (1573x) - 57928: 179, // timeType (1573x) - 57624: 180, // bindings (1572x) - 57680: 181, // definer (1572x) - 57725: 182, // hash (1572x) - 57731: 183, // identified (1572x) - 57851: 184, // respect (1572x) - 57927: 185, // timestampType (1572x) - 57947: 186, // value (1572x) - 57618: 187, // backup (1571x) - 57628: 188, // booleanType (1571x) - 57669: 189, // current (1571x) - 57695: 190, // enforced (1571x) - 57717: 191, // following (1571x) - 57753: 192, // less (1571x) - 57793: 193, // nowait (1571x) - 57804: 194, // only (1571x) - 57867: 195, // savepoint (1571x) - 57886: 196, // skip (1571x) - 58037: 197, // taskTypes (1571x) - 57924: 198, // textType (1571x) - 57925: 199, // than (1571x) - 58114: 200, // tiFlash (1571x) - 57940: 201, // unbounded (1571x) - 57622: 202, // binding (1570x) - 57626: 203, // bitType (1570x) - 57629: 204, // boolType (1570x) - 57698: 205, // enum (1570x) - 57722: 206, // global (1570x) - 57865: 207, // hypo (1570x) - 57733: 208, // importKwd (1570x) - 57780: 209, // national (1570x) - 57781: 210, // ncharType (1570x) - 57994: 211, // next_row_id (1570x) - 57794: 212, // nvarcharType (1570x) - 57797: 213, // offset (1570x) - 57821: 214, // policy (1570x) - 58014: 215, // predicate (1570x) - 57922: 216, // temporary (1570x) - 57945: 217, // user (1570x) - 57682: 218, // digest (1569x) - 58091: 219, // jobs (1569x) - 57758: 220, // location (1569x) - 58012: 221, // planCache (1569x) - 57824: 222, // prepare (1569x) - 57846: 223, // replica (1569x) - 57858: 224, // role (1569x) - 58103: 225, // stats (1569x) - 57944: 226, // unknown (1569x) - 57958: 227, // wait (1569x) - 57630: 228, // btree (1568x) - 58071: 229, // cooldown (1568x) - 57679: 230, // declare (1568x) - 58070: 231, // dryRun (1568x) - 57718: 232, // format (1568x) - 57744: 233, // isolation (1568x) - 57750: 234, // last (1568x) - 57761: 235, // max_idxnum (1568x) - 57770: 236, // memory (1568x) - 57796: 237, // off (1568x) - 57806: 238, // optional (1568x) - 57816: 239, // per_db (1568x) - 57826: 240, // privileges (1568x) - 57849: 241, // required (1568x) - 57864: 242, // rtree (1568x) - 58100: 243, // sampleRate (1568x) - 57875: 244, // sequence (1568x) - 57878: 245, // session (1568x) - 57889: 246, // slow (1568x) - 57946: 247, // validation (1568x) - 57948: 248, // variables (1568x) - 57606: 249, // attributes (1567x) - 58081: 250, // cancel (1567x) - 57653: 251, // compact (1567x) - 58086: 252, // ddl (1567x) - 57684: 253, // disable (1567x) - 57688: 254, // do (1567x) - 57690: 255, // dynamic (1567x) - 57691: 256, // enable (1567x) - 57699: 257, // errorKwd (1567x) - 57983: 258, // exact (1567x) - 57715: 259, // flush (1567x) - 57719: 260, // full (1567x) - 57724: 261, // handler (1567x) - 57728: 262, // history (1567x) - 57768: 263, // mb (1567x) - 57776: 264, // mode (1567x) - 57783: 265, // next (1567x) - 57814: 266, // pause (1567x) - 57819: 267, // plugins (1567x) - 57828: 268, // processlist (1567x) - 57839: 269, // recover (1567x) - 57844: 270, // repair (1567x) - 57845: 271, // repeatable (1567x) - 58073: 272, // similar (1567x) - 58102: 273, // statistics (1567x) - 57913: 274, // subpartitions (1567x) - 58113: 275, // tidb (1567x) - 57954: 276, // without (1567x) - 58077: 277, // admin (1566x) - 58078: 278, // batch (1566x) - 57625: 279, // binlog (1566x) - 57627: 280, // block (1566x) - 57968: 281, // br (1566x) - 57969: 282, // briefType (1566x) - 58079: 283, // buckets (1566x) - 57633: 284, // calibrate (1566x) - 57634: 285, // capture (1566x) - 58082: 286, // cardinality (1566x) - 57637: 287, // chain (1566x) - 57644: 288, // clientErrorsSummary (1566x) - 58083: 289, // cmSketch (1566x) - 57645: 290, // coalesce (1566x) - 57654: 291, // compressed (1566x) - 57660: 292, // context (1566x) - 57972: 293, // copyKwd (1566x) - 58085: 294, // correlation (1566x) - 57661: 295, // cpu (1566x) - 57678: 296, // deallocate (1566x) - 58087: 297, // dependency (1566x) - 57683: 298, // directory (1566x) - 57686: 299, // discard (1566x) - 57687: 300, // disk (1566x) - 57979: 301, // dotType (1566x) - 58089: 302, // drainer (1566x) - 58090: 303, // dry (1566x) - 57689: 304, // duplicate (1566x) - 57704: 305, // exchange (1566x) - 57706: 306, // execute (1566x) - 57707: 307, // expansion (1566x) - 57986: 308, // flashback (1566x) - 57721: 309, // general (1566x) - 57726: 310, // help (1566x) - 58064: 311, // high (1566x) - 57727: 312, // histogram (1566x) - 57729: 313, // hosts (1566x) - 57732: 314, // identSQLErrors (1566x) - 57995: 315, // inplace (1566x) - 57739: 316, // instance (1566x) - 57996: 317, // instant (1566x) - 57743: 318, // ipc (1566x) - 57748: 319, // labels (1566x) - 57757: 320, // locked (1566x) - 58066: 321, // low (1566x) - 58065: 322, // medium (1566x) - 58007: 323, // metadata (1566x) - 57777: 324, // modify (1566x) - 58093: 325, // nodeID (1566x) - 58094: 326, // nodeState (1566x) - 57795: 327, // nulls (1566x) - 57808: 328, // pageSym (1566x) - 58097: 329, // pump (1566x) - 57832: 330, // purge (1566x) - 57838: 331, // rebuild (1566x) - 57840: 332, // redundant (1566x) - 57841: 333, // reload (1566x) - 57853: 334, // restore (1566x) - 57861: 335, // routine (1566x) - 58020: 336, // s3 (1566x) - 58099: 337, // samples (1566x) - 57870: 338, // secondaryLoad (1566x) - 57871: 339, // secondaryUnload (1566x) - 57881: 340, // share (1566x) - 57883: 341, // shutdown (1566x) - 57892: 342, // source (1566x) - 57607: 343, // statsOptions (1566x) - 58029: 344, // stop (1566x) - 57915: 345, // swaps (1566x) - 58038: 346, // tidbJson (1566x) - 58042: 347, // tokudbDefault (1566x) - 58043: 348, // tokudbFast (1566x) - 58044: 349, // tokudbLzma (1566x) - 58045: 350, // tokudbQuickLZ (1566x) - 58047: 351, // tokudbSmall (1566x) - 58046: 352, // tokudbSnappy (1566x) - 58048: 353, // tokudbUncompressed (1566x) - 58049: 354, // tokudbZlib (1566x) - 58050: 355, // tokudbZstd (1566x) - 58115: 356, // topn (1566x) - 57932: 357, // trace (1566x) - 57933: 358, // traditional (1566x) - 58058: 359, // trueCardCost (1566x) - 58076: 360, // unlimited (1566x) - 58057: 361, // verboseType (1566x) - 57951: 362, // warnings (1566x) - 57597: 363, // advise (1565x) - 57599: 364, // against (1565x) - 57600: 365, // ago (1565x) - 57602: 366, // always (1565x) - 57619: 367, // backups (1565x) - 57621: 368, // bernoulli (1565x) - 57623: 369, // bindingCache (1565x) - 58080: 370, // builtins (1565x) - 57635: 371, // cascaded (1565x) - 57636: 372, // causal (1565x) - 57642: 373, // cleanup (1565x) - 57643: 374, // client (1565x) - 57671: 375, // cluster (1565x) - 57646: 376, // collation (1565x) - 58084: 377, // columnStatsUsage (1565x) - 57652: 378, // committed (1565x) - 57649: 379, // config (1565x) - 57658: 380, // consistency (1565x) - 57659: 381, // consistent (1565x) - 58088: 382, // depth (1565x) - 57685: 383, // disabled (1565x) - 57980: 384, // dump (1565x) - 57692: 385, // enabled (1565x) - 57697: 386, // engines (1565x) - 57702: 387, // events (1565x) - 57703: 388, // evolve (1565x) - 57708: 389, // expire (1565x) - 57984: 390, // exprPushdownBlacklist (1565x) - 57709: 391, // extended (1565x) - 57710: 392, // faultsSym (1565x) - 57716: 393, // found (1565x) - 57720: 394, // function (1565x) - 57723: 395, // grants (1565x) - 58110: 396, // histogramsInFlight (1565x) - 57736: 397, // incremental (1565x) - 57737: 398, // indexes (1565x) - 57997: 399, // internal (1565x) - 57741: 400, // invoker (1565x) - 57742: 401, // io (1565x) - 57749: 402, // language (1565x) - 57754: 403, // level (1565x) - 57755: 404, // list (1565x) - 57760: 405, // master (1565x) - 57762: 406, // max_minutes (1565x) - 57782: 407, // never (1565x) - 57784: 408, // nextval (1565x) - 57792: 409, // none (1565x) - 57798: 410, // oltpReadOnly (1565x) - 57799: 411, // oltpReadWrite (1565x) - 57800: 412, // oltpWriteOnly (1565x) - 58095: 413, // optimistic (1565x) - 58009: 414, // optRuleBlacklist (1565x) - 57809: 415, // parser (1565x) - 57810: 416, // partial (1565x) - 57811: 417, // partitioning (1565x) - 57817: 418, // per_table (1565x) - 57815: 419, // percent (1565x) - 58096: 420, // pessimistic (1565x) - 57820: 421, // point (1565x) - 57825: 422, // preserve (1565x) - 57829: 423, // profile (1565x) - 57830: 424, // profiles (1565x) - 57834: 425, // queries (1565x) - 58016: 426, // recent (1565x) - 58120: 427, // region (1565x) - 58017: 428, // replayer (1565x) - 58118: 429, // reset (1565x) - 57854: 430, // restores (1565x) - 57856: 431, // reuse (1565x) - 57860: 432, // rollup (1565x) - 58098: 433, // run (1565x) - 57872: 434, // security (1565x) - 57877: 435, // serializable (1565x) - 58101: 436, // sessionStates (1565x) - 57885: 437, // simple (1565x) - 57888: 438, // slave (1565x) - 58107: 439, // statsHealthy (1565x) - 58105: 440, // statsHistograms (1565x) - 58109: 441, // statsLocked (1565x) - 58104: 442, // statsMeta (1565x) - 57916: 443, // switchesSym (1565x) - 57917: 444, // system (1565x) - 57918: 445, // systemTime (1565x) - 58036: 446, // target (1565x) - 58112: 447, // telemetryID (1565x) - 57923: 448, // temptable (1565x) - 58041: 449, // tls (1565x) - 58051: 450, // top (1565x) - 57931: 451, // tpcc (1565x) - 57801: 452, // tpch10 (1565x) - 57934: 453, // transaction (1565x) - 57935: 454, // triggers (1565x) - 57941: 455, // uncommitted (1565x) - 57942: 456, // undefined (1565x) - 58117: 457, // width (1565x) - 57955: 458, // workload (1565x) - 57956: 459, // x509 (1565x) - 57961: 460, // addDate (1564x) - 57603: 461, // any (1564x) - 57962: 462, // approxCountDistinct (1564x) - 57963: 463, // approxPercentile (1564x) - 57615: 464, // avg (1564x) - 57964: 465, // bitAnd (1564x) - 57965: 466, // bitOr (1564x) - 57966: 467, // bitXor (1564x) - 57967: 468, // bound (1564x) - 57971: 469, // cast (1564x) - 57975: 470, // curDate (1564x) - 57974: 471, // curTime (1564x) - 57976: 472, // dateAdd (1564x) - 57977: 473, // dateSub (1564x) - 57700: 474, // escape (1564x) - 57701: 475, // event (1564x) - 57705: 476, // exclusive (1564x) - 57985: 477, // extract (1564x) - 57712: 478, // file (1564x) - 57987: 479, // follower (1564x) - 57991: 480, // getFormat (1564x) - 57993: 481, // groupConcat (1564x) - 57734: 482, // imports (1564x) - 58067: 483, // ioReadBandwidth (1564x) - 58068: 484, // ioWriteBandwidth (1564x) - 57998: 485, // jsonArrayagg (1564x) - 57999: 486, // jsonObjectAgg (1564x) - 57752: 487, // lastval (1564x) - 58000: 488, // leader (1564x) - 58002: 489, // learner (1564x) - 58006: 490, // max (1564x) - 57769: 491, // member (1564x) - 58005: 492, // min (1564x) - 57779: 493, // names (1564x) - 58008: 494, // now (1564x) - 58013: 495, // position (1564x) - 57827: 496, // process (1564x) - 57831: 497, // proxy (1564x) - 57836: 498, // quick (1564x) - 57847: 499, // replicas (1564x) - 57848: 500, // replication (1564x) - 57857: 501, // reverse (1564x) - 57862: 502, // rowCount (1564x) - 58019: 503, // running (1564x) - 57879: 504, // setval (1564x) - 57882: 505, // shared (1564x) - 57891: 506, // some (1564x) - 57893: 507, // sqlBufferResult (1564x) - 57894: 508, // sqlCache (1564x) - 57895: 509, // sqlNoCache (1564x) - 58022: 510, // staleness (1564x) - 58025: 511, // std (1564x) - 58026: 512, // stddev (1564x) - 58027: 513, // stddevPop (1564x) - 58028: 514, // stddevSamp (1564x) - 58030: 515, // strict (1564x) - 58031: 516, // strong (1564x) - 58032: 517, // subDate (1564x) - 58034: 518, // substring (1564x) - 58033: 519, // sum (1564x) - 57914: 520, // super (1564x) - 58111: 521, // telemetry (1564x) - 58039: 522, // timestampAdd (1564x) - 58040: 523, // timestampDiff (1564x) - 58052: 524, // trim (1564x) - 58054: 525, // variance (1564x) - 58055: 526, // varPop (1564x) - 58056: 527, // varSamp (1564x) - 58059: 528, // voter (1564x) - 57953: 529, // weightString (1564x) - 57503: 530, // on (1474x) - 40: 531, // '(' (1469x) - 57590: 532, // with (1340x) - 57352: 533, // stringLit (1327x) - 58166: 534, // not2 (1278x) - 57404: 535, // defaultKwd (1230x) - 57496: 536, // not (1209x) - 57368: 537, // as (1176x) - 57383: 538, // collate (1144x) - 57567: 539, // union (1134x) - 57474: 540, // left (1131x) - 57531: 541, // right (1131x) - 57574: 542, // using (1120x) - 43: 543, // '+' (1107x) - 45: 544, // '-' (1105x) - 57495: 545, // mod (1085x) - 57512: 546, // partition (1062x) - 57578: 547, // values (1041x) - 57500: 548, // null (1039x) - 57445: 549, // ignore (1029x) - 57423: 550, // except (1023x) - 57452: 551, // intersect (1022x) - 57527: 552, // replace (1016x) - 57381: 553, // charType (1012x) - 57425: 554, // fetch (1005x) - 58155: 555, // eq (996x) - 57477: 556, // limit (996x) - 57538: 557, // set (996x) - 57430: 558, // forKwd (994x) - 57454: 559, // into (988x) - 58150: 560, // intLit (987x) - 57433: 561, // from (986x) - 57483: 562, // lock (981x) - 57586: 563, // where (973x) - 57508: 564, // order (968x) - 57431: 565, // force (963x) - 57366: 566, // and (960x) - 57507: 567, // or (936x) - 57357: 568, // andand (935x) - 57818: 569, // pipesAsOr (935x) - 57591: 570, // xor (935x) - 57437: 571, // group (906x) - 57439: 572, // having (901x) - 57552: 573, // straightJoin (893x) - 57589: 574, // window (887x) - 57573: 575, // use (885x) - 57465: 576, // join (881x) - 57408: 577, // desc (876x) - 57444: 578, // ifKwd (873x) - 57475: 579, // like (871x) - 57594: 580, // natural (871x) - 57389: 581, // cross (870x) - 57422: 582, // explain (870x) - 57449: 583, // inner (870x) - 42: 584, // '*' (868x) - 125: 585, // '}' (867x) - 57372: 586, // binaryType (864x) - 57457: 587, // insert (861x) - 57534: 588, // rows (855x) - 57585: 589, // when (849x) - 57417: 590, // elseKwd (845x) - 57517: 591, // rangeKwd (845x) - 57555: 592, // tableSample (845x) - 57438: 593, // groups (843x) - 57399: 594, // dayHour (842x) - 57400: 595, // dayMicrosecond (842x) - 57401: 596, // dayMinute (842x) - 57402: 597, // daySecond (842x) - 57441: 598, // hourMicrosecond (842x) - 57442: 599, // hourMinute (842x) - 57443: 600, // hourSecond (842x) - 57493: 601, // minuteMicrosecond (842x) - 57494: 602, // minuteSecond (842x) - 57536: 603, // secondMicrosecond (842x) - 57592: 604, // yearMonth (842x) - 57369: 605, // asc (840x) - 57446: 606, // in (834x) - 57558: 607, // then (834x) - 57554: 608, // tableKwd (827x) - 47: 609, // '/' (826x) - 37: 610, // '%' (825x) - 38: 611, // '&' (825x) - 94: 612, // '^' (825x) - 124: 613, // '|' (825x) - 57378: 614, // caseKwd (825x) - 57412: 615, // div (825x) - 58160: 616, // lsh (825x) - 57526: 617, // repeat (825x) - 58165: 618, // rsh (825x) - 60: 619, // '<' (824x) - 62: 620, // '>' (824x) - 58156: 621, // ge (824x) - 57456: 622, // is (824x) - 58157: 623, // le (824x) - 58161: 624, // neq (824x) - 58162: 625, // neqSynonym (824x) - 58163: 626, // nulleq (824x) - 57370: 627, // between (819x) - 57353: 628, // singleAtIdentifier (818x) - 57424: 629, // falseKwd (814x) - 57565: 630, // trueKwd (814x) - 57394: 631, // currentUser (813x) - 57476: 632, // ilike (811x) - 57523: 633, // regexpKwd (811x) - 57532: 634, // rlike (811x) - 57349: 635, // memberof (808x) - 58149: 636, // decLit (806x) - 58148: 637, // floatLit (806x) - 58151: 638, // hexLit (806x) - 57533: 639, // row (805x) - 58152: 640, // bitLit (804x) - 57453: 641, // interval (804x) - 58164: 642, // paramMarker (803x) - 123: 643, // '{' (801x) - 57397: 644, // database (797x) - 57420: 645, // exists (796x) - 57387: 646, // convert (793x) - 57351: 647, // underscoreCS (793x) - 58128: 648, // builtinCurDate (792x) - 58136: 649, // builtinNow (792x) - 57391: 650, // currentDate (792x) - 57393: 651, // currentTs (792x) - 57354: 652, // doubleAtIdentifier (792x) - 57481: 653, // localTime (792x) - 57482: 654, // localTs (792x) - 58125: 655, // builtinCount (790x) - 33: 656, // '!' (789x) - 126: 657, // '~' (789x) - 58126: 658, // builtinApproxCountDistinct (789x) - 58127: 659, // builtinApproxPercentile (789x) - 58121: 660, // builtinBitAnd (789x) - 58122: 661, // builtinBitOr (789x) - 58123: 662, // builtinBitXor (789x) - 58124: 663, // builtinCast (789x) - 58129: 664, // builtinCurTime (789x) - 58130: 665, // builtinDateAdd (789x) - 58131: 666, // builtinDateSub (789x) - 58132: 667, // builtinExtract (789x) - 58133: 668, // builtinGroupConcat (789x) - 58134: 669, // builtinMax (789x) - 58135: 670, // builtinMin (789x) - 58137: 671, // builtinPosition (789x) - 58141: 672, // builtinStddevPop (789x) - 58142: 673, // builtinStddevSamp (789x) - 58138: 674, // builtinSubstring (789x) - 58139: 675, // builtinSum (789x) - 58140: 676, // builtinSysDate (789x) - 58143: 677, // builtinTranslate (789x) - 58144: 678, // builtinTrim (789x) - 58145: 679, // builtinUser (789x) - 58146: 680, // builtinVarPop (789x) - 58147: 681, // builtinVarSamp (789x) - 57390: 682, // cumeDist (789x) - 57395: 683, // currentRole (789x) - 57392: 684, // currentTime (789x) - 57407: 685, // denseRank (789x) - 57426: 686, // firstValue (789x) - 57469: 687, // lag (789x) - 57470: 688, // lastValue (789x) - 57471: 689, // lead (789x) - 57498: 690, // nthValue (789x) - 57499: 691, // ntile (789x) - 57513: 692, // percentRank (789x) - 57518: 693, // rank (789x) - 57535: 694, // rowNumber (789x) - 57537: 695, // selectKwd (789x) - 57542: 696, // sql (789x) - 57553: 697, // tidbCurrentTSO (789x) - 57575: 698, // utcDate (789x) - 57577: 699, // utcTime (789x) - 57576: 700, // utcTimestamp (789x) - 57466: 701, // key (783x) - 57382: 702, // check (773x) - 57358: 703, // pipes (773x) - 57515: 704, // primary (773x) - 57566: 705, // unique (766x) - 57385: 706, // constraint (763x) - 57522: 707, // references (761x) - 57435: 708, // generated (757x) - 57380: 709, // character (753x) - 57447: 710, // index (737x) - 57487: 711, // match (723x) - 57562: 712, // to (632x) - 57365: 713, // analyze (626x) - 57571: 714, // update (621x) - 57363: 715, // all (610x) - 46: 716, // '.' (609x) - 58154: 717, // assignmentEq (575x) - 58158: 718, // jss (574x) - 58159: 719, // juss (574x) - 57488: 720, // maxValue (574x) - 57367: 721, // array (571x) - 57478: 722, // lines (567x) - 57375: 723, // by (559x) - 57364: 724, // alter (557x) - 57528: 725, // require (554x) - 64: 726, // '@' (549x) - 57414: 727, // drop (543x) - 57377: 728, // cascade (542x) - 57519: 729, // read (542x) - 57529: 730, // restrict (542x) - 57347: 731, // asof (541x) - 57581: 732, // varcharacter (541x) - 57580: 733, // varcharType (541x) - 57403: 734, // decimalType (540x) - 57413: 735, // doubleType (540x) - 57427: 736, // floatType (540x) - 57451: 737, // integerType (540x) - 57458: 738, // intType (540x) - 57520: 739, // realType (540x) - 57582: 740, // varbinaryType (539x) - 57371: 741, // bigIntType (538x) - 57373: 742, // blobType (538x) - 57388: 743, // create (538x) - 57428: 744, // float4Type (538x) - 57429: 745, // float8Type (538x) - 57432: 746, // foreign (538x) - 57434: 747, // fulltext (538x) - 57459: 748, // int1Type (538x) - 57460: 749, // int2Type (538x) - 57461: 750, // int3Type (538x) - 57462: 751, // int4Type (538x) - 57463: 752, // int8Type (538x) - 57579: 753, // long (538x) - 57484: 754, // longblobType (538x) - 57485: 755, // longtextType (538x) - 57489: 756, // mediumblobType (538x) - 57490: 757, // mediumIntType (538x) - 57491: 758, // mediumtextType (538x) - 57492: 759, // middleIntType (538x) - 57501: 760, // numericType (538x) - 57540: 761, // smallIntType (538x) - 57559: 762, // tinyblobType (538x) - 57560: 763, // tinyIntType (538x) - 57561: 764, // tinytextType (538x) - 57348: 765, // toTimestamp (537x) - 57379: 766, // change (535x) - 57525: 767, // rename (535x) - 57588: 768, // write (535x) - 57362: 769, // add (534x) - 58439: 770, // Identifier (534x) - 58520: 771, // NotKeywordToken (534x) - 58798: 772, // TiDBKeyword (534x) - 58808: 773, // UnReservedKeyword (534x) - 57504: 774, // optimize (533x) - 58763: 775, // SubSelect (259x) - 58818: 776, // UserVariable (200x) - 58491: 777, // Literal (198x) - 58734: 778, // SimpleIdent (198x) - 58753: 779, // StringLiteral (198x) - 58517: 780, // NextValueForSequence (195x) - 58416: 781, // FunctionCallGeneric (194x) - 58417: 782, // FunctionCallKeyword (194x) - 58418: 783, // FunctionCallNonKeyword (194x) - 58419: 784, // FunctionNameConflict (194x) - 58420: 785, // FunctionNameDateArith (194x) - 58421: 786, // FunctionNameDateArithMultiForms (194x) - 58422: 787, // FunctionNameDatetimePrecision (194x) - 58423: 788, // FunctionNameOptionalBraces (194x) - 58424: 789, // FunctionNameSequence (194x) - 58733: 790, // SimpleExpr (194x) - 58764: 791, // SumExpr (194x) - 58766: 792, // SystemVariable (194x) - 58829: 793, // Variable (194x) - 58853: 794, // WindowFuncCall (194x) - 58247: 795, // BitExpr (176x) - 58595: 796, // PredicateExpr (144x) - 58250: 797, // BoolPri (141x) - 58379: 798, // Expression (141x) - 58515: 799, // NUM (122x) - 58869: 800, // logAnd (107x) - 58870: 801, // logOr (107x) - 58370: 802, // EqOpt (98x) - 57406: 803, // deleteKwd (86x) - 58776: 804, // TableName (81x) - 58754: 805, // StringName (56x) - 58688: 806, // SelectStmt (52x) - 58689: 807, // SelectStmtBasic (52x) - 58691: 808, // SelectStmtFromDualTable (52x) - 58692: 809, // SelectStmtFromTable (52x) - 58709: 810, // SetOprClause (52x) - 58710: 811, // SetOprClauseList (51x) - 58713: 812, // SetOprStmtWithLimitOrderBy (51x) - 58714: 813, // SetOprStmtWoutLimitOrderBy (51x) - 57569: 814, // unsigned (50x) - 58859: 815, // WithClause (49x) - 58482: 816, // LengthNum (48x) - 58701: 817, // SelectStmtWithClause (48x) - 58712: 818, // SetOprStmt (48x) - 57593: 819, // zerofill (48x) - 57511: 820, // over (45x) - 58276: 821, // ColumnName (41x) - 58812: 822, // UpdateStmtNoWith (41x) - 58336: 823, // DeleteWithoutUsingStmt (40x) - 58467: 824, // InsertIntoStmt (38x) - 58470: 825, // Int64Num (38x) - 58652: 826, // ReplaceIntoStmt (38x) - 58811: 827, // UpdateStmt (38x) - 57409: 828, // describe (36x) - 57410: 829, // distinct (36x) - 57411: 830, // distinctRow (36x) - 57587: 831, // while (36x) - 58858: 832, // WindowingClause (35x) - 58335: 833, // DeleteWithUsingStmt (34x) - 57464: 834, // iterate (34x) - 57473: 835, // leave (34x) - 57405: 836, // delayed (33x) - 57440: 837, // highPriority (33x) - 57486: 838, // lowPriority (33x) - 58334: 839, // DeleteFromStmt (32x) - 57356: 840, // hintComment (27x) - 58390: 841, // FieldLen (25x) - 58565: 842, // OrderBy (25x) - 58695: 843, // SelectStmtLimit (25x) - 58559: 844, // OptWindowingClause (24x) - 58220: 845, // AnalyzeTableStmt (23x) - 58290: 846, // CommitStmt (23x) - 58679: 847, // RollbackStmt (23x) - 58717: 848, // SetStmt (23x) - 57543: 849, // sqlBigResult (23x) - 57544: 850, // sqlCalcFoundRows (23x) - 57545: 851, // sqlSmallResult (23x) - 57557: 852, // terminated (21x) - 58265: 853, // CharsetKw (20x) - 58440: 854, // IfExists (20x) - 58820: 855, // Username (20x) - 57418: 856, // enclosed (19x) - 58375: 857, // ExplainStmt (19x) - 58376: 858, // ExplainSym (19x) - 58577: 859, // PartitionNameList (19x) - 58806: 860, // TruncateTableStmt (19x) - 58813: 861, // UseStmt (19x) - 57419: 862, // escaped (18x) - 58380: 863, // ExpressionList (18x) - 57350: 864, // optionallyEnclosedBy (18x) - 58589: 865, // PlacementPolicyOption (18x) - 58606: 866, // ProcedureBlockContent (18x) - 58635: 867, // ProcedureUnlabelLoopStmt (18x) - 58608: 868, // ProcedureCaseStmt (17x) - 58609: 869, // ProcedureCloseCur (17x) - 58615: 870, // ProcedureFetchInto (17x) - 58621: 871, // ProcedureIfstmt (17x) - 58622: 872, // ProcedureIterate (17x) - 58623: 873, // ProcedureLabeledBlock (17x) - 58637: 874, // ProcedurelabeledLoopStmt (17x) - 58624: 875, // ProcedureLeave (17x) - 58625: 876, // ProcedureOpenCur (17x) - 58628: 877, // ProcedureProcStmt (17x) - 58631: 878, // ProcedureSearchedCase (17x) - 58632: 879, // ProcedureSimpleCase (17x) - 58633: 880, // ProcedureStatementStmt (17x) - 58636: 881, // ProcedureUnlabeledBlock (17x) - 58634: 882, // ProcedureUnlabelLoopBlock (17x) - 58441: 883, // IfNotExists (16x) - 58777: 884, // TableNameList (16x) - 58341: 885, // DistinctKwd (15x) - 58800: 886, // TimestampUnit (15x) - 58342: 887, // DistinctOpt (14x) - 58543: 888, // OptFieldLen (14x) - 58843: 889, // WhereClause (14x) - 58844: 890, // WhereClauseOptional (14x) - 58329: 891, // DefaultKwdOpt (13x) - 58371: 892, // EqOrAssignmentEq (13x) - 58378: 893, // ExprOrDefault (13x) - 57480: 894, // load (13x) - 58476: 895, // JoinTable (12x) - 58538: 896, // OptBinary (12x) - 57524: 897, // release (12x) - 58676: 898, // RolenameComposed (12x) - 58773: 899, // TableFactor (12x) - 58786: 900, // TableRef (12x) - 58799: 901, // TimeUnit (12x) - 58219: 902, // AnalyzeOptionListOpt (11x) - 58411: 903, // FromOrIn (11x) - 58215: 904, // AlterTableStmt (10x) - 58266: 905, // CharsetName (10x) - 58277: 906, // ColumnNameList (10x) - 58319: 907, // DBName (10x) - 57497: 908, // noWriteToBinLog (10x) - 58566: 909, // OrderByOptional (10x) - 58568: 910, // PartDefOption (10x) - 58732: 911, // SignedNum (10x) - 58253: 912, // BuggyDefaultFalseDistinctOpt (9x) - 58328: 913, // DefaultFalseDistinctOpt (9x) - 58477: 914, // JoinType (9x) - 58521: 915, // NotSym (9x) - 58528: 916, // NumLiteral (9x) - 58675: 917, // Rolename (9x) - 58670: 918, // RoleNameString (9x) - 58317: 919, // CrossOpt (8x) - 58377: 920, // ExplainableStmt (8x) - 58381: 921, // ExpressionListOpt (8x) - 58461: 922, // IndexPartSpecification (8x) - 58478: 923, // KeyOrIndex (8x) - 58518: 924, // NoWriteToBinLogAliasOpt (8x) - 58696: 925, // SelectStmtLimitOpt (8x) - 58832: 926, // VariableName (8x) - 58200: 927, // AllOrPartitionNameList (7x) - 58300: 928, // ConstraintKeywordOpt (7x) - 58324: 929, // DatabaseSym (7x) - 58396: 930, // FieldsOrColumns (7x) - 58408: 931, // ForceOpt (7x) - 58462: 932, // IndexPartSpecificationList (7x) - 57468: 933, // kill (7x) - 58599: 934, // Priority (7x) - 58629: 935, // ProcedureProcStmt1s (7x) - 58658: 936, // ResourceGroupName (7x) - 58680: 937, // RowFormat (7x) - 58683: 938, // RowValue (7x) - 58707: 939, // SetExpr (7x) - 58719: 940, // ShowDatabaseNameOpt (7x) - 58783: 941, // TableOption (7x) - 57583: 942, // varying (7x) - 58242: 943, // BeginTransactionStmt (6x) - 58244: 944, // BindableStmt (6x) - 58234: 945, // BRIEBooleanOptionName (6x) - 58235: 946, // BRIEIntegerOptionName (6x) - 58236: 947, // BRIEKeywordOptionName (6x) - 58237: 948, // BRIEOption (6x) - 58238: 949, // BRIEOptions (6x) - 58240: 950, // BRIEStringOptionName (6x) - 58264: 951, // Char (6x) - 57384: 952, // column (6x) - 58271: 953, // ColumnDef (6x) - 58321: 954, // DatabaseOption (6x) - 58372: 955, // EscapedTableRef (6x) - 58394: 956, // FieldTerminator (6x) - 57436: 957, // grant (6x) - 58443: 958, // IgnoreOptional (6x) - 58453: 959, // IndexInvisible (6x) - 58458: 960, // IndexNameList (6x) - 58464: 961, // IndexType (6x) - 58498: 962, // LoadDataStmt (6x) - 58578: 963, // PartitionNameListOpt (6x) - 57516: 964, // procedure (6x) - 58647: 965, // ReleaseSavepointStmt (6x) - 58677: 966, // RolenameList (6x) - 58684: 967, // SavepointStmt (6x) - 57539: 968, // show (6x) - 58781: 969, // TableOptimizerHints (6x) - 58821: 970, // UsernameList (6x) - 58860: 971, // WithClustered (6x) - 58198: 972, // AlgorithmClause (5x) - 58255: 973, // ByItem (5x) - 58270: 974, // CollationName (5x) - 58274: 975, // ColumnKeywordOpt (5x) - 58337: 976, // DirectPlacementOption (5x) - 58339: 977, // DirectResourceGroupOption (5x) - 58392: 978, // FieldOpt (5x) - 58393: 979, // FieldOpts (5x) - 58437: 980, // IdentList (5x) - 58456: 981, // IndexName (5x) - 58459: 982, // IndexOption (5x) - 58460: 983, // IndexOptionList (5x) - 57448: 984, // infile (5x) - 58487: 985, // LimitOption (5x) - 58502: 986, // LockClause (5x) - 58540: 987, // OptCharsetWithOptBinary (5x) - 58550: 988, // OptNullTreatment (5x) - 58593: 989, // PolicyName (5x) - 58600: 990, // PriorityOpt (5x) - 58687: 991, // SelectLockOpt (5x) - 58694: 992, // SelectStmtIntoOption (5x) - 58787: 993, // TableRefs (5x) - 58814: 994, // UserSpec (5x) - 58223: 995, // AsOfClause (4x) - 58226: 996, // Assignment (4x) - 58232: 997, // AuthString (4x) - 58251: 998, // Boolean (4x) - 58254: 999, // BuiltinFunction (4x) - 58256: 1000, // ByList (4x) - 58294: 1001, // ConfigItemName (4x) - 58298: 1002, // Constraint (4x) - 58404: 1003, // FloatOpt (4x) - 58465: 1004, // IndexTypeName (4x) - 58527: 1005, // NumList (4x) - 57505: 1006, // option (4x) - 57506: 1007, // optionally (4x) - 58556: 1008, // OptWild (4x) - 57510: 1009, // outer (4x) - 58594: 1010, // Precision (4x) - 58643: 1011, // ReferDef (4x) - 58666: 1012, // RestrictOrCascadeOpt (4x) - 58682: 1013, // RowStmt (4x) - 58702: 1014, // SequenceOption (4x) - 57551: 1015, // statsExtended (4x) - 58768: 1016, // TableAsName (4x) - 58769: 1017, // TableAsNameOpt (4x) - 58780: 1018, // TableNameOptWild (4x) - 58782: 1019, // TableOptimizerHintsOpt (4x) - 58784: 1020, // TableOptionList (4x) - 58795: 1021, // TextString (4x) - 58802: 1022, // TraceableStmt (4x) - 58803: 1023, // TransactionChar (4x) - 58815: 1024, // UserSpecList (4x) - 58828: 1025, // Varchar (4x) - 58854: 1026, // WindowName (4x) - 58227: 1027, // AssignmentList (3x) - 58229: 1028, // AttributesOpt (3x) - 58248: 1029, // BitValueType (3x) - 58249: 1030, // BlobType (3x) - 58252: 1031, // BooleanType (3x) - 58283: 1032, // ColumnOption (3x) - 58286: 1033, // ColumnPosition (3x) - 58291: 1034, // CommonTableExpr (3x) - 58313: 1035, // CreateTableStmt (3x) - 58318: 1036, // CurdateSym (3x) - 58322: 1037, // DatabaseOptionList (3x) - 58325: 1038, // DateAndTimeType (3x) - 58332: 1039, // DefaultTrueDistinctOpt (3x) - 58338: 1040, // DirectResourceGroupBackgroundOption (3x) - 58340: 1041, // DirectResourceGroupRunawayOption (3x) - 58362: 1042, // DynamicCalibrateResourceOption (3x) - 57416: 1043, // elseIfKwd (3x) - 58367: 1044, // EnforcedOrNot (3x) - 58383: 1045, // ExtendedPriv (3x) - 58399: 1046, // FixedPointType (3x) - 58405: 1047, // FloatingPointType (3x) - 58425: 1048, // GeneratedAlways (3x) - 58427: 1049, // GlobalScope (3x) - 58431: 1050, // GroupByClause (3x) - 58448: 1051, // IndexHint (3x) - 58452: 1052, // IndexHintType (3x) - 58457: 1053, // IndexNameAndTypeOpt (3x) - 58471: 1054, // IntegerType (3x) - 57467: 1055, // keys (3x) - 58489: 1056, // Lines (3x) - 58501: 1057, // LocationLabelList (3x) - 58514: 1058, // NChar (3x) - 58522: 1059, // NowSym (3x) - 58523: 1060, // NowSymFunc (3x) - 58524: 1061, // NowSymOptionFraction (3x) - 58529: 1062, // NumericType (3x) - 58516: 1063, // NVarchar (3x) - 58551: 1064, // OptOrder (3x) - 58555: 1065, // OptTemporary (3x) - 58569: 1066, // PartDefOptionList (3x) - 58571: 1067, // PartitionDefinition (3x) - 58582: 1068, // PasswordOrLockOption (3x) - 58592: 1069, // PluginNameList (3x) - 58598: 1070, // PrimaryOpt (3x) - 58601: 1071, // PrivElem (3x) - 58603: 1072, // PrivType (3x) - 58638: 1073, // QueryWatchOption (3x) - 58640: 1074, // QueryWatchTextOption (3x) - 58653: 1075, // RequireClause (3x) - 58654: 1076, // RequireClauseOpt (3x) - 58656: 1077, // RequireListElement (3x) - 58678: 1078, // RolenameWithoutIdent (3x) - 58671: 1079, // RoleOrPrivElem (3x) - 58693: 1080, // SelectStmtGroup (3x) - 58711: 1081, // SetOprOpt (3x) - 58731: 1082, // SignedLiteral (3x) - 58756: 1083, // StringType (3x) - 58767: 1084, // TableAliasRefList (3x) - 58770: 1085, // TableElement (3x) - 58797: 1086, // TextType (3x) - 58804: 1087, // TransactionChars (3x) - 57564: 1088, // trigger (3x) - 58807: 1089, // Type (3x) - 57568: 1090, // unlock (3x) - 57570: 1091, // until (3x) - 57572: 1092, // usage (3x) - 58825: 1093, // ValuesList (3x) - 58827: 1094, // ValuesStmtList (3x) - 58823: 1095, // ValueSym (3x) - 58830: 1096, // VariableAssignment (3x) - 58851: 1097, // WindowFrameStart (3x) - 58868: 1098, // Year (3x) - 58194: 1099, // AddQueryWatchStmt (2x) - 58196: 1100, // AdminStmt (2x) - 58199: 1101, // AllColumnsOrPredicateColumnsOpt (2x) - 58201: 1102, // AlterDatabaseStmt (2x) - 58202: 1103, // AlterInstanceStmt (2x) - 58203: 1104, // AlterOrderItem (2x) - 58205: 1105, // AlterPolicyStmt (2x) - 58206: 1106, // AlterRangeStmt (2x) - 58207: 1107, // AlterResourceGroupStmt (2x) - 58208: 1108, // AlterSequenceOption (2x) - 58210: 1109, // AlterSequenceStmt (2x) - 58211: 1110, // AlterTableSpec (2x) - 58216: 1111, // AlterUserStmt (2x) - 58217: 1112, // AnalyzeOption (2x) - 58246: 1113, // BinlogStmt (2x) - 58239: 1114, // BRIEStmt (2x) - 58241: 1115, // BRIETables (2x) - 58258: 1116, // CalibrateResourceStmt (2x) - 57376: 1117, // call (2x) - 58260: 1118, // CallStmt (2x) - 58261: 1119, // CancelImportStmt (2x) - 58262: 1120, // CastType (2x) - 58263: 1121, // ChangeStmt (2x) - 58269: 1122, // CheckConstraintKeyword (2x) - 58278: 1123, // ColumnNameListOpt (2x) - 58281: 1124, // ColumnNameOrUserVariable (2x) - 58280: 1125, // ColumnNameOrUserVarListOptWithBrackets (2x) - 58284: 1126, // ColumnOptionList (2x) - 58285: 1127, // ColumnOptionListOpt (2x) - 58289: 1128, // CommentOrAttributeOption (2x) - 58293: 1129, // CompletionTypeWithinTransaction (2x) - 58295: 1130, // ConnectionOption (2x) - 58297: 1131, // ConnectionOptions (2x) - 58301: 1132, // CreateBindingStmt (2x) - 58302: 1133, // CreateDatabaseStmt (2x) - 58303: 1134, // CreateIndexStmt (2x) - 58304: 1135, // CreatePolicyStmt (2x) - 58305: 1136, // CreateProcedureStmt (2x) - 58306: 1137, // CreateResourceGroupStmt (2x) - 58307: 1138, // CreateRoleStmt (2x) - 58309: 1139, // CreateSequenceStmt (2x) - 58310: 1140, // CreateStatisticsStmt (2x) - 58311: 1141, // CreateTableOptionListOpt (2x) - 58314: 1142, // CreateUserStmt (2x) - 58316: 1143, // CreateViewStmt (2x) - 57398: 1144, // databases (2x) - 58326: 1145, // DeallocateStmt (2x) - 58327: 1146, // DeallocateSym (2x) - 58330: 1147, // DefaultOrExpression (2x) - 58343: 1148, // DoStmt (2x) - 58344: 1149, // DropBindingStmt (2x) - 58345: 1150, // DropDatabaseStmt (2x) - 58346: 1151, // DropIndexStmt (2x) - 58347: 1152, // DropLoadDataStmt (2x) - 58348: 1153, // DropPolicyStmt (2x) - 58349: 1154, // DropProcedureStmt (2x) - 58350: 1155, // DropQueryWatchStmt (2x) - 58351: 1156, // DropResourceGroupStmt (2x) - 58352: 1157, // DropRoleStmt (2x) - 58353: 1158, // DropSequenceStmt (2x) - 58354: 1159, // DropStatisticsStmt (2x) - 58355: 1160, // DropStatsStmt (2x) - 58356: 1161, // DropTableStmt (2x) - 58357: 1162, // DropUserStmt (2x) - 58358: 1163, // DropViewStmt (2x) - 58360: 1164, // DuplicateOpt (2x) - 58363: 1165, // ElseCaseOpt (2x) - 58365: 1166, // EmptyStmt (2x) - 58366: 1167, // EncryptionOpt (2x) - 58368: 1168, // EnforcedOrNotOpt (2x) - 58373: 1169, // ExecuteStmt (2x) - 58374: 1170, // ExplainFormatType (2x) - 58385: 1171, // Field (2x) - 58388: 1172, // FieldItem (2x) - 58395: 1173, // Fields (2x) - 58400: 1174, // FlashbackDatabaseStmt (2x) - 58401: 1175, // FlashbackTableStmt (2x) - 58402: 1176, // FlashbackToNewName (2x) - 58403: 1177, // FlashbackToTimestampStmt (2x) - 58407: 1178, // FlushStmt (2x) - 58409: 1179, // FormatOpt (2x) - 58414: 1180, // FuncDatetimePrecList (2x) - 58415: 1181, // FuncDatetimePrecListOpt (2x) - 58428: 1182, // GrantProxyStmt (2x) - 58429: 1183, // GrantRoleStmt (2x) - 58430: 1184, // GrantStmt (2x) - 58432: 1185, // HandleRange (2x) - 58434: 1186, // HashString (2x) - 58435: 1187, // HavingClause (2x) - 58436: 1188, // HelpStmt (2x) - 58445: 1189, // ImportIntoStmt (2x) - 58447: 1190, // IndexAdviseStmt (2x) - 58449: 1191, // IndexHintList (2x) - 58450: 1192, // IndexHintListOpt (2x) - 58455: 1193, // IndexLockAndAlgorithmOpt (2x) - 57450: 1194, // inout (2x) - 58468: 1195, // InsertValues (2x) - 58473: 1196, // IntoOpt (2x) - 58479: 1197, // KeyOrIndexOpt (2x) - 58480: 1198, // KillOrKillTiDB (2x) - 58481: 1199, // KillStmt (2x) - 58483: 1200, // LikeOrIlikeEscapeOpt (2x) - 58486: 1201, // LimitClause (2x) - 57479: 1202, // linear (2x) - 58488: 1203, // LinearOpt (2x) - 58492: 1204, // LoadDataOption (2x) - 58494: 1205, // LoadDataOptionListOpt (2x) - 58495: 1206, // LoadDataSetItem (2x) - 58497: 1207, // LoadDataSetSpecOpt (2x) - 58499: 1208, // LoadStatsStmt (2x) - 58500: 1209, // LocalOpt (2x) - 58503: 1210, // LockStatsStmt (2x) - 58504: 1211, // LockTablesStmt (2x) - 58512: 1212, // MaxValueOrExpression (2x) - 58519: 1213, // NonTransactionalDMLStmt (2x) - 58525: 1214, // NowSymOptionFractionParentheses (2x) - 58530: 1215, // ObjectType (2x) - 57502: 1216, // of (2x) - 58531: 1217, // OfTablesOpt (2x) - 58532: 1218, // OnCommitOpt (2x) - 58533: 1219, // OnDelete (2x) - 58536: 1220, // OnUpdate (2x) - 58541: 1221, // OptCollate (2x) - 58545: 1222, // OptFull (2x) - 58547: 1223, // OptInteger (2x) - 58561: 1224, // OptionalBraces (2x) - 58560: 1225, // OptionLevel (2x) - 58549: 1226, // OptLeadLagInfo (2x) - 58548: 1227, // OptLLDefault (2x) - 57509: 1228, // out (2x) - 58567: 1229, // OuterOpt (2x) - 58572: 1230, // PartitionDefinitionList (2x) - 58573: 1231, // PartitionDefinitionListOpt (2x) - 58574: 1232, // PartitionIntervalOpt (2x) - 58580: 1233, // PartitionOpt (2x) - 58581: 1234, // PasswordOpt (2x) - 58583: 1235, // PasswordOrLockOptionList (2x) - 58584: 1236, // PasswordOrLockOptions (2x) - 58585: 1237, // PauseLoadDataStmt (2x) - 58588: 1238, // PlacementOptionList (2x) - 58591: 1239, // PlanReplayerStmt (2x) - 58597: 1240, // PreparedStmt (2x) - 58602: 1241, // PrivLevel (2x) - 58604: 1242, // ProcedurceCond (2x) - 58605: 1243, // ProcedurceLabelOpt (2x) - 58611: 1244, // ProcedureDecl (2x) - 58618: 1245, // ProcedureHcond (2x) - 58620: 1246, // ProcedureIf (2x) - 58641: 1247, // QuickOptional (2x) - 58642: 1248, // RecoverTableStmt (2x) - 58644: 1249, // ReferOpt (2x) - 58646: 1250, // RegexpSym (2x) - 58648: 1251, // RenameTableStmt (2x) - 58649: 1252, // RenameUserStmt (2x) - 58651: 1253, // RepeatableOpt (2x) - 58659: 1254, // ResourceGroupNameOption (2x) - 58660: 1255, // ResourceGroupOptionList (2x) - 58662: 1256, // ResourceGroupRunawayActionOption (2x) - 58664: 1257, // ResourceGroupRunawayWatchOption (2x) - 58665: 1258, // RestartStmt (2x) - 58667: 1259, // ResumeLoadDataStmt (2x) - 57530: 1260, // revoke (2x) - 58668: 1261, // RevokeRoleStmt (2x) - 58669: 1262, // RevokeStmt (2x) - 58672: 1263, // RoleOrPrivElemList (2x) - 58673: 1264, // RoleSpec (2x) - 58685: 1265, // SearchWhenThen (2x) - 58697: 1266, // SelectStmtOpt (2x) - 58700: 1267, // SelectStmtSQLCache (2x) - 58704: 1268, // SetBindingStmt (2x) - 58705: 1269, // SetDefaultRoleOpt (2x) - 58706: 1270, // SetDefaultRoleStmt (2x) - 58716: 1271, // SetRoleStmt (2x) - 58724: 1272, // ShowProfileType (2x) - 58727: 1273, // ShowStmt (2x) - 58728: 1274, // ShowTableAliasOpt (2x) - 58730: 1275, // ShutdownStmt (2x) - 58735: 1276, // SimpleWhenThen (2x) - 58740: 1277, // SplitOption (2x) - 58741: 1278, // SplitRegionStmt (2x) - 58737: 1279, // SpOptInout (2x) - 58738: 1280, // SpPdparam (2x) - 57546: 1281, // sqlexception (2x) - 57547: 1282, // sqlstate (2x) - 57548: 1283, // sqlwarning (2x) - 58745: 1284, // Statement (2x) - 58748: 1285, // StatsOptionsOpt (2x) - 58749: 1286, // StatsPersistentVal (2x) - 58750: 1287, // StatsType (2x) - 58757: 1288, // SubPartDefinition (2x) - 58760: 1289, // SubPartitionMethod (2x) - 58765: 1290, // Symbol (2x) - 58771: 1291, // TableElementList (2x) - 58774: 1292, // TableLock (2x) - 58778: 1293, // TableNameListOpt (2x) - 58785: 1294, // TableOrTables (2x) - 58794: 1295, // TablesTerminalSym (2x) - 58792: 1296, // TableToTable (2x) - 58796: 1297, // TextStringList (2x) - 58801: 1298, // TraceStmt (2x) - 58809: 1299, // UnlockStatsStmt (2x) - 58810: 1300, // UnlockTablesStmt (2x) - 58816: 1301, // UserToUser (2x) - 58831: 1302, // VariableAssignmentList (2x) - 58841: 1303, // WhenClause (2x) - 58846: 1304, // WindowDefinition (2x) - 58849: 1305, // WindowFrameBound (2x) - 58856: 1306, // WindowSpec (2x) - 58861: 1307, // WithGrantOptionOpt (2x) - 58862: 1308, // WithList (2x) - 58867: 1309, // Writeable (2x) - 58: 1310, // ':' (1x) - 58195: 1311, // AdminShowSlow (1x) - 58197: 1312, // AdminStmtLimitOpt (1x) - 58204: 1313, // AlterOrderList (1x) - 58209: 1314, // AlterSequenceOptionList (1x) - 58212: 1315, // AlterTableSpecList (1x) - 58213: 1316, // AlterTableSpecListOpt (1x) - 58214: 1317, // AlterTableSpecSingleOpt (1x) - 58218: 1318, // AnalyzeOptionList (1x) - 58221: 1319, // AnyOrAll (1x) - 58222: 1320, // ArrayKwdOpt (1x) - 58224: 1321, // AsOfClauseOpt (1x) - 58225: 1322, // AsOpt (1x) - 58230: 1323, // AuthOption (1x) - 58231: 1324, // AuthPlugin (1x) - 58233: 1325, // AutoRandomOpt (1x) - 58243: 1326, // BetweenOrNotOp (1x) - 58245: 1327, // BindingStatusType (1x) - 57374: 1328, // both (1x) - 58257: 1329, // CalibrateOption (1x) - 58259: 1330, // CalibrateResourceWorkloadOption (1x) - 58267: 1331, // CharsetNameOrDefault (1x) - 58268: 1332, // CharsetOpt (1x) - 58273: 1333, // ColumnFormat (1x) - 58275: 1334, // ColumnList (1x) - 58282: 1335, // ColumnNameOrUserVariableList (1x) - 58279: 1336, // ColumnNameOrUserVarListOpt (1x) - 58287: 1337, // ColumnSetValueList (1x) - 58292: 1338, // CompareOp (1x) - 58296: 1339, // ConnectionOptionList (1x) - 58299: 1340, // ConstraintElem (1x) - 57386: 1341, // continueKwd (1x) - 58308: 1342, // CreateSequenceOptionListOpt (1x) - 58312: 1343, // CreateTableSelectOpt (1x) - 58315: 1344, // CreateViewSelectOpt (1x) - 57396: 1345, // cursor (1x) - 58323: 1346, // DatabaseOptionListOpt (1x) - 58320: 1347, // DBNameList (1x) - 58331: 1348, // DefaultOrExpressionList (1x) - 58333: 1349, // DefaultValueExpr (1x) - 58359: 1350, // DryRunOptions (1x) - 57415: 1351, // dual (1x) - 58361: 1352, // DynamicCalibrateOptionList (1x) - 58364: 1353, // ElseOpt (1x) - 58369: 1354, // EnforcedOrNotOrNotNullOpt (1x) - 57421: 1355, // exit (1x) - 58382: 1356, // ExpressionOpt (1x) - 58384: 1357, // FetchFirstOpt (1x) - 58386: 1358, // FieldAsName (1x) - 58387: 1359, // FieldAsNameOpt (1x) - 58389: 1360, // FieldItemList (1x) - 58391: 1361, // FieldList (1x) - 58397: 1362, // FirstAndLastPartOpt (1x) - 58398: 1363, // FirstOrNext (1x) - 58406: 1364, // FlushOption (1x) - 58410: 1365, // FromDual (1x) - 58412: 1366, // FulltextSearchModifierOpt (1x) - 58413: 1367, // FuncDatetimePrec (1x) - 58426: 1368, // GetFormatSelector (1x) - 58433: 1369, // HandleRangeList (1x) - 58438: 1370, // IdentListWithParenOpt (1x) - 58442: 1371, // IgnoreLines (1x) - 58444: 1372, // IlikeOrNotOp (1x) - 58451: 1373, // IndexHintScope (1x) - 58454: 1374, // IndexKeyTypeOpt (1x) - 58463: 1375, // IndexPartSpecificationListOpt (1x) - 58466: 1376, // IndexTypeOpt (1x) - 58446: 1377, // InOrNotOp (1x) - 58469: 1378, // InstanceOption (1x) - 58472: 1379, // IntervalExpr (1x) - 58475: 1380, // IsolationLevel (1x) - 58474: 1381, // IsOrNotOp (1x) - 57472: 1382, // leading (1x) - 58484: 1383, // LikeOrNotOp (1x) - 58485: 1384, // LikeTableWithOrWithoutParen (1x) - 58490: 1385, // LinesTerminated (1x) - 58493: 1386, // LoadDataOptionList (1x) - 58496: 1387, // LoadDataSetList (1x) - 58505: 1388, // LockType (1x) - 58506: 1389, // LogTypeOpt (1x) - 58507: 1390, // Match (1x) - 58508: 1391, // MatchOpt (1x) - 58509: 1392, // MaxIndexNumOpt (1x) - 58510: 1393, // MaxMinutesOpt (1x) - 58511: 1394, // MaxValPartOpt (1x) - 58513: 1395, // MaxValueOrExpressionList (1x) - 58526: 1396, // NullPartOpt (1x) - 58534: 1397, // OnDeleteUpdateOpt (1x) - 58535: 1398, // OnDuplicateKeyUpdate (1x) - 58537: 1399, // OptBinMod (1x) - 58539: 1400, // OptCharset (1x) - 58542: 1401, // OptExistingWindowName (1x) - 58544: 1402, // OptFromFirstLast (1x) - 58546: 1403, // OptGConcatSeparator (1x) - 58562: 1404, // OptionalShardColumn (1x) - 58552: 1405, // OptPartitionClause (1x) - 58553: 1406, // OptSpPdparams (1x) - 58554: 1407, // OptTable (1x) - 58871: 1408, // optValue (1x) - 58557: 1409, // OptWindowFrameClause (1x) - 58558: 1410, // OptWindowOrderByClause (1x) - 58564: 1411, // Order (1x) - 58563: 1412, // OrReplace (1x) - 57455: 1413, // outfile (1x) - 58570: 1414, // PartDefValuesOpt (1x) - 58575: 1415, // PartitionKeyAlgorithmOpt (1x) - 58576: 1416, // PartitionMethod (1x) - 58579: 1417, // PartitionNumOpt (1x) - 58586: 1418, // PerDB (1x) - 58587: 1419, // PerTable (1x) - 58590: 1420, // PlanReplayerDumpOpt (1x) - 57514: 1421, // precisionType (1x) - 58596: 1422, // PrepareSQL (1x) - 58872: 1423, // procedurceElseIfs (1x) - 58607: 1424, // ProcedureCall (1x) - 58610: 1425, // ProcedureCursorSelectStmt (1x) - 58612: 1426, // ProcedureDeclIdents (1x) - 58613: 1427, // ProcedureDecls (1x) - 58614: 1428, // ProcedureDeclsOpt (1x) - 58616: 1429, // ProcedureFetchList (1x) - 58617: 1430, // ProcedureHandlerType (1x) - 58619: 1431, // ProcedureHcondList (1x) - 58626: 1432, // ProcedureOptDefault (1x) - 58627: 1433, // ProcedureOptFetchNo (1x) - 58630: 1434, // ProcedureProcStmts (1x) - 58639: 1435, // QueryWatchOptionList (1x) - 57521: 1436, // recursive (1x) - 58645: 1437, // RegexpOrNotOp (1x) - 58650: 1438, // ReorganizePartitionRuleOpt (1x) - 58655: 1439, // RequireList (1x) - 58657: 1440, // ResourceGroupBackgroundOptionList (1x) - 58661: 1441, // ResourceGroupPriorityOption (1x) - 58663: 1442, // ResourceGroupRunawayOptionList (1x) - 58674: 1443, // RoleSpecList (1x) - 58681: 1444, // RowOrRows (1x) - 58686: 1445, // SearchedWhenThenList (1x) - 58690: 1446, // SelectStmtFieldList (1x) - 58698: 1447, // SelectStmtOpts (1x) - 58699: 1448, // SelectStmtOptsList (1x) - 58703: 1449, // SequenceOptionList (1x) - 58708: 1450, // SetOpr (1x) - 58715: 1451, // SetRoleOpt (1x) - 58718: 1452, // ShardableStmt (1x) - 58720: 1453, // ShowIndexKwd (1x) - 58721: 1454, // ShowLikeOrWhereOpt (1x) - 58722: 1455, // ShowPlacementTarget (1x) - 58723: 1456, // ShowProfileArgsOpt (1x) - 58725: 1457, // ShowProfileTypes (1x) - 58726: 1458, // ShowProfileTypesOpt (1x) - 58729: 1459, // ShowTargetFilterable (1x) - 58736: 1460, // SimpleWhenThenList (1x) - 57541: 1461, // spatial (1x) - 58742: 1462, // SplitSyntaxOption (1x) - 58739: 1463, // SpPdparams (1x) - 57549: 1464, // ssl (1x) - 58743: 1465, // Start (1x) - 58744: 1466, // Starting (1x) - 57550: 1467, // starting (1x) - 58746: 1468, // StatementList (1x) - 58747: 1469, // StatementScope (1x) - 58751: 1470, // StorageMedia (1x) - 57556: 1471, // stored (1x) - 58752: 1472, // StringList (1x) - 58755: 1473, // StringNameOrBRIEOptionKeyword (1x) - 58758: 1474, // SubPartDefinitionList (1x) - 58759: 1475, // SubPartDefinitionListOpt (1x) - 58761: 1476, // SubPartitionNumOpt (1x) - 58762: 1477, // SubPartitionOpt (1x) - 58772: 1478, // TableElementListOpt (1x) - 58775: 1479, // TableLockList (1x) - 58788: 1480, // TableRefsClause (1x) - 58789: 1481, // TableSampleMethodOpt (1x) - 58790: 1482, // TableSampleOpt (1x) - 58791: 1483, // TableSampleUnitOpt (1x) - 58793: 1484, // TableToTableList (1x) - 57563: 1485, // trailing (1x) - 58805: 1486, // TrimDirection (1x) - 58817: 1487, // UserToUserList (1x) - 58819: 1488, // UserVariableList (1x) - 58822: 1489, // UsingRoles (1x) - 58824: 1490, // Values (1x) - 58826: 1491, // ValuesOpt (1x) - 58833: 1492, // ViewAlgorithm (1x) - 58834: 1493, // ViewCheckOption (1x) - 58835: 1494, // ViewDefiner (1x) - 58836: 1495, // ViewFieldList (1x) - 58837: 1496, // ViewName (1x) - 58838: 1497, // ViewSQLSecurity (1x) - 57584: 1498, // virtual (1x) - 58839: 1499, // VirtualOrStored (1x) - 58840: 1500, // WatchDurationOption (1x) - 58842: 1501, // WhenClauseList (1x) - 58845: 1502, // WindowClauseOptional (1x) - 58847: 1503, // WindowDefinitionList (1x) - 58848: 1504, // WindowFrameBetween (1x) - 58850: 1505, // WindowFrameExtent (1x) - 58852: 1506, // WindowFrameUnits (1x) - 58855: 1507, // WindowNameOrSpec (1x) - 58857: 1508, // WindowSpecDetails (1x) - 58863: 1509, // WithReadLockOpt (1x) - 58864: 1510, // WithRollupClause (1x) - 58865: 1511, // WithValidation (1x) - 58866: 1512, // WithValidationOpt (1x) - 58193: 1513, // $default (0x) - 58153: 1514, // andnot (0x) - 58228: 1515, // AssignmentListOpt (0x) - 58272: 1516, // ColumnDefList (0x) - 58288: 1517, // CommaOpt (0x) - 58177: 1518, // createTableSelect (0x) - 58167: 1519, // empty (0x) - 57345: 1520, // error (0x) - 58192: 1521, // higherThanComma (0x) - 58186: 1522, // higherThanParenthese (0x) - 58175: 1523, // insertValues (0x) - 57355: 1524, // invalid (0x) - 58178: 1525, // lowerThanCharsetKwd (0x) - 58191: 1526, // lowerThanComma (0x) - 58176: 1527, // lowerThanCreateTableSelect (0x) - 58188: 1528, // lowerThanEq (0x) - 58183: 1529, // lowerThanFunction (0x) - 58174: 1530, // lowerThanInsertValues (0x) - 58179: 1531, // lowerThanKey (0x) - 58180: 1532, // lowerThanLocal (0x) - 58190: 1533, // lowerThanNot (0x) - 58187: 1534, // lowerThanOn (0x) - 58185: 1535, // lowerThanParenthese (0x) - 58181: 1536, // lowerThanRemove (0x) - 58168: 1537, // lowerThanSelectOpt (0x) - 58173: 1538, // lowerThanSelectStmt (0x) - 58172: 1539, // lowerThanSetKeyword (0x) - 58171: 1540, // lowerThanStringLitToken (0x) - 58169: 1541, // lowerThanValueKeyword (0x) - 58170: 1542, // lowerThanWith (0x) - 58182: 1543, // lowerThenOrder (0x) - 58189: 1544, // neg (0x) - 57359: 1545, // odbcDateType (0x) - 57361: 1546, // odbcTimestampType (0x) - 57360: 1547, // odbcTimeType (0x) - 58779: 1548, // TableNameListOpt2 (0x) - 58184: 1549, // tableRefPriority (0x) + 59: 0, // ';' (2520x) + 57344: 1, // $end (2507x) + 57845: 2, // remove (1996x) + 58122: 3, // split (1996x) + 57774: 4, // merge (1995x) + 57846: 5, // reorganize (1994x) + 57652: 6, // comment (1987x) + 57913: 7, // storage (1899x) + 57613: 8, // autoIncrement (1888x) + 44: 9, // ',' (1862x) + 57715: 10, // first (1787x) + 57599: 11, // after (1781x) + 57880: 12, // serial (1777x) + 57614: 13, // autoRandom (1776x) + 57649: 14, // columnFormat (1776x) + 57816: 15, // password (1748x) + 57640: 16, // charsetKwd (1740x) + 57642: 17, // checksum (1730x) + 58016: 18, // placement (1727x) + 57749: 19, // keyBlockSize (1711x) + 57925: 20, // tablespace (1707x) + 57695: 21, // encryption (1705x) + 57676: 22, // data (1703x) + 57698: 23, // engine (1702x) + 57740: 24, // insertMethod (1698x) + 57768: 25, // maxRows (1698x) + 57776: 26, // minRows (1698x) + 57791: 27, // nodegroup (1698x) + 57659: 28, // connection (1690x) + 57615: 29, // autoRandomBase (1687x) + 58112: 30, // statsBuckets (1685x) + 58114: 31, // statsTopN (1685x) + 57942: 32, // ttl (1685x) + 57612: 33, // autoIdCache (1684x) + 57617: 34, // avgRowLength (1684x) + 57657: 35, // compression (1684x) + 57683: 36, // delayKeyWrite (1684x) + 57810: 37, // packKeys (1684x) + 57825: 38, // preSplitRegions (1684x) + 57866: 39, // rowFormat (1684x) + 57873: 40, // secondaryEngine (1684x) + 57884: 41, // shardRowIDBits (1684x) + 57909: 42, // statsAutoRecalc (1684x) + 57610: 43, // statsColChoice (1684x) + 57611: 44, // statsColList (1684x) + 57910: 45, // statsPersistent (1684x) + 57911: 46, // statsSamplePages (1684x) + 57609: 47, // statsSampleRate (1684x) + 57923: 48, // tableChecksum (1684x) + 57943: 49, // ttlEnable (1684x) + 57944: 50, // ttlJobInterval (1684x) + 57853: 51, // resource (1662x) + 57606: 52, // attribute (1635x) + 57596: 53, // account (1633x) + 57964: 54, // failedLoginAttempts (1633x) + 57965: 55, // passwordLockTime (1633x) + 57346: 56, // identifier (1632x) + 41: 57, // ')' (1628x) + 57858: 58, // resume (1620x) + 57888: 59, // signed (1620x) + 57894: 60, // snapshot (1618x) + 57618: 61, // backend (1617x) + 57641: 62, // checkpoint (1617x) + 57658: 63, // concurrency (1617x) + 57664: 64, // csvBackslashEscape (1617x) + 57665: 65, // csvDelimiter (1617x) + 57666: 66, // csvHeader (1617x) + 57667: 67, // csvNotNull (1617x) + 57668: 68, // csvNull (1617x) + 57669: 69, // csvSeparator (1617x) + 57670: 70, // csvTrimLastSeparators (1617x) + 57995: 71, // fullBackupStorage (1617x) + 57997: 72, // gcTTL (1617x) + 57753: 73, // lastBackup (1617x) + 57805: 74, // onDuplicate (1617x) + 57806: 75, // online (1617x) + 57840: 76, // rateLimit (1617x) + 58024: 77, // restoredTS (1617x) + 57877: 78, // sendCredentialsToTiKV (1617x) + 57891: 79, // skipSchemaFiles (1617x) + 58030: 80, // startTS (1617x) + 57914: 81, // strictFormat (1617x) + 57930: 82, // tikvImporter (1617x) + 58059: 83, // untilTS (1617x) + 57622: 84, // begin (1611x) + 57653: 85, // commit (1611x) + 57788: 86, // no (1611x) + 57862: 87, // rollback (1611x) + 57908: 88, // start (1609x) + 57940: 89, // truncate (1608x) + 57634: 90, // cache (1606x) + 57789: 91, // nocache (1605x) + 57808: 92, // open (1605x) + 57597: 93, // action (1604x) + 57672: 94, // close (1604x) + 57675: 95, // cycle (1604x) + 57778: 96, // minValue (1604x) + 57696: 97, // end (1603x) + 57737: 98, // increment (1603x) + 57790: 99, // nocycle (1603x) + 57792: 100, // nomaxvalue (1603x) + 57793: 101, // nominvalue (1603x) + 57602: 102, // algorithm (1601x) + 57855: 103, // restart (1601x) + 57934: 104, // tp (1601x) + 57674: 105, // clustered (1600x) + 57742: 106, // invisible (1600x) + 57794: 107, // nonclustered (1600x) + 58125: 108, // regions (1600x) + 57955: 109, // visible (1600x) + 58081: 110, // background (1598x) + 57975: 111, // burstable (1598x) + 58069: 112, // priority (1598x) + 58080: 113, // queryLimit (1598x) + 58068: 114, // ruRate (1598x) + 57916: 115, // subpartition (1596x) + 57815: 116, // partitions (1595x) + 58017: 117, // plan (1595x) + 57962: 118, // yearType (1595x) + 57978: 119, // constraints (1593x) + 57993: 120, // followerConstraints (1593x) + 57994: 121, // followers (1593x) + 58006: 122, // leaderConstraints (1593x) + 58008: 123, // learnerConstraints (1593x) + 58009: 124, // learners (1593x) + 58021: 125, // primaryRegion (1593x) + 58027: 126, // schedule (1593x) + 57907: 127, // sqlTsiYear (1593x) + 58041: 128, // survivalPreferences (1593x) + 58066: 129, // voterConstraints (1593x) + 58067: 130, // voters (1593x) + 57650: 131, // columns (1591x) + 57954: 132, // view (1591x) + 57679: 133, // day (1590x) + 58078: 134, // watch (1589x) + 57983: 135, // defined (1588x) + 58075: 136, // execElapsed (1588x) + 57871: 137, // second (1588x) + 57732: 138, // hour (1587x) + 57775: 139, // microsecond (1587x) + 57777: 140, // minute (1587x) + 57781: 141, // month (1587x) + 57836: 142, // quarter (1587x) + 57900: 143, // sqlTsiDay (1587x) + 57901: 144, // sqlTsiHour (1587x) + 57902: 145, // sqlTsiMinute (1587x) + 57903: 146, // sqlTsiMonth (1587x) + 57904: 147, // sqlTsiQuarter (1587x) + 57905: 148, // sqlTsiSecond (1587x) + 57906: 149, // sqlTsiWeek (1587x) + 57957: 150, // week (1587x) + 57605: 151, // ascii (1586x) + 57633: 152, // byteType (1586x) + 57948: 153, // unicodeSym (1586x) + 57713: 154, // fields (1585x) + 57912: 155, // status (1585x) + 57762: 156, // logs (1584x) + 57924: 157, // tables (1584x) + 57986: 158, // timeDuration (1584x) + 57838: 159, // query (1582x) + 57878: 160, // separator (1582x) + 57643: 161, // cipher (1581x) + 57747: 162, // issuer (1581x) + 57766: 163, // maxConnectionsPerHour (1581x) + 57767: 164, // maxQueriesPerHour (1581x) + 57769: 165, // maxUpdatesPerHour (1581x) + 57770: 166, // maxUserConnections (1581x) + 57826: 167, // preceding (1581x) + 57869: 168, // san (1581x) + 57915: 169, // subject (1581x) + 57933: 170, // tokenIssuer (1581x) + 57987: 171, // endTime (1580x) + 57748: 172, // jsonType (1580x) + 57758: 173, // local (1580x) + 58029: 174, // startTime (1580x) + 57677: 175, // datetimeType (1579x) + 57678: 176, // dateType (1579x) + 57716: 177, // fixed (1579x) + 58098: 178, // job (1579x) + 57932: 179, // timeType (1579x) + 57626: 180, // bindings (1578x) + 57682: 181, // definer (1578x) + 57727: 182, // hash (1578x) + 57733: 183, // identified (1578x) + 57854: 184, // respect (1578x) + 57931: 185, // timestampType (1578x) + 57952: 186, // value (1578x) + 57619: 187, // backup (1577x) + 57630: 188, // booleanType (1577x) + 57671: 189, // current (1577x) + 57697: 190, // enforced (1577x) + 57719: 191, // following (1577x) + 57755: 192, // less (1577x) + 57999: 193, // next_row_id (1577x) + 57796: 194, // nowait (1577x) + 57807: 195, // only (1577x) + 57861: 196, // role (1577x) + 57870: 197, // savepoint (1577x) + 57890: 198, // skip (1577x) + 58043: 199, // taskTypes (1577x) + 57928: 200, // textType (1577x) + 57929: 201, // than (1577x) + 58120: 202, // tiFlash (1577x) + 57945: 203, // unbounded (1577x) + 57624: 204, // binding (1576x) + 57628: 205, // bitType (1576x) + 57631: 206, // boolType (1576x) + 57700: 207, // enum (1576x) + 57724: 208, // global (1576x) + 57868: 209, // hypo (1576x) + 57735: 210, // importKwd (1576x) + 57783: 211, // national (1576x) + 57784: 212, // ncharType (1576x) + 57797: 213, // nvarcharType (1576x) + 57800: 214, // offset (1576x) + 57824: 215, // policy (1576x) + 58020: 216, // predicate (1576x) + 57926: 217, // temporary (1576x) + 57950: 218, // user (1576x) + 57684: 219, // digest (1575x) + 58097: 220, // jobs (1575x) + 57761: 221, // location (1575x) + 58018: 222, // planCache (1575x) + 57827: 223, // prepare (1575x) + 57849: 224, // replica (1575x) + 58109: 225, // stats (1575x) + 57949: 226, // unknown (1575x) + 57963: 227, // wait (1575x) + 57632: 228, // btree (1574x) + 58077: 229, // cooldown (1574x) + 57681: 230, // declare (1574x) + 58076: 231, // dryRun (1574x) + 57720: 232, // format (1574x) + 57746: 233, // isolation (1574x) + 57752: 234, // last (1574x) + 57764: 235, // max_idxnum (1574x) + 57773: 236, // memory (1574x) + 57799: 237, // off (1574x) + 57809: 238, // optional (1574x) + 57819: 239, // per_db (1574x) + 57829: 240, // privileges (1574x) + 57852: 241, // required (1574x) + 57867: 242, // rtree (1574x) + 58106: 243, // sampleRate (1574x) + 57879: 244, // sequence (1574x) + 57882: 245, // session (1574x) + 57893: 246, // slow (1574x) + 57951: 247, // validation (1574x) + 57953: 248, // variables (1574x) + 57607: 249, // attributes (1573x) + 58087: 250, // cancel (1573x) + 57655: 251, // compact (1573x) + 58092: 252, // ddl (1573x) + 57686: 253, // disable (1573x) + 57690: 254, // do (1573x) + 57692: 255, // dynamic (1573x) + 57693: 256, // enable (1573x) + 57701: 257, // errorKwd (1573x) + 57988: 258, // exact (1573x) + 57717: 259, // flush (1573x) + 57721: 260, // full (1573x) + 57726: 261, // handler (1573x) + 57730: 262, // history (1573x) + 57771: 263, // mb (1573x) + 57779: 264, // mode (1573x) + 57786: 265, // next (1573x) + 57817: 266, // pause (1573x) + 57822: 267, // plugins (1573x) + 57831: 268, // processlist (1573x) + 57842: 269, // recover (1573x) + 57847: 270, // repair (1573x) + 57848: 271, // repeatable (1573x) + 58079: 272, // similar (1573x) + 58108: 273, // statistics (1573x) + 57917: 274, // subpartitions (1573x) + 58119: 275, // tidb (1573x) + 57959: 276, // without (1573x) + 58083: 277, // admin (1572x) + 58084: 278, // batch (1572x) + 57627: 279, // binlog (1572x) + 57629: 280, // block (1572x) + 57973: 281, // br (1572x) + 57974: 282, // briefType (1572x) + 58085: 283, // buckets (1572x) + 57635: 284, // calibrate (1572x) + 57636: 285, // capture (1572x) + 58088: 286, // cardinality (1572x) + 57639: 287, // chain (1572x) + 57646: 288, // clientErrorsSummary (1572x) + 58089: 289, // cmSketch (1572x) + 57647: 290, // coalesce (1572x) + 57656: 291, // compressed (1572x) + 57662: 292, // context (1572x) + 57977: 293, // copyKwd (1572x) + 58091: 294, // correlation (1572x) + 57663: 295, // cpu (1572x) + 57680: 296, // deallocate (1572x) + 58093: 297, // dependency (1572x) + 57685: 298, // directory (1572x) + 57688: 299, // discard (1572x) + 57689: 300, // disk (1572x) + 57984: 301, // dotType (1572x) + 58095: 302, // drainer (1572x) + 58096: 303, // dry (1572x) + 57691: 304, // duplicate (1572x) + 57706: 305, // exchange (1572x) + 57708: 306, // execute (1572x) + 57709: 307, // expansion (1572x) + 57991: 308, // flashback (1572x) + 57723: 309, // general (1572x) + 57728: 310, // help (1572x) + 58070: 311, // high (1572x) + 57729: 312, // histogram (1572x) + 57731: 313, // hosts (1572x) + 57734: 314, // identSQLErrors (1572x) + 58000: 315, // inplace (1572x) + 57741: 316, // instance (1572x) + 58001: 317, // instant (1572x) + 57745: 318, // ipc (1572x) + 57750: 319, // labels (1572x) + 57760: 320, // locked (1572x) + 58072: 321, // low (1572x) + 58071: 322, // medium (1572x) + 58013: 323, // metadata (1572x) + 57780: 324, // modify (1572x) + 58099: 325, // nodeID (1572x) + 58100: 326, // nodeState (1572x) + 57795: 327, // none (1572x) + 57798: 328, // nulls (1572x) + 57811: 329, // pageSym (1572x) + 58103: 330, // pump (1572x) + 57835: 331, // purge (1572x) + 57841: 332, // rebuild (1572x) + 57843: 333, // redundant (1572x) + 57844: 334, // reload (1572x) + 57856: 335, // restore (1572x) + 57864: 336, // routine (1572x) + 58026: 337, // s3 (1572x) + 58105: 338, // samples (1572x) + 57874: 339, // secondaryLoad (1572x) + 57875: 340, // secondaryUnload (1572x) + 57885: 341, // share (1572x) + 57887: 342, // shutdown (1572x) + 57896: 343, // source (1572x) + 57608: 344, // statsOptions (1572x) + 58035: 345, // stop (1572x) + 57919: 346, // swaps (1572x) + 58044: 347, // tidbJson (1572x) + 58048: 348, // tokudbDefault (1572x) + 58049: 349, // tokudbFast (1572x) + 58050: 350, // tokudbLzma (1572x) + 58051: 351, // tokudbQuickLZ (1572x) + 58053: 352, // tokudbSmall (1572x) + 58052: 353, // tokudbSnappy (1572x) + 58054: 354, // tokudbUncompressed (1572x) + 58055: 355, // tokudbZlib (1572x) + 58056: 356, // tokudbZstd (1572x) + 58121: 357, // topn (1572x) + 57936: 358, // trace (1572x) + 57937: 359, // traditional (1572x) + 58064: 360, // trueCardCost (1572x) + 58082: 361, // unlimited (1572x) + 58063: 362, // verboseType (1572x) + 57956: 363, // warnings (1572x) + 57598: 364, // advise (1571x) + 57600: 365, // against (1571x) + 57601: 366, // ago (1571x) + 57603: 367, // always (1571x) + 57620: 368, // backups (1571x) + 57621: 369, // bdr (1571x) + 57623: 370, // bernoulli (1571x) + 57625: 371, // bindingCache (1571x) + 58086: 372, // builtins (1571x) + 57637: 373, // cascaded (1571x) + 57638: 374, // causal (1571x) + 57644: 375, // cleanup (1571x) + 57645: 376, // client (1571x) + 57673: 377, // cluster (1571x) + 57648: 378, // collation (1571x) + 58090: 379, // columnStatsUsage (1571x) + 57654: 380, // committed (1571x) + 57651: 381, // config (1571x) + 57660: 382, // consistency (1571x) + 57661: 383, // consistent (1571x) + 58094: 384, // depth (1571x) + 57687: 385, // disabled (1571x) + 57985: 386, // dump (1571x) + 57694: 387, // enabled (1571x) + 57699: 388, // engines (1571x) + 57704: 389, // events (1571x) + 57705: 390, // evolve (1571x) + 57710: 391, // expire (1571x) + 57989: 392, // exprPushdownBlacklist (1571x) + 57711: 393, // extended (1571x) + 57712: 394, // faultsSym (1571x) + 57718: 395, // found (1571x) + 57722: 396, // function (1571x) + 57725: 397, // grants (1571x) + 58116: 398, // histogramsInFlight (1571x) + 57738: 399, // incremental (1571x) + 57739: 400, // indexes (1571x) + 58002: 401, // internal (1571x) + 57743: 402, // invoker (1571x) + 57744: 403, // io (1571x) + 57751: 404, // language (1571x) + 57756: 405, // level (1571x) + 57757: 406, // list (1571x) + 57759: 407, // local_only (1571x) + 58010: 408, // log (1571x) + 57763: 409, // master (1571x) + 57765: 410, // max_minutes (1571x) + 57785: 411, // never (1571x) + 57787: 412, // nextval (1571x) + 57801: 413, // oltpReadOnly (1571x) + 57802: 414, // oltpReadWrite (1571x) + 57803: 415, // oltpWriteOnly (1571x) + 58101: 416, // optimistic (1571x) + 58015: 417, // optRuleBlacklist (1571x) + 57812: 418, // parser (1571x) + 57813: 419, // partial (1571x) + 57814: 420, // partitioning (1571x) + 57820: 421, // per_table (1571x) + 57818: 422, // percent (1571x) + 58102: 423, // pessimistic (1571x) + 57823: 424, // point (1571x) + 57828: 425, // preserve (1571x) + 57832: 426, // profile (1571x) + 57833: 427, // profiles (1571x) + 57837: 428, // queries (1571x) + 58022: 429, // recent (1571x) + 58126: 430, // region (1571x) + 58023: 431, // replayer (1571x) + 58124: 432, // reset (1571x) + 57857: 433, // restores (1571x) + 57859: 434, // reuse (1571x) + 57863: 435, // rollup (1571x) + 58104: 436, // run (1571x) + 57872: 437, // secondary (1571x) + 57876: 438, // security (1571x) + 57881: 439, // serializable (1571x) + 58107: 440, // sessionStates (1571x) + 57889: 441, // simple (1571x) + 57892: 442, // slave (1571x) + 58113: 443, // statsHealthy (1571x) + 58111: 444, // statsHistograms (1571x) + 58115: 445, // statsLocked (1571x) + 58110: 446, // statsMeta (1571x) + 57920: 447, // switchesSym (1571x) + 57921: 448, // system (1571x) + 57922: 449, // systemTime (1571x) + 58042: 450, // target (1571x) + 58118: 451, // telemetryID (1571x) + 57927: 452, // temptable (1571x) + 58047: 453, // tls (1571x) + 58057: 454, // top (1571x) + 57935: 455, // tpcc (1571x) + 57804: 456, // tpch10 (1571x) + 57938: 457, // transaction (1571x) + 57939: 458, // triggers (1571x) + 57946: 459, // uncommitted (1571x) + 57947: 460, // undefined (1571x) + 58123: 461, // width (1571x) + 57960: 462, // workload (1571x) + 57961: 463, // x509 (1571x) + 57966: 464, // addDate (1570x) + 57604: 465, // any (1570x) + 57967: 466, // approxCountDistinct (1570x) + 57968: 467, // approxPercentile (1570x) + 57616: 468, // avg (1570x) + 57969: 469, // bitAnd (1570x) + 57970: 470, // bitOr (1570x) + 57971: 471, // bitXor (1570x) + 57972: 472, // bound (1570x) + 57976: 473, // cast (1570x) + 57980: 474, // curDate (1570x) + 57979: 475, // curTime (1570x) + 57981: 476, // dateAdd (1570x) + 57982: 477, // dateSub (1570x) + 57702: 478, // escape (1570x) + 57703: 479, // event (1570x) + 57707: 480, // exclusive (1570x) + 57990: 481, // extract (1570x) + 57714: 482, // file (1570x) + 57992: 483, // follower (1570x) + 57996: 484, // getFormat (1570x) + 57998: 485, // groupConcat (1570x) + 57736: 486, // imports (1570x) + 58073: 487, // ioReadBandwidth (1570x) + 58074: 488, // ioWriteBandwidth (1570x) + 58003: 489, // jsonArrayagg (1570x) + 58004: 490, // jsonObjectAgg (1570x) + 57754: 491, // lastval (1570x) + 58005: 492, // leader (1570x) + 58007: 493, // learner (1570x) + 58012: 494, // max (1570x) + 57772: 495, // member (1570x) + 58011: 496, // min (1570x) + 57782: 497, // names (1570x) + 58014: 498, // now (1570x) + 58019: 499, // position (1570x) + 57830: 500, // process (1570x) + 57834: 501, // proxy (1570x) + 57839: 502, // quick (1570x) + 57850: 503, // replicas (1570x) + 57851: 504, // replication (1570x) + 57860: 505, // reverse (1570x) + 57865: 506, // rowCount (1570x) + 58025: 507, // running (1570x) + 57883: 508, // setval (1570x) + 57886: 509, // shared (1570x) + 57895: 510, // some (1570x) + 57897: 511, // sqlBufferResult (1570x) + 57898: 512, // sqlCache (1570x) + 57899: 513, // sqlNoCache (1570x) + 58028: 514, // staleness (1570x) + 58031: 515, // std (1570x) + 58032: 516, // stddev (1570x) + 58033: 517, // stddevPop (1570x) + 58034: 518, // stddevSamp (1570x) + 58036: 519, // strict (1570x) + 58037: 520, // strong (1570x) + 58038: 521, // subDate (1570x) + 58040: 522, // substring (1570x) + 58039: 523, // sum (1570x) + 57918: 524, // super (1570x) + 58117: 525, // telemetry (1570x) + 58045: 526, // timestampAdd (1570x) + 58046: 527, // timestampDiff (1570x) + 58058: 528, // trim (1570x) + 57941: 529, // tsoType (1570x) + 58060: 530, // variance (1570x) + 58061: 531, // varPop (1570x) + 58062: 532, // varSamp (1570x) + 58065: 533, // voter (1570x) + 57958: 534, // weightString (1570x) + 57504: 535, // on (1480x) + 40: 536, // '(' (1476x) + 57591: 537, // with (1347x) + 57353: 538, // stringLit (1333x) + 58172: 539, // not2 (1284x) + 57405: 540, // defaultKwd (1235x) + 57497: 541, // not (1215x) + 57369: 542, // as (1182x) + 57384: 543, // collate (1150x) + 57568: 544, // union (1140x) + 57475: 545, // left (1137x) + 57532: 546, // right (1137x) + 57575: 547, // using (1127x) + 43: 548, // '+' (1113x) + 45: 549, // '-' (1111x) + 57496: 550, // mod (1091x) + 57513: 551, // partition (1067x) + 57579: 552, // values (1047x) + 57501: 553, // null (1044x) + 57446: 554, // ignore (1035x) + 57424: 555, // except (1029x) + 57453: 556, // intersect (1028x) + 57528: 557, // replace (1022x) + 57382: 558, // charType (1017x) + 57426: 559, // fetch (1011x) + 57539: 560, // set (1003x) + 58161: 561, // eq (1002x) + 57478: 562, // limit (1002x) + 57431: 563, // forKwd (1000x) + 58156: 564, // intLit (995x) + 57455: 565, // into (994x) + 57434: 566, // from (992x) + 57484: 567, // lock (987x) + 57587: 568, // where (979x) + 57509: 569, // order (974x) + 57432: 570, // force (969x) + 57367: 571, // and (966x) + 57508: 572, // or (942x) + 57358: 573, // andand (941x) + 57821: 574, // pipesAsOr (941x) + 57592: 575, // xor (941x) + 57438: 576, // group (912x) + 57440: 577, // having (907x) + 57553: 578, // straightJoin (899x) + 57590: 579, // window (893x) + 57574: 580, // use (891x) + 57466: 581, // join (887x) + 57409: 582, // desc (882x) + 57445: 583, // ifKwd (878x) + 57476: 584, // like (877x) + 57595: 585, // natural (877x) + 57390: 586, // cross (876x) + 57423: 587, // explain (876x) + 57450: 588, // inner (876x) + 42: 589, // '*' (874x) + 125: 590, // '}' (873x) + 57373: 591, // binaryType (870x) + 57458: 592, // insert (867x) + 57535: 593, // rows (861x) + 57586: 594, // when (855x) + 57418: 595, // elseKwd (851x) + 57518: 596, // rangeKwd (851x) + 57556: 597, // tableSample (851x) + 57439: 598, // groups (849x) + 57400: 599, // dayHour (848x) + 57401: 600, // dayMicrosecond (848x) + 57402: 601, // dayMinute (848x) + 57403: 602, // daySecond (848x) + 57442: 603, // hourMicrosecond (848x) + 57443: 604, // hourMinute (848x) + 57444: 605, // hourSecond (848x) + 57494: 606, // minuteMicrosecond (848x) + 57495: 607, // minuteSecond (848x) + 57537: 608, // secondMicrosecond (848x) + 57593: 609, // yearMonth (848x) + 57370: 610, // asc (846x) + 57447: 611, // in (840x) + 57559: 612, // then (840x) + 57555: 613, // tableKwd (833x) + 47: 614, // '/' (832x) + 37: 615, // '%' (831x) + 38: 616, // '&' (831x) + 94: 617, // '^' (831x) + 124: 618, // '|' (831x) + 57413: 619, // div (831x) + 58166: 620, // lsh (831x) + 58171: 621, // rsh (831x) + 60: 622, // '<' (830x) + 62: 623, // '>' (830x) + 57379: 624, // caseKwd (830x) + 58162: 625, // ge (830x) + 57457: 626, // is (830x) + 58163: 627, // le (830x) + 58167: 628, // neq (830x) + 58168: 629, // neqSynonym (830x) + 58169: 630, // nulleq (830x) + 57527: 631, // repeat (830x) + 57371: 632, // between (825x) + 57354: 633, // singleAtIdentifier (823x) + 57425: 634, // falseKwd (819x) + 57566: 635, // trueKwd (819x) + 57395: 636, // currentUser (818x) + 57477: 637, // ilike (817x) + 57524: 638, // regexpKwd (817x) + 57533: 639, // rlike (817x) + 57350: 640, // memberof (814x) + 58155: 641, // decLit (811x) + 58154: 642, // floatLit (811x) + 58157: 643, // hexLit (811x) + 57534: 644, // row (810x) + 58158: 645, // bitLit (809x) + 57454: 646, // interval (809x) + 58170: 647, // paramMarker (808x) + 123: 648, // '{' (806x) + 57398: 649, // database (802x) + 57421: 650, // exists (801x) + 57388: 651, // convert (798x) + 57352: 652, // underscoreCS (798x) + 58134: 653, // builtinCurDate (797x) + 58142: 654, // builtinNow (797x) + 57392: 655, // currentDate (797x) + 57394: 656, // currentTs (797x) + 57355: 657, // doubleAtIdentifier (797x) + 57482: 658, // localTime (797x) + 57483: 659, // localTs (797x) + 58131: 660, // builtinCount (795x) + 57538: 661, // selectKwd (795x) + 57543: 662, // sql (795x) + 33: 663, // '!' (794x) + 126: 664, // '~' (794x) + 58132: 665, // builtinApproxCountDistinct (794x) + 58133: 666, // builtinApproxPercentile (794x) + 58127: 667, // builtinBitAnd (794x) + 58128: 668, // builtinBitOr (794x) + 58129: 669, // builtinBitXor (794x) + 58130: 670, // builtinCast (794x) + 58135: 671, // builtinCurTime (794x) + 58136: 672, // builtinDateAdd (794x) + 58137: 673, // builtinDateSub (794x) + 58138: 674, // builtinExtract (794x) + 58139: 675, // builtinGroupConcat (794x) + 58140: 676, // builtinMax (794x) + 58141: 677, // builtinMin (794x) + 58143: 678, // builtinPosition (794x) + 58147: 679, // builtinStddevPop (794x) + 58148: 680, // builtinStddevSamp (794x) + 58144: 681, // builtinSubstring (794x) + 58145: 682, // builtinSum (794x) + 58146: 683, // builtinSysDate (794x) + 58149: 684, // builtinTranslate (794x) + 58150: 685, // builtinTrim (794x) + 58151: 686, // builtinUser (794x) + 58152: 687, // builtinVarPop (794x) + 58153: 688, // builtinVarSamp (794x) + 57391: 689, // cumeDist (794x) + 57396: 690, // currentRole (794x) + 57393: 691, // currentTime (794x) + 57408: 692, // denseRank (794x) + 57427: 693, // firstValue (794x) + 57470: 694, // lag (794x) + 57471: 695, // lastValue (794x) + 57472: 696, // lead (794x) + 57499: 697, // nthValue (794x) + 57500: 698, // ntile (794x) + 57514: 699, // percentRank (794x) + 57519: 700, // rank (794x) + 57536: 701, // rowNumber (794x) + 57554: 702, // tidbCurrentTSO (794x) + 57576: 703, // utcDate (794x) + 57578: 704, // utcTime (794x) + 57577: 705, // utcTimestamp (794x) + 57467: 706, // key (788x) + 57359: 707, // pipes (779x) + 57516: 708, // primary (779x) + 57383: 709, // check (778x) + 57567: 710, // unique (771x) + 57386: 711, // constraint (768x) + 57523: 712, // references (766x) + 57436: 713, // generated (762x) + 57381: 714, // character (758x) + 57448: 715, // index (742x) + 57488: 716, // match (728x) + 57563: 717, // to (637x) + 57366: 718, // analyze (631x) + 57572: 719, // update (627x) + 46: 720, // '.' (616x) + 57364: 721, // all (615x) + 58160: 722, // assignmentEq (580x) + 58164: 723, // jss (580x) + 58165: 724, // juss (580x) + 57489: 725, // maxValue (579x) + 57368: 726, // array (576x) + 57479: 727, // lines (572x) + 57376: 728, // by (564x) + 57365: 729, // alter (562x) + 57529: 730, // require (559x) + 64: 731, // '@' (554x) + 57415: 732, // drop (548x) + 57378: 733, // cascade (547x) + 57520: 734, // read (547x) + 57530: 735, // restrict (547x) + 57347: 736, // asof (546x) + 57582: 737, // varcharacter (546x) + 57581: 738, // varcharType (546x) + 57404: 739, // decimalType (545x) + 57414: 740, // doubleType (545x) + 57428: 741, // floatType (545x) + 57452: 742, // integerType (545x) + 57459: 743, // intType (545x) + 57521: 744, // realType (545x) + 57583: 745, // varbinaryType (544x) + 57372: 746, // bigIntType (543x) + 57374: 747, // blobType (543x) + 57389: 748, // create (543x) + 57429: 749, // float4Type (543x) + 57430: 750, // float8Type (543x) + 57433: 751, // foreign (543x) + 57435: 752, // fulltext (543x) + 57460: 753, // int1Type (543x) + 57461: 754, // int2Type (543x) + 57462: 755, // int3Type (543x) + 57463: 756, // int4Type (543x) + 57464: 757, // int8Type (543x) + 57580: 758, // long (543x) + 57485: 759, // longblobType (543x) + 57486: 760, // longtextType (543x) + 57490: 761, // mediumblobType (543x) + 57491: 762, // mediumIntType (543x) + 57492: 763, // mediumtextType (543x) + 57493: 764, // middleIntType (543x) + 57502: 765, // numericType (543x) + 57541: 766, // smallIntType (543x) + 57560: 767, // tinyblobType (543x) + 57561: 768, // tinyIntType (543x) + 57562: 769, // tinytextType (543x) + 57348: 770, // toTimestamp (542x) + 57349: 771, // toTSO (542x) + 57380: 772, // change (540x) + 57526: 773, // rename (540x) + 57589: 774, // write (540x) + 57363: 775, // add (539x) + 57505: 776, // optimize (538x) + 58446: 777, // Identifier (534x) + 58527: 778, // NotKeywordToken (534x) + 58805: 779, // TiDBKeyword (534x) + 58815: 780, // UnReservedKeyword (534x) + 58770: 781, // SubSelect (260x) + 58825: 782, // UserVariable (200x) + 58498: 783, // Literal (198x) + 58741: 784, // SimpleIdent (198x) + 58760: 785, // StringLiteral (198x) + 58524: 786, // NextValueForSequence (195x) + 58423: 787, // FunctionCallGeneric (194x) + 58424: 788, // FunctionCallKeyword (194x) + 58425: 789, // FunctionCallNonKeyword (194x) + 58426: 790, // FunctionNameConflict (194x) + 58427: 791, // FunctionNameDateArith (194x) + 58428: 792, // FunctionNameDateArithMultiForms (194x) + 58429: 793, // FunctionNameDatetimePrecision (194x) + 58430: 794, // FunctionNameOptionalBraces (194x) + 58431: 795, // FunctionNameSequence (194x) + 58740: 796, // SimpleExpr (194x) + 58771: 797, // SumExpr (194x) + 58773: 798, // SystemVariable (194x) + 58836: 799, // Variable (194x) + 58860: 800, // WindowFuncCall (194x) + 58254: 801, // BitExpr (176x) + 58602: 802, // PredicateExpr (144x) + 58257: 803, // BoolPri (141x) + 58386: 804, // Expression (141x) + 58522: 805, // NUM (125x) + 58876: 806, // logAnd (107x) + 58877: 807, // logOr (107x) + 58377: 808, // EqOpt (98x) + 57407: 809, // deleteKwd (87x) + 58783: 810, // TableName (81x) + 58761: 811, // StringName (56x) + 58695: 812, // SelectStmt (53x) + 58696: 813, // SelectStmtBasic (53x) + 58698: 814, // SelectStmtFromDualTable (53x) + 58699: 815, // SelectStmtFromTable (53x) + 58716: 816, // SetOprClause (53x) + 58717: 817, // SetOprClauseList (52x) + 58720: 818, // SetOprStmtWithLimitOrderBy (52x) + 58721: 819, // SetOprStmtWoutLimitOrderBy (52x) + 58489: 820, // LengthNum (51x) + 57570: 821, // unsigned (50x) + 58866: 822, // WithClause (50x) + 58708: 823, // SelectStmtWithClause (49x) + 58719: 824, // SetOprStmt (49x) + 57594: 825, // zerofill (48x) + 57512: 826, // over (45x) + 58819: 827, // UpdateStmtNoWith (42x) + 58283: 828, // ColumnName (41x) + 58343: 829, // DeleteWithoutUsingStmt (41x) + 58474: 830, // InsertIntoStmt (39x) + 58659: 831, // ReplaceIntoStmt (39x) + 58818: 832, // UpdateStmt (39x) + 58477: 833, // Int64Num (38x) + 57410: 834, // describe (36x) + 57411: 835, // distinct (36x) + 57412: 836, // distinctRow (36x) + 57588: 837, // while (36x) + 58865: 838, // WindowingClause (35x) + 58342: 839, // DeleteWithUsingStmt (34x) + 57465: 840, // iterate (34x) + 57474: 841, // leave (34x) + 57406: 842, // delayed (33x) + 57441: 843, // highPriority (33x) + 57487: 844, // lowPriority (33x) + 58341: 845, // DeleteFromStmt (32x) + 57357: 846, // hintComment (27x) + 58397: 847, // FieldLen (25x) + 58572: 848, // OrderBy (25x) + 58702: 849, // SelectStmtLimit (25x) + 58566: 850, // OptWindowingClause (24x) + 58226: 851, // AnalyzeTableStmt (23x) + 58297: 852, // CommitStmt (23x) + 58686: 853, // RollbackStmt (23x) + 58724: 854, // SetStmt (23x) + 57544: 855, // sqlBigResult (23x) + 57545: 856, // sqlCalcFoundRows (23x) + 57546: 857, // sqlSmallResult (23x) + 57558: 858, // terminated (21x) + 58272: 859, // CharsetKw (20x) + 58447: 860, // IfExists (20x) + 58827: 861, // Username (20x) + 57419: 862, // enclosed (19x) + 58382: 863, // ExplainStmt (19x) + 58383: 864, // ExplainSym (19x) + 58584: 865, // PartitionNameList (19x) + 58813: 866, // TruncateTableStmt (19x) + 58820: 867, // UseStmt (19x) + 57420: 868, // escaped (18x) + 58387: 869, // ExpressionList (18x) + 57351: 870, // optionallyEnclosedBy (18x) + 58596: 871, // PlacementPolicyOption (18x) + 58613: 872, // ProcedureBlockContent (18x) + 58642: 873, // ProcedureUnlabelLoopStmt (18x) + 58615: 874, // ProcedureCaseStmt (17x) + 58616: 875, // ProcedureCloseCur (17x) + 58622: 876, // ProcedureFetchInto (17x) + 58628: 877, // ProcedureIfstmt (17x) + 58629: 878, // ProcedureIterate (17x) + 58630: 879, // ProcedureLabeledBlock (17x) + 58644: 880, // ProcedurelabeledLoopStmt (17x) + 58631: 881, // ProcedureLeave (17x) + 58632: 882, // ProcedureOpenCur (17x) + 58635: 883, // ProcedureProcStmt (17x) + 58638: 884, // ProcedureSearchedCase (17x) + 58639: 885, // ProcedureSimpleCase (17x) + 58640: 886, // ProcedureStatementStmt (17x) + 58643: 887, // ProcedureUnlabeledBlock (17x) + 58641: 888, // ProcedureUnlabelLoopBlock (17x) + 58448: 889, // IfNotExists (16x) + 58784: 890, // TableNameList (16x) + 58348: 891, // DistinctKwd (15x) + 58807: 892, // TimestampUnit (15x) + 58349: 893, // DistinctOpt (14x) + 58550: 894, // OptFieldLen (14x) + 58850: 895, // WhereClause (14x) + 58851: 896, // WhereClauseOptional (14x) + 58336: 897, // DefaultKwdOpt (13x) + 58378: 898, // EqOrAssignmentEq (13x) + 58385: 899, // ExprOrDefault (13x) + 57481: 900, // load (13x) + 58483: 901, // JoinTable (12x) + 58545: 902, // OptBinary (12x) + 57525: 903, // release (12x) + 58683: 904, // RolenameComposed (12x) + 58780: 905, // TableFactor (12x) + 58793: 906, // TableRef (12x) + 58806: 907, // TimeUnit (12x) + 58225: 908, // AnalyzeOptionListOpt (11x) + 58418: 909, // FromOrIn (11x) + 58221: 910, // AlterTableStmt (10x) + 58273: 911, // CharsetName (10x) + 58284: 912, // ColumnNameList (10x) + 58326: 913, // DBName (10x) + 57498: 914, // noWriteToBinLog (10x) + 58573: 915, // OrderByOptional (10x) + 58575: 916, // PartDefOption (10x) + 58739: 917, // SignedNum (10x) + 58260: 918, // BuggyDefaultFalseDistinctOpt (9x) + 58335: 919, // DefaultFalseDistinctOpt (9x) + 58484: 920, // JoinType (9x) + 58528: 921, // NotSym (9x) + 58535: 922, // NumLiteral (9x) + 58682: 923, // Rolename (9x) + 58677: 924, // RoleNameString (9x) + 58324: 925, // CrossOpt (8x) + 58384: 926, // ExplainableStmt (8x) + 58388: 927, // ExpressionListOpt (8x) + 58468: 928, // IndexPartSpecification (8x) + 58485: 929, // KeyOrIndex (8x) + 58525: 930, // NoWriteToBinLogAliasOpt (8x) + 58703: 931, // SelectStmtLimitOpt (8x) + 58839: 932, // VariableName (8x) + 58206: 933, // AllOrPartitionNameList (7x) + 58251: 934, // BindableStmt (7x) + 58307: 935, // ConstraintKeywordOpt (7x) + 58331: 936, // DatabaseSym (7x) + 58403: 937, // FieldsOrColumns (7x) + 58415: 938, // ForceOpt (7x) + 58469: 939, // IndexPartSpecificationList (7x) + 57469: 940, // kill (7x) + 58606: 941, // Priority (7x) + 58636: 942, // ProcedureProcStmt1s (7x) + 58665: 943, // ResourceGroupName (7x) + 58687: 944, // RowFormat (7x) + 58690: 945, // RowValue (7x) + 58714: 946, // SetExpr (7x) + 58726: 947, // ShowDatabaseNameOpt (7x) + 58790: 948, // TableOption (7x) + 57584: 949, // varying (7x) + 58249: 950, // BeginTransactionStmt (6x) + 58241: 951, // BRIEBooleanOptionName (6x) + 58242: 952, // BRIEIntegerOptionName (6x) + 58243: 953, // BRIEKeywordOptionName (6x) + 58244: 954, // BRIEOption (6x) + 58245: 955, // BRIEOptions (6x) + 58247: 956, // BRIEStringOptionName (6x) + 58271: 957, // Char (6x) + 57385: 958, // column (6x) + 58278: 959, // ColumnDef (6x) + 58328: 960, // DatabaseOption (6x) + 58379: 961, // EscapedTableRef (6x) + 58401: 962, // FieldTerminator (6x) + 57437: 963, // grant (6x) + 58450: 964, // IgnoreOptional (6x) + 58460: 965, // IndexInvisible (6x) + 58465: 966, // IndexNameList (6x) + 58471: 967, // IndexType (6x) + 58505: 968, // LoadDataStmt (6x) + 58585: 969, // PartitionNameListOpt (6x) + 57517: 970, // procedure (6x) + 58654: 971, // ReleaseSavepointStmt (6x) + 58684: 972, // RolenameList (6x) + 58691: 973, // SavepointStmt (6x) + 57540: 974, // show (6x) + 58788: 975, // TableOptimizerHints (6x) + 58828: 976, // UsernameList (6x) + 58867: 977, // WithClustered (6x) + 58204: 978, // AlgorithmClause (5x) + 58262: 979, // ByItem (5x) + 58277: 980, // CollationName (5x) + 58281: 981, // ColumnKeywordOpt (5x) + 58344: 982, // DirectPlacementOption (5x) + 58346: 983, // DirectResourceGroupOption (5x) + 58399: 984, // FieldOpt (5x) + 58400: 985, // FieldOpts (5x) + 58444: 986, // IdentList (5x) + 58463: 987, // IndexName (5x) + 58466: 988, // IndexOption (5x) + 58467: 989, // IndexOptionList (5x) + 57449: 990, // infile (5x) + 58494: 991, // LimitOption (5x) + 58509: 992, // LockClause (5x) + 58547: 993, // OptCharsetWithOptBinary (5x) + 58557: 994, // OptNullTreatment (5x) + 58600: 995, // PolicyName (5x) + 58607: 996, // PriorityOpt (5x) + 58694: 997, // SelectLockOpt (5x) + 58701: 998, // SelectStmtIntoOption (5x) + 58794: 999, // TableRefs (5x) + 58821: 1000, // UserSpec (5x) + 58229: 1001, // AsOfClause (4x) + 58232: 1002, // Assignment (4x) + 58238: 1003, // AuthString (4x) + 58258: 1004, // Boolean (4x) + 58261: 1005, // BuiltinFunction (4x) + 58263: 1006, // ByList (4x) + 58301: 1007, // ConfigItemName (4x) + 58305: 1008, // Constraint (4x) + 58411: 1009, // FloatOpt (4x) + 58472: 1010, // IndexTypeName (4x) + 58534: 1011, // NumList (4x) + 57506: 1012, // option (4x) + 57507: 1013, // optionally (4x) + 58563: 1014, // OptWild (4x) + 57511: 1015, // outer (4x) + 58601: 1016, // Precision (4x) + 58650: 1017, // ReferDef (4x) + 58673: 1018, // RestrictOrCascadeOpt (4x) + 58689: 1019, // RowStmt (4x) + 58709: 1020, // SequenceOption (4x) + 57552: 1021, // statsExtended (4x) + 58775: 1022, // TableAsName (4x) + 58776: 1023, // TableAsNameOpt (4x) + 58787: 1024, // TableNameOptWild (4x) + 58789: 1025, // TableOptimizerHintsOpt (4x) + 58791: 1026, // TableOptionList (4x) + 58802: 1027, // TextString (4x) + 58809: 1028, // TraceableStmt (4x) + 58810: 1029, // TransactionChar (4x) + 58822: 1030, // UserSpecList (4x) + 58835: 1031, // Varchar (4x) + 58861: 1032, // WindowName (4x) + 58233: 1033, // AssignmentList (3x) + 58235: 1034, // AttributesOpt (3x) + 58255: 1035, // BitValueType (3x) + 58256: 1036, // BlobType (3x) + 58259: 1037, // BooleanType (3x) + 58290: 1038, // ColumnOption (3x) + 58293: 1039, // ColumnPosition (3x) + 58298: 1040, // CommonTableExpr (3x) + 58320: 1041, // CreateTableStmt (3x) + 58325: 1042, // CurdateSym (3x) + 58329: 1043, // DatabaseOptionList (3x) + 58332: 1044, // DateAndTimeType (3x) + 58339: 1045, // DefaultTrueDistinctOpt (3x) + 58345: 1046, // DirectResourceGroupBackgroundOption (3x) + 58347: 1047, // DirectResourceGroupRunawayOption (3x) + 58369: 1048, // DynamicCalibrateResourceOption (3x) + 57417: 1049, // elseIfKwd (3x) + 58374: 1050, // EnforcedOrNot (3x) + 58390: 1051, // ExtendedPriv (3x) + 58406: 1052, // FixedPointType (3x) + 58412: 1053, // FloatingPointType (3x) + 58432: 1054, // GeneratedAlways (3x) + 58434: 1055, // GlobalScope (3x) + 58438: 1056, // GroupByClause (3x) + 58455: 1057, // IndexHint (3x) + 58459: 1058, // IndexHintType (3x) + 58464: 1059, // IndexNameAndTypeOpt (3x) + 58478: 1060, // IntegerType (3x) + 57468: 1061, // keys (3x) + 58496: 1062, // Lines (3x) + 58508: 1063, // LocationLabelList (3x) + 58521: 1064, // NChar (3x) + 58529: 1065, // NowSym (3x) + 58530: 1066, // NowSymFunc (3x) + 58531: 1067, // NowSymOptionFraction (3x) + 58536: 1068, // NumericType (3x) + 58523: 1069, // NVarchar (3x) + 58558: 1070, // OptOrder (3x) + 58562: 1071, // OptTemporary (3x) + 58576: 1072, // PartDefOptionList (3x) + 58578: 1073, // PartitionDefinition (3x) + 58589: 1074, // PasswordOrLockOption (3x) + 58599: 1075, // PluginNameList (3x) + 58605: 1076, // PrimaryOpt (3x) + 58608: 1077, // PrivElem (3x) + 58610: 1078, // PrivType (3x) + 58645: 1079, // QueryWatchOption (3x) + 58647: 1080, // QueryWatchTextOption (3x) + 58660: 1081, // RequireClause (3x) + 58661: 1082, // RequireClauseOpt (3x) + 58663: 1083, // RequireListElement (3x) + 58685: 1084, // RolenameWithoutIdent (3x) + 58678: 1085, // RoleOrPrivElem (3x) + 58700: 1086, // SelectStmtGroup (3x) + 58718: 1087, // SetOprOpt (3x) + 58738: 1088, // SignedLiteral (3x) + 58763: 1089, // StringType (3x) + 58774: 1090, // TableAliasRefList (3x) + 58777: 1091, // TableElement (3x) + 58804: 1092, // TextType (3x) + 58811: 1093, // TransactionChars (3x) + 57565: 1094, // trigger (3x) + 58814: 1095, // Type (3x) + 57569: 1096, // unlock (3x) + 57571: 1097, // until (3x) + 57573: 1098, // usage (3x) + 58832: 1099, // ValuesList (3x) + 58834: 1100, // ValuesStmtList (3x) + 58830: 1101, // ValueSym (3x) + 58837: 1102, // VariableAssignment (3x) + 58858: 1103, // WindowFrameStart (3x) + 58875: 1104, // Year (3x) + 58200: 1105, // AddQueryWatchStmt (2x) + 58202: 1106, // AdminStmt (2x) + 58205: 1107, // AllColumnsOrPredicateColumnsOpt (2x) + 58207: 1108, // AlterDatabaseStmt (2x) + 58208: 1109, // AlterInstanceStmt (2x) + 58209: 1110, // AlterOrderItem (2x) + 58211: 1111, // AlterPolicyStmt (2x) + 58212: 1112, // AlterRangeStmt (2x) + 58213: 1113, // AlterResourceGroupStmt (2x) + 58214: 1114, // AlterSequenceOption (2x) + 58216: 1115, // AlterSequenceStmt (2x) + 58217: 1116, // AlterTableSpec (2x) + 58222: 1117, // AlterUserStmt (2x) + 58223: 1118, // AnalyzeOption (2x) + 58253: 1119, // BinlogStmt (2x) + 58246: 1120, // BRIEStmt (2x) + 58248: 1121, // BRIETables (2x) + 58265: 1122, // CalibrateResourceStmt (2x) + 57377: 1123, // call (2x) + 58267: 1124, // CallStmt (2x) + 58268: 1125, // CancelImportStmt (2x) + 58269: 1126, // CastType (2x) + 58270: 1127, // ChangeStmt (2x) + 58276: 1128, // CheckConstraintKeyword (2x) + 58285: 1129, // ColumnNameListOpt (2x) + 58288: 1130, // ColumnNameOrUserVariable (2x) + 58287: 1131, // ColumnNameOrUserVarListOptWithBrackets (2x) + 58291: 1132, // ColumnOptionList (2x) + 58292: 1133, // ColumnOptionListOpt (2x) + 58296: 1134, // CommentOrAttributeOption (2x) + 58300: 1135, // CompletionTypeWithinTransaction (2x) + 58302: 1136, // ConnectionOption (2x) + 58304: 1137, // ConnectionOptions (2x) + 58308: 1138, // CreateBindingStmt (2x) + 58309: 1139, // CreateDatabaseStmt (2x) + 58310: 1140, // CreateIndexStmt (2x) + 58311: 1141, // CreatePolicyStmt (2x) + 58312: 1142, // CreateProcedureStmt (2x) + 58313: 1143, // CreateResourceGroupStmt (2x) + 58314: 1144, // CreateRoleStmt (2x) + 58316: 1145, // CreateSequenceStmt (2x) + 58317: 1146, // CreateStatisticsStmt (2x) + 58318: 1147, // CreateTableOptionListOpt (2x) + 58321: 1148, // CreateUserStmt (2x) + 58323: 1149, // CreateViewStmt (2x) + 57399: 1150, // databases (2x) + 58333: 1151, // DeallocateStmt (2x) + 58334: 1152, // DeallocateSym (2x) + 58337: 1153, // DefaultOrExpression (2x) + 58350: 1154, // DoStmt (2x) + 58351: 1155, // DropBindingStmt (2x) + 58352: 1156, // DropDatabaseStmt (2x) + 58353: 1157, // DropIndexStmt (2x) + 58354: 1158, // DropLoadDataStmt (2x) + 58355: 1159, // DropPolicyStmt (2x) + 58356: 1160, // DropProcedureStmt (2x) + 58357: 1161, // DropQueryWatchStmt (2x) + 58358: 1162, // DropResourceGroupStmt (2x) + 58359: 1163, // DropRoleStmt (2x) + 58360: 1164, // DropSequenceStmt (2x) + 58361: 1165, // DropStatisticsStmt (2x) + 58362: 1166, // DropStatsStmt (2x) + 58363: 1167, // DropTableStmt (2x) + 58364: 1168, // DropUserStmt (2x) + 58365: 1169, // DropViewStmt (2x) + 58367: 1170, // DuplicateOpt (2x) + 58370: 1171, // ElseCaseOpt (2x) + 58372: 1172, // EmptyStmt (2x) + 58373: 1173, // EncryptionOpt (2x) + 58375: 1174, // EnforcedOrNotOpt (2x) + 58380: 1175, // ExecuteStmt (2x) + 58381: 1176, // ExplainFormatType (2x) + 58392: 1177, // Field (2x) + 58395: 1178, // FieldItem (2x) + 58402: 1179, // Fields (2x) + 58407: 1180, // FlashbackDatabaseStmt (2x) + 58408: 1181, // FlashbackTableStmt (2x) + 58409: 1182, // FlashbackToNewName (2x) + 58410: 1183, // FlashbackToTimestampStmt (2x) + 58414: 1184, // FlushStmt (2x) + 58416: 1185, // FormatOpt (2x) + 58421: 1186, // FuncDatetimePrecList (2x) + 58422: 1187, // FuncDatetimePrecListOpt (2x) + 58435: 1188, // GrantProxyStmt (2x) + 58436: 1189, // GrantRoleStmt (2x) + 58437: 1190, // GrantStmt (2x) + 58439: 1191, // HandleRange (2x) + 58441: 1192, // HashString (2x) + 58442: 1193, // HavingClause (2x) + 58443: 1194, // HelpStmt (2x) + 58452: 1195, // ImportIntoStmt (2x) + 58454: 1196, // IndexAdviseStmt (2x) + 58456: 1197, // IndexHintList (2x) + 58457: 1198, // IndexHintListOpt (2x) + 58462: 1199, // IndexLockAndAlgorithmOpt (2x) + 57451: 1200, // inout (2x) + 58475: 1201, // InsertValues (2x) + 58480: 1202, // IntoOpt (2x) + 58486: 1203, // KeyOrIndexOpt (2x) + 58487: 1204, // KillOrKillTiDB (2x) + 58488: 1205, // KillStmt (2x) + 58490: 1206, // LikeOrIlikeEscapeOpt (2x) + 58493: 1207, // LimitClause (2x) + 57480: 1208, // linear (2x) + 58495: 1209, // LinearOpt (2x) + 58499: 1210, // LoadDataOption (2x) + 58501: 1211, // LoadDataOptionListOpt (2x) + 58502: 1212, // LoadDataSetItem (2x) + 58504: 1213, // LoadDataSetSpecOpt (2x) + 58506: 1214, // LoadStatsStmt (2x) + 58507: 1215, // LocalOpt (2x) + 58510: 1216, // LockStatsStmt (2x) + 58511: 1217, // LockTablesStmt (2x) + 58519: 1218, // MaxValueOrExpression (2x) + 58526: 1219, // NonTransactionalDMLStmt (2x) + 58532: 1220, // NowSymOptionFractionParentheses (2x) + 58537: 1221, // ObjectType (2x) + 57503: 1222, // of (2x) + 58538: 1223, // OfTablesOpt (2x) + 58539: 1224, // OnCommitOpt (2x) + 58540: 1225, // OnDelete (2x) + 58543: 1226, // OnUpdate (2x) + 58548: 1227, // OptCollate (2x) + 58552: 1228, // OptFull (2x) + 58554: 1229, // OptInteger (2x) + 58568: 1230, // OptionalBraces (2x) + 58567: 1231, // OptionLevel (2x) + 58556: 1232, // OptLeadLagInfo (2x) + 58555: 1233, // OptLLDefault (2x) + 57510: 1234, // out (2x) + 58574: 1235, // OuterOpt (2x) + 58579: 1236, // PartitionDefinitionList (2x) + 58580: 1237, // PartitionDefinitionListOpt (2x) + 58581: 1238, // PartitionIntervalOpt (2x) + 58587: 1239, // PartitionOpt (2x) + 58588: 1240, // PasswordOpt (2x) + 58590: 1241, // PasswordOrLockOptionList (2x) + 58591: 1242, // PasswordOrLockOptions (2x) + 58592: 1243, // PauseLoadDataStmt (2x) + 58595: 1244, // PlacementOptionList (2x) + 58598: 1245, // PlanReplayerStmt (2x) + 58604: 1246, // PreparedStmt (2x) + 58609: 1247, // PrivLevel (2x) + 58611: 1248, // ProcedurceCond (2x) + 58612: 1249, // ProcedurceLabelOpt (2x) + 58618: 1250, // ProcedureDecl (2x) + 58625: 1251, // ProcedureHcond (2x) + 58627: 1252, // ProcedureIf (2x) + 58648: 1253, // QuickOptional (2x) + 58649: 1254, // RecoverTableStmt (2x) + 58651: 1255, // ReferOpt (2x) + 58653: 1256, // RegexpSym (2x) + 58655: 1257, // RenameTableStmt (2x) + 58656: 1258, // RenameUserStmt (2x) + 58658: 1259, // RepeatableOpt (2x) + 58666: 1260, // ResourceGroupNameOption (2x) + 58667: 1261, // ResourceGroupOptionList (2x) + 58669: 1262, // ResourceGroupRunawayActionOption (2x) + 58671: 1263, // ResourceGroupRunawayWatchOption (2x) + 58672: 1264, // RestartStmt (2x) + 58674: 1265, // ResumeLoadDataStmt (2x) + 57531: 1266, // revoke (2x) + 58675: 1267, // RevokeRoleStmt (2x) + 58676: 1268, // RevokeStmt (2x) + 58679: 1269, // RoleOrPrivElemList (2x) + 58680: 1270, // RoleSpec (2x) + 58692: 1271, // SearchWhenThen (2x) + 58704: 1272, // SelectStmtOpt (2x) + 58707: 1273, // SelectStmtSQLCache (2x) + 58711: 1274, // SetBindingStmt (2x) + 58712: 1275, // SetDefaultRoleOpt (2x) + 58713: 1276, // SetDefaultRoleStmt (2x) + 58723: 1277, // SetRoleStmt (2x) + 58731: 1278, // ShowProfileType (2x) + 58734: 1279, // ShowStmt (2x) + 58735: 1280, // ShowTableAliasOpt (2x) + 58737: 1281, // ShutdownStmt (2x) + 58742: 1282, // SimpleWhenThen (2x) + 58747: 1283, // SplitOption (2x) + 58748: 1284, // SplitRegionStmt (2x) + 58744: 1285, // SpOptInout (2x) + 58745: 1286, // SpPdparam (2x) + 57547: 1287, // sqlexception (2x) + 57548: 1288, // sqlstate (2x) + 57549: 1289, // sqlwarning (2x) + 58752: 1290, // Statement (2x) + 58755: 1291, // StatsOptionsOpt (2x) + 58756: 1292, // StatsPersistentVal (2x) + 58757: 1293, // StatsType (2x) + 58764: 1294, // SubPartDefinition (2x) + 58767: 1295, // SubPartitionMethod (2x) + 58772: 1296, // Symbol (2x) + 58778: 1297, // TableElementList (2x) + 58781: 1298, // TableLock (2x) + 58785: 1299, // TableNameListOpt (2x) + 58792: 1300, // TableOrTables (2x) + 58801: 1301, // TablesTerminalSym (2x) + 58799: 1302, // TableToTable (2x) + 58803: 1303, // TextStringList (2x) + 58808: 1304, // TraceStmt (2x) + 58816: 1305, // UnlockStatsStmt (2x) + 58817: 1306, // UnlockTablesStmt (2x) + 58823: 1307, // UserToUser (2x) + 58838: 1308, // VariableAssignmentList (2x) + 58848: 1309, // WhenClause (2x) + 58853: 1310, // WindowDefinition (2x) + 58856: 1311, // WindowFrameBound (2x) + 58863: 1312, // WindowSpec (2x) + 58868: 1313, // WithGrantOptionOpt (2x) + 58869: 1314, // WithList (2x) + 58874: 1315, // Writeable (2x) + 58: 1316, // ':' (1x) + 58201: 1317, // AdminShowSlow (1x) + 58203: 1318, // AdminStmtLimitOpt (1x) + 58210: 1319, // AlterOrderList (1x) + 58215: 1320, // AlterSequenceOptionList (1x) + 58218: 1321, // AlterTableSpecList (1x) + 58219: 1322, // AlterTableSpecListOpt (1x) + 58220: 1323, // AlterTableSpecSingleOpt (1x) + 58224: 1324, // AnalyzeOptionList (1x) + 58227: 1325, // AnyOrAll (1x) + 58228: 1326, // ArrayKwdOpt (1x) + 58230: 1327, // AsOfClauseOpt (1x) + 58231: 1328, // AsOpt (1x) + 58236: 1329, // AuthOption (1x) + 58237: 1330, // AuthPlugin (1x) + 58239: 1331, // AutoRandomOpt (1x) + 58240: 1332, // BDRRole (1x) + 58250: 1333, // BetweenOrNotOp (1x) + 58252: 1334, // BindingStatusType (1x) + 57375: 1335, // both (1x) + 58264: 1336, // CalibrateOption (1x) + 58266: 1337, // CalibrateResourceWorkloadOption (1x) + 58274: 1338, // CharsetNameOrDefault (1x) + 58275: 1339, // CharsetOpt (1x) + 58280: 1340, // ColumnFormat (1x) + 58282: 1341, // ColumnList (1x) + 58289: 1342, // ColumnNameOrUserVariableList (1x) + 58286: 1343, // ColumnNameOrUserVarListOpt (1x) + 58294: 1344, // ColumnSetValueList (1x) + 58299: 1345, // CompareOp (1x) + 58303: 1346, // ConnectionOptionList (1x) + 58306: 1347, // ConstraintElem (1x) + 57387: 1348, // continueKwd (1x) + 58315: 1349, // CreateSequenceOptionListOpt (1x) + 58319: 1350, // CreateTableSelectOpt (1x) + 58322: 1351, // CreateViewSelectOpt (1x) + 57397: 1352, // cursor (1x) + 58330: 1353, // DatabaseOptionListOpt (1x) + 58327: 1354, // DBNameList (1x) + 58338: 1355, // DefaultOrExpressionList (1x) + 58340: 1356, // DefaultValueExpr (1x) + 58366: 1357, // DryRunOptions (1x) + 57416: 1358, // dual (1x) + 58368: 1359, // DynamicCalibrateOptionList (1x) + 58371: 1360, // ElseOpt (1x) + 58376: 1361, // EnforcedOrNotOrNotNullOpt (1x) + 57422: 1362, // exit (1x) + 58389: 1363, // ExpressionOpt (1x) + 58391: 1364, // FetchFirstOpt (1x) + 58393: 1365, // FieldAsName (1x) + 58394: 1366, // FieldAsNameOpt (1x) + 58396: 1367, // FieldItemList (1x) + 58398: 1368, // FieldList (1x) + 58404: 1369, // FirstAndLastPartOpt (1x) + 58405: 1370, // FirstOrNext (1x) + 58413: 1371, // FlushOption (1x) + 58417: 1372, // FromDual (1x) + 58419: 1373, // FulltextSearchModifierOpt (1x) + 58420: 1374, // FuncDatetimePrec (1x) + 58433: 1375, // GetFormatSelector (1x) + 58440: 1376, // HandleRangeList (1x) + 58445: 1377, // IdentListWithParenOpt (1x) + 58449: 1378, // IgnoreLines (1x) + 58451: 1379, // IlikeOrNotOp (1x) + 58458: 1380, // IndexHintScope (1x) + 58461: 1381, // IndexKeyTypeOpt (1x) + 58470: 1382, // IndexPartSpecificationListOpt (1x) + 58473: 1383, // IndexTypeOpt (1x) + 58453: 1384, // InOrNotOp (1x) + 58476: 1385, // InstanceOption (1x) + 58479: 1386, // IntervalExpr (1x) + 58482: 1387, // IsolationLevel (1x) + 58481: 1388, // IsOrNotOp (1x) + 57473: 1389, // leading (1x) + 58491: 1390, // LikeOrNotOp (1x) + 58492: 1391, // LikeTableWithOrWithoutParen (1x) + 58497: 1392, // LinesTerminated (1x) + 58500: 1393, // LoadDataOptionList (1x) + 58503: 1394, // LoadDataSetList (1x) + 58512: 1395, // LockType (1x) + 58513: 1396, // LogTypeOpt (1x) + 58514: 1397, // Match (1x) + 58515: 1398, // MatchOpt (1x) + 58516: 1399, // MaxIndexNumOpt (1x) + 58517: 1400, // MaxMinutesOpt (1x) + 58518: 1401, // MaxValPartOpt (1x) + 58520: 1402, // MaxValueOrExpressionList (1x) + 58533: 1403, // NullPartOpt (1x) + 58541: 1404, // OnDeleteUpdateOpt (1x) + 58542: 1405, // OnDuplicateKeyUpdate (1x) + 58544: 1406, // OptBinMod (1x) + 58546: 1407, // OptCharset (1x) + 58549: 1408, // OptExistingWindowName (1x) + 58551: 1409, // OptFromFirstLast (1x) + 58553: 1410, // OptGConcatSeparator (1x) + 58569: 1411, // OptionalShardColumn (1x) + 58559: 1412, // OptPartitionClause (1x) + 58560: 1413, // OptSpPdparams (1x) + 58561: 1414, // OptTable (1x) + 58878: 1415, // optValue (1x) + 58564: 1416, // OptWindowFrameClause (1x) + 58565: 1417, // OptWindowOrderByClause (1x) + 58571: 1418, // Order (1x) + 58570: 1419, // OrReplace (1x) + 57456: 1420, // outfile (1x) + 58577: 1421, // PartDefValuesOpt (1x) + 58582: 1422, // PartitionKeyAlgorithmOpt (1x) + 58583: 1423, // PartitionMethod (1x) + 58586: 1424, // PartitionNumOpt (1x) + 58593: 1425, // PerDB (1x) + 58594: 1426, // PerTable (1x) + 58597: 1427, // PlanReplayerDumpOpt (1x) + 57515: 1428, // precisionType (1x) + 58603: 1429, // PrepareSQL (1x) + 58879: 1430, // procedurceElseIfs (1x) + 58614: 1431, // ProcedureCall (1x) + 58617: 1432, // ProcedureCursorSelectStmt (1x) + 58619: 1433, // ProcedureDeclIdents (1x) + 58620: 1434, // ProcedureDecls (1x) + 58621: 1435, // ProcedureDeclsOpt (1x) + 58623: 1436, // ProcedureFetchList (1x) + 58624: 1437, // ProcedureHandlerType (1x) + 58626: 1438, // ProcedureHcondList (1x) + 58633: 1439, // ProcedureOptDefault (1x) + 58634: 1440, // ProcedureOptFetchNo (1x) + 58637: 1441, // ProcedureProcStmts (1x) + 58646: 1442, // QueryWatchOptionList (1x) + 57522: 1443, // recursive (1x) + 58652: 1444, // RegexpOrNotOp (1x) + 58657: 1445, // ReorganizePartitionRuleOpt (1x) + 58662: 1446, // RequireList (1x) + 58664: 1447, // ResourceGroupBackgroundOptionList (1x) + 58668: 1448, // ResourceGroupPriorityOption (1x) + 58670: 1449, // ResourceGroupRunawayOptionList (1x) + 58681: 1450, // RoleSpecList (1x) + 58688: 1451, // RowOrRows (1x) + 58693: 1452, // SearchedWhenThenList (1x) + 58697: 1453, // SelectStmtFieldList (1x) + 58705: 1454, // SelectStmtOpts (1x) + 58706: 1455, // SelectStmtOptsList (1x) + 58710: 1456, // SequenceOptionList (1x) + 58715: 1457, // SetOpr (1x) + 58722: 1458, // SetRoleOpt (1x) + 58725: 1459, // ShardableStmt (1x) + 58727: 1460, // ShowIndexKwd (1x) + 58728: 1461, // ShowLikeOrWhereOpt (1x) + 58729: 1462, // ShowPlacementTarget (1x) + 58730: 1463, // ShowProfileArgsOpt (1x) + 58732: 1464, // ShowProfileTypes (1x) + 58733: 1465, // ShowProfileTypesOpt (1x) + 58736: 1466, // ShowTargetFilterable (1x) + 58743: 1467, // SimpleWhenThenList (1x) + 57542: 1468, // spatial (1x) + 58749: 1469, // SplitSyntaxOption (1x) + 58746: 1470, // SpPdparams (1x) + 57550: 1471, // ssl (1x) + 58750: 1472, // Start (1x) + 58751: 1473, // Starting (1x) + 57551: 1474, // starting (1x) + 58753: 1475, // StatementList (1x) + 58754: 1476, // StatementScope (1x) + 58758: 1477, // StorageMedia (1x) + 57557: 1478, // stored (1x) + 58759: 1479, // StringList (1x) + 58762: 1480, // StringNameOrBRIEOptionKeyword (1x) + 58765: 1481, // SubPartDefinitionList (1x) + 58766: 1482, // SubPartDefinitionListOpt (1x) + 58768: 1483, // SubPartitionNumOpt (1x) + 58769: 1484, // SubPartitionOpt (1x) + 58779: 1485, // TableElementListOpt (1x) + 58782: 1486, // TableLockList (1x) + 58795: 1487, // TableRefsClause (1x) + 58796: 1488, // TableSampleMethodOpt (1x) + 58797: 1489, // TableSampleOpt (1x) + 58798: 1490, // TableSampleUnitOpt (1x) + 58800: 1491, // TableToTableList (1x) + 57564: 1492, // trailing (1x) + 58812: 1493, // TrimDirection (1x) + 58824: 1494, // UserToUserList (1x) + 58826: 1495, // UserVariableList (1x) + 58829: 1496, // UsingRoles (1x) + 58831: 1497, // Values (1x) + 58833: 1498, // ValuesOpt (1x) + 58840: 1499, // ViewAlgorithm (1x) + 58841: 1500, // ViewCheckOption (1x) + 58842: 1501, // ViewDefiner (1x) + 58843: 1502, // ViewFieldList (1x) + 58844: 1503, // ViewName (1x) + 58845: 1504, // ViewSQLSecurity (1x) + 57585: 1505, // virtual (1x) + 58846: 1506, // VirtualOrStored (1x) + 58847: 1507, // WatchDurationOption (1x) + 58849: 1508, // WhenClauseList (1x) + 58852: 1509, // WindowClauseOptional (1x) + 58854: 1510, // WindowDefinitionList (1x) + 58855: 1511, // WindowFrameBetween (1x) + 58857: 1512, // WindowFrameExtent (1x) + 58859: 1513, // WindowFrameUnits (1x) + 58862: 1514, // WindowNameOrSpec (1x) + 58864: 1515, // WindowSpecDetails (1x) + 58870: 1516, // WithReadLockOpt (1x) + 58871: 1517, // WithRollupClause (1x) + 58872: 1518, // WithValidation (1x) + 58873: 1519, // WithValidationOpt (1x) + 58199: 1520, // $default (0x) + 58159: 1521, // andnot (0x) + 58234: 1522, // AssignmentListOpt (0x) + 58279: 1523, // ColumnDefList (0x) + 58295: 1524, // CommaOpt (0x) + 58183: 1525, // createTableSelect (0x) + 58173: 1526, // empty (0x) + 57345: 1527, // error (0x) + 58198: 1528, // higherThanComma (0x) + 58192: 1529, // higherThanParenthese (0x) + 58181: 1530, // insertValues (0x) + 57356: 1531, // invalid (0x) + 58184: 1532, // lowerThanCharsetKwd (0x) + 58197: 1533, // lowerThanComma (0x) + 58182: 1534, // lowerThanCreateTableSelect (0x) + 58194: 1535, // lowerThanEq (0x) + 58189: 1536, // lowerThanFunction (0x) + 58180: 1537, // lowerThanInsertValues (0x) + 58185: 1538, // lowerThanKey (0x) + 58186: 1539, // lowerThanLocal (0x) + 58196: 1540, // lowerThanNot (0x) + 58193: 1541, // lowerThanOn (0x) + 58191: 1542, // lowerThanParenthese (0x) + 58187: 1543, // lowerThanRemove (0x) + 58174: 1544, // lowerThanSelectOpt (0x) + 58179: 1545, // lowerThanSelectStmt (0x) + 58178: 1546, // lowerThanSetKeyword (0x) + 58177: 1547, // lowerThanStringLitToken (0x) + 58175: 1548, // lowerThanValueKeyword (0x) + 58176: 1549, // lowerThanWith (0x) + 58188: 1550, // lowerThenOrder (0x) + 58195: 1551, // neg (0x) + 57360: 1552, // odbcDateType (0x) + 57362: 1553, // odbcTimestampType (0x) + 57361: 1554, // odbcTimeType (0x) + 58786: 1555, // TableNameListOpt2 (0x) + 58190: 1556, // tableRefPriority (0x) } yySymNames = []string{ @@ -2621,8 +2634,8 @@ var ( "byteType", "unicodeSym", "fields", - "logs", "status", + "logs", "tables", "timeDuration", "query", @@ -2659,8 +2672,10 @@ var ( "enforced", "following", "less", + "next_row_id", "nowait", "only", + "role", "savepoint", "skip", "taskTypes", @@ -2677,7 +2692,6 @@ var ( "importKwd", "national", "ncharType", - "next_row_id", "nvarcharType", "offset", "policy", @@ -2690,7 +2704,6 @@ var ( "planCache", "prepare", "replica", - "role", "stats", "unknown", "wait", @@ -2793,6 +2806,7 @@ var ( "modify", "nodeID", "nodeState", + "none", "nulls", "pageSym", "pump", @@ -2834,6 +2848,7 @@ var ( "ago", "always", "backups", + "bdr", "bernoulli", "bindingCache", "builtins", @@ -2871,11 +2886,12 @@ var ( "language", "level", "list", + "local_only", + "log", "master", "max_minutes", "never", "nextval", - "none", "oltpReadOnly", "oltpReadWrite", "oltpWriteOnly", @@ -2900,6 +2916,7 @@ var ( "reuse", "rollup", "run", + "secondary", "security", "serializable", "sessionStates", @@ -2991,6 +3008,7 @@ var ( "timestampAdd", "timestampDiff", "trim", + "tsoType", "variance", "varPop", "varSamp", @@ -3021,12 +3039,12 @@ var ( "replace", "charType", "fetch", + "set", "eq", "limit", - "set", "forKwd", - "into", "intLit", + "into", "from", "lock", "where", @@ -3080,19 +3098,19 @@ var ( "'&'", "'^'", "'|'", - "caseKwd", "div", "lsh", - "repeat", "rsh", "'<'", "'>'", + "caseKwd", "ge", "is", "le", "neq", "neqSynonym", "nulleq", + "repeat", "between", "singleAtIdentifier", "falseKwd", @@ -3122,6 +3140,8 @@ var ( "localTime", "localTs", "builtinCount", + "selectKwd", + "sql", "'!'", "'~'", "builtinApproxCountDistinct", @@ -3161,16 +3181,14 @@ var ( "percentRank", "rank", "rowNumber", - "selectKwd", - "sql", "tidbCurrentTSO", "utcDate", "utcTime", "utcTimestamp", "key", - "check", "pipes", "primary", + "check", "unique", "constraint", "references", @@ -3181,8 +3199,8 @@ var ( "to", "analyze", "update", - "all", "'.'", + "all", "assignmentEq", "jss", "juss", @@ -3232,15 +3250,16 @@ var ( "tinyIntType", "tinytextType", "toTimestamp", + "toTSO", "change", "rename", "write", "add", + "optimize", "Identifier", "NotKeywordToken", "TiDBKeyword", "UnReservedKeyword", - "optimize", "SubSelect", "UserVariable", "Literal", @@ -3280,20 +3299,20 @@ var ( "SetOprClauseList", "SetOprStmtWithLimitOrderBy", "SetOprStmtWoutLimitOrderBy", + "LengthNum", "unsigned", "WithClause", - "LengthNum", "SelectStmtWithClause", "SetOprStmt", "zerofill", "over", - "ColumnName", "UpdateStmtNoWith", + "ColumnName", "DeleteWithoutUsingStmt", "InsertIntoStmt", - "Int64Num", "ReplaceIntoStmt", "UpdateStmt", + "Int64Num", "describe", "distinct", "distinctRow", @@ -3394,6 +3413,7 @@ var ( "SelectStmtLimitOpt", "VariableName", "AllOrPartitionNameList", + "BindableStmt", "ConstraintKeywordOpt", "DatabaseSym", "FieldsOrColumns", @@ -3410,7 +3430,6 @@ var ( "TableOption", "varying", "BeginTransactionStmt", - "BindableStmt", "BRIEBooleanOptionName", "BRIEIntegerOptionName", "BRIEKeywordOptionName", @@ -3792,6 +3811,7 @@ var ( "AuthOption", "AuthPlugin", "AutoRandomOpt", + "BDRRole", "BetweenOrNotOp", "BindingStatusType", "both", @@ -4020,8765 +4040,8814 @@ var ( yyReductions = []struct{ xsym, components int }{ {0, 1}, - {1465, 1}, - {904, 6}, - {904, 8}, - {904, 10}, - {904, 5}, - {904, 7}, - {904, 7}, - {904, 9}, - {1255, 1}, - {1255, 2}, - {1255, 3}, - {1441, 1}, - {1441, 1}, - {1441, 1}, - {1442, 1}, - {1442, 2}, - {1442, 3}, - {1257, 1}, - {1257, 1}, - {1257, 1}, - {1256, 1}, - {1256, 1}, - {1256, 1}, - {1041, 3}, - {1041, 3}, - {1041, 4}, - {1500, 0}, - {1500, 3}, - {1500, 3}, - {977, 3}, - {977, 3}, + {1472, 1}, + {910, 6}, + {910, 8}, + {910, 10}, + {910, 5}, + {910, 7}, + {910, 7}, + {910, 9}, + {1261, 1}, + {1261, 2}, + {1261, 3}, + {1448, 1}, + {1448, 1}, + {1448, 1}, + {1449, 1}, + {1449, 2}, + {1449, 3}, + {1263, 1}, + {1263, 1}, + {1263, 1}, + {1262, 1}, + {1262, 1}, + {1262, 1}, + {1047, 3}, + {1047, 3}, + {1047, 4}, + {1507, 0}, + {1507, 3}, + {1507, 3}, + {983, 3}, + {983, 3}, + {983, 1}, + {983, 3}, + {983, 5}, + {983, 4}, + {983, 3}, + {983, 5}, + {983, 4}, + {983, 3}, + {1447, 1}, + {1447, 2}, + {1447, 3}, + {1046, 3}, + {1244, 1}, + {1244, 2}, + {1244, 3}, + {982, 3}, + {982, 3}, + {982, 3}, + {982, 3}, + {982, 3}, + {982, 3}, + {982, 3}, + {982, 3}, + {982, 3}, + {982, 3}, + {982, 3}, + {982, 3}, + {871, 4}, + {871, 4}, + {871, 4}, + {871, 4}, + {1034, 3}, + {1034, 3}, + {1291, 3}, + {1291, 3}, + {1323, 1}, + {1323, 2}, + {1323, 4}, + {1323, 8}, + {1323, 8}, + {1323, 3}, + {1323, 3}, + {1323, 2}, + {1063, 0}, + {1063, 3}, + {1116, 1}, + {1116, 5}, + {1116, 6}, + {1116, 5}, + {1116, 5}, + {1116, 5}, + {1116, 6}, + {1116, 2}, + {1116, 5}, + {1116, 6}, + {1116, 8}, + {1116, 8}, + {1116, 1}, + {1116, 1}, + {1116, 3}, + {1116, 4}, + {1116, 5}, + {1116, 3}, + {1116, 4}, + {1116, 8}, + {1116, 4}, + {1116, 7}, + {1116, 3}, + {1116, 4}, + {1116, 4}, + {1116, 4}, + {1116, 4}, + {1116, 2}, + {1116, 2}, + {1116, 4}, + {1116, 4}, + {1116, 5}, + {1116, 3}, + {1116, 2}, + {1116, 2}, + {1116, 5}, + {1116, 6}, + {1116, 6}, + {1116, 8}, + {1116, 5}, + {1116, 5}, + {1116, 3}, + {1116, 3}, + {1116, 3}, + {1116, 5}, + {1116, 1}, + {1116, 1}, + {1116, 1}, + {1116, 1}, + {1116, 2}, + {1116, 2}, + {1116, 1}, + {1116, 1}, + {1116, 4}, + {1116, 3}, + {1116, 4}, + {1116, 1}, + {1116, 1}, + {1445, 0}, + {1445, 5}, + {933, 1}, + {933, 1}, + {1519, 0}, + {1519, 1}, + {1518, 2}, + {1518, 2}, {977, 1}, - {977, 3}, - {977, 5}, - {977, 4}, - {977, 3}, - {977, 5}, - {977, 4}, - {977, 3}, - {1440, 1}, - {1440, 2}, - {1440, 3}, - {1040, 3}, - {1238, 1}, - {1238, 2}, - {1238, 3}, - {976, 3}, - {976, 3}, - {976, 3}, - {976, 3}, - {976, 3}, - {976, 3}, - {976, 3}, - {976, 3}, - {976, 3}, - {976, 3}, - {976, 3}, - {976, 3}, - {865, 4}, - {865, 4}, - {865, 4}, - {865, 4}, - {1028, 3}, - {1028, 3}, - {1285, 3}, - {1285, 3}, - {1317, 1}, - {1317, 2}, - {1317, 4}, - {1317, 8}, - {1317, 8}, - {1317, 3}, - {1317, 3}, - {1317, 2}, - {1057, 0}, - {1057, 3}, - {1110, 1}, - {1110, 5}, - {1110, 6}, - {1110, 5}, - {1110, 5}, - {1110, 5}, - {1110, 6}, - {1110, 2}, - {1110, 5}, - {1110, 6}, - {1110, 8}, - {1110, 8}, - {1110, 1}, - {1110, 1}, - {1110, 3}, - {1110, 4}, - {1110, 5}, - {1110, 3}, - {1110, 4}, - {1110, 8}, - {1110, 4}, - {1110, 7}, - {1110, 3}, - {1110, 4}, - {1110, 4}, - {1110, 4}, - {1110, 4}, - {1110, 2}, - {1110, 2}, - {1110, 4}, - {1110, 4}, - {1110, 5}, - {1110, 3}, - {1110, 2}, - {1110, 2}, - {1110, 5}, - {1110, 6}, - {1110, 6}, - {1110, 8}, - {1110, 5}, - {1110, 5}, - {1110, 3}, - {1110, 3}, - {1110, 3}, - {1110, 5}, - {1110, 1}, - {1110, 1}, - {1110, 1}, - {1110, 1}, - {1110, 2}, - {1110, 2}, - {1110, 1}, - {1110, 1}, - {1110, 4}, - {1110, 3}, - {1110, 4}, - {1110, 1}, - {1110, 1}, - {1438, 0}, - {1438, 5}, - {927, 1}, - {927, 1}, - {1512, 0}, - {1512, 1}, - {1511, 2}, - {1511, 2}, - {971, 1}, - {971, 1}, - {972, 3}, - {972, 3}, - {972, 3}, - {972, 3}, - {972, 3}, - {986, 3}, - {986, 3}, - {1309, 2}, - {1309, 2}, - {923, 1}, - {923, 1}, - {1197, 0}, - {1197, 1}, - {975, 0}, - {975, 1}, - {1033, 0}, - {1033, 1}, - {1033, 2}, - {1316, 0}, - {1316, 1}, - {1315, 1}, - {1315, 3}, - {859, 1}, - {859, 3}, - {928, 0}, - {928, 1}, - {928, 2}, - {1290, 1}, - {1251, 3}, - {1484, 1}, - {1484, 3}, - {1296, 3}, - {1252, 3}, - {1487, 1}, - {1487, 3}, - {1301, 3}, - {1248, 5}, - {1248, 3}, - {1248, 4}, - {1177, 4}, - {1177, 5}, - {1177, 5}, - {1175, 4}, - {1176, 0}, - {1176, 2}, - {1174, 4}, - {1278, 6}, - {1278, 8}, - {1277, 6}, - {1277, 2}, - {1462, 0}, - {1462, 2}, - {1462, 1}, - {1462, 3}, - {845, 5}, - {845, 6}, - {845, 7}, - {845, 7}, - {845, 8}, - {845, 9}, - {845, 8}, - {845, 7}, - {845, 6}, - {845, 8}, - {1101, 0}, - {1101, 2}, - {1101, 2}, - {902, 0}, - {902, 2}, - {1318, 1}, - {1318, 3}, - {1112, 2}, - {1112, 2}, - {1112, 3}, - {1112, 3}, - {1112, 2}, - {1112, 2}, - {996, 3}, - {1027, 1}, - {1027, 3}, - {1515, 0}, - {1515, 1}, - {943, 1}, - {943, 2}, - {943, 2}, - {943, 2}, - {943, 4}, - {943, 5}, - {943, 6}, - {943, 4}, - {943, 5}, - {1113, 2}, - {1516, 1}, - {1516, 3}, - {953, 3}, - {953, 3}, - {821, 1}, - {821, 3}, - {821, 5}, - {906, 1}, - {906, 3}, - {1123, 0}, - {1123, 1}, - {1370, 0}, - {1370, 3}, - {980, 1}, - {980, 3}, - {1336, 0}, - {1336, 1}, - {1335, 1}, - {1335, 3}, - {1124, 1}, - {1124, 1}, - {1125, 0}, - {1125, 3}, - {846, 1}, - {846, 2}, - {1070, 0}, - {1070, 1}, - {915, 1}, - {915, 1}, - {1044, 1}, - {1044, 2}, - {1168, 0}, - {1168, 1}, - {1354, 2}, - {1354, 1}, - {1032, 2}, - {1032, 1}, - {1032, 1}, - {1032, 2}, - {1032, 3}, - {1032, 1}, - {1032, 2}, - {1032, 2}, - {1032, 3}, - {1032, 3}, - {1032, 2}, - {1032, 6}, - {1032, 6}, - {1032, 1}, - {1032, 2}, - {1032, 2}, - {1032, 2}, - {1032, 2}, - {1325, 0}, - {1325, 3}, - {1325, 5}, - {1470, 1}, - {1470, 1}, - {1470, 1}, - {1333, 1}, - {1333, 1}, - {1333, 1}, - {1048, 0}, - {1048, 2}, - {1499, 0}, - {1499, 1}, - {1499, 1}, - {1126, 1}, - {1126, 2}, - {1127, 0}, - {1127, 1}, - {1340, 7}, - {1340, 7}, - {1340, 7}, - {1340, 7}, - {1340, 8}, - {1340, 5}, - {1390, 2}, - {1390, 2}, - {1390, 2}, - {1391, 0}, - {1391, 1}, - {1011, 5}, - {1219, 3}, - {1220, 3}, - {1397, 0}, - {1397, 1}, - {1397, 1}, - {1397, 2}, - {1397, 2}, - {1249, 1}, - {1249, 1}, - {1249, 2}, - {1249, 2}, - {1249, 2}, - {1349, 1}, - {1349, 1}, - {1349, 1}, - {1349, 1}, - {999, 3}, - {999, 3}, - {999, 4}, - {1214, 3}, - {1214, 1}, - {1061, 1}, - {1061, 3}, - {1061, 4}, - {1061, 3}, - {1061, 1}, - {780, 4}, - {780, 4}, - {1060, 1}, - {1060, 1}, - {1060, 1}, - {1060, 1}, - {1059, 1}, - {1059, 1}, - {1059, 1}, - {1036, 1}, - {1036, 1}, - {1082, 1}, - {1082, 2}, - {1082, 2}, - {916, 1}, - {916, 1}, - {916, 1}, - {1287, 1}, - {1287, 1}, - {1287, 1}, - {1327, 1}, - {1327, 1}, - {1140, 12}, - {1159, 3}, - {1134, 13}, - {1375, 0}, - {1375, 3}, - {932, 1}, - {932, 3}, - {922, 3}, - {922, 4}, - {1193, 0}, - {1193, 1}, - {1193, 1}, - {1193, 2}, - {1193, 2}, - {1374, 0}, - {1374, 1}, - {1374, 1}, - {1374, 1}, - {1102, 4}, - {1102, 3}, - {1133, 5}, - {907, 1}, - {989, 1}, - {936, 1}, - {936, 1}, - {954, 4}, - {954, 4}, - {954, 4}, - {954, 2}, - {954, 1}, - {954, 5}, - {1346, 0}, - {1346, 1}, - {1037, 1}, - {1037, 2}, - {1035, 12}, - {1035, 7}, - {1218, 0}, - {1218, 4}, - {1218, 4}, - {891, 0}, - {891, 1}, - {1233, 0}, - {1233, 6}, - {1289, 6}, - {1289, 5}, - {1415, 0}, - {1415, 3}, - {1416, 1}, - {1416, 5}, - {1416, 6}, - {1416, 4}, - {1416, 5}, - {1416, 4}, - {1416, 3}, - {1416, 1}, - {1232, 0}, - {1232, 7}, - {1379, 1}, - {1379, 2}, - {1396, 0}, - {1396, 2}, - {1394, 0}, - {1394, 2}, - {1362, 0}, - {1362, 14}, + {977, 1}, + {978, 3}, + {978, 3}, + {978, 3}, + {978, 3}, + {978, 3}, + {992, 3}, + {992, 3}, + {1315, 2}, + {1315, 2}, + {929, 1}, + {929, 1}, {1203, 0}, {1203, 1}, - {1477, 0}, - {1477, 4}, - {1476, 0}, - {1476, 2}, - {1417, 0}, - {1417, 2}, - {1231, 0}, - {1231, 3}, - {1230, 1}, - {1230, 3}, - {1067, 5}, - {1475, 0}, - {1475, 3}, - {1474, 1}, - {1474, 3}, - {1288, 3}, - {1066, 0}, - {1066, 2}, - {910, 3}, - {910, 3}, - {910, 4}, - {910, 3}, - {910, 4}, - {910, 4}, - {910, 3}, - {910, 3}, - {910, 3}, - {910, 3}, - {910, 1}, - {1414, 0}, - {1414, 4}, - {1414, 6}, - {1414, 1}, - {1414, 5}, - {1414, 1}, - {1414, 1}, - {1164, 0}, - {1164, 1}, - {1164, 1}, + {981, 0}, + {981, 1}, + {1039, 0}, + {1039, 1}, + {1039, 2}, {1322, 0}, {1322, 1}, + {1321, 1}, + {1321, 3}, + {865, 1}, + {865, 3}, + {935, 0}, + {935, 1}, + {935, 2}, + {1296, 1}, + {1257, 3}, + {1491, 1}, + {1491, 3}, + {1302, 3}, + {1258, 3}, + {1494, 1}, + {1494, 3}, + {1307, 3}, + {1254, 5}, + {1254, 3}, + {1254, 4}, + {1183, 4}, + {1183, 5}, + {1183, 5}, + {1183, 4}, + {1183, 5}, + {1183, 5}, + {1181, 4}, + {1182, 0}, + {1182, 2}, + {1180, 4}, + {1284, 6}, + {1284, 8}, + {1283, 6}, + {1283, 2}, + {1469, 0}, + {1469, 2}, + {1469, 1}, + {1469, 3}, + {851, 5}, + {851, 6}, + {851, 7}, + {851, 7}, + {851, 8}, + {851, 9}, + {851, 8}, + {851, 7}, + {851, 6}, + {851, 8}, + {1107, 0}, + {1107, 2}, + {1107, 2}, + {908, 0}, + {908, 2}, + {1324, 1}, + {1324, 3}, + {1118, 2}, + {1118, 2}, + {1118, 3}, + {1118, 3}, + {1118, 2}, + {1118, 2}, + {1002, 3}, + {1033, 1}, + {1033, 3}, + {1522, 0}, + {1522, 1}, + {950, 1}, + {950, 2}, + {950, 2}, + {950, 2}, + {950, 4}, + {950, 5}, + {950, 6}, + {950, 4}, + {950, 5}, + {1119, 2}, + {1523, 1}, + {1523, 3}, + {959, 3}, + {959, 3}, + {828, 1}, + {828, 3}, + {828, 5}, + {912, 1}, + {912, 3}, + {1129, 0}, + {1129, 1}, + {1377, 0}, + {1377, 3}, + {986, 1}, + {986, 3}, {1343, 0}, {1343, 1}, - {1343, 1}, - {1343, 1}, - {1343, 1}, - {1344, 1}, - {1344, 1}, - {1344, 1}, - {1344, 1}, - {1384, 2}, - {1384, 4}, - {1143, 11}, - {1412, 0}, - {1412, 2}, - {1492, 0}, - {1492, 3}, - {1492, 3}, - {1492, 3}, - {1494, 0}, - {1494, 3}, - {1497, 0}, - {1497, 3}, - {1497, 3}, - {1496, 1}, - {1495, 0}, - {1495, 3}, - {1334, 1}, - {1334, 3}, - {1493, 0}, - {1493, 4}, - {1493, 4}, - {1148, 2}, - {823, 13}, - {823, 9}, - {833, 10}, - {839, 1}, - {839, 1}, - {839, 2}, - {839, 2}, - {929, 1}, - {1150, 4}, - {1151, 7}, - {1151, 7}, - {1161, 6}, - {1065, 0}, + {1342, 1}, + {1342, 3}, + {1130, 1}, + {1130, 1}, + {1131, 0}, + {1131, 3}, + {852, 1}, + {852, 2}, + {1076, 0}, + {1076, 1}, + {921, 1}, + {921, 1}, + {1050, 1}, + {1050, 2}, + {1174, 0}, + {1174, 1}, + {1361, 2}, + {1361, 1}, + {1038, 2}, + {1038, 1}, + {1038, 1}, + {1038, 2}, + {1038, 3}, + {1038, 1}, + {1038, 2}, + {1038, 2}, + {1038, 3}, + {1038, 3}, + {1038, 2}, + {1038, 6}, + {1038, 6}, + {1038, 1}, + {1038, 2}, + {1038, 2}, + {1038, 2}, + {1038, 2}, + {1331, 0}, + {1331, 3}, + {1331, 5}, + {1477, 1}, + {1477, 1}, + {1477, 1}, + {1340, 1}, + {1340, 1}, + {1340, 1}, + {1054, 0}, + {1054, 2}, + {1506, 0}, + {1506, 1}, + {1506, 1}, + {1132, 1}, + {1132, 2}, + {1133, 0}, + {1133, 1}, + {1347, 7}, + {1347, 7}, + {1347, 7}, + {1347, 7}, + {1347, 8}, + {1347, 5}, + {1397, 2}, + {1397, 2}, + {1397, 2}, + {1398, 0}, + {1398, 1}, + {1017, 5}, + {1225, 3}, + {1226, 3}, + {1404, 0}, + {1404, 1}, + {1404, 1}, + {1404, 2}, + {1404, 2}, + {1255, 1}, + {1255, 1}, + {1255, 2}, + {1255, 2}, + {1255, 2}, + {1356, 1}, + {1356, 1}, + {1356, 1}, + {1356, 1}, + {1005, 3}, + {1005, 3}, + {1005, 4}, + {1220, 3}, + {1220, 1}, + {1067, 1}, + {1067, 3}, + {1067, 4}, + {1067, 3}, + {1067, 1}, + {786, 4}, + {786, 4}, + {1066, 1}, + {1066, 1}, + {1066, 1}, + {1066, 1}, {1065, 1}, - {1065, 2}, - {1163, 4}, - {1163, 6}, - {1162, 3}, - {1162, 5}, - {1157, 3}, - {1157, 5}, - {1160, 3}, - {1160, 5}, - {1160, 4}, - {1012, 0}, - {1012, 1}, - {1012, 1}, - {1294, 1}, - {1294, 1}, - {802, 0}, - {802, 1}, - {1166, 0}, - {1298, 2}, - {1298, 5}, - {1298, 3}, - {1298, 6}, - {858, 1}, - {858, 1}, - {858, 1}, - {857, 2}, - {857, 3}, - {857, 2}, - {857, 4}, - {857, 7}, - {857, 5}, - {857, 7}, - {857, 5}, - {857, 3}, - {857, 6}, - {857, 6}, - {1170, 1}, - {1170, 1}, - {1170, 1}, - {1170, 1}, - {1170, 1}, - {1170, 1}, + {1065, 1}, + {1065, 1}, + {1042, 1}, + {1042, 1}, + {1088, 1}, + {1088, 2}, + {1088, 2}, + {922, 1}, + {922, 1}, + {922, 1}, + {1293, 1}, + {1293, 1}, + {1293, 1}, + {1334, 1}, + {1334, 1}, + {1146, 12}, + {1165, 3}, + {1140, 13}, + {1382, 0}, + {1382, 3}, + {939, 1}, + {939, 3}, + {928, 3}, + {928, 4}, + {1199, 0}, + {1199, 1}, + {1199, 1}, + {1199, 2}, + {1199, 2}, + {1381, 0}, + {1381, 1}, + {1381, 1}, + {1381, 1}, + {1108, 4}, + {1108, 3}, + {1139, 5}, + {913, 1}, + {995, 1}, + {943, 1}, + {943, 1}, + {960, 4}, + {960, 4}, + {960, 4}, + {960, 2}, + {960, 1}, + {960, 5}, + {1353, 0}, + {1353, 1}, + {1043, 1}, + {1043, 2}, + {1041, 12}, + {1041, 7}, + {1224, 0}, + {1224, 4}, + {1224, 4}, + {897, 0}, + {897, 1}, + {1239, 0}, + {1239, 6}, + {1295, 6}, + {1295, 5}, + {1422, 0}, + {1422, 3}, + {1423, 1}, + {1423, 5}, + {1423, 6}, + {1423, 4}, + {1423, 5}, + {1423, 4}, + {1423, 3}, + {1423, 1}, + {1238, 0}, + {1238, 7}, + {1386, 1}, + {1386, 2}, + {1403, 0}, + {1403, 2}, + {1401, 0}, + {1401, 2}, + {1369, 0}, + {1369, 14}, + {1209, 0}, + {1209, 1}, + {1484, 0}, + {1484, 4}, + {1483, 0}, + {1483, 2}, + {1424, 0}, + {1424, 2}, + {1237, 0}, + {1237, 3}, + {1236, 1}, + {1236, 3}, + {1073, 5}, + {1482, 0}, + {1482, 3}, + {1481, 1}, + {1481, 3}, + {1294, 3}, + {1072, 0}, + {1072, 2}, + {916, 3}, + {916, 3}, + {916, 4}, + {916, 3}, + {916, 4}, + {916, 4}, + {916, 3}, + {916, 3}, + {916, 3}, + {916, 3}, + {916, 1}, + {1421, 0}, + {1421, 4}, + {1421, 6}, + {1421, 1}, + {1421, 5}, + {1421, 1}, + {1421, 1}, + {1170, 0}, {1170, 1}, {1170, 1}, - {967, 2}, - {965, 3}, - {1114, 5}, - {1114, 5}, - {1114, 3}, - {1114, 4}, - {1114, 3}, - {1114, 6}, - {1114, 4}, - {1114, 6}, - {1114, 4}, - {1114, 5}, - {1114, 4}, - {1114, 5}, - {1114, 5}, - {1114, 5}, - {1115, 2}, - {1115, 2}, - {1115, 2}, - {1347, 1}, - {1347, 3}, - {949, 0}, - {949, 2}, - {946, 1}, - {946, 1}, - {945, 1}, - {945, 1}, - {945, 1}, - {945, 1}, - {945, 1}, - {945, 1}, - {945, 1}, - {945, 1}, - {950, 1}, - {950, 1}, - {950, 1}, - {950, 1}, - {947, 1}, - {947, 1}, - {947, 2}, - {948, 3}, - {948, 3}, - {948, 3}, - {948, 3}, - {948, 5}, - {948, 3}, - {948, 3}, - {948, 3}, - {948, 3}, - {948, 6}, - {948, 3}, - {948, 3}, - {948, 3}, - {948, 3}, - {948, 3}, - {948, 3}, - {948, 3}, - {948, 3}, - {948, 3}, - {948, 3}, - {948, 3}, - {816, 1}, - {825, 1}, - {799, 1}, - {998, 1}, - {998, 1}, - {998, 1}, - {1225, 1}, - {1225, 1}, - {1225, 1}, - {1237, 5}, - {1259, 5}, - {1119, 4}, - {1152, 5}, - {798, 3}, - {798, 3}, - {798, 3}, - {798, 3}, - {798, 2}, - {798, 9}, - {798, 3}, - {798, 3}, - {798, 3}, - {798, 1}, - {1147, 1}, - {1147, 1}, - {1212, 1}, - {1212, 1}, - {1366, 0}, - {1366, 4}, - {1366, 7}, - {1366, 3}, - {1366, 3}, - {801, 1}, - {801, 1}, - {800, 1}, - {800, 1}, - {863, 1}, + {1328, 0}, + {1328, 1}, + {1350, 0}, + {1350, 1}, + {1350, 1}, + {1350, 1}, + {1350, 1}, + {1351, 1}, + {1351, 1}, + {1351, 1}, + {1351, 1}, + {1391, 2}, + {1391, 4}, + {1149, 11}, + {1419, 0}, + {1419, 2}, + {1499, 0}, + {1499, 3}, + {1499, 3}, + {1499, 3}, + {1501, 0}, + {1501, 3}, + {1504, 0}, + {1504, 3}, + {1504, 3}, + {1503, 1}, + {1502, 0}, + {1502, 3}, + {1341, 1}, + {1341, 3}, + {1500, 0}, + {1500, 4}, + {1500, 4}, + {1154, 2}, + {829, 13}, + {829, 9}, + {839, 10}, + {845, 1}, + {845, 1}, + {845, 2}, + {845, 2}, + {936, 1}, + {1156, 4}, + {1157, 7}, + {1157, 7}, + {1167, 6}, + {1071, 0}, + {1071, 1}, + {1071, 2}, + {1169, 4}, + {1169, 6}, + {1168, 3}, + {1168, 5}, + {1163, 3}, + {1163, 5}, + {1166, 3}, + {1166, 5}, + {1166, 4}, + {1018, 0}, + {1018, 1}, + {1018, 1}, + {1300, 1}, + {1300, 1}, + {808, 0}, + {808, 1}, + {1172, 0}, + {1304, 2}, + {1304, 5}, + {1304, 3}, + {1304, 6}, + {864, 1}, + {864, 1}, + {864, 1}, + {863, 2}, {863, 3}, - {1395, 1}, - {1395, 3}, - {1348, 1}, - {1348, 3}, - {921, 0}, - {921, 1}, - {1181, 0}, - {1181, 1}, - {1180, 1}, - {797, 3}, - {797, 3}, - {797, 4}, - {797, 5}, - {797, 1}, - {1338, 1}, - {1338, 1}, - {1338, 1}, - {1338, 1}, - {1338, 1}, - {1338, 1}, - {1338, 1}, - {1338, 1}, - {1326, 1}, - {1326, 2}, - {1381, 1}, - {1381, 2}, - {1377, 1}, - {1377, 2}, - {1383, 1}, - {1383, 2}, - {1372, 1}, - {1372, 2}, - {1437, 1}, - {1437, 2}, - {1319, 1}, - {1319, 1}, - {1319, 1}, - {796, 5}, - {796, 3}, - {796, 5}, - {796, 4}, - {796, 4}, - {796, 3}, - {796, 5}, - {796, 1}, - {1250, 1}, - {1250, 1}, - {1200, 0}, - {1200, 2}, - {1171, 1}, - {1171, 3}, - {1171, 5}, - {1171, 2}, - {1359, 0}, - {1359, 1}, - {1358, 1}, - {1358, 2}, - {1358, 1}, - {1358, 2}, - {1361, 1}, - {1361, 3}, - {1510, 0}, - {1510, 2}, - {1050, 4}, - {1187, 0}, - {1187, 2}, - {1321, 0}, - {1321, 1}, - {995, 3}, - {854, 0}, - {854, 2}, - {883, 0}, - {883, 3}, - {958, 0}, - {958, 1}, - {981, 0}, - {981, 1}, - {983, 0}, - {983, 2}, - {982, 3}, - {982, 1}, - {982, 3}, - {982, 2}, - {982, 1}, - {982, 1}, - {1053, 1}, - {1053, 3}, - {1053, 3}, - {1376, 0}, - {1376, 1}, - {961, 2}, - {961, 2}, - {1004, 1}, + {863, 2}, + {863, 4}, + {863, 7}, + {863, 5}, + {863, 7}, + {863, 5}, + {863, 3}, + {863, 6}, + {863, 6}, + {1176, 1}, + {1176, 1}, + {1176, 1}, + {1176, 1}, + {1176, 1}, + {1176, 1}, + {1176, 1}, + {1176, 1}, + {973, 2}, + {971, 3}, + {1120, 5}, + {1120, 5}, + {1120, 3}, + {1120, 4}, + {1120, 3}, + {1120, 6}, + {1120, 4}, + {1120, 6}, + {1120, 4}, + {1120, 5}, + {1120, 4}, + {1120, 5}, + {1120, 5}, + {1120, 5}, + {1121, 2}, + {1121, 2}, + {1121, 2}, + {1354, 1}, + {1354, 3}, + {955, 0}, + {955, 2}, + {952, 1}, + {952, 1}, + {951, 1}, + {951, 1}, + {951, 1}, + {951, 1}, + {951, 1}, + {951, 1}, + {951, 1}, + {951, 1}, + {956, 1}, + {956, 1}, + {956, 1}, + {956, 1}, + {953, 1}, + {953, 1}, + {953, 2}, + {954, 3}, + {954, 3}, + {954, 3}, + {954, 3}, + {954, 5}, + {954, 3}, + {954, 3}, + {954, 3}, + {954, 3}, + {954, 6}, + {954, 3}, + {954, 3}, + {954, 3}, + {954, 3}, + {954, 3}, + {954, 3}, + {954, 3}, + {954, 3}, + {954, 3}, + {954, 3}, + {954, 3}, + {820, 1}, + {833, 1}, + {805, 1}, {1004, 1}, {1004, 1}, {1004, 1}, - {959, 1}, - {959, 1}, - {770, 1}, - {770, 1}, - {770, 1}, - {770, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {773, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {772, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {771, 1}, - {1118, 2}, - {1424, 1}, - {1424, 3}, - {1424, 4}, - {1424, 6}, - {824, 9}, - {1196, 0}, - {1196, 1}, - {1195, 5}, - {1195, 4}, - {1195, 4}, - {1195, 4}, - {1195, 4}, - {1195, 2}, - {1195, 1}, - {1195, 1}, - {1195, 1}, - {1195, 1}, - {1195, 2}, - {1095, 1}, - {1095, 1}, - {1093, 1}, - {1093, 3}, - {938, 3}, - {1491, 0}, - {1491, 1}, - {1490, 3}, - {1490, 1}, - {893, 1}, - {893, 1}, - {1337, 3}, - {1337, 5}, - {1398, 0}, - {1398, 5}, - {826, 6}, - {777, 1}, - {777, 1}, - {777, 1}, - {777, 1}, - {777, 1}, + {1231, 1}, + {1231, 1}, + {1231, 1}, + {1243, 5}, + {1265, 5}, + {1125, 4}, + {1158, 5}, + {804, 3}, + {804, 3}, + {804, 3}, + {804, 3}, + {804, 2}, + {804, 9}, + {804, 3}, + {804, 3}, + {804, 3}, + {804, 1}, + {1153, 1}, + {1153, 1}, + {1218, 1}, + {1218, 1}, + {1373, 0}, + {1373, 4}, + {1373, 7}, + {1373, 3}, + {1373, 3}, + {807, 1}, + {807, 1}, + {806, 1}, + {806, 1}, + {869, 1}, + {869, 3}, + {1402, 1}, + {1402, 3}, + {1355, 1}, + {1355, 3}, + {927, 0}, + {927, 1}, + {1187, 0}, + {1187, 1}, + {1186, 1}, + {803, 3}, + {803, 3}, + {803, 4}, + {803, 5}, + {803, 1}, + {1345, 1}, + {1345, 1}, + {1345, 1}, + {1345, 1}, + {1345, 1}, + {1345, 1}, + {1345, 1}, + {1345, 1}, + {1333, 1}, + {1333, 2}, + {1388, 1}, + {1388, 2}, + {1384, 1}, + {1384, 2}, + {1390, 1}, + {1390, 2}, + {1379, 1}, + {1379, 2}, + {1444, 1}, + {1444, 2}, + {1325, 1}, + {1325, 1}, + {1325, 1}, + {802, 5}, + {802, 3}, + {802, 5}, + {802, 4}, + {802, 4}, + {802, 3}, + {802, 5}, + {802, 1}, + {1256, 1}, + {1256, 1}, + {1206, 0}, + {1206, 2}, + {1177, 1}, + {1177, 3}, + {1177, 5}, + {1177, 2}, + {1366, 0}, + {1366, 1}, + {1365, 1}, + {1365, 2}, + {1365, 1}, + {1365, 2}, + {1368, 1}, + {1368, 3}, + {1517, 0}, + {1517, 2}, + {1056, 4}, + {1193, 0}, + {1193, 2}, + {1327, 0}, + {1327, 1}, + {1001, 3}, + {860, 0}, + {860, 2}, + {889, 0}, + {889, 3}, + {964, 0}, + {964, 1}, + {987, 0}, + {987, 1}, + {989, 0}, + {989, 2}, + {988, 3}, + {988, 1}, + {988, 3}, + {988, 2}, + {988, 1}, + {988, 1}, + {1059, 1}, + {1059, 3}, + {1059, 3}, + {1383, 0}, + {1383, 1}, + {967, 2}, + {967, 2}, + {1010, 1}, + {1010, 1}, + {1010, 1}, + {1010, 1}, + {965, 1}, + {965, 1}, {777, 1}, {777, 1}, - {777, 2}, {777, 1}, {777, 1}, - {777, 2}, - {777, 2}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, + {780, 1}, {779, 1}, - {779, 2}, - {1313, 1}, - {1313, 3}, - {1104, 2}, - {842, 3}, - {1000, 1}, - {1000, 3}, - {973, 1}, - {973, 2}, - {1411, 1}, - {1411, 1}, - {1064, 0}, - {1064, 1}, - {1064, 1}, - {909, 0}, - {909, 1}, - {795, 3}, - {795, 3}, - {795, 3}, - {795, 3}, - {795, 3}, - {795, 3}, - {795, 5}, - {795, 5}, - {795, 5}, - {795, 3}, - {795, 3}, - {795, 3}, - {795, 3}, - {795, 3}, - {795, 3}, - {795, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {779, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, {778, 1}, - {778, 3}, - {778, 5}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {778, 1}, + {1124, 2}, + {1431, 1}, + {1431, 3}, + {1431, 4}, + {1431, 6}, + {830, 9}, + {1202, 0}, + {1202, 1}, + {1201, 5}, + {1201, 4}, + {1201, 4}, + {1201, 4}, + {1201, 4}, + {1201, 2}, + {1201, 1}, + {1201, 1}, + {1201, 1}, + {1201, 1}, + {1201, 2}, + {1101, 1}, + {1101, 1}, + {1099, 1}, + {1099, 3}, + {945, 3}, + {1498, 0}, + {1498, 1}, + {1497, 3}, + {1497, 1}, + {899, 1}, + {899, 1}, + {1344, 3}, + {1344, 5}, + {1405, 0}, + {1405, 5}, + {831, 6}, + {783, 1}, + {783, 1}, + {783, 1}, + {783, 1}, + {783, 1}, + {783, 1}, + {783, 1}, + {783, 2}, + {783, 1}, + {783, 1}, + {783, 2}, + {783, 2}, + {785, 1}, + {785, 2}, + {1319, 1}, + {1319, 3}, + {1110, 2}, + {848, 3}, + {1006, 1}, + {1006, 3}, + {979, 1}, + {979, 2}, + {1418, 1}, + {1418, 1}, + {1070, 0}, + {1070, 1}, + {1070, 1}, + {915, 0}, + {915, 1}, + {801, 3}, + {801, 3}, + {801, 3}, + {801, 3}, + {801, 3}, + {801, 3}, + {801, 5}, + {801, 5}, + {801, 5}, + {801, 3}, + {801, 3}, + {801, 3}, + {801, 3}, + {801, 3}, + {801, 3}, + {801, 1}, + {784, 1}, + {784, 3}, + {784, 5}, + {796, 1}, + {796, 1}, + {796, 1}, + {796, 1}, + {796, 3}, + {796, 1}, + {796, 1}, + {796, 1}, + {796, 1}, + {796, 1}, + {796, 2}, + {796, 2}, + {796, 2}, + {796, 2}, + {796, 3}, + {796, 2}, + {796, 1}, + {796, 3}, + {796, 5}, + {796, 6}, + {796, 2}, + {796, 4}, + {796, 2}, + {796, 7}, + {796, 5}, + {796, 6}, + {796, 6}, + {796, 4}, + {796, 4}, + {796, 3}, + {796, 3}, + {1326, 0}, + {1326, 1}, + {891, 1}, + {891, 1}, + {893, 1}, + {893, 1}, + {919, 0}, + {919, 1}, + {1045, 0}, + {1045, 1}, + {918, 1}, + {918, 2}, {790, 1}, {790, 1}, {790, 1}, {790, 1}, - {790, 3}, {790, 1}, {790, 1}, {790, 1}, {790, 1}, {790, 1}, - {790, 2}, - {790, 2}, - {790, 2}, - {790, 2}, - {790, 3}, - {790, 2}, {790, 1}, - {790, 3}, - {790, 5}, - {790, 6}, - {790, 2}, - {790, 4}, - {790, 2}, - {790, 7}, - {790, 5}, - {790, 6}, - {790, 6}, - {790, 4}, - {790, 4}, - {790, 3}, - {790, 3}, - {1320, 0}, - {1320, 1}, - {885, 1}, - {885, 1}, - {887, 1}, - {887, 1}, - {913, 0}, - {913, 1}, - {1039, 0}, - {1039, 1}, - {912, 1}, - {912, 2}, - {784, 1}, - {784, 1}, - {784, 1}, - {784, 1}, - {784, 1}, - {784, 1}, - {784, 1}, - {784, 1}, - {784, 1}, - {784, 1}, - {784, 1}, - {784, 1}, - {784, 1}, - {784, 1}, - {784, 1}, - {784, 1}, - {784, 1}, - {784, 1}, - {784, 1}, - {784, 1}, - {784, 1}, - {784, 1}, - {784, 1}, - {784, 1}, - {784, 1}, - {784, 1}, - {784, 1}, - {784, 1}, - {784, 1}, - {784, 1}, - {1224, 0}, - {1224, 2}, - {788, 1}, - {788, 1}, - {788, 1}, - {788, 1}, - {788, 1}, - {787, 1}, - {787, 1}, - {787, 1}, - {787, 1}, - {787, 1}, - {787, 1}, - {782, 4}, - {782, 4}, - {782, 2}, - {782, 3}, - {782, 2}, - {782, 4}, - {782, 6}, - {782, 2}, - {782, 2}, - {782, 2}, - {782, 4}, - {782, 6}, - {782, 4}, - {783, 4}, - {783, 4}, - {783, 6}, - {783, 8}, - {783, 8}, - {783, 6}, - {783, 6}, - {783, 6}, - {783, 6}, - {783, 6}, - {783, 8}, - {783, 8}, - {783, 8}, - {783, 8}, - {783, 4}, - {783, 6}, - {783, 6}, - {783, 7}, - {783, 4}, - {783, 7}, - {783, 7}, - {783, 1}, - {783, 8}, - {1368, 1}, - {1368, 1}, - {1368, 1}, - {1368, 1}, - {785, 1}, - {785, 1}, - {786, 1}, - {786, 1}, - {1486, 1}, - {1486, 1}, - {1486, 1}, + {790, 1}, + {790, 1}, + {790, 1}, + {790, 1}, + {790, 1}, + {790, 1}, + {790, 1}, + {790, 1}, + {790, 1}, + {790, 1}, + {790, 1}, + {790, 1}, + {790, 1}, + {790, 1}, + {790, 1}, + {790, 1}, + {790, 1}, + {790, 1}, + {790, 1}, + {790, 1}, + {790, 1}, + {1230, 0}, + {1230, 2}, + {794, 1}, + {794, 1}, + {794, 1}, + {794, 1}, + {794, 1}, + {793, 1}, + {793, 1}, + {793, 1}, + {793, 1}, + {793, 1}, + {793, 1}, + {788, 4}, + {788, 4}, + {788, 2}, + {788, 3}, + {788, 2}, + {788, 4}, + {788, 6}, + {788, 2}, + {788, 2}, + {788, 2}, + {788, 4}, + {788, 6}, + {788, 4}, {789, 4}, + {789, 4}, + {789, 6}, + {789, 8}, + {789, 8}, + {789, 6}, + {789, 6}, + {789, 6}, + {789, 6}, {789, 6}, + {789, 8}, + {789, 8}, + {789, 8}, + {789, 8}, + {789, 4}, + {789, 6}, + {789, 6}, + {789, 7}, + {789, 4}, + {789, 7}, + {789, 7}, {789, 1}, - {791, 6}, - {791, 4}, - {791, 4}, - {791, 5}, - {791, 6}, - {791, 5}, - {791, 6}, - {791, 5}, - {791, 6}, - {791, 5}, - {791, 6}, - {791, 5}, - {791, 5}, - {791, 8}, - {791, 6}, - {791, 6}, - {791, 6}, - {791, 6}, - {791, 6}, - {791, 6}, - {791, 6}, - {791, 5}, - {791, 6}, - {791, 7}, - {791, 8}, - {791, 8}, - {791, 9}, - {1403, 0}, - {1403, 2}, - {781, 4}, - {781, 6}, - {1367, 0}, - {1367, 2}, - {1367, 3}, - {901, 1}, - {901, 1}, - {901, 1}, - {901, 1}, - {901, 1}, - {901, 1}, - {901, 1}, - {901, 1}, - {901, 1}, - {901, 1}, - {901, 1}, - {901, 1}, - {886, 1}, - {886, 1}, - {886, 1}, - {886, 1}, - {886, 1}, - {886, 1}, - {886, 1}, - {886, 1}, - {886, 1}, - {886, 1}, - {886, 1}, - {886, 1}, - {886, 1}, - {886, 1}, - {886, 1}, - {886, 1}, - {886, 1}, - {1356, 0}, - {1356, 1}, - {1501, 1}, - {1501, 2}, - {1303, 4}, - {1353, 0}, - {1353, 2}, - {1120, 2}, - {1120, 3}, - {1120, 1}, - {1120, 1}, - {1120, 2}, - {1120, 2}, - {1120, 2}, - {1120, 2}, - {1120, 2}, - {1120, 1}, - {1120, 1}, - {1120, 2}, - {1120, 1}, - {934, 1}, - {934, 1}, - {934, 1}, - {990, 0}, - {990, 1}, - {804, 1}, - {804, 3}, - {884, 1}, - {884, 3}, - {1018, 2}, - {1018, 4}, - {1084, 1}, - {1084, 3}, - {1008, 0}, - {1008, 2}, - {1247, 0}, - {1247, 1}, - {1240, 4}, - {1422, 1}, - {1422, 1}, - {1169, 2}, - {1169, 4}, - {1488, 1}, - {1488, 3}, - {1145, 3}, - {1146, 1}, - {1146, 1}, - {847, 1}, - {847, 2}, - {847, 3}, - {847, 4}, - {1129, 4}, - {1129, 4}, - {1129, 5}, - {1129, 2}, - {1129, 3}, - {1129, 1}, - {1129, 2}, - {1275, 1}, - {1258, 1}, - {1188, 2}, - {807, 4}, - {808, 3}, - {809, 7}, - {1482, 0}, - {1482, 7}, - {1482, 5}, - {1481, 0}, - {1481, 1}, - {1481, 1}, - {1481, 1}, - {1483, 0}, - {1483, 1}, - {1483, 1}, - {1253, 0}, - {1253, 4}, - {806, 7}, - {806, 6}, - {806, 5}, - {806, 6}, - {806, 6}, - {817, 2}, - {817, 2}, - {815, 2}, - {815, 3}, - {1308, 3}, - {1308, 1}, - {1034, 4}, - {1365, 2}, - {1502, 0}, - {1502, 2}, - {1503, 1}, - {1503, 3}, - {1304, 3}, - {1026, 1}, - {1306, 3}, - {1508, 4}, - {1401, 0}, - {1401, 1}, - {1405, 0}, - {1405, 3}, + {789, 8}, + {1375, 1}, + {1375, 1}, + {1375, 1}, + {1375, 1}, + {791, 1}, + {791, 1}, + {792, 1}, + {792, 1}, + {1493, 1}, + {1493, 1}, + {1493, 1}, + {795, 4}, + {795, 6}, + {795, 1}, + {797, 6}, + {797, 4}, + {797, 4}, + {797, 5}, + {797, 6}, + {797, 5}, + {797, 6}, + {797, 5}, + {797, 6}, + {797, 5}, + {797, 6}, + {797, 5}, + {797, 5}, + {797, 8}, + {797, 6}, + {797, 6}, + {797, 6}, + {797, 6}, + {797, 6}, + {797, 6}, + {797, 6}, + {797, 5}, + {797, 6}, + {797, 7}, + {797, 8}, + {797, 8}, + {797, 9}, {1410, 0}, - {1410, 3}, - {1409, 0}, - {1409, 2}, - {1506, 1}, - {1506, 1}, - {1506, 1}, - {1505, 1}, - {1505, 1}, - {1097, 2}, - {1097, 2}, - {1097, 2}, - {1097, 4}, - {1097, 2}, - {1504, 4}, - {1305, 1}, - {1305, 2}, - {1305, 2}, - {1305, 2}, - {1305, 4}, - {844, 0}, - {844, 1}, - {832, 2}, - {1507, 1}, - {1507, 1}, - {794, 4}, - {794, 4}, - {794, 4}, - {794, 4}, - {794, 4}, - {794, 5}, - {794, 7}, - {794, 7}, - {794, 6}, - {794, 6}, - {794, 9}, - {1226, 0}, - {1226, 3}, - {1226, 3}, - {1227, 0}, - {1227, 2}, - {988, 0}, - {988, 2}, - {988, 2}, - {1402, 0}, - {1402, 2}, - {1402, 2}, - {1480, 1}, - {993, 1}, - {993, 3}, - {955, 1}, - {955, 4}, - {900, 1}, - {900, 1}, - {899, 6}, - {899, 2}, - {899, 3}, - {963, 0}, - {963, 4}, - {1017, 0}, - {1017, 1}, - {1016, 1}, - {1016, 2}, - {1052, 2}, - {1052, 2}, - {1052, 2}, - {1373, 0}, - {1373, 2}, - {1373, 3}, - {1373, 3}, - {1051, 5}, - {960, 0}, - {960, 1}, - {960, 3}, - {960, 1}, - {960, 3}, - {1191, 1}, - {1191, 2}, - {1192, 0}, - {1192, 1}, - {895, 3}, - {895, 5}, - {895, 7}, - {895, 7}, - {895, 9}, - {895, 4}, - {895, 6}, - {895, 3}, - {895, 5}, - {914, 1}, - {914, 1}, - {1229, 0}, - {1229, 1}, - {919, 1}, - {919, 2}, - {919, 2}, - {1201, 0}, - {1201, 2}, - {985, 1}, - {985, 1}, - {1444, 1}, - {1444, 1}, - {1363, 1}, - {1363, 1}, - {1357, 0}, - {1357, 1}, - {843, 2}, - {843, 4}, - {843, 4}, - {843, 5}, - {925, 0}, - {925, 1}, - {1266, 1}, - {1266, 1}, - {1266, 1}, - {1266, 1}, - {1266, 1}, - {1266, 1}, - {1266, 1}, - {1266, 1}, - {1266, 1}, - {1447, 0}, - {1447, 1}, - {1448, 2}, - {1448, 1}, - {969, 1}, - {1019, 0}, - {1019, 1}, - {1267, 1}, - {1267, 1}, - {1446, 1}, - {1080, 0}, - {1080, 1}, - {992, 0}, - {992, 5}, - {775, 3}, - {775, 3}, - {775, 3}, - {775, 3}, - {991, 0}, - {991, 3}, - {991, 3}, - {991, 4}, - {991, 5}, - {991, 4}, - {991, 5}, - {991, 5}, - {991, 4}, - {1217, 0}, - {1217, 2}, - {818, 1}, - {818, 1}, - {818, 2}, - {818, 2}, - {813, 3}, - {813, 3}, - {812, 4}, - {812, 4}, - {812, 5}, - {812, 2}, - {812, 2}, - {812, 3}, - {811, 1}, - {811, 3}, - {810, 1}, - {810, 1}, - {1450, 2}, - {1450, 2}, - {1450, 2}, - {1081, 1}, - {1121, 9}, - {1121, 9}, - {848, 2}, - {848, 4}, - {848, 6}, - {848, 4}, - {848, 4}, - {848, 3}, - {848, 6}, - {848, 6}, - {848, 3}, - {848, 4}, - {1271, 3}, - {1270, 6}, - {1269, 1}, - {1269, 1}, - {1269, 1}, - {1451, 3}, - {1451, 1}, - {1451, 1}, - {1087, 1}, - {1087, 3}, - {1023, 3}, - {1023, 2}, - {1023, 2}, - {1023, 3}, - {1380, 2}, - {1380, 2}, - {1380, 2}, - {1380, 1}, - {939, 1}, - {939, 1}, - {939, 1}, + {1410, 2}, + {787, 4}, + {787, 6}, + {1374, 0}, + {1374, 2}, + {1374, 3}, + {907, 1}, + {907, 1}, + {907, 1}, + {907, 1}, + {907, 1}, + {907, 1}, + {907, 1}, + {907, 1}, + {907, 1}, + {907, 1}, + {907, 1}, + {907, 1}, {892, 1}, {892, 1}, - {926, 1}, - {926, 3}, - {1001, 1}, - {1001, 3}, - {1001, 3}, - {1096, 3}, - {1096, 4}, - {1096, 4}, - {1096, 4}, - {1096, 3}, - {1096, 3}, - {1096, 2}, - {1096, 4}, - {1096, 4}, - {1096, 2}, - {1096, 2}, - {1331, 1}, - {1331, 1}, - {905, 1}, - {905, 1}, - {974, 1}, - {974, 1}, - {1302, 1}, - {1302, 3}, - {793, 1}, - {793, 1}, - {792, 1}, - {776, 1}, - {855, 1}, - {855, 3}, - {855, 2}, - {855, 2}, - {970, 1}, - {970, 3}, - {1234, 1}, - {1234, 4}, - {997, 1}, - {918, 1}, - {918, 1}, - {898, 3}, - {898, 2}, - {1078, 1}, - {1078, 1}, - {917, 1}, - {917, 1}, + {892, 1}, + {892, 1}, + {892, 1}, + {892, 1}, + {892, 1}, + {892, 1}, + {892, 1}, + {892, 1}, + {892, 1}, + {892, 1}, + {892, 1}, + {892, 1}, + {892, 1}, + {892, 1}, + {892, 1}, + {1363, 0}, + {1363, 1}, + {1508, 1}, + {1508, 2}, + {1309, 4}, + {1360, 0}, + {1360, 2}, + {1126, 2}, + {1126, 3}, + {1126, 1}, + {1126, 1}, + {1126, 2}, + {1126, 2}, + {1126, 2}, + {1126, 2}, + {1126, 2}, + {1126, 1}, + {1126, 1}, + {1126, 2}, + {1126, 1}, + {941, 1}, + {941, 1}, + {941, 1}, + {996, 0}, + {996, 1}, + {810, 1}, + {810, 3}, + {890, 1}, + {890, 3}, + {1024, 2}, + {1024, 4}, + {1090, 1}, + {1090, 3}, + {1014, 0}, + {1014, 2}, + {1253, 0}, + {1253, 1}, + {1246, 4}, + {1429, 1}, + {1429, 1}, + {1175, 2}, + {1175, 4}, + {1495, 1}, + {1495, 3}, + {1151, 3}, + {1152, 1}, + {1152, 1}, + {853, 1}, + {853, 2}, + {853, 3}, + {853, 4}, + {1135, 4}, + {1135, 4}, + {1135, 5}, + {1135, 2}, + {1135, 3}, + {1135, 1}, + {1135, 2}, + {1281, 1}, + {1264, 1}, + {1194, 2}, + {813, 4}, + {814, 3}, + {815, 7}, + {1489, 0}, + {1489, 7}, + {1489, 5}, + {1488, 0}, + {1488, 1}, + {1488, 1}, + {1488, 1}, + {1490, 0}, + {1490, 1}, + {1490, 1}, + {1259, 0}, + {1259, 4}, + {812, 7}, + {812, 6}, + {812, 5}, + {812, 6}, + {812, 6}, + {823, 2}, + {823, 2}, + {822, 2}, + {822, 3}, + {1314, 3}, + {1314, 1}, + {1040, 4}, + {1372, 2}, + {1509, 0}, + {1509, 2}, + {1510, 1}, + {1510, 3}, + {1310, 3}, + {1032, 1}, + {1312, 3}, + {1515, 4}, + {1408, 0}, + {1408, 1}, + {1412, 0}, + {1412, 3}, + {1417, 0}, + {1417, 3}, + {1416, 0}, + {1416, 2}, + {1513, 1}, + {1513, 1}, + {1513, 1}, + {1512, 1}, + {1512, 1}, + {1103, 2}, + {1103, 2}, + {1103, 2}, + {1103, 4}, + {1103, 2}, + {1511, 4}, + {1311, 1}, + {1311, 2}, + {1311, 2}, + {1311, 2}, + {1311, 4}, + {850, 0}, + {850, 1}, + {838, 2}, + {1514, 1}, + {1514, 1}, + {800, 4}, + {800, 4}, + {800, 4}, + {800, 4}, + {800, 4}, + {800, 5}, + {800, 7}, + {800, 7}, + {800, 6}, + {800, 6}, + {800, 9}, + {1232, 0}, + {1232, 3}, + {1232, 3}, + {1233, 0}, + {1233, 2}, + {994, 0}, + {994, 2}, + {994, 2}, + {1409, 0}, + {1409, 2}, + {1409, 2}, + {1487, 1}, + {999, 1}, + {999, 3}, + {961, 1}, + {961, 4}, + {906, 1}, + {906, 1}, + {905, 6}, + {905, 2}, + {905, 3}, + {969, 0}, + {969, 4}, + {1023, 0}, + {1023, 1}, + {1022, 1}, + {1022, 2}, + {1058, 2}, + {1058, 2}, + {1058, 2}, + {1380, 0}, + {1380, 2}, + {1380, 3}, + {1380, 3}, + {1057, 5}, + {966, 0}, {966, 1}, {966, 3}, - {1312, 2}, - {1312, 4}, - {1312, 4}, - {1100, 3}, - {1100, 5}, - {1100, 6}, - {1100, 4}, - {1100, 4}, - {1100, 5}, - {1100, 5}, - {1100, 5}, - {1100, 6}, - {1100, 4}, - {1100, 5}, - {1100, 5}, - {1100, 5}, - {1100, 6}, - {1100, 6}, - {1100, 4}, - {1100, 3}, - {1100, 3}, - {1100, 4}, - {1100, 4}, - {1100, 5}, - {1100, 5}, - {1100, 3}, - {1100, 3}, - {1100, 3}, - {1100, 3}, - {1100, 3}, - {1100, 3}, - {1100, 3}, - {1100, 3}, - {1100, 4}, - {1311, 2}, - {1311, 2}, - {1311, 3}, - {1311, 3}, - {1369, 1}, - {1369, 3}, - {1185, 5}, - {1005, 1}, - {1005, 3}, - {1273, 3}, - {1273, 4}, - {1273, 4}, - {1273, 5}, - {1273, 4}, - {1273, 5}, - {1273, 5}, - {1273, 4}, - {1273, 6}, - {1273, 4}, - {1273, 8}, - {1273, 2}, - {1273, 5}, - {1273, 3}, - {1273, 3}, - {1273, 2}, - {1273, 5}, - {1273, 2}, - {1273, 2}, - {1273, 4}, - {1273, 4}, - {1273, 4}, - {1455, 2}, - {1455, 2}, - {1455, 4}, - {1458, 0}, - {1458, 1}, - {1457, 1}, - {1457, 3}, + {966, 1}, + {966, 3}, + {1197, 1}, + {1197, 2}, + {1198, 0}, + {1198, 1}, + {901, 3}, + {901, 5}, + {901, 7}, + {901, 7}, + {901, 9}, + {901, 4}, + {901, 6}, + {901, 3}, + {901, 5}, + {920, 1}, + {920, 1}, + {1235, 0}, + {1235, 1}, + {925, 1}, + {925, 2}, + {925, 2}, + {1207, 0}, + {1207, 2}, + {991, 1}, + {991, 1}, + {1451, 1}, + {1451, 1}, + {1370, 1}, + {1370, 1}, + {1364, 0}, + {1364, 1}, + {849, 2}, + {849, 4}, + {849, 4}, + {849, 5}, + {931, 0}, + {931, 1}, + {1272, 1}, + {1272, 1}, + {1272, 1}, {1272, 1}, {1272, 1}, - {1272, 2}, - {1272, 2}, - {1272, 2}, {1272, 1}, {1272, 1}, {1272, 1}, {1272, 1}, - {1456, 0}, - {1456, 3}, - {1489, 0}, - {1489, 2}, - {1453, 1}, - {1453, 1}, - {1453, 1}, - {903, 1}, - {903, 1}, - {1459, 1}, - {1459, 1}, - {1459, 1}, - {1459, 1}, - {1459, 3}, - {1459, 3}, - {1459, 3}, - {1459, 3}, - {1459, 5}, - {1459, 4}, - {1459, 5}, - {1459, 5}, - {1459, 1}, - {1459, 5}, - {1459, 1}, - {1459, 2}, - {1459, 2}, - {1459, 2}, - {1459, 1}, - {1459, 2}, - {1459, 2}, - {1459, 2}, - {1459, 2}, - {1459, 2}, - {1459, 2}, - {1459, 2}, - {1459, 1}, - {1459, 1}, - {1459, 1}, - {1459, 1}, - {1459, 1}, - {1459, 1}, - {1459, 1}, - {1459, 1}, - {1459, 1}, - {1459, 1}, - {1459, 1}, - {1459, 2}, - {1459, 1}, - {1459, 1}, - {1459, 1}, - {1459, 2}, - {1459, 2}, {1454, 0}, - {1454, 2}, - {1454, 2}, - {1049, 0}, - {1049, 1}, - {1049, 1}, - {1469, 0}, - {1469, 1}, - {1469, 1}, - {1469, 1}, - {1222, 0}, - {1222, 1}, - {940, 0}, - {940, 2}, - {1274, 2}, - {1178, 3}, - {1069, 1}, - {1069, 3}, - {1364, 1}, - {1364, 1}, - {1364, 3}, - {1364, 1}, - {1364, 2}, - {1364, 3}, - {1364, 1}, - {1389, 0}, - {1389, 1}, - {1389, 1}, - {1389, 1}, - {1389, 1}, - {1389, 1}, - {924, 0}, + {1454, 1}, + {1455, 2}, + {1455, 1}, + {975, 1}, + {1025, 0}, + {1025, 1}, + {1273, 1}, + {1273, 1}, + {1453, 1}, + {1086, 0}, + {1086, 1}, + {998, 0}, + {998, 5}, + {781, 3}, + {781, 3}, + {781, 3}, + {781, 3}, + {997, 0}, + {997, 3}, + {997, 3}, + {997, 4}, + {997, 5}, + {997, 4}, + {997, 5}, + {997, 5}, + {997, 4}, + {1223, 0}, + {1223, 2}, + {824, 1}, + {824, 1}, + {824, 2}, + {824, 2}, + {819, 3}, + {819, 3}, + {818, 4}, + {818, 4}, + {818, 5}, + {818, 2}, + {818, 2}, + {818, 3}, + {817, 1}, + {817, 3}, + {816, 1}, + {816, 1}, + {1457, 2}, + {1457, 2}, + {1457, 2}, + {1087, 1}, + {1127, 9}, + {1127, 9}, + {854, 2}, + {854, 4}, + {854, 6}, + {854, 4}, + {854, 4}, + {854, 3}, + {854, 6}, + {854, 6}, + {854, 3}, + {854, 4}, + {1277, 3}, + {1276, 6}, + {1275, 1}, + {1275, 1}, + {1275, 1}, + {1458, 3}, + {1458, 1}, + {1458, 1}, + {1093, 1}, + {1093, 3}, + {1029, 3}, + {1029, 2}, + {1029, 2}, + {1029, 3}, + {1387, 2}, + {1387, 2}, + {1387, 2}, + {1387, 1}, + {946, 1}, + {946, 1}, + {946, 1}, + {898, 1}, + {898, 1}, + {932, 1}, + {932, 3}, + {1007, 1}, + {1007, 3}, + {1007, 3}, + {1102, 3}, + {1102, 4}, + {1102, 4}, + {1102, 4}, + {1102, 3}, + {1102, 3}, + {1102, 2}, + {1102, 4}, + {1102, 4}, + {1102, 2}, + {1102, 2}, + {1338, 1}, + {1338, 1}, + {911, 1}, + {911, 1}, + {980, 1}, + {980, 1}, + {1308, 1}, + {1308, 3}, + {799, 1}, + {799, 1}, + {798, 1}, + {782, 1}, + {861, 1}, + {861, 3}, + {861, 2}, + {861, 2}, + {976, 1}, + {976, 3}, + {1240, 1}, + {1240, 4}, + {1003, 1}, {924, 1}, {924, 1}, - {1293, 0}, - {1293, 1}, - {1548, 0}, - {1548, 2}, - {1509, 0}, - {1509, 3}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {1022, 1}, - {1022, 1}, - {1022, 1}, - {1022, 1}, - {1022, 1}, - {1022, 1}, - {1022, 1}, - {1022, 1}, - {1022, 1}, - {1022, 1}, - {1022, 1}, - {1022, 1}, - {1022, 1}, - {1022, 1}, - {1022, 1}, - {1022, 1}, - {920, 1}, - {920, 1}, - {920, 1}, - {920, 1}, - {920, 1}, - {920, 1}, - {920, 1}, - {920, 1}, - {920, 1}, - {1468, 1}, - {1468, 3}, - {1002, 2}, - {1122, 1}, - {1122, 1}, - {1085, 1}, - {1085, 1}, - {1291, 1}, - {1291, 3}, - {1478, 0}, - {1478, 3}, - {941, 1}, - {941, 4}, - {941, 4}, - {941, 4}, - {941, 3}, - {941, 4}, - {941, 3}, - {941, 3}, - {941, 3}, - {941, 3}, - {941, 3}, - {941, 3}, - {941, 3}, - {941, 3}, - {941, 1}, - {941, 3}, - {941, 3}, - {941, 3}, - {941, 3}, - {941, 3}, - {941, 3}, - {941, 3}, - {941, 3}, - {941, 3}, - {941, 3}, - {941, 3}, - {941, 3}, - {941, 3}, - {941, 2}, - {941, 2}, - {941, 3}, - {941, 3}, - {941, 5}, - {941, 3}, - {941, 7}, - {941, 3}, - {941, 3}, - {931, 0}, - {931, 1}, - {1286, 1}, - {1286, 1}, - {1141, 0}, - {1141, 1}, - {1020, 1}, - {1020, 2}, - {1020, 3}, - {1407, 0}, - {1407, 1}, - {860, 3}, - {937, 3}, - {937, 3}, - {937, 3}, - {937, 3}, - {937, 3}, - {937, 3}, - {937, 3}, - {937, 3}, - {937, 3}, - {937, 3}, - {937, 3}, - {937, 3}, - {937, 3}, - {937, 3}, - {937, 3}, - {1089, 1}, + {904, 3}, + {904, 2}, + {1084, 1}, + {1084, 1}, + {923, 1}, + {923, 1}, + {972, 1}, + {972, 3}, + {1318, 2}, + {1318, 4}, + {1318, 4}, + {1332, 1}, + {1332, 1}, + {1332, 1}, + {1332, 1}, + {1106, 3}, + {1106, 5}, + {1106, 6}, + {1106, 4}, + {1106, 4}, + {1106, 5}, + {1106, 5}, + {1106, 5}, + {1106, 6}, + {1106, 4}, + {1106, 5}, + {1106, 5}, + {1106, 5}, + {1106, 6}, + {1106, 6}, + {1106, 4}, + {1106, 3}, + {1106, 3}, + {1106, 4}, + {1106, 4}, + {1106, 5}, + {1106, 5}, + {1106, 3}, + {1106, 3}, + {1106, 3}, + {1106, 3}, + {1106, 3}, + {1106, 3}, + {1106, 3}, + {1106, 3}, + {1106, 4}, + {1106, 5}, + {1106, 4}, + {1317, 2}, + {1317, 2}, + {1317, 3}, + {1317, 3}, + {1376, 1}, + {1376, 3}, + {1191, 5}, + {1011, 1}, + {1011, 3}, + {1279, 3}, + {1279, 4}, + {1279, 4}, + {1279, 5}, + {1279, 4}, + {1279, 5}, + {1279, 5}, + {1279, 4}, + {1279, 6}, + {1279, 4}, + {1279, 8}, + {1279, 2}, + {1279, 5}, + {1279, 3}, + {1279, 4}, + {1279, 3}, + {1279, 2}, + {1279, 5}, + {1279, 2}, + {1279, 2}, + {1279, 4}, + {1279, 4}, + {1279, 4}, + {1462, 2}, + {1462, 2}, + {1462, 4}, + {1465, 0}, + {1465, 1}, + {1464, 1}, + {1464, 3}, + {1278, 1}, + {1278, 1}, + {1278, 2}, + {1278, 2}, + {1278, 2}, + {1278, 1}, + {1278, 1}, + {1278, 1}, + {1278, 1}, + {1463, 0}, + {1463, 3}, + {1496, 0}, + {1496, 2}, + {1460, 1}, + {1460, 1}, + {1460, 1}, + {909, 1}, + {909, 1}, + {1466, 1}, + {1466, 1}, + {1466, 1}, + {1466, 1}, + {1466, 3}, + {1466, 3}, + {1466, 3}, + {1466, 3}, + {1466, 5}, + {1466, 4}, + {1466, 5}, + {1466, 5}, + {1466, 1}, + {1466, 5}, + {1466, 1}, + {1466, 2}, + {1466, 2}, + {1466, 2}, + {1466, 1}, + {1466, 2}, + {1466, 2}, + {1466, 2}, + {1466, 2}, + {1466, 2}, + {1466, 2}, + {1466, 2}, + {1466, 1}, + {1466, 1}, + {1466, 1}, + {1466, 1}, + {1466, 1}, + {1466, 1}, + {1466, 1}, + {1466, 1}, + {1466, 1}, + {1466, 1}, + {1466, 1}, + {1466, 2}, + {1466, 1}, + {1466, 1}, + {1466, 1}, + {1466, 2}, + {1466, 2}, + {1461, 0}, + {1461, 2}, + {1461, 2}, + {1055, 0}, + {1055, 1}, + {1055, 1}, + {1476, 0}, + {1476, 1}, + {1476, 1}, + {1476, 1}, + {1228, 0}, + {1228, 1}, + {947, 0}, + {947, 2}, + {1280, 2}, + {1184, 3}, + {1075, 1}, + {1075, 3}, + {1371, 1}, + {1371, 1}, + {1371, 3}, + {1371, 1}, + {1371, 2}, + {1371, 3}, + {1371, 1}, + {1396, 0}, + {1396, 1}, + {1396, 1}, + {1396, 1}, + {1396, 1}, + {1396, 1}, + {930, 0}, + {930, 1}, + {930, 1}, + {1299, 0}, + {1299, 1}, + {1555, 0}, + {1555, 2}, + {1516, 0}, + {1516, 3}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1290, 1}, + {1028, 1}, + {1028, 1}, + {1028, 1}, + {1028, 1}, + {1028, 1}, + {1028, 1}, + {1028, 1}, + {1028, 1}, + {1028, 1}, + {1028, 1}, + {1028, 1}, + {1028, 1}, + {1028, 1}, + {1028, 1}, + {1028, 1}, + {1028, 1}, + {926, 1}, + {926, 1}, + {926, 1}, + {926, 1}, + {926, 1}, + {926, 1}, + {926, 1}, + {926, 1}, + {926, 1}, + {1475, 1}, + {1475, 3}, + {1008, 2}, + {1128, 1}, + {1128, 1}, + {1091, 1}, + {1091, 1}, + {1297, 1}, + {1297, 3}, + {1485, 0}, + {1485, 3}, + {948, 1}, + {948, 4}, + {948, 4}, + {948, 4}, + {948, 3}, + {948, 4}, + {948, 3}, + {948, 3}, + {948, 3}, + {948, 3}, + {948, 3}, + {948, 3}, + {948, 3}, + {948, 3}, + {948, 1}, + {948, 3}, + {948, 3}, + {948, 3}, + {948, 3}, + {948, 3}, + {948, 3}, + {948, 3}, + {948, 3}, + {948, 3}, + {948, 3}, + {948, 3}, + {948, 3}, + {948, 3}, + {948, 2}, + {948, 2}, + {948, 3}, + {948, 3}, + {948, 5}, + {948, 3}, + {948, 7}, + {948, 3}, + {948, 3}, + {938, 0}, + {938, 1}, + {1292, 1}, + {1292, 1}, + {1147, 0}, + {1147, 1}, + {1026, 1}, + {1026, 2}, + {1026, 3}, + {1414, 0}, + {1414, 1}, + {866, 3}, + {944, 3}, + {944, 3}, + {944, 3}, + {944, 3}, + {944, 3}, + {944, 3}, + {944, 3}, + {944, 3}, + {944, 3}, + {944, 3}, + {944, 3}, + {944, 3}, + {944, 3}, + {944, 3}, + {944, 3}, + {1095, 1}, + {1095, 1}, + {1095, 1}, + {1068, 3}, + {1068, 2}, + {1068, 3}, + {1068, 3}, + {1068, 2}, + {1060, 1}, + {1060, 1}, + {1060, 1}, + {1060, 1}, + {1060, 1}, + {1060, 1}, + {1060, 1}, + {1060, 1}, + {1060, 1}, + {1060, 1}, + {1060, 1}, + {1060, 1}, + {1037, 1}, + {1037, 1}, + {1229, 0}, + {1229, 1}, + {1229, 1}, + {1052, 1}, + {1052, 1}, + {1052, 1}, + {1053, 1}, + {1053, 1}, + {1053, 1}, + {1053, 2}, + {1053, 1}, + {1053, 1}, + {1035, 1}, + {1089, 3}, + {1089, 2}, + {1089, 3}, + {1089, 2}, + {1089, 3}, + {1089, 3}, + {1089, 2}, + {1089, 2}, {1089, 1}, + {1089, 2}, + {1089, 5}, + {1089, 5}, {1089, 1}, - {1062, 3}, - {1062, 2}, - {1062, 3}, - {1062, 3}, - {1062, 2}, - {1054, 1}, - {1054, 1}, - {1054, 1}, - {1054, 1}, - {1054, 1}, - {1054, 1}, - {1054, 1}, - {1054, 1}, - {1054, 1}, - {1054, 1}, - {1054, 1}, - {1054, 1}, + {1089, 3}, + {1089, 2}, + {957, 1}, + {957, 1}, + {1064, 1}, + {1064, 2}, + {1064, 2}, + {1031, 2}, + {1031, 2}, {1031, 1}, {1031, 1}, - {1223, 0}, - {1223, 1}, - {1223, 1}, - {1046, 1}, - {1046, 1}, - {1046, 1}, - {1047, 1}, - {1047, 1}, - {1047, 1}, - {1047, 2}, - {1047, 1}, - {1047, 1}, - {1029, 1}, - {1083, 3}, - {1083, 2}, - {1083, 3}, + {1069, 2}, + {1069, 2}, + {1069, 1}, + {1069, 2}, + {1069, 2}, + {1069, 3}, + {1069, 3}, + {1069, 2}, + {1104, 1}, + {1104, 1}, + {1036, 1}, + {1036, 2}, + {1036, 1}, + {1036, 1}, + {1036, 2}, + {1092, 1}, + {1092, 2}, + {1092, 1}, + {1092, 1}, + {993, 1}, + {993, 1}, + {993, 1}, + {993, 1}, + {1044, 1}, + {1044, 2}, + {1044, 2}, + {1044, 2}, + {1044, 3}, + {847, 3}, + {894, 0}, + {894, 1}, + {984, 1}, + {984, 1}, + {984, 1}, + {985, 0}, + {985, 2}, + {1009, 0}, + {1009, 1}, + {1009, 1}, + {1016, 5}, + {1406, 0}, + {1406, 1}, + {902, 0}, + {902, 2}, + {902, 3}, + {1407, 0}, + {1407, 2}, + {859, 2}, + {859, 1}, + {859, 2}, + {1227, 0}, + {1227, 2}, + {1479, 1}, + {1479, 3}, + {1027, 1}, + {1027, 1}, + {1027, 1}, + {1303, 1}, + {1303, 3}, + {811, 1}, + {811, 1}, + {1480, 1}, + {1480, 1}, + {1480, 1}, + {832, 1}, + {832, 2}, + {827, 10}, + {827, 8}, + {867, 2}, + {895, 2}, + {896, 0}, + {896, 1}, + {1524, 0}, + {1524, 1}, + {1148, 9}, + {1144, 4}, + {1117, 9}, + {1117, 9}, + {1109, 3}, + {1112, 4}, + {1385, 2}, + {1385, 6}, + {1000, 2}, + {1030, 1}, + {1030, 3}, + {1137, 0}, + {1137, 2}, + {1346, 1}, + {1346, 2}, + {1136, 2}, + {1136, 2}, + {1136, 2}, + {1136, 2}, + {1082, 0}, + {1082, 1}, + {1081, 2}, + {1081, 2}, + {1081, 2}, + {1081, 2}, + {1446, 1}, + {1446, 3}, + {1446, 2}, {1083, 2}, - {1083, 3}, - {1083, 3}, {1083, 2}, {1083, 2}, - {1083, 1}, {1083, 2}, - {1083, 5}, - {1083, 5}, - {1083, 1}, - {1083, 3}, {1083, 2}, - {951, 1}, - {951, 1}, - {1058, 1}, - {1058, 2}, - {1058, 2}, - {1025, 2}, - {1025, 2}, - {1025, 1}, - {1025, 1}, - {1063, 2}, - {1063, 2}, - {1063, 1}, - {1063, 2}, - {1063, 2}, - {1063, 3}, - {1063, 3}, - {1063, 2}, - {1098, 1}, - {1098, 1}, - {1030, 1}, - {1030, 2}, - {1030, 1}, - {1030, 1}, - {1030, 2}, - {1086, 1}, - {1086, 2}, - {1086, 1}, - {1086, 1}, - {987, 1}, - {987, 1}, - {987, 1}, - {987, 1}, - {1038, 1}, - {1038, 2}, - {1038, 2}, - {1038, 2}, - {1038, 3}, - {841, 3}, - {888, 0}, - {888, 1}, - {978, 1}, - {978, 1}, - {978, 1}, - {979, 0}, - {979, 2}, - {1003, 0}, - {1003, 1}, - {1003, 1}, - {1010, 5}, - {1399, 0}, - {1399, 1}, - {896, 0}, - {896, 2}, - {896, 3}, - {1400, 0}, - {1400, 2}, - {853, 2}, - {853, 1}, - {853, 2}, - {1221, 0}, - {1221, 2}, - {1472, 1}, - {1472, 3}, - {1021, 1}, - {1021, 1}, - {1021, 1}, - {1297, 1}, - {1297, 3}, - {805, 1}, - {805, 1}, - {1473, 1}, - {1473, 1}, - {1473, 1}, - {827, 1}, - {827, 2}, - {822, 10}, - {822, 8}, - {861, 2}, - {889, 2}, - {890, 0}, - {890, 1}, - {1517, 0}, - {1517, 1}, - {1142, 9}, - {1138, 4}, - {1111, 9}, - {1111, 9}, - {1103, 3}, - {1106, 4}, - {1378, 2}, - {1378, 6}, - {994, 2}, - {1024, 1}, - {1024, 3}, - {1131, 0}, - {1131, 2}, - {1339, 1}, - {1339, 2}, - {1130, 2}, - {1130, 2}, - {1130, 2}, - {1130, 2}, - {1076, 0}, - {1076, 1}, - {1075, 2}, - {1075, 2}, - {1075, 2}, - {1075, 2}, - {1439, 1}, - {1439, 3}, - {1439, 2}, - {1077, 2}, - {1077, 2}, - {1077, 2}, - {1077, 2}, - {1077, 2}, - {1128, 0}, - {1128, 2}, - {1128, 2}, - {1254, 0}, - {1254, 3}, - {1236, 0}, - {1236, 1}, - {1235, 1}, - {1235, 2}, - {1068, 2}, - {1068, 2}, - {1068, 3}, - {1068, 3}, - {1068, 4}, - {1068, 5}, - {1068, 2}, - {1068, 5}, - {1068, 3}, - {1068, 3}, - {1068, 2}, - {1068, 2}, - {1068, 2}, - {1323, 0}, - {1323, 3}, - {1323, 3}, - {1323, 5}, - {1323, 5}, - {1323, 4}, - {1324, 1}, - {1186, 1}, - {1186, 1}, - {1264, 1}, - {1443, 1}, - {1443, 3}, - {944, 1}, - {944, 1}, - {944, 1}, - {944, 1}, - {944, 1}, - {944, 1}, - {944, 1}, - {944, 1}, - {1132, 7}, - {1132, 9}, - {1149, 5}, - {1149, 7}, - {1149, 7}, - {1268, 5}, - {1268, 7}, + {1134, 0}, + {1134, 2}, + {1134, 2}, + {1260, 0}, + {1260, 3}, + {1242, 0}, + {1242, 1}, + {1241, 1}, + {1241, 2}, + {1074, 2}, + {1074, 2}, + {1074, 3}, + {1074, 3}, + {1074, 4}, + {1074, 5}, + {1074, 2}, + {1074, 5}, + {1074, 3}, + {1074, 3}, + {1074, 2}, + {1074, 2}, + {1074, 2}, + {1329, 0}, + {1329, 3}, + {1329, 3}, + {1329, 5}, + {1329, 5}, + {1329, 4}, + {1330, 1}, + {1192, 1}, + {1192, 1}, + {1270, 1}, + {1450, 1}, + {1450, 3}, + {934, 1}, + {934, 1}, + {934, 1}, + {934, 1}, + {934, 1}, + {934, 1}, + {934, 1}, + {934, 1}, + {1138, 7}, + {1138, 5}, + {1138, 9}, + {1155, 5}, + {1155, 7}, + {1155, 7}, + {1274, 5}, + {1274, 7}, + {1274, 7}, + {1190, 9}, + {1188, 7}, + {1189, 4}, + {1313, 0}, + {1313, 3}, + {1313, 3}, + {1313, 3}, + {1313, 3}, + {1313, 3}, + {1051, 1}, + {1051, 2}, + {1085, 1}, + {1085, 1}, + {1085, 1}, + {1085, 3}, + {1085, 3}, + {1269, 1}, + {1269, 3}, + {1077, 1}, + {1077, 4}, + {1078, 1}, + {1078, 2}, + {1078, 1}, + {1078, 1}, + {1078, 2}, + {1078, 2}, + {1078, 1}, + {1078, 1}, + {1078, 1}, + {1078, 1}, + {1078, 1}, + {1078, 1}, + {1078, 1}, + {1078, 1}, + {1078, 1}, + {1078, 2}, + {1078, 1}, + {1078, 2}, + {1078, 1}, + {1078, 2}, + {1078, 2}, + {1078, 1}, + {1078, 1}, + {1078, 1}, + {1078, 1}, + {1078, 3}, + {1078, 2}, + {1078, 2}, + {1078, 2}, + {1078, 2}, + {1078, 2}, + {1078, 2}, + {1078, 2}, + {1078, 1}, + {1078, 1}, + {1221, 0}, + {1221, 1}, + {1221, 1}, + {1221, 1}, + {1247, 1}, + {1247, 3}, + {1247, 3}, + {1247, 3}, + {1247, 1}, {1268, 7}, - {1184, 9}, - {1182, 7}, - {1183, 4}, - {1307, 0}, - {1307, 3}, - {1307, 3}, - {1307, 3}, - {1307, 3}, - {1307, 3}, - {1045, 1}, - {1045, 2}, - {1079, 1}, - {1079, 1}, - {1079, 1}, - {1079, 3}, - {1079, 3}, - {1263, 1}, - {1263, 3}, - {1071, 1}, - {1071, 4}, - {1072, 1}, - {1072, 2}, - {1072, 1}, - {1072, 1}, - {1072, 2}, - {1072, 2}, - {1072, 1}, - {1072, 1}, - {1072, 1}, - {1072, 1}, - {1072, 1}, - {1072, 1}, - {1072, 1}, - {1072, 1}, - {1072, 1}, - {1072, 2}, - {1072, 1}, - {1072, 2}, - {1072, 1}, - {1072, 2}, - {1072, 2}, - {1072, 1}, - {1072, 1}, - {1072, 1}, - {1072, 1}, - {1072, 3}, - {1072, 2}, - {1072, 2}, - {1072, 2}, - {1072, 2}, - {1072, 2}, - {1072, 2}, - {1072, 2}, - {1072, 1}, - {1072, 1}, + {1267, 4}, + {968, 17}, + {1185, 0}, + {1185, 2}, + {1378, 0}, + {1378, 3}, + {1339, 0}, + {1339, 3}, {1215, 0}, {1215, 1}, - {1215, 1}, - {1215, 1}, - {1241, 1}, - {1241, 3}, - {1241, 3}, - {1241, 3}, - {1241, 1}, - {1262, 7}, - {1261, 4}, - {962, 17}, {1179, 0}, {1179, 2}, - {1371, 0}, - {1371, 3}, - {1332, 0}, - {1332, 3}, - {1209, 0}, - {1209, 1}, - {1173, 0}, - {1173, 2}, - {930, 1}, - {930, 1}, - {1360, 2}, - {1360, 1}, - {1172, 3}, - {1172, 2}, - {1172, 3}, - {1172, 3}, - {1172, 4}, - {1172, 6}, - {956, 1}, - {956, 1}, - {956, 1}, - {1056, 0}, - {1056, 3}, - {1466, 0}, - {1466, 3}, - {1385, 0}, - {1385, 3}, - {1207, 0}, - {1207, 2}, - {1387, 3}, - {1387, 1}, - {1206, 3}, - {1205, 0}, - {1205, 2}, - {1386, 1}, - {1386, 3}, - {1204, 1}, - {1204, 3}, - {1189, 9}, - {1300, 2}, - {1211, 3}, - {1295, 1}, - {1295, 1}, - {1292, 2}, - {1388, 1}, - {1388, 2}, - {1388, 1}, - {1388, 2}, - {1479, 1}, - {1479, 3}, - {1213, 6}, - {1452, 1}, - {1452, 1}, - {1452, 1}, - {1452, 1}, - {1350, 0}, - {1350, 2}, - {1350, 3}, - {1404, 0}, - {1404, 2}, - {1199, 2}, - {1199, 3}, - {1199, 3}, - {1199, 2}, - {1198, 1}, - {1198, 2}, - {1208, 3}, - {1210, 3}, - {1210, 5}, - {1210, 7}, - {1299, 3}, - {1299, 5}, - {1299, 7}, - {1153, 5}, - {1137, 6}, - {1107, 6}, - {1156, 5}, - {1135, 7}, - {1105, 6}, - {1139, 6}, - {1342, 0}, - {1342, 1}, - {1449, 1}, - {1449, 2}, - {1014, 3}, - {1014, 3}, - {1014, 3}, - {1014, 3}, - {1014, 3}, - {1014, 1}, - {1014, 2}, - {1014, 3}, - {1014, 1}, - {1014, 2}, - {1014, 3}, - {1014, 1}, - {1014, 2}, - {1014, 1}, - {1014, 1}, - {1014, 2}, - {911, 1}, - {911, 2}, - {911, 2}, - {1158, 4}, - {1109, 5}, - {1314, 1}, - {1314, 2}, - {1108, 1}, - {1108, 1}, - {1108, 3}, - {1108, 3}, - {1190, 8}, - {1393, 0}, - {1393, 2}, + {937, 1}, + {937, 1}, + {1367, 2}, + {1367, 1}, + {1178, 3}, + {1178, 2}, + {1178, 3}, + {1178, 3}, + {1178, 4}, + {1178, 6}, + {962, 1}, + {962, 1}, + {962, 1}, + {1062, 0}, + {1062, 3}, + {1473, 0}, + {1473, 3}, {1392, 0}, {1392, 3}, - {1419, 0}, - {1419, 2}, - {1418, 0}, - {1418, 2}, - {1167, 1}, - {1094, 1}, - {1094, 3}, - {1013, 2}, - {1239, 6}, - {1239, 7}, - {1239, 10}, - {1239, 11}, - {1239, 6}, - {1239, 7}, - {1239, 4}, - {1239, 5}, - {1239, 6}, - {1420, 0}, - {1420, 3}, - {1406, 0}, - {1406, 1}, - {1463, 3}, - {1463, 1}, - {1280, 3}, - {1279, 0}, - {1279, 1}, - {1279, 1}, - {1279, 1}, - {880, 1}, - {880, 1}, - {880, 1}, - {880, 1}, - {880, 1}, - {880, 1}, - {880, 1}, - {880, 1}, - {880, 1}, - {880, 1}, - {880, 1}, - {880, 1}, - {880, 1}, - {880, 1}, - {880, 1}, - {1425, 1}, - {1425, 1}, - {1425, 1}, - {1425, 1}, - {881, 1}, - {1426, 1}, - {1426, 3}, - {1432, 0}, - {1432, 2}, - {1244, 4}, - {1244, 5}, - {1244, 6}, - {1430, 1}, - {1430, 1}, - {1431, 1}, - {1431, 3}, - {1245, 1}, - {1245, 1}, - {1245, 2}, - {1245, 1}, - {1242, 1}, - {1242, 3}, - {1408, 0}, - {1408, 1}, - {876, 2}, - {870, 5}, - {869, 2}, - {1433, 0}, - {1433, 2}, - {1433, 1}, - {1429, 1}, - {1429, 3}, - {1428, 0}, - {1428, 1}, - {1427, 2}, + {1213, 0}, + {1213, 2}, + {1394, 3}, + {1394, 1}, + {1212, 3}, + {1211, 0}, + {1211, 2}, + {1393, 1}, + {1393, 3}, + {1210, 1}, + {1210, 3}, + {1195, 9}, + {1306, 2}, + {1217, 3}, + {1301, 1}, + {1301, 1}, + {1298, 2}, + {1395, 1}, + {1395, 2}, + {1395, 1}, + {1395, 2}, + {1486, 1}, + {1486, 3}, + {1219, 6}, + {1459, 1}, + {1459, 1}, + {1459, 1}, + {1459, 1}, + {1357, 0}, + {1357, 2}, + {1357, 3}, + {1411, 0}, + {1411, 2}, + {1205, 2}, + {1205, 3}, + {1205, 3}, + {1205, 2}, + {1204, 1}, + {1204, 2}, + {1214, 3}, + {1216, 3}, + {1216, 5}, + {1216, 7}, + {1305, 3}, + {1305, 5}, + {1305, 7}, + {1159, 5}, + {1143, 6}, + {1113, 6}, + {1162, 5}, + {1141, 7}, + {1111, 6}, + {1145, 6}, + {1349, 0}, + {1349, 1}, + {1456, 1}, + {1456, 2}, + {1020, 3}, + {1020, 3}, + {1020, 3}, + {1020, 3}, + {1020, 3}, + {1020, 1}, + {1020, 2}, + {1020, 3}, + {1020, 1}, + {1020, 2}, + {1020, 3}, + {1020, 1}, + {1020, 2}, + {1020, 1}, + {1020, 1}, + {1020, 2}, + {917, 1}, + {917, 2}, + {917, 2}, + {1164, 4}, + {1115, 5}, + {1320, 1}, + {1320, 2}, + {1114, 1}, + {1114, 1}, + {1114, 3}, + {1114, 3}, + {1196, 8}, + {1400, 0}, + {1400, 2}, + {1399, 0}, + {1399, 3}, + {1426, 0}, + {1426, 2}, + {1425, 0}, + {1425, 2}, + {1173, 1}, + {1100, 1}, + {1100, 3}, + {1019, 2}, + {1245, 6}, + {1245, 7}, + {1245, 10}, + {1245, 11}, + {1245, 6}, + {1245, 7}, + {1245, 4}, + {1245, 5}, + {1245, 6}, + {1427, 0}, {1427, 3}, - {1434, 0}, - {1434, 3}, - {935, 2}, - {935, 3}, - {866, 4}, - {871, 4}, - {1246, 4}, - {1423, 0}, - {1423, 2}, - {1423, 2}, - {868, 1}, - {868, 1}, - {1460, 1}, - {1460, 2}, - {1445, 1}, - {1445, 2}, - {1276, 4}, - {1265, 4}, - {1165, 0}, - {1165, 2}, - {879, 6}, - {878, 5}, - {882, 1}, - {867, 6}, - {867, 6}, - {873, 4}, - {1243, 0}, - {1243, 1}, - {874, 4}, - {872, 2}, + {1413, 0}, + {1413, 1}, + {1470, 3}, + {1470, 1}, + {1286, 3}, + {1285, 0}, + {1285, 1}, + {1285, 1}, + {1285, 1}, + {886, 1}, + {886, 1}, + {886, 1}, + {886, 1}, + {886, 1}, + {886, 1}, + {886, 1}, + {886, 1}, + {886, 1}, + {886, 1}, + {886, 1}, + {886, 1}, + {886, 1}, + {886, 1}, + {886, 1}, + {1432, 1}, + {1432, 1}, + {1432, 1}, + {1432, 1}, + {887, 1}, + {1433, 1}, + {1433, 3}, + {1439, 0}, + {1439, 2}, + {1250, 4}, + {1250, 5}, + {1250, 6}, + {1437, 1}, + {1437, 1}, + {1438, 1}, + {1438, 3}, + {1251, 1}, + {1251, 1}, + {1251, 2}, + {1251, 1}, + {1248, 1}, + {1248, 3}, + {1415, 0}, + {1415, 1}, + {882, 2}, + {876, 5}, {875, 2}, - {877, 1}, - {877, 1}, - {877, 1}, - {877, 1}, - {877, 1}, - {877, 1}, - {877, 1}, - {877, 1}, - {877, 1}, - {877, 1}, - {877, 1}, - {877, 1}, - {1136, 8}, - {1154, 4}, - {1116, 3}, - {1329, 0}, - {1329, 1}, - {1329, 1}, - {1352, 1}, - {1352, 2}, - {1352, 3}, - {1042, 3}, - {1042, 3}, - {1042, 3}, - {1042, 5}, - {1330, 2}, - {1330, 2}, - {1330, 2}, - {1330, 2}, - {1330, 2}, - {1099, 4}, + {1440, 0}, + {1440, 2}, + {1440, 1}, + {1436, 1}, + {1436, 3}, + {1435, 0}, {1435, 1}, - {1435, 2}, - {1435, 3}, - {1073, 3}, - {1073, 3}, - {1073, 3}, - {1073, 1}, - {1074, 3}, - {1074, 3}, - {1074, 5}, - {1155, 4}, + {1434, 2}, + {1434, 3}, + {1441, 0}, + {1441, 3}, + {942, 2}, + {942, 3}, + {872, 4}, + {877, 4}, + {1252, 4}, + {1430, 0}, + {1430, 2}, + {1430, 2}, + {874, 1}, + {874, 1}, + {1467, 1}, + {1467, 2}, + {1452, 1}, + {1452, 2}, + {1282, 4}, + {1271, 4}, + {1171, 0}, + {1171, 2}, + {885, 6}, + {884, 5}, + {888, 1}, + {873, 6}, + {873, 6}, + {879, 4}, + {1249, 0}, + {1249, 1}, + {880, 4}, + {878, 2}, + {881, 2}, + {883, 1}, + {883, 1}, + {883, 1}, + {883, 1}, + {883, 1}, + {883, 1}, + {883, 1}, + {883, 1}, + {883, 1}, + {883, 1}, + {883, 1}, + {883, 1}, + {1142, 8}, + {1160, 4}, + {1122, 3}, + {1336, 0}, + {1336, 1}, + {1336, 1}, + {1359, 1}, + {1359, 2}, + {1359, 3}, + {1048, 3}, + {1048, 3}, + {1048, 3}, + {1048, 5}, + {1337, 2}, + {1337, 2}, + {1337, 2}, + {1337, 2}, + {1337, 2}, + {1105, 4}, + {1442, 1}, + {1442, 2}, + {1442, 3}, + {1079, 3}, + {1079, 3}, + {1079, 3}, + {1079, 1}, + {1080, 3}, + {1080, 3}, + {1080, 5}, + {1161, 4}, } yyXErrors = map[yyXError]string{} - yyParseTab = [4917][]uint16{ + yyParseTab = [4944][]uint16{ // 0 - {2314, 2314, 3: 2861, 58: 2884, 84: 2863, 2866, 87: 2896, 2864, 3017, 103: 2898, 117: 3031, 159: 3033, 187: 2881, 195: 2879, 208: 3024, 222: 2892, 250: 2887, 254: 2869, 259: 2917, 266: 2883, 269: 2859, 277: 2916, 3027, 2865, 284: 3032, 296: 2895, 306: 2893, 308: 2860, 310: 2899, 330: 2885, 334: 2888, 341: 2897, 344: 2882, 357: 2874, 531: 2907, 2906, 547: 2905, 552: 2891, 557: 2915, 562: 3026, 575: 3020, 577: 2877, 582: 2875, 587: 2890, 608: 2904, 695: 2900, 710: 3030, 713: 2862, 3019, 724: 2857, 727: 2868, 743: 2867, 766: 2914, 2858, 775: 2911, 803: 2870, 806: 2913, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 2873, 817: 2995, 2994, 822: 3018, 2871, 2976, 826: 2988, 3004, 2876, 833: 2872, 839: 2934, 845: 2928, 2932, 2985, 2996, 857: 2936, 2878, 860: 3003, 3005, 894: 3023, 897: 2880, 904: 2921, 933: 3029, 943: 2929, 957: 3021, 962: 2979, 965: 2990, 967: 2993, 2886, 1035: 2941, 1090: 3025, 1099: 2949, 2919, 1102: 2920, 2923, 1105: 2926, 2924, 2927, 1109: 2925, 1111: 2922, 1113: 2930, 2931, 1116: 2937, 2889, 2974, 3014, 1121: 2938, 1132: 2945, 2939, 2940, 2946, 2947, 2948, 2944, 2950, 2951, 1142: 2943, 2942, 1145: 2933, 2894, 1148: 2952, 2966, 2953, 2954, 3015, 2957, 2956, 2962, 2961, 2963, 2958, 2964, 2965, 2955, 2960, 2959, 1166: 2918, 1169: 2935, 1174: 2970, 2968, 1177: 2969, 2967, 1182: 2972, 2973, 2971, 1188: 3010, 2975, 2977, 1198: 3028, 2978, 1208: 2980, 1210: 2981, 3007, 1213: 3011, 1237: 3012, 1239: 2983, 2984, 1248: 2989, 1251: 2986, 2987, 1258: 3009, 3013, 3022, 2992, 2991, 1268: 2997, 1270: 2999, 2998, 1273: 3001, 1275: 3008, 1278: 3000, 1284: 3016, 1298: 3002, 2982, 3006, 1465: 2855, 1468: 2856}, - {1: 2854}, - {7769, 2853}, - {18: 7722, 51: 7721, 217: 7718, 244: 7723, 316: 7719, 549: 4675, 591: 7720, 608: 2115, 644: 6649, 929: 7717, 958: 4674}, - {217: 7702, 608: 7701}, + {2328, 2328, 3: 2878, 58: 2901, 84: 2880, 2883, 87: 2913, 2881, 3034, 103: 2915, 117: 3048, 159: 3050, 187: 2898, 197: 2896, 210: 3041, 223: 2909, 250: 2904, 254: 2886, 259: 2934, 266: 2900, 269: 2876, 277: 2933, 3044, 2882, 284: 3049, 296: 2912, 306: 2910, 308: 2877, 310: 2916, 331: 2902, 335: 2905, 342: 2914, 345: 2899, 358: 2891, 536: 2924, 2923, 552: 2922, 557: 2908, 560: 2932, 567: 3043, 580: 3037, 582: 2894, 587: 2892, 592: 2907, 613: 2921, 661: 2917, 715: 3047, 718: 2879, 3036, 729: 2874, 732: 2885, 748: 2884, 772: 2931, 2875, 781: 2928, 809: 2887, 812: 2930, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 2890, 3012, 3011, 827: 3035, 829: 2888, 2993, 3005, 3021, 834: 2893, 839: 2889, 845: 2951, 851: 2945, 2949, 3002, 3013, 863: 2953, 2895, 866: 3020, 3022, 900: 3040, 903: 2897, 910: 2938, 940: 3046, 950: 2946, 963: 3038, 968: 2996, 971: 3007, 973: 3010, 2903, 1041: 2958, 1096: 3042, 1105: 2966, 2936, 1108: 2937, 2940, 1111: 2943, 2941, 2944, 1115: 2942, 1117: 2939, 1119: 2947, 2948, 1122: 2954, 2906, 2991, 3031, 1127: 2955, 1138: 2962, 2956, 2957, 2963, 2964, 2965, 2961, 2967, 2968, 1148: 2960, 2959, 1151: 2950, 2911, 1154: 2969, 2983, 2970, 2971, 3032, 2974, 2973, 2979, 2978, 2980, 2975, 2981, 2982, 2972, 2977, 2976, 1172: 2935, 1175: 2952, 1180: 2987, 2985, 1183: 2986, 2984, 1188: 2989, 2990, 2988, 1194: 3027, 2992, 2994, 1204: 3045, 2995, 1214: 2997, 1216: 2998, 3024, 1219: 3028, 1243: 3029, 1245: 3000, 3001, 1254: 3006, 1257: 3003, 3004, 1264: 3026, 3030, 3039, 3009, 3008, 1274: 3014, 1276: 3016, 3015, 1279: 3018, 1281: 3025, 1284: 3017, 1290: 3033, 1304: 3019, 2999, 3023, 1472: 2872, 1475: 2873}, + {1: 2871}, + {7813, 2870}, + {18: 7766, 51: 7765, 218: 7762, 244: 7767, 316: 7763, 554: 4698, 596: 7764, 613: 2129, 649: 6682, 936: 7761, 964: 4697}, + {218: 7746, 613: 7745}, // 5 - {608: 7695}, - {375: 7679, 608: 7680, 644: 6649, 929: 7681}, - {427: 7660, 546: 7661, 608: 2659, 1462: 7659}, - {397: 7615, 608: 7614}, - {2627, 2627, 413: 7613, 420: 7612}, + {613: 7739}, + {377: 7717, 613: 7718, 649: 6682, 936: 7719}, + {430: 7698, 551: 7699, 613: 2673, 1469: 7697}, + {399: 7653, 613: 7652}, + {2641, 2641, 416: 7651, 423: 7650}, // 10 - {453: 7601}, - {533: 7600}, - {2594, 2594, 86: 6564, 566: 6562, 897: 6563, 1129: 7599}, - {18: 2365, 51: 7129, 102: 2365, 132: 2365, 181: 2365, 202: 790, 206: 7046, 216: 6150, 7126, 224: 7127, 244: 7130, 6806, 273: 7118, 567: 7125, 608: 2333, 644: 6649, 696: 2365, 705: 7120, 710: 2472, 747: 7122, 929: 7123, 964: 7131, 1049: 7128, 1065: 6149, 1374: 7119, 1412: 7124, 1461: 7121}, - {18: 7053, 51: 7054, 132: 7047, 157: 2333, 202: 790, 206: 7046, 7044, 216: 6150, 7048, 222: 1233, 224: 7049, 7050, 244: 7055, 6806, 273: 7041, 608: 2333, 644: 6649, 710: 7043, 894: 7051, 929: 7042, 964: 7056, 1049: 7052, 1065: 7045}, + {457: 7639}, + {538: 7638}, + {2608, 2608, 86: 6597, 571: 6595, 903: 6596, 1135: 7637}, + {18: 2379, 51: 7165, 102: 2379, 132: 2379, 181: 2379, 196: 7163, 204: 791, 208: 7082, 217: 6181, 7162, 244: 7166, 6840, 273: 7154, 572: 7161, 613: 2347, 649: 6682, 662: 2379, 710: 7156, 715: 2486, 752: 7158, 936: 7159, 970: 7167, 1055: 7164, 1071: 6180, 1381: 7155, 1419: 7160, 1468: 7157}, + {18: 7089, 51: 7090, 132: 7083, 157: 2347, 196: 7085, 204: 791, 208: 7082, 7080, 217: 6181, 7084, 223: 1241, 225: 7086, 244: 7091, 6840, 273: 7077, 613: 2347, 649: 6682, 715: 7079, 900: 7087, 936: 7078, 970: 7092, 1055: 7088, 1071: 7081}, // 15 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3842, 863: 7040}, - {2: 1052, 1052, 1052, 1052, 1052, 1052, 1052, 10: 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 58: 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 549: 1052, 561: 1052, 836: 1052, 1052, 1052, 840: 5956, 969: 5957, 1019: 7028}, - {2342, 2342}, - {2341, 2341}, - {531: 2907, 547: 2905, 608: 2904, 695: 2900, 714: 3019, 775: 3854, 803: 2870, 806: 3853, 2901, 2902, 2903, 2912, 2910, 3855, 3856, 822: 5705, 5703, 833: 5704}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3865, 869: 7076}, + {2: 1060, 1060, 1060, 1060, 1060, 1060, 1060, 10: 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 58: 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 554: 1060, 566: 1060, 842: 1060, 1060, 1060, 846: 5979, 975: 5980, 1025: 7064}, + {2356, 2356}, + {2355, 2355}, + {536: 2924, 552: 2922, 613: 2921, 661: 2917, 719: 3036, 781: 3877, 809: 2887, 812: 3876, 2918, 2919, 2920, 2929, 2927, 3878, 3879, 827: 5728, 829: 5726, 839: 5727}, // 20 - {84: 2863, 2866, 87: 2896, 2864, 117: 7001, 195: 2879, 232: 7000, 531: 2907, 2906, 547: 2905, 552: 2891, 557: 7004, 587: 2890, 608: 2904, 695: 2900, 713: 2862, 3019, 775: 7002, 803: 2870, 806: 7003, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 2873, 817: 7010, 7009, 822: 3018, 2871, 7007, 826: 7008, 7006, 833: 2872, 839: 7005, 845: 7018, 7013, 7016, 7017, 894: 7019, 897: 2880, 943: 7012, 962: 7011, 965: 7015, 967: 7014, 1022: 6999}, - {2: 2309, 2309, 2309, 2309, 2309, 2309, 2309, 10: 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 58: 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 531: 2309, 2309, 547: 2309, 552: 2309, 558: 2309, 587: 2309, 608: 2309, 695: 2309, 713: 2309, 2309, 724: 2309, 803: 2309}, - {2: 2308, 2308, 2308, 2308, 2308, 2308, 2308, 10: 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 58: 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 531: 2308, 2308, 547: 2308, 552: 2308, 558: 2308, 587: 2308, 608: 2308, 695: 2308, 713: 2308, 2308, 724: 2308, 803: 2308}, - {2: 2307, 2307, 2307, 2307, 2307, 2307, 2307, 10: 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 58: 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 531: 2307, 2307, 547: 2307, 552: 2307, 558: 2307, 587: 2307, 608: 2307, 695: 2307, 713: 2307, 2307, 724: 2307, 803: 2307}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 6968, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 531: 2907, 2906, 547: 2905, 552: 2891, 558: 6967, 587: 2890, 608: 2904, 695: 2900, 713: 6969, 3019, 724: 4646, 770: 3927, 3051, 3052, 3050, 775: 4647, 803: 2870, 6965, 806: 4648, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 2873, 817: 4654, 4653, 822: 3018, 2871, 4651, 826: 4652, 4650, 833: 2872, 839: 4649, 904: 4655, 920: 6966}, + {84: 2880, 2883, 87: 2913, 2881, 117: 7037, 197: 2896, 232: 7036, 536: 2924, 2923, 552: 2922, 557: 2908, 560: 7040, 592: 2907, 613: 2921, 661: 2917, 718: 2879, 3036, 781: 7038, 809: 2887, 812: 7039, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 2890, 7046, 7045, 827: 3035, 829: 2888, 7043, 7044, 7042, 839: 2889, 845: 7041, 851: 7054, 7049, 7052, 7053, 900: 7055, 903: 2897, 950: 7048, 968: 7047, 971: 7051, 973: 7050, 1028: 7035}, + {2: 2323, 2323, 2323, 2323, 2323, 2323, 2323, 10: 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 58: 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 536: 2323, 2323, 552: 2323, 557: 2323, 563: 2323, 592: 2323, 613: 2323, 661: 2323, 718: 2323, 2323, 729: 2323, 809: 2323}, + {2: 2322, 2322, 2322, 2322, 2322, 2322, 2322, 10: 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 58: 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 536: 2322, 2322, 552: 2322, 557: 2322, 563: 2322, 592: 2322, 613: 2322, 661: 2322, 718: 2322, 2322, 729: 2322, 809: 2322}, + {2: 2321, 2321, 2321, 2321, 2321, 2321, 2321, 10: 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 58: 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 536: 2321, 2321, 552: 2321, 557: 2321, 563: 2321, 592: 2321, 613: 2321, 661: 2321, 718: 2321, 2321, 729: 2321, 809: 2321}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 7004, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 536: 2924, 2923, 552: 2922, 557: 2908, 563: 7003, 592: 2907, 613: 2921, 661: 2917, 718: 7005, 3036, 729: 4669, 777: 3950, 3068, 3069, 3067, 4670, 809: 2887, 7001, 812: 4671, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 2890, 4677, 4676, 827: 3035, 829: 2888, 4674, 4675, 4673, 839: 2889, 845: 4672, 910: 4678, 926: 7002}, // 25 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6964, 3051, 3052, 3050}, - {195: 6962}, - {155: 6955, 608: 6653, 644: 6649, 929: 6652, 1115: 6954}, - {187: 6952}, - {187: 6945, 894: 6946}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 7000, 3068, 3069, 3067}, + {197: 6998}, + {156: 6991, 613: 6686, 649: 6682, 936: 6685, 1121: 6990}, + {187: 6988}, + {187: 6981, 900: 6982}, // 30 - {187: 6939, 894: 6940}, - {187: 6934}, - {16: 4418, 18: 6767, 30: 6797, 6796, 92: 6776, 131: 783, 154: 783, 156: 790, 783, 180: 790, 187: 6755, 206: 6805, 208: 6768, 240: 6765, 245: 6806, 248: 790, 260: 6807, 267: 6791, 783, 281: 6756, 302: 6788, 314: 6781, 329: 6787, 362: 6780, 367: 6803, 369: 6785, 6766, 376: 6783, 6801, 379: 6774, 386: 6772, 6790, 391: 6778, 394: 6789, 6760, 6800, 398: 6770, 405: 6761, 423: 6764, 6763, 430: 6804, 436: 6792, 439: 6798, 6795, 6799, 6794, 454: 6784, 553: 4419, 608: 6759, 655: 6779, 709: 4417, 6769, 713: 6802, 743: 6758, 853: 6775, 964: 6786, 1015: 6793, 1049: 6782, 1055: 6771, 1144: 6773, 1222: 6762, 1453: 6777, 1459: 6757}, - {208: 6750, 281: 6749}, - {421: 6651, 608: 6653, 644: 6649, 929: 6652, 1115: 6650}, + {187: 6975, 900: 6976}, + {187: 6970}, + {16: 4441, 18: 6801, 30: 6831, 6830, 92: 6810, 131: 784, 154: 784, 791, 157: 784, 180: 791, 187: 6788, 208: 6839, 210: 6802, 240: 6799, 245: 6840, 248: 791, 260: 6841, 267: 6825, 784, 281: 6789, 302: 6822, 314: 6815, 330: 6821, 363: 6814, 368: 6837, 371: 6819, 6800, 378: 6817, 6835, 381: 6808, 388: 6806, 6824, 393: 6812, 396: 6823, 6793, 6834, 400: 6804, 409: 6794, 426: 6798, 6797, 433: 6838, 440: 6826, 443: 6832, 6829, 6833, 6828, 458: 6818, 558: 4442, 591: 6795, 613: 6792, 660: 6813, 714: 4440, 6803, 718: 6836, 748: 6791, 859: 6809, 970: 6820, 1021: 6827, 1055: 6816, 1061: 6805, 1150: 6807, 1228: 6796, 1460: 6811, 1466: 6790}, + {210: 6783, 281: 6782}, + {424: 6684, 613: 6686, 649: 6682, 936: 6685, 1121: 6683}, // 35 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 6638, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6640, 3051, 3052, 3050, 1424: 6639}, - {2: 1052, 1052, 1052, 1052, 1052, 1052, 1052, 10: 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 58: 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 549: 1052, 559: 1052, 836: 1052, 1052, 1052, 840: 5956, 969: 5957, 1019: 6625}, - {2: 1256, 1256, 1256, 1256, 1256, 1256, 1256, 10: 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 58: 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 559: 1256, 836: 5961, 5960, 5959, 934: 5962, 990: 6590}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6585, 3051, 3052, 3050}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6579, 3051, 3052, 3050}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 6671, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6673, 3068, 3069, 3067, 1431: 6672}, + {2: 1060, 1060, 1060, 1060, 1060, 1060, 1060, 10: 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 58: 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 554: 1060, 565: 1060, 842: 1060, 1060, 1060, 846: 5979, 975: 5980, 1025: 6658}, + {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, 1264, 1264, 1264, 1264, 1264, 58: 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 565: 1264, 842: 5984, 5983, 5982, 941: 5985, 996: 6623}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6618, 3068, 3069, 3067}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6612, 3068, 3069, 3067}, // 40 - {222: 6577}, - {222: 1234}, - {1232, 1232, 86: 6564, 566: 6562, 712: 6561, 897: 6563, 1129: 6560}, - {1221, 1221}, - {1220, 1220}, + {223: 6610}, + {223: 1242}, + {1240, 1240, 86: 6597, 571: 6595, 717: 6594, 903: 6596, 1135: 6593}, + {1229, 1229}, + {1228, 1228}, // 45 - {533: 6559}, - {2: 1057, 1057, 1057, 1057, 1057, 1057, 1057, 10: 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 58: 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 6529, 6535, 6536, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 531: 1057, 533: 1057, 1057, 1057, 1057, 540: 1057, 1057, 543: 1057, 1057, 1057, 547: 1057, 1057, 552: 1057, 1057, 560: 1057, 573: 6532, 578: 1057, 584: 1057, 586: 1057, 1057, 614: 1057, 617: 1057, 628: 1057, 1057, 1057, 1057, 636: 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 697: 1057, 1057, 1057, 1057, 711: 1057, 715: 4174, 829: 4172, 4173, 836: 5961, 5960, 5959, 840: 5956, 849: 6528, 6531, 6527, 885: 6447, 887: 6525, 934: 6526, 969: 6524, 1266: 6534, 6530, 1447: 6523, 6533}, - {424, 424, 57: 424, 530: 424, 532: 424, 539: 424, 542: 424, 550: 424, 424, 554: 424, 556: 424, 558: 424, 424, 561: 6498, 424, 4661, 424, 571: 424, 889: 4662, 6499, 1365: 6497}, - {1047, 1047, 57: 1047, 530: 1047, 532: 1047, 539: 1047, 542: 1047, 550: 1047, 1047, 554: 1047, 556: 1047, 558: 1047, 1047, 562: 1047, 564: 1047, 571: 6485, 1050: 6487, 1080: 6486}, - {1499, 1499, 57: 1499, 530: 1499, 532: 1499, 539: 1499, 542: 1499, 550: 1499, 1499, 554: 1499, 556: 1499, 558: 1499, 1499, 562: 1499, 564: 3857, 842: 3911, 909: 6481}, + {538: 6592}, + {2: 1065, 1065, 1065, 1065, 1065, 1065, 1065, 10: 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 58: 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 6562, 6568, 6569, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 536: 1065, 538: 1065, 1065, 1065, 1065, 545: 1065, 1065, 548: 1065, 1065, 1065, 552: 1065, 1065, 557: 1065, 1065, 564: 1065, 578: 6565, 583: 1065, 589: 1065, 591: 1065, 1065, 624: 1065, 631: 1065, 633: 1065, 1065, 1065, 1065, 641: 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 663: 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 716: 1065, 721: 4197, 835: 4195, 4196, 842: 5984, 5983, 5982, 846: 5979, 855: 6561, 6564, 6560, 891: 6480, 893: 6558, 941: 6559, 975: 6557, 1272: 6567, 6563, 1454: 6556, 6566}, + {425, 425, 57: 425, 535: 425, 537: 425, 544: 425, 547: 425, 555: 425, 425, 559: 425, 562: 425, 425, 565: 425, 6531, 425, 4684, 425, 576: 425, 895: 4685, 6532, 1372: 6530}, + {1055, 1055, 57: 1055, 535: 1055, 537: 1055, 544: 1055, 547: 1055, 555: 1055, 1055, 559: 1055, 562: 1055, 1055, 565: 1055, 567: 1055, 569: 1055, 576: 6518, 1056: 6520, 1086: 6519}, + {1508, 1508, 57: 1508, 535: 1508, 537: 1508, 544: 1508, 547: 1508, 555: 1508, 1508, 559: 1508, 562: 1508, 1508, 565: 1508, 567: 1508, 569: 3880, 848: 3934, 915: 6514}, // 50 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 6476}, - {639: 3892, 1013: 3891, 1094: 3890}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6463, 3051, 3052, 3050, 1034: 6462, 1308: 6460, 1436: 6461}, - {531: 2907, 2906, 547: 2905, 608: 2904, 695: 2900, 775: 6459, 806: 3847, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 3846, 817: 3849, 3848}, - {1028, 1028, 57: 1028, 530: 1028, 532: 1028, 542: 1028}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 6509}, + {644: 3915, 1019: 3914, 1100: 3913}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6496, 3068, 3069, 3067, 1040: 6495, 1314: 6493, 1443: 6494}, + {536: 2924, 2923, 552: 2922, 613: 2921, 661: 2917, 781: 6492, 812: 3870, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 3869, 3872, 3871}, + {1036, 1036, 57: 1036, 535: 1036, 537: 1036, 547: 1036}, // 55 - {1027, 1027, 57: 1027, 530: 1027, 532: 1027, 542: 1027}, - {539: 6444, 550: 6445, 6446, 1450: 6443}, - {674, 674, 539: 1013, 550: 1013, 1013, 554: 3859, 556: 3858, 564: 3857, 842: 3860, 3861}, - {539: 1016, 550: 1016, 1016}, - {676, 676, 539: 1014, 550: 1014, 1014}, + {1035, 1035, 57: 1035, 535: 1035, 537: 1035, 547: 1035}, + {544: 6477, 555: 6478, 6479, 1457: 6476}, + {675, 675, 544: 1021, 555: 1021, 1021, 559: 3882, 562: 3881, 569: 3880, 848: 3883, 3884}, + {544: 1024, 555: 1024, 1024}, + {677, 677, 544: 1022, 555: 1022, 1022}, // 60 - {302: 6428, 329: 6427}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 6265, 6260, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 6266, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 6263, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 6270, 3069, 3070, 3102, 6262, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 6267, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 6268, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 6261, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 6271, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 6269, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 6264, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 535: 6273, 553: 4419, 628: 6277, 652: 6276, 709: 4417, 770: 6274, 3051, 3052, 3050, 853: 6278, 926: 6275, 1096: 6279, 1302: 6272}, - {17: 6125, 58: 6128, 250: 6126, 259: 6132, 266: 6127, 6130, 269: 6123, 6131, 285: 6133, 333: 6129, 373: 6124, 388: 6134, 429: 6135, 702: 6122, 968: 6121}, - {23: 762, 155: 762, 762, 762, 173: 5251, 240: 762, 246: 762, 257: 762, 275: 762, 288: 762, 309: 762, 313: 762, 586: 762, 608: 762, 908: 5250, 924: 6094}, - {753, 753}, + {302: 6461, 330: 6460}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 6298, 6293, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 6299, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 6296, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 6300, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 6303, 3087, 3088, 3120, 6295, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 6301, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 6294, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 6304, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 6302, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 6297, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 540: 6306, 558: 4442, 633: 6310, 657: 6309, 714: 4440, 777: 6307, 3068, 3069, 3067, 859: 6311, 932: 6308, 1102: 6312, 1308: 6305}, + {17: 6148, 58: 6151, 250: 6149, 259: 6155, 266: 6150, 6153, 269: 6146, 6154, 285: 6156, 334: 6152, 375: 6147, 390: 6157, 432: 6158, 560: 6159, 709: 6145, 974: 6144}, + {23: 763, 155: 763, 763, 763, 173: 5274, 240: 763, 246: 763, 257: 763, 275: 763, 288: 763, 309: 763, 313: 763, 591: 763, 613: 763, 914: 5273, 930: 6117}, + {754, 754}, // 65 + {753, 753}, {752, 752}, {751, 751}, {750, 750}, {749, 749}, - {748, 748}, // 70 + {748, 748}, {747, 747}, {746, 746}, {745, 745}, {744, 744}, - {743, 743}, // 75 + {743, 743}, {742, 742}, {741, 741}, {740, 740}, {739, 739}, - {738, 738}, // 80 + {738, 738}, {737, 737}, {736, 736}, {735, 735}, {734, 734}, - {733, 733}, // 85 + {733, 733}, {732, 732}, {731, 731}, {730, 730}, {729, 729}, - {728, 728}, // 90 + {728, 728}, {727, 727}, {726, 726}, {725, 725}, {724, 724}, - {723, 723}, // 95 + {723, 723}, {722, 722}, {721, 721}, {720, 720}, {719, 719}, - {718, 718}, // 100 + {718, 718}, {717, 717}, {716, 716}, {715, 715}, {714, 714}, - {713, 713}, // 105 + {713, 713}, {712, 712}, {711, 711}, {710, 710}, {709, 709}, - {708, 708}, // 110 + {708, 708}, {707, 707}, {706, 706}, {705, 705}, {704, 704}, - {703, 703}, // 115 + {703, 703}, {702, 702}, {701, 701}, {700, 700}, {699, 699}, - {698, 698}, // 120 + {698, 698}, {697, 697}, {696, 696}, {695, 695}, {694, 694}, - {693, 693}, // 125 + {693, 693}, {692, 692}, {691, 691}, {690, 690}, {689, 689}, - {688, 688}, // 130 + {688, 688}, {687, 687}, {686, 686}, {685, 685}, {684, 684}, - {683, 683}, // 135 + {683, 683}, {682, 682}, {681, 681}, {680, 680}, {679, 679}, - {678, 678}, // 140 - {677, 677}, - {675, 675}, + {678, 678}, + {676, 676}, + {674, 674}, {673, 673}, {672, 672}, - {671, 671}, // 145 + {671, 671}, {670, 670}, {669, 669}, {668, 668}, {667, 667}, - {666, 666}, // 150 + {666, 666}, {665, 665}, {664, 664}, {663, 663}, {662, 662}, - {661, 661}, // 155 + {661, 661}, {660, 660}, {659, 659}, {658, 658}, {657, 657}, - {656, 656}, // 160 + {656, 656}, {655, 655}, - {654, 654}, - {628, 628}, - {2: 571, 571, 571, 571, 571, 571, 571, 10: 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 58: 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 608: 6091, 1407: 6092}, - {430, 430, 542: 430}, + {629, 629}, + {2: 572, 572, 572, 572, 572, 572, 572, 10: 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, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 58: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 572, 572, 572, 572, 572, 572, 572, 572, 572, 613: 6114, 1414: 6115}, + {431, 431, 547: 431}, // 165 - {2: 1052, 1052, 1052, 1052, 1052, 1052, 1052, 10: 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 58: 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 531: 1052, 549: 1052, 643: 1052, 836: 1052, 1052, 1052, 840: 5956, 969: 5957, 1019: 5958}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 5954, 3051, 3052, 3050, 907: 5955}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 5797, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 5799, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 5805, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 5801, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 5798, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 5806, 3226, 3477, 5800, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 5803, 5907, 3135, 3379, 5804, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 5802, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 5808, 562: 5831, 587: 5825, 695: 5814, 707: 5829, 710: 5824, 714: 5827, 5818, 724: 5819, 727: 5823, 743: 5820, 770: 3737, 3051, 3052, 3050, 803: 5822, 805: 5807, 894: 5813, 898: 5809, 957: 5828, 968: 5826, 1045: 5810, 1071: 5811, 5817, 1078: 5812, 5815, 1088: 5821, 1092: 5830, 1263: 5908}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 5797, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 5799, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 5805, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 5801, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 5798, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 5806, 3226, 3477, 5800, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 5803, 3134, 3135, 3379, 5804, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 5802, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 5808, 562: 5831, 587: 5825, 695: 5814, 707: 5829, 710: 5824, 714: 5827, 5818, 724: 5819, 727: 5823, 743: 5820, 770: 3737, 3051, 3052, 3050, 803: 5822, 805: 5807, 894: 5813, 898: 5809, 957: 5828, 968: 5826, 1045: 5810, 1071: 5811, 5817, 1078: 5812, 5815, 1088: 5821, 1092: 5830, 1263: 5816}, - {22: 5771, 225: 5772}, + {2: 1060, 1060, 1060, 1060, 1060, 1060, 1060, 10: 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 58: 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 536: 1060, 554: 1060, 648: 1060, 842: 1060, 1060, 1060, 846: 5979, 975: 5980, 1025: 5981}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 5977, 3068, 3069, 3067, 913: 5978}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 5820, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 5822, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 5828, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 5824, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 5821, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 5829, 3246, 3498, 5823, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 5826, 5930, 3154, 3400, 5827, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 5825, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 5831, 567: 5854, 592: 5848, 661: 5837, 712: 5852, 715: 5847, 719: 5850, 721: 5841, 729: 5842, 732: 5846, 748: 5843, 777: 3760, 3068, 3069, 3067, 809: 5845, 811: 5830, 900: 5836, 904: 5832, 963: 5851, 974: 5849, 1051: 5833, 1077: 5834, 5840, 1084: 5835, 5838, 1094: 5844, 1098: 5853, 1269: 5931}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 5820, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 5822, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 5828, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 5824, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 5821, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 5829, 3246, 3498, 5823, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 5826, 3153, 3154, 3400, 5827, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 5825, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 5831, 567: 5854, 592: 5848, 661: 5837, 712: 5852, 715: 5847, 719: 5850, 721: 5841, 729: 5842, 732: 5846, 748: 5843, 777: 3760, 3068, 3069, 3067, 809: 5845, 811: 5830, 900: 5836, 904: 5832, 963: 5851, 974: 5849, 1051: 5833, 1077: 5834, 5840, 1084: 5835, 5838, 1094: 5844, 1098: 5853, 1269: 5839}, + {22: 5794, 225: 5795}, // 170 - {559: 5736}, - {157: 5707, 225: 5728, 608: 5708, 1295: 5727}, - {157: 5707, 225: 5709, 608: 5708, 1295: 5706}, - {530: 5689, 556: 210, 1404: 5688}, - {28: 5683, 56: 5210, 159: 5684, 531: 5681, 560: 3037, 799: 5682, 999: 5685}, + {565: 5759}, + {157: 5730, 225: 5751, 613: 5731, 1301: 5750}, + {157: 5730, 225: 5732, 613: 5731, 1301: 5729}, + {535: 5712, 562: 210, 1411: 5711}, + {28: 5706, 56: 5233, 159: 5707, 536: 5704, 564: 3054, 805: 5705, 1005: 5708}, // 175 - {28: 204, 56: 204, 159: 204, 275: 5680, 531: 204, 560: 204}, - {363: 5663}, - {428: 4628}, - {51: 4602}, - {134: 3034}, + {28: 204, 56: 204, 159: 204, 275: 5703, 536: 204, 564: 204}, + {364: 5686}, + {431: 4651}, + {51: 4625}, + {134: 3051}, // 180 - {2: 3036, 769: 3035}, - {51: 3041, 93: 3042, 117: 3045, 696: 3044, 1073: 3040, 3043, 1435: 3039}, - {560: 3037, 799: 3038}, - {2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 15: 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 60: 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 94: 2224, 2224, 2224, 98: 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 118: 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 133: 2224, 137: 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 163: 2224, 2224, 2224, 2224, 213: 2224, 220: 2224, 235: 2224, 239: 2224, 263: 2224, 303: 2224, 530: 2224, 2224, 2224, 535: 2224, 537: 2224, 2224, 2224, 542: 2224, 546: 2224, 2224, 549: 2224, 2224, 2224, 2224, 2224, 2224, 556: 2224, 2224, 2224, 2224, 562: 2224, 2224, 565: 2224, 575: 2224, 577: 2224, 2224, 582: 2224, 587: 2224, 2224, 608: 2224, 614: 2224, 617: 2224, 639: 2224, 695: 2224, 709: 2224, 2224, 713: 2224, 2224, 720: 2224, 722: 2224, 803: 2224, 828: 2224, 831: 2224, 834: 2224, 2224}, + {2: 3053, 775: 3052}, + {51: 3058, 93: 3059, 117: 3062, 662: 3061, 1079: 3057, 3060, 1442: 3056}, + {564: 3054, 805: 3055}, + {2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 15: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 60: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 94: 2238, 2238, 2238, 98: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 118: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 133: 2238, 137: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 163: 2238, 2238, 2238, 2238, 214: 2238, 221: 2238, 235: 2238, 239: 2238, 263: 2238, 303: 2238, 535: 2238, 2238, 2238, 540: 2238, 542: 2238, 2238, 2238, 547: 2238, 551: 2238, 2238, 554: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 562: 2238, 2238, 565: 2238, 567: 2238, 2238, 570: 2238, 580: 2238, 582: 2238, 2238, 587: 2238, 592: 2238, 2238, 613: 2238, 624: 2238, 631: 2238, 644: 2238, 661: 2238, 714: 2238, 2238, 718: 2238, 2238, 725: 2238, 727: 2238, 809: 2238, 834: 2238, 837: 2238, 840: 2238, 2238}, {1, 1}, // 185 - {12, 12, 9: 4600, 51: 3041, 93: 3042, 117: 3045, 696: 3044, 1073: 4599, 3043}, - {11, 11, 9: 11, 51: 11, 93: 11, 117: 11, 696: 11}, - {571: 4594}, - {229: 2316, 231: 2316, 555: 4588, 802: 4589, 933: 2316}, - {5, 5, 9: 5, 51: 5, 93: 5, 117: 5, 696: 5}, + {12, 12, 9: 4623, 51: 3058, 93: 3059, 117: 3062, 662: 3061, 1079: 4622, 3060}, + {11, 11, 9: 11, 51: 11, 93: 11, 117: 11, 662: 11}, + {576: 4617}, + {229: 2330, 231: 2330, 561: 4611, 808: 4612, 940: 2330}, + {5, 5, 9: 5, 51: 5, 93: 5, 117: 5, 662: 5}, // 190 - {198: 4580, 218: 4579}, - {218: 3046}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3616, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3592, 3597, 3679, 3596, 3593}, - {1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 4576, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 532: 1786, 1786, 1786, 536: 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 549: 1786, 1786, 1786, 554: 1786, 1786, 1786, 1786, 1786, 1786, 561: 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 579: 1786, 1786, 1786, 1786, 1786, 1786, 1786, 588: 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 609: 1786, 1786, 1786, 1786, 1786, 615: 1786, 1786, 618: 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 632: 1786, 1786, 1786, 1786, 696: 1786, 703: 1786, 716: 1786, 718: 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, 4573, 1785, 1785, 1785, 536: 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 549: 1785, 1785, 1785, 554: 1785, 1785, 1785, 1785, 1785, 1785, 561: 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 579: 1785, 1785, 1785, 1785, 1785, 1785, 1785, 588: 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 609: 1785, 1785, 1785, 1785, 1785, 615: 1785, 1785, 618: 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 632: 1785, 1785, 1785, 1785, 696: 1785, 703: 1785, 716: 1785, 718: 1785, 1785}, + {200: 4603, 219: 4602}, + {219: 3063}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3638, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3614, 3619, 3701, 3618, 3615}, + {1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 4599, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 537: 1796, 1796, 1796, 541: 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 554: 1796, 1796, 1796, 559: 1796, 1796, 1796, 1796, 1796, 565: 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 584: 1796, 1796, 1796, 1796, 1796, 1796, 1796, 593: 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 614: 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 625: 1796, 1796, 1796, 1796, 1796, 1796, 632: 1796, 637: 1796, 1796, 1796, 1796, 662: 1796, 707: 1796, 720: 1796, 723: 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, 4596, 1795, 1795, 1795, 541: 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 554: 1795, 1795, 1795, 559: 1795, 1795, 1795, 1795, 1795, 565: 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 584: 1795, 1795, 1795, 1795, 1795, 1795, 1795, 593: 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 614: 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 625: 1795, 1795, 1795, 1795, 1795, 1795, 632: 1795, 637: 1795, 1795, 1795, 1795, 662: 1795, 707: 1795, 720: 1795, 723: 1795, 1795}, // 195 - {2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 4570, 2090, 2090, 2090, 536: 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 549: 2090, 2090, 2090, 554: 2090, 2090, 2090, 2090, 2090, 2090, 561: 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 579: 2090, 2090, 2090, 2090, 2090, 2090, 2090, 588: 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 609: 2090, 2090, 2090, 2090, 2090, 615: 2090, 2090, 618: 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 632: 2090, 2090, 2090, 2090, 696: 2090, 703: 2090, 716: 2090, 718: 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, 774: 2089}, - {2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 774: 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, 774: 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, 774: 2086}, + {2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 4593, 2104, 2104, 2104, 541: 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 554: 2104, 2104, 2104, 559: 2104, 2104, 2104, 2104, 2104, 565: 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 584: 2104, 2104, 2104, 2104, 2104, 2104, 2104, 593: 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 614: 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 625: 2104, 2104, 2104, 2104, 2104, 2104, 632: 2104, 637: 2104, 2104, 2104, 2104, 662: 2104, 707: 2104, 720: 2104, 723: 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}, + {2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 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}, + {2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100}, // 200 - {2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 774: 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, 1435, 2084, 2084, 2084, 536: 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 549: 2084, 2084, 2084, 554: 2084, 2084, 2084, 2084, 2084, 2084, 561: 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 579: 2084, 2084, 2084, 2084, 2084, 2084, 2084, 588: 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 609: 2084, 2084, 2084, 2084, 2084, 615: 2084, 2084, 618: 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 632: 2084, 2084, 2084, 2084, 696: 2084, 703: 2084, 716: 2084, 718: 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, 774: 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, 774: 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, 774: 2081}, + {2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 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, 1444, 2098, 2098, 2098, 541: 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 554: 2098, 2098, 2098, 559: 2098, 2098, 2098, 2098, 2098, 565: 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 584: 2098, 2098, 2098, 2098, 2098, 2098, 2098, 593: 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 614: 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 625: 2098, 2098, 2098, 2098, 2098, 2098, 632: 2098, 637: 2098, 2098, 2098, 2098, 662: 2098, 707: 2098, 720: 2098, 723: 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}, + {2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 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}, // 205 - {2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 774: 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, 774: 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, 774: 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, 774: 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, 774: 2076}, + {2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 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}, + {2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 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}, + {2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090}, // 210 - {2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 774: 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, 774: 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, 774: 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, 4565, 2072, 2072, 2072, 536: 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 549: 2072, 2072, 2072, 554: 2072, 2072, 2072, 2072, 2072, 2072, 561: 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 579: 2072, 2072, 2072, 2072, 2072, 2072, 2072, 588: 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 609: 2072, 2072, 2072, 2072, 2072, 615: 2072, 2072, 618: 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 632: 2072, 2072, 2072, 2072, 696: 2072, 703: 2072, 716: 2072, 718: 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, 774: 2071}, + {2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089}, + {2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088}, + {2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 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, 4588, 2086, 2086, 2086, 541: 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 554: 2086, 2086, 2086, 559: 2086, 2086, 2086, 2086, 2086, 565: 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 584: 2086, 2086, 2086, 2086, 2086, 2086, 2086, 593: 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 614: 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 625: 2086, 2086, 2086, 2086, 2086, 2086, 632: 2086, 637: 2086, 2086, 2086, 2086, 662: 2086, 707: 2086, 720: 2086, 723: 2086, 2086}, + {2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085}, // 215 - {2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 774: 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, 774: 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, 774: 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, 774: 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, 774: 2066}, + {2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 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}, + {2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 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}, + {2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080}, // 220 - {2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 774: 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, 774: 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, 774: 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, 774: 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, 774: 2061}, + {2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 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}, + {2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 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}, + {2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075}, // 225 - {2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 1434, 2060, 2060, 2060, 536: 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 549: 2060, 2060, 2060, 554: 2060, 2060, 2060, 2060, 2060, 2060, 561: 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 579: 2060, 2060, 2060, 2060, 2060, 2060, 2060, 588: 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 609: 2060, 2060, 2060, 2060, 2060, 615: 2060, 2060, 618: 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 632: 2060, 2060, 2060, 2060, 696: 2060, 703: 2060, 716: 2060, 718: 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, 774: 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, 774: 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, 774: 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, 774: 2056}, + {2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 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, 1443, 2073, 2073, 2073, 541: 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 554: 2073, 2073, 2073, 559: 2073, 2073, 2073, 2073, 2073, 565: 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 584: 2073, 2073, 2073, 2073, 2073, 2073, 2073, 593: 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 614: 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 625: 2073, 2073, 2073, 2073, 2073, 2073, 632: 2073, 637: 2073, 2073, 2073, 2073, 662: 2073, 707: 2073, 720: 2073, 723: 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}, + {2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 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}, // 230 - {2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 774: 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, 774: 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, 774: 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, 774: 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, 774: 2051}, + {2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 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}, + {2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 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}, + {2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065}, // 235 - {2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 774: 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, 1431, 2049, 4564, 2049, 536: 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 549: 2049, 2049, 2049, 554: 2049, 2049, 2049, 2049, 2049, 2049, 561: 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 579: 2049, 2049, 2049, 2049, 2049, 2049, 2049, 588: 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 609: 2049, 2049, 2049, 2049, 2049, 615: 2049, 2049, 618: 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 632: 2049, 2049, 2049, 2049, 696: 2049, 703: 2049, 716: 2049, 718: 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, 774: 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, 1429, 2047, 2047, 2047, 536: 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 549: 2047, 2047, 2047, 554: 2047, 2047, 2047, 2047, 2047, 2047, 561: 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 579: 2047, 2047, 2047, 2047, 2047, 2047, 2047, 588: 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 609: 2047, 2047, 2047, 2047, 2047, 615: 2047, 2047, 618: 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 632: 2047, 2047, 2047, 2047, 696: 2047, 703: 2047, 716: 2047, 718: 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, 774: 2046}, + {2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 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}, + {2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 1440, 2062, 4587, 2062, 541: 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 554: 2062, 2062, 2062, 559: 2062, 2062, 2062, 2062, 2062, 565: 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 584: 2062, 2062, 2062, 2062, 2062, 2062, 2062, 593: 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 614: 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 625: 2062, 2062, 2062, 2062, 2062, 2062, 632: 2062, 637: 2062, 2062, 2062, 2062, 662: 2062, 707: 2062, 720: 2062, 723: 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}, + {2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 1438, 2060, 2060, 2060, 541: 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 554: 2060, 2060, 2060, 559: 2060, 2060, 2060, 2060, 2060, 565: 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 584: 2060, 2060, 2060, 2060, 2060, 2060, 2060, 593: 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 614: 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 625: 2060, 2060, 2060, 2060, 2060, 2060, 632: 2060, 637: 2060, 2060, 2060, 2060, 662: 2060, 707: 2060, 720: 2060, 723: 2060, 2060}, // 240 - {2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 774: 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, 774: 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, 774: 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, 774: 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, 774: 2041}, + {2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059}, + {2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058}, + {2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 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}, + {2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055}, // 245 - {2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 774: 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, 774: 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, 774: 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, 774: 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, 774: 2036}, + {2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 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}, + {2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 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}, + {2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050}, // 250 - {2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 774: 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, 774: 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, 774: 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, 774: 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, 774: 2031}, + {2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049}, + {2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048}, + {2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 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}, + {2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045}, // 255 - {2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 774: 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, 774: 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, 774: 2028}, - {2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 774: 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, 774: 2026}, + {2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 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}, + {2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 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}, + {2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040}, // 260 - {2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 774: 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, 1425, 2024, 2024, 2024, 536: 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 549: 2024, 2024, 2024, 554: 2024, 2024, 2024, 2024, 2024, 2024, 561: 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 579: 2024, 2024, 2024, 2024, 2024, 2024, 2024, 588: 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 609: 2024, 2024, 2024, 2024, 2024, 615: 2024, 2024, 618: 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 632: 2024, 2024, 2024, 2024, 696: 2024, 703: 2024, 716: 2024, 718: 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, 774: 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, 774: 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, 774: 2021}, + {2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 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}, + {2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 1433, 2037, 2037, 2037, 541: 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 554: 2037, 2037, 2037, 559: 2037, 2037, 2037, 2037, 2037, 565: 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 584: 2037, 2037, 2037, 2037, 2037, 2037, 2037, 593: 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 614: 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 625: 2037, 2037, 2037, 2037, 2037, 2037, 632: 2037, 637: 2037, 2037, 2037, 2037, 662: 2037, 707: 2037, 720: 2037, 723: 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}, + {2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035}, // 265 - {2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 774: 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, 774: 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, 1428, 2018, 2018, 2018, 536: 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 549: 2018, 2018, 2018, 554: 2018, 2018, 2018, 2018, 2018, 2018, 561: 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 579: 2018, 2018, 2018, 2018, 2018, 2018, 2018, 588: 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 609: 2018, 2018, 2018, 2018, 2018, 615: 2018, 2018, 618: 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 632: 2018, 2018, 2018, 2018, 696: 2018, 703: 2018, 716: 2018, 718: 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, 774: 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, 774: 2016}, + {2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 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}, + {2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 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, 1437, 2031, 2031, 2031, 541: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 554: 2031, 2031, 2031, 559: 2031, 2031, 2031, 2031, 2031, 565: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 584: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 593: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 614: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 625: 2031, 2031, 2031, 2031, 2031, 2031, 632: 2031, 637: 2031, 2031, 2031, 2031, 662: 2031, 707: 2031, 720: 2031, 723: 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}, // 270 - {2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 774: 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, 774: 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, 774: 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, 774: 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, 774: 2011}, + {2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 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}, + {2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027}, + {2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026}, + {2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025}, // 275 - {2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 774: 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, 774: 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, 4561, 2008, 2008, 2008, 536: 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 549: 2008, 2008, 2008, 554: 2008, 2008, 2008, 2008, 2008, 2008, 561: 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 579: 2008, 2008, 2008, 2008, 2008, 2008, 2008, 588: 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 609: 2008, 2008, 2008, 2008, 2008, 615: 2008, 2008, 618: 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 632: 2008, 2008, 2008, 2008, 696: 2008, 703: 2008, 716: 2008, 718: 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, 774: 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, 774: 2006}, + {2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 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}, + {2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 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}, + {2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 4584, 2020, 2020, 2020, 541: 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 554: 2020, 2020, 2020, 559: 2020, 2020, 2020, 2020, 2020, 565: 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 584: 2020, 2020, 2020, 2020, 2020, 2020, 2020, 593: 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 614: 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 625: 2020, 2020, 2020, 2020, 2020, 2020, 632: 2020, 637: 2020, 2020, 2020, 2020, 662: 2020, 707: 2020, 720: 2020, 723: 2020, 2020}, // 280 - {2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 774: 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, 774: 2004}, - {2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 774: 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, 774: 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, 774: 2001}, + {2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019}, + {2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018}, + {2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 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}, + {2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015}, // 285 - {2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1996}, + {2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 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}, + {2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 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}, + {2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010}, // 290 - {1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1991}, + {2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009}, + {2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008}, + {2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 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}, + {2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005}, // 295 - {1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 774: 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, 774: 1989}, - {1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 774: 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, 1419, 1987, 1987, 1987, 536: 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 549: 1987, 1987, 1987, 554: 1987, 1987, 1987, 1987, 1987, 1987, 561: 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 579: 1987, 1987, 1987, 1987, 1987, 1987, 1987, 588: 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 609: 1987, 1987, 1987, 1987, 1987, 615: 1987, 1987, 618: 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 632: 1987, 1987, 1987, 1987, 696: 1987, 703: 1987, 716: 1987, 718: 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, 774: 1986}, + {2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004}, + {2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003}, + {2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 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}, + {2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000}, // 300 - {1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1981}, + {1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1427, 1999, 1999, 1999, 541: 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 554: 1999, 1999, 1999, 559: 1999, 1999, 1999, 1999, 1999, 565: 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 584: 1999, 1999, 1999, 1999, 1999, 1999, 1999, 593: 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 614: 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 625: 1999, 1999, 1999, 1999, 1999, 1999, 632: 1999, 637: 1999, 1999, 1999, 1999, 662: 1999, 707: 1999, 720: 1999, 723: 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}, + {1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 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}, + {1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995}, // 305 - {1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1411, 1980, 4560, 1980, 536: 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 549: 1980, 1980, 1980, 554: 1980, 1980, 1980, 1980, 1980, 1980, 561: 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 579: 1980, 1980, 1980, 1980, 1980, 1980, 1980, 588: 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 609: 1980, 1980, 1980, 1980, 1980, 615: 1980, 1980, 618: 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 632: 1980, 1980, 1980, 1980, 696: 1980, 703: 1980, 716: 1980, 718: 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, 1410, 1979, 4559, 1979, 536: 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 549: 1979, 1979, 1979, 554: 1979, 1979, 1979, 1979, 1979, 1979, 561: 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 579: 1979, 1979, 1979, 1979, 1979, 1979, 1979, 588: 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 609: 1979, 1979, 1979, 1979, 1979, 615: 1979, 1979, 618: 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 632: 1979, 1979, 1979, 1979, 696: 1979, 703: 1979, 716: 1979, 718: 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, 774: 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, 774: 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, 1409, 1976, 1976, 1976, 536: 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 549: 1976, 1976, 1976, 554: 1976, 1976, 1976, 1976, 1976, 1976, 561: 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 579: 1976, 1976, 1976, 1976, 1976, 1976, 1976, 588: 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 609: 1976, 1976, 1976, 1976, 1976, 615: 1976, 1976, 618: 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 632: 1976, 1976, 1976, 1976, 696: 1976, 703: 1976, 716: 1976, 718: 1976, 1976}, + {1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 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}, + {1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1419, 1992, 4583, 1992, 541: 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 554: 1992, 1992, 1992, 559: 1992, 1992, 1992, 1992, 1992, 565: 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 584: 1992, 1992, 1992, 1992, 1992, 1992, 1992, 593: 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 614: 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 625: 1992, 1992, 1992, 1992, 1992, 1992, 632: 1992, 637: 1992, 1992, 1992, 1992, 662: 1992, 707: 1992, 720: 1992, 723: 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, 1418, 1991, 4582, 1991, 541: 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 554: 1991, 1991, 1991, 559: 1991, 1991, 1991, 1991, 1991, 565: 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 584: 1991, 1991, 1991, 1991, 1991, 1991, 1991, 593: 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 614: 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 625: 1991, 1991, 1991, 1991, 1991, 1991, 632: 1991, 637: 1991, 1991, 1991, 1991, 662: 1991, 707: 1991, 720: 1991, 723: 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}, // 310 - {1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 774: 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, 774: 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, 774: 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, 774: 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, 1406, 1971, 1971, 1971, 536: 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 549: 1971, 1971, 1971, 554: 1971, 1971, 1971, 1971, 1971, 1971, 561: 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 579: 1971, 1971, 1971, 1971, 1971, 1971, 1971, 588: 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 609: 1971, 1971, 1971, 1971, 1971, 615: 1971, 1971, 618: 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 632: 1971, 1971, 1971, 1971, 696: 1971, 703: 1971, 716: 1971, 718: 1971, 1971}, + {1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 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, 1417, 1988, 1988, 1988, 541: 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 554: 1988, 1988, 1988, 559: 1988, 1988, 1988, 1988, 1988, 565: 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 584: 1988, 1988, 1988, 1988, 1988, 1988, 1988, 593: 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 614: 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 625: 1988, 1988, 1988, 1988, 1988, 1988, 632: 1988, 637: 1988, 1988, 1988, 1988, 662: 1988, 707: 1988, 720: 1988, 723: 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}, + {1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 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}, // 315 - {1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 774: 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, 1407, 1969, 1969, 1969, 536: 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 549: 1969, 1969, 1969, 554: 1969, 1969, 1969, 1969, 1969, 1969, 561: 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 579: 1969, 1969, 1969, 1969, 1969, 1969, 1969, 588: 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 609: 1969, 1969, 1969, 1969, 1969, 615: 1969, 1969, 618: 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 632: 1969, 1969, 1969, 1969, 696: 1969, 703: 1969, 716: 1969, 718: 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, 4549, 1968, 1968, 1968, 536: 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 549: 1968, 1968, 1968, 554: 1968, 1968, 1968, 1968, 1968, 1968, 561: 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 579: 1968, 1968, 1968, 1968, 1968, 1968, 1968, 588: 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 609: 1968, 1968, 1968, 1968, 1968, 615: 1968, 1968, 618: 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 632: 1968, 1968, 1968, 1968, 696: 1968, 703: 1968, 716: 1968, 718: 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, 774: 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, 774: 1966}, + {1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 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}, + {1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1414, 1982, 1982, 1982, 541: 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 554: 1982, 1982, 1982, 559: 1982, 1982, 1982, 1982, 1982, 565: 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 584: 1982, 1982, 1982, 1982, 1982, 1982, 1982, 593: 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 614: 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 625: 1982, 1982, 1982, 1982, 1982, 1982, 632: 1982, 637: 1982, 1982, 1982, 1982, 662: 1982, 707: 1982, 720: 1982, 723: 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}, + {1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1415, 1980, 1980, 1980, 541: 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 554: 1980, 1980, 1980, 559: 1980, 1980, 1980, 1980, 1980, 565: 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 584: 1980, 1980, 1980, 1980, 1980, 1980, 1980, 593: 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 614: 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 625: 1980, 1980, 1980, 1980, 1980, 1980, 632: 1980, 637: 1980, 1980, 1980, 1980, 662: 1980, 707: 1980, 720: 1980, 723: 1980, 1980}, // 320 - {1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1408, 1965, 1965, 1965, 536: 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 549: 1965, 1965, 1965, 554: 1965, 1965, 1965, 1965, 1965, 1965, 561: 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 579: 1965, 1965, 1965, 1965, 1965, 1965, 1965, 588: 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 609: 1965, 1965, 1965, 1965, 1965, 615: 1965, 1965, 618: 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 632: 1965, 1965, 1965, 1965, 696: 1965, 703: 1965, 716: 1965, 718: 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, 774: 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, 1432, 1963, 1963, 1963, 536: 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 549: 1963, 1963, 1963, 554: 1963, 1963, 1963, 1963, 1963, 1963, 561: 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 579: 1963, 1963, 1963, 1963, 1963, 1963, 1963, 588: 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 609: 1963, 1963, 1963, 1963, 1963, 615: 1963, 1963, 618: 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 632: 1963, 1963, 1963, 1963, 696: 1963, 703: 1963, 716: 1963, 718: 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, 774: 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, 774: 1961}, + {1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 4572, 1979, 1979, 1979, 541: 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 554: 1979, 1979, 1979, 559: 1979, 1979, 1979, 1979, 1979, 565: 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 584: 1979, 1979, 1979, 1979, 1979, 1979, 1979, 593: 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 614: 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 625: 1979, 1979, 1979, 1979, 1979, 1979, 632: 1979, 637: 1979, 1979, 1979, 1979, 662: 1979, 707: 1979, 720: 1979, 723: 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}, + {1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 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, 1416, 1976, 1976, 1976, 541: 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 554: 1976, 1976, 1976, 559: 1976, 1976, 1976, 1976, 1976, 565: 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 584: 1976, 1976, 1976, 1976, 1976, 1976, 1976, 593: 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 614: 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 625: 1976, 1976, 1976, 1976, 1976, 1976, 632: 1976, 637: 1976, 1976, 1976, 1976, 662: 1976, 707: 1976, 720: 1976, 723: 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}, // 325 - {1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1956}, + {1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1441, 1974, 1974, 1974, 541: 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 554: 1974, 1974, 1974, 559: 1974, 1974, 1974, 1974, 1974, 565: 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 584: 1974, 1974, 1974, 1974, 1974, 1974, 1974, 593: 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 614: 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 625: 1974, 1974, 1974, 1974, 1974, 1974, 632: 1974, 637: 1974, 1974, 1974, 1974, 662: 1974, 707: 1974, 720: 1974, 723: 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}, + {1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 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}, + {1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970}, // 330 - {1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1951}, + {1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 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}, + {1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 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}, + {1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965}, // 335 - {1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1418, 1950, 1950, 1950, 536: 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 549: 1950, 1950, 1950, 554: 1950, 1950, 1950, 1950, 1950, 1950, 561: 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 579: 1950, 1950, 1950, 1950, 1950, 1950, 1950, 588: 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 609: 1950, 1950, 1950, 1950, 1950, 615: 1950, 1950, 618: 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 632: 1950, 1950, 1950, 1950, 696: 1950, 703: 1950, 716: 1950, 718: 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, 774: 1949}, - {1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 774: 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, 774: 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, 774: 1946}, + {1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 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}, + {1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 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, 1426, 1961, 1961, 1961, 541: 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 554: 1961, 1961, 1961, 559: 1961, 1961, 1961, 1961, 1961, 565: 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 584: 1961, 1961, 1961, 1961, 1961, 1961, 1961, 593: 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 614: 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 625: 1961, 1961, 1961, 1961, 1961, 1961, 632: 1961, 637: 1961, 1961, 1961, 1961, 662: 1961, 707: 1961, 720: 1961, 723: 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}, // 340 - {1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1941}, + {1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 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}, + {1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 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}, + {1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955}, // 345 - {1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1936}, + {1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 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}, + {1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 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}, + {1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950}, // 350 - {1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1931}, + {1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949}, + {1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948}, + {1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 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}, + {1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945}, // 355 - {1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 774: 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, 774: 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, 774: 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, 1415, 1927, 1927, 1927, 536: 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 549: 1927, 1927, 1927, 554: 1927, 1927, 1927, 1927, 1927, 1927, 561: 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 579: 1927, 1927, 1927, 1927, 1927, 1927, 1927, 588: 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 609: 1927, 1927, 1927, 1927, 1927, 615: 1927, 1927, 618: 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 632: 1927, 1927, 1927, 1927, 696: 1927, 703: 1927, 716: 1927, 718: 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, 774: 1926}, + {1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 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}, + {1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 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}, + {1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940}, // 360 - {1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1921}, + {1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 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, 1423, 1938, 1938, 1938, 541: 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 554: 1938, 1938, 1938, 559: 1938, 1938, 1938, 1938, 1938, 565: 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 584: 1938, 1938, 1938, 1938, 1938, 1938, 1938, 593: 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 614: 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 625: 1938, 1938, 1938, 1938, 1938, 1938, 632: 1938, 637: 1938, 1938, 1938, 1938, 662: 1938, 707: 1938, 720: 1938, 723: 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}, + {1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 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}, // 365 - {1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1916}, + {1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 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}, + {1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 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}, + {1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930}, // 370 - {1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1911}, + {1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 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}, + {1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 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}, + {1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925}, // 375 - {1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1413, 1910, 1910, 1910, 536: 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 549: 1910, 1910, 1910, 554: 1910, 1910, 1910, 1910, 1910, 1910, 561: 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 579: 1910, 1910, 1910, 1910, 1910, 1910, 1910, 588: 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 609: 1910, 1910, 1910, 1910, 1910, 615: 1910, 1910, 618: 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 632: 1910, 1910, 1910, 1910, 696: 1910, 703: 1910, 716: 1910, 718: 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, 1433, 1909, 1909, 1909, 536: 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 549: 1909, 1909, 1909, 554: 1909, 1909, 1909, 1909, 1909, 1909, 561: 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 579: 1909, 1909, 1909, 1909, 1909, 1909, 1909, 588: 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 609: 1909, 1909, 1909, 1909, 1909, 615: 1909, 1909, 618: 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 632: 1909, 1909, 1909, 1909, 696: 1909, 703: 1909, 716: 1909, 718: 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, 1421, 1908, 1908, 1908, 536: 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 549: 1908, 1908, 1908, 554: 1908, 1908, 1908, 1908, 1908, 1908, 561: 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 579: 1908, 1908, 1908, 1908, 1908, 1908, 1908, 588: 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 609: 1908, 1908, 1908, 1908, 1908, 615: 1908, 1908, 618: 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 632: 1908, 1908, 1908, 1908, 696: 1908, 703: 1908, 716: 1908, 718: 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, 774: 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, 774: 1906}, + {1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 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}, + {1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 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, 1421, 1921, 1921, 1921, 541: 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 554: 1921, 1921, 1921, 559: 1921, 1921, 1921, 1921, 1921, 565: 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 584: 1921, 1921, 1921, 1921, 1921, 1921, 1921, 593: 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 614: 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 625: 1921, 1921, 1921, 1921, 1921, 1921, 632: 1921, 637: 1921, 1921, 1921, 1921, 662: 1921, 707: 1921, 720: 1921, 723: 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, 1442, 1920, 1920, 1920, 541: 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 554: 1920, 1920, 1920, 559: 1920, 1920, 1920, 1920, 1920, 565: 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 584: 1920, 1920, 1920, 1920, 1920, 1920, 1920, 593: 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 614: 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 625: 1920, 1920, 1920, 1920, 1920, 1920, 632: 1920, 637: 1920, 1920, 1920, 1920, 662: 1920, 707: 1920, 720: 1920, 723: 1920, 1920}, // 380 - {1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 774: 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, 1423, 1904, 1904, 1904, 536: 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 549: 1904, 1904, 1904, 554: 1904, 1904, 1904, 1904, 1904, 1904, 561: 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 579: 1904, 1904, 1904, 1904, 1904, 1904, 1904, 588: 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 609: 1904, 1904, 1904, 1904, 1904, 615: 1904, 1904, 618: 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 632: 1904, 1904, 1904, 1904, 696: 1904, 703: 1904, 716: 1904, 718: 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, 1422, 1903, 1903, 1903, 536: 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 549: 1903, 1903, 1903, 554: 1903, 1903, 1903, 1903, 1903, 1903, 561: 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 579: 1903, 1903, 1903, 1903, 1903, 1903, 1903, 588: 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 609: 1903, 1903, 1903, 1903, 1903, 615: 1903, 1903, 618: 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 632: 1903, 1903, 1903, 1903, 696: 1903, 703: 1903, 716: 1903, 718: 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, 774: 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, 774: 1901}, + {1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1429, 1919, 1919, 1919, 541: 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 554: 1919, 1919, 1919, 559: 1919, 1919, 1919, 1919, 1919, 565: 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 584: 1919, 1919, 1919, 1919, 1919, 1919, 1919, 593: 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 614: 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 625: 1919, 1919, 1919, 1919, 1919, 1919, 632: 1919, 637: 1919, 1919, 1919, 1919, 662: 1919, 707: 1919, 720: 1919, 723: 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}, + {1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 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}, + {1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1431, 1915, 1915, 1915, 541: 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 554: 1915, 1915, 1915, 559: 1915, 1915, 1915, 1915, 1915, 565: 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 584: 1915, 1915, 1915, 1915, 1915, 1915, 1915, 593: 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 614: 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 625: 1915, 1915, 1915, 1915, 1915, 1915, 632: 1915, 637: 1915, 1915, 1915, 1915, 662: 1915, 707: 1915, 720: 1915, 723: 1915, 1915}, // 385 - {1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 774: 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, 774: 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, 774: 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, 1412, 1897, 1897, 1897, 536: 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 549: 1897, 1897, 1897, 554: 1897, 1897, 1897, 1897, 1897, 1897, 561: 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 579: 1897, 1897, 1897, 1897, 1897, 1897, 1897, 588: 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 609: 1897, 1897, 1897, 1897, 1897, 615: 1897, 1897, 618: 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 632: 1897, 1897, 1897, 1897, 696: 1897, 703: 1897, 716: 1897, 718: 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, 774: 1896}, + {1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1430, 1914, 1914, 1914, 541: 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 554: 1914, 1914, 1914, 559: 1914, 1914, 1914, 1914, 1914, 565: 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 584: 1914, 1914, 1914, 1914, 1914, 1914, 1914, 593: 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 614: 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 625: 1914, 1914, 1914, 1914, 1914, 1914, 632: 1914, 637: 1914, 1914, 1914, 1914, 662: 1914, 707: 1914, 720: 1914, 723: 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}, + {1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 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}, + {1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910}, // 390 - {1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1891}, + {1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 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, 1420, 1908, 1908, 1908, 541: 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 554: 1908, 1908, 1908, 559: 1908, 1908, 1908, 1908, 1908, 565: 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 584: 1908, 1908, 1908, 1908, 1908, 1908, 1908, 593: 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 614: 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 625: 1908, 1908, 1908, 1908, 1908, 1908, 632: 1908, 637: 1908, 1908, 1908, 1908, 662: 1908, 707: 1908, 720: 1908, 723: 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}, + {1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 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}, // 395 - {1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1886}, + {1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 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}, + {1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 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}, + {1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900}, // 400 - {1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1881}, + {1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 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}, + {1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 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}, + {1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895}, // 405 - {1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1876}, + {1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 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}, + {1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 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}, + {1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890}, // 410 - {1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1871}, + {1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 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}, + {1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 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}, + {1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885}, // 415 - {1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1866}, + {1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 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}, + {1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 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}, + {1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880}, // 420 - {1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1861}, + {1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 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}, + {1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 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}, + {1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875}, // 425 - {1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1856}, + {1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 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}, + {1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 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}, + {1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870}, // 430 - {1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1851}, + {1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 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}, + {1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 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}, + {1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865}, // 435 - {1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1846}, + {1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 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}, + {1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 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}, + {1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860}, // 440 - {1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1841}, + {1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 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}, + {1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 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}, + {1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855}, // 445 - {1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1836}, + {1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 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}, + {1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 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}, + {1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850}, // 450 - {1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1831}, + {1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 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}, + {1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 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}, + {1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845}, // 455 - {1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1826}, + {1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 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}, + {1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 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}, + {1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840}, // 460 - {1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1821}, + {1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 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}, + {1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 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}, + {1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835}, // 465 - {1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1816}, + {1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 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}, + {1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 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}, + {1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830}, // 470 - {1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1811}, + {1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 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}, + {1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 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}, + {1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825}, // 475 - {1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1806}, + {1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 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}, + {1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 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}, + {1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820}, // 480 - {1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1801}, + {1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 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}, + {1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 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}, + {1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815}, // 485 - {1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1796}, + {1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 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}, + {1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 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}, + {1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810}, // 490 - {1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1791}, + {1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 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}, + {1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 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}, + {1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805}, // 495 - {1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 774: 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, 774: 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, 774: 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, 774: 1787}, - {1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 4546, 1784, 1784, 1784, 536: 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 549: 1784, 1784, 1784, 554: 1784, 1784, 1784, 1784, 1784, 1784, 561: 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 579: 1784, 1784, 1784, 1784, 1784, 1784, 1784, 588: 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 609: 1784, 1784, 1784, 1784, 1784, 615: 1784, 1784, 618: 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 632: 1784, 1784, 1784, 1784, 696: 1784, 703: 1784, 716: 1784, 718: 1784, 1784}, + {1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 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}, + {1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 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}, + {1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800}, // 500 - {1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 4535, 1783, 1783, 1783, 536: 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 549: 1783, 1783, 1783, 554: 1783, 1783, 1783, 1783, 1783, 1783, 561: 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 579: 1783, 1783, 1783, 1783, 1783, 1783, 1783, 588: 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 609: 1783, 1783, 1783, 1783, 1783, 615: 1783, 1783, 618: 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 632: 1783, 1783, 1783, 1783, 696: 1783, 703: 1783, 716: 1783, 718: 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, 774: 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, 774: 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, 774: 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, 774: 1779}, + {1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 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}, + {1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797}, + {1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 4569, 1794, 1794, 1794, 541: 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 554: 1794, 1794, 1794, 559: 1794, 1794, 1794, 1794, 1794, 565: 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 584: 1794, 1794, 1794, 1794, 1794, 1794, 1794, 593: 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 614: 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 625: 1794, 1794, 1794, 1794, 1794, 1794, 632: 1794, 637: 1794, 1794, 1794, 1794, 662: 1794, 707: 1794, 720: 1794, 723: 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, 4558, 1793, 1793, 1793, 541: 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 554: 1793, 1793, 1793, 559: 1793, 1793, 1793, 1793, 1793, 565: 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 584: 1793, 1793, 1793, 1793, 1793, 1793, 1793, 593: 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 614: 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 625: 1793, 1793, 1793, 1793, 1793, 1793, 632: 1793, 637: 1793, 1793, 1793, 1793, 662: 1793, 707: 1793, 720: 1793, 723: 1793, 1793}, // 505 - {1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1774}, + {1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 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}, + {1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 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}, + {1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788}, // 510 - {1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1769}, + {1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 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}, + {1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 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}, + {1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783}, // 515 - {1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1764}, + {1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 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}, + {1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 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}, + {1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778}, // 520 - {1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1759}, + {1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 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}, + {1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 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}, + {1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773}, // 525 - {1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1754}, + {1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 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}, + {1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 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}, + {1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768}, // 530 - {1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1749}, + {1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 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}, + {1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 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}, + {1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763}, // 535 - {1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1744}, + {1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 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}, + {1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 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}, + {1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758}, // 540 - {1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1739}, + {1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 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}, + {1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 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}, + {1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753}, // 545 - {1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1734}, + {1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 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}, + {1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 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}, + {1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748}, // 550 - {1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1729}, + {1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 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}, + {1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 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}, + {1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743}, // 555 - {1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1724}, + {1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 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}, + {1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 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}, + {1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738}, // 560 - {1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1719}, + {1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 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}, + {1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 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}, + {1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733}, // 565 - {1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1714}, + {1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 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}, + {1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 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}, + {1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728}, // 570 - {1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1709}, + {1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 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}, + {1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 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}, + {1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723}, // 575 - {1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 774: 1708}, - {1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 774: 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, 774: 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, 774: 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, 774: 1704}, + {1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 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}, + {1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 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}, + {1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718}, // 580 - {1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1699}, + {1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 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}, + {1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 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}, + {1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713}, // 585 - {1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1694}, + {1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 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}, + {1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 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}, + {1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708}, // 590 - {1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1689}, + {1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707}, + {1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706}, + {1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 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}, + {1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703}, // 595 - {1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1684}, + {1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 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}, + {1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 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}, + {1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698}, // 600 - {1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1679}, + {1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 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}, + {1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 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}, + {1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693}, // 605 - {1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 774: 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, 1350, 1677, 1677, 1677, 536: 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 549: 1677, 1677, 1677, 554: 1677, 1677, 1677, 1677, 1677, 1677, 561: 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 579: 1677, 1677, 1677, 1677, 1677, 1677, 1677, 588: 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 609: 1677, 1677, 1677, 1677, 1677, 615: 1677, 1677, 618: 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 632: 1677, 1677, 1677, 1677, 696: 1677, 703: 1677, 716: 1677, 718: 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, 774: 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, 774: 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, 774: 1674}, + {1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 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}, + {1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 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}, + {1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688}, // 610 - {1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1669}, + {1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1358, 1687, 1687, 1687, 541: 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 554: 1687, 1687, 1687, 559: 1687, 1687, 1687, 1687, 1687, 565: 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 584: 1687, 1687, 1687, 1687, 1687, 1687, 1687, 593: 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 614: 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 625: 1687, 1687, 1687, 1687, 1687, 1687, 632: 1687, 637: 1687, 1687, 1687, 1687, 662: 1687, 707: 1687, 720: 1687, 723: 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}, + {1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 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}, + {1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683}, // 615 - {1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1664}, + {1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682}, + {1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681}, + {1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 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}, + {1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678}, // 620 - {1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1659}, + {1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 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}, + {1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 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}, + {1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673}, // 625 - {1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 4526, 1658, 1658, 1658, 536: 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 549: 1658, 1658, 1658, 554: 1658, 1658, 1658, 1658, 1658, 1658, 561: 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 579: 1658, 1658, 1658, 1658, 1658, 1658, 1658, 588: 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 609: 1658, 1658, 1658, 1658, 1658, 615: 1658, 1658, 618: 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 632: 1658, 1658, 1658, 1658, 696: 1658, 703: 1658, 716: 1658, 718: 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, 774: 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, 774: 1656}, - {1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 774: 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, 774: 1654}, + {1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 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}, + {1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 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}, + {1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 4549, 1668, 1668, 1668, 541: 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 554: 1668, 1668, 1668, 559: 1668, 1668, 1668, 1668, 1668, 565: 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 584: 1668, 1668, 1668, 1668, 1668, 1668, 1668, 593: 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 614: 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 625: 1668, 1668, 1668, 1668, 1668, 1668, 632: 1668, 637: 1668, 1668, 1668, 1668, 662: 1668, 707: 1668, 720: 1668, 723: 1668, 1668}, // 630 - {1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1649}, + {1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 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}, + {1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 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}, + {1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1434, 1663, 1663, 1663, 541: 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 554: 1663, 1663, 1663, 559: 1663, 1663, 1663, 1663, 1663, 565: 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 584: 1663, 1663, 1663, 1663, 1663, 1663, 1663, 593: 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 614: 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 625: 1663, 1663, 1663, 1663, 1663, 1663, 632: 1663, 637: 1663, 1663, 1663, 1663, 662: 1663, 707: 1663, 720: 1663, 723: 1663, 1663}, // 635 - {1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1644}, + {1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 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}, + {1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 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}, + {1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658}, // 640 - {1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 774: 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, 774: 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, 774: 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, 1349, 1640, 1640, 1640, 536: 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 549: 1640, 1640, 1640, 554: 1640, 1640, 1640, 1640, 1640, 1640, 561: 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 579: 1640, 1640, 1640, 1640, 1640, 1640, 1640, 588: 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 609: 1640, 1640, 1640, 1640, 1640, 615: 1640, 1640, 618: 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 632: 1640, 1640, 1640, 1640, 696: 1640, 703: 1640, 716: 1640, 718: 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, 774: 1639}, + {1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 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}, + {1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 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}, + {1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653}, // 645 - {1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1634}, + {1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 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}, + {1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 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, 1357, 1649, 1649, 1649, 541: 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 554: 1649, 1649, 1649, 559: 1649, 1649, 1649, 1649, 1649, 565: 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 584: 1649, 1649, 1649, 1649, 1649, 1649, 1649, 593: 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 614: 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 625: 1649, 1649, 1649, 1649, 1649, 1649, 632: 1649, 637: 1649, 1649, 1649, 1649, 662: 1649, 707: 1649, 720: 1649, 723: 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}, // 650 - {1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1629}, + {1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 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}, + {1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 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}, + {1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643}, // 655 - {1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 774: 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, 4519, 1627, 1627, 1627, 536: 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 549: 1627, 1627, 1627, 554: 1627, 1627, 1627, 1627, 1627, 1627, 561: 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 579: 1627, 1627, 1627, 1627, 1627, 1627, 1627, 588: 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 609: 1627, 1627, 1627, 1627, 1627, 615: 1627, 1627, 618: 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 632: 1627, 1627, 1627, 1627, 696: 1627, 703: 1627, 716: 1627, 718: 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, 4512, 1626, 1626, 1626, 536: 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 549: 1626, 1626, 1626, 554: 1626, 1626, 1626, 1626, 1626, 1626, 561: 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 579: 1626, 1626, 1626, 1626, 1626, 1626, 1626, 588: 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 609: 1626, 1626, 1626, 1626, 1626, 615: 1626, 1626, 618: 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 632: 1626, 1626, 1626, 1626, 696: 1626, 703: 1626, 716: 1626, 718: 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, 774: 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, 774: 1624}, + {1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 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}, + {1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 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}, + {1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638}, // 660 - {1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1619}, + {1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 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, 4542, 1636, 1636, 1636, 541: 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 554: 1636, 1636, 1636, 559: 1636, 1636, 1636, 1636, 1636, 565: 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 584: 1636, 1636, 1636, 1636, 1636, 1636, 1636, 593: 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 614: 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 625: 1636, 1636, 1636, 1636, 1636, 1636, 632: 1636, 637: 1636, 1636, 1636, 1636, 662: 1636, 707: 1636, 720: 1636, 723: 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, 4535, 1635, 1635, 1635, 541: 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 554: 1635, 1635, 1635, 559: 1635, 1635, 1635, 1635, 1635, 565: 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 584: 1635, 1635, 1635, 1635, 1635, 1635, 1635, 593: 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 614: 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 625: 1635, 1635, 1635, 1635, 1635, 1635, 632: 1635, 637: 1635, 1635, 1635, 1635, 662: 1635, 707: 1635, 720: 1635, 723: 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}, + {1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633}, // 665 - {1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1614}, + {1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 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}, + {1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 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}, + {1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628}, // 670 - {1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1609}, + {1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 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}, + {1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 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}, + {1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623}, // 675 - {1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 774: 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, 774: 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, 4492, 1606, 1606, 1606, 536: 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 549: 1606, 1606, 1606, 554: 1606, 1606, 1606, 1606, 1606, 1606, 561: 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 579: 1606, 1606, 1606, 1606, 1606, 1606, 1606, 588: 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 609: 1606, 1606, 1606, 1606, 1606, 615: 1606, 1606, 618: 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 632: 1606, 1606, 1606, 1606, 696: 1606, 703: 1606, 716: 1606, 718: 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, 4484, 1605, 1605, 1605, 536: 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 549: 1605, 1605, 1605, 554: 1605, 1605, 1605, 1605, 1605, 1605, 561: 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 579: 1605, 1605, 1605, 1605, 1605, 1605, 1605, 588: 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 609: 1605, 1605, 1605, 1605, 1605, 615: 1605, 1605, 618: 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 632: 1605, 1605, 1605, 1605, 696: 1605, 703: 1605, 716: 1605, 718: 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, 774: 1604}, + {1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 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}, + {1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 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}, + {1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618}, // 680 - {1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1599}, + {1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 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}, + {1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 4515, 1615, 1615, 1615, 541: 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 554: 1615, 1615, 1615, 559: 1615, 1615, 1615, 1615, 1615, 565: 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 584: 1615, 1615, 1615, 1615, 1615, 1615, 1615, 593: 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 614: 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 625: 1615, 1615, 1615, 1615, 1615, 1615, 632: 1615, 637: 1615, 1615, 1615, 1615, 662: 1615, 707: 1615, 720: 1615, 723: 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, 4507, 1614, 1614, 1614, 541: 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 554: 1614, 1614, 1614, 559: 1614, 1614, 1614, 1614, 1614, 565: 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 584: 1614, 1614, 1614, 1614, 1614, 1614, 1614, 593: 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 614: 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 625: 1614, 1614, 1614, 1614, 1614, 1614, 632: 1614, 637: 1614, 1614, 1614, 1614, 662: 1614, 707: 1614, 720: 1614, 723: 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}, // 685 - {1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1594}, + {1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 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}, + {1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 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}, + {1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608}, // 690 - {1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 774: 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, 774: 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, 774: 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, 774: 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, 774: 1589}, + {1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 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}, + {1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 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}, + {1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603}, // 695 - {1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 774: 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, 774: 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, 774: 1586}, - {1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 774: 1585}, - {1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 774: 1584}, + {1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 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}, + {1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 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}, + {1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598}, // 700 - {1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 774: 1583}, - {1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 774: 1582}, - {1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 774: 1581}, - {1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 774: 1580}, - {1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 774: 1579}, + {1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 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}, + {1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 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}, + {1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593}, // 705 - {1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 774: 1578}, - {1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 774: 1577}, - {1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 774: 1576}, - {1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 774: 1575}, - {1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 774: 1574}, + {1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 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}, + {1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 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}, + {1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588}, // 710 - {1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 774: 1573}, - {1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 774: 1572}, - {1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 774: 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, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 774: 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, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 774: 1569}, + {1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 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}, + {1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585}, + {1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584}, + {1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583}, // 715 - {1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 774: 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, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 774: 1567}, - {1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 774: 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, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 774: 1565}, - {1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 774: 1564}, + {1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582}, + {1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581}, + {1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580}, + {1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579}, + {1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578}, // 720 - {1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 774: 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, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 774: 1562}, - {1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 532: 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 548: 1526, 1526, 1526, 1526, 554: 1526, 1526, 1526, 1526, 1526, 1526, 561: 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 579: 1526, 1526, 1526, 1526, 1526, 1526, 1526, 588: 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 609: 1526, 1526, 1526, 1526, 1526, 615: 1526, 1526, 618: 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 632: 1526, 1526, 1526, 1526, 696: 1526, 701: 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526}, - {1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 532: 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 548: 1525, 1525, 1525, 1525, 554: 1525, 1525, 1525, 1525, 1525, 1525, 561: 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 579: 1525, 1525, 1525, 1525, 1525, 1525, 1525, 588: 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 609: 1525, 1525, 1525, 1525, 1525, 615: 1525, 1525, 618: 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 632: 1525, 1525, 1525, 1525, 696: 1525, 701: 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525}, - {1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 532: 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 548: 1524, 1524, 1524, 1524, 554: 1524, 1524, 1524, 1524, 1524, 1524, 561: 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 579: 1524, 1524, 1524, 1524, 1524, 1524, 1524, 588: 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 609: 1524, 1524, 1524, 1524, 1524, 615: 1524, 1524, 618: 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 632: 1524, 1524, 1524, 1524, 696: 1524, 701: 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524}, + {1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577}, + {1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576}, + {1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575}, + {1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574}, + {1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573}, // 725 - {1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 532: 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 548: 1523, 1523, 1523, 1523, 554: 1523, 1523, 1523, 1523, 1523, 1523, 561: 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 579: 1523, 1523, 1523, 1523, 1523, 1523, 1523, 588: 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 609: 1523, 1523, 1523, 1523, 1523, 615: 1523, 1523, 618: 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 632: 1523, 1523, 1523, 1523, 696: 1523, 701: 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523}, - {1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 532: 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 548: 1522, 1522, 1522, 1522, 554: 1522, 1522, 1522, 1522, 1522, 1522, 561: 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 579: 1522, 1522, 1522, 1522, 1522, 1522, 1522, 588: 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 609: 1522, 1522, 1522, 1522, 1522, 615: 1522, 1522, 618: 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 632: 1522, 1522, 1522, 1522, 696: 1522, 701: 1522, 1522, 1522, 1522, 1522, 1522, 1522, 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, 532: 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 548: 1521, 1521, 1521, 1521, 554: 1521, 1521, 1521, 1521, 1521, 1521, 561: 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 579: 1521, 1521, 1521, 1521, 1521, 1521, 1521, 588: 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 609: 1521, 1521, 1521, 1521, 1521, 615: 1521, 1521, 618: 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 632: 1521, 1521, 1521, 1521, 696: 1521, 701: 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521}, - {1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 532: 1520, 4483, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 548: 1520, 1520, 1520, 1520, 554: 1520, 1520, 1520, 1520, 1520, 1520, 561: 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 579: 1520, 1520, 1520, 1520, 1520, 1520, 1520, 588: 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 609: 1520, 1520, 1520, 1520, 1520, 615: 1520, 1520, 618: 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 632: 1520, 1520, 1520, 1520, 696: 1520, 701: 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520}, - {533: 4480, 638: 4481, 640: 4482}, + {1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572}, + {1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571}, + {1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 537: 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 553: 1535, 1535, 1535, 1535, 559: 1535, 1535, 1535, 1535, 1535, 565: 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 584: 1535, 1535, 1535, 1535, 1535, 1535, 1535, 593: 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 614: 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 625: 1535, 1535, 1535, 1535, 1535, 1535, 632: 1535, 637: 1535, 1535, 1535, 1535, 662: 1535, 706: 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535}, + {1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 537: 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 553: 1534, 1534, 1534, 1534, 559: 1534, 1534, 1534, 1534, 1534, 565: 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 584: 1534, 1534, 1534, 1534, 1534, 1534, 1534, 593: 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 614: 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 625: 1534, 1534, 1534, 1534, 1534, 1534, 632: 1534, 637: 1534, 1534, 1534, 1534, 662: 1534, 706: 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534}, + {1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 537: 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 553: 1533, 1533, 1533, 1533, 559: 1533, 1533, 1533, 1533, 1533, 565: 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 584: 1533, 1533, 1533, 1533, 1533, 1533, 1533, 593: 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 614: 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 625: 1533, 1533, 1533, 1533, 1533, 1533, 632: 1533, 637: 1533, 1533, 1533, 1533, 662: 1533, 706: 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533}, // 730 - {1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 532: 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 548: 1518, 1518, 1518, 1518, 554: 1518, 1518, 1518, 1518, 1518, 1518, 561: 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 579: 1518, 1518, 1518, 1518, 1518, 1518, 1518, 588: 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 609: 1518, 1518, 1518, 1518, 1518, 615: 1518, 1518, 618: 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 632: 1518, 1518, 1518, 1518, 696: 1518, 701: 1518, 1518, 1518, 1518, 1518, 1518, 1518, 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, 532: 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 548: 1517, 1517, 1517, 1517, 554: 1517, 1517, 1517, 1517, 1517, 1517, 561: 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 579: 1517, 1517, 1517, 1517, 1517, 1517, 1517, 588: 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 609: 1517, 1517, 1517, 1517, 1517, 615: 1517, 1517, 618: 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 632: 1517, 1517, 1517, 1517, 696: 1517, 701: 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517}, - {1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 532: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 548: 1514, 1514, 1514, 1514, 554: 1514, 1514, 1514, 1514, 1514, 1514, 561: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 579: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 588: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 609: 1514, 1514, 1514, 1514, 1514, 615: 1514, 1514, 618: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 632: 1514, 1514, 1514, 1514, 696: 1514, 701: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514}, - {1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 532: 1481, 1481, 1481, 536: 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 549: 1481, 1481, 1481, 554: 1481, 1481, 1481, 1481, 1481, 1481, 561: 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 579: 1481, 1481, 1481, 1481, 1481, 1481, 1481, 588: 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 609: 1481, 1481, 1481, 1481, 1481, 615: 1481, 1481, 618: 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 632: 1481, 1481, 1481, 1481, 696: 1481, 703: 1481, 716: 4475, 718: 1481, 1481}, - {1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 532: 1478, 1478, 1478, 536: 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 549: 1478, 1478, 1478, 554: 1478, 1478, 1478, 1478, 1478, 1478, 561: 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 579: 1478, 1478, 1478, 1478, 1478, 1478, 1478, 588: 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 609: 1478, 1478, 1478, 1478, 1478, 615: 1478, 1478, 618: 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 632: 1478, 1478, 1478, 1478, 696: 1478, 703: 1478, 718: 4471, 4472}, + {1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 537: 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 553: 1532, 1532, 1532, 1532, 559: 1532, 1532, 1532, 1532, 1532, 565: 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 584: 1532, 1532, 1532, 1532, 1532, 1532, 1532, 593: 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 614: 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 625: 1532, 1532, 1532, 1532, 1532, 1532, 632: 1532, 637: 1532, 1532, 1532, 1532, 662: 1532, 706: 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532}, + {1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 537: 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 553: 1531, 1531, 1531, 1531, 559: 1531, 1531, 1531, 1531, 1531, 565: 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 584: 1531, 1531, 1531, 1531, 1531, 1531, 1531, 593: 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 614: 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 625: 1531, 1531, 1531, 1531, 1531, 1531, 632: 1531, 637: 1531, 1531, 1531, 1531, 662: 1531, 706: 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531}, + {1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 537: 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 553: 1530, 1530, 1530, 1530, 559: 1530, 1530, 1530, 1530, 1530, 565: 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 584: 1530, 1530, 1530, 1530, 1530, 1530, 1530, 593: 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 614: 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 625: 1530, 1530, 1530, 1530, 1530, 1530, 632: 1530, 637: 1530, 1530, 1530, 1530, 662: 1530, 706: 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530}, + {1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 537: 1529, 4506, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 553: 1529, 1529, 1529, 1529, 559: 1529, 1529, 1529, 1529, 1529, 565: 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 584: 1529, 1529, 1529, 1529, 1529, 1529, 1529, 593: 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 614: 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 625: 1529, 1529, 1529, 1529, 1529, 1529, 632: 1529, 637: 1529, 1529, 1529, 1529, 662: 1529, 706: 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529}, + {538: 4503, 643: 4504, 645: 4505}, // 735 - {1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 532: 1477, 1477, 1477, 536: 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 549: 1477, 1477, 1477, 554: 1477, 1477, 1477, 1477, 1477, 1477, 561: 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 579: 1477, 1477, 1477, 1477, 1477, 1477, 1477, 588: 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 609: 1477, 1477, 1477, 1477, 1477, 615: 1477, 1477, 618: 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 632: 1477, 1477, 1477, 1477, 696: 1477, 703: 1477}, - {1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 532: 1476, 1476, 1476, 536: 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 549: 1476, 1476, 1476, 554: 1476, 1476, 1476, 1476, 1476, 1476, 561: 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 579: 1476, 1476, 1476, 1476, 1476, 1476, 1476, 588: 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 609: 1476, 1476, 1476, 1476, 1476, 615: 1476, 1476, 618: 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 632: 1476, 1476, 1476, 1476, 696: 1476, 703: 1476}, - {1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 532: 1475, 1475, 1475, 536: 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 549: 1475, 1475, 1475, 554: 1475, 1475, 1475, 1475, 1475, 1475, 561: 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 579: 1475, 1475, 1475, 1475, 1475, 1475, 1475, 588: 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 609: 1475, 1475, 1475, 1475, 1475, 615: 1475, 1475, 618: 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 632: 1475, 1475, 1475, 1475, 696: 1475, 703: 1475}, - {3, 3, 9: 3, 51: 3, 93: 3, 117: 3, 538: 3693, 696: 3, 703: 3694}, - {1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 532: 1473, 1473, 1473, 536: 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 549: 1473, 1473, 1473, 554: 1473, 1473, 1473, 1473, 1473, 1473, 561: 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 579: 1473, 1473, 1473, 1473, 1473, 1473, 1473, 588: 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 609: 1473, 1473, 1473, 1473, 1473, 615: 1473, 1473, 618: 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 632: 1473, 1473, 1473, 1473, 696: 1473, 703: 1473}, + {1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 537: 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 553: 1527, 1527, 1527, 1527, 559: 1527, 1527, 1527, 1527, 1527, 565: 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 584: 1527, 1527, 1527, 1527, 1527, 1527, 1527, 593: 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 614: 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 625: 1527, 1527, 1527, 1527, 1527, 1527, 632: 1527, 637: 1527, 1527, 1527, 1527, 662: 1527, 706: 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527}, + {1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 537: 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 553: 1526, 1526, 1526, 1526, 559: 1526, 1526, 1526, 1526, 1526, 565: 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 584: 1526, 1526, 1526, 1526, 1526, 1526, 1526, 593: 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 614: 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 625: 1526, 1526, 1526, 1526, 1526, 1526, 632: 1526, 637: 1526, 1526, 1526, 1526, 662: 1526, 706: 1526, 1526, 1526, 1526, 1526, 1526, 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, 537: 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 553: 1523, 1523, 1523, 1523, 559: 1523, 1523, 1523, 1523, 1523, 565: 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 584: 1523, 1523, 1523, 1523, 1523, 1523, 1523, 593: 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 614: 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 625: 1523, 1523, 1523, 1523, 1523, 1523, 632: 1523, 637: 1523, 1523, 1523, 1523, 662: 1523, 706: 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523}, + {1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 537: 1490, 1490, 1490, 541: 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 554: 1490, 1490, 1490, 559: 1490, 1490, 1490, 1490, 1490, 565: 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 584: 1490, 1490, 1490, 1490, 1490, 1490, 1490, 593: 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 614: 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 625: 1490, 1490, 1490, 1490, 1490, 1490, 632: 1490, 637: 1490, 1490, 1490, 1490, 662: 1490, 707: 1490, 720: 4498, 723: 1490, 1490}, + {1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 537: 1487, 1487, 1487, 541: 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 554: 1487, 1487, 1487, 559: 1487, 1487, 1487, 1487, 1487, 565: 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 584: 1487, 1487, 1487, 1487, 1487, 1487, 1487, 593: 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 614: 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 625: 1487, 1487, 1487, 1487, 1487, 1487, 632: 1487, 637: 1487, 1487, 1487, 1487, 662: 1487, 707: 1487, 723: 4494, 4495}, // 740 - {1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 532: 1472, 1472, 1472, 536: 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 549: 1472, 1472, 1472, 554: 1472, 1472, 1472, 1472, 1472, 1472, 561: 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 579: 1472, 1472, 1472, 1472, 1472, 1472, 1472, 588: 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 609: 1472, 1472, 1472, 1472, 1472, 615: 1472, 1472, 618: 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 632: 1472, 1472, 1472, 1472, 696: 1472, 703: 1472}, - {1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 532: 1471, 1471, 1471, 536: 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 549: 1471, 1471, 1471, 554: 1471, 1471, 1471, 1471, 1471, 1471, 561: 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 579: 1471, 1471, 1471, 1471, 1471, 1471, 1471, 588: 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 609: 1471, 1471, 1471, 1471, 1471, 615: 1471, 1471, 618: 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 632: 1471, 1471, 1471, 1471, 696: 1471, 703: 1471}, - {1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 532: 1470, 1470, 1470, 536: 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 549: 1470, 1470, 1470, 554: 1470, 1470, 1470, 1470, 1470, 1470, 561: 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 579: 1470, 1470, 1470, 1470, 1470, 1470, 1470, 588: 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 609: 1470, 1470, 1470, 1470, 1470, 615: 1470, 1470, 618: 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 632: 1470, 1470, 1470, 1470, 696: 1470, 703: 1470}, - {1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 532: 1469, 1469, 1469, 536: 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 549: 1469, 1469, 1469, 554: 1469, 1469, 1469, 1469, 1469, 1469, 561: 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 579: 1469, 1469, 1469, 1469, 1469, 1469, 1469, 588: 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 609: 1469, 1469, 1469, 1469, 1469, 615: 1469, 1469, 618: 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 632: 1469, 1469, 1469, 1469, 696: 1469, 703: 1469}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3616, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 4470, 3597, 3679, 3596, 3593}, + {1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 537: 1486, 1486, 1486, 541: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 554: 1486, 1486, 1486, 559: 1486, 1486, 1486, 1486, 1486, 565: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 584: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 593: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 614: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 625: 1486, 1486, 1486, 1486, 1486, 1486, 632: 1486, 637: 1486, 1486, 1486, 1486, 662: 1486, 707: 1486}, + {1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 537: 1485, 1485, 1485, 541: 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 554: 1485, 1485, 1485, 559: 1485, 1485, 1485, 1485, 1485, 565: 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 584: 1485, 1485, 1485, 1485, 1485, 1485, 1485, 593: 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 614: 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 625: 1485, 1485, 1485, 1485, 1485, 1485, 632: 1485, 637: 1485, 1485, 1485, 1485, 662: 1485, 707: 1485}, + {1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 537: 1484, 1484, 1484, 541: 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 554: 1484, 1484, 1484, 559: 1484, 1484, 1484, 1484, 1484, 565: 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 584: 1484, 1484, 1484, 1484, 1484, 1484, 1484, 593: 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 614: 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 625: 1484, 1484, 1484, 1484, 1484, 1484, 632: 1484, 637: 1484, 1484, 1484, 1484, 662: 1484, 707: 1484}, + {3, 3, 9: 3, 51: 3, 93: 3, 117: 3, 543: 3715, 662: 3, 707: 3716}, + {1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 537: 1482, 1482, 1482, 541: 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 554: 1482, 1482, 1482, 559: 1482, 1482, 1482, 1482, 1482, 565: 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 584: 1482, 1482, 1482, 1482, 1482, 1482, 1482, 593: 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 614: 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 625: 1482, 1482, 1482, 1482, 1482, 1482, 632: 1482, 637: 1482, 1482, 1482, 1482, 662: 1482, 707: 1482}, // 745 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3616, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 4469, 3597, 3679, 3596, 3593}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3616, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 4468, 3597, 3679, 3596, 3593}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3616, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 4467, 3597, 3679, 3596, 3593}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3616, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 4466, 3597, 3679, 3596, 3593}, - {1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 532: 1462, 1462, 1462, 536: 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 549: 1462, 1462, 1462, 554: 1462, 1462, 1462, 1462, 1462, 1462, 561: 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 579: 1462, 1462, 1462, 1462, 1462, 1462, 1462, 588: 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 609: 1462, 1462, 1462, 1462, 1462, 615: 1462, 1462, 618: 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 632: 1462, 1462, 1462, 1462, 696: 1462, 703: 1462}, + {1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 537: 1481, 1481, 1481, 541: 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 554: 1481, 1481, 1481, 559: 1481, 1481, 1481, 1481, 1481, 565: 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 584: 1481, 1481, 1481, 1481, 1481, 1481, 1481, 593: 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 614: 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 625: 1481, 1481, 1481, 1481, 1481, 1481, 632: 1481, 637: 1481, 1481, 1481, 1481, 662: 1481, 707: 1481}, + {1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 537: 1480, 1480, 1480, 541: 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 554: 1480, 1480, 1480, 559: 1480, 1480, 1480, 1480, 1480, 565: 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 584: 1480, 1480, 1480, 1480, 1480, 1480, 1480, 593: 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 614: 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 625: 1480, 1480, 1480, 1480, 1480, 1480, 632: 1480, 637: 1480, 1480, 1480, 1480, 662: 1480, 707: 1480}, + {1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 537: 1479, 1479, 1479, 541: 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 554: 1479, 1479, 1479, 559: 1479, 1479, 1479, 1479, 1479, 565: 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 584: 1479, 1479, 1479, 1479, 1479, 1479, 1479, 593: 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 614: 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 625: 1479, 1479, 1479, 1479, 1479, 1479, 632: 1479, 637: 1479, 1479, 1479, 1479, 662: 1479, 707: 1479}, + {1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 537: 1478, 1478, 1478, 541: 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 554: 1478, 1478, 1478, 559: 1478, 1478, 1478, 1478, 1478, 565: 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 584: 1478, 1478, 1478, 1478, 1478, 1478, 1478, 593: 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 614: 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 625: 1478, 1478, 1478, 1478, 1478, 1478, 632: 1478, 637: 1478, 1478, 1478, 1478, 662: 1478, 707: 1478}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3638, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 4493, 3619, 3701, 3618, 3615}, // 750 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 2906, 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3845, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 608: 2904, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 2900, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3844, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4460, 806: 3847, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 3846, 817: 3849, 3848, 863: 4461}, - {531: 4455}, - {531: 2907, 775: 4454}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4451, 3051, 3052, 3050}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3616, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 4450, 3597, 3679, 3596, 3593}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3638, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 4492, 3619, 3701, 3618, 3615}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3638, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 4491, 3619, 3701, 3618, 3615}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3638, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 4490, 3619, 3701, 3618, 3615}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3638, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 4489, 3619, 3701, 3618, 3615}, + {1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 537: 1471, 1471, 1471, 541: 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 554: 1471, 1471, 1471, 559: 1471, 1471, 1471, 1471, 1471, 565: 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 584: 1471, 1471, 1471, 1471, 1471, 1471, 1471, 593: 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 614: 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 625: 1471, 1471, 1471, 1471, 1471, 1471, 632: 1471, 637: 1471, 1471, 1471, 1471, 662: 1471, 707: 1471}, // 755 - {531: 4443}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 589: 1279, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4430, 1356: 4431}, - {531: 4372}, - {531: 3900}, - {531: 3889}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 2923, 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3868, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 613: 2921, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 2917, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3867, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4483, 812: 3870, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 3869, 3872, 3871, 869: 4484}, + {536: 4478}, + {536: 2924, 781: 4477}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4474, 3068, 3069, 3067}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3638, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 4473, 3619, 3701, 3618, 3615}, // 760 - {531: 1430}, - {531: 1427}, - {531: 1426}, - {531: 1424}, - {531: 1420}, + {536: 4466}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 594: 1287, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4453, 1363: 4454}, + {536: 4395}, + {536: 3923}, + {536: 3912}, // 765 - {531: 1417}, - {531: 1416}, - {531: 1414}, - {1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 536: 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 549: 1403, 1403, 1403, 554: 1403, 1403, 1403, 1403, 1403, 1403, 561: 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 579: 1403, 1403, 1403, 1403, 1403, 1403, 1403, 588: 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 609: 1403, 1403, 1403, 1403, 1403, 615: 1403, 1403, 618: 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 632: 1403, 1403, 1403, 1403, 696: 1403, 703: 1403}, - {1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 536: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 549: 1402, 1402, 1402, 554: 1402, 1402, 1402, 1402, 1402, 1402, 561: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 579: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 588: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 609: 1402, 1402, 1402, 1402, 1402, 615: 1402, 1402, 618: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 632: 1402, 1402, 1402, 1402, 696: 1402, 703: 1402}, + {536: 1439}, + {536: 1436}, + {536: 1435}, + {536: 1432}, + {536: 1428}, // 770 - {1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 536: 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 549: 1401, 1401, 1401, 554: 1401, 1401, 1401, 1401, 1401, 1401, 561: 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 579: 1401, 1401, 1401, 1401, 1401, 1401, 1401, 588: 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 609: 1401, 1401, 1401, 1401, 1401, 615: 1401, 1401, 618: 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 632: 1401, 1401, 1401, 1401, 696: 1401, 703: 1401}, - {1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 536: 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 549: 1400, 1400, 1400, 554: 1400, 1400, 1400, 1400, 1400, 1400, 561: 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 579: 1400, 1400, 1400, 1400, 1400, 1400, 1400, 588: 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 609: 1400, 1400, 1400, 1400, 1400, 615: 1400, 1400, 618: 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 632: 1400, 1400, 1400, 1400, 696: 1400, 703: 1400}, - {1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 536: 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 549: 1399, 1399, 1399, 554: 1399, 1399, 1399, 1399, 1399, 1399, 561: 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 579: 1399, 1399, 1399, 1399, 1399, 1399, 1399, 588: 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 609: 1399, 1399, 1399, 1399, 1399, 615: 1399, 1399, 618: 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 632: 1399, 1399, 1399, 1399, 696: 1399, 703: 1399}, - {1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 536: 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 549: 1398, 1398, 1398, 554: 1398, 1398, 1398, 1398, 1398, 1398, 561: 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 579: 1398, 1398, 1398, 1398, 1398, 1398, 1398, 588: 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 609: 1398, 1398, 1398, 1398, 1398, 615: 1398, 1398, 618: 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 632: 1398, 1398, 1398, 1398, 696: 1398, 703: 1398}, - {1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 536: 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 549: 1397, 1397, 1397, 554: 1397, 1397, 1397, 1397, 1397, 1397, 561: 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 579: 1397, 1397, 1397, 1397, 1397, 1397, 1397, 588: 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 609: 1397, 1397, 1397, 1397, 1397, 615: 1397, 1397, 618: 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 632: 1397, 1397, 1397, 1397, 696: 1397, 703: 1397}, + {536: 1425}, + {536: 1424}, + {536: 1422}, + {1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 541: 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 554: 1411, 1411, 1411, 559: 1411, 1411, 1411, 1411, 1411, 565: 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 584: 1411, 1411, 1411, 1411, 1411, 1411, 1411, 593: 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 614: 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 625: 1411, 1411, 1411, 1411, 1411, 1411, 632: 1411, 637: 1411, 1411, 1411, 1411, 662: 1411, 707: 1411}, + {1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 541: 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 554: 1410, 1410, 1410, 559: 1410, 1410, 1410, 1410, 1410, 565: 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 584: 1410, 1410, 1410, 1410, 1410, 1410, 1410, 593: 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 614: 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 625: 1410, 1410, 1410, 1410, 1410, 1410, 632: 1410, 637: 1410, 1410, 1410, 1410, 662: 1410, 707: 1410}, // 775 - {1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 536: 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 549: 1396, 1396, 1396, 554: 1396, 1396, 1396, 1396, 1396, 1396, 561: 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 579: 1396, 1396, 1396, 1396, 1396, 1396, 1396, 588: 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 609: 1396, 1396, 1396, 1396, 1396, 615: 1396, 1396, 618: 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 632: 1396, 1396, 1396, 1396, 696: 1396, 703: 1396}, - {1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 536: 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 549: 1395, 1395, 1395, 554: 1395, 1395, 1395, 1395, 1395, 1395, 561: 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 579: 1395, 1395, 1395, 1395, 1395, 1395, 1395, 588: 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 609: 1395, 1395, 1395, 1395, 1395, 615: 1395, 1395, 618: 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 632: 1395, 1395, 1395, 1395, 696: 1395, 703: 1395}, - {1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 536: 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 549: 1394, 1394, 1394, 554: 1394, 1394, 1394, 1394, 1394, 1394, 561: 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 579: 1394, 1394, 1394, 1394, 1394, 1394, 1394, 588: 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 609: 1394, 1394, 1394, 1394, 1394, 615: 1394, 1394, 618: 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 632: 1394, 1394, 1394, 1394, 696: 1394, 703: 1394}, - {1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 536: 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 549: 1393, 1393, 1393, 554: 1393, 1393, 1393, 1393, 1393, 1393, 561: 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 579: 1393, 1393, 1393, 1393, 1393, 1393, 1393, 588: 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 609: 1393, 1393, 1393, 1393, 1393, 615: 1393, 1393, 618: 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 632: 1393, 1393, 1393, 1393, 696: 1393, 703: 1393}, - {531: 4369}, + {1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 541: 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 554: 1409, 1409, 1409, 559: 1409, 1409, 1409, 1409, 1409, 565: 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 584: 1409, 1409, 1409, 1409, 1409, 1409, 1409, 593: 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 614: 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 625: 1409, 1409, 1409, 1409, 1409, 1409, 632: 1409, 637: 1409, 1409, 1409, 1409, 662: 1409, 707: 1409}, + {1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 541: 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 554: 1408, 1408, 1408, 559: 1408, 1408, 1408, 1408, 1408, 565: 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 584: 1408, 1408, 1408, 1408, 1408, 1408, 1408, 593: 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 614: 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 625: 1408, 1408, 1408, 1408, 1408, 1408, 632: 1408, 637: 1408, 1408, 1408, 1408, 662: 1408, 707: 1408}, + {1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 541: 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 554: 1407, 1407, 1407, 559: 1407, 1407, 1407, 1407, 1407, 565: 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 584: 1407, 1407, 1407, 1407, 1407, 1407, 1407, 593: 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 614: 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 625: 1407, 1407, 1407, 1407, 1407, 1407, 632: 1407, 637: 1407, 1407, 1407, 1407, 662: 1407, 707: 1407}, + {1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 541: 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 554: 1406, 1406, 1406, 559: 1406, 1406, 1406, 1406, 1406, 565: 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 584: 1406, 1406, 1406, 1406, 1406, 1406, 1406, 593: 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 614: 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 625: 1406, 1406, 1406, 1406, 1406, 1406, 632: 1406, 637: 1406, 1406, 1406, 1406, 662: 1406, 707: 1406}, + {1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 541: 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 554: 1405, 1405, 1405, 559: 1405, 1405, 1405, 1405, 1405, 565: 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 584: 1405, 1405, 1405, 1405, 1405, 1405, 1405, 593: 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 614: 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 625: 1405, 1405, 1405, 1405, 1405, 1405, 632: 1405, 637: 1405, 1405, 1405, 1405, 662: 1405, 707: 1405}, // 780 - {531: 4366}, - {1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 4363, 1405, 1405, 1405, 536: 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 549: 1405, 1405, 1405, 554: 1405, 1405, 1405, 1405, 1405, 1405, 561: 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 579: 1405, 1405, 1405, 1405, 1405, 1405, 1405, 588: 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 609: 1405, 1405, 1405, 1405, 1405, 615: 1405, 1405, 618: 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 632: 1405, 1405, 1405, 1405, 696: 1405, 703: 1405, 1224: 4364}, - {531: 4361}, - {1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 4357, 1311, 1311, 1311, 536: 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 549: 1311, 1311, 1311, 554: 1311, 1311, 1311, 1311, 1311, 1311, 561: 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 579: 1311, 1311, 1311, 1311, 1311, 1311, 1311, 588: 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 609: 1311, 1311, 1311, 1311, 1311, 615: 1311, 1311, 618: 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 632: 1311, 1311, 1311, 1311, 696: 1311, 703: 1311, 1367: 4356}, - {531: 4348}, + {1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 541: 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 554: 1404, 1404, 1404, 559: 1404, 1404, 1404, 1404, 1404, 565: 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 584: 1404, 1404, 1404, 1404, 1404, 1404, 1404, 593: 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 614: 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 625: 1404, 1404, 1404, 1404, 1404, 1404, 632: 1404, 637: 1404, 1404, 1404, 1404, 662: 1404, 707: 1404}, + {1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 541: 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 554: 1403, 1403, 1403, 559: 1403, 1403, 1403, 1403, 1403, 565: 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 584: 1403, 1403, 1403, 1403, 1403, 1403, 1403, 593: 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 614: 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 625: 1403, 1403, 1403, 1403, 1403, 1403, 632: 1403, 637: 1403, 1403, 1403, 1403, 662: 1403, 707: 1403}, + {1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 541: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 554: 1402, 1402, 1402, 559: 1402, 1402, 1402, 1402, 1402, 565: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 584: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 593: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 614: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 625: 1402, 1402, 1402, 1402, 1402, 1402, 632: 1402, 637: 1402, 1402, 1402, 1402, 662: 1402, 707: 1402}, + {1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 541: 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 554: 1401, 1401, 1401, 559: 1401, 1401, 1401, 1401, 1401, 565: 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 584: 1401, 1401, 1401, 1401, 1401, 1401, 1401, 593: 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 614: 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 625: 1401, 1401, 1401, 1401, 1401, 1401, 632: 1401, 637: 1401, 1401, 1401, 1401, 662: 1401, 707: 1401}, + {536: 4392}, // 785 - {531: 4344}, - {531: 4339}, - {531: 4336}, - {531: 4331}, - {531: 4322}, + {536: 4389}, + {1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 4386, 1413, 1413, 1413, 541: 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 554: 1413, 1413, 1413, 559: 1413, 1413, 1413, 1413, 1413, 565: 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 584: 1413, 1413, 1413, 1413, 1413, 1413, 1413, 593: 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 614: 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 625: 1413, 1413, 1413, 1413, 1413, 1413, 632: 1413, 637: 1413, 1413, 1413, 1413, 662: 1413, 707: 1413, 1230: 4387}, + {536: 4384}, + {1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 4380, 1319, 1319, 1319, 541: 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 554: 1319, 1319, 1319, 559: 1319, 1319, 1319, 1319, 1319, 565: 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 584: 1319, 1319, 1319, 1319, 1319, 1319, 1319, 593: 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 614: 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 625: 1319, 1319, 1319, 1319, 1319, 1319, 632: 1319, 637: 1319, 1319, 1319, 1319, 662: 1319, 707: 1319, 1374: 4379}, + {536: 4371}, // 790 - {531: 4315}, - {531: 4310}, - {531: 4305}, - {531: 4291}, - {531: 4274}, + {536: 4367}, + {536: 4362}, + {536: 4359}, + {536: 4354}, + {536: 4345}, // 795 - {1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 532: 1358, 1358, 1358, 536: 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 549: 1358, 1358, 1358, 554: 1358, 1358, 1358, 1358, 1358, 1358, 561: 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 579: 1358, 1358, 1358, 1358, 1358, 1358, 1358, 588: 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 609: 1358, 1358, 1358, 1358, 1358, 615: 1358, 1358, 618: 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 632: 1358, 1358, 1358, 1358, 696: 1358, 703: 1358}, - {531: 4267}, - {531: 1352}, - {531: 1351}, - {1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 532: 1343, 1343, 1343, 536: 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 549: 1343, 1343, 1343, 554: 1343, 1343, 1343, 1343, 1343, 1343, 561: 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 579: 1343, 1343, 1343, 1343, 1343, 1343, 1343, 588: 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 609: 1343, 1343, 1343, 1343, 1343, 615: 1343, 1343, 618: 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 632: 1343, 1343, 1343, 1343, 696: 1343, 703: 1343}, + {536: 4338}, + {536: 4333}, + {536: 4328}, + {536: 4314}, + {536: 4297}, // 800 - {531: 4264}, - {531: 4261}, - {531: 4253}, - {531: 4245}, - {531: 4237}, + {1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 537: 1366, 1366, 1366, 541: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 554: 1366, 1366, 1366, 559: 1366, 1366, 1366, 1366, 1366, 565: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 584: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 593: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 614: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 625: 1366, 1366, 1366, 1366, 1366, 1366, 632: 1366, 637: 1366, 1366, 1366, 1366, 662: 1366, 707: 1366}, + {536: 4290}, + {536: 1360}, + {536: 1359}, + {1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 537: 1351, 1351, 1351, 541: 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 554: 1351, 1351, 1351, 559: 1351, 1351, 1351, 1351, 1351, 565: 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 584: 1351, 1351, 1351, 1351, 1351, 1351, 1351, 593: 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 614: 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 625: 1351, 1351, 1351, 1351, 1351, 1351, 632: 1351, 637: 1351, 1351, 1351, 1351, 662: 1351, 707: 1351}, // 805 - {531: 4223}, - {531: 4214}, - {531: 4209}, - {531: 4204}, - {531: 4199}, + {536: 4287}, + {536: 4284}, + {536: 4276}, + {536: 4268}, + {536: 4260}, // 810 - {531: 4194}, - {531: 4189}, - {531: 4184}, - {531: 4171}, - {531: 4168}, + {536: 4246}, + {536: 4237}, + {536: 4232}, + {536: 4227}, + {536: 4222}, // 815 - {531: 4165}, - {531: 4162}, - {531: 4159}, - {531: 4156}, - {531: 4152}, + {536: 4217}, + {536: 4212}, + {536: 4207}, + {536: 4194}, + {536: 4191}, // 820 - {531: 4146}, - {531: 4133}, - {531: 4128}, - {531: 4123}, - {531: 3683}, + {536: 4188}, + {536: 4185}, + {536: 4182}, + {536: 4179}, + {536: 4175}, // 825 - {949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 532: 949, 949, 949, 536: 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 549: 949, 949, 949, 554: 949, 949, 949, 949, 949, 949, 561: 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 579: 949, 949, 949, 949, 949, 949, 949, 588: 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 609: 949, 949, 949, 949, 949, 615: 949, 949, 618: 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 632: 949, 949, 949, 949, 696: 949, 703: 949}, - {948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 532: 948, 948, 948, 536: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 549: 948, 948, 948, 554: 948, 948, 948, 948, 948, 948, 561: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 579: 948, 948, 948, 948, 948, 948, 948, 588: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 609: 948, 948, 948, 948, 948, 615: 948, 948, 618: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 632: 948, 948, 948, 948, 696: 948, 703: 948}, - {947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 532: 947, 947, 947, 536: 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 549: 947, 947, 947, 554: 947, 947, 947, 947, 947, 947, 561: 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 579: 947, 947, 947, 947, 947, 947, 947, 588: 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 609: 947, 947, 947, 947, 947, 615: 947, 947, 618: 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 632: 947, 947, 947, 947, 696: 947, 703: 947}, - {946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 532: 946, 946, 946, 536: 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 549: 946, 946, 946, 554: 946, 946, 946, 946, 946, 946, 561: 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 579: 946, 946, 946, 946, 946, 946, 946, 588: 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 609: 946, 946, 946, 946, 946, 615: 946, 946, 618: 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 632: 946, 946, 946, 946, 696: 946, 703: 946}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3685}, + {536: 4169}, + {536: 4156}, + {536: 4151}, + {536: 4146}, + {536: 3705}, // 830 - {946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 532: 946, 946, 946, 536: 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 549: 946, 946, 946, 554: 946, 946, 946, 946, 946, 946, 561: 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 579: 946, 946, 946, 946, 946, 946, 946, 588: 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 609: 946, 946, 946, 946, 946, 615: 946, 946, 618: 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 632: 946, 946, 946, 946, 703: 946, 717: 4121}, - {9: 4052, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4051}, - {531: 4023}, - {2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 532: 2204, 2204, 537: 2204, 539: 2204, 2204, 2204, 2204, 549: 2204, 2204, 2204, 554: 2204, 4006, 2204, 2204, 2204, 2204, 561: 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 580: 2204, 2204, 2204, 2204, 585: 2204, 588: 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 607: 2204, 619: 4003, 4001, 4000, 4008, 4002, 4004, 4005, 4007, 1338: 3999, 1381: 3998}, + {957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 537: 957, 957, 957, 541: 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 554: 957, 957, 957, 559: 957, 957, 957, 957, 957, 565: 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 584: 957, 957, 957, 957, 957, 957, 957, 593: 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 614: 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 625: 957, 957, 957, 957, 957, 957, 632: 957, 637: 957, 957, 957, 957, 662: 957, 707: 957}, + {956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 537: 956, 956, 956, 541: 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 554: 956, 956, 956, 559: 956, 956, 956, 956, 956, 565: 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 584: 956, 956, 956, 956, 956, 956, 956, 593: 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 614: 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 625: 956, 956, 956, 956, 956, 956, 632: 956, 637: 956, 956, 956, 956, 662: 956, 707: 956}, + {955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 537: 955, 955, 955, 541: 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 554: 955, 955, 955, 559: 955, 955, 955, 955, 955, 565: 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 584: 955, 955, 955, 955, 955, 955, 955, 593: 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 614: 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 625: 955, 955, 955, 955, 955, 955, 632: 955, 637: 955, 955, 955, 955, 662: 955, 707: 955}, + {954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 537: 954, 954, 954, 541: 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 554: 954, 954, 954, 559: 954, 954, 954, 954, 954, 565: 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 584: 954, 954, 954, 954, 954, 954, 954, 593: 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 614: 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 625: 954, 954, 954, 954, 954, 954, 632: 954, 637: 954, 954, 954, 954, 662: 954, 707: 954}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3707}, // 835 - {2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 532: 2175, 2175, 537: 2175, 539: 2175, 2175, 2175, 2175, 549: 2175, 2175, 2175, 554: 2175, 2175, 2175, 2175, 2175, 2175, 561: 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 580: 2175, 2175, 2175, 2175, 585: 2175, 588: 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 607: 2175, 619: 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175}, - {2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 532: 2144, 2144, 3812, 536: 3811, 2144, 539: 2144, 2144, 2144, 2144, 3782, 3783, 3788, 549: 2144, 2144, 2144, 554: 2144, 2144, 2144, 2144, 2144, 2144, 561: 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 579: 3816, 2144, 2144, 2144, 2144, 3784, 2144, 588: 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 3815, 2144, 609: 3785, 3786, 3779, 3789, 3778, 615: 3787, 3780, 618: 3781, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 3813, 632: 3817, 3825, 3826, 3824, 915: 3814, 1250: 3818, 1326: 3820, 1372: 3822, 1377: 3819, 1383: 3821, 1437: 3823}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 1426, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3738}, - {1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 532: 1482, 1482, 1482, 536: 1482, 1482, 3693, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 549: 1482, 1482, 1482, 554: 1482, 1482, 1482, 1482, 1482, 1482, 561: 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 579: 1482, 1482, 1482, 1482, 1482, 1482, 1482, 588: 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 609: 1482, 1482, 1482, 1482, 1482, 615: 1482, 1482, 618: 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 632: 1482, 1482, 1482, 1482, 703: 3694}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 586: 3735, 770: 3737, 3051, 3052, 3050, 805: 3734, 974: 3733}, + {954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 537: 954, 954, 954, 541: 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 554: 954, 954, 954, 559: 954, 954, 954, 954, 954, 565: 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 584: 954, 954, 954, 954, 954, 954, 954, 593: 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 614: 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 625: 954, 954, 954, 954, 954, 954, 632: 954, 637: 954, 954, 954, 954, 707: 954, 722: 4144}, + {9: 4075, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4074}, + {536: 4046}, + {2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 537: 2218, 2218, 542: 2218, 544: 2218, 2218, 2218, 2218, 554: 2218, 2218, 2218, 559: 2218, 2218, 4029, 2218, 2218, 565: 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 585: 2218, 2218, 2218, 2218, 590: 2218, 593: 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 612: 2218, 622: 4026, 4024, 625: 4023, 4031, 4025, 4027, 4028, 4030, 1345: 4022, 1388: 4021}, // 840 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3616, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3695, 3597, 3679, 3596, 3593}, - {1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 532: 1464, 1464, 1464, 536: 1464, 1464, 3693, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 549: 1464, 1464, 1464, 554: 1464, 1464, 1464, 1464, 1464, 1464, 561: 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 579: 1464, 1464, 1464, 1464, 1464, 1464, 1464, 588: 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 609: 1464, 1464, 1464, 1464, 1464, 615: 1464, 1464, 618: 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 632: 1464, 1464, 1464, 1464, 696: 1464, 703: 1464}, - {2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 774: 2090}, - {2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 774: 2084}, - {2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 774: 2072}, + {2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 537: 2189, 2189, 542: 2189, 544: 2189, 2189, 2189, 2189, 554: 2189, 2189, 2189, 559: 2189, 2189, 2189, 2189, 2189, 565: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 585: 2189, 2189, 2189, 2189, 590: 2189, 593: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 612: 2189, 622: 2189, 2189, 625: 2189, 2189, 2189, 2189, 2189, 2189}, + {2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 537: 2158, 2158, 3835, 541: 3834, 2158, 544: 2158, 2158, 2158, 2158, 3805, 3806, 3811, 554: 2158, 2158, 2158, 559: 2158, 2158, 2158, 2158, 2158, 565: 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 584: 3839, 2158, 2158, 2158, 2158, 3807, 2158, 593: 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 3838, 2158, 614: 3808, 3809, 3802, 3812, 3801, 3810, 3803, 3804, 2158, 2158, 625: 2158, 2158, 2158, 2158, 2158, 2158, 632: 3836, 637: 3840, 3848, 3849, 3847, 921: 3837, 1256: 3841, 1333: 3843, 1379: 3845, 1384: 3842, 1390: 3844, 1444: 3846}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 1435, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3761}, + {1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 537: 1491, 1491, 1491, 541: 1491, 1491, 3715, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 554: 1491, 1491, 1491, 559: 1491, 1491, 1491, 1491, 1491, 565: 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 584: 1491, 1491, 1491, 1491, 1491, 1491, 1491, 593: 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 614: 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 625: 1491, 1491, 1491, 1491, 1491, 1491, 632: 1491, 637: 1491, 1491, 1491, 1491, 707: 3716}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 591: 3758, 777: 3760, 3068, 3069, 3067, 811: 3757, 980: 3756}, // 845 - {2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 774: 2060}, - {2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 774: 2049}, - {2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 774: 2047}, - {2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 774: 2024}, - {2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 774: 2018}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3638, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3717, 3619, 3701, 3618, 3615}, + {1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 537: 1473, 1473, 1473, 541: 1473, 1473, 3715, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 554: 1473, 1473, 1473, 559: 1473, 1473, 1473, 1473, 1473, 565: 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 584: 1473, 1473, 1473, 1473, 1473, 1473, 1473, 593: 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 614: 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 625: 1473, 1473, 1473, 1473, 1473, 1473, 632: 1473, 637: 1473, 1473, 1473, 1473, 662: 1473, 707: 1473}, + {2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104}, + {2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098}, + {2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086}, // 850 - {2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 774: 2008}, - {1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 774: 1987}, - {1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 774: 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, 774: 1979}, - {1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 774: 1976}, + {2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073}, + {2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062}, + {2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060}, + {2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037}, + {2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031}, // 855 - {1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 774: 1971}, - {1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 774: 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, 774: 1968}, - {1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 774: 1965}, - {1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 774: 1963}, + {2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020}, + {1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999}, + {1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 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}, + {1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988}, // 860 - {1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 774: 1950}, - {1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 774: 1927}, - {1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 774: 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, 774: 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, 774: 1908}, + {1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982}, + {1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 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}, + {1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976}, + {1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974}, // 865 - {1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 774: 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, 774: 1903}, - {1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 774: 1897}, - {1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 774: 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, 774: 1785}, + {1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961}, + {1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938}, + {1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 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}, + {1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919}, // 870 - {1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 774: 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, 774: 1783}, - {1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 774: 1677}, - {1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 774: 1658}, - {1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 774: 1640}, + {1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 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}, + {1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908}, + {1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 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}, // 875 - {1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 774: 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, 774: 1626}, - {1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 774: 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, 774: 1605}, - {1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 532: 1474, 1474, 1474, 536: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 549: 1474, 1474, 1474, 554: 1474, 1474, 1474, 1474, 1474, 1474, 561: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 579: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 588: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 609: 1474, 1474, 1474, 1474, 1474, 615: 1474, 1474, 618: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 632: 1474, 1474, 1474, 1474, 696: 1474, 703: 1474}, + {1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 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}, + {1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687}, + {1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668}, + {1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663}, // 880 - {953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 561: 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 579: 953, 953, 953, 953, 953, 953, 953, 588: 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 615: 953, 953, 618: 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 632: 953, 953, 953, 953, 695: 953, 953, 701: 953, 953, 953, 953, 953, 953, 953, 953, 953, 953}, - {952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 561: 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 579: 952, 952, 952, 952, 952, 952, 952, 588: 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 615: 952, 952, 618: 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 632: 952, 952, 952, 952, 695: 952, 952, 701: 952, 952, 952, 952, 952, 952, 952, 952, 952, 952}, - {435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 561: 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 579: 435, 435, 435, 435, 435, 435, 435, 435, 588: 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 615: 435, 435, 618: 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 632: 435, 435, 435, 435, 695: 435, 435, 701: 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 712: 435, 435, 717: 435, 721: 435, 435, 435, 725: 435, 435}, - {434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 561: 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 579: 434, 434, 434, 434, 434, 434, 434, 434, 588: 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 615: 434, 434, 618: 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 632: 434, 434, 434, 434, 695: 434, 434, 701: 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 712: 434, 434, 717: 434, 721: 434, 434, 434, 725: 434, 434}, - {118: 3767, 127: 3775, 133: 3763, 137: 3760, 3762, 3759, 3761, 3765, 3766, 3771, 3770, 3769, 3773, 3774, 3768, 3772, 3764, 566: 3745, 3743, 3744, 3742, 3740, 594: 3757, 3754, 3756, 3755, 3751, 3753, 3752, 3749, 3750, 3748, 3758, 800: 3741, 3739, 886: 3747, 901: 3746}, + {1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649}, + {1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 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}, + {1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 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}, // 885 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3810}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3809}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3808}, - {2: 2194, 2194, 2194, 2194, 2194, 2194, 2194, 10: 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 58: 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 531: 2194, 533: 2194, 2194, 2194, 2194, 540: 2194, 2194, 543: 2194, 2194, 2194, 547: 2194, 2194, 552: 2194, 2194, 560: 2194, 578: 2194, 586: 2194, 2194, 614: 2194, 617: 2194, 628: 2194, 2194, 2194, 2194, 636: 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 697: 2194, 2194, 2194, 2194, 711: 2194}, - {2: 2193, 2193, 2193, 2193, 2193, 2193, 2193, 10: 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 58: 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 531: 2193, 533: 2193, 2193, 2193, 2193, 540: 2193, 2193, 543: 2193, 2193, 2193, 547: 2193, 2193, 552: 2193, 2193, 560: 2193, 578: 2193, 586: 2193, 2193, 614: 2193, 617: 2193, 628: 2193, 2193, 2193, 2193, 636: 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 697: 2193, 2193, 2193, 2193, 711: 2193}, + {1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 537: 1483, 1483, 1483, 541: 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 554: 1483, 1483, 1483, 559: 1483, 1483, 1483, 1483, 1483, 565: 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 584: 1483, 1483, 1483, 1483, 1483, 1483, 1483, 593: 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 614: 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 625: 1483, 1483, 1483, 1483, 1483, 1483, 632: 1483, 637: 1483, 1483, 1483, 1483, 662: 1483, 707: 1483}, + {961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 565: 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 584: 961, 961, 961, 961, 961, 961, 961, 593: 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 625: 961, 961, 961, 961, 961, 961, 632: 961, 637: 961, 961, 961, 961, 661: 961, 961, 706: 961, 961, 961, 961, 961, 961, 961, 961, 961, 961}, + {960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 565: 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 584: 960, 960, 960, 960, 960, 960, 960, 593: 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 625: 960, 960, 960, 960, 960, 960, 632: 960, 637: 960, 960, 960, 960, 661: 960, 960, 706: 960, 960, 960, 960, 960, 960, 960, 960, 960, 960}, + {436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 565: 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 584: 436, 436, 436, 436, 436, 436, 436, 436, 593: 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 625: 436, 436, 436, 436, 436, 436, 632: 436, 436, 637: 436, 436, 436, 436, 661: 436, 436, 706: 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 717: 436, 436, 722: 436, 726: 436, 436, 436, 730: 436, 436}, + {435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 565: 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 584: 435, 435, 435, 435, 435, 435, 435, 435, 593: 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 625: 435, 435, 435, 435, 435, 435, 632: 435, 435, 637: 435, 435, 435, 435, 661: 435, 435, 706: 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 717: 435, 435, 722: 435, 726: 435, 435, 435, 730: 435, 435}, // 890 - {2: 2192, 2192, 2192, 2192, 2192, 2192, 2192, 10: 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 58: 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 531: 2192, 533: 2192, 2192, 2192, 2192, 540: 2192, 2192, 543: 2192, 2192, 2192, 547: 2192, 2192, 552: 2192, 2192, 560: 2192, 578: 2192, 586: 2192, 2192, 614: 2192, 617: 2192, 628: 2192, 2192, 2192, 2192, 636: 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 697: 2192, 2192, 2192, 2192, 711: 2192}, - {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, 2191, 2191, 2191, 2191, 2191, 58: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 531: 2191, 533: 2191, 2191, 2191, 2191, 540: 2191, 2191, 543: 2191, 2191, 2191, 547: 2191, 2191, 552: 2191, 2191, 560: 2191, 578: 2191, 586: 2191, 2191, 614: 2191, 617: 2191, 628: 2191, 2191, 2191, 2191, 636: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 697: 2191, 2191, 2191, 2191, 711: 2191}, - {543: 3776}, - {1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 549: 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 561: 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 579: 1308, 1308, 1308, 1308, 1308, 1308, 1308, 588: 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 615: 1308, 1308, 618: 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 632: 1308, 1308, 1308, 1308, 695: 1308, 709: 1308, 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, 549: 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 561: 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 579: 1307, 1307, 1307, 1307, 1307, 1307, 1307, 588: 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 615: 1307, 1307, 618: 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 632: 1307, 1307, 1307, 1307, 695: 1307, 709: 1307, 1307}, + {118: 3790, 127: 3798, 133: 3786, 137: 3783, 3785, 3782, 3784, 3788, 3789, 3794, 3793, 3792, 3796, 3797, 3791, 3795, 3787, 571: 3768, 3766, 3767, 3765, 3763, 599: 3780, 3777, 3779, 3778, 3774, 3776, 3775, 3772, 3773, 3771, 3781, 806: 3764, 3762, 892: 3770, 907: 3769}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3833}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3832}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3831}, + {2: 2208, 2208, 2208, 2208, 2208, 2208, 2208, 10: 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 58: 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 536: 2208, 538: 2208, 2208, 2208, 2208, 545: 2208, 2208, 548: 2208, 2208, 2208, 552: 2208, 2208, 557: 2208, 2208, 564: 2208, 583: 2208, 591: 2208, 2208, 624: 2208, 631: 2208, 633: 2208, 2208, 2208, 2208, 641: 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 663: 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 716: 2208}, // 895 - {1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 549: 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 561: 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 579: 1306, 1306, 1306, 1306, 1306, 1306, 1306, 588: 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 615: 1306, 1306, 618: 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 632: 1306, 1306, 1306, 1306, 695: 1306, 709: 1306, 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, 549: 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 561: 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 579: 1305, 1305, 1305, 1305, 1305, 1305, 1305, 588: 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 615: 1305, 1305, 618: 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 632: 1305, 1305, 1305, 1305, 695: 1305, 709: 1305, 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, 549: 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 561: 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 579: 1304, 1304, 1304, 1304, 1304, 1304, 1304, 588: 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 615: 1304, 1304, 618: 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 632: 1304, 1304, 1304, 1304, 695: 1304, 709: 1304, 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, 549: 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 561: 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 579: 1303, 1303, 1303, 1303, 1303, 1303, 1303, 588: 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 615: 1303, 1303, 618: 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 632: 1303, 1303, 1303, 1303, 695: 1303, 709: 1303, 1303}, - {1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 549: 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 561: 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 579: 1302, 1302, 1302, 1302, 1302, 1302, 1302, 588: 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 615: 1302, 1302, 618: 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 632: 1302, 1302, 1302, 1302, 695: 1302, 709: 1302, 1302}, + {2: 2207, 2207, 2207, 2207, 2207, 2207, 2207, 10: 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 58: 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 536: 2207, 538: 2207, 2207, 2207, 2207, 545: 2207, 2207, 548: 2207, 2207, 2207, 552: 2207, 2207, 557: 2207, 2207, 564: 2207, 583: 2207, 591: 2207, 2207, 624: 2207, 631: 2207, 633: 2207, 2207, 2207, 2207, 641: 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 663: 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 716: 2207}, + {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, 2206, 2206, 2206, 2206, 2206, 58: 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 536: 2206, 538: 2206, 2206, 2206, 2206, 545: 2206, 2206, 548: 2206, 2206, 2206, 552: 2206, 2206, 557: 2206, 2206, 564: 2206, 583: 2206, 591: 2206, 2206, 624: 2206, 631: 2206, 633: 2206, 2206, 2206, 2206, 641: 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 663: 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 716: 2206}, + {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, 2205, 2205, 2205, 2205, 2205, 58: 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 536: 2205, 538: 2205, 2205, 2205, 2205, 545: 2205, 2205, 548: 2205, 2205, 2205, 552: 2205, 2205, 557: 2205, 2205, 564: 2205, 583: 2205, 591: 2205, 2205, 624: 2205, 631: 2205, 633: 2205, 2205, 2205, 2205, 641: 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 663: 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 716: 2205}, + {548: 3799}, + {1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 554: 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 565: 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 584: 1316, 1316, 1316, 1316, 1316, 1316, 1316, 593: 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 625: 1316, 1316, 1316, 1316, 1316, 1316, 632: 1316, 637: 1316, 1316, 1316, 1316, 661: 1316, 714: 1316, 1316}, // 900 - {1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 549: 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 561: 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 579: 1301, 1301, 1301, 1301, 1301, 1301, 1301, 588: 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 615: 1301, 1301, 618: 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 632: 1301, 1301, 1301, 1301, 695: 1301, 709: 1301, 1301}, - {1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 549: 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 561: 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 579: 1300, 1300, 1300, 1300, 1300, 1300, 1300, 588: 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 615: 1300, 1300, 618: 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 632: 1300, 1300, 1300, 1300, 695: 1300, 709: 1300, 1300}, - {1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 549: 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 561: 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 579: 1299, 1299, 1299, 1299, 1299, 1299, 1299, 588: 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 615: 1299, 1299, 618: 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 632: 1299, 1299, 1299, 1299, 695: 1299, 709: 1299, 1299}, - {1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 549: 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 561: 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 579: 1298, 1298, 1298, 1298, 1298, 1298, 1298, 588: 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 615: 1298, 1298, 618: 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 632: 1298, 1298, 1298, 1298, 695: 1298, 709: 1298, 1298}, - {1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 549: 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 561: 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 579: 1297, 1297, 1297, 1297, 1297, 1297, 1297, 588: 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 615: 1297, 1297, 618: 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 632: 1297, 1297, 1297, 1297, 695: 1297, 709: 1297, 1297}, + {1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 554: 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 565: 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 584: 1315, 1315, 1315, 1315, 1315, 1315, 1315, 593: 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 625: 1315, 1315, 1315, 1315, 1315, 1315, 632: 1315, 637: 1315, 1315, 1315, 1315, 661: 1315, 714: 1315, 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, 554: 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 565: 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 584: 1314, 1314, 1314, 1314, 1314, 1314, 1314, 593: 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 625: 1314, 1314, 1314, 1314, 1314, 1314, 632: 1314, 637: 1314, 1314, 1314, 1314, 661: 1314, 714: 1314, 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, 554: 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 565: 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 584: 1313, 1313, 1313, 1313, 1313, 1313, 1313, 593: 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 625: 1313, 1313, 1313, 1313, 1313, 1313, 632: 1313, 637: 1313, 1313, 1313, 1313, 661: 1313, 714: 1313, 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, 554: 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 565: 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 584: 1312, 1312, 1312, 1312, 1312, 1312, 1312, 593: 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 625: 1312, 1312, 1312, 1312, 1312, 1312, 632: 1312, 637: 1312, 1312, 1312, 1312, 661: 1312, 714: 1312, 1312}, + {1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 554: 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 565: 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 584: 1311, 1311, 1311, 1311, 1311, 1311, 1311, 593: 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 625: 1311, 1311, 1311, 1311, 1311, 1311, 632: 1311, 637: 1311, 1311, 1311, 1311, 661: 1311, 714: 1311, 1311}, // 905 - {1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 549: 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 561: 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 579: 1296, 1296, 1296, 1296, 1296, 1296, 1296, 588: 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 615: 1296, 1296, 618: 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 632: 1296, 1296, 1296, 1296, 695: 1296, 709: 1296, 1296}, - {1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 549: 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 561: 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 579: 1295, 1295, 1295, 1295, 1295, 1295, 1295, 588: 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 615: 1295, 1295, 618: 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 632: 1295, 1295, 1295, 1295, 695: 1295, 709: 1295, 1295}, - {1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 549: 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 561: 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 579: 1294, 1294, 1294, 1294, 1294, 1294, 1294, 588: 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 615: 1294, 1294, 618: 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 632: 1294, 1294, 1294, 1294, 695: 1294, 709: 1294, 1294}, - {1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 549: 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 561: 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 579: 1293, 1293, 1293, 1293, 1293, 1293, 1293, 588: 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 615: 1293, 1293, 618: 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 632: 1293, 1293, 1293, 1293, 695: 1293, 709: 1293, 1293}, - {1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 549: 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 561: 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 579: 1292, 1292, 1292, 1292, 1292, 1292, 1292, 588: 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 615: 1292, 1292, 618: 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 632: 1292, 1292, 1292, 1292, 695: 1292, 709: 1292, 1292}, + {1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 554: 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 565: 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 584: 1310, 1310, 1310, 1310, 1310, 1310, 1310, 593: 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 625: 1310, 1310, 1310, 1310, 1310, 1310, 632: 1310, 637: 1310, 1310, 1310, 1310, 661: 1310, 714: 1310, 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, 554: 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 565: 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 584: 1309, 1309, 1309, 1309, 1309, 1309, 1309, 593: 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 625: 1309, 1309, 1309, 1309, 1309, 1309, 632: 1309, 637: 1309, 1309, 1309, 1309, 661: 1309, 714: 1309, 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, 554: 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 565: 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 584: 1308, 1308, 1308, 1308, 1308, 1308, 1308, 593: 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 625: 1308, 1308, 1308, 1308, 1308, 1308, 632: 1308, 637: 1308, 1308, 1308, 1308, 661: 1308, 714: 1308, 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, 554: 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 565: 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 584: 1307, 1307, 1307, 1307, 1307, 1307, 1307, 593: 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 625: 1307, 1307, 1307, 1307, 1307, 1307, 632: 1307, 637: 1307, 1307, 1307, 1307, 661: 1307, 714: 1307, 1307}, + {1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 554: 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 565: 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 584: 1306, 1306, 1306, 1306, 1306, 1306, 1306, 593: 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 625: 1306, 1306, 1306, 1306, 1306, 1306, 632: 1306, 637: 1306, 1306, 1306, 1306, 661: 1306, 714: 1306, 1306}, // 910 - {1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 549: 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 561: 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 579: 1291, 1291, 1291, 1291, 1291, 1291, 1291, 588: 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 615: 1291, 1291, 618: 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 632: 1291, 1291, 1291, 1291, 695: 1291, 709: 1291, 1291}, - {1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 549: 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 561: 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 579: 1290, 1290, 1290, 1290, 1290, 1290, 1290, 588: 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 615: 1290, 1290, 618: 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 632: 1290, 1290, 1290, 1290, 695: 1290, 709: 1290, 1290}, - {1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 549: 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 561: 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 579: 1289, 1289, 1289, 1289, 1289, 1289, 1289, 588: 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 615: 1289, 1289, 618: 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 632: 1289, 1289, 1289, 1289, 695: 1289, 709: 1289, 1289}, - {1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 549: 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 561: 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 579: 1288, 1288, 1288, 1288, 1288, 1288, 1288, 588: 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 615: 1288, 1288, 618: 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 632: 1288, 1288, 1288, 1288, 695: 1288, 709: 1288, 1288}, - {1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 549: 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 561: 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 579: 1287, 1287, 1287, 1287, 1287, 1287, 1287, 588: 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 615: 1287, 1287, 618: 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 632: 1287, 1287, 1287, 1287, 695: 1287, 709: 1287, 1287}, + {1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 554: 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 565: 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 584: 1305, 1305, 1305, 1305, 1305, 1305, 1305, 593: 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 625: 1305, 1305, 1305, 1305, 1305, 1305, 632: 1305, 637: 1305, 1305, 1305, 1305, 661: 1305, 714: 1305, 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, 554: 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 565: 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 584: 1304, 1304, 1304, 1304, 1304, 1304, 1304, 593: 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 625: 1304, 1304, 1304, 1304, 1304, 1304, 632: 1304, 637: 1304, 1304, 1304, 1304, 661: 1304, 714: 1304, 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, 554: 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 565: 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 584: 1303, 1303, 1303, 1303, 1303, 1303, 1303, 593: 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 625: 1303, 1303, 1303, 1303, 1303, 1303, 632: 1303, 637: 1303, 1303, 1303, 1303, 661: 1303, 714: 1303, 1303}, + {1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 554: 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 565: 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 584: 1302, 1302, 1302, 1302, 1302, 1302, 1302, 593: 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 625: 1302, 1302, 1302, 1302, 1302, 1302, 632: 1302, 637: 1302, 1302, 1302, 1302, 661: 1302, 714: 1302, 1302}, + {1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 554: 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 565: 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 584: 1301, 1301, 1301, 1301, 1301, 1301, 1301, 593: 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 625: 1301, 1301, 1301, 1301, 1301, 1301, 632: 1301, 637: 1301, 1301, 1301, 1301, 661: 1301, 714: 1301, 1301}, // 915 - {1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 549: 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 561: 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 579: 1286, 1286, 1286, 1286, 1286, 1286, 1286, 588: 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 615: 1286, 1286, 618: 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 632: 1286, 1286, 1286, 1286, 695: 1286, 709: 1286, 1286}, - {1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 549: 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 561: 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 579: 1285, 1285, 1285, 1285, 1285, 1285, 1285, 588: 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 615: 1285, 1285, 618: 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 632: 1285, 1285, 1285, 1285, 695: 1285, 709: 1285, 1285}, - {1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 549: 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 561: 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 579: 1284, 1284, 1284, 1284, 1284, 1284, 1284, 588: 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 615: 1284, 1284, 618: 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 632: 1284, 1284, 1284, 1284, 695: 1284, 709: 1284, 1284}, - {1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 549: 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 561: 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 579: 1283, 1283, 1283, 1283, 1283, 1283, 1283, 588: 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 615: 1283, 1283, 618: 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 632: 1283, 1283, 1283, 1283, 695: 1283, 709: 1283, 1283}, - {1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 549: 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 561: 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 579: 1282, 1282, 1282, 1282, 1282, 1282, 1282, 588: 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 615: 1282, 1282, 618: 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 632: 1282, 1282, 1282, 1282, 695: 1282, 709: 1282, 1282}, + {1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 554: 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 565: 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 584: 1300, 1300, 1300, 1300, 1300, 1300, 1300, 593: 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 625: 1300, 1300, 1300, 1300, 1300, 1300, 632: 1300, 637: 1300, 1300, 1300, 1300, 661: 1300, 714: 1300, 1300}, + {1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 554: 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 565: 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 584: 1299, 1299, 1299, 1299, 1299, 1299, 1299, 593: 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 625: 1299, 1299, 1299, 1299, 1299, 1299, 632: 1299, 637: 1299, 1299, 1299, 1299, 661: 1299, 714: 1299, 1299}, + {1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 554: 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 565: 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 584: 1298, 1298, 1298, 1298, 1298, 1298, 1298, 593: 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 625: 1298, 1298, 1298, 1298, 1298, 1298, 632: 1298, 637: 1298, 1298, 1298, 1298, 661: 1298, 714: 1298, 1298}, + {1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 554: 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 565: 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 584: 1297, 1297, 1297, 1297, 1297, 1297, 1297, 593: 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 625: 1297, 1297, 1297, 1297, 1297, 1297, 632: 1297, 637: 1297, 1297, 1297, 1297, 661: 1297, 714: 1297, 1297}, + {1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 554: 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 565: 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 584: 1296, 1296, 1296, 1296, 1296, 1296, 1296, 593: 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 625: 1296, 1296, 1296, 1296, 1296, 1296, 632: 1296, 637: 1296, 1296, 1296, 1296, 661: 1296, 714: 1296, 1296}, // 920 - {1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 549: 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 561: 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 579: 1281, 1281, 1281, 1281, 1281, 1281, 1281, 588: 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 615: 1281, 1281, 618: 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 632: 1281, 1281, 1281, 1281, 695: 1281, 709: 1281, 1281}, - {1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 549: 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 561: 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 579: 1280, 1280, 1280, 1280, 1280, 1280, 1280, 588: 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 615: 1280, 1280, 618: 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 632: 1280, 1280, 1280, 1280, 695: 1280, 709: 1280, 1280}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3777}, - {1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 532: 1489, 1489, 1489, 536: 1489, 1489, 539: 1489, 1489, 1489, 1489, 1489, 1489, 3788, 549: 1489, 1489, 1489, 554: 1489, 1489, 1489, 1489, 1489, 1489, 561: 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 579: 1489, 1489, 1489, 1489, 1489, 3784, 1489, 588: 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 609: 3785, 3786, 1489, 3789, 1489, 615: 3787, 1489, 618: 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 632: 1489, 1489, 1489, 1489}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3807}, + {1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 554: 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 565: 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 584: 1295, 1295, 1295, 1295, 1295, 1295, 1295, 593: 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 625: 1295, 1295, 1295, 1295, 1295, 1295, 632: 1295, 637: 1295, 1295, 1295, 1295, 661: 1295, 714: 1295, 1295}, + {1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 554: 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 565: 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 584: 1294, 1294, 1294, 1294, 1294, 1294, 1294, 593: 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 625: 1294, 1294, 1294, 1294, 1294, 1294, 632: 1294, 637: 1294, 1294, 1294, 1294, 661: 1294, 714: 1294, 1294}, + {1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 554: 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 565: 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 584: 1293, 1293, 1293, 1293, 1293, 1293, 1293, 593: 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 625: 1293, 1293, 1293, 1293, 1293, 1293, 632: 1293, 637: 1293, 1293, 1293, 1293, 661: 1293, 714: 1293, 1293}, + {1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 554: 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 565: 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 584: 1292, 1292, 1292, 1292, 1292, 1292, 1292, 593: 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 625: 1292, 1292, 1292, 1292, 1292, 1292, 632: 1292, 637: 1292, 1292, 1292, 1292, 661: 1292, 714: 1292, 1292}, + {1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 554: 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 565: 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 584: 1291, 1291, 1291, 1291, 1291, 1291, 1291, 593: 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 625: 1291, 1291, 1291, 1291, 1291, 1291, 632: 1291, 637: 1291, 1291, 1291, 1291, 661: 1291, 714: 1291, 1291}, // 925 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3806}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3805}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3804}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3801, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3800}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3797, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3796}, + {1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 554: 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 565: 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 584: 1290, 1290, 1290, 1290, 1290, 1290, 1290, 593: 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 625: 1290, 1290, 1290, 1290, 1290, 1290, 632: 1290, 637: 1290, 1290, 1290, 1290, 661: 1290, 714: 1290, 1290}, + {1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 554: 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 565: 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 584: 1289, 1289, 1289, 1289, 1289, 1289, 1289, 593: 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 625: 1289, 1289, 1289, 1289, 1289, 1289, 632: 1289, 637: 1289, 1289, 1289, 1289, 661: 1289, 714: 1289, 1289}, + {1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 554: 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 565: 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 584: 1288, 1288, 1288, 1288, 1288, 1288, 1288, 593: 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 625: 1288, 1288, 1288, 1288, 1288, 1288, 632: 1288, 637: 1288, 1288, 1288, 1288, 661: 1288, 714: 1288, 1288}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3800}, + {1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 537: 1498, 1498, 1498, 541: 1498, 1498, 544: 1498, 1498, 1498, 1498, 1498, 1498, 3811, 554: 1498, 1498, 1498, 559: 1498, 1498, 1498, 1498, 1498, 565: 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 584: 1498, 1498, 1498, 1498, 1498, 3807, 1498, 593: 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 614: 3808, 3809, 1498, 3812, 1498, 3810, 1498, 1498, 1498, 1498, 625: 1498, 1498, 1498, 1498, 1498, 1498, 632: 1498, 637: 1498, 1498, 1498, 1498}, // 930 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3795}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3794}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3793}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3792}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3791}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3830}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3829}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3828}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3827}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3824, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3823}, // 935 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3790}, - {1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 532: 1483, 1483, 1483, 536: 1483, 1483, 539: 1483, 1483, 1483, 1483, 1483, 1483, 1483, 549: 1483, 1483, 1483, 554: 1483, 1483, 1483, 1483, 1483, 1483, 561: 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 579: 1483, 1483, 1483, 1483, 1483, 1483, 1483, 588: 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 609: 1483, 1483, 1483, 1483, 1483, 615: 1483, 1483, 618: 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 632: 1483, 1483, 1483, 1483}, - {1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 532: 1484, 1484, 1484, 536: 1484, 1484, 539: 1484, 1484, 1484, 1484, 1484, 1484, 1484, 549: 1484, 1484, 1484, 554: 1484, 1484, 1484, 1484, 1484, 1484, 561: 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 579: 1484, 1484, 1484, 1484, 1484, 1484, 1484, 588: 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 609: 1484, 1484, 1484, 3789, 1484, 615: 1484, 1484, 618: 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 632: 1484, 1484, 1484, 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, 532: 1485, 1485, 1485, 536: 1485, 1485, 539: 1485, 1485, 1485, 1485, 1485, 1485, 1485, 549: 1485, 1485, 1485, 554: 1485, 1485, 1485, 1485, 1485, 1485, 561: 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 579: 1485, 1485, 1485, 1485, 1485, 1485, 1485, 588: 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 609: 1485, 1485, 1485, 3789, 1485, 615: 1485, 1485, 618: 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 632: 1485, 1485, 1485, 1485}, - {1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 532: 1486, 1486, 1486, 536: 1486, 1486, 539: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 549: 1486, 1486, 1486, 554: 1486, 1486, 1486, 1486, 1486, 1486, 561: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 579: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 588: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 609: 1486, 1486, 1486, 3789, 1486, 615: 1486, 1486, 618: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 632: 1486, 1486, 1486, 1486}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3820, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3819}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3818}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3817}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3816}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3815}, // 940 - {1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 532: 1487, 1487, 1487, 536: 1487, 1487, 539: 1487, 1487, 1487, 1487, 1487, 1487, 1487, 549: 1487, 1487, 1487, 554: 1487, 1487, 1487, 1487, 1487, 1487, 561: 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 579: 1487, 1487, 1487, 1487, 1487, 1487, 1487, 588: 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 609: 1487, 1487, 1487, 3789, 1487, 615: 1487, 1487, 618: 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 632: 1487, 1487, 1487, 1487}, - {1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 532: 1488, 1488, 1488, 536: 1488, 1488, 539: 1488, 1488, 1488, 1488, 1488, 1488, 1488, 549: 1488, 1488, 1488, 554: 1488, 1488, 1488, 1488, 1488, 1488, 561: 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 579: 1488, 1488, 1488, 1488, 1488, 1488, 1488, 588: 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 609: 1488, 1488, 1488, 3789, 1488, 615: 1488, 1488, 618: 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 632: 1488, 1488, 1488, 1488}, - {1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 532: 1492, 1492, 1492, 536: 1492, 1492, 539: 1492, 1492, 1492, 1492, 1492, 1492, 3788, 549: 1492, 1492, 1492, 554: 1492, 1492, 1492, 1492, 1492, 1492, 561: 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 579: 1492, 1492, 1492, 1492, 1492, 3784, 1492, 588: 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 609: 3785, 3786, 1492, 3789, 1492, 615: 3787, 1492, 618: 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 632: 1492, 1492, 1492, 1492}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 1426, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3798}, - {118: 3767, 127: 3775, 133: 3763, 137: 3760, 3762, 3759, 3761, 3765, 3766, 3771, 3770, 3769, 3773, 3774, 3768, 3772, 3764, 566: 3745, 3743, 3744, 3742, 3740, 594: 3757, 3754, 3756, 3755, 3751, 3753, 3752, 3749, 3750, 3748, 3758, 800: 3741, 3739, 886: 3747, 901: 3799}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3814}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3813}, + {1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 537: 1492, 1492, 1492, 541: 1492, 1492, 544: 1492, 1492, 1492, 1492, 1492, 1492, 1492, 554: 1492, 1492, 1492, 559: 1492, 1492, 1492, 1492, 1492, 565: 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 584: 1492, 1492, 1492, 1492, 1492, 1492, 1492, 593: 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 614: 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 625: 1492, 1492, 1492, 1492, 1492, 1492, 632: 1492, 637: 1492, 1492, 1492, 1492}, + {1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 537: 1493, 1493, 1493, 541: 1493, 1493, 544: 1493, 1493, 1493, 1493, 1493, 1493, 1493, 554: 1493, 1493, 1493, 559: 1493, 1493, 1493, 1493, 1493, 565: 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 584: 1493, 1493, 1493, 1493, 1493, 1493, 1493, 593: 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 614: 1493, 1493, 1493, 3812, 1493, 1493, 1493, 1493, 1493, 1493, 625: 1493, 1493, 1493, 1493, 1493, 1493, 632: 1493, 637: 1493, 1493, 1493, 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, 537: 1494, 1494, 1494, 541: 1494, 1494, 544: 1494, 1494, 1494, 1494, 1494, 1494, 1494, 554: 1494, 1494, 1494, 559: 1494, 1494, 1494, 1494, 1494, 565: 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 584: 1494, 1494, 1494, 1494, 1494, 1494, 1494, 593: 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 614: 1494, 1494, 1494, 3812, 1494, 1494, 1494, 1494, 1494, 1494, 625: 1494, 1494, 1494, 1494, 1494, 1494, 632: 1494, 637: 1494, 1494, 1494, 1494}, // 945 - {1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 532: 1490, 1490, 1490, 536: 1490, 1490, 539: 1490, 1490, 1490, 1490, 1490, 1490, 1490, 549: 1490, 1490, 1490, 554: 1490, 1490, 1490, 1490, 1490, 1490, 561: 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 579: 1490, 1490, 1490, 1490, 1490, 1490, 1490, 588: 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 609: 1490, 1490, 1490, 1490, 1490, 615: 1490, 1490, 618: 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 632: 1490, 1490, 1490, 1490}, - {1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 532: 1493, 1493, 1493, 536: 1493, 1493, 539: 1493, 1493, 1493, 1493, 1493, 1493, 3788, 549: 1493, 1493, 1493, 554: 1493, 1493, 1493, 1493, 1493, 1493, 561: 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 579: 1493, 1493, 1493, 1493, 1493, 3784, 1493, 588: 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 609: 3785, 3786, 1493, 3789, 1493, 615: 3787, 1493, 618: 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 632: 1493, 1493, 1493, 1493}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 1426, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3802}, - {118: 3767, 127: 3775, 133: 3763, 137: 3760, 3762, 3759, 3761, 3765, 3766, 3771, 3770, 3769, 3773, 3774, 3768, 3772, 3764, 566: 3745, 3743, 3744, 3742, 3740, 594: 3757, 3754, 3756, 3755, 3751, 3753, 3752, 3749, 3750, 3748, 3758, 800: 3741, 3739, 886: 3747, 901: 3803}, - {1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 532: 1491, 1491, 1491, 536: 1491, 1491, 539: 1491, 1491, 1491, 1491, 1491, 1491, 1491, 549: 1491, 1491, 1491, 554: 1491, 1491, 1491, 1491, 1491, 1491, 561: 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 579: 1491, 1491, 1491, 1491, 1491, 1491, 1491, 588: 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 609: 1491, 1491, 1491, 1491, 1491, 615: 1491, 1491, 618: 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 632: 1491, 1491, 1491, 1491}, + {1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 537: 1495, 1495, 1495, 541: 1495, 1495, 544: 1495, 1495, 1495, 1495, 1495, 1495, 1495, 554: 1495, 1495, 1495, 559: 1495, 1495, 1495, 1495, 1495, 565: 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 584: 1495, 1495, 1495, 1495, 1495, 1495, 1495, 593: 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 614: 1495, 1495, 1495, 3812, 1495, 1495, 1495, 1495, 1495, 1495, 625: 1495, 1495, 1495, 1495, 1495, 1495, 632: 1495, 637: 1495, 1495, 1495, 1495}, + {1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 537: 1496, 1496, 1496, 541: 1496, 1496, 544: 1496, 1496, 1496, 1496, 1496, 1496, 1496, 554: 1496, 1496, 1496, 559: 1496, 1496, 1496, 1496, 1496, 565: 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 584: 1496, 1496, 1496, 1496, 1496, 1496, 1496, 593: 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 614: 1496, 1496, 1496, 3812, 1496, 1496, 1496, 1496, 1496, 1496, 625: 1496, 1496, 1496, 1496, 1496, 1496, 632: 1496, 637: 1496, 1496, 1496, 1496}, + {1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 537: 1497, 1497, 1497, 541: 1497, 1497, 544: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 554: 1497, 1497, 1497, 559: 1497, 1497, 1497, 1497, 1497, 565: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 584: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 593: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 614: 1497, 1497, 1497, 3812, 1497, 1497, 1497, 1497, 1497, 1497, 625: 1497, 1497, 1497, 1497, 1497, 1497, 632: 1497, 637: 1497, 1497, 1497, 1497}, + {1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 537: 1501, 1501, 1501, 541: 1501, 1501, 544: 1501, 1501, 1501, 1501, 1501, 1501, 3811, 554: 1501, 1501, 1501, 559: 1501, 1501, 1501, 1501, 1501, 565: 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 584: 1501, 1501, 1501, 1501, 1501, 3807, 1501, 593: 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 614: 3808, 3809, 1501, 3812, 1501, 3810, 1501, 1501, 1501, 1501, 625: 1501, 1501, 1501, 1501, 1501, 1501, 632: 1501, 637: 1501, 1501, 1501, 1501}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 1435, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3821}, // 950 - {1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 532: 1494, 1494, 1494, 536: 1494, 1494, 539: 1494, 1494, 1494, 1494, 3782, 3783, 3788, 549: 1494, 1494, 1494, 554: 1494, 1494, 1494, 1494, 1494, 1494, 561: 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 579: 1494, 1494, 1494, 1494, 1494, 3784, 1494, 588: 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 609: 3785, 3786, 1494, 3789, 1494, 615: 3787, 1494, 618: 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 632: 1494, 1494, 1494, 1494}, - {1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 532: 1495, 1495, 1495, 536: 1495, 1495, 539: 1495, 1495, 1495, 1495, 3782, 3783, 3788, 549: 1495, 1495, 1495, 554: 1495, 1495, 1495, 1495, 1495, 1495, 561: 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 579: 1495, 1495, 1495, 1495, 1495, 3784, 1495, 588: 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 609: 3785, 3786, 1495, 3789, 1495, 615: 3787, 1495, 618: 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 632: 1495, 1495, 1495, 1495}, - {1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 532: 1496, 1496, 1496, 536: 1496, 1496, 539: 1496, 1496, 1496, 1496, 3782, 3783, 3788, 549: 1496, 1496, 1496, 554: 1496, 1496, 1496, 1496, 1496, 1496, 561: 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 579: 1496, 1496, 1496, 1496, 1496, 3784, 1496, 588: 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 609: 3785, 3786, 1496, 3789, 1496, 615: 3787, 3780, 618: 3781, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 632: 1496, 1496, 1496, 1496}, - {1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 532: 1497, 1497, 1497, 536: 1497, 1497, 539: 1497, 1497, 1497, 1497, 3782, 3783, 3788, 549: 1497, 1497, 1497, 554: 1497, 1497, 1497, 1497, 1497, 1497, 561: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 579: 1497, 1497, 1497, 1497, 1497, 3784, 1497, 588: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 609: 3785, 3786, 3779, 3789, 1497, 615: 3787, 3780, 618: 3781, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 632: 1497, 1497, 1497, 1497}, - {2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 532: 2210, 2210, 537: 2210, 539: 2210, 2210, 2210, 2210, 549: 2210, 2210, 2210, 554: 2210, 556: 2210, 2210, 2210, 2210, 561: 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 580: 2210, 2210, 2210, 2210, 585: 2210, 588: 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 607: 2210, 800: 3741, 3739}, + {118: 3790, 127: 3798, 133: 3786, 137: 3783, 3785, 3782, 3784, 3788, 3789, 3794, 3793, 3792, 3796, 3797, 3791, 3795, 3787, 571: 3768, 3766, 3767, 3765, 3763, 599: 3780, 3777, 3779, 3778, 3774, 3776, 3775, 3772, 3773, 3771, 3781, 806: 3764, 3762, 892: 3770, 907: 3822}, + {1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 537: 1499, 1499, 1499, 541: 1499, 1499, 544: 1499, 1499, 1499, 1499, 1499, 1499, 1499, 554: 1499, 1499, 1499, 559: 1499, 1499, 1499, 1499, 1499, 565: 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 584: 1499, 1499, 1499, 1499, 1499, 1499, 1499, 593: 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 614: 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 625: 1499, 1499, 1499, 1499, 1499, 1499, 632: 1499, 637: 1499, 1499, 1499, 1499}, + {1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 537: 1502, 1502, 1502, 541: 1502, 1502, 544: 1502, 1502, 1502, 1502, 1502, 1502, 3811, 554: 1502, 1502, 1502, 559: 1502, 1502, 1502, 1502, 1502, 565: 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 584: 1502, 1502, 1502, 1502, 1502, 3807, 1502, 593: 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 614: 3808, 3809, 1502, 3812, 1502, 3810, 1502, 1502, 1502, 1502, 625: 1502, 1502, 1502, 1502, 1502, 1502, 632: 1502, 637: 1502, 1502, 1502, 1502}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 1435, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3825}, + {118: 3790, 127: 3798, 133: 3786, 137: 3783, 3785, 3782, 3784, 3788, 3789, 3794, 3793, 3792, 3796, 3797, 3791, 3795, 3787, 571: 3768, 3766, 3767, 3765, 3763, 599: 3780, 3777, 3779, 3778, 3774, 3776, 3775, 3772, 3773, 3771, 3781, 806: 3764, 3762, 892: 3770, 907: 3826}, // 955 - {2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 532: 2211, 2211, 537: 2211, 539: 2211, 2211, 2211, 2211, 549: 2211, 2211, 2211, 554: 2211, 556: 2211, 2211, 2211, 2211, 561: 2211, 2211, 2211, 2211, 2211, 3745, 2211, 3744, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 580: 2211, 2211, 2211, 2211, 585: 2211, 588: 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 607: 2211, 800: 3741, 3739}, - {2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 532: 2212, 2212, 537: 2212, 539: 2212, 2212, 2212, 2212, 549: 2212, 2212, 2212, 554: 2212, 556: 2212, 2212, 2212, 2212, 561: 2212, 2212, 2212, 2212, 2212, 3745, 2212, 3744, 2212, 3740, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 580: 2212, 2212, 2212, 2212, 585: 2212, 588: 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 607: 2212, 800: 3741, 3739}, - {190: 2590, 226: 2590, 548: 2590, 579: 2590, 606: 2590, 627: 2590, 629: 2590, 2590, 632: 2590, 2590, 2590, 645: 2590}, - {190: 2589, 226: 2589, 548: 2589, 579: 2589, 606: 2589, 627: 2589, 629: 2589, 2589, 632: 2589, 2589, 2589, 645: 2589}, - {2: 2166, 2166, 2166, 2166, 2166, 2166, 2166, 10: 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 58: 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 531: 2166, 533: 2166, 2166, 2166, 540: 2166, 2166, 543: 2166, 2166, 2166, 547: 2166, 2166, 552: 2166, 2166, 560: 2166, 578: 2166, 586: 2166, 2166, 614: 2166, 617: 2166, 628: 2166, 2166, 2166, 2166, 636: 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 697: 2166, 2166, 2166, 2166}, + {1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 537: 1500, 1500, 1500, 541: 1500, 1500, 544: 1500, 1500, 1500, 1500, 1500, 1500, 1500, 554: 1500, 1500, 1500, 559: 1500, 1500, 1500, 1500, 1500, 565: 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 584: 1500, 1500, 1500, 1500, 1500, 1500, 1500, 593: 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 614: 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 625: 1500, 1500, 1500, 1500, 1500, 1500, 632: 1500, 637: 1500, 1500, 1500, 1500}, + {1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 537: 1503, 1503, 1503, 541: 1503, 1503, 544: 1503, 1503, 1503, 1503, 3805, 3806, 3811, 554: 1503, 1503, 1503, 559: 1503, 1503, 1503, 1503, 1503, 565: 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 584: 1503, 1503, 1503, 1503, 1503, 3807, 1503, 593: 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 614: 3808, 3809, 1503, 3812, 1503, 3810, 1503, 1503, 1503, 1503, 625: 1503, 1503, 1503, 1503, 1503, 1503, 632: 1503, 637: 1503, 1503, 1503, 1503}, + {1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 537: 1504, 1504, 1504, 541: 1504, 1504, 544: 1504, 1504, 1504, 1504, 3805, 3806, 3811, 554: 1504, 1504, 1504, 559: 1504, 1504, 1504, 1504, 1504, 565: 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 584: 1504, 1504, 1504, 1504, 1504, 3807, 1504, 593: 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 614: 3808, 3809, 1504, 3812, 1504, 3810, 1504, 1504, 1504, 1504, 625: 1504, 1504, 1504, 1504, 1504, 1504, 632: 1504, 637: 1504, 1504, 1504, 1504}, + {1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 537: 1505, 1505, 1505, 541: 1505, 1505, 544: 1505, 1505, 1505, 1505, 3805, 3806, 3811, 554: 1505, 1505, 1505, 559: 1505, 1505, 1505, 1505, 1505, 565: 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 584: 1505, 1505, 1505, 1505, 1505, 3807, 1505, 593: 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 614: 3808, 3809, 1505, 3812, 1505, 3810, 3803, 3804, 1505, 1505, 625: 1505, 1505, 1505, 1505, 1505, 1505, 632: 1505, 637: 1505, 1505, 1505, 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, 537: 1506, 1506, 1506, 541: 1506, 1506, 544: 1506, 1506, 1506, 1506, 3805, 3806, 3811, 554: 1506, 1506, 1506, 559: 1506, 1506, 1506, 1506, 1506, 565: 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 584: 1506, 1506, 1506, 1506, 1506, 3807, 1506, 593: 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 614: 3808, 3809, 3802, 3812, 1506, 3810, 3803, 3804, 1506, 1506, 625: 1506, 1506, 1506, 1506, 1506, 1506, 632: 1506, 637: 1506, 1506, 1506, 1506}, // 960 - {579: 3995, 606: 3994, 627: 3993, 632: 3996, 3825, 3826, 1250: 3997}, - {531: 2162}, - {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, 2160, 2160, 2160, 2160, 2160, 58: 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 531: 2160, 533: 2160, 2160, 2160, 540: 2160, 2160, 543: 2160, 2160, 2160, 547: 2160, 2160, 552: 2160, 2160, 560: 2160, 578: 2160, 586: 2160, 2160, 614: 2160, 617: 2160, 628: 2160, 2160, 2160, 2160, 636: 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 697: 2160, 2160, 2160, 2160}, - {2: 2158, 2158, 2158, 2158, 2158, 2158, 2158, 10: 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 58: 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 531: 2158, 533: 2158, 2158, 2158, 540: 2158, 2158, 543: 2158, 2158, 2158, 547: 2158, 2158, 552: 2158, 2158, 560: 2158, 578: 2158, 586: 2158, 2158, 614: 2158, 617: 2158, 628: 2158, 2158, 2158, 2158, 636: 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 697: 2158, 2158, 2158, 2158}, - {2: 2156, 2156, 2156, 2156, 2156, 2156, 2156, 10: 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 58: 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 531: 2156, 533: 2156, 2156, 2156, 540: 2156, 2156, 543: 2156, 2156, 2156, 547: 2156, 2156, 552: 2156, 2156, 560: 2156, 578: 2156, 586: 2156, 2156, 614: 2156, 617: 2156, 628: 2156, 2156, 2156, 2156, 636: 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 697: 2156, 2156, 2156, 2156}, + {2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 537: 2224, 2224, 542: 2224, 544: 2224, 2224, 2224, 2224, 554: 2224, 2224, 2224, 559: 2224, 2224, 562: 2224, 2224, 565: 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 585: 2224, 2224, 2224, 2224, 590: 2224, 593: 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 612: 2224, 806: 3764, 3762}, + {2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 537: 2225, 2225, 542: 2225, 544: 2225, 2225, 2225, 2225, 554: 2225, 2225, 2225, 559: 2225, 2225, 562: 2225, 2225, 565: 2225, 2225, 2225, 2225, 2225, 2225, 3768, 2225, 3767, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 585: 2225, 2225, 2225, 2225, 590: 2225, 593: 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 612: 2225, 806: 3764, 3762}, + {2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 537: 2226, 2226, 542: 2226, 544: 2226, 2226, 2226, 2226, 554: 2226, 2226, 2226, 559: 2226, 2226, 562: 2226, 2226, 565: 2226, 2226, 2226, 2226, 2226, 2226, 3768, 2226, 3767, 2226, 3763, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 585: 2226, 2226, 2226, 2226, 590: 2226, 593: 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 612: 2226, 806: 3764, 3762}, + {190: 2604, 226: 2604, 553: 2604, 584: 2604, 611: 2604, 632: 2604, 634: 2604, 2604, 637: 2604, 2604, 2604, 650: 2604}, + {190: 2603, 226: 2603, 553: 2603, 584: 2603, 611: 2603, 632: 2603, 634: 2603, 2603, 637: 2603, 2603, 2603, 650: 2603}, // 965 - {531: 3840, 775: 3841}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3837}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3616, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3835, 3597, 3679, 3596, 3593}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3616, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3831, 3597, 3679, 3596, 3593}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3616, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3830, 3597, 3679, 3596, 3593}, + {2: 2180, 2180, 2180, 2180, 2180, 2180, 2180, 10: 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 58: 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 536: 2180, 538: 2180, 2180, 2180, 545: 2180, 2180, 548: 2180, 2180, 2180, 552: 2180, 2180, 557: 2180, 2180, 564: 2180, 583: 2180, 591: 2180, 2180, 624: 2180, 631: 2180, 633: 2180, 2180, 2180, 2180, 641: 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 663: 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180}, + {584: 4018, 611: 4017, 632: 4016, 637: 4019, 3848, 3849, 1256: 4020}, + {536: 2176}, + {2: 2174, 2174, 2174, 2174, 2174, 2174, 2174, 10: 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 58: 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 536: 2174, 538: 2174, 2174, 2174, 545: 2174, 2174, 548: 2174, 2174, 2174, 552: 2174, 2174, 557: 2174, 2174, 564: 2174, 583: 2174, 591: 2174, 2174, 624: 2174, 631: 2174, 633: 2174, 2174, 2174, 2174, 641: 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 663: 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174}, + {2: 2172, 2172, 2172, 2172, 2172, 2172, 2172, 10: 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 58: 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 536: 2172, 538: 2172, 2172, 2172, 545: 2172, 2172, 548: 2172, 2172, 2172, 552: 2172, 2172, 557: 2172, 2172, 564: 2172, 583: 2172, 591: 2172, 2172, 624: 2172, 631: 2172, 633: 2172, 2172, 2172, 2172, 641: 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 663: 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172}, // 970 - {531: 3827}, - {2: 2143, 2143, 2143, 2143, 2143, 2143, 2143, 10: 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 58: 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 531: 2143, 533: 2143, 2143, 2143, 540: 2143, 2143, 543: 2143, 2143, 2143, 547: 2143, 2143, 552: 2143, 2143, 560: 2143, 578: 2143, 586: 2143, 2143, 614: 2143, 617: 2143, 628: 2143, 2143, 2143, 2143, 636: 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 697: 2143, 2143, 2143, 2143}, - {2: 2142, 2142, 2142, 2142, 2142, 2142, 2142, 10: 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 58: 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 531: 2142, 533: 2142, 2142, 2142, 540: 2142, 2142, 543: 2142, 2142, 2142, 547: 2142, 2142, 552: 2142, 2142, 560: 2142, 578: 2142, 586: 2142, 2142, 614: 2142, 617: 2142, 628: 2142, 2142, 2142, 2142, 636: 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 697: 2142, 2142, 2142, 2142}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3616, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3828, 3597, 3679, 3596, 3593}, - {57: 3829, 538: 3693, 703: 3694}, + {2: 2170, 2170, 2170, 2170, 2170, 2170, 2170, 10: 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 58: 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 536: 2170, 538: 2170, 2170, 2170, 545: 2170, 2170, 548: 2170, 2170, 2170, 552: 2170, 2170, 557: 2170, 2170, 564: 2170, 583: 2170, 591: 2170, 2170, 624: 2170, 631: 2170, 633: 2170, 2170, 2170, 2170, 641: 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 663: 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170}, + {536: 3863, 781: 3864}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3860}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3638, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3858, 3619, 3701, 3618, 3615}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3638, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3854, 3619, 3701, 3618, 3615}, // 975 - {2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 532: 2145, 2145, 537: 2145, 539: 2145, 2145, 2145, 2145, 549: 2145, 2145, 2145, 554: 2145, 2145, 2145, 2145, 2145, 2145, 561: 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 580: 2145, 2145, 2145, 2145, 585: 2145, 588: 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 607: 2145, 619: 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145}, - {2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 532: 2146, 2146, 537: 2146, 3693, 2146, 2146, 2146, 2146, 549: 2146, 2146, 2146, 554: 2146, 2146, 2146, 2146, 2146, 2146, 561: 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 580: 2146, 2146, 2146, 2146, 585: 2146, 588: 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 607: 2146, 619: 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 703: 3694}, - {2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 3833, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 532: 2141, 2141, 537: 2141, 3693, 2141, 2141, 2141, 2141, 549: 2141, 2141, 2141, 554: 2141, 2141, 2141, 2141, 2141, 2141, 561: 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 580: 2141, 2141, 2141, 2141, 585: 2141, 588: 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 607: 2141, 619: 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 703: 3694, 1200: 3832}, - {2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 532: 2147, 2147, 537: 2147, 539: 2147, 2147, 2147, 2147, 549: 2147, 2147, 2147, 554: 2147, 2147, 2147, 2147, 2147, 2147, 561: 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 580: 2147, 2147, 2147, 2147, 585: 2147, 588: 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 607: 2147, 619: 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147}, - {533: 3834}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3638, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3853, 3619, 3701, 3618, 3615}, + {536: 3850}, + {2: 2157, 2157, 2157, 2157, 2157, 2157, 2157, 10: 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 58: 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 536: 2157, 538: 2157, 2157, 2157, 545: 2157, 2157, 548: 2157, 2157, 2157, 552: 2157, 2157, 557: 2157, 2157, 564: 2157, 583: 2157, 591: 2157, 2157, 624: 2157, 631: 2157, 633: 2157, 2157, 2157, 2157, 641: 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 663: 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157}, + {2: 2156, 2156, 2156, 2156, 2156, 2156, 2156, 10: 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 58: 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 536: 2156, 538: 2156, 2156, 2156, 545: 2156, 2156, 548: 2156, 2156, 2156, 552: 2156, 2156, 557: 2156, 2156, 564: 2156, 583: 2156, 591: 2156, 2156, 624: 2156, 631: 2156, 633: 2156, 2156, 2156, 2156, 641: 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 663: 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3638, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3851, 3619, 3701, 3618, 3615}, // 980 - {2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 532: 2140, 2140, 537: 2140, 539: 2140, 2140, 2140, 2140, 549: 2140, 2140, 2140, 554: 2140, 2140, 2140, 2140, 2140, 2140, 561: 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 580: 2140, 2140, 2140, 2140, 585: 2140, 588: 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 607: 2140, 619: 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140}, - {2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 3833, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 532: 2141, 2141, 537: 2141, 3693, 2141, 2141, 2141, 2141, 549: 2141, 2141, 2141, 554: 2141, 2141, 2141, 2141, 2141, 2141, 561: 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 580: 2141, 2141, 2141, 2141, 585: 2141, 588: 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 607: 2141, 619: 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 703: 3694, 1200: 3836}, - {2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 532: 2148, 2148, 537: 2148, 539: 2148, 2148, 2148, 2148, 549: 2148, 2148, 2148, 554: 2148, 2148, 2148, 2148, 2148, 2148, 561: 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 580: 2148, 2148, 2148, 2148, 585: 2148, 588: 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 607: 2148, 619: 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148}, - {543: 3782, 3783, 3788, 566: 3838, 584: 3784, 609: 3785, 3786, 3779, 3789, 3778, 615: 3787, 3780, 618: 3781}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3839}, + {57: 3852, 543: 3715, 707: 3716}, + {2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 537: 2159, 2159, 542: 2159, 544: 2159, 2159, 2159, 2159, 554: 2159, 2159, 2159, 559: 2159, 2159, 2159, 2159, 2159, 565: 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 585: 2159, 2159, 2159, 2159, 590: 2159, 593: 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 612: 2159, 622: 2159, 2159, 625: 2159, 2159, 2159, 2159, 2159, 2159}, + {2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 537: 2160, 2160, 542: 2160, 3715, 2160, 2160, 2160, 2160, 554: 2160, 2160, 2160, 559: 2160, 2160, 2160, 2160, 2160, 565: 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 585: 2160, 2160, 2160, 2160, 590: 2160, 593: 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 612: 2160, 622: 2160, 2160, 625: 2160, 2160, 2160, 2160, 2160, 2160, 707: 3716}, + {2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 3856, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 537: 2155, 2155, 542: 2155, 3715, 2155, 2155, 2155, 2155, 554: 2155, 2155, 2155, 559: 2155, 2155, 2155, 2155, 2155, 565: 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 585: 2155, 2155, 2155, 2155, 590: 2155, 593: 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 612: 2155, 622: 2155, 2155, 625: 2155, 2155, 2155, 2155, 2155, 2155, 707: 3716, 1206: 3855}, + {2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 537: 2161, 2161, 542: 2161, 544: 2161, 2161, 2161, 2161, 554: 2161, 2161, 2161, 559: 2161, 2161, 2161, 2161, 2161, 565: 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 585: 2161, 2161, 2161, 2161, 590: 2161, 593: 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 612: 2161, 622: 2161, 2161, 625: 2161, 2161, 2161, 2161, 2161, 2161}, // 985 - {2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 532: 2149, 2149, 537: 2149, 539: 2149, 2149, 2149, 2149, 549: 2149, 2149, 2149, 554: 2149, 2149, 2149, 2149, 2149, 2149, 561: 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 580: 2149, 2149, 2149, 2149, 585: 2149, 588: 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 607: 2149, 619: 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 2906, 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3845, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 608: 2904, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 2900, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3844, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3842, 806: 3847, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 3846, 817: 3849, 3848, 863: 3843}, - {2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 532: 2150, 2150, 537: 2150, 539: 2150, 2150, 2150, 2150, 549: 2150, 2150, 2150, 554: 2150, 2150, 2150, 2150, 2150, 2150, 561: 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 580: 2150, 2150, 2150, 2150, 585: 2150, 588: 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 607: 2150, 619: 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150}, - {2190, 2190, 9: 2190, 57: 2190, 160: 2190, 542: 2190, 564: 2190, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {9: 3990, 57: 3991}, + {538: 3857}, + {2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 537: 2154, 2154, 542: 2154, 544: 2154, 2154, 2154, 2154, 554: 2154, 2154, 2154, 559: 2154, 2154, 2154, 2154, 2154, 565: 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 585: 2154, 2154, 2154, 2154, 590: 2154, 593: 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 612: 2154, 622: 2154, 2154, 625: 2154, 2154, 2154, 2154, 2154, 2154}, + {2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 3856, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 537: 2155, 2155, 542: 2155, 3715, 2155, 2155, 2155, 2155, 554: 2155, 2155, 2155, 559: 2155, 2155, 2155, 2155, 2155, 565: 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 585: 2155, 2155, 2155, 2155, 590: 2155, 593: 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 612: 2155, 622: 2155, 2155, 625: 2155, 2155, 2155, 2155, 2155, 2155, 707: 3716, 1206: 3859}, + {2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 537: 2162, 2162, 542: 2162, 544: 2162, 2162, 2162, 2162, 554: 2162, 2162, 2162, 559: 2162, 2162, 2162, 2162, 2162, 565: 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 585: 2162, 2162, 2162, 2162, 590: 2162, 593: 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 612: 2162, 622: 2162, 2162, 625: 2162, 2162, 2162, 2162, 2162, 2162}, + {548: 3805, 3806, 3811, 571: 3861, 589: 3807, 614: 3808, 3809, 3802, 3812, 3801, 3810, 3803, 3804}, // 990 - {9: 1462, 57: 1462, 534: 1462, 536: 1462, 538: 1462, 1013, 543: 1462, 1462, 1462, 550: 1013, 1013, 554: 3859, 1462, 3858, 564: 3857, 566: 1462, 1462, 1462, 1462, 1462, 579: 1462, 584: 1462, 606: 1462, 609: 1462, 1462, 1462, 1462, 1462, 615: 1462, 1462, 618: 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 632: 1462, 1462, 1462, 1462, 703: 1462, 842: 3860, 3861}, - {531: 3889, 639: 3892, 1013: 3891, 1094: 3890}, - {531: 2907, 547: 2905, 608: 2904, 695: 2900, 775: 3854, 806: 3853, 2901, 2902, 2903, 2912, 2910, 3855, 3856}, - {57: 3852, 539: 1014, 550: 1014, 1014}, - {57: 3851}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3862}, + {2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 537: 2163, 2163, 542: 2163, 544: 2163, 2163, 2163, 2163, 554: 2163, 2163, 2163, 559: 2163, 2163, 2163, 2163, 2163, 565: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 585: 2163, 2163, 2163, 2163, 590: 2163, 593: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 612: 2163, 622: 2163, 2163, 625: 2163, 2163, 2163, 2163, 2163, 2163}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 2923, 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3868, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 613: 2921, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 2917, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3867, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3865, 812: 3870, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 3869, 3872, 3871, 869: 3866}, + {2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 537: 2164, 2164, 542: 2164, 544: 2164, 2164, 2164, 2164, 554: 2164, 2164, 2164, 559: 2164, 2164, 2164, 2164, 2164, 565: 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 585: 2164, 2164, 2164, 2164, 590: 2164, 593: 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 612: 2164, 622: 2164, 2164, 625: 2164, 2164, 2164, 2164, 2164, 2164}, + {2204, 2204, 9: 2204, 57: 2204, 160: 2204, 547: 2204, 569: 2204, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, // 995 - {57: 3850}, - {1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 536: 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 547: 1041, 549: 1041, 1041, 1041, 554: 1041, 1041, 1041, 1041, 1041, 1041, 561: 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 579: 1041, 1041, 1041, 1041, 1041, 1041, 1041, 588: 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 615: 1041, 1041, 618: 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 632: 1041, 1041, 1041, 1041, 695: 1041, 1041, 703: 1041, 714: 1041, 803: 1041}, - {1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 536: 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 547: 1042, 549: 1042, 1042, 1042, 554: 1042, 1042, 1042, 1042, 1042, 1042, 561: 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 579: 1042, 1042, 1042, 1042, 1042, 1042, 1042, 588: 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 615: 1042, 1042, 618: 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 632: 1042, 1042, 1042, 1042, 695: 1042, 1042, 703: 1042, 714: 1042, 803: 1042}, - {1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 536: 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 547: 1043, 549: 1043, 1043, 1043, 554: 1043, 1043, 1043, 1043, 1043, 1043, 561: 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 579: 1043, 1043, 1043, 1043, 1043, 1043, 1043, 588: 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 615: 1043, 1043, 618: 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 632: 1043, 1043, 1043, 1043, 695: 1043, 1043, 703: 1043, 714: 1043, 803: 1043}, - {1198, 1198, 57: 1198, 530: 1198, 532: 1198, 539: 1014, 542: 1198, 550: 1014, 1014}, + {9: 4013, 57: 4014}, + {9: 1471, 57: 1471, 539: 1471, 541: 1471, 543: 1471, 1021, 548: 1471, 1471, 1471, 555: 1021, 1021, 559: 3882, 561: 1471, 3881, 569: 3880, 571: 1471, 1471, 1471, 1471, 1471, 584: 1471, 589: 1471, 611: 1471, 614: 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 625: 1471, 1471, 1471, 1471, 1471, 1471, 632: 1471, 637: 1471, 1471, 1471, 1471, 707: 1471, 848: 3883, 3884}, + {536: 3912, 644: 3915, 1019: 3914, 1100: 3913}, + {536: 2924, 552: 2922, 613: 2921, 661: 2917, 781: 3877, 812: 3876, 2918, 2919, 2920, 2929, 2927, 3878, 3879}, + {57: 3875, 544: 1022, 555: 1022, 1022}, // 1000 - {1197, 1197, 57: 1197, 530: 1197, 532: 1197, 539: 1013, 542: 1197, 550: 1013, 1013, 554: 3859, 556: 3858, 564: 3857, 842: 3860, 3861}, - {1026, 1026, 57: 1026, 530: 1026, 532: 1026, 542: 1026}, - {1025, 1025, 57: 1025, 530: 1025, 532: 1025, 542: 1025}, - {723: 3880}, - {560: 3037, 642: 3868, 799: 3866, 816: 3867, 985: 3875}, + {57: 3874}, + {57: 3873}, + {1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 541: 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 552: 1049, 554: 1049, 1049, 1049, 559: 1049, 1049, 1049, 1049, 1049, 565: 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 584: 1049, 1049, 1049, 1049, 1049, 1049, 1049, 593: 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 625: 1049, 1049, 1049, 1049, 1049, 1049, 632: 1049, 637: 1049, 1049, 1049, 1049, 661: 1049, 1049, 707: 1049, 719: 1049, 809: 1049}, + {1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 541: 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 552: 1050, 554: 1050, 1050, 1050, 559: 1050, 1050, 1050, 1050, 1050, 565: 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 584: 1050, 1050, 1050, 1050, 1050, 1050, 1050, 593: 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 625: 1050, 1050, 1050, 1050, 1050, 1050, 632: 1050, 637: 1050, 1050, 1050, 1050, 661: 1050, 1050, 707: 1050, 719: 1050, 809: 1050}, + {1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 541: 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 552: 1051, 554: 1051, 1051, 1051, 559: 1051, 1051, 1051, 1051, 1051, 565: 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 584: 1051, 1051, 1051, 1051, 1051, 1051, 1051, 593: 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 625: 1051, 1051, 1051, 1051, 1051, 1051, 632: 1051, 637: 1051, 1051, 1051, 1051, 661: 1051, 1051, 707: 1051, 719: 1051, 809: 1051}, // 1005 - {10: 3863, 265: 3864, 1363: 3865}, - {1019, 1019, 57: 1019, 530: 1019, 532: 1019, 542: 1019, 554: 3859, 556: 3858, 843: 3862}, - {1018, 1018, 57: 1018, 530: 1018, 532: 1018, 542: 1018}, - {1017, 1017, 57: 1017, 530: 1017, 532: 1017, 542: 1017}, - {560: 1076, 588: 1076, 639: 1076, 642: 1076}, + {1206, 1206, 57: 1206, 535: 1206, 537: 1206, 544: 1022, 547: 1206, 555: 1022, 1022}, + {1205, 1205, 57: 1205, 535: 1205, 537: 1205, 544: 1021, 547: 1205, 555: 1021, 1021, 559: 3882, 562: 3881, 569: 3880, 848: 3883, 3884}, + {1034, 1034, 57: 1034, 535: 1034, 537: 1034, 547: 1034}, + {1033, 1033, 57: 1033, 535: 1033, 537: 1033, 547: 1033}, + {728: 3903}, // 1010 - {560: 1075, 588: 1075, 639: 1075, 642: 1075}, - {560: 3037, 588: 1074, 639: 1074, 642: 3868, 799: 3866, 816: 3867, 985: 3869, 1357: 3870}, - {2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 15: 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 57: 2226, 2226, 60: 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 102: 2226, 104: 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 118: 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 133: 2226, 137: 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 213: 2226, 220: 2226, 263: 2226, 530: 2226, 2226, 2226, 535: 2226, 537: 2226, 2226, 2226, 542: 2226, 546: 2226, 2226, 549: 2226, 2226, 2226, 2226, 2226, 557: 2226, 2226, 2226, 562: 2226, 565: 2226, 588: 2226, 608: 2226, 639: 2226, 695: 2226, 709: 2226, 2226, 713: 2226}, - {1080, 1080, 9: 1080, 57: 1080, 213: 1080, 530: 1080, 532: 1080, 539: 1080, 542: 1080, 550: 1080, 1080, 558: 1080, 1080, 562: 1080, 588: 1080, 639: 1080}, - {1079, 1079, 9: 1079, 57: 1079, 213: 1079, 530: 1079, 532: 1079, 539: 1079, 542: 1079, 550: 1079, 1079, 558: 1079, 1079, 562: 1079, 588: 1079, 639: 1079}, + {564: 3054, 647: 3891, 805: 3889, 820: 3890, 991: 3898}, + {10: 3886, 265: 3887, 1370: 3888}, + {1027, 1027, 57: 1027, 535: 1027, 537: 1027, 547: 1027, 559: 3882, 562: 3881, 849: 3885}, + {1026, 1026, 57: 1026, 535: 1026, 537: 1026, 547: 1026}, + {1025, 1025, 57: 1025, 535: 1025, 537: 1025, 547: 1025}, // 1015 - {588: 1073, 639: 1073}, - {588: 3872, 639: 3871, 1444: 3873}, - {194: 1078}, - {194: 1077}, - {194: 3874}, + {564: 1084, 593: 1084, 644: 1084, 647: 1084}, + {564: 1083, 593: 1083, 644: 1083, 647: 1083}, + {564: 3054, 593: 1082, 644: 1082, 647: 3891, 805: 3889, 820: 3890, 991: 3892, 1364: 3893}, + {2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 15: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 57: 2240, 2240, 60: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 102: 2240, 104: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 118: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 133: 2240, 137: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 214: 2240, 221: 2240, 263: 2240, 535: 2240, 2240, 2240, 540: 2240, 542: 2240, 2240, 2240, 547: 2240, 551: 2240, 2240, 554: 2240, 2240, 2240, 2240, 2240, 560: 2240, 563: 2240, 565: 2240, 567: 2240, 570: 2240, 593: 2240, 613: 2240, 644: 2240, 661: 2240, 714: 2240, 2240, 718: 2240}, + {1088, 1088, 9: 1088, 57: 1088, 214: 1088, 535: 1088, 537: 1088, 544: 1088, 547: 1088, 555: 1088, 1088, 563: 1088, 565: 1088, 567: 1088, 593: 1088, 644: 1088}, // 1020 - {1069, 1069, 57: 1069, 530: 1069, 532: 1069, 539: 1069, 542: 1069, 550: 1069, 1069, 558: 1069, 1069, 562: 1069}, - {1072, 1072, 9: 3876, 57: 1072, 213: 3877, 530: 1072, 532: 1072, 539: 1072, 542: 1072, 550: 1072, 1072, 558: 1072, 1072, 562: 1072}, - {560: 3037, 642: 3868, 799: 3866, 816: 3867, 985: 3879}, - {560: 3037, 642: 3868, 799: 3866, 816: 3867, 985: 3878}, - {1070, 1070, 57: 1070, 530: 1070, 532: 1070, 539: 1070, 542: 1070, 550: 1070, 1070, 558: 1070, 1070, 562: 1070}, + {1087, 1087, 9: 1087, 57: 1087, 214: 1087, 535: 1087, 537: 1087, 544: 1087, 547: 1087, 555: 1087, 1087, 563: 1087, 565: 1087, 567: 1087, 593: 1087, 644: 1087}, + {593: 1081, 644: 1081}, + {593: 3895, 644: 3894, 1451: 3896}, + {195: 1086}, + {195: 1085}, // 1025 - {1071, 1071, 57: 1071, 530: 1071, 532: 1071, 539: 1071, 542: 1071, 550: 1071, 1071, 558: 1071, 1071, 562: 1071}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3881, 973: 3883, 1000: 3882}, - {1506, 1506, 9: 1506, 57: 1506, 160: 1506, 530: 1506, 532: 1506, 539: 1506, 542: 1506, 550: 1506, 1506, 554: 1506, 556: 1506, 558: 1506, 1506, 562: 1506, 564: 1506, 566: 3745, 3743, 3744, 3742, 3740, 572: 1506, 574: 1506, 577: 3888, 588: 1506, 591: 1506, 593: 1506, 605: 3887, 800: 3741, 3739, 1411: 3886}, - {1509, 1509, 9: 3884, 57: 1509, 160: 1509, 530: 1509, 532: 1509, 539: 1509, 542: 1509, 550: 1509, 1509, 554: 1509, 556: 1509, 558: 1509, 1509, 562: 1509}, - {1508, 1508, 9: 1508, 57: 1508, 160: 1508, 530: 1508, 532: 1508, 539: 1508, 542: 1508, 550: 1508, 1508, 554: 1508, 556: 1508, 558: 1508, 1508, 562: 1508, 564: 1508, 572: 1508, 574: 1508, 588: 1508, 591: 1508, 593: 1508}, + {195: 3897}, + {1077, 1077, 57: 1077, 535: 1077, 537: 1077, 544: 1077, 547: 1077, 555: 1077, 1077, 563: 1077, 565: 1077, 567: 1077}, + {1080, 1080, 9: 3899, 57: 1080, 214: 3900, 535: 1080, 537: 1080, 544: 1080, 547: 1080, 555: 1080, 1080, 563: 1080, 565: 1080, 567: 1080}, + {564: 3054, 647: 3891, 805: 3889, 820: 3890, 991: 3902}, + {564: 3054, 647: 3891, 805: 3889, 820: 3890, 991: 3901}, // 1030 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3881, 973: 3885}, - {1507, 1507, 9: 1507, 57: 1507, 160: 1507, 530: 1507, 532: 1507, 539: 1507, 542: 1507, 550: 1507, 1507, 554: 1507, 556: 1507, 558: 1507, 1507, 562: 1507, 564: 1507, 572: 1507, 574: 1507, 588: 1507, 591: 1507, 593: 1507}, - {1505, 1505, 9: 1505, 57: 1505, 160: 1505, 530: 1505, 532: 1505, 539: 1505, 542: 1505, 550: 1505, 1505, 554: 1505, 556: 1505, 558: 1505, 1505, 562: 1505, 564: 1505, 572: 1505, 574: 1505, 588: 1505, 591: 1505, 593: 1505}, - {1504, 1504, 9: 1504, 57: 1504, 160: 1504, 530: 1504, 532: 1504, 539: 1504, 542: 1504, 550: 1504, 1504, 554: 1504, 556: 1504, 558: 1504, 1504, 562: 1504, 564: 1504, 572: 1504, 574: 1504, 588: 1504, 591: 1504, 593: 1504}, - {1503, 1503, 9: 1503, 57: 1503, 160: 1503, 530: 1503, 532: 1503, 539: 1503, 542: 1503, 550: 1503, 1503, 554: 1503, 556: 1503, 558: 1503, 1503, 562: 1503, 564: 1503, 572: 1503, 574: 1503, 588: 1503, 591: 1503, 593: 1503}, + {1078, 1078, 57: 1078, 535: 1078, 537: 1078, 544: 1078, 547: 1078, 555: 1078, 1078, 563: 1078, 565: 1078, 567: 1078}, + {1079, 1079, 57: 1079, 535: 1079, 537: 1079, 544: 1079, 547: 1079, 555: 1079, 1079, 563: 1079, 565: 1079, 567: 1079}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3904, 979: 3906, 1006: 3905}, + {1515, 1515, 9: 1515, 57: 1515, 160: 1515, 535: 1515, 537: 1515, 544: 1515, 547: 1515, 555: 1515, 1515, 559: 1515, 562: 1515, 1515, 565: 1515, 567: 1515, 569: 1515, 571: 3768, 3766, 3767, 3765, 3763, 577: 1515, 579: 1515, 582: 3911, 593: 1515, 596: 1515, 598: 1515, 610: 3910, 806: 3764, 3762, 1418: 3909}, + {1518, 1518, 9: 3907, 57: 1518, 160: 1518, 535: 1518, 537: 1518, 544: 1518, 547: 1518, 555: 1518, 1518, 559: 1518, 562: 1518, 1518, 565: 1518, 567: 1518}, // 1035 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3901, 3051, 3052, 3050, 778: 3987}, - {1499, 1499, 9: 3913, 57: 1499, 530: 1499, 532: 1499, 539: 1499, 542: 1499, 550: 1499, 1499, 554: 1499, 556: 1499, 558: 1499, 1499, 562: 1499, 564: 3857, 842: 3911, 909: 3912}, - {147, 147, 9: 147, 57: 147, 530: 147, 532: 147, 539: 147, 542: 147, 550: 147, 147, 554: 147, 556: 147, 558: 147, 147, 562: 147, 564: 147}, - {531: 3893, 938: 3894}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 1537, 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3899, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3895, 893: 3898, 1490: 3897, 3896}, + {1517, 1517, 9: 1517, 57: 1517, 160: 1517, 535: 1517, 537: 1517, 544: 1517, 547: 1517, 555: 1517, 1517, 559: 1517, 562: 1517, 1517, 565: 1517, 567: 1517, 569: 1517, 577: 1517, 579: 1517, 593: 1517, 596: 1517, 598: 1517}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3904, 979: 3908}, + {1516, 1516, 9: 1516, 57: 1516, 160: 1516, 535: 1516, 537: 1516, 544: 1516, 547: 1516, 555: 1516, 1516, 559: 1516, 562: 1516, 1516, 565: 1516, 567: 1516, 569: 1516, 577: 1516, 579: 1516, 593: 1516, 596: 1516, 598: 1516}, + {1514, 1514, 9: 1514, 57: 1514, 160: 1514, 535: 1514, 537: 1514, 544: 1514, 547: 1514, 555: 1514, 1514, 559: 1514, 562: 1514, 1514, 565: 1514, 567: 1514, 569: 1514, 577: 1514, 579: 1514, 593: 1514, 596: 1514, 598: 1514}, + {1513, 1513, 9: 1513, 57: 1513, 160: 1513, 535: 1513, 537: 1513, 544: 1513, 547: 1513, 555: 1513, 1513, 559: 1513, 562: 1513, 1513, 565: 1513, 567: 1513, 569: 1513, 577: 1513, 579: 1513, 593: 1513, 596: 1513, 598: 1513}, // 1040 - {145, 145, 9: 145, 57: 145, 530: 145, 532: 145, 539: 145, 542: 145, 550: 145, 145, 554: 145, 556: 145, 558: 145, 145, 562: 145, 564: 145}, - {1533, 1533, 9: 1533, 57: 1533, 530: 1533, 532: 1533, 542: 1533, 556: 1533, 561: 1533, 563: 1533, 1533, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {57: 3910}, - {9: 3908, 57: 1536}, - {9: 1534, 57: 1534}, + {1512, 1512, 9: 1512, 57: 1512, 160: 1512, 535: 1512, 537: 1512, 544: 1512, 547: 1512, 555: 1512, 1512, 559: 1512, 562: 1512, 1512, 565: 1512, 567: 1512, 569: 1512, 577: 1512, 579: 1512, 593: 1512, 596: 1512, 598: 1512}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3924, 3068, 3069, 3067, 784: 4010}, + {1508, 1508, 9: 3936, 57: 1508, 535: 1508, 537: 1508, 544: 1508, 547: 1508, 555: 1508, 1508, 559: 1508, 562: 1508, 1508, 565: 1508, 567: 1508, 569: 3880, 848: 3934, 915: 3935}, + {147, 147, 9: 147, 57: 147, 535: 147, 537: 147, 544: 147, 547: 147, 555: 147, 147, 559: 147, 562: 147, 147, 565: 147, 567: 147, 569: 147}, + {536: 3916, 945: 3917}, // 1045 - {1532, 1532, 9: 1532, 57: 1532, 530: 1532, 3900, 1532, 542: 1532, 556: 1532, 561: 1532, 563: 1532, 1532}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3901, 3051, 3052, 3050, 778: 3902}, - {57: 1481, 555: 1481, 716: 3904}, - {57: 3903}, - {1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 532: 1451, 1451, 1451, 536: 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 549: 1451, 1451, 1451, 554: 1451, 1451, 1451, 1451, 1451, 1451, 561: 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 579: 1451, 1451, 1451, 1451, 1451, 1451, 1451, 588: 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 609: 1451, 1451, 1451, 1451, 1451, 615: 1451, 1451, 618: 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 632: 1451, 1451, 1451, 1451, 696: 1451, 703: 1451}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 1546, 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3922, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3918, 899: 3921, 1497: 3920, 3919}, + {145, 145, 9: 145, 57: 145, 535: 145, 537: 145, 544: 145, 547: 145, 555: 145, 145, 559: 145, 562: 145, 145, 565: 145, 567: 145, 569: 145}, + {1542, 1542, 9: 1542, 57: 1542, 535: 1542, 537: 1542, 547: 1542, 562: 1542, 566: 1542, 568: 1542, 1542, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {57: 3933}, + {9: 3931, 57: 1545}, // 1050 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3905, 3051, 3052, 3050}, - {57: 1480, 555: 1480, 716: 3906}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3907, 3051, 3052, 3050}, - {1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 532: 1479, 1479, 1479, 536: 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 549: 1479, 1479, 1479, 554: 1479, 1479, 1479, 1479, 1479, 1479, 561: 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 579: 1479, 1479, 1479, 1479, 1479, 1479, 1479, 588: 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 609: 1479, 1479, 1479, 1479, 1479, 615: 1479, 1479, 618: 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 632: 1479, 1479, 1479, 1479, 696: 1479, 703: 1479, 718: 1479, 1479}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3899, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3895, 893: 3909}, + {9: 1543, 57: 1543}, + {1541, 1541, 9: 1541, 57: 1541, 535: 1541, 3923, 1541, 547: 1541, 562: 1541, 566: 1541, 568: 1541, 1541}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3924, 3068, 3069, 3067, 784: 3925}, + {57: 1490, 561: 1490, 720: 3927}, + {57: 3926}, // 1055 - {9: 1535, 57: 1535}, - {1538, 1538, 9: 1538, 57: 1538, 108: 1538, 530: 1538, 532: 1538, 539: 1538, 542: 1538, 550: 1538, 1538, 554: 1538, 556: 1538, 558: 1538, 1538, 562: 1538, 564: 1538, 566: 1538}, - {1498, 1498, 57: 1498, 160: 1498, 530: 1498, 532: 1498, 539: 1498, 542: 1498, 550: 1498, 1498, 554: 1498, 556: 1498, 558: 1498, 1498, 562: 1498}, - {1068, 1068, 57: 1068, 530: 1068, 532: 1068, 539: 1068, 542: 1068, 550: 1068, 1068, 554: 3859, 556: 3858, 558: 1068, 1068, 562: 1068, 843: 3916, 925: 3915}, - {639: 3892, 1013: 3914}, + {1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 537: 1460, 1460, 1460, 541: 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 554: 1460, 1460, 1460, 559: 1460, 1460, 1460, 1460, 1460, 565: 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 584: 1460, 1460, 1460, 1460, 1460, 1460, 1460, 593: 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 614: 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 625: 1460, 1460, 1460, 1460, 1460, 1460, 632: 1460, 637: 1460, 1460, 1460, 1460, 662: 1460, 707: 1460}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3928, 3068, 3069, 3067}, + {57: 1489, 561: 1489, 720: 3929}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3930, 3068, 3069, 3067}, + {1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 537: 1488, 1488, 1488, 541: 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 554: 1488, 1488, 1488, 559: 1488, 1488, 1488, 1488, 1488, 565: 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 584: 1488, 1488, 1488, 1488, 1488, 1488, 1488, 593: 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 614: 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 625: 1488, 1488, 1488, 1488, 1488, 1488, 632: 1488, 637: 1488, 1488, 1488, 1488, 662: 1488, 707: 1488, 723: 1488, 1488}, // 1060 - {146, 146, 9: 146, 57: 146, 530: 146, 532: 146, 539: 146, 542: 146, 550: 146, 146, 554: 146, 556: 146, 558: 146, 146, 562: 146, 564: 146}, - {1039, 1039, 57: 1039, 530: 1039, 532: 1039, 539: 1039, 542: 1039, 550: 1039, 1039, 558: 3918, 1039, 562: 3919, 991: 3917}, - {1067, 1067, 57: 1067, 530: 1067, 532: 1067, 539: 1067, 542: 1067, 550: 1067, 1067, 558: 1067, 1067, 562: 1067}, - {1045, 1045, 57: 1045, 530: 1045, 532: 1045, 539: 1045, 542: 1045, 550: 1045, 1045, 559: 3944, 992: 3943}, - {340: 3924, 714: 3923}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3922, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3918, 899: 3932}, + {9: 1544, 57: 1544}, + {1547, 1547, 9: 1547, 57: 1547, 108: 1547, 535: 1547, 537: 1547, 544: 1547, 547: 1547, 555: 1547, 1547, 559: 1547, 562: 1547, 1547, 565: 1547, 567: 1547, 569: 1547, 571: 1547}, + {1507, 1507, 57: 1507, 160: 1507, 535: 1507, 537: 1507, 544: 1507, 547: 1507, 555: 1507, 1507, 559: 1507, 562: 1507, 1507, 565: 1507, 567: 1507}, + {1076, 1076, 57: 1076, 535: 1076, 537: 1076, 544: 1076, 547: 1076, 555: 1076, 1076, 559: 3882, 562: 3881, 1076, 565: 1076, 567: 1076, 849: 3939, 931: 3938}, // 1065 - {606: 3920}, - {340: 3921}, - {264: 3922}, - {1031, 1031, 57: 1031, 530: 1031, 532: 1031, 539: 1031, 542: 1031, 550: 1031, 1031, 559: 1031}, - {1030, 1030, 57: 1030, 193: 1030, 196: 1030, 227: 1030, 530: 1030, 532: 1030, 539: 1030, 542: 1030, 550: 1030, 1030, 559: 1030, 1216: 3926, 3937}, + {644: 3915, 1019: 3937}, + {146, 146, 9: 146, 57: 146, 535: 146, 537: 146, 544: 146, 547: 146, 555: 146, 146, 559: 146, 562: 146, 146, 565: 146, 567: 146, 569: 146}, + {1047, 1047, 57: 1047, 535: 1047, 537: 1047, 544: 1047, 547: 1047, 555: 1047, 1047, 563: 3941, 565: 1047, 567: 3942, 997: 3940}, + {1075, 1075, 57: 1075, 535: 1075, 537: 1075, 544: 1075, 547: 1075, 555: 1075, 1075, 563: 1075, 565: 1075, 567: 1075}, + {1053, 1053, 57: 1053, 535: 1053, 537: 1053, 544: 1053, 547: 1053, 555: 1053, 1053, 565: 3967, 998: 3966}, // 1070 - {1030, 1030, 57: 1030, 193: 1030, 196: 1030, 530: 1030, 532: 1030, 539: 1030, 542: 1030, 550: 1030, 1030, 559: 1030, 1216: 3926, 3925}, - {1037, 1037, 57: 1037, 193: 3934, 196: 3935, 530: 1037, 532: 1037, 539: 1037, 542: 1037, 550: 1037, 1037, 559: 1037}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 3928, 884: 3929}, - {1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 579: 1254, 1254, 1254, 1254, 1254, 1254, 1254, 588: 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 615: 1254, 1254, 618: 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 632: 1254, 1254, 1254, 1254, 646: 1254, 695: 1254, 1254, 701: 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 3932, 720: 1254, 722: 1254, 1254, 1254, 727: 1254, 1254, 1254, 1254, 1254, 743: 1254, 765: 1254, 1254, 1254, 1254, 1254, 774: 1254}, - {1252, 1252, 9: 1252, 57: 1252, 193: 1252, 196: 1252, 227: 1252, 530: 1252, 532: 1252, 539: 1252, 542: 1252, 550: 1252, 1252, 559: 1252, 561: 1252, 712: 1252, 728: 1252, 730: 1252}, + {341: 3947, 719: 3946}, + {611: 3943}, + {341: 3944}, + {264: 3945}, + {1039, 1039, 57: 1039, 535: 1039, 537: 1039, 544: 1039, 547: 1039, 555: 1039, 1039, 565: 1039}, // 1075 - {1029, 1029, 9: 3930, 57: 1029, 193: 1029, 196: 1029, 227: 1029, 530: 1029, 532: 1029, 539: 1029, 542: 1029, 550: 1029, 1029, 559: 1029}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 3931}, - {1251, 1251, 9: 1251, 57: 1251, 193: 1251, 196: 1251, 215: 1251, 227: 1251, 530: 1251, 532: 1251, 539: 1251, 542: 1251, 550: 1251, 1251, 559: 1251, 561: 1251, 712: 1251, 715: 1251, 728: 1251, 730: 1251, 765: 1251}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3933, 3051, 3052, 3050}, - {1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 579: 1253, 1253, 1253, 1253, 1253, 1253, 1253, 588: 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 615: 1253, 1253, 618: 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 632: 1253, 1253, 1253, 1253, 646: 1253, 695: 1253, 1253, 701: 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 720: 1253, 722: 1253, 1253, 1253, 727: 1253, 1253, 1253, 1253, 1253, 743: 1253, 765: 1253, 1253, 1253, 1253, 1253, 774: 1253}, + {1038, 1038, 57: 1038, 194: 1038, 198: 1038, 227: 1038, 535: 1038, 537: 1038, 544: 1038, 547: 1038, 555: 1038, 1038, 565: 1038, 1222: 3949, 3960}, + {1038, 1038, 57: 1038, 194: 1038, 198: 1038, 535: 1038, 537: 1038, 544: 1038, 547: 1038, 555: 1038, 1038, 565: 1038, 1222: 3949, 3948}, + {1045, 1045, 57: 1045, 194: 3957, 198: 3958, 535: 1045, 537: 1045, 544: 1045, 547: 1045, 555: 1045, 1045, 565: 1045}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 3951, 890: 3952}, + {1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 584: 1262, 1262, 1262, 1262, 1262, 1262, 1262, 593: 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 625: 1262, 1262, 1262, 1262, 1262, 1262, 632: 1262, 637: 1262, 1262, 1262, 1262, 651: 1262, 661: 1262, 1262, 706: 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 3955, 1262, 725: 1262, 727: 1262, 1262, 1262, 732: 1262, 1262, 1262, 1262, 1262, 748: 1262, 770: 1262, 1262, 1262, 1262, 1262, 1262, 1262}, // 1080 - {1034, 1034, 57: 1034, 530: 1034, 532: 1034, 539: 1034, 542: 1034, 550: 1034, 1034, 559: 1034}, - {320: 3936}, - {1032, 1032, 57: 1032, 530: 1032, 532: 1032, 539: 1032, 542: 1032, 550: 1032, 1032, 559: 1032}, - {1038, 1038, 57: 1038, 193: 3938, 196: 3940, 227: 3939, 530: 1038, 532: 1038, 539: 1038, 542: 1038, 550: 1038, 1038, 559: 1038}, - {1036, 1036, 57: 1036, 530: 1036, 532: 1036, 539: 1036, 542: 1036, 550: 1036, 1036, 559: 1036}, + {1260, 1260, 9: 1260, 57: 1260, 194: 1260, 198: 1260, 227: 1260, 535: 1260, 537: 1260, 544: 1260, 547: 1260, 555: 1260, 1260, 565: 1260, 1260, 717: 1260, 733: 1260, 735: 1260}, + {1037, 1037, 9: 3953, 57: 1037, 194: 1037, 198: 1037, 227: 1037, 535: 1037, 537: 1037, 544: 1037, 547: 1037, 555: 1037, 1037, 565: 1037}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 3954}, + {1259, 1259, 9: 1259, 57: 1259, 194: 1259, 198: 1259, 216: 1259, 227: 1259, 535: 1259, 537: 1259, 544: 1259, 547: 1259, 555: 1259, 1259, 565: 1259, 1259, 717: 1259, 721: 1259, 733: 1259, 735: 1259, 770: 1259, 1259}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3956, 3068, 3069, 3067}, // 1085 - {560: 3037, 799: 3942}, - {320: 3941}, - {1033, 1033, 57: 1033, 530: 1033, 532: 1033, 539: 1033, 542: 1033, 550: 1033, 1033, 559: 1033}, - {1035, 1035, 57: 1035, 530: 1035, 532: 1035, 539: 1035, 542: 1035, 550: 1035, 1035, 559: 1035}, - {1199, 1199, 57: 1199, 530: 1199, 532: 1199, 539: 1199, 542: 1199, 550: 1199, 1199}, + {1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 584: 1261, 1261, 1261, 1261, 1261, 1261, 1261, 593: 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 625: 1261, 1261, 1261, 1261, 1261, 1261, 632: 1261, 637: 1261, 1261, 1261, 1261, 651: 1261, 661: 1261, 1261, 706: 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 721: 1261, 725: 1261, 727: 1261, 1261, 1261, 732: 1261, 1261, 1261, 1261, 1261, 748: 1261, 770: 1261, 1261, 1261, 1261, 1261, 1261, 1261}, + {1042, 1042, 57: 1042, 535: 1042, 537: 1042, 544: 1042, 547: 1042, 555: 1042, 1042, 565: 1042}, + {320: 3959}, + {1040, 1040, 57: 1040, 535: 1040, 537: 1040, 544: 1040, 547: 1040, 555: 1040, 1040, 565: 1040}, + {1046, 1046, 57: 1046, 194: 3961, 198: 3963, 227: 3962, 535: 1046, 537: 1046, 544: 1046, 547: 1046, 555: 1046, 1046, 565: 1046}, // 1090 - {1413: 3945}, - {533: 3946}, - {262, 262, 57: 262, 131: 3950, 154: 3949, 530: 262, 532: 262, 539: 262, 542: 262, 550: 262, 262, 722: 262, 930: 3948, 1173: 3947}, - {247, 247, 57: 247, 530: 247, 532: 247, 539: 247, 542: 247, 550: 247, 247, 722: 3978, 1056: 3977}, - {135: 3957, 852: 3953, 856: 3955, 862: 3956, 864: 3954, 1172: 3952, 1360: 3951}, + {1044, 1044, 57: 1044, 535: 1044, 537: 1044, 544: 1044, 547: 1044, 555: 1044, 1044, 565: 1044}, + {564: 3054, 805: 3965}, + {320: 3964}, + {1041, 1041, 57: 1041, 535: 1041, 537: 1041, 544: 1041, 547: 1041, 555: 1041, 1041, 565: 1041}, + {1043, 1043, 57: 1043, 535: 1043, 537: 1043, 544: 1043, 547: 1043, 555: 1043, 1043, 565: 1043}, // 1095 - {260, 260, 17: 260, 58: 260, 60: 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 135: 260, 530: 260, 260, 561: 260, 606: 260, 713: 260, 852: 260, 856: 260, 862: 260, 864: 260}, - {259, 259, 17: 259, 58: 259, 60: 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 135: 259, 530: 259, 259, 561: 259, 606: 259, 713: 259, 852: 259, 856: 259, 862: 259, 864: 259}, - {261, 261, 57: 261, 135: 3957, 530: 261, 261, 261, 539: 261, 542: 261, 549: 261, 261, 261, 557: 261, 722: 261, 852: 3953, 856: 3955, 862: 3956, 864: 3954, 1172: 3976}, - {257, 257, 57: 257, 135: 257, 530: 257, 257, 257, 539: 257, 542: 257, 549: 257, 257, 257, 557: 257, 722: 257, 852: 257, 856: 257, 862: 257, 864: 257}, - {723: 3974}, + {1207, 1207, 57: 1207, 535: 1207, 537: 1207, 544: 1207, 547: 1207, 555: 1207, 1207}, + {1420: 3968}, + {538: 3969}, + {262, 262, 57: 262, 131: 3973, 154: 3972, 535: 262, 537: 262, 544: 262, 547: 262, 555: 262, 262, 727: 262, 937: 3971, 1179: 3970}, + {247, 247, 57: 247, 535: 247, 537: 247, 544: 247, 547: 247, 555: 247, 247, 727: 4001, 1062: 4000}, // 1100 - {533: 3968, 638: 3969, 640: 3970, 956: 3973}, - {723: 3971}, - {723: 3966}, - {548: 3958}, - {723: 3959}, + {135: 3980, 858: 3976, 862: 3978, 868: 3979, 870: 3977, 1178: 3975, 1367: 3974}, + {260, 260, 17: 260, 58: 260, 60: 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 135: 260, 535: 260, 260, 566: 260, 611: 260, 718: 260, 858: 260, 862: 260, 868: 260, 870: 260}, + {259, 259, 17: 259, 58: 259, 60: 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 135: 259, 535: 259, 259, 566: 259, 611: 259, 718: 259, 858: 259, 862: 259, 868: 259, 870: 259}, + {261, 261, 57: 261, 135: 3980, 535: 261, 261, 261, 544: 261, 547: 261, 554: 261, 261, 261, 560: 261, 727: 261, 858: 3976, 862: 3978, 868: 3979, 870: 3977, 1178: 3999}, + {257, 257, 57: 257, 135: 257, 535: 257, 257, 257, 544: 257, 547: 257, 554: 257, 257, 257, 560: 257, 727: 257, 858: 257, 862: 257, 868: 257, 870: 257}, // 1105 - {533: 3960, 638: 3961, 640: 3962, 1021: 3963}, - {440, 440, 9: 440, 57: 440, 135: 440, 530: 440, 440, 440, 539: 440, 542: 440, 549: 440, 440, 440, 557: 440, 722: 440, 852: 440, 856: 440, 862: 440, 864: 440, 1007: 440}, - {439, 439, 9: 439, 57: 439, 135: 439, 530: 439, 439, 439, 539: 439, 542: 439, 549: 439, 439, 439, 557: 439, 722: 439, 852: 439, 856: 439, 862: 439, 864: 439, 1007: 439}, - {438, 438, 9: 438, 57: 438, 135: 438, 530: 438, 438, 438, 539: 438, 542: 438, 549: 438, 438, 438, 557: 438, 722: 438, 852: 438, 856: 438, 862: 438, 864: 438, 1007: 438}, - {252, 252, 57: 252, 135: 252, 530: 252, 252, 252, 539: 252, 542: 252, 549: 252, 252, 252, 557: 252, 722: 252, 852: 252, 856: 252, 862: 252, 864: 252, 1007: 3964}, + {728: 3997}, + {538: 3991, 643: 3992, 645: 3993, 962: 3996}, + {728: 3994}, + {728: 3989}, + {553: 3981}, // 1110 - {856: 3965}, - {251, 251, 57: 251, 135: 251, 530: 251, 251, 251, 539: 251, 542: 251, 549: 251, 251, 251, 557: 251, 722: 251, 852: 251, 856: 251, 862: 251, 864: 251}, - {533: 3968, 638: 3969, 640: 3970, 956: 3967}, - {253, 253, 57: 253, 135: 253, 530: 253, 253, 253, 539: 253, 542: 253, 549: 253, 253, 253, 557: 253, 722: 253, 852: 253, 856: 253, 862: 253, 864: 253}, - {250, 250, 57: 250, 135: 250, 530: 250, 250, 250, 539: 250, 542: 250, 549: 250, 250, 250, 557: 250, 722: 250, 852: 250, 856: 250, 862: 250, 864: 250}, + {728: 3982}, + {538: 3983, 643: 3984, 645: 3985, 1027: 3986}, + {441, 441, 9: 441, 57: 441, 135: 441, 535: 441, 441, 441, 544: 441, 547: 441, 554: 441, 441, 441, 560: 441, 727: 441, 858: 441, 862: 441, 868: 441, 870: 441, 1013: 441}, + {440, 440, 9: 440, 57: 440, 135: 440, 535: 440, 440, 440, 544: 440, 547: 440, 554: 440, 440, 440, 560: 440, 727: 440, 858: 440, 862: 440, 868: 440, 870: 440, 1013: 440}, + {439, 439, 9: 439, 57: 439, 135: 439, 535: 439, 439, 439, 544: 439, 547: 439, 554: 439, 439, 439, 560: 439, 727: 439, 858: 439, 862: 439, 868: 439, 870: 439, 1013: 439}, // 1115 - {249, 249, 57: 249, 135: 249, 530: 249, 249, 249, 539: 249, 542: 249, 549: 249, 249, 249, 557: 249, 722: 249, 852: 249, 856: 249, 862: 249, 864: 249}, - {248, 248, 57: 248, 135: 248, 530: 248, 248, 248, 539: 248, 542: 248, 549: 248, 248, 248, 557: 248, 722: 248, 852: 248, 856: 248, 862: 248, 864: 248}, - {533: 3968, 638: 3969, 640: 3970, 956: 3972}, - {254, 254, 57: 254, 135: 254, 530: 254, 254, 254, 539: 254, 542: 254, 549: 254, 254, 254, 557: 254, 722: 254, 852: 254, 856: 254, 862: 254, 864: 254}, - {255, 255, 57: 255, 135: 255, 530: 255, 255, 255, 539: 255, 542: 255, 549: 255, 255, 255, 557: 255, 722: 255, 852: 255, 856: 255, 862: 255, 864: 255}, + {252, 252, 57: 252, 135: 252, 535: 252, 252, 252, 544: 252, 547: 252, 554: 252, 252, 252, 560: 252, 727: 252, 858: 252, 862: 252, 868: 252, 870: 252, 1013: 3987}, + {862: 3988}, + {251, 251, 57: 251, 135: 251, 535: 251, 251, 251, 544: 251, 547: 251, 554: 251, 251, 251, 560: 251, 727: 251, 858: 251, 862: 251, 868: 251, 870: 251}, + {538: 3991, 643: 3992, 645: 3993, 962: 3990}, + {253, 253, 57: 253, 135: 253, 535: 253, 253, 253, 544: 253, 547: 253, 554: 253, 253, 253, 560: 253, 727: 253, 858: 253, 862: 253, 868: 253, 870: 253}, // 1120 - {533: 3968, 638: 3969, 640: 3970, 956: 3975}, - {256, 256, 57: 256, 135: 256, 530: 256, 256, 256, 539: 256, 542: 256, 549: 256, 256, 256, 557: 256, 722: 256, 852: 256, 856: 256, 862: 256, 864: 256}, - {258, 258, 57: 258, 135: 258, 530: 258, 258, 258, 539: 258, 542: 258, 549: 258, 258, 258, 557: 258, 722: 258, 852: 258, 856: 258, 862: 258, 864: 258}, - {1044, 1044, 57: 1044, 530: 1044, 532: 1044, 539: 1044, 542: 1044, 550: 1044, 1044}, - {245, 245, 57: 245, 530: 245, 245, 245, 539: 245, 542: 245, 549: 245, 245, 245, 557: 245, 852: 245, 1466: 3979, 3980}, + {250, 250, 57: 250, 135: 250, 535: 250, 250, 250, 544: 250, 547: 250, 554: 250, 250, 250, 560: 250, 727: 250, 858: 250, 862: 250, 868: 250, 870: 250}, + {249, 249, 57: 249, 135: 249, 535: 249, 249, 249, 544: 249, 547: 249, 554: 249, 249, 249, 560: 249, 727: 249, 858: 249, 862: 249, 868: 249, 870: 249}, + {248, 248, 57: 248, 135: 248, 535: 248, 248, 248, 544: 248, 547: 248, 554: 248, 248, 248, 560: 248, 727: 248, 858: 248, 862: 248, 868: 248, 870: 248}, + {538: 3991, 643: 3992, 645: 3993, 962: 3995}, + {254, 254, 57: 254, 135: 254, 535: 254, 254, 254, 544: 254, 547: 254, 554: 254, 254, 254, 560: 254, 727: 254, 858: 254, 862: 254, 868: 254, 870: 254}, // 1125 - {243, 243, 57: 243, 530: 243, 243, 243, 539: 243, 542: 243, 549: 243, 243, 243, 557: 243, 852: 3984, 1385: 3983}, - {723: 3981}, - {533: 3968, 638: 3969, 640: 3970, 956: 3982}, - {244, 244, 57: 244, 530: 244, 244, 244, 539: 244, 542: 244, 549: 244, 244, 244, 557: 244, 852: 244}, - {246, 246, 57: 246, 530: 246, 246, 246, 539: 246, 542: 246, 549: 246, 246, 246, 557: 246}, + {255, 255, 57: 255, 135: 255, 535: 255, 255, 255, 544: 255, 547: 255, 554: 255, 255, 255, 560: 255, 727: 255, 858: 255, 862: 255, 868: 255, 870: 255}, + {538: 3991, 643: 3992, 645: 3993, 962: 3998}, + {256, 256, 57: 256, 135: 256, 535: 256, 256, 256, 544: 256, 547: 256, 554: 256, 256, 256, 560: 256, 727: 256, 858: 256, 862: 256, 868: 256, 870: 256}, + {258, 258, 57: 258, 135: 258, 535: 258, 258, 258, 544: 258, 547: 258, 554: 258, 258, 258, 560: 258, 727: 258, 858: 258, 862: 258, 868: 258, 870: 258}, + {1052, 1052, 57: 1052, 535: 1052, 537: 1052, 544: 1052, 547: 1052, 555: 1052, 1052}, // 1130 - {723: 3985}, - {533: 3968, 638: 3969, 640: 3970, 956: 3986}, - {242, 242, 57: 242, 530: 242, 242, 242, 539: 242, 542: 242, 549: 242, 242, 242, 557: 242}, - {57: 3988}, - {1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 532: 1450, 1450, 1450, 536: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 549: 1450, 1450, 1450, 554: 1450, 1450, 1450, 1450, 1450, 1450, 561: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 579: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 588: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 609: 1450, 1450, 1450, 1450, 1450, 615: 1450, 1450, 618: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 632: 1450, 1450, 1450, 1450, 696: 1450, 703: 1450}, + {245, 245, 57: 245, 535: 245, 245, 245, 544: 245, 547: 245, 554: 245, 245, 245, 560: 245, 858: 245, 1473: 4002, 4003}, + {243, 243, 57: 243, 535: 243, 243, 243, 544: 243, 547: 243, 554: 243, 243, 243, 560: 243, 858: 4007, 1392: 4006}, + {728: 4004}, + {538: 3991, 643: 3992, 645: 3993, 962: 4005}, + {244, 244, 57: 244, 535: 244, 244, 244, 544: 244, 547: 244, 554: 244, 244, 244, 560: 244, 858: 244}, // 1135 - {1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 536: 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 547: 1040, 549: 1040, 1040, 1040, 554: 1040, 1040, 1040, 1040, 1040, 1040, 561: 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 579: 1040, 1040, 1040, 1040, 1040, 1040, 1040, 588: 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 615: 1040, 1040, 618: 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 632: 1040, 1040, 1040, 1040, 695: 1040, 1040, 703: 1040, 714: 1040, 803: 1040}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3992}, - {2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 532: 2151, 2151, 537: 2151, 539: 2151, 2151, 2151, 2151, 549: 2151, 2151, 2151, 554: 2151, 2151, 2151, 2151, 2151, 2151, 561: 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 580: 2151, 2151, 2151, 2151, 585: 2151, 588: 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 607: 2151, 619: 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151}, - {2189, 2189, 9: 2189, 57: 2189, 160: 2189, 542: 2189, 564: 2189, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {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, 2165, 2165, 2165, 2165, 2165, 58: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 531: 2165, 533: 2165, 2165, 2165, 540: 2165, 2165, 543: 2165, 2165, 2165, 547: 2165, 2165, 552: 2165, 2165, 560: 2165, 578: 2165, 586: 2165, 2165, 614: 2165, 617: 2165, 628: 2165, 2165, 2165, 2165, 636: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 697: 2165, 2165, 2165, 2165}, + {246, 246, 57: 246, 535: 246, 246, 246, 544: 246, 547: 246, 554: 246, 246, 246, 560: 246}, + {728: 4008}, + {538: 3991, 643: 3992, 645: 3993, 962: 4009}, + {242, 242, 57: 242, 535: 242, 242, 242, 544: 242, 547: 242, 554: 242, 242, 242, 560: 242}, + {57: 4011}, // 1140 - {531: 2161}, - {2: 2159, 2159, 2159, 2159, 2159, 2159, 2159, 10: 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 58: 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 531: 2159, 533: 2159, 2159, 2159, 540: 2159, 2159, 543: 2159, 2159, 2159, 547: 2159, 2159, 552: 2159, 2159, 560: 2159, 578: 2159, 586: 2159, 2159, 614: 2159, 617: 2159, 628: 2159, 2159, 2159, 2159, 636: 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 697: 2159, 2159, 2159, 2159}, - {2: 2157, 2157, 2157, 2157, 2157, 2157, 2157, 10: 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 58: 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 531: 2157, 533: 2157, 2157, 2157, 540: 2157, 2157, 543: 2157, 2157, 2157, 547: 2157, 2157, 552: 2157, 2157, 560: 2157, 578: 2157, 586: 2157, 2157, 614: 2157, 617: 2157, 628: 2157, 2157, 2157, 2157, 636: 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 697: 2157, 2157, 2157, 2157}, - {2: 2155, 2155, 2155, 2155, 2155, 2155, 2155, 10: 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 58: 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 531: 2155, 533: 2155, 2155, 2155, 540: 2155, 2155, 543: 2155, 2155, 2155, 547: 2155, 2155, 552: 2155, 2155, 560: 2155, 578: 2155, 586: 2155, 2155, 614: 2155, 617: 2155, 628: 2155, 2155, 2155, 2155, 636: 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 697: 2155, 2155, 2155, 2155}, - {226: 4021, 548: 4022, 629: 4020, 4019}, + {1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 537: 1459, 1459, 1459, 541: 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 554: 1459, 1459, 1459, 559: 1459, 1459, 1459, 1459, 1459, 565: 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 584: 1459, 1459, 1459, 1459, 1459, 1459, 1459, 593: 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 614: 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 625: 1459, 1459, 1459, 1459, 1459, 1459, 632: 1459, 637: 1459, 1459, 1459, 1459, 662: 1459, 707: 1459}, + {1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 541: 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 552: 1048, 554: 1048, 1048, 1048, 559: 1048, 1048, 1048, 1048, 1048, 565: 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 584: 1048, 1048, 1048, 1048, 1048, 1048, 1048, 593: 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 625: 1048, 1048, 1048, 1048, 1048, 1048, 632: 1048, 637: 1048, 1048, 1048, 1048, 661: 1048, 1048, 707: 1048, 719: 1048, 809: 1048}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4015}, + {2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 537: 2165, 2165, 542: 2165, 544: 2165, 2165, 2165, 2165, 554: 2165, 2165, 2165, 559: 2165, 2165, 2165, 2165, 2165, 565: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 585: 2165, 2165, 2165, 2165, 590: 2165, 593: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 612: 2165, 622: 2165, 2165, 625: 2165, 2165, 2165, 2165, 2165, 2165}, + {2203, 2203, 9: 2203, 57: 2203, 160: 2203, 547: 2203, 569: 2203, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, // 1145 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 4013, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 4014, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 4012, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 715: 4015, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 4010, 1319: 4011}, - {2: 2174, 2174, 2174, 2174, 2174, 2174, 2174, 10: 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 58: 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 531: 2174, 533: 2174, 2174, 2174, 540: 2174, 2174, 543: 2174, 2174, 2174, 547: 2174, 2174, 552: 2174, 2174, 560: 2174, 578: 2174, 586: 2174, 2174, 614: 2174, 617: 2174, 628: 2174, 2174, 2174, 2174, 636: 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 697: 2174, 2174, 2174, 2174, 715: 2174}, - {2: 2173, 2173, 2173, 2173, 2173, 2173, 2173, 10: 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 58: 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 531: 2173, 533: 2173, 2173, 2173, 540: 2173, 2173, 543: 2173, 2173, 2173, 547: 2173, 2173, 552: 2173, 2173, 560: 2173, 578: 2173, 586: 2173, 2173, 614: 2173, 617: 2173, 628: 2173, 2173, 2173, 2173, 636: 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 697: 2173, 2173, 2173, 2173, 715: 2173}, - {2: 2172, 2172, 2172, 2172, 2172, 2172, 2172, 10: 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 58: 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 531: 2172, 533: 2172, 2172, 2172, 540: 2172, 2172, 543: 2172, 2172, 2172, 547: 2172, 2172, 552: 2172, 2172, 560: 2172, 578: 2172, 586: 2172, 2172, 614: 2172, 617: 2172, 628: 2172, 2172, 2172, 2172, 636: 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 697: 2172, 2172, 2172, 2172, 715: 2172}, - {2: 2171, 2171, 2171, 2171, 2171, 2171, 2171, 10: 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 58: 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 531: 2171, 533: 2171, 2171, 2171, 540: 2171, 2171, 543: 2171, 2171, 2171, 547: 2171, 2171, 552: 2171, 2171, 560: 2171, 578: 2171, 586: 2171, 2171, 614: 2171, 617: 2171, 628: 2171, 2171, 2171, 2171, 636: 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 697: 2171, 2171, 2171, 2171, 715: 2171}, + {2: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 10: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 58: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 536: 2179, 538: 2179, 2179, 2179, 545: 2179, 2179, 548: 2179, 2179, 2179, 552: 2179, 2179, 557: 2179, 2179, 564: 2179, 583: 2179, 591: 2179, 2179, 624: 2179, 631: 2179, 633: 2179, 2179, 2179, 2179, 641: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 663: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179}, + {536: 2175}, + {2: 2173, 2173, 2173, 2173, 2173, 2173, 2173, 10: 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 58: 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 536: 2173, 538: 2173, 2173, 2173, 545: 2173, 2173, 548: 2173, 2173, 2173, 552: 2173, 2173, 557: 2173, 2173, 564: 2173, 583: 2173, 591: 2173, 2173, 624: 2173, 631: 2173, 633: 2173, 2173, 2173, 2173, 641: 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 663: 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173}, + {2: 2171, 2171, 2171, 2171, 2171, 2171, 2171, 10: 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 58: 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 536: 2171, 538: 2171, 2171, 2171, 545: 2171, 2171, 548: 2171, 2171, 2171, 552: 2171, 2171, 557: 2171, 2171, 564: 2171, 583: 2171, 591: 2171, 2171, 624: 2171, 631: 2171, 633: 2171, 2171, 2171, 2171, 641: 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 663: 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171}, + {2: 2169, 2169, 2169, 2169, 2169, 2169, 2169, 10: 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 58: 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 536: 2169, 538: 2169, 2169, 2169, 545: 2169, 2169, 548: 2169, 2169, 2169, 552: 2169, 2169, 557: 2169, 2169, 564: 2169, 583: 2169, 591: 2169, 2169, 624: 2169, 631: 2169, 633: 2169, 2169, 2169, 2169, 641: 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 663: 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169}, // 1150 - {2: 2170, 2170, 2170, 2170, 2170, 2170, 2170, 10: 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 58: 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 531: 2170, 533: 2170, 2170, 2170, 540: 2170, 2170, 543: 2170, 2170, 2170, 547: 2170, 2170, 552: 2170, 2170, 560: 2170, 578: 2170, 586: 2170, 2170, 614: 2170, 617: 2170, 628: 2170, 2170, 2170, 2170, 636: 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 697: 2170, 2170, 2170, 2170, 715: 2170}, - {2: 2169, 2169, 2169, 2169, 2169, 2169, 2169, 10: 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 58: 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 531: 2169, 533: 2169, 2169, 2169, 540: 2169, 2169, 543: 2169, 2169, 2169, 547: 2169, 2169, 552: 2169, 2169, 560: 2169, 578: 2169, 586: 2169, 2169, 614: 2169, 617: 2169, 628: 2169, 2169, 2169, 2169, 636: 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 697: 2169, 2169, 2169, 2169, 715: 2169}, - {2: 2168, 2168, 2168, 2168, 2168, 2168, 2168, 10: 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 58: 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 531: 2168, 533: 2168, 2168, 2168, 540: 2168, 2168, 543: 2168, 2168, 2168, 547: 2168, 2168, 552: 2168, 2168, 560: 2168, 578: 2168, 586: 2168, 2168, 614: 2168, 617: 2168, 628: 2168, 2168, 2168, 2168, 636: 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 697: 2168, 2168, 2168, 2168, 715: 2168}, - {2: 2167, 2167, 2167, 2167, 2167, 2167, 2167, 10: 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 58: 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 531: 2167, 533: 2167, 2167, 2167, 540: 2167, 2167, 543: 2167, 2167, 2167, 547: 2167, 2167, 552: 2167, 2167, 560: 2167, 578: 2167, 586: 2167, 2167, 614: 2167, 617: 2167, 628: 2167, 2167, 2167, 2167, 636: 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 697: 2167, 2167, 2167, 2167, 715: 2167}, - {226: 2164, 534: 3812, 536: 3811, 548: 2164, 629: 2164, 2164, 915: 4009}, + {226: 4044, 553: 4045, 634: 4043, 4042}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 4036, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 4037, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 4035, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 721: 4038, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 4033, 1325: 4034}, + {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, 2188, 2188, 2188, 2188, 2188, 58: 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 536: 2188, 538: 2188, 2188, 2188, 545: 2188, 2188, 548: 2188, 2188, 2188, 552: 2188, 2188, 557: 2188, 2188, 564: 2188, 583: 2188, 591: 2188, 2188, 624: 2188, 631: 2188, 633: 2188, 2188, 2188, 2188, 641: 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 663: 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 721: 2188}, + {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, 2187, 2187, 2187, 2187, 2187, 58: 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 536: 2187, 538: 2187, 2187, 2187, 545: 2187, 2187, 548: 2187, 2187, 2187, 552: 2187, 2187, 557: 2187, 2187, 564: 2187, 583: 2187, 591: 2187, 2187, 624: 2187, 631: 2187, 633: 2187, 2187, 2187, 2187, 641: 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 663: 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 721: 2187}, + {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, 2186, 2186, 2186, 2186, 2186, 58: 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 536: 2186, 538: 2186, 2186, 2186, 545: 2186, 2186, 548: 2186, 2186, 2186, 552: 2186, 2186, 557: 2186, 2186, 564: 2186, 583: 2186, 591: 2186, 2186, 624: 2186, 631: 2186, 633: 2186, 2186, 2186, 2186, 641: 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 663: 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 721: 2186}, // 1155 - {226: 2163, 548: 2163, 629: 2163, 2163}, - {2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 532: 2178, 2178, 537: 2178, 539: 2178, 2178, 2178, 2178, 549: 2178, 2178, 2178, 554: 2178, 2178, 2178, 2178, 2178, 2178, 561: 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 580: 2178, 2178, 2178, 2178, 585: 2178, 588: 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 607: 2178, 619: 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178}, - {531: 2907, 775: 4018}, - {946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 532: 946, 946, 946, 536: 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 549: 946, 946, 946, 554: 946, 946, 946, 946, 946, 946, 561: 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 579: 946, 946, 946, 946, 946, 946, 946, 588: 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 609: 946, 946, 946, 946, 946, 615: 946, 946, 618: 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 632: 946, 946, 946, 946, 703: 946, 717: 4016}, - {1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 2154, 1967, 1967, 1967, 536: 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 549: 1967, 1967, 1967, 554: 1967, 1967, 1967, 1967, 1967, 1967, 561: 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 579: 1967, 1967, 1967, 1967, 1967, 1967, 1967, 588: 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 609: 1967, 1967, 1967, 1967, 1967, 615: 1967, 1967, 618: 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 632: 1967, 1967, 1967, 1967, 703: 1967, 716: 1967, 718: 1967, 1967}, + {2: 2185, 2185, 2185, 2185, 2185, 2185, 2185, 10: 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 58: 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 536: 2185, 538: 2185, 2185, 2185, 545: 2185, 2185, 548: 2185, 2185, 2185, 552: 2185, 2185, 557: 2185, 2185, 564: 2185, 583: 2185, 591: 2185, 2185, 624: 2185, 631: 2185, 633: 2185, 2185, 2185, 2185, 641: 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 663: 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 721: 2185}, + {2: 2184, 2184, 2184, 2184, 2184, 2184, 2184, 10: 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 58: 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 536: 2184, 538: 2184, 2184, 2184, 545: 2184, 2184, 548: 2184, 2184, 2184, 552: 2184, 2184, 557: 2184, 2184, 564: 2184, 583: 2184, 591: 2184, 2184, 624: 2184, 631: 2184, 633: 2184, 2184, 2184, 2184, 641: 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 663: 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 721: 2184}, + {2: 2183, 2183, 2183, 2183, 2183, 2183, 2183, 10: 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 58: 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 536: 2183, 538: 2183, 2183, 2183, 545: 2183, 2183, 548: 2183, 2183, 2183, 552: 2183, 2183, 557: 2183, 2183, 564: 2183, 583: 2183, 591: 2183, 2183, 624: 2183, 631: 2183, 633: 2183, 2183, 2183, 2183, 641: 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 663: 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 721: 2183}, + {2: 2182, 2182, 2182, 2182, 2182, 2182, 2182, 10: 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 58: 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 536: 2182, 538: 2182, 2182, 2182, 545: 2182, 2182, 548: 2182, 2182, 2182, 552: 2182, 2182, 557: 2182, 2182, 564: 2182, 583: 2182, 591: 2182, 2182, 624: 2182, 631: 2182, 633: 2182, 2182, 2182, 2182, 641: 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 663: 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 721: 2182}, + {2: 2181, 2181, 2181, 2181, 2181, 2181, 2181, 10: 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 58: 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 536: 2181, 538: 2181, 2181, 2181, 545: 2181, 2181, 548: 2181, 2181, 2181, 552: 2181, 2181, 557: 2181, 2181, 564: 2181, 583: 2181, 591: 2181, 2181, 624: 2181, 631: 2181, 633: 2181, 2181, 2181, 2181, 641: 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 663: 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 721: 2181}, // 1160 - {1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 2153, 1966, 1966, 1966, 536: 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 549: 1966, 1966, 1966, 554: 1966, 1966, 1966, 1966, 1966, 1966, 561: 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 579: 1966, 1966, 1966, 1966, 1966, 1966, 1966, 588: 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 609: 1966, 1966, 1966, 1966, 1966, 615: 1966, 1966, 618: 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 632: 1966, 1966, 1966, 1966, 703: 1966, 716: 1966, 718: 1966, 1966}, - {531: 2152}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 4017}, - {2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 532: 2176, 2176, 537: 2176, 539: 2176, 2176, 2176, 2176, 549: 2176, 2176, 2176, 554: 2176, 2176, 2176, 2176, 2176, 2176, 561: 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 580: 2176, 2176, 2176, 2176, 585: 2176, 588: 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 607: 2176, 619: 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176}, - {2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 532: 2177, 2177, 537: 2177, 539: 2177, 2177, 2177, 2177, 549: 2177, 2177, 2177, 554: 2177, 2177, 2177, 2177, 2177, 2177, 561: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 580: 2177, 2177, 2177, 2177, 585: 2177, 588: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 607: 2177, 619: 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177}, + {226: 2178, 539: 3835, 541: 3834, 553: 2178, 634: 2178, 2178, 921: 4032}, + {226: 2177, 553: 2177, 634: 2177, 2177}, + {2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 537: 2192, 2192, 542: 2192, 544: 2192, 2192, 2192, 2192, 554: 2192, 2192, 2192, 559: 2192, 2192, 2192, 2192, 2192, 565: 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 585: 2192, 2192, 2192, 2192, 590: 2192, 593: 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 612: 2192, 622: 2192, 2192, 625: 2192, 2192, 2192, 2192, 2192, 2192}, + {536: 2924, 781: 4041}, + {954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 537: 954, 954, 954, 541: 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 554: 954, 954, 954, 559: 954, 954, 954, 954, 954, 565: 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 584: 954, 954, 954, 954, 954, 954, 954, 593: 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 614: 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 625: 954, 954, 954, 954, 954, 954, 632: 954, 637: 954, 954, 954, 954, 707: 954, 722: 4039}, // 1165 - {2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 532: 2207, 2207, 537: 2207, 539: 2207, 2207, 2207, 2207, 549: 2207, 2207, 2207, 554: 2207, 556: 2207, 2207, 2207, 2207, 561: 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 580: 2207, 2207, 2207, 2207, 585: 2207, 588: 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 607: 2207}, - {2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 532: 2206, 2206, 537: 2206, 539: 2206, 2206, 2206, 2206, 549: 2206, 2206, 2206, 554: 2206, 556: 2206, 2206, 2206, 2206, 561: 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 580: 2206, 2206, 2206, 2206, 585: 2206, 588: 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 607: 2206}, - {2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 532: 2205, 2205, 537: 2205, 539: 2205, 2205, 2205, 2205, 549: 2205, 2205, 2205, 554: 2205, 556: 2205, 2205, 2205, 2205, 561: 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 580: 2205, 2205, 2205, 2205, 585: 2205, 588: 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 607: 2205}, - {2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 532: 2179, 2179, 537: 2179, 539: 2179, 2179, 2179, 2179, 549: 2179, 2179, 2179, 554: 2179, 2179, 2179, 2179, 2179, 2179, 561: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 580: 2179, 2179, 2179, 2179, 585: 2179, 588: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 607: 2179, 619: 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4024, 3051, 3052, 3050, 821: 4025, 906: 4026}, + {1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 2168, 1978, 1978, 1978, 541: 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 554: 1978, 1978, 1978, 559: 1978, 1978, 1978, 1978, 1978, 565: 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 584: 1978, 1978, 1978, 1978, 1978, 1978, 1978, 593: 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 614: 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 625: 1978, 1978, 1978, 1978, 1978, 1978, 632: 1978, 637: 1978, 1978, 1978, 1978, 707: 1978, 720: 1978, 723: 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, 2167, 1977, 1977, 1977, 541: 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 554: 1977, 1977, 1977, 559: 1977, 1977, 1977, 1977, 1977, 565: 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 584: 1977, 1977, 1977, 1977, 1977, 1977, 1977, 593: 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 614: 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 625: 1977, 1977, 1977, 1977, 1977, 1977, 632: 1977, 637: 1977, 1977, 1977, 1977, 707: 1977, 720: 1977, 723: 1977, 1977}, + {536: 2166}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 4040}, + {2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 537: 2190, 2190, 542: 2190, 544: 2190, 2190, 2190, 2190, 554: 2190, 2190, 2190, 559: 2190, 2190, 2190, 2190, 2190, 565: 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 585: 2190, 2190, 2190, 2190, 590: 2190, 593: 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 612: 2190, 622: 2190, 2190, 625: 2190, 2190, 2190, 2190, 2190, 2190}, // 1170 - {2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 531: 2613, 546: 2613, 553: 2613, 555: 2613, 2613, 2613, 577: 2613, 586: 2613, 605: 2613, 709: 2613, 716: 4047, 2613, 727: 2613, 2613, 730: 2613, 732: 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 744: 2613, 2613, 748: 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613}, - {9: 2610, 57: 2610}, - {9: 4027, 57: 4028}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4024, 3051, 3052, 3050, 821: 4046}, - {364: 4029}, + {2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 537: 2191, 2191, 542: 2191, 544: 2191, 2191, 2191, 2191, 554: 2191, 2191, 2191, 559: 2191, 2191, 2191, 2191, 2191, 565: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 585: 2191, 2191, 2191, 2191, 590: 2191, 593: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 612: 2191, 622: 2191, 2191, 625: 2191, 2191, 2191, 2191, 2191, 2191}, + {2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 537: 2221, 2221, 542: 2221, 544: 2221, 2221, 2221, 2221, 554: 2221, 2221, 2221, 559: 2221, 2221, 562: 2221, 2221, 565: 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 585: 2221, 2221, 2221, 2221, 590: 2221, 593: 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 612: 2221}, + {2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 537: 2220, 2220, 542: 2220, 544: 2220, 2220, 2220, 2220, 554: 2220, 2220, 2220, 559: 2220, 2220, 562: 2220, 2220, 565: 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 585: 2220, 2220, 2220, 2220, 590: 2220, 593: 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 612: 2220}, + {2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 537: 2219, 2219, 542: 2219, 544: 2219, 2219, 2219, 2219, 554: 2219, 2219, 2219, 559: 2219, 2219, 562: 2219, 2219, 565: 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 585: 2219, 2219, 2219, 2219, 590: 2219, 593: 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 612: 2219}, + {2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 537: 2193, 2193, 542: 2193, 544: 2193, 2193, 2193, 2193, 554: 2193, 2193, 2193, 559: 2193, 2193, 2193, 2193, 2193, 565: 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 585: 2193, 2193, 2193, 2193, 590: 2193, 593: 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 612: 2193, 622: 2193, 2193, 625: 2193, 2193, 2193, 2193, 2193, 2193}, // 1175 - {531: 4030}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 4031}, - {57: 2199, 532: 4034, 543: 3782, 3783, 3788, 584: 3784, 606: 4033, 609: 3785, 3786, 3779, 3789, 3778, 615: 3787, 3780, 618: 3781, 1366: 4032}, - {57: 4045}, - {188: 4038, 580: 4037}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4047, 3068, 3069, 3067, 828: 4048, 912: 4049}, + {2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 536: 2627, 551: 2627, 558: 2627, 560: 2627, 2627, 2627, 582: 2627, 591: 2627, 610: 2627, 714: 2627, 720: 4070, 722: 2627, 732: 2627, 2627, 735: 2627, 737: 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 749: 2627, 2627, 753: 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627}, + {9: 2624, 57: 2624}, + {9: 4050, 57: 4051}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4047, 3068, 3069, 3067, 828: 4069}, // 1180 - {159: 4035}, - {307: 4036}, - {57: 2195}, - {402: 4040}, - {264: 4039}, + {365: 4052}, + {536: 4053}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 4054}, + {57: 2213, 537: 4057, 548: 3805, 3806, 3811, 589: 3807, 611: 4056, 614: 3808, 3809, 3802, 3812, 3801, 3810, 3803, 3804, 1373: 4055}, + {57: 4068}, // 1185 - {57: 2196}, - {264: 4041}, - {57: 2198, 532: 4042}, - {159: 4043}, - {307: 4044}, + {188: 4061, 585: 4060}, + {159: 4058}, + {307: 4059}, + {57: 2209}, + {404: 4063}, // 1190 - {57: 2197}, - {2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 532: 2208, 2208, 537: 2208, 539: 2208, 2208, 2208, 2208, 549: 2208, 2208, 2208, 554: 2208, 556: 2208, 2208, 2208, 2208, 561: 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 580: 2208, 2208, 2208, 2208, 585: 2208, 588: 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 607: 2208}, - {9: 2609, 57: 2609}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4048, 3051, 3052, 3050}, - {2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 531: 2612, 546: 2612, 553: 2612, 555: 2612, 2612, 2612, 577: 2612, 586: 2612, 605: 2612, 709: 2612, 716: 4049, 2612, 727: 2612, 2612, 730: 2612, 732: 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 744: 2612, 2612, 748: 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612}, + {264: 4062}, + {57: 2210}, + {264: 4064}, + {57: 2212, 537: 4065}, + {159: 4066}, // 1195 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4050, 3051, 3052, 3050}, - {2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 531: 2611, 546: 2611, 553: 2611, 555: 2611, 2611, 2611, 577: 2611, 586: 2611, 605: 2611, 709: 2611, 717: 2611, 727: 2611, 2611, 730: 2611, 732: 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 744: 2611, 2611, 748: 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2611}, - {2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 532: 2209, 2209, 537: 2209, 539: 2209, 2209, 2209, 2209, 549: 2209, 2209, 2209, 554: 2209, 556: 2209, 2209, 2209, 2209, 561: 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 580: 2209, 2209, 2209, 2209, 585: 2209, 588: 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 607: 2209, 800: 3741, 3739}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3616, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 4053, 3597, 3679, 3596, 3593}, - {57: 4054, 538: 3693, 703: 3694}, + {307: 4067}, + {57: 2211}, + {2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 537: 2222, 2222, 542: 2222, 544: 2222, 2222, 2222, 2222, 554: 2222, 2222, 2222, 559: 2222, 2222, 562: 2222, 2222, 565: 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 585: 2222, 2222, 2222, 2222, 590: 2222, 593: 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 612: 2222}, + {9: 2623, 57: 2623}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4071, 3068, 3069, 3067}, // 1200 - {184: 1134, 549: 1134, 561: 4056, 820: 1134, 1402: 4055}, - {184: 4060, 549: 4061, 820: 1137, 988: 4059}, - {10: 4057, 234: 4058}, - {184: 1133, 549: 1133, 820: 1133}, - {184: 1132, 549: 1132, 820: 1132}, + {2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 536: 2626, 551: 2626, 558: 2626, 560: 2626, 2626, 2626, 582: 2626, 591: 2626, 610: 2626, 714: 2626, 720: 4072, 722: 2626, 732: 2626, 2626, 735: 2626, 737: 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 749: 2626, 2626, 753: 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4073, 3068, 3069, 3067}, + {2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 536: 2625, 551: 2625, 558: 2625, 560: 2625, 2625, 2625, 582: 2625, 591: 2625, 610: 2625, 714: 2625, 722: 2625, 732: 2625, 2625, 735: 2625, 737: 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 749: 2625, 2625, 753: 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625}, + {2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 537: 2223, 2223, 542: 2223, 544: 2223, 2223, 2223, 2223, 554: 2223, 2223, 2223, 559: 2223, 2223, 562: 2223, 2223, 565: 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 585: 2223, 2223, 2223, 2223, 590: 2223, 593: 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 612: 2223, 806: 3764, 3762}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3638, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 4076, 3619, 3701, 3618, 3615}, // 1205 - {820: 4064, 832: 4065}, - {327: 4063}, - {327: 4062}, - {820: 1135}, - {820: 1136}, + {57: 4077, 543: 3715, 707: 3716}, + {184: 1142, 554: 1142, 566: 4079, 826: 1142, 1409: 4078}, + {184: 4083, 554: 4084, 826: 1145, 994: 4082}, + {10: 4080, 234: 4081}, + {184: 1141, 554: 1141, 826: 1141}, // 1210 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 531: 4067, 770: 4066, 3051, 3052, 3050, 1026: 4069, 1306: 4070, 1507: 4068}, - {1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 532: 1143, 1143, 1143, 536: 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 549: 1143, 1143, 1143, 554: 1143, 1143, 1143, 1143, 1143, 1143, 561: 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 579: 1143, 1143, 1143, 1143, 1143, 1143, 1143, 588: 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 609: 1143, 1143, 1143, 1143, 1143, 615: 1143, 1143, 618: 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 632: 1143, 1143, 1143, 1143, 696: 1143, 703: 1143}, - {1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 532: 1185, 1185, 1185, 536: 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 549: 1185, 1185, 1185, 554: 1185, 1185, 1185, 1185, 1185, 1185, 561: 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 579: 1185, 1185, 1185, 1185, 1185, 1185, 1185, 588: 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 609: 1185, 1185, 1185, 1185, 1185, 615: 1185, 1185, 618: 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 632: 1185, 1185, 1185, 1185, 696: 1185, 703: 1185}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 1182, 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 546: 1182, 564: 1182, 588: 1182, 591: 1182, 593: 1182, 770: 4066, 3051, 3052, 3050, 1026: 4073, 1401: 4072, 1508: 4071}, - {1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 532: 1156, 1156, 1156, 536: 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 549: 1156, 1156, 1156, 554: 1156, 1156, 1156, 1156, 1156, 1156, 561: 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 579: 1156, 1156, 1156, 1156, 1156, 1156, 1156, 588: 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 609: 1156, 1156, 1156, 1156, 1156, 615: 1156, 1156, 618: 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 632: 1156, 1156, 1156, 1156, 696: 1156, 703: 1156}, + {184: 1140, 554: 1140, 826: 1140}, + {826: 4087, 838: 4088}, + {328: 4086}, + {328: 4085}, + {826: 1143}, // 1215 - {1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 532: 1155, 1155, 1155, 536: 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 549: 1155, 1155, 1155, 554: 1155, 1155, 1155, 1155, 1155, 1155, 561: 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 579: 1155, 1155, 1155, 1155, 1155, 1155, 1155, 588: 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 609: 1155, 1155, 1155, 1155, 1155, 615: 1155, 1155, 618: 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 632: 1155, 1155, 1155, 1155, 696: 1155, 703: 1155}, - {1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 532: 1154, 1154, 1154, 536: 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 549: 1154, 1154, 1154, 554: 1154, 1154, 1154, 1154, 1154, 1154, 561: 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 579: 1154, 1154, 1154, 1154, 1154, 1154, 1154, 588: 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 609: 1154, 1154, 1154, 1154, 1154, 615: 1154, 1154, 618: 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 632: 1154, 1154, 1154, 1154, 696: 1154, 703: 1154}, - {57: 4120}, - {57: 1180, 546: 4075, 564: 1180, 588: 1180, 591: 1180, 593: 1180, 1405: 4074}, - {57: 1181, 546: 1181, 564: 1181, 588: 1181, 591: 1181, 593: 1181}, + {826: 1144}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 536: 4090, 777: 4089, 3068, 3069, 3067, 1032: 4092, 1312: 4093, 1514: 4091}, + {1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 537: 1151, 1151, 1151, 541: 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 554: 1151, 1151, 1151, 559: 1151, 1151, 1151, 1151, 1151, 565: 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 584: 1151, 1151, 1151, 1151, 1151, 1151, 1151, 593: 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 614: 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 625: 1151, 1151, 1151, 1151, 1151, 1151, 632: 1151, 637: 1151, 1151, 1151, 1151, 662: 1151, 707: 1151}, + {1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 537: 1193, 1193, 1193, 541: 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 554: 1193, 1193, 1193, 559: 1193, 1193, 1193, 1193, 1193, 565: 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 584: 1193, 1193, 1193, 1193, 1193, 1193, 1193, 593: 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 614: 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 625: 1193, 1193, 1193, 1193, 1193, 1193, 632: 1193, 637: 1193, 1193, 1193, 1193, 662: 1193, 707: 1193}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 1190, 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 551: 1190, 569: 1190, 593: 1190, 596: 1190, 598: 1190, 777: 4089, 3068, 3069, 3067, 1032: 4096, 1408: 4095, 1515: 4094}, // 1220 - {57: 1178, 564: 4079, 588: 1178, 591: 1178, 593: 1178, 1410: 4078}, - {723: 4076}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3881, 973: 3883, 1000: 4077}, - {9: 3884, 57: 1179, 564: 1179, 588: 1179, 591: 1179, 593: 1179}, - {57: 1176, 588: 4084, 591: 4085, 593: 4086, 1409: 4082, 1506: 4083}, + {1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 537: 1164, 1164, 1164, 541: 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 554: 1164, 1164, 1164, 559: 1164, 1164, 1164, 1164, 1164, 565: 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 584: 1164, 1164, 1164, 1164, 1164, 1164, 1164, 593: 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 614: 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 625: 1164, 1164, 1164, 1164, 1164, 1164, 632: 1164, 637: 1164, 1164, 1164, 1164, 662: 1164, 707: 1164}, + {1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 537: 1163, 1163, 1163, 541: 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 554: 1163, 1163, 1163, 559: 1163, 1163, 1163, 1163, 1163, 565: 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 584: 1163, 1163, 1163, 1163, 1163, 1163, 1163, 593: 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 614: 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 625: 1163, 1163, 1163, 1163, 1163, 1163, 632: 1163, 637: 1163, 1163, 1163, 1163, 662: 1163, 707: 1163}, + {1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 537: 1162, 1162, 1162, 541: 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 554: 1162, 1162, 1162, 559: 1162, 1162, 1162, 1162, 1162, 565: 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 584: 1162, 1162, 1162, 1162, 1162, 1162, 1162, 593: 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 614: 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 625: 1162, 1162, 1162, 1162, 1162, 1162, 632: 1162, 637: 1162, 1162, 1162, 1162, 662: 1162, 707: 1162}, + {57: 4143}, + {57: 1188, 551: 4098, 569: 1188, 593: 1188, 596: 1188, 598: 1188, 1412: 4097}, // 1225 - {723: 4080}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3881, 973: 3883, 1000: 4081}, - {9: 3884, 57: 1177, 588: 1177, 591: 1177, 593: 1177}, - {57: 1183}, - {189: 4097, 201: 4093, 560: 4087, 627: 4098, 636: 4089, 4088, 641: 4096, 4095, 916: 4094, 1097: 4091, 1504: 4092, 4090}, + {57: 1189, 551: 1189, 569: 1189, 593: 1189, 596: 1189, 598: 1189}, + {57: 1186, 569: 4102, 593: 1186, 596: 1186, 598: 1186, 1417: 4101}, + {728: 4099}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3904, 979: 3906, 1006: 4100}, + {9: 3907, 57: 1187, 569: 1187, 593: 1187, 596: 1187, 598: 1187}, // 1230 - {189: 1174, 201: 1174, 560: 1174, 627: 1174, 636: 1174, 1174, 641: 1174, 1174}, - {189: 1173, 201: 1173, 560: 1173, 627: 1173, 636: 1173, 1173, 641: 1173, 1173}, - {189: 1172, 201: 1172, 560: 1172, 627: 1172, 636: 1172, 1172, 641: 1172, 1172}, - {2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 57: 2494, 167: 2494, 191: 2494, 530: 2494, 2494, 2494, 534: 2494, 2494, 2494, 2494, 2494, 2494, 546: 2494, 2494, 2494, 2494, 552: 2494, 2494, 565: 2494, 608: 2494, 695: 2494, 701: 2494, 2494, 704: 2494, 2494, 2494, 2494, 2494, 2494, 2494}, - {2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 57: 2493, 167: 2493, 191: 2493, 243: 2493, 530: 2493, 2493, 2493, 534: 2493, 2493, 2493, 2493, 2493, 2493, 546: 2493, 2493, 2493, 2493, 552: 2493, 2493, 565: 2493, 608: 2493, 695: 2493, 701: 2493, 2493, 704: 2493, 2493, 2493, 2493, 2493, 2493, 2493}, + {57: 1184, 593: 4107, 596: 4108, 598: 4109, 1416: 4105, 1513: 4106}, + {728: 4103}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3904, 979: 3906, 1006: 4104}, + {9: 3907, 57: 1185, 593: 1185, 596: 1185, 598: 1185}, + {57: 1191}, // 1235 - {2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 57: 2492, 167: 2492, 191: 2492, 243: 2492, 530: 2492, 2492, 2492, 534: 2492, 2492, 2492, 2492, 2492, 2492, 546: 2492, 2492, 2492, 2492, 552: 2492, 2492, 565: 2492, 608: 2492, 695: 2492, 701: 2492, 2492, 704: 2492, 2492, 2492, 2492, 2492, 2492, 2492}, - {57: 1175}, - {57: 1171}, - {57: 1170}, - {167: 4115}, + {189: 4120, 203: 4116, 564: 4110, 632: 4121, 641: 4112, 4111, 646: 4119, 4118, 922: 4117, 1103: 4114, 1511: 4115, 4113}, + {189: 1182, 203: 1182, 564: 1182, 632: 1182, 641: 1182, 1182, 646: 1182, 1182}, + {189: 1181, 203: 1181, 564: 1181, 632: 1181, 641: 1181, 1181, 646: 1181, 1181}, + {189: 1180, 203: 1180, 564: 1180, 632: 1180, 641: 1180, 1180, 646: 1180, 1180}, + {2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 57: 2508, 167: 2508, 191: 2508, 535: 2508, 2508, 2508, 539: 2508, 2508, 2508, 2508, 2508, 2508, 551: 2508, 2508, 2508, 2508, 557: 2508, 2508, 570: 2508, 613: 2508, 661: 2508, 706: 2508, 708: 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508}, // 1240 - {167: 4113}, - {167: 4111}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4118}, - {639: 4117}, - {189: 4097, 201: 4099, 560: 4087, 636: 4089, 4088, 641: 4102, 4101, 916: 4100, 1097: 4104, 1305: 4103}, + {2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 57: 2507, 167: 2507, 191: 2507, 243: 2507, 535: 2507, 2507, 2507, 539: 2507, 2507, 2507, 2507, 2507, 2507, 551: 2507, 2507, 2507, 2507, 557: 2507, 2507, 570: 2507, 613: 2507, 661: 2507, 706: 2507, 708: 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507}, + {2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 57: 2506, 167: 2506, 191: 2506, 243: 2506, 535: 2506, 2506, 2506, 539: 2506, 2506, 2506, 2506, 2506, 2506, 551: 2506, 2506, 2506, 2506, 557: 2506, 2506, 570: 2506, 613: 2506, 661: 2506, 706: 2506, 708: 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506}, + {57: 1183}, + {57: 1179}, + {57: 1178}, // 1245 - {167: 4115, 191: 4116}, - {167: 4113, 191: 4114}, - {167: 4111, 191: 4112}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4107}, - {566: 4105}, + {167: 4138}, + {167: 4136}, + {167: 4134}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4141}, + {644: 4140}, // 1250 - {57: 1163, 566: 1163}, - {189: 4097, 201: 4099, 560: 4087, 636: 4089, 4088, 641: 4102, 4101, 916: 4100, 1097: 4104, 1305: 4106}, - {57: 1164}, - {118: 3767, 127: 3775, 133: 3763, 137: 3760, 3762, 3759, 3761, 3765, 3766, 3771, 3770, 3769, 3773, 3774, 3768, 3772, 3764, 566: 3745, 3743, 3744, 3742, 3740, 594: 3757, 3754, 3756, 3755, 3751, 3753, 3752, 3749, 3750, 3748, 3758, 800: 3741, 3739, 886: 3747, 901: 4108}, - {167: 4109, 191: 4110}, + {189: 4120, 203: 4122, 564: 4110, 641: 4112, 4111, 646: 4125, 4124, 922: 4123, 1103: 4127, 1311: 4126}, + {167: 4138, 191: 4139}, + {167: 4136, 191: 4137}, + {167: 4134, 191: 4135}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4130}, // 1255 - {57: 1166, 566: 1166}, - {57: 1159, 566: 1159}, - {57: 1167, 566: 1167}, - {57: 1160, 566: 1160}, - {57: 1168, 566: 1168}, + {571: 4128}, + {57: 1171, 571: 1171}, + {189: 4120, 203: 4122, 564: 4110, 641: 4112, 4111, 646: 4125, 4124, 922: 4123, 1103: 4127, 1311: 4129}, + {57: 1172}, + {118: 3790, 127: 3798, 133: 3786, 137: 3783, 3785, 3782, 3784, 3788, 3789, 3794, 3793, 3792, 3796, 3797, 3791, 3795, 3787, 571: 3768, 3766, 3767, 3765, 3763, 599: 3780, 3777, 3779, 3778, 3774, 3776, 3775, 3772, 3773, 3771, 3781, 806: 3764, 3762, 892: 3770, 907: 4131}, // 1260 - {57: 1161, 566: 1161}, - {57: 1169, 566: 1169}, - {57: 1162, 566: 1162}, - {57: 1165, 566: 1165}, - {118: 3767, 127: 3775, 133: 3763, 137: 3760, 3762, 3759, 3761, 3765, 3766, 3771, 3770, 3769, 3773, 3774, 3768, 3772, 3764, 566: 3745, 3743, 3744, 3742, 3740, 594: 3757, 3754, 3756, 3755, 3751, 3753, 3752, 3749, 3750, 3748, 3758, 800: 3741, 3739, 886: 3747, 901: 4119}, + {167: 4132, 191: 4133}, + {57: 1174, 571: 1174}, + {57: 1167, 571: 1167}, + {57: 1175, 571: 1175}, + {57: 1168, 571: 1168}, // 1265 - {167: 4109}, - {1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 532: 1184, 1184, 1184, 536: 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 549: 1184, 1184, 1184, 554: 1184, 1184, 1184, 1184, 1184, 1184, 561: 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 579: 1184, 1184, 1184, 1184, 1184, 1184, 1184, 588: 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 609: 1184, 1184, 1184, 1184, 1184, 615: 1184, 1184, 618: 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 632: 1184, 1184, 1184, 1184, 696: 1184, 703: 1184}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4122}, - {2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 532: 2213, 2213, 537: 2213, 539: 2213, 2213, 2213, 2213, 549: 2213, 2213, 2213, 554: 2213, 556: 2213, 2213, 2213, 2213, 561: 2213, 2213, 2213, 2213, 2213, 3745, 3743, 3744, 3742, 3740, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 580: 2213, 2213, 2213, 2213, 585: 2213, 588: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 607: 2213, 800: 3741, 3739}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4124}, + {57: 1176, 571: 1176}, + {57: 1169, 571: 1169}, + {57: 1177, 571: 1177}, + {57: 1170, 571: 1170}, + {57: 1173, 571: 1173}, // 1270 - {57: 4125, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {184: 4060, 549: 4061, 820: 1137, 988: 4126}, - {820: 4064, 832: 4127}, - {1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 532: 1144, 1144, 1144, 536: 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 549: 1144, 1144, 1144, 554: 1144, 1144, 1144, 1144, 1144, 1144, 561: 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 579: 1144, 1144, 1144, 1144, 1144, 1144, 1144, 588: 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 609: 1144, 1144, 1144, 1144, 1144, 615: 1144, 1144, 618: 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 632: 1144, 1144, 1144, 1144, 696: 1144, 703: 1144}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4129}, + {118: 3790, 127: 3798, 133: 3786, 137: 3783, 3785, 3782, 3784, 3788, 3789, 3794, 3793, 3792, 3796, 3797, 3791, 3795, 3787, 571: 3768, 3766, 3767, 3765, 3763, 599: 3780, 3777, 3779, 3778, 3774, 3776, 3775, 3772, 3773, 3771, 3781, 806: 3764, 3762, 892: 3770, 907: 4142}, + {167: 4132}, + {1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 537: 1192, 1192, 1192, 541: 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 554: 1192, 1192, 1192, 559: 1192, 1192, 1192, 1192, 1192, 565: 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 584: 1192, 1192, 1192, 1192, 1192, 1192, 1192, 593: 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 614: 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 625: 1192, 1192, 1192, 1192, 1192, 1192, 632: 1192, 637: 1192, 1192, 1192, 1192, 662: 1192, 707: 1192}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4145}, + {2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 537: 2227, 2227, 542: 2227, 544: 2227, 2227, 2227, 2227, 554: 2227, 2227, 2227, 559: 2227, 2227, 562: 2227, 2227, 565: 2227, 2227, 2227, 2227, 2227, 2227, 3768, 3766, 3767, 3765, 3763, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 585: 2227, 2227, 2227, 2227, 590: 2227, 593: 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 612: 2227, 806: 3764, 3762}, // 1275 - {57: 4130, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {184: 4060, 549: 4061, 820: 1137, 988: 4131}, - {820: 4064, 832: 4132}, - {1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 532: 1145, 1145, 1145, 536: 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 549: 1145, 1145, 1145, 554: 1145, 1145, 1145, 1145, 1145, 1145, 561: 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 579: 1145, 1145, 1145, 1145, 1145, 1145, 1145, 588: 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 609: 1145, 1145, 1145, 1145, 1145, 615: 1145, 1145, 618: 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 632: 1145, 1145, 1145, 1145, 696: 1145, 703: 1145}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4134}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4147}, + {57: 4148, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {184: 4083, 554: 4084, 826: 1145, 994: 4149}, + {826: 4087, 838: 4150}, + {1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 537: 1152, 1152, 1152, 541: 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 554: 1152, 1152, 1152, 559: 1152, 1152, 1152, 1152, 1152, 565: 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 584: 1152, 1152, 1152, 1152, 1152, 1152, 1152, 593: 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 614: 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 625: 1152, 1152, 1152, 1152, 1152, 1152, 632: 1152, 637: 1152, 1152, 1152, 1152, 662: 1152, 707: 1152}, // 1280 - {9: 4136, 57: 1142, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739, 1226: 4135}, - {57: 4143}, - {560: 4087, 636: 4089, 4088, 642: 4138, 916: 4137}, - {9: 4140, 57: 1139, 1227: 4142}, - {9: 4140, 57: 1139, 1227: 4139}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4152}, + {57: 4153, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {184: 4083, 554: 4084, 826: 1145, 994: 4154}, + {826: 4087, 838: 4155}, + {1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 537: 1153, 1153, 1153, 541: 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 554: 1153, 1153, 1153, 559: 1153, 1153, 1153, 1153, 1153, 565: 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 584: 1153, 1153, 1153, 1153, 1153, 1153, 1153, 593: 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 614: 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 625: 1153, 1153, 1153, 1153, 1153, 1153, 632: 1153, 637: 1153, 1153, 1153, 1153, 662: 1153, 707: 1153}, // 1285 - {57: 1140}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4141}, - {57: 1138, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {57: 1141}, - {184: 4060, 549: 4061, 820: 1137, 988: 4144}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4157}, + {9: 4159, 57: 1150, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762, 1232: 4158}, + {57: 4166}, + {564: 4110, 641: 4112, 4111, 647: 4161, 922: 4160}, + {9: 4163, 57: 1147, 1233: 4165}, // 1290 - {820: 4064, 832: 4145}, - {1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 532: 1146, 1146, 1146, 536: 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 549: 1146, 1146, 1146, 554: 1146, 1146, 1146, 1146, 1146, 1146, 561: 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 579: 1146, 1146, 1146, 1146, 1146, 1146, 1146, 588: 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 609: 1146, 1146, 1146, 1146, 1146, 615: 1146, 1146, 618: 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 632: 1146, 1146, 1146, 1146, 696: 1146, 703: 1146}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4147}, - {9: 4136, 57: 1142, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739, 1226: 4148}, - {57: 4149}, + {9: 4163, 57: 1147, 1233: 4162}, + {57: 1148}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4164}, + {57: 1146, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {57: 1149}, // 1295 - {184: 4060, 549: 4061, 820: 1137, 988: 4150}, - {820: 4064, 832: 4151}, - {1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 532: 1147, 1147, 1147, 536: 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 549: 1147, 1147, 1147, 554: 1147, 1147, 1147, 1147, 1147, 1147, 561: 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 579: 1147, 1147, 1147, 1147, 1147, 1147, 1147, 588: 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 609: 1147, 1147, 1147, 1147, 1147, 615: 1147, 1147, 618: 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 632: 1147, 1147, 1147, 1147, 696: 1147, 703: 1147}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3616, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 4153, 3597, 3679, 3596, 3593}, - {57: 4154, 538: 3693, 703: 3694}, + {184: 4083, 554: 4084, 826: 1145, 994: 4167}, + {826: 4087, 838: 4168}, + {1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 537: 1154, 1154, 1154, 541: 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 554: 1154, 1154, 1154, 559: 1154, 1154, 1154, 1154, 1154, 565: 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 584: 1154, 1154, 1154, 1154, 1154, 1154, 1154, 593: 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 614: 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 625: 1154, 1154, 1154, 1154, 1154, 1154, 632: 1154, 637: 1154, 1154, 1154, 1154, 662: 1154, 707: 1154}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4170}, + {9: 4159, 57: 1150, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762, 1232: 4171}, // 1300 - {820: 4064, 832: 4155}, - {1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 532: 1148, 1148, 1148, 536: 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 549: 1148, 1148, 1148, 554: 1148, 1148, 1148, 1148, 1148, 1148, 561: 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 579: 1148, 1148, 1148, 1148, 1148, 1148, 1148, 588: 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 609: 1148, 1148, 1148, 1148, 1148, 615: 1148, 1148, 618: 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 632: 1148, 1148, 1148, 1148, 696: 1148, 703: 1148}, - {57: 4157}, - {820: 4064, 832: 4158}, - {1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 532: 1149, 1149, 1149, 536: 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 549: 1149, 1149, 1149, 554: 1149, 1149, 1149, 1149, 1149, 1149, 561: 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 579: 1149, 1149, 1149, 1149, 1149, 1149, 1149, 588: 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 609: 1149, 1149, 1149, 1149, 1149, 615: 1149, 1149, 618: 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 632: 1149, 1149, 1149, 1149, 696: 1149, 703: 1149}, + {57: 4172}, + {184: 4083, 554: 4084, 826: 1145, 994: 4173}, + {826: 4087, 838: 4174}, + {1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 537: 1155, 1155, 1155, 541: 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 554: 1155, 1155, 1155, 559: 1155, 1155, 1155, 1155, 1155, 565: 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 584: 1155, 1155, 1155, 1155, 1155, 1155, 1155, 593: 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 614: 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 625: 1155, 1155, 1155, 1155, 1155, 1155, 632: 1155, 637: 1155, 1155, 1155, 1155, 662: 1155, 707: 1155}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3638, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 4176, 3619, 3701, 3618, 3615}, // 1305 - {57: 4160}, - {820: 4064, 832: 4161}, - {1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 532: 1150, 1150, 1150, 536: 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 549: 1150, 1150, 1150, 554: 1150, 1150, 1150, 1150, 1150, 1150, 561: 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 579: 1150, 1150, 1150, 1150, 1150, 1150, 1150, 588: 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 609: 1150, 1150, 1150, 1150, 1150, 615: 1150, 1150, 618: 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 632: 1150, 1150, 1150, 1150, 696: 1150, 703: 1150}, - {57: 4163}, - {820: 4064, 832: 4164}, + {57: 4177, 543: 3715, 707: 3716}, + {826: 4087, 838: 4178}, + {1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 537: 1156, 1156, 1156, 541: 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 554: 1156, 1156, 1156, 559: 1156, 1156, 1156, 1156, 1156, 565: 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 584: 1156, 1156, 1156, 1156, 1156, 1156, 1156, 593: 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 614: 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 625: 1156, 1156, 1156, 1156, 1156, 1156, 632: 1156, 637: 1156, 1156, 1156, 1156, 662: 1156, 707: 1156}, + {57: 4180}, + {826: 4087, 838: 4181}, // 1310 - {1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 532: 1151, 1151, 1151, 536: 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 549: 1151, 1151, 1151, 554: 1151, 1151, 1151, 1151, 1151, 1151, 561: 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 579: 1151, 1151, 1151, 1151, 1151, 1151, 1151, 588: 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 609: 1151, 1151, 1151, 1151, 1151, 615: 1151, 1151, 618: 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 632: 1151, 1151, 1151, 1151, 696: 1151, 703: 1151}, - {57: 4166}, - {820: 4064, 832: 4167}, - {1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 532: 1152, 1152, 1152, 536: 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 549: 1152, 1152, 1152, 554: 1152, 1152, 1152, 1152, 1152, 1152, 561: 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 579: 1152, 1152, 1152, 1152, 1152, 1152, 1152, 588: 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 609: 1152, 1152, 1152, 1152, 1152, 615: 1152, 1152, 618: 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 632: 1152, 1152, 1152, 1152, 696: 1152, 703: 1152}, - {57: 4169}, + {1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 537: 1157, 1157, 1157, 541: 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 554: 1157, 1157, 1157, 559: 1157, 1157, 1157, 1157, 1157, 565: 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 584: 1157, 1157, 1157, 1157, 1157, 1157, 1157, 593: 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 614: 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 625: 1157, 1157, 1157, 1157, 1157, 1157, 632: 1157, 637: 1157, 1157, 1157, 1157, 662: 1157, 707: 1157}, + {57: 4183}, + {826: 4087, 838: 4184}, + {1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 537: 1158, 1158, 1158, 541: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 554: 1158, 1158, 1158, 559: 1158, 1158, 1158, 1158, 1158, 565: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 584: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 593: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 614: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 625: 1158, 1158, 1158, 1158, 1158, 1158, 632: 1158, 637: 1158, 1158, 1158, 1158, 662: 1158, 707: 1158}, + {57: 4186}, // 1315 - {820: 4064, 832: 4170}, - {1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 532: 1153, 1153, 1153, 536: 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 549: 1153, 1153, 1153, 554: 1153, 1153, 1153, 1153, 1153, 1153, 561: 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 579: 1153, 1153, 1153, 1153, 1153, 1153, 1153, 588: 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 609: 1153, 1153, 1153, 1153, 1153, 615: 1153, 1153, 618: 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 632: 1153, 1153, 1153, 1153, 696: 1153, 703: 1153}, - {2: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 10: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 58: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 531: 1441, 533: 1441, 1441, 1441, 1441, 540: 1441, 1441, 543: 1441, 1441, 1441, 547: 1441, 1441, 552: 1441, 1441, 560: 1441, 578: 1441, 586: 1441, 1441, 614: 1441, 617: 1441, 628: 1441, 1441, 1441, 1441, 636: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 697: 1441, 1441, 1441, 1441, 711: 1441, 715: 4174, 829: 4172, 4173, 885: 4175, 887: 4176, 912: 4178, 4177}, - {2: 1445, 1445, 1445, 1445, 1445, 1445, 1445, 10: 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 58: 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 531: 1445, 533: 1445, 1445, 1445, 1445, 540: 1445, 1445, 543: 1445, 1445, 1445, 547: 1445, 1445, 552: 1445, 1445, 560: 1445, 573: 1445, 578: 1445, 584: 1445, 586: 1445, 1445, 608: 1445, 614: 1445, 617: 1445, 628: 1445, 1445, 1445, 1445, 636: 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 697: 1445, 1445, 1445, 1445, 711: 1445, 715: 1445, 829: 1445, 1445, 836: 1445, 1445, 1445, 840: 1445, 849: 1445, 1445, 1445}, - {2: 1444, 1444, 1444, 1444, 1444, 1444, 1444, 10: 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 58: 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 531: 1444, 533: 1444, 1444, 1444, 1444, 540: 1444, 1444, 543: 1444, 1444, 1444, 547: 1444, 1444, 552: 1444, 1444, 560: 1444, 573: 1444, 578: 1444, 584: 1444, 586: 1444, 1444, 608: 1444, 614: 1444, 617: 1444, 628: 1444, 1444, 1444, 1444, 636: 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 697: 1444, 1444, 1444, 1444, 711: 1444, 715: 1444, 829: 1444, 1444, 836: 1444, 1444, 1444, 840: 1444, 849: 1444, 1444, 1444}, + {826: 4087, 838: 4187}, + {1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 537: 1159, 1159, 1159, 541: 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 554: 1159, 1159, 1159, 559: 1159, 1159, 1159, 1159, 1159, 565: 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 584: 1159, 1159, 1159, 1159, 1159, 1159, 1159, 593: 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 614: 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 625: 1159, 1159, 1159, 1159, 1159, 1159, 632: 1159, 637: 1159, 1159, 1159, 1159, 662: 1159, 707: 1159}, + {57: 4189}, + {826: 4087, 838: 4190}, + {1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 537: 1160, 1160, 1160, 541: 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 554: 1160, 1160, 1160, 559: 1160, 1160, 1160, 1160, 1160, 565: 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 584: 1160, 1160, 1160, 1160, 1160, 1160, 1160, 593: 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 614: 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 625: 1160, 1160, 1160, 1160, 1160, 1160, 632: 1160, 637: 1160, 1160, 1160, 1160, 662: 1160, 707: 1160}, // 1320 - {2: 1443, 1443, 1443, 1443, 1443, 1443, 1443, 10: 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 58: 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 531: 1443, 533: 1443, 1443, 1443, 1443, 540: 1443, 1443, 543: 1443, 1443, 1443, 547: 1443, 1443, 552: 1443, 1443, 560: 1443, 573: 1443, 578: 1443, 584: 1443, 586: 1443, 1443, 608: 1443, 614: 1443, 617: 1443, 628: 1443, 1443, 1443, 1443, 636: 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 697: 1443, 1443, 1443, 1443, 711: 1443, 715: 1443, 829: 1443, 1443, 836: 1443, 1443, 1443, 840: 1443, 849: 1443, 1443, 1443}, - {2: 1442, 1442, 1442, 1442, 1442, 1442, 1442, 10: 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 58: 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 531: 1442, 533: 1442, 1442, 1442, 1442, 540: 1442, 1442, 543: 1442, 1442, 1442, 547: 1442, 1442, 552: 1442, 1442, 560: 1442, 578: 1442, 586: 1442, 1442, 614: 1442, 617: 1442, 628: 1442, 1442, 1442, 1442, 636: 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 697: 1442, 1442, 1442, 1442, 711: 1442, 715: 4183}, - {2: 1440, 1440, 1440, 1440, 1440, 1440, 1440, 10: 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 58: 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 531: 1440, 533: 1440, 1440, 1440, 1440, 540: 1440, 1440, 543: 1440, 1440, 1440, 547: 1440, 1440, 552: 1440, 1440, 560: 1440, 578: 1440, 586: 1440, 1440, 614: 1440, 617: 1440, 628: 1440, 1440, 1440, 1440, 636: 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 697: 1440, 1440, 1440, 1440, 711: 1440}, - {2: 1437, 1437, 1437, 1437, 1437, 1437, 1437, 10: 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 58: 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 531: 1437, 533: 1437, 1437, 1437, 1437, 540: 1437, 1437, 543: 1437, 1437, 1437, 547: 1437, 1437, 552: 1437, 1437, 560: 1437, 578: 1437, 586: 1437, 1437, 614: 1437, 617: 1437, 628: 1437, 1437, 1437, 1437, 636: 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 697: 1437, 1437, 1437, 1437, 711: 1437}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4179}, + {57: 4192}, + {826: 4087, 838: 4193}, + {1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 537: 1161, 1161, 1161, 541: 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 554: 1161, 1161, 1161, 559: 1161, 1161, 1161, 1161, 1161, 565: 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 584: 1161, 1161, 1161, 1161, 1161, 1161, 1161, 593: 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 614: 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 625: 1161, 1161, 1161, 1161, 1161, 1161, 632: 1161, 637: 1161, 1161, 1161, 1161, 662: 1161, 707: 1161}, + {2: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 10: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 58: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 536: 1450, 538: 1450, 1450, 1450, 1450, 545: 1450, 1450, 548: 1450, 1450, 1450, 552: 1450, 1450, 557: 1450, 1450, 564: 1450, 583: 1450, 591: 1450, 1450, 624: 1450, 631: 1450, 633: 1450, 1450, 1450, 1450, 641: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 663: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 716: 1450, 721: 4197, 835: 4195, 4196, 891: 4198, 893: 4199, 918: 4201, 4200}, + {2: 1454, 1454, 1454, 1454, 1454, 1454, 1454, 10: 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 58: 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 536: 1454, 538: 1454, 1454, 1454, 1454, 545: 1454, 1454, 548: 1454, 1454, 1454, 552: 1454, 1454, 557: 1454, 1454, 564: 1454, 578: 1454, 583: 1454, 589: 1454, 591: 1454, 1454, 613: 1454, 624: 1454, 631: 1454, 633: 1454, 1454, 1454, 1454, 641: 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 663: 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 716: 1454, 721: 1454, 835: 1454, 1454, 842: 1454, 1454, 1454, 846: 1454, 855: 1454, 1454, 1454}, // 1325 - {57: 4180, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 532: 1158, 1158, 1158, 536: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 549: 1158, 1158, 1158, 554: 1158, 1158, 1158, 1158, 1158, 1158, 561: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 579: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 588: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 609: 1158, 1158, 1158, 1158, 1158, 615: 1158, 1158, 618: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 632: 1158, 1158, 1158, 1158, 696: 1158, 703: 1158, 820: 4064, 832: 4182, 844: 4181}, - {1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 532: 1322, 1322, 1322, 536: 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 549: 1322, 1322, 1322, 554: 1322, 1322, 1322, 1322, 1322, 1322, 561: 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 579: 1322, 1322, 1322, 1322, 1322, 1322, 1322, 588: 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 609: 1322, 1322, 1322, 1322, 1322, 615: 1322, 1322, 618: 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 632: 1322, 1322, 1322, 1322, 696: 1322, 703: 1322}, - {1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 532: 1157, 1157, 1157, 536: 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 549: 1157, 1157, 1157, 554: 1157, 1157, 1157, 1157, 1157, 1157, 561: 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 579: 1157, 1157, 1157, 1157, 1157, 1157, 1157, 588: 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 609: 1157, 1157, 1157, 1157, 1157, 615: 1157, 1157, 618: 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 632: 1157, 1157, 1157, 1157, 696: 1157, 703: 1157}, - {2: 1436, 1436, 1436, 1436, 1436, 1436, 1436, 10: 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 58: 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 531: 1436, 533: 1436, 1436, 1436, 1436, 540: 1436, 1436, 543: 1436, 1436, 1436, 547: 1436, 1436, 552: 1436, 1436, 560: 1436, 578: 1436, 586: 1436, 1436, 614: 1436, 617: 1436, 628: 1436, 1436, 1436, 1436, 636: 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 697: 1436, 1436, 1436, 1436, 711: 1436}, + {2: 1453, 1453, 1453, 1453, 1453, 1453, 1453, 10: 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 58: 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 536: 1453, 538: 1453, 1453, 1453, 1453, 545: 1453, 1453, 548: 1453, 1453, 1453, 552: 1453, 1453, 557: 1453, 1453, 564: 1453, 578: 1453, 583: 1453, 589: 1453, 591: 1453, 1453, 613: 1453, 624: 1453, 631: 1453, 633: 1453, 1453, 1453, 1453, 641: 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 663: 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 716: 1453, 721: 1453, 835: 1453, 1453, 842: 1453, 1453, 1453, 846: 1453, 855: 1453, 1453, 1453}, + {2: 1452, 1452, 1452, 1452, 1452, 1452, 1452, 10: 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 58: 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 536: 1452, 538: 1452, 1452, 1452, 1452, 545: 1452, 1452, 548: 1452, 1452, 1452, 552: 1452, 1452, 557: 1452, 1452, 564: 1452, 578: 1452, 583: 1452, 589: 1452, 591: 1452, 1452, 613: 1452, 624: 1452, 631: 1452, 633: 1452, 1452, 1452, 1452, 641: 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 663: 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 716: 1452, 721: 1452, 835: 1452, 1452, 842: 1452, 1452, 1452, 846: 1452, 855: 1452, 1452, 1452}, + {2: 1451, 1451, 1451, 1451, 1451, 1451, 1451, 10: 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 58: 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 536: 1451, 538: 1451, 1451, 1451, 1451, 545: 1451, 1451, 548: 1451, 1451, 1451, 552: 1451, 1451, 557: 1451, 1451, 564: 1451, 583: 1451, 591: 1451, 1451, 624: 1451, 631: 1451, 633: 1451, 1451, 1451, 1451, 641: 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 663: 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 716: 1451, 721: 4206}, + {2: 1449, 1449, 1449, 1449, 1449, 1449, 1449, 10: 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 58: 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 536: 1449, 538: 1449, 1449, 1449, 1449, 545: 1449, 1449, 548: 1449, 1449, 1449, 552: 1449, 1449, 557: 1449, 1449, 564: 1449, 583: 1449, 591: 1449, 1449, 624: 1449, 631: 1449, 633: 1449, 1449, 1449, 1449, 641: 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 663: 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 716: 1449}, + {2: 1446, 1446, 1446, 1446, 1446, 1446, 1446, 10: 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 58: 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 536: 1446, 538: 1446, 1446, 1446, 1446, 545: 1446, 1446, 548: 1446, 1446, 1446, 552: 1446, 1446, 557: 1446, 1446, 564: 1446, 583: 1446, 591: 1446, 1446, 624: 1446, 631: 1446, 633: 1446, 1446, 1446, 1446, 641: 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 663: 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 716: 1446}, // 1330 - {2: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 10: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 58: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 531: 1441, 533: 1441, 1441, 1441, 1441, 540: 1441, 1441, 543: 1441, 1441, 1441, 547: 1441, 1441, 552: 1441, 1441, 560: 1441, 578: 1441, 586: 1441, 1441, 614: 1441, 617: 1441, 628: 1441, 1441, 1441, 1441, 636: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 697: 1441, 1441, 1441, 1441, 711: 1441, 715: 4174, 829: 4172, 4173, 885: 4175, 887: 4176, 912: 4185, 4177}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4186}, - {57: 4187, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 532: 1158, 1158, 1158, 536: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 549: 1158, 1158, 1158, 554: 1158, 1158, 1158, 1158, 1158, 1158, 561: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 579: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 588: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 609: 1158, 1158, 1158, 1158, 1158, 615: 1158, 1158, 618: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 632: 1158, 1158, 1158, 1158, 696: 1158, 703: 1158, 820: 4064, 832: 4182, 844: 4188}, - {1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 532: 1323, 1323, 1323, 536: 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 549: 1323, 1323, 1323, 554: 1323, 1323, 1323, 1323, 1323, 1323, 561: 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 579: 1323, 1323, 1323, 1323, 1323, 1323, 1323, 588: 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 609: 1323, 1323, 1323, 1323, 1323, 615: 1323, 1323, 618: 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 632: 1323, 1323, 1323, 1323, 696: 1323, 703: 1323}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4202}, + {57: 4203, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 537: 1166, 1166, 1166, 541: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 554: 1166, 1166, 1166, 559: 1166, 1166, 1166, 1166, 1166, 565: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 584: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 593: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 614: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 625: 1166, 1166, 1166, 1166, 1166, 1166, 632: 1166, 637: 1166, 1166, 1166, 1166, 662: 1166, 707: 1166, 826: 4087, 838: 4205, 850: 4204}, + {1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 537: 1330, 1330, 1330, 541: 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 554: 1330, 1330, 1330, 559: 1330, 1330, 1330, 1330, 1330, 565: 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 584: 1330, 1330, 1330, 1330, 1330, 1330, 1330, 593: 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 614: 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 625: 1330, 1330, 1330, 1330, 1330, 1330, 632: 1330, 637: 1330, 1330, 1330, 1330, 662: 1330, 707: 1330}, + {1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 537: 1165, 1165, 1165, 541: 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 554: 1165, 1165, 1165, 559: 1165, 1165, 1165, 1165, 1165, 565: 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 584: 1165, 1165, 1165, 1165, 1165, 1165, 1165, 593: 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 614: 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 625: 1165, 1165, 1165, 1165, 1165, 1165, 632: 1165, 637: 1165, 1165, 1165, 1165, 662: 1165, 707: 1165}, // 1335 - {2: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 10: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 58: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 531: 1441, 533: 1441, 1441, 1441, 1441, 540: 1441, 1441, 543: 1441, 1441, 1441, 547: 1441, 1441, 552: 1441, 1441, 560: 1441, 578: 1441, 586: 1441, 1441, 614: 1441, 617: 1441, 628: 1441, 1441, 1441, 1441, 636: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 697: 1441, 1441, 1441, 1441, 711: 1441, 715: 4174, 829: 4172, 4173, 885: 4175, 887: 4176, 912: 4190, 4177}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4191}, - {57: 4192, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 532: 1158, 1158, 1158, 536: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 549: 1158, 1158, 1158, 554: 1158, 1158, 1158, 1158, 1158, 1158, 561: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 579: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 588: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 609: 1158, 1158, 1158, 1158, 1158, 615: 1158, 1158, 618: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 632: 1158, 1158, 1158, 1158, 696: 1158, 703: 1158, 820: 4064, 832: 4182, 844: 4193}, - {1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 532: 1324, 1324, 1324, 536: 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 549: 1324, 1324, 1324, 554: 1324, 1324, 1324, 1324, 1324, 1324, 561: 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 579: 1324, 1324, 1324, 1324, 1324, 1324, 1324, 588: 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 609: 1324, 1324, 1324, 1324, 1324, 615: 1324, 1324, 618: 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 632: 1324, 1324, 1324, 1324, 696: 1324, 703: 1324}, + {2: 1445, 1445, 1445, 1445, 1445, 1445, 1445, 10: 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 58: 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 536: 1445, 538: 1445, 1445, 1445, 1445, 545: 1445, 1445, 548: 1445, 1445, 1445, 552: 1445, 1445, 557: 1445, 1445, 564: 1445, 583: 1445, 591: 1445, 1445, 624: 1445, 631: 1445, 633: 1445, 1445, 1445, 1445, 641: 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 663: 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 716: 1445}, + {2: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 10: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 58: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 536: 1450, 538: 1450, 1450, 1450, 1450, 545: 1450, 1450, 548: 1450, 1450, 1450, 552: 1450, 1450, 557: 1450, 1450, 564: 1450, 583: 1450, 591: 1450, 1450, 624: 1450, 631: 1450, 633: 1450, 1450, 1450, 1450, 641: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 663: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 716: 1450, 721: 4197, 835: 4195, 4196, 891: 4198, 893: 4199, 918: 4208, 4200}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4209}, + {57: 4210, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 537: 1166, 1166, 1166, 541: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 554: 1166, 1166, 1166, 559: 1166, 1166, 1166, 1166, 1166, 565: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 584: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 593: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 614: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 625: 1166, 1166, 1166, 1166, 1166, 1166, 632: 1166, 637: 1166, 1166, 1166, 1166, 662: 1166, 707: 1166, 826: 4087, 838: 4205, 850: 4211}, // 1340 - {2: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 10: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 58: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 531: 1441, 533: 1441, 1441, 1441, 1441, 540: 1441, 1441, 543: 1441, 1441, 1441, 547: 1441, 1441, 552: 1441, 1441, 560: 1441, 578: 1441, 586: 1441, 1441, 614: 1441, 617: 1441, 628: 1441, 1441, 1441, 1441, 636: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 697: 1441, 1441, 1441, 1441, 711: 1441, 715: 4174, 829: 4172, 4173, 885: 4175, 887: 4176, 912: 4195, 4177}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4196}, - {57: 4197, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 532: 1158, 1158, 1158, 536: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 549: 1158, 1158, 1158, 554: 1158, 1158, 1158, 1158, 1158, 1158, 561: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 579: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 588: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 609: 1158, 1158, 1158, 1158, 1158, 615: 1158, 1158, 618: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 632: 1158, 1158, 1158, 1158, 696: 1158, 703: 1158, 820: 4064, 832: 4182, 844: 4198}, - {1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 532: 1325, 1325, 1325, 536: 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 549: 1325, 1325, 1325, 554: 1325, 1325, 1325, 1325, 1325, 1325, 561: 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 579: 1325, 1325, 1325, 1325, 1325, 1325, 1325, 588: 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 609: 1325, 1325, 1325, 1325, 1325, 615: 1325, 1325, 618: 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 632: 1325, 1325, 1325, 1325, 696: 1325, 703: 1325}, + {1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 537: 1331, 1331, 1331, 541: 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 554: 1331, 1331, 1331, 559: 1331, 1331, 1331, 1331, 1331, 565: 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 584: 1331, 1331, 1331, 1331, 1331, 1331, 1331, 593: 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 614: 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 625: 1331, 1331, 1331, 1331, 1331, 1331, 632: 1331, 637: 1331, 1331, 1331, 1331, 662: 1331, 707: 1331}, + {2: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 10: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 58: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 536: 1450, 538: 1450, 1450, 1450, 1450, 545: 1450, 1450, 548: 1450, 1450, 1450, 552: 1450, 1450, 557: 1450, 1450, 564: 1450, 583: 1450, 591: 1450, 1450, 624: 1450, 631: 1450, 633: 1450, 1450, 1450, 1450, 641: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 663: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 716: 1450, 721: 4197, 835: 4195, 4196, 891: 4198, 893: 4199, 918: 4213, 4200}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4214}, + {57: 4215, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 537: 1166, 1166, 1166, 541: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 554: 1166, 1166, 1166, 559: 1166, 1166, 1166, 1166, 1166, 565: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 584: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 593: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 614: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 625: 1166, 1166, 1166, 1166, 1166, 1166, 632: 1166, 637: 1166, 1166, 1166, 1166, 662: 1166, 707: 1166, 826: 4087, 838: 4205, 850: 4216}, // 1345 - {2: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 10: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 58: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 531: 1441, 533: 1441, 1441, 1441, 1441, 540: 1441, 1441, 543: 1441, 1441, 1441, 547: 1441, 1441, 552: 1441, 1441, 560: 1441, 578: 1441, 586: 1441, 1441, 614: 1441, 617: 1441, 628: 1441, 1441, 1441, 1441, 636: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 697: 1441, 1441, 1441, 1441, 711: 1441, 715: 4174, 829: 4172, 4173, 885: 4175, 887: 4176, 912: 4200, 4177}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4201}, - {57: 4202, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 532: 1158, 1158, 1158, 536: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 549: 1158, 1158, 1158, 554: 1158, 1158, 1158, 1158, 1158, 1158, 561: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 579: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 588: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 609: 1158, 1158, 1158, 1158, 1158, 615: 1158, 1158, 618: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 632: 1158, 1158, 1158, 1158, 696: 1158, 703: 1158, 820: 4064, 832: 4182, 844: 4203}, - {1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 532: 1326, 1326, 1326, 536: 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 549: 1326, 1326, 1326, 554: 1326, 1326, 1326, 1326, 1326, 1326, 561: 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 579: 1326, 1326, 1326, 1326, 1326, 1326, 1326, 588: 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 609: 1326, 1326, 1326, 1326, 1326, 615: 1326, 1326, 618: 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 632: 1326, 1326, 1326, 1326, 696: 1326, 703: 1326}, + {1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 537: 1332, 1332, 1332, 541: 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 554: 1332, 1332, 1332, 559: 1332, 1332, 1332, 1332, 1332, 565: 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 584: 1332, 1332, 1332, 1332, 1332, 1332, 1332, 593: 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 614: 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 625: 1332, 1332, 1332, 1332, 1332, 1332, 632: 1332, 637: 1332, 1332, 1332, 1332, 662: 1332, 707: 1332}, + {2: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 10: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 58: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 536: 1450, 538: 1450, 1450, 1450, 1450, 545: 1450, 1450, 548: 1450, 1450, 1450, 552: 1450, 1450, 557: 1450, 1450, 564: 1450, 583: 1450, 591: 1450, 1450, 624: 1450, 631: 1450, 633: 1450, 1450, 1450, 1450, 641: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 663: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 716: 1450, 721: 4197, 835: 4195, 4196, 891: 4198, 893: 4199, 918: 4218, 4200}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4219}, + {57: 4220, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 537: 1166, 1166, 1166, 541: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 554: 1166, 1166, 1166, 559: 1166, 1166, 1166, 1166, 1166, 565: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 584: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 593: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 614: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 625: 1166, 1166, 1166, 1166, 1166, 1166, 632: 1166, 637: 1166, 1166, 1166, 1166, 662: 1166, 707: 1166, 826: 4087, 838: 4205, 850: 4221}, // 1350 - {2: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 10: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 58: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 531: 1441, 533: 1441, 1441, 1441, 1441, 540: 1441, 1441, 543: 1441, 1441, 1441, 547: 1441, 1441, 552: 1441, 1441, 560: 1441, 578: 1441, 586: 1441, 1441, 614: 1441, 617: 1441, 628: 1441, 1441, 1441, 1441, 636: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 697: 1441, 1441, 1441, 1441, 711: 1441, 715: 4174, 829: 4172, 4173, 885: 4175, 887: 4176, 912: 4205, 4177}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4206}, - {57: 4207, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 532: 1158, 1158, 1158, 536: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 549: 1158, 1158, 1158, 554: 1158, 1158, 1158, 1158, 1158, 1158, 561: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 579: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 588: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 609: 1158, 1158, 1158, 1158, 1158, 615: 1158, 1158, 618: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 632: 1158, 1158, 1158, 1158, 696: 1158, 703: 1158, 820: 4064, 832: 4182, 844: 4208}, - {1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 532: 1327, 1327, 1327, 536: 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 549: 1327, 1327, 1327, 554: 1327, 1327, 1327, 1327, 1327, 1327, 561: 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 579: 1327, 1327, 1327, 1327, 1327, 1327, 1327, 588: 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 609: 1327, 1327, 1327, 1327, 1327, 615: 1327, 1327, 618: 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 632: 1327, 1327, 1327, 1327, 696: 1327, 703: 1327}, + {1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 537: 1333, 1333, 1333, 541: 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 554: 1333, 1333, 1333, 559: 1333, 1333, 1333, 1333, 1333, 565: 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 584: 1333, 1333, 1333, 1333, 1333, 1333, 1333, 593: 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 614: 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 625: 1333, 1333, 1333, 1333, 1333, 1333, 632: 1333, 637: 1333, 1333, 1333, 1333, 662: 1333, 707: 1333}, + {2: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 10: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 58: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 536: 1450, 538: 1450, 1450, 1450, 1450, 545: 1450, 1450, 548: 1450, 1450, 1450, 552: 1450, 1450, 557: 1450, 1450, 564: 1450, 583: 1450, 591: 1450, 1450, 624: 1450, 631: 1450, 633: 1450, 1450, 1450, 1450, 641: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 663: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 716: 1450, 721: 4197, 835: 4195, 4196, 891: 4198, 893: 4199, 918: 4223, 4200}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4224}, + {57: 4225, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 537: 1166, 1166, 1166, 541: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 554: 1166, 1166, 1166, 559: 1166, 1166, 1166, 1166, 1166, 565: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 584: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 593: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 614: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 625: 1166, 1166, 1166, 1166, 1166, 1166, 632: 1166, 637: 1166, 1166, 1166, 1166, 662: 1166, 707: 1166, 826: 4087, 838: 4205, 850: 4226}, // 1355 - {2: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 10: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 58: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 531: 1441, 533: 1441, 1441, 1441, 1441, 540: 1441, 1441, 543: 1441, 1441, 1441, 547: 1441, 1441, 552: 1441, 1441, 560: 1441, 578: 1441, 586: 1441, 1441, 614: 1441, 617: 1441, 628: 1441, 1441, 1441, 1441, 636: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 697: 1441, 1441, 1441, 1441, 711: 1441, 715: 4174, 829: 4172, 4173, 885: 4175, 887: 4176, 912: 4210, 4177}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4211}, - {57: 4212, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 532: 1158, 1158, 1158, 536: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 549: 1158, 1158, 1158, 554: 1158, 1158, 1158, 1158, 1158, 1158, 561: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 579: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 588: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 609: 1158, 1158, 1158, 1158, 1158, 615: 1158, 1158, 618: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 632: 1158, 1158, 1158, 1158, 696: 1158, 703: 1158, 820: 4064, 832: 4182, 844: 4213}, - {1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 532: 1328, 1328, 1328, 536: 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 549: 1328, 1328, 1328, 554: 1328, 1328, 1328, 1328, 1328, 1328, 561: 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 579: 1328, 1328, 1328, 1328, 1328, 1328, 1328, 588: 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 609: 1328, 1328, 1328, 1328, 1328, 615: 1328, 1328, 618: 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 632: 1328, 1328, 1328, 1328, 696: 1328, 703: 1328}, + {1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 537: 1334, 1334, 1334, 541: 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 554: 1334, 1334, 1334, 559: 1334, 1334, 1334, 1334, 1334, 565: 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 584: 1334, 1334, 1334, 1334, 1334, 1334, 1334, 593: 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 614: 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 625: 1334, 1334, 1334, 1334, 1334, 1334, 632: 1334, 637: 1334, 1334, 1334, 1334, 662: 1334, 707: 1334}, + {2: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 10: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 58: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 536: 1450, 538: 1450, 1450, 1450, 1450, 545: 1450, 1450, 548: 1450, 1450, 1450, 552: 1450, 1450, 557: 1450, 1450, 564: 1450, 583: 1450, 591: 1450, 1450, 624: 1450, 631: 1450, 633: 1450, 1450, 1450, 1450, 641: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 663: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 716: 1450, 721: 4197, 835: 4195, 4196, 891: 4198, 893: 4199, 918: 4228, 4200}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4229}, + {57: 4230, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 537: 1166, 1166, 1166, 541: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 554: 1166, 1166, 1166, 559: 1166, 1166, 1166, 1166, 1166, 565: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 584: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 593: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 614: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 625: 1166, 1166, 1166, 1166, 1166, 1166, 632: 1166, 637: 1166, 1166, 1166, 1166, 662: 1166, 707: 1166, 826: 4087, 838: 4205, 850: 4231}, // 1360 - {2: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 10: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 58: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 531: 1441, 533: 1441, 1441, 1441, 1441, 540: 1441, 1441, 543: 1441, 1441, 1441, 547: 1441, 1441, 552: 1441, 1441, 560: 1441, 578: 1441, 586: 1441, 1441, 614: 1441, 617: 1441, 628: 1441, 1441, 1441, 1441, 636: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 697: 1441, 1441, 1441, 1441, 711: 1441, 715: 4174, 829: 4172, 4173, 885: 4175, 887: 4176, 912: 4215, 4177}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3842, 863: 4216}, - {9: 3990, 57: 1499, 160: 1499, 564: 3857, 842: 3911, 909: 4217}, - {57: 1315, 160: 4219, 1403: 4218}, - {57: 4221}, + {1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 537: 1335, 1335, 1335, 541: 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 554: 1335, 1335, 1335, 559: 1335, 1335, 1335, 1335, 1335, 565: 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 584: 1335, 1335, 1335, 1335, 1335, 1335, 1335, 593: 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 614: 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 625: 1335, 1335, 1335, 1335, 1335, 1335, 632: 1335, 637: 1335, 1335, 1335, 1335, 662: 1335, 707: 1335}, + {2: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 10: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 58: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 536: 1450, 538: 1450, 1450, 1450, 1450, 545: 1450, 1450, 548: 1450, 1450, 1450, 552: 1450, 1450, 557: 1450, 1450, 564: 1450, 583: 1450, 591: 1450, 1450, 624: 1450, 631: 1450, 633: 1450, 1450, 1450, 1450, 641: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 663: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 716: 1450, 721: 4197, 835: 4195, 4196, 891: 4198, 893: 4199, 918: 4233, 4200}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4234}, + {57: 4235, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 537: 1166, 1166, 1166, 541: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 554: 1166, 1166, 1166, 559: 1166, 1166, 1166, 1166, 1166, 565: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 584: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 593: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 614: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 625: 1166, 1166, 1166, 1166, 1166, 1166, 632: 1166, 637: 1166, 1166, 1166, 1166, 662: 1166, 707: 1166, 826: 4087, 838: 4205, 850: 4236}, // 1365 - {533: 4220}, - {57: 1314}, - {1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 532: 1158, 1158, 1158, 536: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 549: 1158, 1158, 1158, 554: 1158, 1158, 1158, 1158, 1158, 1158, 561: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 579: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 588: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 609: 1158, 1158, 1158, 1158, 1158, 615: 1158, 1158, 618: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 632: 1158, 1158, 1158, 1158, 696: 1158, 703: 1158, 820: 4064, 832: 4182, 844: 4222}, - {1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 532: 1329, 1329, 1329, 536: 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 549: 1329, 1329, 1329, 554: 1329, 1329, 1329, 1329, 1329, 1329, 561: 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 579: 1329, 1329, 1329, 1329, 1329, 1329, 1329, 588: 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 609: 1329, 1329, 1329, 1329, 1329, 615: 1329, 1329, 618: 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 632: 1329, 1329, 1329, 1329, 696: 1329, 703: 1329}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 584: 4227, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 715: 4226, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4224, 829: 4172, 4173, 885: 4225}, + {1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 537: 1336, 1336, 1336, 541: 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 554: 1336, 1336, 1336, 559: 1336, 1336, 1336, 1336, 1336, 565: 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 584: 1336, 1336, 1336, 1336, 1336, 1336, 1336, 593: 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 614: 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 625: 1336, 1336, 1336, 1336, 1336, 1336, 632: 1336, 637: 1336, 1336, 1336, 1336, 662: 1336, 707: 1336}, + {2: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 10: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 58: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 536: 1450, 538: 1450, 1450, 1450, 1450, 545: 1450, 1450, 548: 1450, 1450, 1450, 552: 1450, 1450, 557: 1450, 1450, 564: 1450, 583: 1450, 591: 1450, 1450, 624: 1450, 631: 1450, 633: 1450, 1450, 1450, 1450, 641: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 663: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 716: 1450, 721: 4197, 835: 4195, 4196, 891: 4198, 893: 4199, 918: 4238, 4200}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3865, 869: 4239}, + {9: 4013, 57: 1508, 160: 1508, 569: 3880, 848: 3934, 915: 4240}, + {57: 1323, 160: 4242, 1410: 4241}, // 1370 - {57: 4235, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3842, 863: 4233}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4230}, - {57: 4228}, - {1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 532: 1158, 1158, 1158, 536: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 549: 1158, 1158, 1158, 554: 1158, 1158, 1158, 1158, 1158, 1158, 561: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 579: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 588: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 609: 1158, 1158, 1158, 1158, 1158, 615: 1158, 1158, 618: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 632: 1158, 1158, 1158, 1158, 696: 1158, 703: 1158, 820: 4064, 832: 4182, 844: 4229}, + {57: 4244}, + {538: 4243}, + {57: 1322}, + {1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 537: 1166, 1166, 1166, 541: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 554: 1166, 1166, 1166, 559: 1166, 1166, 1166, 1166, 1166, 565: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 584: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 593: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 614: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 625: 1166, 1166, 1166, 1166, 1166, 1166, 632: 1166, 637: 1166, 1166, 1166, 1166, 662: 1166, 707: 1166, 826: 4087, 838: 4205, 850: 4245}, + {1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 537: 1337, 1337, 1337, 541: 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 554: 1337, 1337, 1337, 559: 1337, 1337, 1337, 1337, 1337, 565: 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 584: 1337, 1337, 1337, 1337, 1337, 1337, 1337, 593: 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 614: 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 625: 1337, 1337, 1337, 1337, 1337, 1337, 632: 1337, 637: 1337, 1337, 1337, 1337, 662: 1337, 707: 1337}, // 1375 - {1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 532: 1330, 1330, 1330, 536: 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 549: 1330, 1330, 1330, 554: 1330, 1330, 1330, 1330, 1330, 1330, 561: 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 579: 1330, 1330, 1330, 1330, 1330, 1330, 1330, 588: 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 609: 1330, 1330, 1330, 1330, 1330, 615: 1330, 1330, 618: 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 632: 1330, 1330, 1330, 1330, 696: 1330, 703: 1330}, - {57: 4231, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 532: 1158, 1158, 1158, 536: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 549: 1158, 1158, 1158, 554: 1158, 1158, 1158, 1158, 1158, 1158, 561: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 579: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 588: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 609: 1158, 1158, 1158, 1158, 1158, 615: 1158, 1158, 618: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 632: 1158, 1158, 1158, 1158, 696: 1158, 703: 1158, 820: 4064, 832: 4182, 844: 4232}, - {1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 532: 1332, 1332, 1332, 536: 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 549: 1332, 1332, 1332, 554: 1332, 1332, 1332, 1332, 1332, 1332, 561: 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 579: 1332, 1332, 1332, 1332, 1332, 1332, 1332, 588: 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 609: 1332, 1332, 1332, 1332, 1332, 615: 1332, 1332, 618: 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 632: 1332, 1332, 1332, 1332, 696: 1332, 703: 1332}, - {9: 3990, 57: 4234}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 589: 4250, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 721: 4249, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4247, 835: 4195, 4196, 891: 4248}, + {57: 4258, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3865, 869: 4256}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4253}, + {57: 4251}, // 1380 - {1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 532: 1333, 1333, 1333, 536: 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 549: 1333, 1333, 1333, 554: 1333, 1333, 1333, 1333, 1333, 1333, 561: 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 579: 1333, 1333, 1333, 1333, 1333, 1333, 1333, 588: 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 609: 1333, 1333, 1333, 1333, 1333, 615: 1333, 1333, 618: 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 632: 1333, 1333, 1333, 1333, 696: 1333, 703: 1333}, - {1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 532: 1158, 1158, 1158, 536: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 549: 1158, 1158, 1158, 554: 1158, 1158, 1158, 1158, 1158, 1158, 561: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 579: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 588: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 609: 1158, 1158, 1158, 1158, 1158, 615: 1158, 1158, 618: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 632: 1158, 1158, 1158, 1158, 696: 1158, 703: 1158, 820: 4064, 832: 4182, 844: 4236}, - {1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 532: 1331, 1331, 1331, 536: 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 549: 1331, 1331, 1331, 554: 1331, 1331, 1331, 1331, 1331, 1331, 561: 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 579: 1331, 1331, 1331, 1331, 1331, 1331, 1331, 588: 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 609: 1331, 1331, 1331, 1331, 1331, 615: 1331, 1331, 618: 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 632: 1331, 1331, 1331, 1331, 696: 1331, 703: 1331}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 715: 4239, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4238}, - {57: 4243, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, + {1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 537: 1166, 1166, 1166, 541: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 554: 1166, 1166, 1166, 559: 1166, 1166, 1166, 1166, 1166, 565: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 584: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 593: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 614: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 625: 1166, 1166, 1166, 1166, 1166, 1166, 632: 1166, 637: 1166, 1166, 1166, 1166, 662: 1166, 707: 1166, 826: 4087, 838: 4205, 850: 4252}, + {1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 537: 1338, 1338, 1338, 541: 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 554: 1338, 1338, 1338, 559: 1338, 1338, 1338, 1338, 1338, 565: 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 584: 1338, 1338, 1338, 1338, 1338, 1338, 1338, 593: 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 614: 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 625: 1338, 1338, 1338, 1338, 1338, 1338, 632: 1338, 637: 1338, 1338, 1338, 1338, 662: 1338, 707: 1338}, + {57: 4254, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 537: 1166, 1166, 1166, 541: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 554: 1166, 1166, 1166, 559: 1166, 1166, 1166, 1166, 1166, 565: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 584: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 593: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 614: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 625: 1166, 1166, 1166, 1166, 1166, 1166, 632: 1166, 637: 1166, 1166, 1166, 1166, 662: 1166, 707: 1166, 826: 4087, 838: 4205, 850: 4255}, + {1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 537: 1340, 1340, 1340, 541: 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 554: 1340, 1340, 1340, 559: 1340, 1340, 1340, 1340, 1340, 565: 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 584: 1340, 1340, 1340, 1340, 1340, 1340, 1340, 593: 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 614: 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 625: 1340, 1340, 1340, 1340, 1340, 1340, 632: 1340, 637: 1340, 1340, 1340, 1340, 662: 1340, 707: 1340}, // 1385 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4240}, - {57: 4241, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 532: 1158, 1158, 1158, 536: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 549: 1158, 1158, 1158, 554: 1158, 1158, 1158, 1158, 1158, 1158, 561: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 579: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 588: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 609: 1158, 1158, 1158, 1158, 1158, 615: 1158, 1158, 618: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 632: 1158, 1158, 1158, 1158, 696: 1158, 703: 1158, 820: 4064, 832: 4182, 844: 4242}, - {1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 532: 1334, 1334, 1334, 536: 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 549: 1334, 1334, 1334, 554: 1334, 1334, 1334, 1334, 1334, 1334, 561: 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 579: 1334, 1334, 1334, 1334, 1334, 1334, 1334, 588: 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 609: 1334, 1334, 1334, 1334, 1334, 615: 1334, 1334, 618: 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 632: 1334, 1334, 1334, 1334, 696: 1334, 703: 1334}, - {1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 532: 1158, 1158, 1158, 536: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 549: 1158, 1158, 1158, 554: 1158, 1158, 1158, 1158, 1158, 1158, 561: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 579: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 588: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 609: 1158, 1158, 1158, 1158, 1158, 615: 1158, 1158, 618: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 632: 1158, 1158, 1158, 1158, 696: 1158, 703: 1158, 820: 4064, 832: 4182, 844: 4244}, + {9: 4013, 57: 4257}, + {1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 537: 1341, 1341, 1341, 541: 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 554: 1341, 1341, 1341, 559: 1341, 1341, 1341, 1341, 1341, 565: 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 584: 1341, 1341, 1341, 1341, 1341, 1341, 1341, 593: 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 614: 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 625: 1341, 1341, 1341, 1341, 1341, 1341, 632: 1341, 637: 1341, 1341, 1341, 1341, 662: 1341, 707: 1341}, + {1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 537: 1166, 1166, 1166, 541: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 554: 1166, 1166, 1166, 559: 1166, 1166, 1166, 1166, 1166, 565: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 584: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 593: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 614: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 625: 1166, 1166, 1166, 1166, 1166, 1166, 632: 1166, 637: 1166, 1166, 1166, 1166, 662: 1166, 707: 1166, 826: 4087, 838: 4205, 850: 4259}, + {1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 537: 1339, 1339, 1339, 541: 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 554: 1339, 1339, 1339, 559: 1339, 1339, 1339, 1339, 1339, 565: 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 584: 1339, 1339, 1339, 1339, 1339, 1339, 1339, 593: 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 614: 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 625: 1339, 1339, 1339, 1339, 1339, 1339, 632: 1339, 637: 1339, 1339, 1339, 1339, 662: 1339, 707: 1339}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 721: 4262, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4261}, // 1390 - {1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 532: 1335, 1335, 1335, 536: 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 549: 1335, 1335, 1335, 554: 1335, 1335, 1335, 1335, 1335, 1335, 561: 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 579: 1335, 1335, 1335, 1335, 1335, 1335, 1335, 588: 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 609: 1335, 1335, 1335, 1335, 1335, 615: 1335, 1335, 618: 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 632: 1335, 1335, 1335, 1335, 696: 1335, 703: 1335}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 715: 4247, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4246}, - {57: 4251, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4248}, - {57: 4249, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, + {57: 4266, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4263}, + {57: 4264, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 537: 1166, 1166, 1166, 541: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 554: 1166, 1166, 1166, 559: 1166, 1166, 1166, 1166, 1166, 565: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 584: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 593: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 614: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 625: 1166, 1166, 1166, 1166, 1166, 1166, 632: 1166, 637: 1166, 1166, 1166, 1166, 662: 1166, 707: 1166, 826: 4087, 838: 4205, 850: 4265}, + {1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 537: 1342, 1342, 1342, 541: 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 554: 1342, 1342, 1342, 559: 1342, 1342, 1342, 1342, 1342, 565: 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 584: 1342, 1342, 1342, 1342, 1342, 1342, 1342, 593: 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 614: 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 625: 1342, 1342, 1342, 1342, 1342, 1342, 632: 1342, 637: 1342, 1342, 1342, 1342, 662: 1342, 707: 1342}, // 1395 - {1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 532: 1158, 1158, 1158, 536: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 549: 1158, 1158, 1158, 554: 1158, 1158, 1158, 1158, 1158, 1158, 561: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 579: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 588: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 609: 1158, 1158, 1158, 1158, 1158, 615: 1158, 1158, 618: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 632: 1158, 1158, 1158, 1158, 696: 1158, 703: 1158, 820: 4064, 832: 4182, 844: 4250}, - {1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 532: 1336, 1336, 1336, 536: 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 549: 1336, 1336, 1336, 554: 1336, 1336, 1336, 1336, 1336, 1336, 561: 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 579: 1336, 1336, 1336, 1336, 1336, 1336, 1336, 588: 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 609: 1336, 1336, 1336, 1336, 1336, 615: 1336, 1336, 618: 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 632: 1336, 1336, 1336, 1336, 696: 1336, 703: 1336}, - {1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 532: 1158, 1158, 1158, 536: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 549: 1158, 1158, 1158, 554: 1158, 1158, 1158, 1158, 1158, 1158, 561: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 579: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 588: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 609: 1158, 1158, 1158, 1158, 1158, 615: 1158, 1158, 618: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 632: 1158, 1158, 1158, 1158, 696: 1158, 703: 1158, 820: 4064, 832: 4182, 844: 4252}, - {1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 532: 1337, 1337, 1337, 536: 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 549: 1337, 1337, 1337, 554: 1337, 1337, 1337, 1337, 1337, 1337, 561: 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 579: 1337, 1337, 1337, 1337, 1337, 1337, 1337, 588: 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 609: 1337, 1337, 1337, 1337, 1337, 615: 1337, 1337, 618: 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 632: 1337, 1337, 1337, 1337, 696: 1337, 703: 1337}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 715: 4255, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4254}, + {1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 537: 1166, 1166, 1166, 541: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 554: 1166, 1166, 1166, 559: 1166, 1166, 1166, 1166, 1166, 565: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 584: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 593: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 614: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 625: 1166, 1166, 1166, 1166, 1166, 1166, 632: 1166, 637: 1166, 1166, 1166, 1166, 662: 1166, 707: 1166, 826: 4087, 838: 4205, 850: 4267}, + {1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 537: 1343, 1343, 1343, 541: 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 554: 1343, 1343, 1343, 559: 1343, 1343, 1343, 1343, 1343, 565: 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 584: 1343, 1343, 1343, 1343, 1343, 1343, 1343, 593: 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 614: 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 625: 1343, 1343, 1343, 1343, 1343, 1343, 632: 1343, 637: 1343, 1343, 1343, 1343, 662: 1343, 707: 1343}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 721: 4270, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4269}, + {57: 4274, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4271}, // 1400 - {57: 4259, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4256}, - {57: 4257, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 532: 1158, 1158, 1158, 536: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 549: 1158, 1158, 1158, 554: 1158, 1158, 1158, 1158, 1158, 1158, 561: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 579: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 588: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 609: 1158, 1158, 1158, 1158, 1158, 615: 1158, 1158, 618: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 632: 1158, 1158, 1158, 1158, 696: 1158, 703: 1158, 820: 4064, 832: 4182, 844: 4258}, - {1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 532: 1338, 1338, 1338, 536: 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 549: 1338, 1338, 1338, 554: 1338, 1338, 1338, 1338, 1338, 1338, 561: 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 579: 1338, 1338, 1338, 1338, 1338, 1338, 1338, 588: 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 609: 1338, 1338, 1338, 1338, 1338, 615: 1338, 1338, 618: 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 632: 1338, 1338, 1338, 1338, 696: 1338, 703: 1338}, + {57: 4272, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 537: 1166, 1166, 1166, 541: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 554: 1166, 1166, 1166, 559: 1166, 1166, 1166, 1166, 1166, 565: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 584: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 593: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 614: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 625: 1166, 1166, 1166, 1166, 1166, 1166, 632: 1166, 637: 1166, 1166, 1166, 1166, 662: 1166, 707: 1166, 826: 4087, 838: 4205, 850: 4273}, + {1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 537: 1344, 1344, 1344, 541: 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 554: 1344, 1344, 1344, 559: 1344, 1344, 1344, 1344, 1344, 565: 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 584: 1344, 1344, 1344, 1344, 1344, 1344, 1344, 593: 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 614: 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 625: 1344, 1344, 1344, 1344, 1344, 1344, 632: 1344, 637: 1344, 1344, 1344, 1344, 662: 1344, 707: 1344}, + {1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 537: 1166, 1166, 1166, 541: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 554: 1166, 1166, 1166, 559: 1166, 1166, 1166, 1166, 1166, 565: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 584: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 593: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 614: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 625: 1166, 1166, 1166, 1166, 1166, 1166, 632: 1166, 637: 1166, 1166, 1166, 1166, 662: 1166, 707: 1166, 826: 4087, 838: 4205, 850: 4275}, + {1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 537: 1345, 1345, 1345, 541: 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 554: 1345, 1345, 1345, 559: 1345, 1345, 1345, 1345, 1345, 565: 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 584: 1345, 1345, 1345, 1345, 1345, 1345, 1345, 593: 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 614: 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 625: 1345, 1345, 1345, 1345, 1345, 1345, 632: 1345, 637: 1345, 1345, 1345, 1345, 662: 1345, 707: 1345}, // 1405 - {1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 532: 1158, 1158, 1158, 536: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 549: 1158, 1158, 1158, 554: 1158, 1158, 1158, 1158, 1158, 1158, 561: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 579: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 588: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 609: 1158, 1158, 1158, 1158, 1158, 615: 1158, 1158, 618: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 632: 1158, 1158, 1158, 1158, 696: 1158, 703: 1158, 820: 4064, 832: 4182, 844: 4260}, - {1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 532: 1339, 1339, 1339, 536: 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 549: 1339, 1339, 1339, 554: 1339, 1339, 1339, 1339, 1339, 1339, 561: 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 579: 1339, 1339, 1339, 1339, 1339, 1339, 1339, 588: 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 609: 1339, 1339, 1339, 1339, 1339, 615: 1339, 1339, 618: 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 632: 1339, 1339, 1339, 1339, 696: 1339, 703: 1339}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3842, 863: 4262}, - {9: 3990, 57: 4263}, - {1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 532: 1340, 1340, 1340, 536: 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 549: 1340, 1340, 1340, 554: 1340, 1340, 1340, 1340, 1340, 1340, 561: 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 579: 1340, 1340, 1340, 1340, 1340, 1340, 1340, 588: 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 609: 1340, 1340, 1340, 1340, 1340, 615: 1340, 1340, 618: 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 632: 1340, 1340, 1340, 1340, 696: 1340, 703: 1340}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 721: 4278, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4277}, + {57: 4282, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4279}, + {57: 4280, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 537: 1166, 1166, 1166, 541: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 554: 1166, 1166, 1166, 559: 1166, 1166, 1166, 1166, 1166, 565: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 584: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 593: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 614: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 625: 1166, 1166, 1166, 1166, 1166, 1166, 632: 1166, 637: 1166, 1166, 1166, 1166, 662: 1166, 707: 1166, 826: 4087, 838: 4205, 850: 4281}, // 1410 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3842, 863: 4265}, - {9: 3990, 57: 4266}, - {1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 532: 1341, 1341, 1341, 536: 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 549: 1341, 1341, 1341, 554: 1341, 1341, 1341, 1341, 1341, 1341, 561: 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 579: 1341, 1341, 1341, 1341, 1341, 1341, 1341, 588: 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 609: 1341, 1341, 1341, 1341, 1341, 615: 1341, 1341, 618: 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 632: 1341, 1341, 1341, 1341, 696: 1341, 703: 1341}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4268}, - {9: 4269, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, + {1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 537: 1346, 1346, 1346, 541: 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 554: 1346, 1346, 1346, 559: 1346, 1346, 1346, 1346, 1346, 565: 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 584: 1346, 1346, 1346, 1346, 1346, 1346, 1346, 593: 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 614: 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 625: 1346, 1346, 1346, 1346, 1346, 1346, 632: 1346, 637: 1346, 1346, 1346, 1346, 662: 1346, 707: 1346}, + {1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 537: 1166, 1166, 1166, 541: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 554: 1166, 1166, 1166, 559: 1166, 1166, 1166, 1166, 1166, 565: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 584: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 593: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 614: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 625: 1166, 1166, 1166, 1166, 1166, 1166, 632: 1166, 637: 1166, 1166, 1166, 1166, 662: 1166, 707: 1166, 826: 4087, 838: 4205, 850: 4283}, + {1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 537: 1347, 1347, 1347, 541: 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 554: 1347, 1347, 1347, 559: 1347, 1347, 1347, 1347, 1347, 565: 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 584: 1347, 1347, 1347, 1347, 1347, 1347, 1347, 593: 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 614: 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 625: 1347, 1347, 1347, 1347, 1347, 1347, 632: 1347, 637: 1347, 1347, 1347, 1347, 662: 1347, 707: 1347}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3865, 869: 4285}, + {9: 4013, 57: 4286}, // 1415 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4270}, - {9: 4271, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4272}, - {57: 4273, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 532: 1357, 1357, 1357, 536: 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 549: 1357, 1357, 1357, 554: 1357, 1357, 1357, 1357, 1357, 1357, 561: 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 579: 1357, 1357, 1357, 1357, 1357, 1357, 1357, 588: 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 609: 1357, 1357, 1357, 1357, 1357, 615: 1357, 1357, 618: 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 632: 1357, 1357, 1357, 1357, 696: 1357, 703: 1357}, + {1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 537: 1348, 1348, 1348, 541: 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 554: 1348, 1348, 1348, 559: 1348, 1348, 1348, 1348, 1348, 565: 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 584: 1348, 1348, 1348, 1348, 1348, 1348, 1348, 593: 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 614: 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 625: 1348, 1348, 1348, 1348, 1348, 1348, 632: 1348, 637: 1348, 1348, 1348, 1348, 662: 1348, 707: 1348}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3865, 869: 4288}, + {9: 4013, 57: 4289}, + {1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 537: 1349, 1349, 1349, 541: 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 554: 1349, 1349, 1349, 559: 1349, 1349, 1349, 1349, 1349, 565: 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 584: 1349, 1349, 1349, 1349, 1349, 1349, 1349, 593: 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 614: 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 625: 1349, 1349, 1349, 1349, 1349, 1349, 632: 1349, 637: 1349, 1349, 1349, 1349, 662: 1349, 707: 1349}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4291}, // 1420 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4275, 1328: 4277, 1382: 4278, 1485: 4279, 4276}, - {57: 4287, 561: 4288, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 4281, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4280}, - {2: 1348, 1348, 1348, 1348, 1348, 1348, 1348, 10: 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 58: 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 531: 1348, 533: 1348, 1348, 1348, 1348, 540: 1348, 1348, 543: 1348, 1348, 1348, 547: 1348, 1348, 552: 1348, 1348, 560: 1348, 1348, 578: 1348, 586: 1348, 1348, 614: 1348, 617: 1348, 628: 1348, 1348, 1348, 1348, 636: 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 697: 1348, 1348, 1348, 1348, 711: 1348}, - {2: 1347, 1347, 1347, 1347, 1347, 1347, 1347, 10: 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 58: 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 531: 1347, 533: 1347, 1347, 1347, 1347, 540: 1347, 1347, 543: 1347, 1347, 1347, 547: 1347, 1347, 552: 1347, 1347, 560: 1347, 1347, 578: 1347, 586: 1347, 1347, 614: 1347, 617: 1347, 628: 1347, 1347, 1347, 1347, 636: 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 697: 1347, 1347, 1347, 1347, 711: 1347}, + {9: 4292, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4293}, + {9: 4294, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4295}, + {57: 4296, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, // 1425 - {2: 1346, 1346, 1346, 1346, 1346, 1346, 1346, 10: 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 58: 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 531: 1346, 533: 1346, 1346, 1346, 1346, 540: 1346, 1346, 543: 1346, 1346, 1346, 547: 1346, 1346, 552: 1346, 1346, 560: 1346, 1346, 578: 1346, 586: 1346, 1346, 614: 1346, 617: 1346, 628: 1346, 1346, 1346, 1346, 636: 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 697: 1346, 1346, 1346, 1346, 711: 1346}, - {561: 4284, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4282}, - {57: 4283, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 532: 1363, 1363, 1363, 536: 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 549: 1363, 1363, 1363, 554: 1363, 1363, 1363, 1363, 1363, 1363, 561: 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 579: 1363, 1363, 1363, 1363, 1363, 1363, 1363, 588: 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 609: 1363, 1363, 1363, 1363, 1363, 615: 1363, 1363, 618: 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 632: 1363, 1363, 1363, 1363, 696: 1363, 703: 1363}, + {1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 537: 1365, 1365, 1365, 541: 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 554: 1365, 1365, 1365, 559: 1365, 1365, 1365, 1365, 1365, 565: 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 584: 1365, 1365, 1365, 1365, 1365, 1365, 1365, 593: 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 614: 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 625: 1365, 1365, 1365, 1365, 1365, 1365, 632: 1365, 637: 1365, 1365, 1365, 1365, 662: 1365, 707: 1365}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4298, 1335: 4300, 1389: 4301, 1492: 4302, 4299}, + {57: 4310, 566: 4311, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 566: 4304, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4303}, + {2: 1356, 1356, 1356, 1356, 1356, 1356, 1356, 10: 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 58: 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 536: 1356, 538: 1356, 1356, 1356, 1356, 545: 1356, 1356, 548: 1356, 1356, 1356, 552: 1356, 1356, 557: 1356, 1356, 564: 1356, 566: 1356, 583: 1356, 591: 1356, 1356, 624: 1356, 631: 1356, 633: 1356, 1356, 1356, 1356, 641: 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 663: 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 716: 1356}, // 1430 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4285}, - {57: 4286, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 532: 1362, 1362, 1362, 536: 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 549: 1362, 1362, 1362, 554: 1362, 1362, 1362, 1362, 1362, 1362, 561: 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 579: 1362, 1362, 1362, 1362, 1362, 1362, 1362, 588: 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 609: 1362, 1362, 1362, 1362, 1362, 615: 1362, 1362, 618: 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 632: 1362, 1362, 1362, 1362, 696: 1362, 703: 1362}, - {1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 532: 1365, 1365, 1365, 536: 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 549: 1365, 1365, 1365, 554: 1365, 1365, 1365, 1365, 1365, 1365, 561: 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 579: 1365, 1365, 1365, 1365, 1365, 1365, 1365, 588: 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 609: 1365, 1365, 1365, 1365, 1365, 615: 1365, 1365, 618: 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 632: 1365, 1365, 1365, 1365, 696: 1365, 703: 1365}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4289}, + {2: 1355, 1355, 1355, 1355, 1355, 1355, 1355, 10: 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 58: 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 536: 1355, 538: 1355, 1355, 1355, 1355, 545: 1355, 1355, 548: 1355, 1355, 1355, 552: 1355, 1355, 557: 1355, 1355, 564: 1355, 566: 1355, 583: 1355, 591: 1355, 1355, 624: 1355, 631: 1355, 633: 1355, 1355, 1355, 1355, 641: 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 663: 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 716: 1355}, + {2: 1354, 1354, 1354, 1354, 1354, 1354, 1354, 10: 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 58: 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 536: 1354, 538: 1354, 1354, 1354, 1354, 545: 1354, 1354, 548: 1354, 1354, 1354, 552: 1354, 1354, 557: 1354, 1354, 564: 1354, 566: 1354, 583: 1354, 591: 1354, 1354, 624: 1354, 631: 1354, 633: 1354, 1354, 1354, 1354, 641: 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 663: 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 716: 1354}, + {566: 4307, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4305}, + {57: 4306, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, // 1435 - {57: 4290, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 532: 1364, 1364, 1364, 536: 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 549: 1364, 1364, 1364, 554: 1364, 1364, 1364, 1364, 1364, 1364, 561: 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 579: 1364, 1364, 1364, 1364, 1364, 1364, 1364, 588: 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 609: 1364, 1364, 1364, 1364, 1364, 615: 1364, 1364, 618: 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 632: 1364, 1364, 1364, 1364, 696: 1364, 703: 1364}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4292}, - {9: 4293, 561: 4294, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4300}, + {1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 537: 1371, 1371, 1371, 541: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 554: 1371, 1371, 1371, 559: 1371, 1371, 1371, 1371, 1371, 565: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 584: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 593: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 614: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 625: 1371, 1371, 1371, 1371, 1371, 1371, 632: 1371, 637: 1371, 1371, 1371, 1371, 662: 1371, 707: 1371}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4308}, + {57: 4309, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 537: 1370, 1370, 1370, 541: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 554: 1370, 1370, 1370, 559: 1370, 1370, 1370, 1370, 1370, 565: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 584: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 593: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 614: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 625: 1370, 1370, 1370, 1370, 1370, 1370, 632: 1370, 637: 1370, 1370, 1370, 1370, 662: 1370, 707: 1370}, + {1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 537: 1373, 1373, 1373, 541: 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 554: 1373, 1373, 1373, 559: 1373, 1373, 1373, 1373, 1373, 565: 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 584: 1373, 1373, 1373, 1373, 1373, 1373, 1373, 593: 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 614: 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 625: 1373, 1373, 1373, 1373, 1373, 1373, 632: 1373, 637: 1373, 1373, 1373, 1373, 662: 1373, 707: 1373}, // 1440 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4295}, - {57: 4296, 558: 4297, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 532: 1370, 1370, 1370, 536: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 549: 1370, 1370, 1370, 554: 1370, 1370, 1370, 1370, 1370, 1370, 561: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 579: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 588: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 609: 1370, 1370, 1370, 1370, 1370, 615: 1370, 1370, 618: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 632: 1370, 1370, 1370, 1370, 696: 1370, 703: 1370}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4298}, - {57: 4299, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4312}, + {57: 4313, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 537: 1372, 1372, 1372, 541: 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 554: 1372, 1372, 1372, 559: 1372, 1372, 1372, 1372, 1372, 565: 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 584: 1372, 1372, 1372, 1372, 1372, 1372, 1372, 593: 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 614: 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 625: 1372, 1372, 1372, 1372, 1372, 1372, 632: 1372, 637: 1372, 1372, 1372, 1372, 662: 1372, 707: 1372}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4315}, + {9: 4316, 566: 4317, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, // 1445 - {1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 532: 1368, 1368, 1368, 536: 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 549: 1368, 1368, 1368, 554: 1368, 1368, 1368, 1368, 1368, 1368, 561: 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 579: 1368, 1368, 1368, 1368, 1368, 1368, 1368, 588: 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 609: 1368, 1368, 1368, 1368, 1368, 615: 1368, 1368, 618: 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 632: 1368, 1368, 1368, 1368, 696: 1368, 703: 1368}, - {9: 4302, 57: 4301, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 532: 1371, 1371, 1371, 536: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 549: 1371, 1371, 1371, 554: 1371, 1371, 1371, 1371, 1371, 1371, 561: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 579: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 588: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 609: 1371, 1371, 1371, 1371, 1371, 615: 1371, 1371, 618: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 632: 1371, 1371, 1371, 1371, 696: 1371, 703: 1371}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4303}, - {57: 4304, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4323}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4318}, + {57: 4319, 563: 4320, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 537: 1378, 1378, 1378, 541: 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 554: 1378, 1378, 1378, 559: 1378, 1378, 1378, 1378, 1378, 565: 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 584: 1378, 1378, 1378, 1378, 1378, 1378, 1378, 593: 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 614: 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 625: 1378, 1378, 1378, 1378, 1378, 1378, 632: 1378, 637: 1378, 1378, 1378, 1378, 662: 1378, 707: 1378}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4321}, // 1450 - {1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 532: 1369, 1369, 1369, 536: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 549: 1369, 1369, 1369, 554: 1369, 1369, 1369, 1369, 1369, 1369, 561: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 579: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 588: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 609: 1369, 1369, 1369, 1369, 1369, 615: 1369, 1369, 618: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 632: 1369, 1369, 1369, 1369, 696: 1369, 703: 1369}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 4306}, - {543: 3782, 3783, 3788, 584: 3784, 606: 4307, 609: 3785, 3786, 3779, 3789, 3778, 615: 3787, 3780, 618: 3781}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4308}, - {57: 4309, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, + {57: 4322, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 537: 1376, 1376, 1376, 541: 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 554: 1376, 1376, 1376, 559: 1376, 1376, 1376, 1376, 1376, 565: 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 584: 1376, 1376, 1376, 1376, 1376, 1376, 1376, 593: 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 614: 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 625: 1376, 1376, 1376, 1376, 1376, 1376, 632: 1376, 637: 1376, 1376, 1376, 1376, 662: 1376, 707: 1376}, + {9: 4325, 57: 4324, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 537: 1379, 1379, 1379, 541: 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 554: 1379, 1379, 1379, 559: 1379, 1379, 1379, 1379, 1379, 565: 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 584: 1379, 1379, 1379, 1379, 1379, 1379, 1379, 593: 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 614: 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 625: 1379, 1379, 1379, 1379, 1379, 1379, 632: 1379, 637: 1379, 1379, 1379, 1379, 662: 1379, 707: 1379}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4326}, // 1455 - {1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 532: 1372, 1372, 1372, 536: 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 549: 1372, 1372, 1372, 554: 1372, 1372, 1372, 1372, 1372, 1372, 561: 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 579: 1372, 1372, 1372, 1372, 1372, 1372, 1372, 588: 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 609: 1372, 1372, 1372, 1372, 1372, 615: 1372, 1372, 618: 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 632: 1372, 1372, 1372, 1372, 696: 1372, 703: 1372}, - {118: 3767, 127: 3775, 133: 3763, 137: 3760, 3762, 3759, 3761, 3765, 3766, 3771, 3770, 3769, 3773, 3774, 3768, 3772, 3764, 594: 3757, 3754, 3756, 3755, 3751, 3753, 3752, 3749, 3750, 3748, 3758, 886: 3747, 901: 4311}, - {561: 4312}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4313}, - {57: 4314, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, + {57: 4327, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 537: 1377, 1377, 1377, 541: 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 554: 1377, 1377, 1377, 559: 1377, 1377, 1377, 1377, 1377, 565: 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 584: 1377, 1377, 1377, 1377, 1377, 1377, 1377, 593: 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 614: 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 625: 1377, 1377, 1377, 1377, 1377, 1377, 632: 1377, 637: 1377, 1377, 1377, 1377, 662: 1377, 707: 1377}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 4329}, + {548: 3805, 3806, 3811, 589: 3807, 611: 4330, 614: 3808, 3809, 3802, 3812, 3801, 3810, 3803, 3804}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4331}, // 1460 - {1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 532: 1374, 1374, 1374, 536: 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 549: 1374, 1374, 1374, 554: 1374, 1374, 1374, 1374, 1374, 1374, 561: 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 579: 1374, 1374, 1374, 1374, 1374, 1374, 1374, 588: 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 609: 1374, 1374, 1374, 1374, 1374, 615: 1374, 1374, 618: 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 632: 1374, 1374, 1374, 1374, 696: 1374, 703: 1374}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4316}, - {9: 4317, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {641: 4318}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4319}, + {57: 4332, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 537: 1380, 1380, 1380, 541: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 554: 1380, 1380, 1380, 559: 1380, 1380, 1380, 1380, 1380, 565: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 584: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 593: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 614: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 625: 1380, 1380, 1380, 1380, 1380, 1380, 632: 1380, 637: 1380, 1380, 1380, 1380, 662: 1380, 707: 1380}, + {118: 3790, 127: 3798, 133: 3786, 137: 3783, 3785, 3782, 3784, 3788, 3789, 3794, 3793, 3792, 3796, 3797, 3791, 3795, 3787, 599: 3780, 3777, 3779, 3778, 3774, 3776, 3775, 3772, 3773, 3771, 3781, 892: 3770, 907: 4334}, + {566: 4335}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4336}, // 1465 - {118: 3767, 127: 3775, 133: 3763, 137: 3760, 3762, 3759, 3761, 3765, 3766, 3771, 3770, 3769, 3773, 3774, 3768, 3772, 3764, 566: 3745, 3743, 3744, 3742, 3740, 594: 3757, 3754, 3756, 3755, 3751, 3753, 3752, 3749, 3750, 3748, 3758, 800: 3741, 3739, 886: 3747, 901: 4320}, - {57: 4321}, - {1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 532: 1375, 1375, 1375, 536: 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 549: 1375, 1375, 1375, 554: 1375, 1375, 1375, 1375, 1375, 1375, 561: 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 579: 1375, 1375, 1375, 1375, 1375, 1375, 1375, 588: 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 609: 1375, 1375, 1375, 1375, 1375, 615: 1375, 1375, 618: 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 632: 1375, 1375, 1375, 1375, 696: 1375, 703: 1375}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4323}, - {9: 4324, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, + {57: 4337, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 537: 1382, 1382, 1382, 541: 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 554: 1382, 1382, 1382, 559: 1382, 1382, 1382, 1382, 1382, 565: 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 584: 1382, 1382, 1382, 1382, 1382, 1382, 1382, 593: 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 614: 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 625: 1382, 1382, 1382, 1382, 1382, 1382, 632: 1382, 637: 1382, 1382, 1382, 1382, 662: 1382, 707: 1382}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4339}, + {9: 4340, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {646: 4341}, // 1470 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 4326, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4325}, - {57: 4330, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 1426, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4327}, - {118: 3767, 127: 3775, 133: 3763, 137: 3760, 3762, 3759, 3761, 3765, 3766, 3771, 3770, 3769, 3773, 3774, 3768, 3772, 3764, 566: 3745, 3743, 3744, 3742, 3740, 594: 3757, 3754, 3756, 3755, 3751, 3753, 3752, 3749, 3750, 3748, 3758, 800: 3741, 3739, 886: 3747, 901: 4328}, - {57: 4329, 543: 3776}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4342}, + {118: 3790, 127: 3798, 133: 3786, 137: 3783, 3785, 3782, 3784, 3788, 3789, 3794, 3793, 3792, 3796, 3797, 3791, 3795, 3787, 571: 3768, 3766, 3767, 3765, 3763, 599: 3780, 3777, 3779, 3778, 3774, 3776, 3775, 3772, 3773, 3771, 3781, 806: 3764, 3762, 892: 3770, 907: 4343}, + {57: 4344}, + {1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 537: 1383, 1383, 1383, 541: 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 554: 1383, 1383, 1383, 559: 1383, 1383, 1383, 1383, 1383, 565: 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 584: 1383, 1383, 1383, 1383, 1383, 1383, 1383, 593: 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 614: 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 625: 1383, 1383, 1383, 1383, 1383, 1383, 632: 1383, 637: 1383, 1383, 1383, 1383, 662: 1383, 707: 1383}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4346}, // 1475 - {1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 532: 1376, 1376, 1376, 536: 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 549: 1376, 1376, 1376, 554: 1376, 1376, 1376, 1376, 1376, 1376, 561: 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 579: 1376, 1376, 1376, 1376, 1376, 1376, 1376, 588: 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 609: 1376, 1376, 1376, 1376, 1376, 615: 1376, 1376, 618: 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 632: 1376, 1376, 1376, 1376, 696: 1376, 703: 1376}, - {1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 532: 1377, 1377, 1377, 536: 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 549: 1377, 1377, 1377, 554: 1377, 1377, 1377, 1377, 1377, 1377, 561: 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 579: 1377, 1377, 1377, 1377, 1377, 1377, 1377, 588: 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 609: 1377, 1377, 1377, 1377, 1377, 615: 1377, 1377, 618: 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 632: 1377, 1377, 1377, 1377, 696: 1377, 703: 1377}, - {57: 2182, 560: 4333, 1180: 4332, 4334}, - {57: 2181}, - {57: 2180}, + {9: 4347, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 4349, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4348}, + {57: 4353, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 1435, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4350}, + {118: 3790, 127: 3798, 133: 3786, 137: 3783, 3785, 3782, 3784, 3788, 3789, 3794, 3793, 3792, 3796, 3797, 3791, 3795, 3787, 571: 3768, 3766, 3767, 3765, 3763, 599: 3780, 3777, 3779, 3778, 3774, 3776, 3775, 3772, 3773, 3771, 3781, 806: 3764, 3762, 892: 3770, 907: 4351}, // 1480 - {57: 4335}, - {1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 532: 1378, 1378, 1378, 536: 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 549: 1378, 1378, 1378, 554: 1378, 1378, 1378, 1378, 1378, 1378, 561: 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 579: 1378, 1378, 1378, 1378, 1378, 1378, 1378, 588: 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 609: 1378, 1378, 1378, 1378, 1378, 615: 1378, 1378, 618: 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 632: 1378, 1378, 1378, 1378, 696: 1378, 703: 1378}, - {57: 2182, 560: 4333, 1180: 4332, 4337}, - {57: 4338}, - {1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 532: 1379, 1379, 1379, 536: 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 549: 1379, 1379, 1379, 554: 1379, 1379, 1379, 1379, 1379, 1379, 561: 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 579: 1379, 1379, 1379, 1379, 1379, 1379, 1379, 588: 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 609: 1379, 1379, 1379, 1379, 1379, 615: 1379, 1379, 618: 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 632: 1379, 1379, 1379, 1379, 696: 1379, 703: 1379}, + {57: 4352, 548: 3799}, + {1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 537: 1384, 1384, 1384, 541: 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 554: 1384, 1384, 1384, 559: 1384, 1384, 1384, 1384, 1384, 565: 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 584: 1384, 1384, 1384, 1384, 1384, 1384, 1384, 593: 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 614: 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 625: 1384, 1384, 1384, 1384, 1384, 1384, 632: 1384, 637: 1384, 1384, 1384, 1384, 662: 1384, 707: 1384}, + {1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 537: 1385, 1385, 1385, 541: 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 554: 1385, 1385, 1385, 559: 1385, 1385, 1385, 1385, 1385, 565: 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 584: 1385, 1385, 1385, 1385, 1385, 1385, 1385, 593: 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 614: 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 625: 1385, 1385, 1385, 1385, 1385, 1385, 632: 1385, 637: 1385, 1385, 1385, 1385, 662: 1385, 707: 1385}, + {57: 2196, 564: 4356, 1186: 4355, 4357}, + {57: 2195}, // 1485 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 4340}, - {9: 4341, 543: 3782, 3783, 3788, 584: 3784, 609: 3785, 3786, 3779, 3789, 3778, 615: 3787, 3780, 618: 3781}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 4342}, - {57: 4343, 543: 3782, 3783, 3788, 584: 3784, 609: 3785, 3786, 3779, 3789, 3778, 615: 3787, 3780, 618: 3781}, - {1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 532: 1381, 1381, 1381, 536: 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 549: 1381, 1381, 1381, 554: 1381, 1381, 1381, 1381, 1381, 1381, 561: 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 579: 1381, 1381, 1381, 1381, 1381, 1381, 1381, 588: 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 609: 1381, 1381, 1381, 1381, 1381, 615: 1381, 1381, 618: 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 632: 1381, 1381, 1381, 1381, 696: 1381, 703: 1381}, + {57: 2194}, + {57: 4358}, + {1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 537: 1386, 1386, 1386, 541: 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 554: 1386, 1386, 1386, 559: 1386, 1386, 1386, 1386, 1386, 565: 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 584: 1386, 1386, 1386, 1386, 1386, 1386, 1386, 593: 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 614: 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 625: 1386, 1386, 1386, 1386, 1386, 1386, 632: 1386, 637: 1386, 1386, 1386, 1386, 662: 1386, 707: 1386}, + {57: 2196, 564: 4356, 1186: 4355, 4360}, + {57: 4361}, // 1490 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 2184, 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3842, 863: 4345, 921: 4346}, - {9: 3990, 57: 2183}, - {57: 4347}, - {1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 532: 1382, 1382, 1382, 536: 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 549: 1382, 1382, 1382, 554: 1382, 1382, 1382, 1382, 1382, 1382, 561: 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 579: 1382, 1382, 1382, 1382, 1382, 1382, 1382, 588: 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 609: 1382, 1382, 1382, 1382, 1382, 615: 1382, 1382, 618: 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 632: 1382, 1382, 1382, 1382, 696: 1382, 703: 1382}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3842, 863: 4349}, + {1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 537: 1387, 1387, 1387, 541: 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 554: 1387, 1387, 1387, 559: 1387, 1387, 1387, 1387, 1387, 565: 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 584: 1387, 1387, 1387, 1387, 1387, 1387, 1387, 593: 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 614: 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 625: 1387, 1387, 1387, 1387, 1387, 1387, 632: 1387, 637: 1387, 1387, 1387, 1387, 662: 1387, 707: 1387}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 4363}, + {9: 4364, 548: 3805, 3806, 3811, 589: 3807, 614: 3808, 3809, 3802, 3812, 3801, 3810, 3803, 3804}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 4365}, + {57: 4366, 548: 3805, 3806, 3811, 589: 3807, 614: 3808, 3809, 3802, 3812, 3801, 3810, 3803, 3804}, // 1495 - {9: 3990, 57: 4350, 542: 4351}, - {1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 532: 1387, 1387, 1387, 536: 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 549: 1387, 1387, 1387, 554: 1387, 1387, 1387, 1387, 1387, 1387, 561: 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 579: 1387, 1387, 1387, 1387, 1387, 1387, 1387, 588: 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 609: 1387, 1387, 1387, 1387, 1387, 615: 1387, 1387, 618: 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 632: 1387, 1387, 1387, 1387, 696: 1387, 703: 1387}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 586: 4354, 770: 3737, 3051, 3052, 3050, 805: 4353, 905: 4352}, - {57: 4355}, - {955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 57: 955, 131: 955, 154: 955, 530: 955, 955, 955, 534: 955, 955, 955, 955, 955, 955, 546: 955, 955, 955, 955, 552: 955, 955, 557: 955, 565: 955, 586: 955, 608: 955, 695: 955, 701: 955, 955, 704: 955, 955, 955, 955, 955, 955, 955, 721: 955, 955}, + {1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 537: 1389, 1389, 1389, 541: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 554: 1389, 1389, 1389, 559: 1389, 1389, 1389, 1389, 1389, 565: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 584: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 593: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 614: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 625: 1389, 1389, 1389, 1389, 1389, 1389, 632: 1389, 637: 1389, 1389, 1389, 1389, 662: 1389, 707: 1389}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 2198, 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3865, 869: 4368, 927: 4369}, + {9: 4013, 57: 2197}, + {57: 4370}, + {1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 537: 1390, 1390, 1390, 541: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 554: 1390, 1390, 1390, 559: 1390, 1390, 1390, 1390, 1390, 565: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 584: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 593: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 614: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 625: 1390, 1390, 1390, 1390, 1390, 1390, 632: 1390, 637: 1390, 1390, 1390, 1390, 662: 1390, 707: 1390}, // 1500 - {954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 57: 954, 131: 954, 154: 954, 530: 954, 954, 954, 534: 954, 954, 954, 954, 954, 954, 546: 954, 954, 954, 954, 552: 954, 954, 557: 954, 565: 954, 586: 954, 608: 954, 695: 954, 701: 954, 954, 704: 954, 954, 954, 954, 954, 954, 954, 721: 954, 954}, - {1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 532: 1386, 1386, 1386, 536: 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 549: 1386, 1386, 1386, 554: 1386, 1386, 1386, 1386, 1386, 1386, 561: 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 579: 1386, 1386, 1386, 1386, 1386, 1386, 1386, 588: 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 609: 1386, 1386, 1386, 1386, 1386, 615: 1386, 1386, 618: 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 632: 1386, 1386, 1386, 1386, 696: 1386, 703: 1386}, - {1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 532: 1388, 1388, 1388, 536: 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 549: 1388, 1388, 1388, 554: 1388, 1388, 1388, 1388, 1388, 1388, 561: 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 579: 1388, 1388, 1388, 1388, 1388, 1388, 1388, 588: 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 609: 1388, 1388, 1388, 1388, 1388, 615: 1388, 1388, 618: 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 632: 1388, 1388, 1388, 1388, 696: 1388, 703: 1388}, - {57: 4358, 560: 4359}, - {1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 532: 1310, 1310, 1310, 536: 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 549: 1310, 1310, 1310, 554: 1310, 1310, 1310, 1310, 1310, 1310, 561: 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 579: 1310, 1310, 1310, 1310, 1310, 1310, 1310, 588: 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 609: 1310, 1310, 1310, 1310, 1310, 615: 1310, 1310, 618: 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 632: 1310, 1310, 1310, 1310, 696: 1310, 703: 1310}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3865, 869: 4372}, + {9: 4013, 57: 4373, 547: 4374}, + {1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 537: 1395, 1395, 1395, 541: 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 554: 1395, 1395, 1395, 559: 1395, 1395, 1395, 1395, 1395, 565: 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 584: 1395, 1395, 1395, 1395, 1395, 1395, 1395, 593: 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 614: 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 625: 1395, 1395, 1395, 1395, 1395, 1395, 632: 1395, 637: 1395, 1395, 1395, 1395, 662: 1395, 707: 1395}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 591: 4377, 777: 3760, 3068, 3069, 3067, 811: 4376, 911: 4375}, + {57: 4378}, // 1505 - {57: 4360}, - {1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 532: 1309, 1309, 1309, 536: 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 549: 1309, 1309, 1309, 554: 1309, 1309, 1309, 1309, 1309, 1309, 561: 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 579: 1309, 1309, 1309, 1309, 1309, 1309, 1309, 588: 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 609: 1309, 1309, 1309, 1309, 1309, 615: 1309, 1309, 618: 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 632: 1309, 1309, 1309, 1309, 696: 1309, 703: 1309}, - {57: 4362}, - {1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 532: 1389, 1389, 1389, 536: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 549: 1389, 1389, 1389, 554: 1389, 1389, 1389, 1389, 1389, 1389, 561: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 579: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 588: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 609: 1389, 1389, 1389, 1389, 1389, 615: 1389, 1389, 618: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 632: 1389, 1389, 1389, 1389, 696: 1389, 703: 1389}, - {57: 4365}, + {963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 57: 963, 131: 963, 154: 963, 535: 963, 963, 963, 539: 963, 963, 963, 963, 963, 963, 551: 963, 963, 963, 963, 557: 963, 963, 560: 963, 570: 963, 591: 963, 613: 963, 661: 963, 706: 963, 708: 963, 963, 963, 963, 963, 963, 963, 963, 726: 963, 963}, + {962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 57: 962, 131: 962, 154: 962, 535: 962, 962, 962, 539: 962, 962, 962, 962, 962, 962, 551: 962, 962, 962, 962, 557: 962, 962, 560: 962, 570: 962, 591: 962, 613: 962, 661: 962, 706: 962, 708: 962, 962, 962, 962, 962, 962, 962, 962, 726: 962, 962}, + {1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 537: 1394, 1394, 1394, 541: 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 554: 1394, 1394, 1394, 559: 1394, 1394, 1394, 1394, 1394, 565: 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 584: 1394, 1394, 1394, 1394, 1394, 1394, 1394, 593: 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 614: 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 625: 1394, 1394, 1394, 1394, 1394, 1394, 632: 1394, 637: 1394, 1394, 1394, 1394, 662: 1394, 707: 1394}, + {1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 537: 1396, 1396, 1396, 541: 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 554: 1396, 1396, 1396, 559: 1396, 1396, 1396, 1396, 1396, 565: 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 584: 1396, 1396, 1396, 1396, 1396, 1396, 1396, 593: 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 614: 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 625: 1396, 1396, 1396, 1396, 1396, 1396, 632: 1396, 637: 1396, 1396, 1396, 1396, 662: 1396, 707: 1396}, + {57: 4381, 564: 4382}, // 1510 - {1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 532: 1390, 1390, 1390, 536: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 549: 1390, 1390, 1390, 554: 1390, 1390, 1390, 1390, 1390, 1390, 561: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 579: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 588: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 609: 1390, 1390, 1390, 1390, 1390, 615: 1390, 1390, 618: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 632: 1390, 1390, 1390, 1390, 696: 1390, 703: 1390}, - {1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 532: 1404, 1404, 1404, 536: 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 549: 1404, 1404, 1404, 554: 1404, 1404, 1404, 1404, 1404, 1404, 561: 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 579: 1404, 1404, 1404, 1404, 1404, 1404, 1404, 588: 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 609: 1404, 1404, 1404, 1404, 1404, 615: 1404, 1404, 618: 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 632: 1404, 1404, 1404, 1404, 696: 1404, 703: 1404, 712: 1404, 717: 1404, 725: 1404}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 2184, 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3842, 863: 4345, 921: 4367}, - {57: 4368}, - {1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 532: 1391, 1391, 1391, 536: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 549: 1391, 1391, 1391, 554: 1391, 1391, 1391, 1391, 1391, 1391, 561: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 579: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 588: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 609: 1391, 1391, 1391, 1391, 1391, 615: 1391, 1391, 618: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 632: 1391, 1391, 1391, 1391, 696: 1391, 703: 1391}, + {1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 537: 1318, 1318, 1318, 541: 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 554: 1318, 1318, 1318, 559: 1318, 1318, 1318, 1318, 1318, 565: 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 584: 1318, 1318, 1318, 1318, 1318, 1318, 1318, 593: 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 614: 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 625: 1318, 1318, 1318, 1318, 1318, 1318, 632: 1318, 637: 1318, 1318, 1318, 1318, 662: 1318, 707: 1318}, + {57: 4383}, + {1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 537: 1317, 1317, 1317, 541: 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 554: 1317, 1317, 1317, 559: 1317, 1317, 1317, 1317, 1317, 565: 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 584: 1317, 1317, 1317, 1317, 1317, 1317, 1317, 593: 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 614: 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 625: 1317, 1317, 1317, 1317, 1317, 1317, 632: 1317, 637: 1317, 1317, 1317, 1317, 662: 1317, 707: 1317}, + {57: 4385}, + {1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 537: 1397, 1397, 1397, 541: 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 554: 1397, 1397, 1397, 559: 1397, 1397, 1397, 1397, 1397, 565: 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 584: 1397, 1397, 1397, 1397, 1397, 1397, 1397, 593: 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 614: 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 625: 1397, 1397, 1397, 1397, 1397, 1397, 632: 1397, 637: 1397, 1397, 1397, 1397, 662: 1397, 707: 1397}, // 1515 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 2184, 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3842, 863: 4345, 921: 4370}, - {57: 4371}, - {1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 532: 1392, 1392, 1392, 536: 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 549: 1392, 1392, 1392, 554: 1392, 1392, 1392, 1392, 1392, 1392, 561: 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 579: 1392, 1392, 1392, 1392, 1392, 1392, 1392, 588: 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 609: 1392, 1392, 1392, 1392, 1392, 615: 1392, 1392, 618: 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 632: 1392, 1392, 1392, 1392, 696: 1392, 703: 1392}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4373}, - {9: 4374, 542: 4375, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, + {57: 4388}, + {1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 537: 1398, 1398, 1398, 541: 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 554: 1398, 1398, 1398, 559: 1398, 1398, 1398, 1398, 1398, 565: 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 584: 1398, 1398, 1398, 1398, 1398, 1398, 1398, 593: 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 614: 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 625: 1398, 1398, 1398, 1398, 1398, 1398, 632: 1398, 637: 1398, 1398, 1398, 1398, 662: 1398, 707: 1398}, + {1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 537: 1412, 1412, 1412, 541: 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 554: 1412, 1412, 1412, 559: 1412, 1412, 1412, 1412, 1412, 565: 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 584: 1412, 1412, 1412, 1412, 1412, 1412, 1412, 593: 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 614: 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 625: 1412, 1412, 1412, 1412, 1412, 1412, 632: 1412, 637: 1412, 1412, 1412, 1412, 662: 1412, 707: 1412, 717: 1412, 722: 1412, 730: 1412}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 2198, 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3865, 869: 4368, 927: 4390}, + {57: 4391}, // 1520 - {59: 4386, 118: 4382, 172: 4388, 175: 4383, 4381, 179: 4385, 553: 4393, 586: 4379, 709: 4392, 734: 4384, 4389, 4390, 739: 4391, 814: 4387, 951: 4380, 1120: 4378}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 586: 4354, 770: 3737, 3051, 3052, 3050, 805: 4353, 905: 4376}, - {57: 4377}, - {1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 532: 1452, 1452, 1452, 536: 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 549: 1452, 1452, 1452, 554: 1452, 1452, 1452, 1452, 1452, 1452, 561: 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 579: 1452, 1452, 1452, 1452, 1452, 1452, 1452, 588: 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 609: 1452, 1452, 1452, 1452, 1452, 615: 1452, 1452, 618: 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 632: 1452, 1452, 1452, 1452, 696: 1452, 703: 1452}, - {57: 4429}, + {1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 537: 1399, 1399, 1399, 541: 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 554: 1399, 1399, 1399, 559: 1399, 1399, 1399, 1399, 1399, 565: 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 584: 1399, 1399, 1399, 1399, 1399, 1399, 1399, 593: 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 614: 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 625: 1399, 1399, 1399, 1399, 1399, 1399, 632: 1399, 637: 1399, 1399, 1399, 1399, 662: 1399, 707: 1399}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 2198, 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3865, 869: 4368, 927: 4393}, + {57: 4394}, + {1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 537: 1400, 1400, 1400, 541: 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 554: 1400, 1400, 1400, 559: 1400, 1400, 1400, 1400, 1400, 565: 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 584: 1400, 1400, 1400, 1400, 1400, 1400, 1400, 593: 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 614: 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 625: 1400, 1400, 1400, 1400, 1400, 1400, 632: 1400, 637: 1400, 1400, 1400, 1400, 662: 1400, 707: 1400}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4396}, // 1525 - {57: 465, 531: 4408, 721: 465, 841: 4409, 888: 4428}, - {16: 465, 57: 465, 531: 4408, 553: 465, 586: 465, 709: 465, 721: 465, 841: 4409, 888: 4413}, - {57: 1270, 721: 1270}, - {57: 1269, 721: 1269}, - {57: 465, 531: 4408, 721: 465, 841: 4409, 888: 4412}, + {9: 4397, 547: 4398, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {59: 4409, 118: 4405, 172: 4411, 175: 4406, 4404, 179: 4408, 558: 4416, 591: 4402, 714: 4415, 739: 4407, 4412, 4413, 744: 4414, 821: 4410, 957: 4403, 1126: 4401}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 591: 4377, 777: 3760, 3068, 3069, 3067, 811: 4376, 911: 4399}, + {57: 4400}, + {1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 537: 1461, 1461, 1461, 541: 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 554: 1461, 1461, 1461, 559: 1461, 1461, 1461, 1461, 1461, 565: 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 584: 1461, 1461, 1461, 1461, 1461, 1461, 1461, 593: 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 614: 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 625: 1461, 1461, 1461, 1461, 1461, 1461, 632: 1461, 637: 1461, 1461, 1461, 1461, 662: 1461, 707: 1461}, // 1530 - {57: 458, 531: 4395, 721: 458, 841: 4396, 1003: 4411, 1010: 4397}, - {57: 465, 531: 4408, 721: 465, 841: 4409, 888: 4407}, - {57: 531, 721: 531, 737: 4404, 4405, 1223: 4406}, - {57: 531, 721: 531, 737: 4404, 4405, 1223: 4403}, - {57: 1263, 721: 1263}, + {57: 4452}, + {57: 466, 536: 4431, 726: 466, 847: 4432, 894: 4451}, + {16: 466, 57: 466, 536: 4431, 558: 466, 591: 466, 714: 466, 726: 466, 847: 4432, 894: 4436}, + {57: 1278, 726: 1278}, + {57: 1277, 726: 1277}, // 1535 - {57: 1262, 721: 1262}, - {57: 458, 531: 4395, 721: 458, 841: 4396, 1003: 4394, 1010: 4397}, - {57: 1260, 721: 1260}, - {16: 503, 57: 503, 531: 503, 553: 503, 586: 503, 709: 503, 721: 503}, - {16: 502, 57: 502, 531: 502, 553: 502, 586: 502, 709: 502, 721: 502}, + {57: 466, 536: 4431, 726: 466, 847: 4432, 894: 4435}, + {57: 459, 536: 4418, 726: 459, 847: 4419, 1009: 4434, 1016: 4420}, + {57: 466, 536: 4431, 726: 466, 847: 4432, 894: 4430}, + {57: 532, 726: 532, 742: 4427, 4428, 1229: 4429}, + {57: 532, 726: 532, 742: 4427, 4428, 1229: 4426}, // 1540 - {57: 1261, 721: 1261}, - {560: 3037, 799: 3866, 816: 4398}, - {457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 57: 457, 59: 457, 530: 457, 534: 457, 457, 457, 457, 457, 546: 457, 548: 457, 701: 457, 457, 704: 457, 457, 457, 457, 457, 721: 457, 814: 457, 819: 457}, - {456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 57: 456, 59: 456, 530: 456, 534: 456, 456, 456, 456, 456, 546: 456, 548: 456, 701: 456, 456, 704: 456, 456, 456, 456, 456, 721: 456, 814: 456, 819: 456}, - {9: 4400, 57: 4399}, + {57: 1271, 726: 1271}, + {57: 1270, 726: 1270}, + {57: 459, 536: 4418, 726: 459, 847: 4419, 1009: 4417, 1016: 4420}, + {57: 1268, 726: 1268}, + {16: 504, 57: 504, 536: 504, 558: 504, 591: 504, 714: 504, 726: 504}, // 1545 - {466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 16: 466, 57: 466, 59: 466, 151: 466, 466, 466, 530: 466, 534: 466, 466, 466, 466, 466, 546: 466, 548: 466, 553: 466, 577: 466, 586: 466, 605: 466, 701: 466, 466, 704: 466, 466, 466, 466, 466, 466, 721: 466, 814: 466, 819: 466}, - {560: 3037, 799: 3866, 816: 4401}, - {57: 4402}, - {455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 57: 455, 59: 455, 530: 455, 534: 455, 455, 455, 455, 455, 546: 455, 548: 455, 701: 455, 455, 704: 455, 455, 455, 455, 455, 721: 455, 814: 455, 819: 455}, - {57: 1264, 721: 1264}, + {16: 503, 57: 503, 536: 503, 558: 503, 591: 503, 714: 503, 726: 503}, + {57: 1269, 726: 1269}, + {564: 3054, 805: 3889, 820: 4421}, + {458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 57: 458, 59: 458, 535: 458, 539: 458, 458, 458, 458, 458, 551: 458, 553: 458, 706: 458, 708: 458, 458, 458, 458, 458, 458, 726: 458, 821: 458, 825: 458}, + {457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 57: 457, 59: 457, 535: 457, 539: 457, 457, 457, 457, 457, 551: 457, 553: 457, 706: 457, 708: 457, 457, 457, 457, 457, 457, 726: 457, 821: 457, 825: 457}, // 1550 - {57: 530, 721: 530}, - {57: 529, 721: 529}, - {57: 1265, 721: 1265}, - {57: 1266, 721: 1266}, - {560: 3037, 799: 3866, 816: 4410}, + {9: 4423, 57: 4422}, + {467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 16: 467, 57: 467, 59: 467, 151: 467, 467, 467, 535: 467, 539: 467, 467, 467, 467, 467, 551: 467, 553: 467, 558: 467, 582: 467, 591: 467, 610: 467, 706: 467, 708: 467, 467, 467, 467, 467, 467, 467, 726: 467, 821: 467, 825: 467}, + {564: 3054, 805: 3889, 820: 4424}, + {57: 4425}, + {456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 57: 456, 59: 456, 535: 456, 539: 456, 456, 456, 456, 456, 551: 456, 553: 456, 706: 456, 708: 456, 456, 456, 456, 456, 456, 726: 456, 821: 456, 825: 456}, // 1555 - {464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 16: 464, 57: 464, 59: 464, 151: 464, 464, 464, 530: 464, 534: 464, 464, 464, 464, 464, 546: 464, 548: 464, 553: 464, 577: 464, 586: 464, 605: 464, 701: 464, 464, 704: 464, 464, 464, 464, 464, 464, 721: 464, 814: 464, 819: 464}, - {57: 4399}, - {57: 1267, 721: 1267}, - {57: 1268, 721: 1268}, - {16: 4418, 57: 452, 553: 4419, 586: 4415, 709: 4417, 721: 452, 853: 4416, 896: 4414}, + {57: 1272, 726: 1272}, + {57: 531, 726: 531}, + {57: 530, 726: 530}, + {57: 1273, 726: 1273}, + {57: 1274, 726: 1274}, // 1560 - {57: 1271, 721: 1271}, - {449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 16: 4418, 57: 449, 530: 449, 534: 449, 449, 449, 449, 449, 546: 449, 548: 449, 553: 4419, 701: 449, 449, 704: 449, 449, 449, 449, 449, 4417, 721: 449, 853: 4426, 1400: 4425}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 586: 4354, 770: 3737, 3051, 3052, 3050, 805: 4353, 905: 4422}, - {557: 4421}, - {446, 446, 446, 446, 446, 446, 446, 446, 446, 10: 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, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 58: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 533: 446, 535: 446, 555: 446, 563: 446, 579: 446, 586: 446}, + {564: 3054, 805: 3889, 820: 4433}, + {465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 16: 465, 57: 465, 59: 465, 151: 465, 465, 465, 535: 465, 539: 465, 465, 465, 465, 465, 551: 465, 553: 465, 558: 465, 582: 465, 591: 465, 610: 465, 706: 465, 708: 465, 465, 465, 465, 465, 465, 465, 726: 465, 821: 465, 825: 465}, + {57: 4422}, + {57: 1275, 726: 1275}, + {57: 1276, 726: 1276}, // 1565 - {557: 4420}, - {445, 445, 445, 445, 445, 445, 445, 445, 445, 10: 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, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 58: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 533: 445, 535: 445, 555: 445, 563: 445, 579: 445, 586: 445}, - {447, 447, 447, 447, 447, 447, 447, 447, 447, 10: 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, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 58: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 533: 447, 535: 447, 555: 447, 563: 447, 579: 447, 586: 447}, - {454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 57: 454, 530: 454, 534: 454, 454, 454, 454, 454, 546: 454, 548: 454, 586: 4423, 701: 454, 454, 704: 454, 454, 454, 454, 454, 721: 454, 1399: 4424}, - {453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 57: 453, 530: 453, 534: 453, 453, 453, 453, 453, 546: 453, 548: 453, 701: 453, 453, 704: 453, 453, 453, 453, 453, 721: 453}, + {16: 4441, 57: 453, 558: 4442, 591: 4438, 714: 4440, 726: 453, 859: 4439, 902: 4437}, + {57: 1279, 726: 1279}, + {450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 16: 4441, 57: 450, 535: 450, 539: 450, 450, 450, 450, 450, 551: 450, 553: 450, 558: 4442, 706: 450, 708: 450, 450, 450, 450, 450, 450, 4440, 726: 450, 859: 4449, 1407: 4448}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 591: 4377, 777: 3760, 3068, 3069, 3067, 811: 4376, 911: 4445}, + {560: 4444}, // 1570 - {450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 57: 450, 530: 450, 534: 450, 450, 450, 450, 450, 546: 450, 548: 450, 701: 450, 450, 704: 450, 450, 450, 450, 450, 721: 450}, - {451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 57: 451, 530: 451, 534: 451, 451, 451, 451, 451, 546: 451, 548: 451, 701: 451, 451, 704: 451, 451, 451, 451, 451, 721: 451}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 586: 4354, 770: 3737, 3051, 3052, 3050, 805: 4353, 905: 4427}, - {448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 57: 448, 530: 448, 534: 448, 448, 448, 448, 448, 546: 448, 548: 448, 701: 448, 448, 704: 448, 448, 448, 448, 448, 721: 448}, - {57: 1272, 721: 1272}, + {447, 447, 447, 447, 447, 447, 447, 447, 447, 10: 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, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 58: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 538: 447, 540: 447, 561: 447, 568: 447, 584: 447, 591: 447}, + {560: 4443}, + {446, 446, 446, 446, 446, 446, 446, 446, 446, 10: 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, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 58: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 538: 446, 540: 446, 561: 446, 568: 446, 584: 446, 591: 446}, + {448, 448, 448, 448, 448, 448, 448, 448, 448, 10: 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 58: 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 538: 448, 540: 448, 561: 448, 568: 448, 584: 448, 591: 448}, + {455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 57: 455, 535: 455, 539: 455, 455, 455, 455, 455, 551: 455, 553: 455, 591: 4446, 706: 455, 708: 455, 455, 455, 455, 455, 455, 726: 455, 1406: 4447}, // 1575 - {1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 532: 1453, 1453, 1453, 536: 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 549: 1453, 1453, 1453, 554: 1453, 1453, 1453, 1453, 1453, 1453, 561: 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 579: 1453, 1453, 1453, 1453, 1453, 1453, 1453, 588: 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 609: 1453, 1453, 1453, 1453, 1453, 615: 1453, 1453, 618: 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 632: 1453, 1453, 1453, 1453, 696: 1453, 703: 1453}, - {566: 3745, 3743, 3744, 3742, 3740, 589: 1278, 800: 3741, 3739}, - {589: 4434, 1303: 4433, 1501: 4432}, - {97: 1274, 589: 4434, 4440, 1303: 4439, 1353: 4438}, - {97: 1277, 589: 1277, 1277}, + {454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 57: 454, 535: 454, 539: 454, 454, 454, 454, 454, 551: 454, 553: 454, 706: 454, 708: 454, 454, 454, 454, 454, 454, 726: 454}, + {451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 57: 451, 535: 451, 539: 451, 451, 451, 451, 451, 551: 451, 553: 451, 706: 451, 708: 451, 451, 451, 451, 451, 451, 726: 451}, + {452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 57: 452, 535: 452, 539: 452, 452, 452, 452, 452, 551: 452, 553: 452, 706: 452, 708: 452, 452, 452, 452, 452, 452, 726: 452}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 591: 4377, 777: 3760, 3068, 3069, 3067, 811: 4376, 911: 4450}, + {449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 57: 449, 535: 449, 539: 449, 449, 449, 449, 449, 551: 449, 553: 449, 706: 449, 708: 449, 449, 449, 449, 449, 449, 726: 449}, // 1580 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4435}, - {566: 3745, 3743, 3744, 3742, 3740, 607: 4436, 800: 3741, 3739}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4437}, - {97: 1275, 566: 3745, 3743, 3744, 3742, 3740, 589: 1275, 1275, 800: 3741, 3739}, - {97: 4442}, + {57: 1280, 726: 1280}, + {1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 537: 1462, 1462, 1462, 541: 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 554: 1462, 1462, 1462, 559: 1462, 1462, 1462, 1462, 1462, 565: 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 584: 1462, 1462, 1462, 1462, 1462, 1462, 1462, 593: 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 614: 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 625: 1462, 1462, 1462, 1462, 1462, 1462, 632: 1462, 637: 1462, 1462, 1462, 1462, 662: 1462, 707: 1462}, + {571: 3768, 3766, 3767, 3765, 3763, 594: 1286, 806: 3764, 3762}, + {594: 4457, 1309: 4456, 1508: 4455}, + {97: 1282, 594: 4457, 4463, 1309: 4462, 1360: 4461}, // 1585 - {97: 1276, 589: 1276, 1276}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4441}, - {97: 1273, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 532: 1454, 1454, 1454, 536: 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 549: 1454, 1454, 1454, 554: 1454, 1454, 1454, 1454, 1454, 1454, 561: 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 579: 1454, 1454, 1454, 1454, 1454, 1454, 1454, 588: 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 609: 1454, 1454, 1454, 1454, 1454, 615: 1454, 1454, 618: 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 632: 1454, 1454, 1454, 1454, 696: 1454, 703: 1454}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4444}, + {97: 1285, 594: 1285, 1285}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4458}, + {571: 3768, 3766, 3767, 3765, 3763, 612: 4459, 806: 3764, 3762}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4460}, + {97: 1283, 571: 3768, 3766, 3767, 3765, 3763, 594: 1283, 1283, 806: 3764, 3762}, // 1590 - {537: 4445, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {59: 4386, 118: 4382, 172: 4388, 175: 4383, 4381, 179: 4385, 553: 4393, 586: 4379, 709: 4392, 734: 4384, 4389, 4390, 739: 4391, 814: 4387, 951: 4380, 1120: 4446}, - {57: 1447, 721: 4448, 1320: 4447}, - {57: 4449}, - {57: 1446}, + {97: 4465}, + {97: 1284, 594: 1284, 1284}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4464}, + {97: 1281, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 537: 1463, 1463, 1463, 541: 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 554: 1463, 1463, 1463, 559: 1463, 1463, 1463, 1463, 1463, 565: 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 584: 1463, 1463, 1463, 1463, 1463, 1463, 1463, 593: 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 614: 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 625: 1463, 1463, 1463, 1463, 1463, 1463, 632: 1463, 637: 1463, 1463, 1463, 1463, 662: 1463, 707: 1463}, // 1595 - {1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 532: 1455, 1455, 1455, 536: 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 549: 1455, 1455, 1455, 554: 1455, 1455, 1455, 1455, 1455, 1455, 561: 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 579: 1455, 1455, 1455, 1455, 1455, 1455, 1455, 588: 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 609: 1455, 1455, 1455, 1455, 1455, 615: 1455, 1455, 618: 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 632: 1455, 1455, 1455, 1455, 696: 1455, 703: 1455}, - {1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 532: 1456, 1456, 1456, 536: 1456, 1456, 3693, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 549: 1456, 1456, 1456, 554: 1456, 1456, 1456, 1456, 1456, 1456, 561: 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 579: 1456, 1456, 1456, 1456, 1456, 1456, 1456, 588: 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 609: 1456, 1456, 1456, 1456, 1456, 615: 1456, 1456, 618: 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 632: 1456, 1456, 1456, 1456, 696: 1456, 703: 1456}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4452}, - {566: 3745, 3743, 3744, 3742, 3740, 585: 4453, 800: 3741, 3739}, - {1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 532: 1457, 1457, 1457, 536: 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 549: 1457, 1457, 1457, 554: 1457, 1457, 1457, 1457, 1457, 1457, 561: 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 579: 1457, 1457, 1457, 1457, 1457, 1457, 1457, 588: 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 609: 1457, 1457, 1457, 1457, 1457, 615: 1457, 1457, 618: 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 632: 1457, 1457, 1457, 1457, 696: 1457, 703: 1457}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4467}, + {542: 4468, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {59: 4409, 118: 4405, 172: 4411, 175: 4406, 4404, 179: 4408, 558: 4416, 591: 4402, 714: 4415, 739: 4407, 4412, 4413, 744: 4414, 821: 4410, 957: 4403, 1126: 4469}, + {57: 1456, 726: 4471, 1326: 4470}, + {57: 4472}, // 1600 - {1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 532: 1458, 1458, 1458, 536: 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 549: 1458, 1458, 1458, 554: 1458, 1458, 1458, 1458, 1458, 1458, 561: 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 579: 1458, 1458, 1458, 1458, 1458, 1458, 1458, 588: 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 609: 1458, 1458, 1458, 1458, 1458, 615: 1458, 1458, 618: 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 632: 1458, 1458, 1458, 1458, 696: 1458, 703: 1458}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3842, 863: 4456}, - {9: 4457}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4458}, - {9: 2189, 57: 4459, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, + {57: 1455}, + {1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 537: 1464, 1464, 1464, 541: 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 554: 1464, 1464, 1464, 559: 1464, 1464, 1464, 1464, 1464, 565: 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 584: 1464, 1464, 1464, 1464, 1464, 1464, 1464, 593: 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 614: 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 625: 1464, 1464, 1464, 1464, 1464, 1464, 632: 1464, 637: 1464, 1464, 1464, 1464, 662: 1464, 707: 1464}, + {1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 537: 1465, 1465, 1465, 541: 1465, 1465, 3715, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 554: 1465, 1465, 1465, 559: 1465, 1465, 1465, 1465, 1465, 565: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 584: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 593: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 614: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 625: 1465, 1465, 1465, 1465, 1465, 1465, 632: 1465, 637: 1465, 1465, 1465, 1465, 662: 1465, 707: 1465}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4475}, + {571: 3768, 3766, 3767, 3765, 3763, 590: 4476, 806: 3764, 3762}, // 1605 - {1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 532: 1459, 1459, 1459, 536: 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 549: 1459, 1459, 1459, 554: 1459, 1459, 1459, 1459, 1459, 1459, 561: 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 579: 1459, 1459, 1459, 1459, 1459, 1459, 1459, 588: 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 609: 1459, 1459, 1459, 1459, 1459, 615: 1459, 1459, 618: 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 632: 1459, 1459, 1459, 1459, 696: 1459, 703: 1459}, - {9: 2190, 57: 4465, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {9: 4462}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4463}, - {9: 2189, 57: 4464, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, + {1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 537: 1466, 1466, 1466, 541: 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 554: 1466, 1466, 1466, 559: 1466, 1466, 1466, 1466, 1466, 565: 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 584: 1466, 1466, 1466, 1466, 1466, 1466, 1466, 593: 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 614: 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 625: 1466, 1466, 1466, 1466, 1466, 1466, 632: 1466, 637: 1466, 1466, 1466, 1466, 662: 1466, 707: 1466}, + {1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 537: 1467, 1467, 1467, 541: 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 554: 1467, 1467, 1467, 559: 1467, 1467, 1467, 1467, 1467, 565: 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 584: 1467, 1467, 1467, 1467, 1467, 1467, 1467, 593: 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 614: 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 625: 1467, 1467, 1467, 1467, 1467, 1467, 632: 1467, 637: 1467, 1467, 1467, 1467, 662: 1467, 707: 1467}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3865, 869: 4479}, + {9: 4480}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4481}, // 1610 - {1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 532: 1460, 1460, 1460, 536: 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 549: 1460, 1460, 1460, 554: 1460, 1460, 1460, 1460, 1460, 1460, 561: 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 579: 1460, 1460, 1460, 1460, 1460, 1460, 1460, 588: 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 609: 1460, 1460, 1460, 1460, 1460, 615: 1460, 1460, 618: 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 632: 1460, 1460, 1460, 1460, 696: 1460, 703: 1460}, - {1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 532: 1461, 1461, 1461, 536: 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 549: 1461, 1461, 1461, 554: 1461, 1461, 1461, 1461, 1461, 1461, 561: 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 579: 1461, 1461, 1461, 1461, 1461, 1461, 1461, 588: 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 609: 1461, 1461, 1461, 1461, 1461, 615: 1461, 1461, 618: 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 632: 1461, 1461, 1461, 1461, 696: 1461, 703: 1461}, - {1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 532: 1463, 1463, 1463, 536: 1463, 1463, 3693, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 549: 1463, 1463, 1463, 554: 1463, 1463, 1463, 1463, 1463, 1463, 561: 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 579: 1463, 1463, 1463, 1463, 1463, 1463, 1463, 588: 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 609: 1463, 1463, 1463, 1463, 1463, 615: 1463, 1463, 618: 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 632: 1463, 1463, 1463, 1463, 696: 1463, 703: 1463}, - {1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 532: 1465, 1465, 1465, 536: 1465, 1465, 3693, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 549: 1465, 1465, 1465, 554: 1465, 1465, 1465, 1465, 1465, 1465, 561: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 579: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 588: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 609: 1465, 1465, 1465, 1465, 1465, 615: 1465, 1465, 618: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 632: 1465, 1465, 1465, 1465, 696: 1465, 703: 1465}, - {1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 532: 1466, 1466, 1466, 536: 1466, 1466, 3693, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 549: 1466, 1466, 1466, 554: 1466, 1466, 1466, 1466, 1466, 1466, 561: 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 579: 1466, 1466, 1466, 1466, 1466, 1466, 1466, 588: 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 609: 1466, 1466, 1466, 1466, 1466, 615: 1466, 1466, 618: 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 632: 1466, 1466, 1466, 1466, 696: 1466, 703: 1466}, + {9: 2203, 57: 4482, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 537: 1468, 1468, 1468, 541: 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 554: 1468, 1468, 1468, 559: 1468, 1468, 1468, 1468, 1468, 565: 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 584: 1468, 1468, 1468, 1468, 1468, 1468, 1468, 593: 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 614: 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 625: 1468, 1468, 1468, 1468, 1468, 1468, 632: 1468, 637: 1468, 1468, 1468, 1468, 662: 1468, 707: 1468}, + {9: 2204, 57: 4488, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {9: 4485}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4486}, // 1615 - {1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 532: 1467, 1467, 1467, 536: 1467, 1467, 3693, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 549: 1467, 1467, 1467, 554: 1467, 1467, 1467, 1467, 1467, 1467, 561: 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 579: 1467, 1467, 1467, 1467, 1467, 1467, 1467, 588: 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 609: 1467, 1467, 1467, 1467, 1467, 615: 1467, 1467, 618: 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 632: 1467, 1467, 1467, 1467, 696: 1467, 703: 1467}, - {1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 532: 1468, 1468, 1468, 536: 1468, 1468, 3693, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 549: 1468, 1468, 1468, 554: 1468, 1468, 1468, 1468, 1468, 1468, 561: 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 579: 1468, 1468, 1468, 1468, 1468, 1468, 1468, 588: 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 609: 1468, 1468, 1468, 1468, 1468, 615: 1468, 1468, 618: 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 632: 1468, 1468, 1468, 1468, 696: 1468, 703: 1468}, - {533: 4474}, - {533: 4473}, - {1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 532: 1448, 1448, 1448, 536: 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 549: 1448, 1448, 1448, 554: 1448, 1448, 1448, 1448, 1448, 1448, 561: 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 579: 1448, 1448, 1448, 1448, 1448, 1448, 1448, 588: 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 609: 1448, 1448, 1448, 1448, 1448, 615: 1448, 1448, 618: 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 632: 1448, 1448, 1448, 1448, 696: 1448, 703: 1448}, + {9: 2203, 57: 4487, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 537: 1469, 1469, 1469, 541: 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 554: 1469, 1469, 1469, 559: 1469, 1469, 1469, 1469, 1469, 565: 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 584: 1469, 1469, 1469, 1469, 1469, 1469, 1469, 593: 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 614: 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 625: 1469, 1469, 1469, 1469, 1469, 1469, 632: 1469, 637: 1469, 1469, 1469, 1469, 662: 1469, 707: 1469}, + {1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 537: 1470, 1470, 1470, 541: 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 554: 1470, 1470, 1470, 559: 1470, 1470, 1470, 1470, 1470, 565: 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 584: 1470, 1470, 1470, 1470, 1470, 1470, 1470, 593: 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 614: 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 625: 1470, 1470, 1470, 1470, 1470, 1470, 632: 1470, 637: 1470, 1470, 1470, 1470, 662: 1470, 707: 1470}, + {1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 537: 1472, 1472, 1472, 541: 1472, 1472, 3715, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 554: 1472, 1472, 1472, 559: 1472, 1472, 1472, 1472, 1472, 565: 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 584: 1472, 1472, 1472, 1472, 1472, 1472, 1472, 593: 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 614: 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 625: 1472, 1472, 1472, 1472, 1472, 1472, 632: 1472, 637: 1472, 1472, 1472, 1472, 662: 1472, 707: 1472}, + {1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 537: 1474, 1474, 1474, 541: 1474, 1474, 3715, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 554: 1474, 1474, 1474, 559: 1474, 1474, 1474, 1474, 1474, 565: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 584: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 593: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 614: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 625: 1474, 1474, 1474, 1474, 1474, 1474, 632: 1474, 637: 1474, 1474, 1474, 1474, 662: 1474, 707: 1474}, // 1620 - {1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 532: 1449, 1449, 1449, 536: 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 549: 1449, 1449, 1449, 554: 1449, 1449, 1449, 1449, 1449, 1449, 561: 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 579: 1449, 1449, 1449, 1449, 1449, 1449, 1449, 588: 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 609: 1449, 1449, 1449, 1449, 1449, 615: 1449, 1449, 618: 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 632: 1449, 1449, 1449, 1449, 696: 1449, 703: 1449}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4476, 3051, 3052, 3050}, - {1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 4477, 1480, 1480, 1480, 536: 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 549: 1480, 1480, 1480, 554: 1480, 1480, 1480, 1480, 1480, 1480, 561: 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 579: 1480, 1480, 1480, 1480, 1480, 1480, 1480, 588: 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 609: 1480, 1480, 1480, 1480, 1480, 615: 1480, 1480, 618: 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 632: 1480, 1480, 1480, 1480, 696: 1480, 703: 1480, 716: 3906, 718: 1480, 1480}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 2184, 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3842, 863: 4345, 921: 4478}, - {57: 4479}, + {1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 537: 1475, 1475, 1475, 541: 1475, 1475, 3715, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 554: 1475, 1475, 1475, 559: 1475, 1475, 1475, 1475, 1475, 565: 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 584: 1475, 1475, 1475, 1475, 1475, 1475, 1475, 593: 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 614: 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 625: 1475, 1475, 1475, 1475, 1475, 1475, 632: 1475, 637: 1475, 1475, 1475, 1475, 662: 1475, 707: 1475}, + {1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 537: 1476, 1476, 1476, 541: 1476, 1476, 3715, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 554: 1476, 1476, 1476, 559: 1476, 1476, 1476, 1476, 1476, 565: 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 584: 1476, 1476, 1476, 1476, 1476, 1476, 1476, 593: 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 614: 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 625: 1476, 1476, 1476, 1476, 1476, 1476, 632: 1476, 637: 1476, 1476, 1476, 1476, 662: 1476, 707: 1476}, + {1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 537: 1477, 1477, 1477, 541: 1477, 1477, 3715, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 554: 1477, 1477, 1477, 559: 1477, 1477, 1477, 1477, 1477, 565: 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 584: 1477, 1477, 1477, 1477, 1477, 1477, 1477, 593: 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 614: 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 625: 1477, 1477, 1477, 1477, 1477, 1477, 632: 1477, 637: 1477, 1477, 1477, 1477, 662: 1477, 707: 1477}, + {538: 4497}, + {538: 4496}, // 1625 - {1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 532: 1312, 1312, 1312, 536: 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 549: 1312, 1312, 1312, 554: 1312, 1312, 1312, 1312, 1312, 1312, 561: 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 579: 1312, 1312, 1312, 1312, 1312, 1312, 1312, 588: 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 609: 1312, 1312, 1312, 1312, 1312, 615: 1312, 1312, 618: 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 632: 1312, 1312, 1312, 1312, 696: 1312, 703: 1312}, - {1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 532: 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 548: 1519, 1519, 1519, 1519, 554: 1519, 1519, 1519, 1519, 1519, 1519, 561: 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 579: 1519, 1519, 1519, 1519, 1519, 1519, 1519, 588: 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 609: 1519, 1519, 1519, 1519, 1519, 615: 1519, 1519, 618: 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 632: 1519, 1519, 1519, 1519, 696: 1519, 701: 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519}, - {1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 532: 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 548: 1516, 1516, 1516, 1516, 554: 1516, 1516, 1516, 1516, 1516, 1516, 561: 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 579: 1516, 1516, 1516, 1516, 1516, 1516, 1516, 588: 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 609: 1516, 1516, 1516, 1516, 1516, 615: 1516, 1516, 618: 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 632: 1516, 1516, 1516, 1516, 696: 1516, 701: 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516}, - {1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 532: 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 548: 1515, 1515, 1515, 1515, 554: 1515, 1515, 1515, 1515, 1515, 1515, 561: 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 579: 1515, 1515, 1515, 1515, 1515, 1515, 1515, 588: 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 609: 1515, 1515, 1515, 1515, 1515, 615: 1515, 1515, 618: 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 632: 1515, 1515, 1515, 1515, 696: 1515, 701: 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515}, - {1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 532: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 548: 1513, 1513, 1513, 1513, 554: 1513, 1513, 1513, 1513, 1513, 1513, 561: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 579: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 588: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 609: 1513, 1513, 1513, 1513, 1513, 615: 1513, 1513, 618: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 632: 1513, 1513, 1513, 1513, 696: 1513, 701: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513}, + {1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 537: 1457, 1457, 1457, 541: 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 554: 1457, 1457, 1457, 559: 1457, 1457, 1457, 1457, 1457, 565: 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 584: 1457, 1457, 1457, 1457, 1457, 1457, 1457, 593: 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 614: 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 625: 1457, 1457, 1457, 1457, 1457, 1457, 632: 1457, 637: 1457, 1457, 1457, 1457, 662: 1457, 707: 1457}, + {1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 537: 1458, 1458, 1458, 541: 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 554: 1458, 1458, 1458, 559: 1458, 1458, 1458, 1458, 1458, 565: 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 584: 1458, 1458, 1458, 1458, 1458, 1458, 1458, 593: 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 614: 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 625: 1458, 1458, 1458, 1458, 1458, 1458, 632: 1458, 637: 1458, 1458, 1458, 1458, 662: 1458, 707: 1458}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4499, 3068, 3069, 3067}, + {1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 4500, 1489, 1489, 1489, 541: 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 554: 1489, 1489, 1489, 559: 1489, 1489, 1489, 1489, 1489, 565: 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 584: 1489, 1489, 1489, 1489, 1489, 1489, 1489, 593: 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 614: 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 625: 1489, 1489, 1489, 1489, 1489, 1489, 632: 1489, 637: 1489, 1489, 1489, 1489, 662: 1489, 707: 1489, 720: 3929, 723: 1489, 1489}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 2198, 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3865, 869: 4368, 927: 4501}, // 1630 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 715: 4486, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4485}, - {57: 4490, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4487}, - {57: 4488, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 532: 1158, 1158, 1158, 536: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 549: 1158, 1158, 1158, 554: 1158, 1158, 1158, 1158, 1158, 1158, 561: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 579: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 588: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 609: 1158, 1158, 1158, 1158, 1158, 615: 1158, 1158, 618: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 632: 1158, 1158, 1158, 1158, 696: 1158, 703: 1158, 820: 4064, 832: 4182, 844: 4489}, + {57: 4502}, + {1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 537: 1320, 1320, 1320, 541: 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 554: 1320, 1320, 1320, 559: 1320, 1320, 1320, 1320, 1320, 565: 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 584: 1320, 1320, 1320, 1320, 1320, 1320, 1320, 593: 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 614: 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 625: 1320, 1320, 1320, 1320, 1320, 1320, 632: 1320, 637: 1320, 1320, 1320, 1320, 662: 1320, 707: 1320}, + {1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 537: 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 553: 1528, 1528, 1528, 1528, 559: 1528, 1528, 1528, 1528, 1528, 565: 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 584: 1528, 1528, 1528, 1528, 1528, 1528, 1528, 593: 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 614: 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 625: 1528, 1528, 1528, 1528, 1528, 1528, 632: 1528, 637: 1528, 1528, 1528, 1528, 662: 1528, 706: 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528}, + {1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 537: 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 553: 1525, 1525, 1525, 1525, 559: 1525, 1525, 1525, 1525, 1525, 565: 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 584: 1525, 1525, 1525, 1525, 1525, 1525, 1525, 593: 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 614: 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 625: 1525, 1525, 1525, 1525, 1525, 1525, 632: 1525, 637: 1525, 1525, 1525, 1525, 662: 1525, 706: 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525}, + {1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 537: 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 553: 1524, 1524, 1524, 1524, 559: 1524, 1524, 1524, 1524, 1524, 565: 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 584: 1524, 1524, 1524, 1524, 1524, 1524, 1524, 593: 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 614: 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 625: 1524, 1524, 1524, 1524, 1524, 1524, 632: 1524, 637: 1524, 1524, 1524, 1524, 662: 1524, 706: 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524}, // 1635 - {1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 532: 1320, 1320, 1320, 536: 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 549: 1320, 1320, 1320, 554: 1320, 1320, 1320, 1320, 1320, 1320, 561: 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 579: 1320, 1320, 1320, 1320, 1320, 1320, 1320, 588: 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 609: 1320, 1320, 1320, 1320, 1320, 615: 1320, 1320, 618: 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 632: 1320, 1320, 1320, 1320, 696: 1320, 703: 1320}, - {1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 532: 1158, 1158, 1158, 536: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 549: 1158, 1158, 1158, 554: 1158, 1158, 1158, 1158, 1158, 1158, 561: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 579: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 588: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 609: 1158, 1158, 1158, 1158, 1158, 615: 1158, 1158, 618: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 632: 1158, 1158, 1158, 1158, 696: 1158, 703: 1158, 820: 4064, 832: 4182, 844: 4491}, - {1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 532: 1321, 1321, 1321, 536: 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 549: 1321, 1321, 1321, 554: 1321, 1321, 1321, 1321, 1321, 1321, 561: 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 579: 1321, 1321, 1321, 1321, 1321, 1321, 1321, 588: 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 609: 1321, 1321, 1321, 1321, 1321, 615: 1321, 1321, 618: 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 632: 1321, 1321, 1321, 1321, 696: 1321, 703: 1321}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 715: 4494, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4493}, - {9: 4504, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, + {1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 537: 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 553: 1522, 1522, 1522, 1522, 559: 1522, 1522, 1522, 1522, 1522, 565: 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 584: 1522, 1522, 1522, 1522, 1522, 1522, 1522, 593: 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 614: 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 625: 1522, 1522, 1522, 1522, 1522, 1522, 632: 1522, 637: 1522, 1522, 1522, 1522, 662: 1522, 706: 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 721: 4509, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4508}, + {57: 4513, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4510}, + {57: 4511, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, // 1640 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4495}, - {9: 4496, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 715: 4498, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4497}, - {57: 4502, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4499}, + {1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 537: 1166, 1166, 1166, 541: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 554: 1166, 1166, 1166, 559: 1166, 1166, 1166, 1166, 1166, 565: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 584: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 593: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 614: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 625: 1166, 1166, 1166, 1166, 1166, 1166, 632: 1166, 637: 1166, 1166, 1166, 1166, 662: 1166, 707: 1166, 826: 4087, 838: 4205, 850: 4512}, + {1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 537: 1328, 1328, 1328, 541: 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 554: 1328, 1328, 1328, 559: 1328, 1328, 1328, 1328, 1328, 565: 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 584: 1328, 1328, 1328, 1328, 1328, 1328, 1328, 593: 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 614: 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 625: 1328, 1328, 1328, 1328, 1328, 1328, 632: 1328, 637: 1328, 1328, 1328, 1328, 662: 1328, 707: 1328}, + {1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 537: 1166, 1166, 1166, 541: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 554: 1166, 1166, 1166, 559: 1166, 1166, 1166, 1166, 1166, 565: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 584: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 593: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 614: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 625: 1166, 1166, 1166, 1166, 1166, 1166, 632: 1166, 637: 1166, 1166, 1166, 1166, 662: 1166, 707: 1166, 826: 4087, 838: 4205, 850: 4514}, + {1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 537: 1329, 1329, 1329, 541: 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 554: 1329, 1329, 1329, 559: 1329, 1329, 1329, 1329, 1329, 565: 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 584: 1329, 1329, 1329, 1329, 1329, 1329, 1329, 593: 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 614: 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 625: 1329, 1329, 1329, 1329, 1329, 1329, 632: 1329, 637: 1329, 1329, 1329, 1329, 662: 1329, 707: 1329}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 721: 4517, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4516}, // 1645 - {57: 4500, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 532: 1158, 1158, 1158, 536: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 549: 1158, 1158, 1158, 554: 1158, 1158, 1158, 1158, 1158, 1158, 561: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 579: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 588: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 609: 1158, 1158, 1158, 1158, 1158, 615: 1158, 1158, 618: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 632: 1158, 1158, 1158, 1158, 696: 1158, 703: 1158, 820: 4064, 832: 4182, 844: 4501}, - {1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 532: 1316, 1316, 1316, 536: 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 549: 1316, 1316, 1316, 554: 1316, 1316, 1316, 1316, 1316, 1316, 561: 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 579: 1316, 1316, 1316, 1316, 1316, 1316, 1316, 588: 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 609: 1316, 1316, 1316, 1316, 1316, 615: 1316, 1316, 618: 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 632: 1316, 1316, 1316, 1316, 696: 1316, 703: 1316}, - {1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 532: 1158, 1158, 1158, 536: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 549: 1158, 1158, 1158, 554: 1158, 1158, 1158, 1158, 1158, 1158, 561: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 579: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 588: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 609: 1158, 1158, 1158, 1158, 1158, 615: 1158, 1158, 618: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 632: 1158, 1158, 1158, 1158, 696: 1158, 703: 1158, 820: 4064, 832: 4182, 844: 4503}, - {1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 532: 1318, 1318, 1318, 536: 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 549: 1318, 1318, 1318, 554: 1318, 1318, 1318, 1318, 1318, 1318, 561: 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 579: 1318, 1318, 1318, 1318, 1318, 1318, 1318, 588: 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 609: 1318, 1318, 1318, 1318, 1318, 615: 1318, 1318, 618: 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 632: 1318, 1318, 1318, 1318, 696: 1318, 703: 1318}, + {9: 4527, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4518}, + {9: 4519, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 721: 4521, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4520}, + {57: 4525, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, // 1650 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 715: 4506, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4505}, - {57: 4510, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4507}, - {57: 4508, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 532: 1158, 1158, 1158, 536: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 549: 1158, 1158, 1158, 554: 1158, 1158, 1158, 1158, 1158, 1158, 561: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 579: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 588: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 609: 1158, 1158, 1158, 1158, 1158, 615: 1158, 1158, 618: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 632: 1158, 1158, 1158, 1158, 696: 1158, 703: 1158, 820: 4064, 832: 4182, 844: 4509}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4522}, + {57: 4523, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 537: 1166, 1166, 1166, 541: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 554: 1166, 1166, 1166, 559: 1166, 1166, 1166, 1166, 1166, 565: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 584: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 593: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 614: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 625: 1166, 1166, 1166, 1166, 1166, 1166, 632: 1166, 637: 1166, 1166, 1166, 1166, 662: 1166, 707: 1166, 826: 4087, 838: 4205, 850: 4524}, + {1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 537: 1324, 1324, 1324, 541: 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 554: 1324, 1324, 1324, 559: 1324, 1324, 1324, 1324, 1324, 565: 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 584: 1324, 1324, 1324, 1324, 1324, 1324, 1324, 593: 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 614: 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 625: 1324, 1324, 1324, 1324, 1324, 1324, 632: 1324, 637: 1324, 1324, 1324, 1324, 662: 1324, 707: 1324}, + {1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 537: 1166, 1166, 1166, 541: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 554: 1166, 1166, 1166, 559: 1166, 1166, 1166, 1166, 1166, 565: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 584: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 593: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 614: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 625: 1166, 1166, 1166, 1166, 1166, 1166, 632: 1166, 637: 1166, 1166, 1166, 1166, 662: 1166, 707: 1166, 826: 4087, 838: 4205, 850: 4526}, // 1655 - {1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 532: 1317, 1317, 1317, 536: 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 549: 1317, 1317, 1317, 554: 1317, 1317, 1317, 1317, 1317, 1317, 561: 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 579: 1317, 1317, 1317, 1317, 1317, 1317, 1317, 588: 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 609: 1317, 1317, 1317, 1317, 1317, 615: 1317, 1317, 618: 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 632: 1317, 1317, 1317, 1317, 696: 1317, 703: 1317}, - {1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 532: 1158, 1158, 1158, 536: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 549: 1158, 1158, 1158, 554: 1158, 1158, 1158, 1158, 1158, 1158, 561: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 579: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 588: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 609: 1158, 1158, 1158, 1158, 1158, 615: 1158, 1158, 618: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 632: 1158, 1158, 1158, 1158, 696: 1158, 703: 1158, 820: 4064, 832: 4182, 844: 4511}, - {1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 532: 1319, 1319, 1319, 536: 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 549: 1319, 1319, 1319, 554: 1319, 1319, 1319, 1319, 1319, 1319, 561: 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 579: 1319, 1319, 1319, 1319, 1319, 1319, 1319, 588: 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 609: 1319, 1319, 1319, 1319, 1319, 615: 1319, 1319, 618: 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 632: 1319, 1319, 1319, 1319, 696: 1319, 703: 1319}, - {118: 3767, 127: 3775, 133: 3763, 137: 3760, 3762, 3759, 3761, 3765, 3766, 3771, 3770, 3769, 3773, 3774, 3768, 3772, 3764, 886: 4513}, - {9: 4514}, + {1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 537: 1326, 1326, 1326, 541: 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 554: 1326, 1326, 1326, 559: 1326, 1326, 1326, 1326, 1326, 565: 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 584: 1326, 1326, 1326, 1326, 1326, 1326, 1326, 593: 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 614: 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 625: 1326, 1326, 1326, 1326, 1326, 1326, 632: 1326, 637: 1326, 1326, 1326, 1326, 662: 1326, 707: 1326}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 721: 4529, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4528}, + {57: 4533, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4530}, + {57: 4531, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, // 1660 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4515}, - {9: 4516, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4517}, - {57: 4518, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 532: 1366, 1366, 1366, 536: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 549: 1366, 1366, 1366, 554: 1366, 1366, 1366, 1366, 1366, 1366, 561: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 579: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 588: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 609: 1366, 1366, 1366, 1366, 1366, 615: 1366, 1366, 618: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 632: 1366, 1366, 1366, 1366, 696: 1366, 703: 1366}, + {1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 537: 1166, 1166, 1166, 541: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 554: 1166, 1166, 1166, 559: 1166, 1166, 1166, 1166, 1166, 565: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 584: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 593: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 614: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 625: 1166, 1166, 1166, 1166, 1166, 1166, 632: 1166, 637: 1166, 1166, 1166, 1166, 662: 1166, 707: 1166, 826: 4087, 838: 4205, 850: 4532}, + {1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 537: 1325, 1325, 1325, 541: 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 554: 1325, 1325, 1325, 559: 1325, 1325, 1325, 1325, 1325, 565: 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 584: 1325, 1325, 1325, 1325, 1325, 1325, 1325, 593: 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 614: 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 625: 1325, 1325, 1325, 1325, 1325, 1325, 632: 1325, 637: 1325, 1325, 1325, 1325, 662: 1325, 707: 1325}, + {1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 537: 1166, 1166, 1166, 541: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 554: 1166, 1166, 1166, 559: 1166, 1166, 1166, 1166, 1166, 565: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 584: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 593: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 614: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 625: 1166, 1166, 1166, 1166, 1166, 1166, 632: 1166, 637: 1166, 1166, 1166, 1166, 662: 1166, 707: 1166, 826: 4087, 838: 4205, 850: 4534}, + {1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 537: 1327, 1327, 1327, 541: 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 554: 1327, 1327, 1327, 559: 1327, 1327, 1327, 1327, 1327, 565: 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 584: 1327, 1327, 1327, 1327, 1327, 1327, 1327, 593: 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 614: 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 625: 1327, 1327, 1327, 1327, 1327, 1327, 632: 1327, 637: 1327, 1327, 1327, 1327, 662: 1327, 707: 1327}, + {118: 3790, 127: 3798, 133: 3786, 137: 3783, 3785, 3782, 3784, 3788, 3789, 3794, 3793, 3792, 3796, 3797, 3791, 3795, 3787, 892: 4536}, // 1665 - {118: 3767, 127: 3775, 133: 3763, 137: 3760, 3762, 3759, 3761, 3765, 3766, 3771, 3770, 3769, 3773, 3774, 3768, 3772, 3764, 886: 4520}, - {9: 4521}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4522}, - {9: 4523, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4524}, + {9: 4537}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4538}, + {9: 4539, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4540}, + {57: 4541, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, // 1670 - {57: 4525, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 532: 1367, 1367, 1367, 536: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 549: 1367, 1367, 1367, 554: 1367, 1367, 1367, 1367, 1367, 1367, 561: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 579: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 588: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 609: 1367, 1367, 1367, 1367, 1367, 615: 1367, 1367, 618: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 632: 1367, 1367, 1367, 1367, 696: 1367, 703: 1367}, - {175: 4529, 4528, 179: 4530, 185: 4531, 1368: 4527}, - {9: 4532}, - {9: 1356}, + {1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 537: 1374, 1374, 1374, 541: 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 554: 1374, 1374, 1374, 559: 1374, 1374, 1374, 1374, 1374, 565: 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 584: 1374, 1374, 1374, 1374, 1374, 1374, 1374, 593: 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 614: 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 625: 1374, 1374, 1374, 1374, 1374, 1374, 632: 1374, 637: 1374, 1374, 1374, 1374, 662: 1374, 707: 1374}, + {118: 3790, 127: 3798, 133: 3786, 137: 3783, 3785, 3782, 3784, 3788, 3789, 3794, 3793, 3792, 3796, 3797, 3791, 3795, 3787, 892: 4543}, + {9: 4544}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4545}, + {9: 4546, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, // 1675 - {9: 1355}, - {9: 1354}, - {9: 1353}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4533}, - {57: 4534, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4547}, + {57: 4548, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 537: 1375, 1375, 1375, 541: 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 554: 1375, 1375, 1375, 559: 1375, 1375, 1375, 1375, 1375, 565: 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 584: 1375, 1375, 1375, 1375, 1375, 1375, 1375, 593: 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 614: 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 625: 1375, 1375, 1375, 1375, 1375, 1375, 632: 1375, 637: 1375, 1375, 1375, 1375, 662: 1375, 707: 1375}, + {175: 4552, 4551, 179: 4553, 185: 4554, 1375: 4550}, + {9: 4555}, // 1680 - {1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 532: 1373, 1373, 1373, 536: 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 549: 1373, 1373, 1373, 554: 1373, 1373, 1373, 1373, 1373, 1373, 561: 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 579: 1373, 1373, 1373, 1373, 1373, 1373, 1373, 588: 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 609: 1373, 1373, 1373, 1373, 1373, 615: 1373, 1373, 618: 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 632: 1373, 1373, 1373, 1373, 696: 1373, 703: 1373}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 4536}, - {9: 4537}, - {543: 4541, 4542, 560: 3037, 799: 4538, 825: 4540, 911: 4539}, - {2225, 2225, 6: 2225, 2225, 2225, 2225, 15: 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 57: 2225, 86: 2225, 88: 2225, 90: 2225, 2225, 95: 2225, 2225, 98: 2225, 2225, 2225, 2225, 103: 2225, 133: 2225, 163: 2225, 2225, 2225, 2225, 535: 2225, 538: 2225, 2225, 553: 2225, 2225, 556: 2225, 563: 2225, 565: 2225, 709: 2225, 2225, 720: 2225}, + {9: 1364}, + {9: 1363}, + {9: 1362}, + {9: 1361}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4556}, // 1685 - {57: 4545}, - {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, 57: 168, 86: 168, 88: 168, 90: 168, 168, 95: 168, 168, 98: 168, 168, 168, 168, 103: 168, 535: 168, 538: 168, 168, 553: 168, 565: 168, 709: 168, 168, 720: 168}, - {560: 3037, 799: 4538, 825: 4544}, - {560: 3037, 799: 4543}, - {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, 57: 166, 86: 166, 88: 166, 90: 166, 166, 95: 166, 166, 98: 166, 166, 166, 166, 103: 166, 535: 166, 538: 166, 166, 553: 166, 565: 166, 709: 166, 166, 720: 166}, + {57: 4557, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 537: 1381, 1381, 1381, 541: 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 554: 1381, 1381, 1381, 559: 1381, 1381, 1381, 1381, 1381, 565: 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 584: 1381, 1381, 1381, 1381, 1381, 1381, 1381, 593: 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 614: 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 625: 1381, 1381, 1381, 1381, 1381, 1381, 632: 1381, 637: 1381, 1381, 1381, 1381, 662: 1381, 707: 1381}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 4559}, + {9: 4560}, + {548: 4564, 4565, 564: 3054, 805: 4561, 833: 4563, 917: 4562}, // 1690 - {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, 57: 167, 86: 167, 88: 167, 90: 167, 167, 95: 167, 167, 98: 167, 167, 167, 167, 103: 167, 535: 167, 538: 167, 167, 553: 167, 565: 167, 709: 167, 167, 720: 167}, - {1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 532: 1344, 1344, 1344, 536: 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 549: 1344, 1344, 1344, 554: 1344, 1344, 1344, 1344, 1344, 1344, 561: 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 579: 1344, 1344, 1344, 1344, 1344, 1344, 1344, 588: 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 609: 1344, 1344, 1344, 1344, 1344, 615: 1344, 1344, 618: 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 632: 1344, 1344, 1344, 1344, 696: 1344, 703: 1344}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 4547}, - {57: 4548}, - {1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 532: 1345, 1345, 1345, 536: 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 549: 1345, 1345, 1345, 554: 1345, 1345, 1345, 1345, 1345, 1345, 561: 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 579: 1345, 1345, 1345, 1345, 1345, 1345, 1345, 588: 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 609: 1345, 1345, 1345, 1345, 1345, 615: 1345, 1345, 618: 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 632: 1345, 1345, 1345, 1345, 696: 1345, 703: 1345}, + {2239, 2239, 6: 2239, 2239, 2239, 2239, 15: 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 57: 2239, 86: 2239, 88: 2239, 90: 2239, 2239, 95: 2239, 2239, 98: 2239, 2239, 2239, 2239, 103: 2239, 133: 2239, 163: 2239, 2239, 2239, 2239, 540: 2239, 543: 2239, 2239, 558: 2239, 2239, 562: 2239, 568: 2239, 570: 2239, 714: 2239, 2239, 725: 2239}, + {57: 4568}, + {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, 57: 168, 86: 168, 88: 168, 90: 168, 168, 95: 168, 168, 98: 168, 168, 168, 168, 103: 168, 540: 168, 543: 168, 168, 558: 168, 570: 168, 714: 168, 168, 725: 168}, + {564: 3054, 805: 4561, 833: 4567}, + {564: 3054, 805: 4566}, // 1695 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4550}, - {57: 4551, 537: 4552, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 532: 1361, 1361, 1361, 536: 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 549: 1361, 1361, 1361, 554: 1361, 1361, 1361, 1361, 1361, 1361, 561: 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 579: 1361, 1361, 1361, 1361, 1361, 1361, 1361, 588: 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 609: 1361, 1361, 1361, 1361, 1361, 615: 1361, 1361, 618: 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 632: 1361, 1361, 1361, 1361, 696: 1361, 703: 1361}, - {553: 4393, 586: 4554, 709: 4392, 951: 4553}, - {531: 4408, 841: 4557}, + {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, 57: 166, 86: 166, 88: 166, 90: 166, 166, 95: 166, 166, 98: 166, 166, 166, 166, 103: 166, 540: 166, 543: 166, 166, 558: 166, 570: 166, 714: 166, 166, 725: 166}, + {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, 57: 167, 86: 167, 88: 167, 90: 167, 167, 95: 167, 167, 98: 167, 167, 167, 167, 103: 167, 540: 167, 543: 167, 167, 558: 167, 570: 167, 714: 167, 167, 725: 167}, + {1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 537: 1352, 1352, 1352, 541: 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 554: 1352, 1352, 1352, 559: 1352, 1352, 1352, 1352, 1352, 565: 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 584: 1352, 1352, 1352, 1352, 1352, 1352, 1352, 593: 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 614: 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 625: 1352, 1352, 1352, 1352, 1352, 1352, 632: 1352, 637: 1352, 1352, 1352, 1352, 662: 1352, 707: 1352}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 4570}, + {57: 4571}, // 1700 - {531: 4408, 841: 4555}, - {57: 4556}, - {1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 532: 1359, 1359, 1359, 536: 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 549: 1359, 1359, 1359, 554: 1359, 1359, 1359, 1359, 1359, 1359, 561: 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 579: 1359, 1359, 1359, 1359, 1359, 1359, 1359, 588: 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 609: 1359, 1359, 1359, 1359, 1359, 615: 1359, 1359, 618: 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 632: 1359, 1359, 1359, 1359, 696: 1359, 703: 1359}, - {57: 4558}, - {1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 532: 1360, 1360, 1360, 536: 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 549: 1360, 1360, 1360, 554: 1360, 1360, 1360, 1360, 1360, 1360, 561: 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 579: 1360, 1360, 1360, 1360, 1360, 1360, 1360, 588: 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 609: 1360, 1360, 1360, 1360, 1360, 615: 1360, 1360, 618: 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 632: 1360, 1360, 1360, 1360, 696: 1360, 703: 1360}, + {1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 537: 1353, 1353, 1353, 541: 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 554: 1353, 1353, 1353, 559: 1353, 1353, 1353, 1353, 1353, 565: 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 584: 1353, 1353, 1353, 1353, 1353, 1353, 1353, 593: 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 614: 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 625: 1353, 1353, 1353, 1353, 1353, 1353, 632: 1353, 637: 1353, 1353, 1353, 1353, 662: 1353, 707: 1353}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4573}, + {57: 4574, 542: 4575, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 537: 1369, 1369, 1369, 541: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 554: 1369, 1369, 1369, 559: 1369, 1369, 1369, 1369, 1369, 565: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 584: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 593: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 614: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 625: 1369, 1369, 1369, 1369, 1369, 1369, 632: 1369, 637: 1369, 1369, 1369, 1369, 662: 1369, 707: 1369}, + {558: 4416, 591: 4577, 714: 4415, 957: 4576}, // 1705 - {1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 532: 1383, 1383, 1383, 536: 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 549: 1383, 1383, 1383, 554: 1383, 1383, 1383, 1383, 1383, 1383, 561: 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 579: 1383, 1383, 1383, 1383, 1383, 1383, 1383, 588: 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 609: 1383, 1383, 1383, 1383, 1383, 615: 1383, 1383, 618: 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 632: 1383, 1383, 1383, 1383, 696: 1383, 703: 1383}, - {1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 532: 1384, 1384, 1384, 536: 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 549: 1384, 1384, 1384, 554: 1384, 1384, 1384, 1384, 1384, 1384, 561: 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 579: 1384, 1384, 1384, 1384, 1384, 1384, 1384, 588: 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 609: 1384, 1384, 1384, 1384, 1384, 615: 1384, 1384, 618: 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 632: 1384, 1384, 1384, 1384, 696: 1384, 703: 1384}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 2184, 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3842, 863: 4345, 921: 4562}, - {57: 4563}, - {1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 532: 1380, 1380, 1380, 536: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 549: 1380, 1380, 1380, 554: 1380, 1380, 1380, 1380, 1380, 1380, 561: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 579: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 588: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 609: 1380, 1380, 1380, 1380, 1380, 615: 1380, 1380, 618: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 632: 1380, 1380, 1380, 1380, 696: 1380, 703: 1380}, + {536: 4431, 847: 4580}, + {536: 4431, 847: 4578}, + {57: 4579}, + {1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 537: 1367, 1367, 1367, 541: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 554: 1367, 1367, 1367, 559: 1367, 1367, 1367, 1367, 1367, 565: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 584: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 593: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 614: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 625: 1367, 1367, 1367, 1367, 1367, 1367, 632: 1367, 637: 1367, 1367, 1367, 1367, 662: 1367, 707: 1367}, + {57: 4581}, // 1710 - {1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 532: 1385, 1385, 1385, 536: 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 549: 1385, 1385, 1385, 554: 1385, 1385, 1385, 1385, 1385, 1385, 561: 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 579: 1385, 1385, 1385, 1385, 1385, 1385, 1385, 588: 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 609: 1385, 1385, 1385, 1385, 1385, 615: 1385, 1385, 618: 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 632: 1385, 1385, 1385, 1385, 696: 1385, 703: 1385}, - {2: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 10: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 58: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 531: 1441, 533: 1441, 1441, 1441, 1441, 540: 1441, 1441, 543: 1441, 1441, 1441, 547: 1441, 1441, 552: 1441, 1441, 560: 1441, 578: 1441, 586: 1441, 1441, 614: 1441, 617: 1441, 628: 1441, 1441, 1441, 1441, 636: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 697: 1441, 1441, 1441, 1441, 711: 1441, 715: 4174, 829: 4172, 4173, 885: 4175, 887: 4176, 912: 4566, 4177}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4567}, - {57: 4568, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 532: 1158, 1158, 1158, 536: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 549: 1158, 1158, 1158, 554: 1158, 1158, 1158, 1158, 1158, 1158, 561: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 579: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 588: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 609: 1158, 1158, 1158, 1158, 1158, 615: 1158, 1158, 618: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 632: 1158, 1158, 1158, 1158, 696: 1158, 703: 1158, 820: 4064, 832: 4182, 844: 4569}, + {1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 537: 1368, 1368, 1368, 541: 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 554: 1368, 1368, 1368, 559: 1368, 1368, 1368, 1368, 1368, 565: 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 584: 1368, 1368, 1368, 1368, 1368, 1368, 1368, 593: 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 614: 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 625: 1368, 1368, 1368, 1368, 1368, 1368, 632: 1368, 637: 1368, 1368, 1368, 1368, 662: 1368, 707: 1368}, + {1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 537: 1391, 1391, 1391, 541: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 554: 1391, 1391, 1391, 559: 1391, 1391, 1391, 1391, 1391, 565: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 584: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 593: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 614: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 625: 1391, 1391, 1391, 1391, 1391, 1391, 632: 1391, 637: 1391, 1391, 1391, 1391, 662: 1391, 707: 1391}, + {1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 537: 1392, 1392, 1392, 541: 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 554: 1392, 1392, 1392, 559: 1392, 1392, 1392, 1392, 1392, 565: 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 584: 1392, 1392, 1392, 1392, 1392, 1392, 1392, 593: 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 614: 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 625: 1392, 1392, 1392, 1392, 1392, 1392, 632: 1392, 637: 1392, 1392, 1392, 1392, 662: 1392, 707: 1392}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 2198, 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3865, 869: 4368, 927: 4585}, + {57: 4586}, // 1715 - {1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 532: 1342, 1342, 1342, 536: 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 549: 1342, 1342, 1342, 554: 1342, 1342, 1342, 1342, 1342, 1342, 561: 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 579: 1342, 1342, 1342, 1342, 1342, 1342, 1342, 588: 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 609: 1342, 1342, 1342, 1342, 1342, 615: 1342, 1342, 618: 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 632: 1342, 1342, 1342, 1342, 696: 1342, 703: 1342}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 2184, 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3842, 863: 4345, 921: 4571}, - {57: 4572}, - {1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 532: 1313, 1313, 1313, 536: 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 549: 1313, 1313, 1313, 554: 1313, 1313, 1313, 1313, 1313, 1313, 561: 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 579: 1313, 1313, 1313, 1313, 1313, 1313, 1313, 588: 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 609: 1313, 1313, 1313, 1313, 1313, 615: 1313, 1313, 618: 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 632: 1313, 1313, 1313, 1313, 696: 1313, 703: 1313}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 4574}, + {1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 537: 1388, 1388, 1388, 541: 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 554: 1388, 1388, 1388, 559: 1388, 1388, 1388, 1388, 1388, 565: 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 584: 1388, 1388, 1388, 1388, 1388, 1388, 1388, 593: 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 614: 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 625: 1388, 1388, 1388, 1388, 1388, 1388, 632: 1388, 637: 1388, 1388, 1388, 1388, 662: 1388, 707: 1388}, + {1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 537: 1393, 1393, 1393, 541: 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 554: 1393, 1393, 1393, 559: 1393, 1393, 1393, 1393, 1393, 565: 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 584: 1393, 1393, 1393, 1393, 1393, 1393, 1393, 593: 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 614: 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 625: 1393, 1393, 1393, 1393, 1393, 1393, 632: 1393, 637: 1393, 1393, 1393, 1393, 662: 1393, 707: 1393}, + {2: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 10: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 58: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 536: 1450, 538: 1450, 1450, 1450, 1450, 545: 1450, 1450, 548: 1450, 1450, 1450, 552: 1450, 1450, 557: 1450, 1450, 564: 1450, 583: 1450, 591: 1450, 1450, 624: 1450, 631: 1450, 633: 1450, 1450, 1450, 1450, 641: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 663: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 716: 1450, 721: 4197, 835: 4195, 4196, 891: 4198, 893: 4199, 918: 4589, 4200}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4590}, + {57: 4591, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, // 1720 - {57: 4575}, - {2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 532: 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 548: 2507, 2507, 2507, 2507, 554: 2507, 2507, 2507, 2507, 2507, 2507, 561: 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 579: 2507, 2507, 2507, 2507, 2507, 2507, 2507, 588: 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 609: 2507, 2507, 2507, 2507, 2507, 615: 2507, 2507, 618: 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 632: 2507, 2507, 2507, 2507, 696: 2507, 701: 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507}, - {558: 4577}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 4578}, - {2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 532: 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 548: 2508, 2508, 2508, 2508, 554: 2508, 2508, 2508, 2508, 2508, 2508, 561: 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 579: 2508, 2508, 2508, 2508, 2508, 2508, 2508, 588: 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 609: 2508, 2508, 2508, 2508, 2508, 615: 2508, 2508, 618: 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 632: 2508, 2508, 2508, 2508, 696: 2508, 701: 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508}, + {1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 537: 1166, 1166, 1166, 541: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 554: 1166, 1166, 1166, 559: 1166, 1166, 1166, 1166, 1166, 565: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 584: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 593: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 614: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 625: 1166, 1166, 1166, 1166, 1166, 1166, 632: 1166, 637: 1166, 1166, 1166, 1166, 662: 1166, 707: 1166, 826: 4087, 838: 4205, 850: 4592}, + {1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 537: 1350, 1350, 1350, 541: 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 554: 1350, 1350, 1350, 559: 1350, 1350, 1350, 1350, 1350, 565: 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 584: 1350, 1350, 1350, 1350, 1350, 1350, 1350, 593: 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 614: 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 625: 1350, 1350, 1350, 1350, 1350, 1350, 632: 1350, 637: 1350, 1350, 1350, 1350, 662: 1350, 707: 1350}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 2198, 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3865, 869: 4368, 927: 4594}, + {57: 4595}, + {1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 537: 1321, 1321, 1321, 541: 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 554: 1321, 1321, 1321, 559: 1321, 1321, 1321, 1321, 1321, 565: 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 584: 1321, 1321, 1321, 1321, 1321, 1321, 1321, 593: 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 614: 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 625: 1321, 1321, 1321, 1321, 1321, 1321, 632: 1321, 637: 1321, 1321, 1321, 1321, 662: 1321, 707: 1321}, // 1725 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3616, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 4587, 3597, 3679, 3596, 3593}, - {117: 4583, 258: 4581, 272: 4582, 1257: 4584}, - {9: 2836, 57: 2836, 93: 2836, 134: 2836, 136: 2836, 158: 2836, 712: 2836}, - {9: 2835, 57: 2835, 93: 2835, 134: 2835, 136: 2835, 158: 2835, 712: 2835}, - {9: 2834, 57: 2834, 93: 2834, 134: 2834, 136: 2834, 158: 2834, 712: 2834}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 4597}, + {57: 4598}, + {2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 537: 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 553: 2521, 2521, 2521, 2521, 559: 2521, 2521, 2521, 2521, 2521, 565: 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 584: 2521, 2521, 2521, 2521, 2521, 2521, 2521, 593: 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 614: 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 625: 2521, 2521, 2521, 2521, 2521, 2521, 632: 2521, 637: 2521, 2521, 2521, 2521, 662: 2521, 706: 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521}, + {563: 4600}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 4601}, // 1730 - {712: 4585}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3616, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 4586, 3597, 3679, 3596, 3593}, - {2, 2, 9: 2, 51: 2, 93: 2, 117: 2, 538: 3693, 696: 2, 703: 3694}, - {4, 4, 9: 4, 51: 4, 93: 4, 117: 4, 538: 3693, 696: 4, 703: 3694}, - {2: 2315, 2315, 2315, 2315, 2315, 2315, 2315, 10: 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 58: 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 531: 2315, 533: 2315, 2315, 2315, 2315, 540: 2315, 2315, 543: 2315, 2315, 2315, 547: 2315, 2315, 2315, 552: 2315, 2315, 560: 2315, 578: 2315, 586: 2315, 2315, 614: 2315, 617: 2315, 628: 2315, 2315, 2315, 2315, 636: 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 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, 697: 2315, 2315, 2315, 2315, 711: 2315, 933: 2315}, + {2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 537: 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 553: 2522, 2522, 2522, 2522, 559: 2522, 2522, 2522, 2522, 2522, 565: 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 584: 2522, 2522, 2522, 2522, 2522, 2522, 2522, 593: 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 614: 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 625: 2522, 2522, 2522, 2522, 2522, 2522, 632: 2522, 637: 2522, 2522, 2522, 2522, 662: 2522, 706: 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3638, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 4610, 3619, 3701, 3618, 3615}, + {117: 4606, 258: 4604, 272: 4605, 1263: 4607}, + {9: 2853, 57: 2853, 93: 2853, 134: 2853, 136: 2853, 158: 2853, 717: 2853}, + {9: 2852, 57: 2852, 93: 2852, 134: 2852, 136: 2852, 158: 2852, 717: 2852}, // 1735 - {229: 4591, 231: 4590, 933: 4592, 1256: 4593}, - {2833, 2833, 9: 2833, 51: 2833, 57: 2833, 93: 2833, 117: 2833, 134: 2833, 136: 2833, 696: 2833}, - {2832, 2832, 9: 2832, 51: 2832, 57: 2832, 93: 2832, 117: 2832, 134: 2832, 136: 2832, 696: 2832}, - {2831, 2831, 9: 2831, 51: 2831, 57: 2831, 93: 2831, 117: 2831, 134: 2831, 136: 2831, 696: 2831}, - {6, 6, 9: 6, 51: 6, 93: 6, 117: 6, 696: 6}, + {9: 2851, 57: 2851, 93: 2851, 134: 2851, 136: 2851, 158: 2851, 717: 2851}, + {717: 4608}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3638, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 4609, 3619, 3701, 3618, 3615}, + {2, 2, 9: 2, 51: 2, 93: 2, 117: 2, 543: 3715, 662: 2, 707: 3716}, + {4, 4, 9: 4, 51: 4, 93: 4, 117: 4, 543: 3715, 662: 4, 707: 3716}, // 1740 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 535: 4596, 628: 3682, 770: 4595, 3051, 3052, 3050, 776: 4598, 936: 4597}, - {2463, 2463, 9: 2463, 51: 2463, 93: 2463, 110: 2463, 2463, 2463, 2463, 2463, 117: 2463, 696: 2463}, - {2462, 2462, 9: 2462, 51: 2462, 93: 2462, 110: 2462, 2462, 2462, 2462, 2462, 117: 2462, 696: 2462}, - {8, 8, 9: 8, 51: 8, 93: 8, 117: 8, 696: 8}, - {7, 7, 9: 7, 51: 7, 93: 7, 117: 7, 696: 7}, + {2: 2329, 2329, 2329, 2329, 2329, 2329, 2329, 10: 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 58: 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 536: 2329, 538: 2329, 2329, 2329, 2329, 545: 2329, 2329, 548: 2329, 2329, 2329, 552: 2329, 2329, 2329, 557: 2329, 2329, 564: 2329, 583: 2329, 591: 2329, 2329, 624: 2329, 631: 2329, 633: 2329, 2329, 2329, 2329, 641: 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 663: 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 716: 2329, 940: 2329}, + {229: 4614, 231: 4613, 940: 4615, 1262: 4616}, + {2850, 2850, 9: 2850, 51: 2850, 57: 2850, 93: 2850, 117: 2850, 134: 2850, 136: 2850, 662: 2850}, + {2849, 2849, 9: 2849, 51: 2849, 57: 2849, 93: 2849, 117: 2849, 134: 2849, 136: 2849, 662: 2849}, + {2848, 2848, 9: 2848, 51: 2848, 57: 2848, 93: 2848, 117: 2848, 134: 2848, 136: 2848, 662: 2848}, // 1745 - {10, 10, 9: 10, 51: 10, 93: 10, 117: 10, 696: 10}, - {51: 3041, 93: 3042, 117: 3045, 696: 3044, 1073: 4601, 3043}, - {9, 9, 9: 9, 51: 9, 93: 9, 117: 9, 696: 9}, - {27, 27, 158: 4609, 171: 4608, 174: 4607, 458: 4610, 1042: 4606, 1329: 4603, 4605, 1352: 4604}, - {28, 28}, + {6, 6, 9: 6, 51: 6, 93: 6, 117: 6, 662: 6}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 540: 4619, 633: 3704, 777: 4618, 3068, 3069, 3067, 782: 4621, 943: 4620}, + {2477, 2477, 9: 2477, 51: 2477, 93: 2477, 110: 2477, 2477, 2477, 2477, 2477, 117: 2477, 662: 2477}, + {2476, 2476, 9: 2476, 51: 2476, 93: 2476, 110: 2476, 2476, 2476, 2476, 2476, 117: 2476, 662: 2476}, + {8, 8, 9: 8, 51: 8, 93: 8, 117: 8, 662: 8}, // 1750 - {26, 26, 9: 4626, 158: 4609, 171: 4608, 174: 4607, 1042: 4625}, + {7, 7, 9: 7, 51: 7, 93: 7, 117: 7, 662: 7}, + {10, 10, 9: 10, 51: 10, 93: 10, 117: 10, 662: 10}, + {51: 3058, 93: 3059, 117: 3062, 662: 3061, 1079: 4624, 3060}, + {9, 9, 9: 9, 51: 9, 93: 9, 117: 9, 662: 9}, + {27, 27, 158: 4632, 171: 4631, 174: 4630, 462: 4633, 1048: 4629, 1336: 4626, 4628, 1359: 4627}, + // 1755 + {28, 28}, + {26, 26, 9: 4649, 158: 4632, 171: 4631, 174: 4630, 1048: 4648}, {25, 25}, {24, 24, 9: 24, 158: 24, 171: 24, 174: 24}, - {2: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 10: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 58: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 531: 2316, 533: 2316, 2316, 2316, 2316, 540: 2316, 2316, 543: 2316, 2316, 2316, 547: 2316, 2316, 552: 2316, 2316, 555: 4588, 560: 2316, 578: 2316, 586: 2316, 2316, 614: 2316, 617: 2316, 628: 2316, 2316, 2316, 2316, 636: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 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, 697: 2316, 2316, 2316, 2316, 711: 2316, 802: 4623}, - {2: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 10: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 58: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 531: 2316, 533: 2316, 2316, 2316, 2316, 540: 2316, 2316, 543: 2316, 2316, 2316, 547: 2316, 2316, 552: 2316, 2316, 555: 4588, 560: 2316, 578: 2316, 586: 2316, 2316, 614: 2316, 617: 2316, 628: 2316, 2316, 2316, 2316, 636: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 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, 697: 2316, 2316, 2316, 2316, 711: 2316, 802: 4621}, - // 1755 - {533: 2316, 555: 4588, 641: 2316, 802: 4616}, - {410: 4613, 4612, 4614, 451: 4611, 4615}, + {2: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 10: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 58: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 536: 2330, 538: 2330, 2330, 2330, 2330, 545: 2330, 2330, 548: 2330, 2330, 2330, 552: 2330, 2330, 557: 2330, 2330, 561: 4611, 564: 2330, 583: 2330, 591: 2330, 2330, 624: 2330, 631: 2330, 633: 2330, 2330, 2330, 2330, 641: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 663: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 716: 2330, 808: 4646}, + // 1760 + {2: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 10: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 58: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 536: 2330, 538: 2330, 2330, 2330, 2330, 545: 2330, 2330, 548: 2330, 2330, 2330, 552: 2330, 2330, 557: 2330, 2330, 561: 4611, 564: 2330, 583: 2330, 591: 2330, 2330, 624: 2330, 631: 2330, 633: 2330, 2330, 2330, 2330, 641: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 663: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 716: 2330, 808: 4644}, + {538: 2330, 561: 4611, 646: 2330, 808: 4639}, + {413: 4636, 4635, 4637, 455: 4634, 4638}, {17, 17}, {16, 16}, + // 1765 {15, 15}, - // 1760 {14, 14}, {13, 13}, - {533: 4617, 641: 4618}, + {538: 4640, 646: 4641}, {19, 19, 9: 19, 158: 19, 171: 19, 174: 19}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4619}, - // 1765 - {118: 3767, 127: 3775, 133: 3763, 137: 3760, 3762, 3759, 3761, 3765, 3766, 3771, 3770, 3769, 3773, 3774, 3768, 3772, 3764, 566: 3745, 3743, 3744, 3742, 3740, 594: 3757, 3754, 3756, 3755, 3751, 3753, 3752, 3749, 3750, 3748, 3758, 800: 3741, 3739, 886: 3747, 901: 4620}, - {18, 18, 9: 18, 158: 18, 171: 18, 174: 18}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4622}, - {20, 20, 9: 20, 158: 20, 171: 20, 174: 20, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4624}, // 1770 - {21, 21, 9: 21, 158: 21, 171: 21, 174: 21, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4642}, + {118: 3790, 127: 3798, 133: 3786, 137: 3783, 3785, 3782, 3784, 3788, 3789, 3794, 3793, 3792, 3796, 3797, 3791, 3795, 3787, 571: 3768, 3766, 3767, 3765, 3763, 599: 3780, 3777, 3779, 3778, 3774, 3776, 3775, 3772, 3773, 3771, 3781, 806: 3764, 3762, 892: 3770, 907: 4643}, + {18, 18, 9: 18, 158: 18, 171: 18, 174: 18}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4645}, + {20, 20, 9: 20, 158: 20, 171: 20, 174: 20, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + // 1775 + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4647}, + {21, 21, 9: 21, 158: 21, 171: 21, 174: 21, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, {23, 23, 9: 23, 158: 23, 171: 23, 174: 23}, - {158: 4609, 171: 4608, 174: 4607, 1042: 4627}, + {158: 4632, 171: 4631, 174: 4630, 1048: 4650}, {22, 22, 9: 22, 158: 22, 171: 22, 174: 22}, - {285: 4631, 384: 4629, 894: 4630}, - // 1775 - {532: 4639, 582: 135, 1420: 4638}, - {533: 4637}, - {2: 4633, 533: 4632}, - {533: 4636}, - {533: 4634}, // 1780 - {533: 4635}, + {285: 4654, 386: 4652, 900: 4653}, + {537: 4662, 587: 135, 1427: 4661}, + {538: 4660}, + {2: 4656, 538: 4655}, + {538: 4659}, + // 1785 + {538: 4657}, + {538: 4658}, {136, 136}, {137, 137}, {138, 138}, - {582: 4645}, - // 1785 - {225: 4640}, - {731: 4641, 995: 4642}, - {185: 4643}, - {582: 134}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4644}, // 1790 - {2120, 2120, 9: 2120, 57: 2120, 530: 2120, 532: 2120, 539: 2120, 2120, 2120, 2120, 549: 2120, 2120, 2120, 554: 2120, 556: 2120, 2120, 2120, 2120, 562: 2120, 2120, 2120, 2120, 3745, 3743, 3744, 3742, 3740, 2120, 2120, 2120, 2120, 2120, 2120, 580: 2120, 2120, 2120, 2120, 585: 2120, 592: 2120, 800: 3741, 3739}, - {246: 4658, 531: 2907, 2906, 4659, 547: 2905, 552: 2891, 587: 2890, 608: 2904, 695: 2900, 713: 4657, 3019, 724: 4646, 775: 4647, 803: 2870, 806: 4648, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 2873, 817: 4654, 4653, 822: 3018, 2871, 4651, 826: 4652, 4650, 833: 2872, 839: 4649, 904: 4655, 920: 4656}, - {549: 4675, 608: 2115, 958: 4674}, - {630, 630, 539: 1013, 550: 1013, 1013, 554: 3859, 556: 3858, 564: 3857, 842: 3860, 3861}, - {632, 632, 539: 1014, 550: 1014, 1014}, + {587: 4668}, + {225: 4663}, + {736: 4664, 1001: 4665}, + {185: 4666}, + {587: 134}, // 1795 + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4667}, + {2134, 2134, 9: 2134, 57: 2134, 535: 2134, 537: 2134, 544: 2134, 2134, 2134, 2134, 554: 2134, 2134, 2134, 559: 2134, 2134, 562: 2134, 2134, 565: 2134, 567: 2134, 2134, 2134, 2134, 3768, 3766, 3767, 3765, 3763, 2134, 2134, 2134, 2134, 2134, 2134, 585: 2134, 2134, 2134, 2134, 590: 2134, 597: 2134, 806: 3764, 3762}, + {246: 4681, 536: 2924, 2923, 4682, 552: 2922, 557: 2908, 592: 2907, 613: 2921, 661: 2917, 718: 4680, 3036, 729: 4669, 781: 4670, 809: 2887, 812: 4671, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 2890, 4677, 4676, 827: 3035, 829: 2888, 4674, 4675, 4673, 839: 2889, 845: 4672, 910: 4678, 926: 4679}, + {554: 4698, 613: 2129, 964: 4697}, + {631, 631, 544: 1021, 555: 1021, 1021, 559: 3882, 562: 3881, 569: 3880, 848: 3883, 3884}, + // 1800 + {633, 633, 544: 1022, 555: 1022, 1022}, + {638, 638}, {637, 637}, {636, 636}, {635, 635}, + // 1805 {634, 634}, - {633, 633}, - // 1800 - {631, 631}, - {629, 629}, + {632, 632}, + {630, 630}, {144, 144}, - {246: 4668, 531: 2907, 2906, 4669, 547: 2905, 552: 2891, 587: 2890, 608: 2904, 695: 2900, 714: 3019, 724: 4646, 775: 4647, 803: 2870, 806: 4648, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 2873, 817: 4654, 4653, 822: 3018, 2871, 4651, 826: 4652, 4650, 833: 2872, 839: 4649, 904: 4655, 920: 4667}, - {159: 4660}, - // 1805 - {140, 140}, - {424, 424, 554: 424, 556: 424, 563: 4661, 424, 889: 4662, 4663}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4666}, - {423, 423, 57: 423, 530: 423, 532: 423, 539: 423, 542: 423, 550: 423, 423, 554: 423, 556: 423, 558: 423, 423, 562: 423, 564: 423, 571: 423, 423, 574: 423}, - {1499, 1499, 554: 1499, 556: 1499, 564: 3857, 842: 3911, 909: 4664}, + {246: 4691, 536: 2924, 2923, 4692, 552: 2922, 557: 2908, 592: 2907, 613: 2921, 661: 2917, 719: 3036, 729: 4669, 781: 4670, 809: 2887, 812: 4671, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 2890, 4677, 4676, 827: 3035, 829: 2888, 4674, 4675, 4673, 839: 2889, 845: 4672, 910: 4678, 926: 4690}, // 1810 - {1068, 1068, 554: 3859, 556: 3858, 843: 3916, 925: 4665}, + {159: 4683}, + {140, 140}, + {425, 425, 559: 425, 562: 425, 568: 4684, 425, 895: 4685, 4686}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4689}, + {424, 424, 57: 424, 535: 424, 537: 424, 544: 424, 547: 424, 555: 424, 424, 559: 424, 562: 424, 424, 565: 424, 567: 424, 569: 424, 576: 424, 424, 579: 424}, + // 1815 + {1508, 1508, 559: 1508, 562: 1508, 569: 3880, 848: 3934, 915: 4687}, + {1076, 1076, 559: 3882, 562: 3881, 849: 3939, 931: 4688}, {142, 142}, - {425, 425, 57: 425, 530: 425, 532: 425, 539: 425, 542: 425, 550: 425, 425, 554: 425, 556: 425, 558: 425, 425, 562: 425, 564: 425, 566: 3745, 3743, 3744, 3742, 3740, 425, 425, 574: 425, 800: 3741, 3739}, + {426, 426, 57: 426, 535: 426, 537: 426, 544: 426, 547: 426, 555: 426, 426, 559: 426, 562: 426, 426, 565: 426, 567: 426, 569: 426, 571: 3768, 3766, 3767, 3765, 3763, 426, 426, 579: 426, 806: 3764, 3762}, {143, 143}, - {159: 4670}, - // 1815 - {139, 139}, - {424, 424, 554: 424, 556: 424, 563: 4661, 424, 889: 4662, 4671}, - {1499, 1499, 554: 1499, 556: 1499, 564: 3857, 842: 3911, 909: 4672}, - {1068, 1068, 554: 3859, 556: 3858, 843: 3916, 925: 4673}, - {141, 141}, // 1820 - {608: 4676}, - {2: 2114, 2114, 2114, 2114, 2114, 2114, 2114, 10: 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 58: 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 531: 2114, 559: 2114, 561: 2114, 608: 2114, 643: 2114}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 4677}, - {2691, 2691, 2691, 2691, 2691, 2691, 4725, 4727, 580, 10: 4694, 15: 4744, 2446, 4742, 4681, 4746, 4733, 4762, 4729, 4726, 4728, 4731, 4732, 4734, 4741, 580, 4752, 4753, 4763, 4739, 4740, 4745, 4747, 4759, 4758, 4767, 4760, 4757, 4750, 4755, 4756, 4749, 4751, 4754, 4743, 4764, 4765, 89: 4696, 4717, 4718, 102: 4719, 208: 4699, 234: 4688, 249: 4682, 251: 4680, 253: 4703, 256: 4704, 270: 4698, 276: 4714, 290: 4692, 299: 4700, 305: 4695, 324: 4705, 331: 4701, 338: 4715, 4716, 343: 4683, 532: 4713, 535: 4724, 538: 2446, 4761, 546: 2691, 553: 2446, 557: 4685, 562: 4720, 564: 4702, 4712, 646: 4686, 702: 4691, 709: 2446, 4730, 713: 4679, 724: 4707, 727: 4693, 729: 4721, 766: 4706, 4708, 769: 4687, 774: 4697, 865: 4735, 891: 4737, 910: 4736, 931: 4738, 937: 4748, 941: 4766, 972: 4711, 986: 4709, 1020: 4684, 1028: 4689, 1110: 4723, 1285: 4690, 1309: 4710, 1315: 4722, 4678}, - {2444, 2444, 5551, 5553, 5554, 5552, 546: 5555, 1233: 5550, 1317: 5549}, + {159: 4693}, + {139, 139}, + {425, 425, 559: 425, 562: 425, 568: 4684, 425, 895: 4685, 4694}, + {1508, 1508, 559: 1508, 562: 1508, 569: 3880, 848: 3934, 915: 4695}, + {1076, 1076, 559: 3882, 562: 3881, 849: 3939, 931: 4696}, // 1825 - {546: 5523}, - {2849, 2849, 200: 5517, 546: 5518}, - {214: 5509}, - {533: 2316, 535: 2316, 555: 4588, 802: 5506}, - {533: 2316, 535: 2316, 555: 4588, 802: 5503}, + {141, 141}, + {613: 4699}, + {2: 2128, 2128, 2128, 2128, 2128, 2128, 2128, 10: 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 58: 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 536: 2128, 565: 2128, 2128, 613: 2128, 648: 2128}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 4700}, + {2708, 2708, 2708, 2708, 2708, 2708, 4748, 4750, 581, 10: 4717, 15: 4767, 2460, 4765, 4704, 4769, 4756, 4785, 4752, 4749, 4751, 4754, 4755, 4757, 4764, 581, 4775, 4776, 4786, 4762, 4763, 4768, 4770, 4782, 4781, 4790, 4783, 4780, 4773, 4778, 4779, 4772, 4774, 4777, 4766, 4787, 4788, 89: 4719, 4740, 4741, 102: 4742, 210: 4722, 234: 4711, 249: 4705, 251: 4703, 253: 4726, 256: 4727, 270: 4721, 276: 4737, 290: 4715, 299: 4723, 305: 4718, 324: 4728, 332: 4724, 339: 4738, 4739, 344: 4706, 537: 4736, 540: 4747, 543: 2460, 4784, 551: 2708, 558: 2460, 560: 4708, 567: 4743, 569: 4725, 4735, 651: 4709, 709: 4714, 714: 2460, 4753, 718: 4702, 729: 4730, 732: 4716, 734: 4744, 772: 4729, 4731, 775: 4710, 4720, 871: 4758, 897: 4760, 916: 4759, 938: 4761, 944: 4771, 948: 4789, 978: 4734, 992: 4732, 1026: 4707, 1034: 4712, 1116: 4746, 1291: 4713, 1315: 4733, 1321: 4745, 4701}, // 1830 - {2777, 2777, 2777, 2777, 2777, 2777, 4725, 4727, 580, 2777, 15: 4744, 2446, 4742, 4681, 4746, 4733, 4762, 4729, 4726, 4728, 4731, 4732, 4734, 4741, 580, 4752, 4753, 4763, 4739, 4740, 4745, 4747, 4759, 4758, 4767, 4760, 4757, 4750, 4755, 4756, 4749, 4751, 4754, 4743, 4764, 4765, 535: 4724, 538: 2446, 4761, 546: 2777, 553: 2446, 565: 5499, 709: 2446, 4730, 865: 4735, 891: 4737, 910: 4736, 931: 4738, 937: 4748, 941: 5500}, - {200: 5484, 207: 5485}, - {712: 5476}, - {2: 2696, 2696, 2696, 2696, 2696, 2696, 2696, 10: 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 58: 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 531: 2696, 546: 5329, 578: 2696, 701: 2685, 2685, 704: 2685, 2685, 5085, 710: 2685, 746: 2685, 2685, 928: 5331, 952: 4920, 975: 5327, 1002: 5328, 1015: 5330}, - {546: 5320}, + {2458, 2458, 5574, 5576, 5577, 5575, 551: 5578, 1239: 5573, 1323: 5572}, + {551: 5546}, + {2866, 2866, 202: 5540, 551: 5541}, + {215: 5532}, + {538: 2330, 540: 2330, 561: 4611, 808: 5529}, // 1835 - {2765, 2765, 2765, 2765, 2765, 2765, 9: 2765, 546: 2765}, - {2764, 2764, 2764, 2764, 2764, 2764, 9: 2764, 546: 2764}, - {546: 5318}, - {546: 5315}, - {2: 2696, 2696, 2696, 2696, 2696, 2696, 2696, 10: 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 58: 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 546: 5294, 578: 2696, 701: 4906, 4921, 704: 5293, 706: 4922, 710: 4907, 746: 5297, 923: 5296, 952: 4920, 975: 5292, 1015: 5295, 1122: 5298}, + {538: 2330, 540: 2330, 561: 4611, 808: 5526}, + {2794, 2794, 2794, 2794, 2794, 2794, 4748, 4750, 581, 2794, 15: 4767, 2460, 4765, 4704, 4769, 4756, 4785, 4752, 4749, 4751, 4754, 4755, 4757, 4764, 581, 4775, 4776, 4786, 4762, 4763, 4768, 4770, 4782, 4781, 4790, 4783, 4780, 4773, 4778, 4779, 4772, 4774, 4777, 4766, 4787, 4788, 540: 4747, 543: 2460, 4784, 551: 2794, 558: 2460, 570: 5522, 714: 2460, 4753, 871: 4758, 897: 4760, 916: 4759, 938: 4761, 944: 4771, 948: 5523}, + {202: 5507, 209: 5508}, + {717: 5499}, + {2: 2713, 2713, 2713, 2713, 2713, 2713, 2713, 10: 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 58: 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 536: 2713, 551: 5352, 583: 2713, 706: 2702, 708: 2702, 2702, 2702, 5108, 715: 2702, 751: 2702, 2702, 935: 5354, 958: 4943, 981: 5350, 1008: 5351, 1021: 5353}, // 1840 - {546: 5285}, - {546: 5274}, - {546: 5272}, - {546: 5269}, - {546: 5266}, + {551: 5343}, + {2782, 2782, 2782, 2782, 2782, 2782, 9: 2782, 551: 2782}, + {2781, 2781, 2781, 2781, 2781, 2781, 9: 2781, 551: 2781}, + {551: 5341}, + {551: 5338}, // 1845 - {20: 5263, 546: 5262}, - {20: 5259, 546: 5258}, - {546: 5248}, - {723: 5241}, - {1055: 5240}, + {2: 2713, 2713, 2713, 2713, 2713, 2713, 2713, 10: 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 58: 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 551: 5317, 583: 2713, 706: 4929, 708: 5316, 4944, 711: 4945, 715: 4930, 751: 5320, 929: 5319, 958: 4943, 981: 5315, 1021: 5318, 1128: 5321}, + {551: 5308}, + {551: 5297}, + {551: 5295}, + {551: 5292}, // 1850 - {1055: 5239}, - {2: 2696, 2696, 2696, 2696, 2696, 2696, 2696, 10: 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 58: 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 578: 2696, 952: 4920, 975: 5235}, - {2: 2696, 2696, 2696, 2696, 2696, 2696, 2696, 10: 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 58: 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 578: 2696, 952: 4920, 975: 4946}, - {2: 2696, 2696, 2696, 2696, 2696, 2696, 2696, 10: 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 58: 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 702: 4921, 706: 4922, 710: 4919, 952: 4920, 975: 4917, 1122: 4918}, - {2: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 10: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 58: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 537: 4904, 555: 4588, 701: 4906, 710: 4907, 712: 4902, 802: 4903, 923: 4905, 952: 4901}, + {551: 5289}, + {20: 5286, 551: 5285}, + {20: 5282, 551: 5281}, + {551: 5271}, + {728: 5264}, // 1855 - {2732, 2732, 2732, 2732, 2732, 2732, 9: 2732, 546: 2732}, - {2731, 2731, 2731, 2731, 2731, 2731, 9: 2731, 546: 2731}, - {2730, 2730, 2730, 2730, 2730, 2730, 9: 2730, 546: 2730}, - {2729, 2729, 2729, 2729, 2729, 2729, 8: 579, 2729, 29: 579, 546: 2729}, - {247: 4900}, + {1061: 5263}, + {1061: 5262}, + {2: 2713, 2713, 2713, 2713, 2713, 2713, 2713, 10: 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 58: 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 583: 2713, 958: 4943, 981: 5258}, + {2: 2713, 2713, 2713, 2713, 2713, 2713, 2713, 10: 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 58: 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 583: 2713, 958: 4943, 981: 4969}, + {2: 2713, 2713, 2713, 2713, 2713, 2713, 2713, 10: 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 58: 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 709: 4944, 711: 4945, 715: 4942, 958: 4943, 981: 4940, 1128: 4941}, // 1860 - {247: 4899}, - {2726, 2726, 2726, 2726, 2726, 2726, 9: 2726, 546: 2726}, - {2725, 2725, 2725, 2725, 2725, 2725, 9: 2725, 546: 2725}, - {2721, 2721, 2721, 2721, 2721, 2721, 9: 2721, 546: 2721}, - {2720, 2720, 2720, 2720, 2720, 2720, 9: 2720, 546: 2720}, + {2: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 10: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 58: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 542: 4927, 561: 4611, 706: 4929, 715: 4930, 717: 4925, 808: 4926, 929: 4928, 958: 4924}, + {2749, 2749, 2749, 2749, 2749, 2749, 9: 2749, 551: 2749}, + {2748, 2748, 2748, 2748, 2748, 2748, 9: 2748, 551: 2748}, + {2747, 2747, 2747, 2747, 2747, 2747, 9: 2747, 551: 2747}, + {2746, 2746, 2746, 2746, 2746, 2746, 8: 580, 2746, 29: 580, 551: 2746}, // 1865 - {56: 2316, 293: 2316, 315: 2316, 317: 2316, 535: 2316, 555: 4588, 802: 4893}, - {2: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 10: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 58: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 535: 2316, 555: 4588, 802: 4890}, - {194: 4889, 768: 4888}, - {2690, 2690, 2690, 2690, 2690, 2690, 9: 4886, 546: 2690}, - {2689, 2689, 2689, 2689, 2689, 2689, 9: 2689, 546: 2689}, + {247: 4923}, + {247: 4922}, + {2743, 2743, 2743, 2743, 2743, 2743, 9: 2743, 551: 2743}, + {2742, 2742, 2742, 2742, 2742, 2742, 9: 2742, 551: 2742}, + {2738, 2738, 2738, 2738, 2738, 2738, 9: 2738, 551: 2738}, // 1870 - {16: 2445, 18: 2445, 21: 2445, 538: 2445, 553: 2445, 709: 2445}, - {533: 2316, 555: 4588, 802: 4884}, - {2: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 10: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 58: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 533: 2316, 555: 4588, 802: 4882}, - {23: 4877, 236: 4878, 300: 4879}, - {2: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 10: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 58: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 533: 2316, 555: 4588, 802: 4875}, + {2737, 2737, 2737, 2737, 2737, 2737, 9: 2737, 551: 2737}, + {56: 2330, 293: 2330, 315: 2330, 317: 2330, 540: 2330, 561: 4611, 808: 4916}, + {2: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 10: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 58: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 540: 2330, 561: 4611, 808: 4913}, + {195: 4912, 774: 4911}, + {2707, 2707, 2707, 2707, 2707, 2707, 9: 4909, 551: 2707}, // 1875 - {298: 4872}, - {298: 4869}, - {555: 4588, 560: 2316, 802: 4867}, - {555: 4588, 560: 2316, 802: 4865}, - {2: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 10: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 58: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 555: 4588, 802: 4863}, + {2706, 2706, 2706, 2706, 2706, 2706, 9: 2706, 551: 2706}, + {16: 2459, 18: 2459, 21: 2459, 543: 2459, 558: 2459, 714: 2459}, + {538: 2330, 561: 4611, 808: 4907}, + {2: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 10: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 58: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 538: 2330, 561: 4611, 808: 4905}, + {23: 4900, 236: 4901, 300: 4902}, // 1880 - {555: 4588, 560: 2316, 802: 4861}, - {2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 15: 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 57: 2390, 530: 2390, 2390, 2390, 535: 2390, 537: 2390, 2390, 2390, 546: 2390, 2390, 549: 2390, 552: 2390, 2390, 565: 2390, 608: 2390, 695: 2390, 709: 2390, 2390}, - {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, 530: 617, 617, 617, 535: 617, 537: 617, 617, 617, 546: 617, 617, 549: 617, 552: 617, 617, 565: 617, 608: 617, 695: 617, 709: 617, 617}, - {16: 4418, 538: 4856, 553: 4419, 709: 4417, 853: 4855}, - {8: 4849, 29: 4850}, + {2: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 10: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 58: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 538: 2330, 561: 4611, 808: 4898}, + {298: 4895}, + {298: 4892}, + {561: 4611, 564: 2330, 808: 4890}, + {561: 4611, 564: 2330, 808: 4888}, // 1885 - {555: 4588, 560: 2316, 802: 4847}, - {555: 4588, 560: 2316, 802: 4845}, - {533: 2316, 555: 4588, 802: 4843}, - {555: 4588, 560: 2316, 802: 4841}, - {555: 4588, 560: 2316, 802: 4839}, + {2: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 10: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 58: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 561: 4611, 808: 4886}, + {561: 4611, 564: 2330, 808: 4884}, + {2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 15: 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 57: 2404, 535: 2404, 2404, 2404, 540: 2404, 542: 2404, 2404, 2404, 551: 2404, 2404, 554: 2404, 557: 2404, 2404, 570: 2404, 613: 2404, 661: 2404, 714: 2404, 2404}, + {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, 535: 618, 618, 618, 540: 618, 542: 618, 618, 618, 551: 618, 618, 554: 618, 557: 618, 618, 570: 618, 613: 618, 661: 618, 714: 618, 618}, + {16: 4441, 543: 4879, 558: 4442, 714: 4440, 859: 4878}, // 1890 - {533: 2316, 555: 4588, 802: 4837}, - {533: 2316, 555: 4588, 802: 4835}, - {555: 4588, 560: 2316, 802: 4833}, - {555: 4588, 560: 2316, 802: 4831}, - {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, 530: 603, 603, 603, 535: 603, 537: 603, 603, 603, 546: 603, 603, 549: 603, 552: 603, 603, 565: 603, 608: 603, 695: 603, 709: 603, 603}, + {8: 4872, 29: 4873}, + {561: 4611, 564: 2330, 808: 4870}, + {561: 4611, 564: 2330, 808: 4868}, + {538: 2330, 561: 4611, 808: 4866}, + {561: 4611, 564: 2330, 808: 4864}, // 1895 - {535: 2316, 555: 4588, 560: 2316, 802: 4829}, - {535: 2316, 555: 4588, 560: 2316, 802: 4826}, - {535: 2316, 555: 4588, 560: 2316, 802: 4823}, - {555: 4588, 560: 2316, 802: 4821}, - {555: 4588, 560: 2316, 802: 4819}, + {561: 4611, 564: 2330, 808: 4862}, + {538: 2330, 561: 4611, 808: 4860}, + {538: 2330, 561: 4611, 808: 4858}, + {561: 4611, 564: 2330, 808: 4856}, + {561: 4611, 564: 2330, 808: 4854}, // 1900 - {555: 4588, 560: 2316, 636: 2316, 2316, 802: 4817}, - {533: 2316, 555: 4588, 802: 4815}, - {533: 2316, 555: 4588, 802: 4813}, - {555: 4588, 560: 2316, 802: 4811}, - {555: 4588, 560: 2316, 802: 4809}, + {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, 535: 604, 604, 604, 540: 604, 542: 604, 604, 604, 551: 604, 604, 554: 604, 557: 604, 604, 570: 604, 613: 604, 661: 604, 714: 604, 604}, + {540: 2330, 561: 4611, 564: 2330, 808: 4852}, + {540: 2330, 561: 4611, 564: 2330, 808: 4849}, + {540: 2330, 561: 4611, 564: 2330, 808: 4846}, + {561: 4611, 564: 2330, 808: 4844}, // 1905 - {535: 2316, 555: 4588, 560: 2316, 802: 4805}, - {2: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 10: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 58: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 533: 2316, 548: 2316, 555: 4588, 802: 4802}, - {531: 2316, 555: 4588, 802: 4797}, - {533: 2316, 555: 4588, 802: 4794}, - {2: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 10: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 58: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 555: 4588, 802: 4788}, + {561: 4611, 564: 2330, 808: 4842}, + {561: 4611, 564: 2330, 641: 2330, 2330, 808: 4840}, + {538: 2330, 561: 4611, 808: 4838}, + {538: 2330, 561: 4611, 808: 4836}, + {561: 4611, 564: 2330, 808: 4834}, // 1910 - {533: 2316, 555: 4588, 802: 4786}, - {533: 2316, 555: 4588, 802: 4784}, - {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, 530: 574, 574, 574, 535: 574, 537: 574, 574, 574, 546: 574, 574, 549: 574, 552: 574, 574, 565: 574, 608: 574, 695: 574, 709: 574, 574}, - {177: 2316, 251: 2316, 255: 2316, 291: 2316, 332: 2316, 347: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 535: 2316, 555: 4588, 802: 4768}, - {177: 4771, 251: 4774, 255: 4770, 291: 4772, 332: 4773, 347: 4775, 4776, 4781, 4780, 4777, 4782, 4783, 4778, 4779, 535: 4769}, + {561: 4611, 564: 2330, 808: 4832}, + {540: 2330, 561: 4611, 564: 2330, 808: 4828}, + {2: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 10: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 58: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 538: 2330, 553: 2330, 561: 4611, 808: 4825}, + {536: 2330, 561: 4611, 808: 4820}, + {538: 2330, 561: 4611, 808: 4817}, // 1915 - {568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 15: 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 530: 568, 568, 568, 535: 568, 537: 568, 568, 568, 546: 568, 568, 549: 568, 552: 568, 568, 565: 568, 608: 568, 695: 568, 709: 568, 568}, - {567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 15: 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 530: 567, 567, 567, 535: 567, 537: 567, 567, 567, 546: 567, 567, 549: 567, 552: 567, 567, 565: 567, 608: 567, 695: 567, 709: 567, 567}, - {566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 15: 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 530: 566, 566, 566, 535: 566, 537: 566, 566, 566, 546: 566, 566, 549: 566, 552: 566, 566, 565: 566, 608: 566, 695: 566, 709: 566, 566}, - {565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 15: 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 530: 565, 565, 565, 535: 565, 537: 565, 565, 565, 546: 565, 565, 549: 565, 552: 565, 565, 565: 565, 608: 565, 695: 565, 709: 565, 565}, - {564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 15: 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 530: 564, 564, 564, 535: 564, 537: 564, 564, 564, 546: 564, 564, 549: 564, 552: 564, 564, 565: 564, 608: 564, 695: 564, 709: 564, 564}, + {2: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 10: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 58: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 561: 4611, 808: 4811}, + {538: 2330, 561: 4611, 808: 4809}, + {538: 2330, 561: 4611, 808: 4807}, + {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, 535: 575, 575, 575, 540: 575, 542: 575, 575, 575, 551: 575, 575, 554: 575, 557: 575, 575, 570: 575, 613: 575, 661: 575, 714: 575, 575}, + {177: 2330, 251: 2330, 255: 2330, 291: 2330, 333: 2330, 348: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 540: 2330, 561: 4611, 808: 4791}, // 1920 - {563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 15: 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 530: 563, 563, 563, 535: 563, 537: 563, 563, 563, 546: 563, 563, 549: 563, 552: 563, 563, 565: 563, 608: 563, 695: 563, 709: 563, 563}, - {562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 15: 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 530: 562, 562, 562, 535: 562, 537: 562, 562, 562, 546: 562, 562, 549: 562, 552: 562, 562, 565: 562, 608: 562, 695: 562, 709: 562, 562}, - {561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 15: 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 530: 561, 561, 561, 535: 561, 537: 561, 561, 561, 546: 561, 561, 549: 561, 552: 561, 561, 565: 561, 608: 561, 695: 561, 709: 561, 561}, - {560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 15: 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 530: 560, 560, 560, 535: 560, 537: 560, 560, 560, 546: 560, 560, 549: 560, 552: 560, 560, 565: 560, 608: 560, 695: 560, 709: 560, 560}, - {559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 15: 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 530: 559, 559, 559, 535: 559, 537: 559, 559, 559, 546: 559, 559, 549: 559, 552: 559, 559, 565: 559, 608: 559, 695: 559, 709: 559, 559}, + {177: 4794, 251: 4797, 255: 4793, 291: 4795, 333: 4796, 348: 4798, 4799, 4804, 4803, 4800, 4805, 4806, 4801, 4802, 540: 4792}, + {569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 15: 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 535: 569, 569, 569, 540: 569, 542: 569, 569, 569, 551: 569, 569, 554: 569, 557: 569, 569, 570: 569, 613: 569, 661: 569, 714: 569, 569}, + {568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 15: 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 535: 568, 568, 568, 540: 568, 542: 568, 568, 568, 551: 568, 568, 554: 568, 557: 568, 568, 570: 568, 613: 568, 661: 568, 714: 568, 568}, + {567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 15: 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 535: 567, 567, 567, 540: 567, 542: 567, 567, 567, 551: 567, 567, 554: 567, 557: 567, 567, 570: 567, 613: 567, 661: 567, 714: 567, 567}, + {566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 15: 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 535: 566, 566, 566, 540: 566, 542: 566, 566, 566, 551: 566, 566, 554: 566, 557: 566, 566, 570: 566, 613: 566, 661: 566, 714: 566, 566}, // 1925 - {558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 15: 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 530: 558, 558, 558, 535: 558, 537: 558, 558, 558, 546: 558, 558, 549: 558, 552: 558, 558, 565: 558, 608: 558, 695: 558, 709: 558, 558}, - {557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 15: 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 530: 557, 557, 557, 535: 557, 537: 557, 557, 557, 546: 557, 557, 549: 557, 552: 557, 557, 565: 557, 608: 557, 695: 557, 709: 557, 557}, - {556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 15: 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 530: 556, 556, 556, 535: 556, 537: 556, 556, 556, 546: 556, 556, 549: 556, 552: 556, 556, 565: 556, 608: 556, 695: 556, 709: 556, 556}, - {555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 15: 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 530: 555, 555, 555, 535: 555, 537: 555, 555, 555, 546: 555, 555, 549: 555, 552: 555, 555, 565: 555, 608: 555, 695: 555, 709: 555, 555}, - {554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 15: 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 530: 554, 554, 554, 535: 554, 537: 554, 554, 554, 546: 554, 554, 549: 554, 552: 554, 554, 565: 554, 608: 554, 695: 554, 709: 554, 554}, + {565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 15: 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 535: 565, 565, 565, 540: 565, 542: 565, 565, 565, 551: 565, 565, 554: 565, 557: 565, 565, 570: 565, 613: 565, 661: 565, 714: 565, 565}, + {564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 15: 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 535: 564, 564, 564, 540: 564, 542: 564, 564, 564, 551: 564, 564, 554: 564, 557: 564, 564, 570: 564, 613: 564, 661: 564, 714: 564, 564}, + {563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 15: 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 535: 563, 563, 563, 540: 563, 542: 563, 563, 563, 551: 563, 563, 554: 563, 557: 563, 563, 570: 563, 613: 563, 661: 563, 714: 563, 563}, + {562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 15: 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 535: 562, 562, 562, 540: 562, 542: 562, 562, 562, 551: 562, 562, 554: 562, 557: 562, 562, 570: 562, 613: 562, 661: 562, 714: 562, 562}, + {561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 15: 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 535: 561, 561, 561, 540: 561, 542: 561, 561, 561, 551: 561, 561, 554: 561, 557: 561, 561, 570: 561, 613: 561, 661: 561, 714: 561, 561}, // 1930 - {533: 4785}, - {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, 530: 581, 581, 581, 535: 581, 537: 581, 581, 581, 546: 581, 581, 549: 581, 552: 581, 581, 565: 581, 608: 581, 695: 581, 709: 581, 581}, - {533: 4787}, - {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, 530: 582, 582, 582, 535: 582, 537: 582, 582, 582, 546: 582, 582, 549: 582, 552: 582, 582, 565: 582, 608: 582, 695: 582, 709: 582, 582}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4789, 3051, 3052, 3050}, + {560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 15: 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 535: 560, 560, 560, 540: 560, 542: 560, 560, 560, 551: 560, 560, 554: 560, 557: 560, 560, 570: 560, 613: 560, 661: 560, 714: 560, 560}, + {559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 15: 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 535: 559, 559, 559, 540: 559, 542: 559, 559, 559, 551: 559, 559, 554: 559, 557: 559, 559, 570: 559, 613: 559, 661: 559, 714: 559, 559}, + {558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 15: 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535: 558, 558, 558, 540: 558, 542: 558, 558, 558, 551: 558, 558, 554: 558, 557: 558, 558, 570: 558, 613: 558, 661: 558, 714: 558, 558}, + {557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 15: 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 535: 557, 557, 557, 540: 557, 542: 557, 557, 557, 551: 557, 557, 554: 557, 557: 557, 557, 570: 557, 613: 557, 661: 557, 714: 557, 557}, + {556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 15: 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 535: 556, 556, 556, 540: 556, 542: 556, 556, 556, 551: 556, 556, 554: 556, 557: 556, 556, 570: 556, 613: 556, 661: 556, 714: 556, 556}, // 1935 - {543: 4790}, - {641: 4791}, - {533: 3586, 548: 3577, 560: 3581, 629: 3576, 3578, 636: 3580, 3579, 3584, 640: 3585, 647: 3583, 777: 4792, 779: 3582}, - {118: 3767, 127: 3775, 133: 3763, 137: 3760, 3762, 3759, 3761, 3765, 3766, 3771, 3770, 3769, 3773, 3774, 3768, 3772, 3764, 594: 3757, 3754, 3756, 3755, 3751, 3753, 3752, 3749, 3750, 3748, 3758, 886: 3747, 901: 4793}, - {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, 530: 583, 583, 583, 535: 583, 537: 583, 583, 583, 546: 583, 583, 549: 583, 552: 583, 583, 565: 583, 608: 583, 695: 583, 709: 583, 583}, + {555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 15: 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 535: 555, 555, 555, 540: 555, 542: 555, 555, 555, 551: 555, 555, 554: 555, 557: 555, 555, 570: 555, 613: 555, 661: 555, 714: 555, 555}, + {538: 4808}, + {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, 535: 582, 582, 582, 540: 582, 542: 582, 582, 582, 551: 582, 582, 554: 582, 557: 582, 582, 570: 582, 613: 582, 661: 582, 714: 582, 582}, + {538: 4810}, + {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, 535: 583, 583, 583, 540: 583, 542: 583, 583, 583, 551: 583, 583, 554: 583, 557: 583, 583, 570: 583, 613: 583, 661: 583, 714: 583, 583}, // 1940 - {533: 4796, 1167: 4795}, - {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, 530: 584, 584, 584, 535: 584, 537: 584, 584, 584, 546: 584, 584, 549: 584, 552: 584, 584, 565: 584, 608: 584, 695: 584, 709: 584, 584}, - {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, 530: 148, 148, 148, 535: 148, 537: 148, 148, 148, 546: 148, 148, 549: 148, 552: 148, 148, 557: 148, 565: 148, 608: 148, 695: 148, 709: 148, 148}, - {531: 4798}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 759, 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 3928, 884: 4799, 1293: 4800}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4812, 3068, 3069, 3067}, + {548: 4813}, + {646: 4814}, + {538: 3608, 553: 3599, 564: 3603, 634: 3598, 3600, 641: 3602, 3601, 3606, 645: 3607, 652: 3605, 783: 4815, 785: 3604}, + {118: 3790, 127: 3798, 133: 3786, 137: 3783, 3785, 3782, 3784, 3788, 3789, 3794, 3793, 3792, 3796, 3797, 3791, 3795, 3787, 599: 3780, 3777, 3779, 3778, 3774, 3776, 3775, 3772, 3773, 3771, 3781, 892: 3770, 907: 4816}, // 1945 - {758, 758, 9: 3930, 57: 758, 532: 758}, - {57: 4801}, - {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, 530: 585, 585, 585, 535: 585, 537: 585, 585, 585, 546: 585, 585, 549: 585, 552: 585, 585, 565: 585, 608: 585, 695: 585, 709: 585, 585}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 548: 4803, 770: 3737, 3051, 3052, 3050, 805: 4804}, - {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, 530: 587, 587, 587, 535: 587, 537: 587, 587, 587, 546: 587, 587, 549: 587, 552: 587, 587, 565: 587, 608: 587, 695: 587, 709: 587, 587}, + {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, 535: 584, 584, 584, 540: 584, 542: 584, 584, 584, 551: 584, 584, 554: 584, 557: 584, 584, 570: 584, 613: 584, 661: 584, 714: 584, 584}, + {538: 4819, 1173: 4818}, + {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, 535: 585, 585, 585, 540: 585, 542: 585, 585, 585, 551: 585, 585, 554: 585, 557: 585, 585, 570: 585, 613: 585, 661: 585, 714: 585, 585}, + {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, 535: 148, 148, 148, 540: 148, 542: 148, 148, 148, 551: 148, 148, 554: 148, 557: 148, 148, 560: 148, 570: 148, 613: 148, 661: 148, 714: 148, 148}, + {536: 4821}, // 1950 - {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, 530: 586, 586, 586, 535: 586, 537: 586, 586, 586, 546: 586, 586, 549: 586, 552: 586, 586, 565: 586, 608: 586, 695: 586, 709: 586, 586}, - {535: 4807, 560: 3037, 799: 3866, 816: 4808, 1286: 4806}, - {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, 530: 590, 590, 590, 535: 590, 537: 590, 590, 590, 546: 590, 590, 549: 590, 552: 590, 590, 565: 590, 608: 590, 695: 590, 709: 590, 590}, - {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, 530: 578, 578, 578, 535: 578, 537: 578, 578, 578, 546: 578, 578, 549: 578, 552: 578, 578, 565: 578, 608: 578, 695: 578, 709: 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, 530: 577, 577, 577, 535: 577, 537: 577, 577, 577, 546: 577, 577, 549: 577, 552: 577, 577, 565: 577, 608: 577, 695: 577, 709: 577, 577}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 760, 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 3951, 890: 4822, 1299: 4823}, + {759, 759, 9: 3953, 57: 759, 537: 759}, + {57: 4824}, + {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, 535: 586, 586, 586, 540: 586, 542: 586, 586, 586, 551: 586, 586, 554: 586, 557: 586, 586, 570: 586, 613: 586, 661: 586, 714: 586, 586}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 553: 4826, 777: 3760, 3068, 3069, 3067, 811: 4827}, // 1955 - {560: 3037, 799: 3866, 816: 4810}, - {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, 530: 591, 591, 591, 535: 591, 537: 591, 591, 591, 546: 591, 591, 549: 591, 552: 591, 591, 565: 591, 608: 591, 695: 591, 709: 591, 591}, - {560: 3037, 799: 3866, 816: 4812}, - {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, 530: 592, 592, 592, 535: 592, 537: 592, 592, 592, 546: 592, 592, 549: 592, 552: 592, 592, 565: 592, 608: 592, 695: 592, 709: 592, 592}, - {533: 4814}, + {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, 535: 588, 588, 588, 540: 588, 542: 588, 588, 588, 551: 588, 588, 554: 588, 557: 588, 588, 570: 588, 613: 588, 661: 588, 714: 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, 535: 587, 587, 587, 540: 587, 542: 587, 587, 587, 551: 587, 587, 554: 587, 557: 587, 587, 570: 587, 613: 587, 661: 587, 714: 587, 587}, + {540: 4830, 564: 3054, 805: 3889, 820: 4831, 1292: 4829}, + {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, 535: 591, 591, 591, 540: 591, 542: 591, 591, 591, 551: 591, 591, 554: 591, 557: 591, 591, 570: 591, 613: 591, 661: 591, 714: 591, 591}, + {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, 535: 579, 579, 579, 540: 579, 542: 579, 579, 579, 551: 579, 579, 554: 579, 557: 579, 579, 570: 579, 613: 579, 661: 579, 714: 579, 579}, // 1960 - {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, 530: 593, 593, 593, 535: 593, 537: 593, 593, 593, 546: 593, 593, 549: 593, 552: 593, 593, 565: 593, 608: 593, 695: 593, 709: 593, 593}, - {533: 4816}, - {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, 530: 594, 594, 594, 535: 594, 537: 594, 594, 594, 546: 594, 594, 549: 594, 552: 594, 594, 565: 594, 608: 594, 695: 594, 709: 594, 594}, - {560: 4087, 636: 4089, 4088, 916: 4818}, - {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, 530: 595, 595, 595, 535: 595, 537: 595, 595, 595, 546: 595, 595, 549: 595, 552: 595, 595, 565: 595, 608: 595, 695: 595, 709: 595, 595}, + {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, 535: 578, 578, 578, 540: 578, 542: 578, 578, 578, 551: 578, 578, 554: 578, 557: 578, 578, 570: 578, 613: 578, 661: 578, 714: 578, 578}, + {564: 3054, 805: 3889, 820: 4833}, + {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, 535: 592, 592, 592, 540: 592, 542: 592, 592, 592, 551: 592, 592, 554: 592, 557: 592, 592, 570: 592, 613: 592, 661: 592, 714: 592, 592}, + {564: 3054, 805: 3889, 820: 4835}, + {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, 535: 593, 593, 593, 540: 593, 542: 593, 593, 593, 551: 593, 593, 554: 593, 557: 593, 593, 570: 593, 613: 593, 661: 593, 714: 593, 593}, // 1965 - {560: 3037, 799: 3866, 816: 4820}, - {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, 530: 596, 596, 596, 535: 596, 537: 596, 596, 596, 546: 596, 596, 549: 596, 552: 596, 596, 565: 596, 608: 596, 695: 596, 709: 596, 596}, - {560: 3037, 799: 3866, 816: 4822}, - {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, 530: 597, 597, 597, 535: 597, 537: 597, 597, 597, 546: 597, 597, 549: 597, 552: 597, 597, 565: 597, 608: 597, 695: 597, 709: 597, 597}, - {535: 4825, 560: 3037, 799: 3866, 816: 4824}, + {538: 4837}, + {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, 535: 594, 594, 594, 540: 594, 542: 594, 594, 594, 551: 594, 594, 554: 594, 557: 594, 594, 570: 594, 613: 594, 661: 594, 714: 594, 594}, + {538: 4839}, + {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, 535: 595, 595, 595, 540: 595, 542: 595, 595, 595, 551: 595, 595, 554: 595, 557: 595, 595, 570: 595, 613: 595, 661: 595, 714: 595, 595}, + {564: 4110, 641: 4112, 4111, 922: 4841}, // 1970 - {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, 530: 599, 599, 599, 535: 599, 537: 599, 599, 599, 546: 599, 599, 549: 599, 552: 599, 599, 565: 599, 608: 599, 695: 599, 709: 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, 530: 598, 598, 598, 535: 598, 537: 598, 598, 598, 546: 598, 598, 549: 598, 552: 598, 598, 565: 598, 608: 598, 695: 598, 709: 598, 598}, - {535: 4828, 560: 3037, 799: 3866, 816: 4827}, - {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, 530: 601, 601, 601, 535: 601, 537: 601, 601, 601, 546: 601, 601, 549: 601, 552: 601, 601, 565: 601, 608: 601, 695: 601, 709: 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, 530: 600, 600, 600, 535: 600, 537: 600, 600, 600, 546: 600, 600, 549: 600, 552: 600, 600, 565: 600, 608: 600, 695: 600, 709: 600, 600}, + {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, 535: 596, 596, 596, 540: 596, 542: 596, 596, 596, 551: 596, 596, 554: 596, 557: 596, 596, 570: 596, 613: 596, 661: 596, 714: 596, 596}, + {564: 3054, 805: 3889, 820: 4843}, + {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, 535: 597, 597, 597, 540: 597, 542: 597, 597, 597, 551: 597, 597, 554: 597, 557: 597, 597, 570: 597, 613: 597, 661: 597, 714: 597, 597}, + {564: 3054, 805: 3889, 820: 4845}, + {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, 535: 598, 598, 598, 540: 598, 542: 598, 598, 598, 551: 598, 598, 554: 598, 557: 598, 598, 570: 598, 613: 598, 661: 598, 714: 598, 598}, // 1975 - {535: 4807, 560: 3037, 799: 3866, 816: 4808, 1286: 4830}, - {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, 530: 602, 602, 602, 535: 602, 537: 602, 602, 602, 546: 602, 602, 549: 602, 552: 602, 602, 565: 602, 608: 602, 695: 602, 709: 602, 602}, - {560: 3037, 799: 3866, 816: 4832}, - {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, 530: 604, 604, 604, 535: 604, 537: 604, 604, 604, 546: 604, 604, 549: 604, 552: 604, 604, 565: 604, 608: 604, 695: 604, 709: 604, 604}, - {560: 3037, 799: 3866, 816: 4834}, + {540: 4848, 564: 3054, 805: 3889, 820: 4847}, + {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, 535: 600, 600, 600, 540: 600, 542: 600, 600, 600, 551: 600, 600, 554: 600, 557: 600, 600, 570: 600, 613: 600, 661: 600, 714: 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, 535: 599, 599, 599, 540: 599, 542: 599, 599, 599, 551: 599, 599, 554: 599, 557: 599, 599, 570: 599, 613: 599, 661: 599, 714: 599, 599}, + {540: 4851, 564: 3054, 805: 3889, 820: 4850}, + {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, 535: 602, 602, 602, 540: 602, 542: 602, 602, 602, 551: 602, 602, 554: 602, 557: 602, 602, 570: 602, 613: 602, 661: 602, 714: 602, 602}, // 1980 - {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, 530: 605, 605, 605, 535: 605, 537: 605, 605, 605, 546: 605, 605, 549: 605, 552: 605, 605, 565: 605, 608: 605, 695: 605, 709: 605, 605}, - {533: 4836}, - {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, 530: 606, 606, 606, 535: 606, 537: 606, 606, 606, 546: 606, 606, 549: 606, 552: 606, 606, 565: 606, 608: 606, 695: 606, 709: 606, 606}, - {533: 4838}, - {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, 530: 607, 607, 607, 535: 607, 537: 607, 607, 607, 546: 607, 607, 549: 607, 552: 607, 607, 565: 607, 608: 607, 695: 607, 709: 607, 607}, + {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, 535: 601, 601, 601, 540: 601, 542: 601, 601, 601, 551: 601, 601, 554: 601, 557: 601, 601, 570: 601, 613: 601, 661: 601, 714: 601, 601}, + {540: 4830, 564: 3054, 805: 3889, 820: 4831, 1292: 4853}, + {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, 535: 603, 603, 603, 540: 603, 542: 603, 603, 603, 551: 603, 603, 554: 603, 557: 603, 603, 570: 603, 613: 603, 661: 603, 714: 603, 603}, + {564: 3054, 805: 3889, 820: 4855}, + {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, 535: 605, 605, 605, 540: 605, 542: 605, 605, 605, 551: 605, 605, 554: 605, 557: 605, 605, 570: 605, 613: 605, 661: 605, 714: 605, 605}, // 1985 - {560: 3037, 799: 3866, 816: 4840}, - {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, 530: 608, 608, 608, 535: 608, 537: 608, 608, 608, 546: 608, 608, 549: 608, 552: 608, 608, 565: 608, 608: 608, 695: 608, 709: 608, 608}, - {560: 3037, 799: 3866, 816: 4842}, - {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, 530: 609, 609, 609, 535: 609, 537: 609, 609, 609, 546: 609, 609, 549: 609, 552: 609, 609, 565: 609, 608: 609, 695: 609, 709: 609, 609}, - {533: 4844}, + {564: 3054, 805: 3889, 820: 4857}, + {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, 535: 606, 606, 606, 540: 606, 542: 606, 606, 606, 551: 606, 606, 554: 606, 557: 606, 606, 570: 606, 613: 606, 661: 606, 714: 606, 606}, + {538: 4859}, + {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, 535: 607, 607, 607, 540: 607, 542: 607, 607, 607, 551: 607, 607, 554: 607, 557: 607, 607, 570: 607, 613: 607, 661: 607, 714: 607, 607}, + {538: 4861}, // 1990 - {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, 530: 610, 610, 610, 535: 610, 537: 610, 610, 610, 546: 610, 610, 549: 610, 552: 610, 610, 565: 610, 608: 610, 695: 610, 709: 610, 610}, - {560: 3037, 799: 3866, 816: 4846}, - {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, 530: 611, 611, 611, 535: 611, 537: 611, 611, 611, 546: 611, 611, 549: 611, 552: 611, 611, 565: 611, 608: 611, 695: 611, 709: 611, 611}, - {560: 3037, 799: 3866, 816: 4848}, - {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, 530: 613, 613, 613, 535: 613, 537: 613, 613, 613, 546: 613, 613, 549: 613, 552: 613, 613, 565: 613, 608: 613, 695: 613, 709: 613, 613}, + {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, 535: 608, 608, 608, 540: 608, 542: 608, 608, 608, 551: 608, 608, 554: 608, 557: 608, 608, 570: 608, 613: 608, 661: 608, 714: 608, 608}, + {564: 3054, 805: 3889, 820: 4863}, + {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, 535: 609, 609, 609, 540: 609, 542: 609, 609, 609, 551: 609, 609, 554: 609, 557: 609, 609, 570: 609, 613: 609, 661: 609, 714: 609, 609}, + {564: 3054, 805: 3889, 820: 4865}, + {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, 535: 610, 610, 610, 540: 610, 542: 610, 610, 610, 551: 610, 610, 554: 610, 557: 610, 610, 570: 610, 613: 610, 661: 610, 714: 610, 610}, // 1995 - {555: 4588, 560: 2316, 802: 4853}, - {555: 4588, 560: 2316, 802: 4851}, - {560: 3037, 799: 3866, 816: 4852}, - {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, 530: 612, 612, 612, 535: 612, 537: 612, 612, 612, 546: 612, 612, 549: 612, 552: 612, 612, 565: 612, 608: 612, 695: 612, 709: 612, 612}, - {560: 3037, 799: 3866, 816: 4854}, + {538: 4867}, + {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, 535: 611, 611, 611, 540: 611, 542: 611, 611, 611, 551: 611, 611, 554: 611, 557: 611, 611, 570: 611, 613: 611, 661: 611, 714: 611, 611}, + {564: 3054, 805: 3889, 820: 4869}, + {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, 535: 612, 612, 612, 540: 612, 542: 612, 612, 612, 551: 612, 612, 554: 612, 557: 612, 612, 570: 612, 613: 612, 661: 612, 714: 612, 612}, + {564: 3054, 805: 3889, 820: 4871}, // 2000 - {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, 530: 614, 614, 614, 535: 614, 537: 614, 614, 614, 546: 614, 614, 549: 614, 552: 614, 614, 565: 614, 608: 614, 695: 614, 709: 614, 614}, - {2: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 10: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 58: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 533: 2316, 555: 4588, 586: 2316, 802: 4859}, - {2: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 10: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 58: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 533: 2316, 555: 4588, 586: 2316, 802: 4857}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 586: 3735, 770: 3737, 3051, 3052, 3050, 805: 3734, 974: 4858}, - {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, 530: 615, 615, 615, 535: 615, 537: 615, 615, 615, 546: 615, 615, 549: 615, 552: 615, 615, 565: 615, 608: 615, 695: 615, 709: 615, 615}, + {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, 535: 614, 614, 614, 540: 614, 542: 614, 614, 614, 551: 614, 614, 554: 614, 557: 614, 614, 570: 614, 613: 614, 661: 614, 714: 614, 614}, + {561: 4611, 564: 2330, 808: 4876}, + {561: 4611, 564: 2330, 808: 4874}, + {564: 3054, 805: 3889, 820: 4875}, + {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, 535: 613, 613, 613, 540: 613, 542: 613, 613, 613, 551: 613, 613, 554: 613, 557: 613, 613, 570: 613, 613: 613, 661: 613, 714: 613, 613}, // 2005 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 586: 4354, 770: 3737, 3051, 3052, 3050, 805: 4353, 905: 4860}, - {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, 530: 616, 616, 616, 535: 616, 537: 616, 616, 616, 546: 616, 616, 549: 616, 552: 616, 616, 565: 616, 608: 616, 695: 616, 709: 616, 616}, - {560: 3037, 799: 3866, 816: 4862}, - {2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 15: 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 57: 2391, 530: 2391, 2391, 2391, 535: 2391, 537: 2391, 2391, 2391, 546: 2391, 2391, 549: 2391, 552: 2391, 2391, 565: 2391, 608: 2391, 695: 2391, 709: 2391, 2391}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4864, 3051, 3052, 3050}, + {564: 3054, 805: 3889, 820: 4877}, + {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, 535: 615, 615, 615, 540: 615, 542: 615, 615, 615, 551: 615, 615, 554: 615, 557: 615, 615, 570: 615, 613: 615, 661: 615, 714: 615, 615}, + {2: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 10: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 58: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 538: 2330, 561: 4611, 591: 2330, 808: 4882}, + {2: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 10: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 58: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 538: 2330, 561: 4611, 591: 2330, 808: 4880}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 591: 3758, 777: 3760, 3068, 3069, 3067, 811: 3757, 980: 4881}, // 2010 - {2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 15: 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 57: 2392, 530: 2392, 2392, 2392, 535: 2392, 537: 2392, 2392, 2392, 546: 2392, 2392, 549: 2392, 552: 2392, 2392, 565: 2392, 608: 2392, 695: 2392, 709: 2392, 2392}, - {560: 3037, 799: 3866, 816: 4866}, - {2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 15: 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 57: 2393, 530: 2393, 2393, 2393, 535: 2393, 537: 2393, 2393, 2393, 546: 2393, 2393, 549: 2393, 552: 2393, 2393, 565: 2393, 608: 2393, 695: 2393, 709: 2393, 2393}, - {560: 3037, 799: 3866, 816: 4868}, - {2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 15: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 57: 2394, 530: 2394, 2394, 2394, 535: 2394, 537: 2394, 2394, 2394, 546: 2394, 2394, 549: 2394, 552: 2394, 2394, 565: 2394, 608: 2394, 695: 2394, 709: 2394, 2394}, + {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, 535: 616, 616, 616, 540: 616, 542: 616, 616, 616, 551: 616, 616, 554: 616, 557: 616, 616, 570: 616, 613: 616, 661: 616, 714: 616, 616}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 591: 4377, 777: 3760, 3068, 3069, 3067, 811: 4376, 911: 4883}, + {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, 535: 617, 617, 617, 540: 617, 542: 617, 617, 617, 551: 617, 617, 554: 617, 557: 617, 617, 570: 617, 613: 617, 661: 617, 714: 617, 617}, + {564: 3054, 805: 3889, 820: 4885}, + {2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 15: 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 57: 2405, 535: 2405, 2405, 2405, 540: 2405, 542: 2405, 2405, 2405, 551: 2405, 2405, 554: 2405, 557: 2405, 2405, 570: 2405, 613: 2405, 661: 2405, 714: 2405, 2405}, // 2015 - {533: 2316, 555: 4588, 802: 4870}, - {533: 4871}, - {2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 15: 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 57: 2395, 530: 2395, 2395, 2395, 535: 2395, 537: 2395, 2395, 2395, 546: 2395, 2395, 549: 2395, 552: 2395, 2395, 565: 2395, 608: 2395, 695: 2395, 709: 2395, 2395}, - {533: 2316, 555: 4588, 802: 4873}, - {533: 4874}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4887, 3068, 3069, 3067}, + {2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 15: 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 57: 2406, 535: 2406, 2406, 2406, 540: 2406, 542: 2406, 2406, 2406, 551: 2406, 2406, 554: 2406, 557: 2406, 2406, 570: 2406, 613: 2406, 661: 2406, 714: 2406, 2406}, + {564: 3054, 805: 3889, 820: 4889}, + {2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 15: 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 57: 2407, 535: 2407, 2407, 2407, 540: 2407, 542: 2407, 2407, 2407, 551: 2407, 2407, 554: 2407, 557: 2407, 2407, 570: 2407, 613: 2407, 661: 2407, 714: 2407, 2407}, + {564: 3054, 805: 3889, 820: 4891}, // 2020 - {2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 15: 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 57: 2396, 530: 2396, 2396, 2396, 535: 2396, 537: 2396, 2396, 2396, 546: 2396, 2396, 549: 2396, 552: 2396, 2396, 565: 2396, 608: 2396, 695: 2396, 709: 2396, 2396}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 770: 3737, 3051, 3052, 3050, 805: 4876}, - {2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 15: 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 57: 2397, 530: 2397, 2397, 2397, 535: 2397, 537: 2397, 2397, 2397, 546: 2397, 2397, 549: 2397, 552: 2397, 2397, 565: 2397, 608: 2397, 695: 2397, 709: 2397, 2397}, - {2: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 10: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 58: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 533: 2316, 555: 4588, 802: 4880}, - {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, 530: 589, 589, 589, 535: 589, 537: 589, 589, 589, 546: 589, 589, 549: 589, 552: 589, 589, 565: 589, 608: 589, 695: 589, 709: 589, 589}, + {2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 15: 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 57: 2408, 535: 2408, 2408, 2408, 540: 2408, 542: 2408, 2408, 2408, 551: 2408, 2408, 554: 2408, 557: 2408, 2408, 570: 2408, 613: 2408, 661: 2408, 714: 2408, 2408}, + {538: 2330, 561: 4611, 808: 4893}, + {538: 4894}, + {2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 15: 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 57: 2409, 535: 2409, 2409, 2409, 540: 2409, 542: 2409, 2409, 2409, 551: 2409, 2409, 554: 2409, 557: 2409, 2409, 570: 2409, 613: 2409, 661: 2409, 714: 2409, 2409}, + {538: 2330, 561: 4611, 808: 4896}, // 2025 - {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, 530: 588, 588, 588, 535: 588, 537: 588, 588, 588, 546: 588, 588, 549: 588, 552: 588, 588, 565: 588, 608: 588, 695: 588, 709: 588, 588}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 770: 3737, 3051, 3052, 3050, 805: 4881}, - {2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 15: 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 57: 2398, 530: 2398, 2398, 2398, 535: 2398, 537: 2398, 2398, 2398, 546: 2398, 2398, 549: 2398, 552: 2398, 2398, 565: 2398, 608: 2398, 695: 2398, 709: 2398, 2398}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 770: 3737, 3051, 3052, 3050, 805: 4883}, - {2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 15: 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 57: 2399, 530: 2399, 2399, 2399, 535: 2399, 537: 2399, 2399, 2399, 546: 2399, 2399, 549: 2399, 552: 2399, 2399, 565: 2399, 608: 2399, 695: 2399, 709: 2399, 2399}, + {538: 4897}, + {2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 15: 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 57: 2410, 535: 2410, 2410, 2410, 540: 2410, 542: 2410, 2410, 2410, 551: 2410, 2410, 554: 2410, 557: 2410, 2410, 570: 2410, 613: 2410, 661: 2410, 714: 2410, 2410}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 777: 3760, 3068, 3069, 3067, 811: 4899}, + {2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 15: 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, 57: 2411, 535: 2411, 2411, 2411, 540: 2411, 542: 2411, 2411, 2411, 551: 2411, 2411, 554: 2411, 557: 2411, 2411, 570: 2411, 613: 2411, 661: 2411, 714: 2411, 2411}, + {2: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 10: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 58: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 538: 2330, 561: 4611, 808: 4903}, // 2030 - {533: 4885}, - {2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 15: 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 57: 2400, 530: 2400, 2400, 2400, 535: 2400, 537: 2400, 2400, 2400, 546: 2400, 2400, 549: 2400, 552: 2400, 2400, 565: 2400, 608: 2400, 695: 2400, 709: 2400, 2400}, - {6: 4725, 4727, 580, 10: 4694, 15: 4744, 2446, 4742, 4681, 4746, 4733, 4762, 4729, 4726, 4728, 4731, 4732, 4734, 4741, 580, 4752, 4753, 4763, 4739, 4740, 4745, 4747, 4759, 4758, 4767, 4760, 4757, 4750, 4755, 4756, 4749, 4751, 4754, 4743, 4764, 4765, 89: 4696, 4717, 4718, 102: 4719, 208: 4699, 234: 4688, 249: 4682, 253: 4703, 256: 4704, 270: 4698, 276: 4714, 290: 4692, 299: 4700, 305: 4695, 324: 4705, 331: 4701, 338: 4715, 4716, 343: 4683, 532: 4713, 535: 4724, 538: 2446, 4761, 553: 2446, 557: 4685, 562: 4720, 564: 4702, 4712, 646: 4686, 702: 4691, 709: 2446, 4730, 724: 4707, 727: 4693, 729: 4721, 766: 4706, 4708, 769: 4687, 774: 4697, 865: 4735, 891: 4737, 910: 4736, 931: 4738, 937: 4748, 941: 4766, 972: 4711, 986: 4709, 1020: 4684, 1028: 4689, 1110: 4887, 1285: 4690, 1309: 4710}, - {2688, 2688, 2688, 2688, 2688, 2688, 9: 2688, 546: 2688}, - {2702, 2702, 2702, 2702, 2702, 2702, 9: 2702, 546: 2702}, + {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, 535: 590, 590, 590, 540: 590, 542: 590, 590, 590, 551: 590, 590, 554: 590, 557: 590, 590, 570: 590, 613: 590, 661: 590, 714: 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, 535: 589, 589, 589, 540: 589, 542: 589, 589, 589, 551: 589, 589, 554: 589, 557: 589, 589, 570: 589, 613: 589, 661: 589, 714: 589, 589}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 777: 3760, 3068, 3069, 3067, 811: 4904}, + {2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 15: 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 57: 2412, 535: 2412, 2412, 2412, 540: 2412, 542: 2412, 2412, 2412, 551: 2412, 2412, 554: 2412, 557: 2412, 2412, 570: 2412, 613: 2412, 661: 2412, 714: 2412, 2412}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 777: 3760, 3068, 3069, 3067, 811: 4906}, // 2035 - {2701, 2701, 2701, 2701, 2701, 2701, 9: 2701, 546: 2701}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 535: 4891, 770: 4892, 3051, 3052, 3050}, - {2704, 2704, 2704, 2704, 2704, 2704, 9: 2704, 102: 2704, 546: 2704}, - {2703, 2703, 2703, 2703, 2703, 2703, 9: 2703, 102: 2703, 546: 2703}, - {56: 4898, 293: 4895, 315: 4896, 317: 4897, 535: 4894}, + {2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 15: 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 57: 2413, 535: 2413, 2413, 2413, 540: 2413, 542: 2413, 2413, 2413, 551: 2413, 2413, 554: 2413, 557: 2413, 2413, 570: 2413, 613: 2413, 661: 2413, 714: 2413, 2413}, + {538: 4908}, + {2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414, 15: 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414, 57: 2414, 535: 2414, 2414, 2414, 540: 2414, 542: 2414, 2414, 2414, 551: 2414, 2414, 554: 2414, 557: 2414, 2414, 570: 2414, 613: 2414, 661: 2414, 714: 2414, 2414}, + {6: 4748, 4750, 581, 10: 4717, 15: 4767, 2460, 4765, 4704, 4769, 4756, 4785, 4752, 4749, 4751, 4754, 4755, 4757, 4764, 581, 4775, 4776, 4786, 4762, 4763, 4768, 4770, 4782, 4781, 4790, 4783, 4780, 4773, 4778, 4779, 4772, 4774, 4777, 4766, 4787, 4788, 89: 4719, 4740, 4741, 102: 4742, 210: 4722, 234: 4711, 249: 4705, 253: 4726, 256: 4727, 270: 4721, 276: 4737, 290: 4715, 299: 4723, 305: 4718, 324: 4728, 332: 4724, 339: 4738, 4739, 344: 4706, 537: 4736, 540: 4747, 543: 2460, 4784, 558: 2460, 560: 4708, 567: 4743, 569: 4725, 4735, 651: 4709, 709: 4714, 714: 2460, 4753, 729: 4730, 732: 4716, 734: 4744, 772: 4729, 4731, 775: 4710, 4720, 871: 4758, 897: 4760, 916: 4759, 938: 4761, 944: 4771, 948: 4789, 978: 4734, 992: 4732, 1026: 4707, 1034: 4712, 1116: 4910, 1291: 4713, 1315: 4733}, + {2705, 2705, 2705, 2705, 2705, 2705, 9: 2705, 551: 2705}, // 2040 - {2709, 2709, 2709, 2709, 2709, 2709, 9: 2709, 546: 2709, 562: 2709}, - {2708, 2708, 2708, 2708, 2708, 2708, 9: 2708, 546: 2708, 562: 2708}, - {2707, 2707, 2707, 2707, 2707, 2707, 9: 2707, 546: 2707, 562: 2707}, - {2706, 2706, 2706, 2706, 2706, 2706, 9: 2706, 546: 2706, 562: 2706}, - {2705, 2705, 2705, 2705, 2705, 2705, 9: 2705, 546: 2705, 562: 2705}, + {2719, 2719, 2719, 2719, 2719, 2719, 9: 2719, 551: 2719}, + {2718, 2718, 2718, 2718, 2718, 2718, 9: 2718, 551: 2718}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 540: 4914, 777: 4915, 3068, 3069, 3067}, + {2721, 2721, 2721, 2721, 2721, 2721, 9: 2721, 102: 2721, 551: 2721}, + {2720, 2720, 2720, 2720, 2720, 2720, 9: 2720, 102: 2720, 551: 2720}, // 2045 - {2727, 2727, 2727, 2727, 2727, 2727, 9: 2727, 546: 2727}, - {2728, 2728, 2728, 2728, 2728, 2728, 9: 2728, 546: 2728}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4914, 3051, 3052, 3050}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 4913}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 4912}, + {56: 4921, 293: 4918, 315: 4919, 317: 4920, 540: 4917}, + {2726, 2726, 2726, 2726, 2726, 2726, 9: 2726, 551: 2726, 567: 2726}, + {2725, 2725, 2725, 2725, 2725, 2725, 9: 2725, 551: 2725, 567: 2725}, + {2724, 2724, 2724, 2724, 2724, 2724, 9: 2724, 551: 2724, 567: 2724}, + {2723, 2723, 2723, 2723, 2723, 2723, 9: 2723, 551: 2723, 567: 2723}, // 2050 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 4911}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4908, 3051, 3052, 3050}, - {2: 2700, 2700, 2700, 2700, 2700, 2700, 2700, 10: 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 58: 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700, 531: 2700, 542: 2700, 558: 2700, 578: 2700}, - {2: 2699, 2699, 2699, 2699, 2699, 2699, 2699, 10: 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 58: 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 531: 2699, 542: 2699, 558: 2699, 578: 2699}, - {712: 4909}, + {2722, 2722, 2722, 2722, 2722, 2722, 9: 2722, 551: 2722, 567: 2722}, + {2744, 2744, 2744, 2744, 2744, 2744, 9: 2744, 551: 2744}, + {2745, 2745, 2745, 2745, 2745, 2745, 9: 2745, 551: 2745}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4937, 3068, 3069, 3067}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 4936}, // 2055 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4910, 3051, 3052, 3050}, - {2733, 2733, 2733, 2733, 2733, 2733, 9: 2733, 546: 2733}, - {2734, 2734, 2734, 2734, 2734, 2734, 9: 2734, 546: 2734}, - {2735, 2735, 2735, 2735, 2735, 2735, 9: 2735, 546: 2735}, - {2736, 2736, 2736, 2736, 2736, 2736, 9: 2736, 546: 2736}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 4935}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 4934}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4931, 3068, 3069, 3067}, + {2: 2717, 2717, 2717, 2717, 2717, 2717, 2717, 10: 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 58: 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 536: 2717, 547: 2717, 563: 2717, 583: 2717}, + {2: 2716, 2716, 2716, 2716, 2716, 2716, 2716, 10: 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 58: 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 536: 2716, 547: 2716, 563: 2716, 583: 2716}, // 2060 - {712: 4915}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4916, 3051, 3052, 3050}, - {2737, 2737, 2737, 2737, 2737, 2737, 9: 2737, 546: 2737}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4024, 3051, 3052, 3050, 821: 4932}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4927, 3051, 3052, 3050}, + {717: 4932}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4933, 3068, 3069, 3067}, + {2750, 2750, 2750, 2750, 2750, 2750, 9: 2750, 551: 2750}, + {2751, 2751, 2751, 2751, 2751, 2751, 9: 2751, 551: 2751}, + {2752, 2752, 2752, 2752, 2752, 2752, 9: 2752, 551: 2752}, // 2065 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4923, 3051, 3052, 3050}, - {2: 2695, 2695, 2695, 2695, 2695, 2695, 2695, 10: 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 58: 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 531: 2695, 578: 2695}, - {2: 625, 625, 625, 625, 625, 625, 625, 10: 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, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 58: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 625, 625, 625, 625}, - {2: 624, 624, 624, 624, 624, 624, 624, 10: 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, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 58: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 624, 624, 624, 624}, - {106: 4926, 109: 4925, 959: 4924}, + {2753, 2753, 2753, 2753, 2753, 2753, 9: 2753, 551: 2753}, + {717: 4938}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4939, 3068, 3069, 3067}, + {2754, 2754, 2754, 2754, 2754, 2754, 9: 2754, 551: 2754}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4047, 3068, 3069, 3067, 828: 4955}, // 2070 - {2722, 2722, 2722, 2722, 2722, 2722, 9: 2722, 546: 2722}, - {2092, 2092, 2092, 2092, 2092, 2092, 2092, 9: 2092, 19: 2092, 57: 2092, 102: 2092, 104: 2092, 2092, 2092, 2092, 109: 2092, 532: 2092, 542: 2092, 546: 2092, 562: 2092}, - {2091, 2091, 2091, 2091, 2091, 2091, 2091, 9: 2091, 19: 2091, 57: 2091, 102: 2091, 104: 2091, 2091, 2091, 2091, 109: 2091, 532: 2091, 542: 2091, 546: 2091, 562: 2091}, - {190: 4929, 534: 3812, 536: 3811, 915: 4930, 1044: 4928}, - {2724, 2724, 2724, 2724, 2724, 2724, 9: 2724, 546: 2724}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4950, 3068, 3069, 3067}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4946, 3068, 3069, 3067}, + {2: 2712, 2712, 2712, 2712, 2712, 2712, 2712, 10: 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 58: 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 536: 2712, 583: 2712}, + {2: 626, 626, 626, 626, 626, 626, 626, 10: 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, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 58: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 626, 626, 626, 626, 626, 626, 626, 626, 626}, + {2: 625, 625, 625, 625, 625, 625, 625, 10: 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, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 58: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 625, 625, 625, 625, 625, 625, 625, 625, 625}, // 2075 - {2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 57: 2588, 530: 2588, 534: 2588, 2588, 2588, 2588, 2588, 546: 2588, 548: 2588, 701: 2588, 2588, 704: 2588, 2588, 2588, 2588, 2588}, - {190: 4931}, - {2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 57: 2587, 530: 2587, 534: 2587, 2587, 2587, 2587, 2587, 546: 2587, 548: 2587, 701: 2587, 2587, 704: 2587, 2587, 2587, 2587, 2587}, - {557: 4933, 727: 4934}, - {535: 4936}, + {106: 4949, 109: 4948, 965: 4947}, + {2739, 2739, 2739, 2739, 2739, 2739, 9: 2739, 551: 2739}, + {2106, 2106, 2106, 2106, 2106, 2106, 2106, 9: 2106, 19: 2106, 57: 2106, 102: 2106, 104: 2106, 2106, 2106, 2106, 109: 2106, 537: 2106, 547: 2106, 551: 2106, 567: 2106}, + {2105, 2105, 2105, 2105, 2105, 2105, 2105, 9: 2105, 19: 2105, 57: 2105, 102: 2105, 104: 2105, 2105, 2105, 2105, 109: 2105, 537: 2105, 547: 2105, 551: 2105, 567: 2105}, + {190: 4952, 539: 3835, 541: 3834, 921: 4953, 1050: 4951}, // 2080 - {535: 4935}, - {2738, 2738, 2738, 2738, 2738, 2738, 9: 2738, 546: 2738}, - {531: 4938, 533: 3586, 543: 4940, 4941, 548: 3577, 560: 3581, 629: 3576, 3578, 636: 3580, 3579, 3584, 640: 3585, 647: 3583, 777: 4939, 779: 3582, 1082: 4937}, - {2740, 2740, 2740, 2740, 2740, 2740, 9: 2740, 546: 2740}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 4944}, + {2741, 2741, 2741, 2741, 2741, 2741, 9: 2741, 551: 2741}, + {2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, 57: 2602, 535: 2602, 539: 2602, 2602, 2602, 2602, 2602, 551: 2602, 553: 2602, 706: 2602, 708: 2602, 2602, 2602, 2602, 2602, 2602}, + {190: 4954}, + {2601, 2601, 2601, 2601, 2601, 2601, 2601, 2601, 2601, 2601, 2601, 2601, 2601, 2601, 2601, 57: 2601, 535: 2601, 539: 2601, 2601, 2601, 2601, 2601, 551: 2601, 553: 2601, 706: 2601, 708: 2601, 2601, 2601, 2601, 2601, 2601}, + {560: 4956, 732: 4957}, // 2085 - {2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 57: 2497, 530: 2497, 534: 2497, 2497, 2497, 2497, 2497, 546: 2497, 548: 2497, 701: 2497, 2497, 704: 2497, 2497, 2497, 2497, 2497}, - {560: 4087, 636: 4089, 4088, 916: 4943}, - {560: 4087, 636: 4089, 4088, 916: 4942}, - {2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 57: 2495, 530: 2495, 534: 2495, 2495, 2495, 2495, 2495, 546: 2495, 548: 2495, 701: 2495, 2495, 704: 2495, 2495, 2495, 2495, 2495}, - {2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 57: 2496, 530: 2496, 534: 2496, 2496, 2496, 2496, 2496, 546: 2496, 548: 2496, 701: 2496, 2496, 704: 2496, 2496, 2496, 2496, 2496}, + {540: 4959}, + {540: 4958}, + {2755, 2755, 2755, 2755, 2755, 2755, 9: 2755, 551: 2755}, + {536: 4961, 538: 3608, 548: 4963, 4964, 553: 3599, 564: 3603, 634: 3598, 3600, 641: 3602, 3601, 3606, 645: 3607, 652: 3605, 783: 4962, 785: 3604, 1088: 4960}, + {2757, 2757, 2757, 2757, 2757, 2757, 9: 2757, 551: 2757}, // 2090 - {57: 4945, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {2739, 2739, 2739, 2739, 2739, 2739, 9: 2739, 546: 2739}, - {2: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 10: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 58: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 578: 4948, 854: 4947}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4024, 3051, 3052, 3050, 821: 4950}, - {645: 4949}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 4967}, + {2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 57: 2511, 535: 2511, 539: 2511, 2511, 2511, 2511, 2511, 551: 2511, 553: 2511, 706: 2511, 708: 2511, 2511, 2511, 2511, 2511, 2511}, + {564: 4110, 641: 4112, 4111, 922: 4966}, + {564: 4110, 641: 4112, 4111, 922: 4965}, + {2509, 2509, 2509, 2509, 2509, 2509, 2509, 2509, 2509, 2509, 2509, 2509, 2509, 2509, 2509, 57: 2509, 535: 2509, 539: 2509, 2509, 2509, 2509, 2509, 551: 2509, 553: 2509, 706: 2509, 708: 2509, 2509, 2509, 2509, 2509, 2509}, // 2095 - {2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 58: 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 533: 2118, 535: 2118, 546: 2118, 631: 2118}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4024, 3051, 3052, 3050, 821: 4952, 953: 4951}, - {2694, 2694, 2694, 2694, 2694, 2694, 9: 2694, 5232, 5233, 546: 2694, 1033: 5231}, - {12: 4954, 118: 5005, 127: 5006, 172: 4996, 175: 5016, 5015, 4979, 179: 5018, 185: 5017, 188: 4976, 198: 5012, 203: 4985, 4975, 4994, 209: 5001, 5000, 212: 5004, 553: 4999, 557: 4995, 586: 4990, 709: 4998, 732: 5003, 5002, 4977, 4982, 4980, 4973, 4967, 4981, 4991, 4974, 5008, 744: 4983, 4984, 748: 4968, 4969, 4970, 4971, 4972, 4997, 5010, 5014, 5009, 4965, 5013, 4966, 4978, 4964, 5007, 4963, 5011, 951: 4986, 1025: 4988, 1029: 4962, 4992, 4959, 1038: 4957, 1046: 4960, 4961, 1054: 4958, 1058: 4987, 1062: 4955, 4989, 1083: 4956, 1086: 4993, 1089: 4953, 1098: 5019}, - {2548, 2548, 2548, 2548, 2548, 2548, 5096, 5102, 5090, 2548, 2548, 2548, 5094, 5103, 5101, 57: 2548, 530: 5095, 534: 3812, 5093, 3811, 2555, 5100, 546: 2548, 548: 5089, 701: 2592, 2685, 704: 5087, 5092, 5085, 5107, 5104, 915: 5088, 928: 5097, 1011: 5099, 1032: 5105, 1048: 5098, 1070: 5091, 1126: 5106, 5230}, + {2510, 2510, 2510, 2510, 2510, 2510, 2510, 2510, 2510, 2510, 2510, 2510, 2510, 2510, 2510, 57: 2510, 535: 2510, 539: 2510, 2510, 2510, 2510, 2510, 551: 2510, 553: 2510, 706: 2510, 708: 2510, 2510, 2510, 2510, 2510, 2510}, + {57: 4968, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {2756, 2756, 2756, 2756, 2756, 2756, 9: 2756, 551: 2756}, + {2: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 10: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 58: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 583: 4971, 860: 4970}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4047, 3068, 3069, 3067, 828: 4973}, // 2100 - {2548, 2548, 2548, 2548, 2548, 2548, 5096, 5102, 5090, 2548, 2548, 2548, 5094, 5103, 5101, 57: 2548, 530: 5095, 534: 3812, 5093, 3811, 2555, 5100, 546: 2548, 548: 5089, 701: 2592, 2685, 704: 5087, 5092, 5085, 5107, 5104, 915: 5088, 928: 5097, 1011: 5099, 1032: 5105, 1048: 5098, 1070: 5091, 1126: 5106, 5086}, - {553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 57: 553, 530: 553, 534: 553, 553, 553, 553, 553, 546: 553, 548: 553, 701: 553, 553, 704: 553, 553, 553, 553, 553}, - {552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 57: 552, 530: 552, 534: 552, 552, 552, 552, 552, 546: 552, 548: 552, 701: 552, 552, 704: 552, 552, 552, 552, 552}, - {551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 57: 551, 530: 551, 534: 551, 551, 551, 551, 551, 546: 551, 548: 551, 701: 551, 551, 704: 551, 551, 551, 551, 551}, - {465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 57: 465, 59: 465, 530: 465, 4408, 534: 465, 465, 465, 465, 465, 546: 465, 548: 465, 701: 465, 465, 704: 465, 465, 465, 465, 465, 814: 465, 819: 465, 841: 4409, 888: 5083}, + {650: 4972}, + {2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 58: 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 538: 2132, 540: 2132, 551: 2132, 636: 2132}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4047, 3068, 3069, 3067, 828: 4975, 959: 4974}, + {2711, 2711, 2711, 2711, 2711, 2711, 9: 2711, 5255, 5256, 551: 2711, 1039: 5254}, + {12: 4977, 118: 5028, 127: 5029, 172: 5019, 175: 5039, 5038, 5002, 179: 5041, 185: 5040, 188: 4999, 200: 5035, 205: 5008, 4998, 5017, 211: 5024, 5023, 5027, 558: 5022, 560: 5018, 591: 5013, 714: 5021, 737: 5026, 5025, 5000, 5005, 5003, 4996, 4990, 5004, 5014, 4997, 5031, 749: 5006, 5007, 753: 4991, 4992, 4993, 4994, 4995, 5020, 5033, 5037, 5032, 4988, 5036, 4989, 5001, 4987, 5030, 4986, 5034, 957: 5009, 1031: 5011, 1035: 4985, 5015, 4982, 1044: 4980, 1052: 4983, 4984, 1060: 4981, 1064: 5010, 1068: 4978, 5012, 1089: 4979, 1092: 5016, 1095: 4976, 1104: 5042}, // 2105 - {460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 57: 460, 59: 460, 530: 460, 534: 460, 460, 460, 460, 460, 546: 460, 548: 460, 701: 460, 460, 704: 460, 460, 460, 460, 460, 814: 460, 819: 460, 979: 5082}, - {458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 57: 458, 59: 458, 530: 458, 4395, 534: 458, 458, 458, 458, 458, 546: 458, 548: 458, 701: 458, 458, 704: 458, 458, 458, 458, 458, 814: 458, 819: 458, 841: 4396, 1003: 5080, 1010: 4397}, - {458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 57: 458, 59: 458, 530: 458, 4395, 534: 458, 458, 458, 458, 458, 546: 458, 548: 458, 701: 458, 458, 704: 458, 458, 458, 458, 458, 814: 458, 819: 458, 841: 4396, 1003: 5078, 1010: 4397}, - {465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 57: 465, 530: 465, 4408, 534: 465, 465, 465, 465, 465, 546: 465, 548: 465, 701: 465, 465, 704: 465, 465, 465, 465, 465, 841: 4409, 888: 5077}, - {545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 57: 545, 59: 545, 530: 545, 545, 534: 545, 545, 545, 545, 545, 546: 545, 548: 545, 701: 545, 545, 704: 545, 545, 545, 545, 545, 814: 545, 819: 545}, + {2562, 2562, 2562, 2562, 2562, 2562, 5119, 5125, 5113, 2562, 2562, 2562, 5117, 5126, 5124, 57: 2562, 535: 5118, 539: 3835, 5116, 3834, 2569, 5123, 551: 2562, 553: 5112, 706: 2606, 708: 5110, 2702, 5115, 5108, 5130, 5127, 921: 5111, 935: 5120, 1017: 5122, 1038: 5128, 1054: 5121, 1076: 5114, 1132: 5129, 5253}, + {2562, 2562, 2562, 2562, 2562, 2562, 5119, 5125, 5113, 2562, 2562, 2562, 5117, 5126, 5124, 57: 2562, 535: 5118, 539: 3835, 5116, 3834, 2569, 5123, 551: 2562, 553: 5112, 706: 2606, 708: 5110, 2702, 5115, 5108, 5130, 5127, 921: 5111, 935: 5120, 1017: 5122, 1038: 5128, 1054: 5121, 1076: 5114, 1132: 5129, 5109}, + {554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 57: 554, 535: 554, 539: 554, 554, 554, 554, 554, 551: 554, 553: 554, 706: 554, 708: 554, 554, 554, 554, 554, 554}, + {553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 57: 553, 535: 553, 539: 553, 553, 553, 553, 553, 551: 553, 553: 553, 706: 553, 708: 553, 553, 553, 553, 553, 553}, + {552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 57: 552, 535: 552, 539: 552, 552, 552, 552, 552, 551: 552, 553: 552, 706: 552, 708: 552, 552, 552, 552, 552, 552}, // 2110 - {544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 57: 544, 59: 544, 530: 544, 544, 534: 544, 544, 544, 544, 544, 546: 544, 548: 544, 701: 544, 544, 704: 544, 544, 544, 544, 544, 814: 544, 819: 544}, - {543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 57: 543, 59: 543, 530: 543, 543, 534: 543, 543, 543, 543, 543, 546: 543, 548: 543, 701: 543, 543, 704: 543, 543, 543, 543, 543, 814: 543, 819: 543}, - {542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 57: 542, 59: 542, 530: 542, 542, 534: 542, 542, 542, 542, 542, 546: 542, 548: 542, 701: 542, 542, 704: 542, 542, 542, 542, 542, 814: 542, 819: 542}, - {541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 57: 541, 59: 541, 530: 541, 541, 534: 541, 541, 541, 541, 541, 546: 541, 548: 541, 701: 541, 541, 704: 541, 541, 541, 541, 541, 814: 541, 819: 541}, - {540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 57: 540, 59: 540, 530: 540, 540, 534: 540, 540, 540, 540, 540, 546: 540, 548: 540, 701: 540, 540, 704: 540, 540, 540, 540, 540, 814: 540, 819: 540}, + {466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 57: 466, 59: 466, 535: 466, 4431, 539: 466, 466, 466, 466, 466, 551: 466, 553: 466, 706: 466, 708: 466, 466, 466, 466, 466, 466, 821: 466, 825: 466, 847: 4432, 894: 5106}, + {461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 57: 461, 59: 461, 535: 461, 539: 461, 461, 461, 461, 461, 551: 461, 553: 461, 706: 461, 708: 461, 461, 461, 461, 461, 461, 821: 461, 825: 461, 985: 5105}, + {459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 57: 459, 59: 459, 535: 459, 4418, 539: 459, 459, 459, 459, 459, 551: 459, 553: 459, 706: 459, 708: 459, 459, 459, 459, 459, 459, 821: 459, 825: 459, 847: 4419, 1009: 5103, 1016: 4420}, + {459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 57: 459, 59: 459, 535: 459, 4418, 539: 459, 459, 459, 459, 459, 551: 459, 553: 459, 706: 459, 708: 459, 459, 459, 459, 459, 459, 821: 459, 825: 459, 847: 4419, 1009: 5101, 1016: 4420}, + {466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 57: 466, 535: 466, 4431, 539: 466, 466, 466, 466, 466, 551: 466, 553: 466, 706: 466, 708: 466, 466, 466, 466, 466, 466, 847: 4432, 894: 5100}, // 2115 - {539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 57: 539, 59: 539, 530: 539, 539, 534: 539, 539, 539, 539, 539, 546: 539, 548: 539, 701: 539, 539, 704: 539, 539, 539, 539, 539, 814: 539, 819: 539}, - {538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 57: 538, 59: 538, 530: 538, 538, 534: 538, 538, 538, 538, 538, 546: 538, 548: 538, 701: 538, 538, 704: 538, 538, 538, 538, 538, 814: 538, 819: 538}, - {537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 57: 537, 59: 537, 530: 537, 537, 534: 537, 537, 537, 537, 537, 546: 537, 548: 537, 701: 537, 537, 704: 537, 537, 537, 537, 537, 814: 537, 819: 537}, - {536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 57: 536, 59: 536, 530: 536, 536, 534: 536, 536, 536, 536, 536, 546: 536, 548: 536, 701: 536, 536, 704: 536, 536, 536, 536, 536, 814: 536, 819: 536}, - {535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 57: 535, 59: 535, 530: 535, 535, 534: 535, 535, 535, 535, 535, 546: 535, 548: 535, 701: 535, 535, 704: 535, 535, 535, 535, 535, 814: 535, 819: 535}, + {546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 57: 546, 59: 546, 535: 546, 546, 539: 546, 546, 546, 546, 546, 551: 546, 553: 546, 706: 546, 708: 546, 546, 546, 546, 546, 546, 821: 546, 825: 546}, + {545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 57: 545, 59: 545, 535: 545, 545, 539: 545, 545, 545, 545, 545, 551: 545, 553: 545, 706: 545, 708: 545, 545, 545, 545, 545, 545, 821: 545, 825: 545}, + {544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 57: 544, 59: 544, 535: 544, 544, 539: 544, 544, 544, 544, 544, 551: 544, 553: 544, 706: 544, 708: 544, 544, 544, 544, 544, 544, 821: 544, 825: 544}, + {543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 57: 543, 59: 543, 535: 543, 543, 539: 543, 543, 543, 543, 543, 551: 543, 553: 543, 706: 543, 708: 543, 543, 543, 543, 543, 543, 821: 543, 825: 543}, + {542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 57: 542, 59: 542, 535: 542, 542, 539: 542, 542, 542, 542, 542, 551: 542, 553: 542, 706: 542, 708: 542, 542, 542, 542, 542, 542, 821: 542, 825: 542}, // 2120 - {534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 57: 534, 59: 534, 530: 534, 534, 534: 534, 534, 534, 534, 534, 546: 534, 548: 534, 701: 534, 534, 704: 534, 534, 534, 534, 534, 814: 534, 819: 534}, - {533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 57: 533, 59: 533, 530: 533, 534: 533, 533, 533, 533, 533, 546: 533, 548: 533, 701: 533, 533, 704: 533, 533, 533, 533, 533, 814: 533, 819: 533}, - {532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 57: 532, 59: 532, 530: 532, 534: 532, 532, 532, 532, 532, 546: 532, 548: 532, 701: 532, 532, 704: 532, 532, 532, 532, 532, 814: 532, 819: 532}, - {528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 57: 528, 59: 528, 530: 528, 528, 534: 528, 528, 528, 528, 528, 546: 528, 548: 528, 701: 528, 528, 704: 528, 528, 528, 528, 528, 814: 528, 819: 528}, - {527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 57: 527, 59: 527, 530: 527, 527, 534: 527, 527, 527, 527, 527, 546: 527, 548: 527, 701: 527, 527, 704: 527, 527, 527, 527, 527, 814: 527, 819: 527}, + {541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 57: 541, 59: 541, 535: 541, 541, 539: 541, 541, 541, 541, 541, 551: 541, 553: 541, 706: 541, 708: 541, 541, 541, 541, 541, 541, 821: 541, 825: 541}, + {540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 57: 540, 59: 540, 535: 540, 540, 539: 540, 540, 540, 540, 540, 551: 540, 553: 540, 706: 540, 708: 540, 540, 540, 540, 540, 540, 821: 540, 825: 540}, + {539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 57: 539, 59: 539, 535: 539, 539, 539: 539, 539, 539, 539, 539, 551: 539, 553: 539, 706: 539, 708: 539, 539, 539, 539, 539, 539, 821: 539, 825: 539}, + {538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 57: 538, 59: 538, 535: 538, 538, 539: 538, 538, 538, 538, 538, 551: 538, 553: 538, 706: 538, 708: 538, 538, 538, 538, 538, 538, 821: 538, 825: 538}, + {537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 57: 537, 59: 537, 535: 537, 537, 539: 537, 537, 537, 537, 537, 551: 537, 553: 537, 706: 537, 708: 537, 537, 537, 537, 537, 537, 821: 537, 825: 537}, // 2125 - {526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 57: 526, 59: 526, 530: 526, 526, 534: 526, 526, 526, 526, 526, 546: 526, 548: 526, 701: 526, 526, 704: 526, 526, 526, 526, 526, 814: 526, 819: 526}, - {525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 57: 525, 59: 525, 530: 525, 525, 534: 525, 525, 525, 525, 525, 546: 525, 548: 525, 701: 525, 525, 704: 525, 525, 525, 525, 525, 814: 525, 819: 525}, - {524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 57: 524, 59: 524, 530: 524, 524, 534: 524, 524, 524, 524, 524, 546: 524, 548: 524, 701: 524, 524, 704: 524, 524, 524, 524, 524, 814: 524, 819: 524}, - {523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 57: 523, 59: 523, 530: 523, 523, 534: 523, 523, 523, 523, 523, 546: 523, 548: 523, 701: 523, 523, 704: 523, 523, 523, 523, 523, 814: 523, 819: 523, 1421: 5076}, - {521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 57: 521, 59: 521, 530: 521, 521, 534: 521, 521, 521, 521, 521, 546: 521, 548: 521, 701: 521, 521, 704: 521, 521, 521, 521, 521, 814: 521, 819: 521}, + {536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 57: 536, 59: 536, 535: 536, 536, 539: 536, 536, 536, 536, 536, 551: 536, 553: 536, 706: 536, 708: 536, 536, 536, 536, 536, 536, 821: 536, 825: 536}, + {535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 57: 535, 59: 535, 535: 535, 535, 539: 535, 535, 535, 535, 535, 551: 535, 553: 535, 706: 535, 708: 535, 535, 535, 535, 535, 535, 821: 535, 825: 535}, + {534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 57: 534, 59: 534, 535: 534, 539: 534, 534, 534, 534, 534, 551: 534, 553: 534, 706: 534, 708: 534, 534, 534, 534, 534, 534, 821: 534, 825: 534}, + {533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 57: 533, 59: 533, 535: 533, 539: 533, 533, 533, 533, 533, 551: 533, 553: 533, 706: 533, 708: 533, 533, 533, 533, 533, 533, 821: 533, 825: 533}, + {529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 57: 529, 59: 529, 535: 529, 529, 539: 529, 529, 529, 529, 529, 551: 529, 553: 529, 706: 529, 708: 529, 529, 529, 529, 529, 529, 821: 529, 825: 529}, // 2130 - {520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 57: 520, 59: 520, 530: 520, 520, 534: 520, 520, 520, 520, 520, 546: 520, 548: 520, 701: 520, 520, 704: 520, 520, 520, 520, 520, 814: 520, 819: 520}, - {519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 57: 519, 530: 519, 519, 534: 519, 519, 519, 519, 519, 546: 519, 548: 519, 701: 519, 519, 704: 519, 519, 519, 519, 519}, - {452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 16: 4418, 57: 452, 530: 452, 4408, 534: 452, 452, 452, 452, 452, 546: 452, 548: 452, 553: 4419, 586: 4415, 701: 452, 452, 704: 452, 452, 452, 452, 452, 4417, 841: 5073, 853: 4416, 896: 5074}, - {452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 16: 4418, 57: 452, 530: 452, 4408, 534: 452, 452, 452, 452, 452, 546: 452, 548: 452, 553: 4419, 586: 4415, 701: 452, 452, 704: 452, 452, 452, 452, 452, 4417, 841: 5070, 853: 4416, 896: 5071}, - {531: 4408, 841: 5068}, + {528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 57: 528, 59: 528, 535: 528, 528, 539: 528, 528, 528, 528, 528, 551: 528, 553: 528, 706: 528, 708: 528, 528, 528, 528, 528, 528, 821: 528, 825: 528}, + {527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 57: 527, 59: 527, 535: 527, 527, 539: 527, 527, 527, 527, 527, 551: 527, 553: 527, 706: 527, 708: 527, 527, 527, 527, 527, 527, 821: 527, 825: 527}, + {526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 57: 526, 59: 526, 535: 526, 526, 539: 526, 526, 526, 526, 526, 551: 526, 553: 526, 706: 526, 708: 526, 526, 526, 526, 526, 526, 821: 526, 825: 526}, + {525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 57: 525, 59: 525, 535: 525, 525, 539: 525, 525, 525, 525, 525, 551: 525, 553: 525, 706: 525, 708: 525, 525, 525, 525, 525, 525, 821: 525, 825: 525}, + {524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 57: 524, 59: 524, 535: 524, 524, 539: 524, 524, 524, 524, 524, 551: 524, 553: 524, 706: 524, 708: 524, 524, 524, 524, 524, 524, 821: 524, 825: 524, 1428: 5099}, // 2135 - {531: 4408, 841: 5066}, - {465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 57: 465, 530: 465, 4408, 534: 465, 465, 465, 465, 465, 546: 465, 548: 465, 701: 465, 465, 704: 465, 465, 465, 465, 465, 841: 4409, 888: 5065}, - {531: 4408, 841: 5064}, - {510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 57: 510, 530: 510, 534: 510, 510, 510, 510, 510, 546: 510, 548: 510, 701: 510, 510, 704: 510, 510, 510, 510, 510}, - {452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 16: 4418, 57: 452, 151: 5048, 5050, 5049, 530: 452, 534: 452, 452, 452, 452, 452, 546: 452, 548: 452, 553: 4419, 586: 4415, 701: 452, 452, 704: 452, 452, 452, 452, 452, 4417, 853: 4416, 896: 5047, 987: 5063}, + {522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 57: 522, 59: 522, 535: 522, 522, 539: 522, 522, 522, 522, 522, 551: 522, 553: 522, 706: 522, 708: 522, 522, 522, 522, 522, 522, 821: 522, 825: 522}, + {521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 57: 521, 59: 521, 535: 521, 521, 539: 521, 521, 521, 521, 521, 551: 521, 553: 521, 706: 521, 708: 521, 521, 521, 521, 521, 521, 821: 521, 825: 521}, + {520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 57: 520, 535: 520, 520, 539: 520, 520, 520, 520, 520, 551: 520, 553: 520, 706: 520, 708: 520, 520, 520, 520, 520, 520}, + {453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 16: 4441, 57: 453, 535: 453, 4431, 539: 453, 453, 453, 453, 453, 551: 453, 553: 453, 558: 4442, 591: 4438, 706: 453, 708: 453, 453, 453, 453, 453, 453, 4440, 847: 5096, 859: 4439, 902: 5097}, + {453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 16: 4441, 57: 453, 535: 453, 4431, 539: 453, 453, 453, 453, 453, 551: 453, 553: 453, 558: 4442, 591: 4438, 706: 453, 708: 453, 453, 453, 453, 453, 453, 4440, 847: 5093, 859: 4439, 902: 5094}, // 2140 - {531: 5059}, - {531: 5052}, - {506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 57: 506, 530: 506, 534: 506, 506, 506, 506, 506, 546: 506, 548: 506, 701: 506, 506, 704: 506, 506, 506, 506, 506}, - {452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 16: 4418, 57: 452, 151: 5048, 5050, 5049, 530: 452, 534: 452, 452, 452, 452, 452, 546: 452, 548: 452, 553: 5045, 586: 4415, 701: 452, 452, 704: 452, 452, 452, 452, 452, 5044, 732: 5003, 5002, 740: 5046, 853: 4416, 896: 5047, 987: 5043, 1025: 5042}, - {503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 16: 503, 57: 503, 530: 503, 503, 534: 503, 503, 503, 503, 503, 546: 503, 548: 503, 553: 503, 586: 503, 701: 503, 503, 704: 503, 503, 503, 503, 503, 503, 942: 5041}, + {536: 4431, 847: 5091}, + {536: 4431, 847: 5089}, + {466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 57: 466, 535: 466, 4431, 539: 466, 466, 466, 466, 466, 551: 466, 553: 466, 706: 466, 708: 466, 466, 466, 466, 466, 466, 847: 4432, 894: 5088}, + {536: 4431, 847: 5087}, + {511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 57: 511, 535: 511, 539: 511, 511, 511, 511, 511, 551: 511, 553: 511, 706: 511, 708: 511, 511, 511, 511, 511, 511}, // 2145 - {502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 16: 502, 57: 502, 530: 502, 502, 534: 502, 502, 502, 502, 502, 546: 502, 548: 502, 553: 502, 586: 502, 701: 502, 502, 704: 502, 502, 502, 502, 502, 502, 942: 5040}, - {501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 16: 501, 57: 501, 530: 501, 501, 534: 501, 501, 501, 501, 501, 546: 501, 548: 501, 553: 501, 586: 501, 701: 501, 501, 704: 501, 501, 501, 501, 501, 501, 732: 5038, 5037, 942: 5039}, - {553: 5032, 709: 5031, 732: 5034, 5033}, - {496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 16: 496, 57: 496, 151: 496, 496, 496, 530: 496, 496, 534: 496, 496, 496, 496, 496, 546: 496, 548: 496, 553: 496, 586: 496, 701: 496, 496, 704: 496, 496, 496, 496, 496, 496}, - {495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 16: 495, 57: 495, 151: 495, 495, 495, 530: 495, 495, 534: 495, 495, 495, 495, 495, 546: 495, 548: 495, 553: 495, 586: 495, 701: 495, 495, 704: 495, 495, 495, 495, 495, 495}, + {453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 16: 4441, 57: 453, 151: 5071, 5073, 5072, 535: 453, 539: 453, 453, 453, 453, 453, 551: 453, 553: 453, 558: 4442, 591: 4438, 706: 453, 708: 453, 453, 453, 453, 453, 453, 4440, 859: 4439, 902: 5070, 993: 5086}, + {536: 5082}, + {536: 5075}, + {507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 57: 507, 535: 507, 539: 507, 507, 507, 507, 507, 551: 507, 553: 507, 706: 507, 708: 507, 507, 507, 507, 507, 507}, + {453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 16: 4441, 57: 453, 151: 5071, 5073, 5072, 535: 453, 539: 453, 453, 453, 453, 453, 551: 453, 553: 453, 558: 5068, 591: 4438, 706: 453, 708: 453, 453, 453, 453, 453, 453, 5067, 737: 5026, 5025, 745: 5069, 859: 4439, 902: 5070, 993: 5066, 1031: 5065}, // 2150 - {531: 492}, - {486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 57: 486, 59: 486, 530: 486, 486, 534: 486, 486, 486, 486, 486, 546: 486, 548: 486, 701: 486, 486, 704: 486, 486, 486, 486, 486, 814: 486, 819: 486}, - {485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 57: 485, 59: 485, 530: 485, 485, 534: 485, 485, 485, 485, 485, 546: 485, 548: 485, 701: 485, 485, 704: 485, 485, 485, 485, 485, 814: 485, 819: 485}, - {484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 57: 484, 530: 484, 534: 484, 484, 484, 484, 484, 546: 484, 548: 484, 701: 484, 484, 704: 484, 484, 484, 484, 484}, - {465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 57: 465, 530: 465, 4408, 534: 465, 465, 465, 465, 465, 546: 465, 548: 465, 701: 465, 465, 704: 465, 465, 465, 465, 465, 841: 4409, 888: 5030}, + {504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 16: 504, 57: 504, 535: 504, 504, 539: 504, 504, 504, 504, 504, 551: 504, 553: 504, 558: 504, 591: 504, 706: 504, 708: 504, 504, 504, 504, 504, 504, 504, 949: 5064}, + {503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 16: 503, 57: 503, 535: 503, 503, 539: 503, 503, 503, 503, 503, 551: 503, 553: 503, 558: 503, 591: 503, 706: 503, 708: 503, 503, 503, 503, 503, 503, 503, 949: 5063}, + {502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 16: 502, 57: 502, 535: 502, 502, 539: 502, 502, 502, 502, 502, 551: 502, 553: 502, 558: 502, 591: 502, 706: 502, 708: 502, 502, 502, 502, 502, 502, 502, 737: 5061, 5060, 949: 5062}, + {558: 5055, 714: 5054, 737: 5057, 5056}, + {497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 16: 497, 57: 497, 151: 497, 497, 497, 535: 497, 497, 539: 497, 497, 497, 497, 497, 551: 497, 553: 497, 558: 497, 591: 497, 706: 497, 708: 497, 497, 497, 497, 497, 497, 497}, // 2155 - {482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 57: 482, 530: 482, 534: 482, 482, 482, 482, 482, 546: 482, 548: 482, 701: 482, 482, 704: 482, 482, 482, 482, 482}, - {481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 57: 481, 530: 481, 534: 481, 481, 481, 481, 481, 546: 481, 548: 481, 701: 481, 481, 704: 481, 481, 481, 481, 481}, - {479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 16: 479, 57: 479, 151: 479, 479, 479, 530: 479, 534: 479, 479, 479, 479, 479, 546: 479, 548: 479, 553: 479, 586: 479, 701: 479, 479, 704: 479, 479, 479, 479, 479, 479}, - {465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 16: 465, 57: 465, 151: 465, 465, 465, 530: 465, 4408, 534: 465, 465, 465, 465, 465, 546: 465, 548: 465, 553: 465, 586: 465, 701: 465, 465, 704: 465, 465, 465, 465, 465, 465, 841: 4409, 888: 5029}, - {477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 16: 477, 57: 477, 151: 477, 477, 477, 530: 477, 534: 477, 477, 477, 477, 477, 546: 477, 548: 477, 553: 477, 586: 477, 701: 477, 477, 704: 477, 477, 477, 477, 477, 477}, + {496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 16: 496, 57: 496, 151: 496, 496, 496, 535: 496, 496, 539: 496, 496, 496, 496, 496, 551: 496, 553: 496, 558: 496, 591: 496, 706: 496, 708: 496, 496, 496, 496, 496, 496, 496}, + {536: 493}, + {487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 57: 487, 59: 487, 535: 487, 487, 539: 487, 487, 487, 487, 487, 551: 487, 553: 487, 706: 487, 708: 487, 487, 487, 487, 487, 487, 821: 487, 825: 487}, + {486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 57: 486, 59: 486, 535: 486, 486, 539: 486, 486, 486, 486, 486, 551: 486, 553: 486, 706: 486, 708: 486, 486, 486, 486, 486, 486, 821: 486, 825: 486}, + {485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 57: 485, 535: 485, 539: 485, 485, 485, 485, 485, 551: 485, 553: 485, 706: 485, 708: 485, 485, 485, 485, 485, 485}, // 2160 - {476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 16: 476, 57: 476, 151: 476, 476, 476, 530: 476, 534: 476, 476, 476, 476, 476, 546: 476, 548: 476, 553: 476, 586: 476, 701: 476, 476, 704: 476, 476, 476, 476, 476, 476}, - {471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 57: 471, 530: 471, 534: 471, 471, 471, 471, 471, 546: 471, 548: 471, 701: 471, 471, 704: 471, 471, 471, 471, 471}, - {465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 57: 465, 530: 465, 4408, 534: 465, 465, 465, 465, 465, 546: 465, 548: 465, 701: 465, 465, 704: 465, 465, 465, 465, 465, 841: 4409, 888: 5028}, - {465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 57: 465, 530: 465, 4408, 534: 465, 465, 465, 465, 465, 546: 465, 548: 465, 701: 465, 465, 704: 465, 465, 465, 465, 465, 841: 4409, 888: 5027}, - {465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 57: 465, 530: 465, 4408, 534: 465, 465, 465, 465, 465, 546: 465, 548: 465, 701: 465, 465, 704: 465, 465, 465, 465, 465, 841: 4409, 888: 5026}, + {466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 57: 466, 535: 466, 4431, 539: 466, 466, 466, 466, 466, 551: 466, 553: 466, 706: 466, 708: 466, 466, 466, 466, 466, 466, 847: 4432, 894: 5053}, + {483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 57: 483, 535: 483, 539: 483, 483, 483, 483, 483, 551: 483, 553: 483, 706: 483, 708: 483, 483, 483, 483, 483, 483}, + {482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 57: 482, 535: 482, 539: 482, 482, 482, 482, 482, 551: 482, 553: 482, 706: 482, 708: 482, 482, 482, 482, 482, 482}, + {480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 16: 480, 57: 480, 151: 480, 480, 480, 535: 480, 539: 480, 480, 480, 480, 480, 551: 480, 553: 480, 558: 480, 591: 480, 706: 480, 708: 480, 480, 480, 480, 480, 480, 480}, + {466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 16: 466, 57: 466, 151: 466, 466, 466, 535: 466, 4431, 539: 466, 466, 466, 466, 466, 551: 466, 553: 466, 558: 466, 591: 466, 706: 466, 708: 466, 466, 466, 466, 466, 466, 466, 847: 4432, 894: 5052}, // 2165 - {465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 57: 465, 59: 465, 530: 465, 4408, 534: 465, 465, 465, 465, 465, 546: 465, 548: 465, 701: 465, 465, 704: 465, 465, 465, 465, 465, 814: 465, 819: 465, 841: 4409, 888: 5020}, - {460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 57: 460, 59: 460, 530: 460, 534: 460, 460, 460, 460, 460, 546: 460, 548: 460, 701: 460, 460, 704: 460, 460, 460, 460, 460, 814: 460, 819: 460, 979: 5021}, - {467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 57: 467, 59: 5023, 530: 467, 534: 467, 467, 467, 467, 467, 546: 467, 548: 467, 701: 467, 467, 704: 467, 467, 467, 467, 467, 814: 5022, 819: 5024, 978: 5025}, - {463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 57: 463, 59: 463, 530: 463, 534: 463, 463, 463, 463, 463, 546: 463, 548: 463, 701: 463, 463, 704: 463, 463, 463, 463, 463, 814: 463, 819: 463}, - {462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 57: 462, 59: 462, 530: 462, 534: 462, 462, 462, 462, 462, 546: 462, 548: 462, 701: 462, 462, 704: 462, 462, 462, 462, 462, 814: 462, 819: 462}, + {478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 16: 478, 57: 478, 151: 478, 478, 478, 535: 478, 539: 478, 478, 478, 478, 478, 551: 478, 553: 478, 558: 478, 591: 478, 706: 478, 708: 478, 478, 478, 478, 478, 478, 478}, + {477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 16: 477, 57: 477, 151: 477, 477, 477, 535: 477, 539: 477, 477, 477, 477, 477, 551: 477, 553: 477, 558: 477, 591: 477, 706: 477, 708: 477, 477, 477, 477, 477, 477, 477}, + {472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 57: 472, 535: 472, 539: 472, 472, 472, 472, 472, 551: 472, 553: 472, 706: 472, 708: 472, 472, 472, 472, 472, 472}, + {466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 57: 466, 535: 466, 4431, 539: 466, 466, 466, 466, 466, 551: 466, 553: 466, 706: 466, 708: 466, 466, 466, 466, 466, 466, 847: 4432, 894: 5051}, + {466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 57: 466, 535: 466, 4431, 539: 466, 466, 466, 466, 466, 551: 466, 553: 466, 706: 466, 708: 466, 466, 466, 466, 466, 466, 847: 4432, 894: 5050}, // 2170 - {461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 57: 461, 59: 461, 530: 461, 534: 461, 461, 461, 461, 461, 546: 461, 548: 461, 701: 461, 461, 704: 461, 461, 461, 461, 461, 814: 461, 819: 461}, - {459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 57: 459, 59: 459, 530: 459, 534: 459, 459, 459, 459, 459, 546: 459, 548: 459, 701: 459, 459, 704: 459, 459, 459, 459, 459, 814: 459, 819: 459}, - {468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 57: 468, 530: 468, 534: 468, 468, 468, 468, 468, 546: 468, 548: 468, 701: 468, 468, 704: 468, 468, 468, 468, 468}, - {469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 57: 469, 530: 469, 534: 469, 469, 469, 469, 469, 546: 469, 548: 469, 701: 469, 469, 704: 469, 469, 469, 469, 469}, - {470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 57: 470, 530: 470, 534: 470, 470, 470, 470, 470, 546: 470, 548: 470, 701: 470, 470, 704: 470, 470, 470, 470, 470}, + {466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 57: 466, 535: 466, 4431, 539: 466, 466, 466, 466, 466, 551: 466, 553: 466, 706: 466, 708: 466, 466, 466, 466, 466, 466, 847: 4432, 894: 5049}, + {466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 57: 466, 59: 466, 535: 466, 4431, 539: 466, 466, 466, 466, 466, 551: 466, 553: 466, 706: 466, 708: 466, 466, 466, 466, 466, 466, 821: 466, 825: 466, 847: 4432, 894: 5043}, + {461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 57: 461, 59: 461, 535: 461, 539: 461, 461, 461, 461, 461, 551: 461, 553: 461, 706: 461, 708: 461, 461, 461, 461, 461, 461, 821: 461, 825: 461, 985: 5044}, + {468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 57: 468, 59: 5046, 535: 468, 539: 468, 468, 468, 468, 468, 551: 468, 553: 468, 706: 468, 708: 468, 468, 468, 468, 468, 468, 821: 5045, 825: 5047, 984: 5048}, + {464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 57: 464, 59: 464, 535: 464, 539: 464, 464, 464, 464, 464, 551: 464, 553: 464, 706: 464, 708: 464, 464, 464, 464, 464, 464, 821: 464, 825: 464}, // 2175 - {478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 16: 478, 57: 478, 151: 478, 478, 478, 530: 478, 534: 478, 478, 478, 478, 478, 546: 478, 548: 478, 553: 478, 586: 478, 701: 478, 478, 704: 478, 478, 478, 478, 478, 478}, - {483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 57: 483, 530: 483, 534: 483, 483, 483, 483, 483, 546: 483, 548: 483, 701: 483, 483, 704: 483, 483, 483, 483, 483}, - {500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 16: 500, 57: 500, 530: 500, 500, 534: 500, 500, 500, 500, 500, 546: 500, 548: 500, 553: 500, 586: 500, 701: 500, 500, 704: 500, 500, 500, 500, 500, 500, 942: 5036}, - {499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 16: 499, 57: 499, 530: 499, 499, 534: 499, 499, 499, 499, 499, 546: 499, 548: 499, 553: 499, 586: 499, 701: 499, 499, 704: 499, 499, 499, 499, 499, 499, 942: 5035}, - {531: 494}, + {463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 57: 463, 59: 463, 535: 463, 539: 463, 463, 463, 463, 463, 551: 463, 553: 463, 706: 463, 708: 463, 463, 463, 463, 463, 463, 821: 463, 825: 463}, + {462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 57: 462, 59: 462, 535: 462, 539: 462, 462, 462, 462, 462, 551: 462, 553: 462, 706: 462, 708: 462, 462, 462, 462, 462, 462, 821: 462, 825: 462}, + {460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 57: 460, 59: 460, 535: 460, 539: 460, 460, 460, 460, 460, 551: 460, 553: 460, 706: 460, 708: 460, 460, 460, 460, 460, 460, 821: 460, 825: 460}, + {469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 57: 469, 535: 469, 539: 469, 469, 469, 469, 469, 551: 469, 553: 469, 706: 469, 708: 469, 469, 469, 469, 469, 469}, + {470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 57: 470, 535: 470, 539: 470, 470, 470, 470, 470, 551: 470, 553: 470, 706: 470, 708: 470, 470, 470, 470, 470, 470}, // 2180 - {531: 493}, - {531: 488}, - {531: 489}, - {531: 491}, - {531: 490}, + {471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 57: 471, 535: 471, 539: 471, 471, 471, 471, 471, 551: 471, 553: 471, 706: 471, 708: 471, 471, 471, 471, 471, 471}, + {479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 16: 479, 57: 479, 151: 479, 479, 479, 535: 479, 539: 479, 479, 479, 479, 479, 551: 479, 553: 479, 558: 479, 591: 479, 706: 479, 708: 479, 479, 479, 479, 479, 479, 479}, + {484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 57: 484, 535: 484, 539: 484, 484, 484, 484, 484, 551: 484, 553: 484, 706: 484, 708: 484, 484, 484, 484, 484, 484}, + {501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 16: 501, 57: 501, 535: 501, 501, 539: 501, 501, 501, 501, 501, 551: 501, 553: 501, 558: 501, 591: 501, 706: 501, 708: 501, 501, 501, 501, 501, 501, 501, 949: 5059}, + {500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 16: 500, 57: 500, 535: 500, 500, 539: 500, 500, 500, 500, 500, 551: 500, 553: 500, 558: 500, 591: 500, 706: 500, 708: 500, 500, 500, 500, 500, 500, 500, 949: 5058}, // 2185 - {531: 487}, - {497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 16: 497, 57: 497, 151: 497, 497, 497, 530: 497, 497, 534: 497, 497, 497, 497, 497, 546: 497, 548: 497, 553: 497, 586: 497, 701: 497, 497, 704: 497, 497, 497, 497, 497, 497}, - {498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 16: 498, 57: 498, 151: 498, 498, 498, 530: 498, 498, 534: 498, 498, 498, 498, 498, 546: 498, 548: 498, 553: 498, 586: 498, 701: 498, 498, 704: 498, 498, 498, 498, 498, 498}, - {452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 16: 4418, 57: 452, 151: 5048, 5050, 5049, 530: 452, 534: 452, 452, 452, 452, 452, 546: 452, 548: 452, 553: 4419, 586: 4415, 701: 452, 452, 704: 452, 452, 452, 452, 452, 4417, 853: 4416, 896: 5047, 987: 5051}, - {504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 57: 504, 530: 504, 534: 504, 504, 504, 504, 504, 546: 504, 548: 504, 701: 504, 504, 704: 504, 504, 504, 504, 504}, + {536: 495}, + {536: 494}, + {536: 489}, + {536: 490}, + {536: 492}, // 2190 - {557: 4421, 942: 5041}, - {557: 4420, 942: 5040}, - {480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 57: 480, 530: 480, 534: 480, 480, 480, 480, 480, 546: 480, 548: 480, 701: 480, 480, 704: 480, 480, 480, 480, 480}, - {475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 57: 475, 530: 475, 534: 475, 475, 475, 475, 475, 546: 475, 548: 475, 701: 475, 475, 704: 475, 475, 475, 475, 475}, - {474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 57: 474, 530: 474, 534: 474, 474, 474, 474, 474, 546: 474, 548: 474, 701: 474, 474, 704: 474, 474, 474, 474, 474}, + {536: 491}, + {536: 488}, + {498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 16: 498, 57: 498, 151: 498, 498, 498, 535: 498, 498, 539: 498, 498, 498, 498, 498, 551: 498, 553: 498, 558: 498, 591: 498, 706: 498, 708: 498, 498, 498, 498, 498, 498, 498}, + {499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 16: 499, 57: 499, 151: 499, 499, 499, 535: 499, 499, 539: 499, 499, 499, 499, 499, 551: 499, 553: 499, 558: 499, 591: 499, 706: 499, 708: 499, 499, 499, 499, 499, 499, 499}, + {453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 16: 4441, 57: 453, 151: 5071, 5073, 5072, 535: 453, 539: 453, 453, 453, 453, 453, 551: 453, 553: 453, 558: 4442, 591: 4438, 706: 453, 708: 453, 453, 453, 453, 453, 453, 4440, 859: 4439, 902: 5070, 993: 5074}, // 2195 - {473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 57: 473, 530: 473, 534: 473, 473, 473, 473, 473, 546: 473, 548: 473, 701: 473, 473, 704: 473, 473, 473, 473, 473}, - {472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 57: 472, 530: 472, 534: 472, 472, 472, 472, 472, 546: 472, 548: 472, 701: 472, 472, 704: 472, 472, 472, 472, 472}, - {505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 57: 505, 530: 505, 534: 505, 505, 505, 505, 505, 546: 505, 548: 505, 701: 505, 505, 704: 505, 505, 505, 505, 505}, - {533: 3960, 638: 3961, 640: 3962, 1021: 5054, 1297: 5053}, - {9: 5056, 57: 5055}, + {505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 57: 505, 535: 505, 539: 505, 505, 505, 505, 505, 551: 505, 553: 505, 706: 505, 708: 505, 505, 505, 505, 505, 505}, + {560: 4444, 949: 5064}, + {560: 4443, 949: 5063}, + {481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 57: 481, 535: 481, 539: 481, 481, 481, 481, 481, 551: 481, 553: 481, 706: 481, 708: 481, 481, 481, 481, 481, 481}, + {476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 57: 476, 535: 476, 539: 476, 476, 476, 476, 476, 551: 476, 553: 476, 706: 476, 708: 476, 476, 476, 476, 476, 476}, // 2200 - {9: 437, 57: 437}, - {452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 16: 4418, 57: 452, 151: 5048, 5050, 5049, 530: 452, 534: 452, 452, 452, 452, 452, 546: 452, 548: 452, 553: 4419, 586: 4415, 701: 452, 452, 704: 452, 452, 452, 452, 452, 4417, 853: 4416, 896: 5047, 987: 5058}, - {533: 3960, 638: 3961, 640: 3962, 1021: 5057}, - {9: 436, 57: 436}, - {507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 57: 507, 530: 507, 534: 507, 507, 507, 507, 507, 546: 507, 548: 507, 701: 507, 507, 704: 507, 507, 507, 507, 507}, + {475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 57: 475, 535: 475, 539: 475, 475, 475, 475, 475, 551: 475, 553: 475, 706: 475, 708: 475, 475, 475, 475, 475, 475}, + {474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 57: 474, 535: 474, 539: 474, 474, 474, 474, 474, 551: 474, 553: 474, 706: 474, 708: 474, 474, 474, 474, 474, 474}, + {473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 57: 473, 535: 473, 539: 473, 473, 473, 473, 473, 551: 473, 553: 473, 706: 473, 708: 473, 473, 473, 473, 473, 473}, + {506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 57: 506, 535: 506, 539: 506, 506, 506, 506, 506, 551: 506, 553: 506, 706: 506, 708: 506, 506, 506, 506, 506, 506}, + {538: 3983, 643: 3984, 645: 3985, 1027: 5077, 1303: 5076}, // 2205 - {533: 3960, 638: 3961, 640: 3962, 1021: 5054, 1297: 5060}, - {9: 5056, 57: 5061}, - {452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 16: 4418, 57: 452, 151: 5048, 5050, 5049, 530: 452, 534: 452, 452, 452, 452, 452, 546: 452, 548: 452, 553: 4419, 586: 4415, 701: 452, 452, 704: 452, 452, 452, 452, 452, 4417, 853: 4416, 896: 5047, 987: 5062}, - {508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 57: 508, 530: 508, 534: 508, 508, 508, 508, 508, 546: 508, 548: 508, 701: 508, 508, 704: 508, 508, 508, 508, 508}, - {509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 57: 509, 530: 509, 534: 509, 509, 509, 509, 509, 546: 509, 548: 509, 701: 509, 509, 704: 509, 509, 509, 509, 509}, + {9: 5079, 57: 5078}, + {9: 438, 57: 438}, + {453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 16: 4441, 57: 453, 151: 5071, 5073, 5072, 535: 453, 539: 453, 453, 453, 453, 453, 551: 453, 553: 453, 558: 4442, 591: 4438, 706: 453, 708: 453, 453, 453, 453, 453, 453, 4440, 859: 4439, 902: 5070, 993: 5081}, + {538: 3983, 643: 3984, 645: 3985, 1027: 5080}, + {9: 437, 57: 437}, // 2210 - {511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 57: 511, 530: 511, 534: 511, 511, 511, 511, 511, 546: 511, 548: 511, 701: 511, 511, 704: 511, 511, 511, 511, 511}, - {512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 57: 512, 530: 512, 534: 512, 512, 512, 512, 512, 546: 512, 548: 512, 701: 512, 512, 704: 512, 512, 512, 512, 512}, - {452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 16: 4418, 57: 452, 530: 452, 534: 452, 452, 452, 452, 452, 546: 452, 548: 452, 553: 4419, 586: 4415, 701: 452, 452, 704: 452, 452, 452, 452, 452, 4417, 853: 4416, 896: 5067}, - {513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 57: 513, 530: 513, 534: 513, 513, 513, 513, 513, 546: 513, 548: 513, 701: 513, 513, 704: 513, 513, 513, 513, 513}, - {452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 16: 4418, 57: 452, 530: 452, 534: 452, 452, 452, 452, 452, 546: 452, 548: 452, 553: 4419, 586: 4415, 701: 452, 452, 704: 452, 452, 452, 452, 452, 4417, 853: 4416, 896: 5069}, + {508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 57: 508, 535: 508, 539: 508, 508, 508, 508, 508, 551: 508, 553: 508, 706: 508, 708: 508, 508, 508, 508, 508, 508}, + {538: 3983, 643: 3984, 645: 3985, 1027: 5077, 1303: 5083}, + {9: 5079, 57: 5084}, + {453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 16: 4441, 57: 453, 151: 5071, 5073, 5072, 535: 453, 539: 453, 453, 453, 453, 453, 551: 453, 553: 453, 558: 4442, 591: 4438, 706: 453, 708: 453, 453, 453, 453, 453, 453, 4440, 859: 4439, 902: 5070, 993: 5085}, + {509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 57: 509, 535: 509, 539: 509, 509, 509, 509, 509, 551: 509, 553: 509, 706: 509, 708: 509, 509, 509, 509, 509, 509}, // 2215 - {514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 57: 514, 530: 514, 534: 514, 514, 514, 514, 514, 546: 514, 548: 514, 701: 514, 514, 704: 514, 514, 514, 514, 514}, - {452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 16: 4418, 57: 452, 530: 452, 534: 452, 452, 452, 452, 452, 546: 452, 548: 452, 553: 4419, 586: 4415, 701: 452, 452, 704: 452, 452, 452, 452, 452, 4417, 853: 4416, 896: 5072}, - {515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 57: 515, 530: 515, 534: 515, 515, 515, 515, 515, 546: 515, 548: 515, 701: 515, 515, 704: 515, 515, 515, 515, 515}, - {516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 57: 516, 530: 516, 534: 516, 516, 516, 516, 516, 546: 516, 548: 516, 701: 516, 516, 704: 516, 516, 516, 516, 516}, - {452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 16: 4418, 57: 452, 530: 452, 534: 452, 452, 452, 452, 452, 546: 452, 548: 452, 553: 4419, 586: 4415, 701: 452, 452, 704: 452, 452, 452, 452, 452, 4417, 853: 4416, 896: 5075}, + {510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 57: 510, 535: 510, 539: 510, 510, 510, 510, 510, 551: 510, 553: 510, 706: 510, 708: 510, 510, 510, 510, 510, 510}, + {512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 57: 512, 535: 512, 539: 512, 512, 512, 512, 512, 551: 512, 553: 512, 706: 512, 708: 512, 512, 512, 512, 512, 512}, + {513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 57: 513, 535: 513, 539: 513, 513, 513, 513, 513, 551: 513, 553: 513, 706: 513, 708: 513, 513, 513, 513, 513, 513}, + {453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 16: 4441, 57: 453, 535: 453, 539: 453, 453, 453, 453, 453, 551: 453, 553: 453, 558: 4442, 591: 4438, 706: 453, 708: 453, 453, 453, 453, 453, 453, 4440, 859: 4439, 902: 5090}, + {514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 57: 514, 535: 514, 539: 514, 514, 514, 514, 514, 551: 514, 553: 514, 706: 514, 708: 514, 514, 514, 514, 514, 514}, // 2220 - {517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 57: 517, 530: 517, 534: 517, 517, 517, 517, 517, 546: 517, 548: 517, 701: 517, 517, 704: 517, 517, 517, 517, 517}, - {518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 57: 518, 530: 518, 534: 518, 518, 518, 518, 518, 546: 518, 548: 518, 701: 518, 518, 704: 518, 518, 518, 518, 518}, - {522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 57: 522, 59: 522, 530: 522, 522, 534: 522, 522, 522, 522, 522, 546: 522, 548: 522, 701: 522, 522, 704: 522, 522, 522, 522, 522, 814: 522, 819: 522}, - {546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 57: 546, 530: 546, 534: 546, 546, 546, 546, 546, 546: 546, 548: 546, 701: 546, 546, 704: 546, 546, 546, 546, 546}, - {460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 57: 460, 59: 460, 530: 460, 534: 460, 460, 460, 460, 460, 546: 460, 548: 460, 701: 460, 460, 704: 460, 460, 460, 460, 460, 814: 460, 819: 460, 979: 5079}, + {453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 16: 4441, 57: 453, 535: 453, 539: 453, 453, 453, 453, 453, 551: 453, 553: 453, 558: 4442, 591: 4438, 706: 453, 708: 453, 453, 453, 453, 453, 453, 4440, 859: 4439, 902: 5092}, + {515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 57: 515, 535: 515, 539: 515, 515, 515, 515, 515, 551: 515, 553: 515, 706: 515, 708: 515, 515, 515, 515, 515, 515}, + {453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 16: 4441, 57: 453, 535: 453, 539: 453, 453, 453, 453, 453, 551: 453, 553: 453, 558: 4442, 591: 4438, 706: 453, 708: 453, 453, 453, 453, 453, 453, 4440, 859: 4439, 902: 5095}, + {516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 57: 516, 535: 516, 539: 516, 516, 516, 516, 516, 551: 516, 553: 516, 706: 516, 708: 516, 516, 516, 516, 516, 516}, + {517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 57: 517, 535: 517, 539: 517, 517, 517, 517, 517, 551: 517, 553: 517, 706: 517, 708: 517, 517, 517, 517, 517, 517}, // 2225 - {547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 57: 547, 59: 5023, 530: 547, 534: 547, 547, 547, 547, 547, 546: 547, 548: 547, 701: 547, 547, 704: 547, 547, 547, 547, 547, 814: 5022, 819: 5024, 978: 5025}, - {460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 57: 460, 59: 460, 530: 460, 534: 460, 460, 460, 460, 460, 546: 460, 548: 460, 701: 460, 460, 704: 460, 460, 460, 460, 460, 814: 460, 819: 460, 979: 5081}, - {548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 57: 548, 59: 5023, 530: 548, 534: 548, 548, 548, 548, 548, 546: 548, 548: 548, 701: 548, 548, 704: 548, 548, 548, 548, 548, 814: 5022, 819: 5024, 978: 5025}, - {549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 57: 549, 59: 5023, 530: 549, 534: 549, 549, 549, 549, 549, 546: 549, 548: 549, 701: 549, 549, 704: 549, 549, 549, 549, 549, 814: 5022, 819: 5024, 978: 5025}, - {460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 57: 460, 59: 460, 530: 460, 534: 460, 460, 460, 460, 460, 546: 460, 548: 460, 701: 460, 460, 704: 460, 460, 460, 460, 460, 814: 460, 819: 460, 979: 5084}, + {453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 16: 4441, 57: 453, 535: 453, 539: 453, 453, 453, 453, 453, 551: 453, 553: 453, 558: 4442, 591: 4438, 706: 453, 708: 453, 453, 453, 453, 453, 453, 4440, 859: 4439, 902: 5098}, + {518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 57: 518, 535: 518, 539: 518, 518, 518, 518, 518, 551: 518, 553: 518, 706: 518, 708: 518, 518, 518, 518, 518, 518}, + {519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 57: 519, 535: 519, 539: 519, 519, 519, 519, 519, 551: 519, 553: 519, 706: 519, 708: 519, 519, 519, 519, 519, 519}, + {523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 57: 523, 59: 523, 535: 523, 523, 539: 523, 523, 523, 523, 523, 551: 523, 553: 523, 706: 523, 708: 523, 523, 523, 523, 523, 523, 821: 523, 825: 523}, + {547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 57: 547, 535: 547, 539: 547, 547, 547, 547, 547, 551: 547, 553: 547, 706: 547, 708: 547, 547, 547, 547, 547, 547}, // 2230 - {550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 57: 550, 59: 5023, 530: 550, 534: 550, 550, 550, 550, 550, 546: 550, 548: 550, 701: 550, 550, 704: 550, 550, 550, 550, 550, 814: 5022, 819: 5024, 978: 5025}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 701: 2684, 2684, 704: 2684, 2684, 710: 2684, 746: 2684, 2684, 770: 5229, 3051, 3052, 3050, 1290: 5228}, - {2614, 2614, 2614, 2614, 2614, 2614, 9: 2614, 2614, 2614, 57: 2614, 546: 2614}, - {701: 2591}, - {548: 5227}, + {461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 57: 461, 59: 461, 535: 461, 539: 461, 461, 461, 461, 461, 551: 461, 553: 461, 706: 461, 708: 461, 461, 461, 461, 461, 461, 821: 461, 825: 461, 985: 5102}, + {548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 57: 548, 59: 5046, 535: 548, 539: 548, 548, 548, 548, 548, 551: 548, 553: 548, 706: 548, 708: 548, 548, 548, 548, 548, 548, 821: 5045, 825: 5047, 984: 5048}, + {461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 57: 461, 59: 461, 535: 461, 539: 461, 461, 461, 461, 461, 551: 461, 553: 461, 706: 461, 708: 461, 461, 461, 461, 461, 461, 821: 461, 825: 461, 985: 5104}, + {549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 57: 549, 59: 5046, 535: 549, 539: 549, 549, 549, 549, 549, 551: 549, 553: 549, 706: 549, 708: 549, 549, 549, 549, 549, 549, 821: 5045, 825: 5047, 984: 5048}, + {550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 57: 550, 59: 5046, 535: 550, 539: 550, 550, 550, 550, 550, 551: 550, 553: 550, 706: 550, 708: 550, 550, 550, 550, 550, 550, 821: 5045, 825: 5047, 984: 5048}, // 2235 - {2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 57: 2581, 530: 2581, 534: 2581, 2581, 2581, 2581, 2581, 546: 2581, 548: 2581, 701: 2581, 2581, 704: 2581, 2581, 2581, 2581, 2581}, - {2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 57: 2580, 530: 2580, 534: 2580, 2580, 2580, 2580, 2580, 546: 2580, 548: 2580, 701: 2580, 2580, 704: 2580, 2580, 2580, 2580, 2580}, - {701: 5223}, - {2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 57: 2577, 530: 2577, 534: 2577, 2577, 2577, 2577, 2577, 546: 2577, 548: 2577, 701: 5222, 2577, 704: 2577, 2577, 2577, 2577, 2577}, - {56: 5210, 265: 5212, 408: 5213, 531: 5209, 533: 3586, 543: 4940, 4941, 548: 3577, 560: 3581, 629: 3576, 3578, 636: 3580, 3579, 3584, 640: 3585, 647: 3583, 5195, 5194, 5190, 5191, 653: 5192, 5193, 777: 4939, 779: 3582, 5207, 999: 5208, 1036: 5189, 1059: 5187, 5188, 5211, 1082: 5206, 1214: 5205, 1349: 5204}, + {461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 57: 461, 59: 461, 535: 461, 539: 461, 461, 461, 461, 461, 551: 461, 553: 461, 706: 461, 708: 461, 461, 461, 461, 461, 461, 821: 461, 825: 461, 985: 5107}, + {551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 57: 551, 59: 5046, 535: 551, 539: 551, 551, 551, 551, 551, 551: 551, 553: 551, 706: 551, 708: 551, 551, 551, 551, 551, 551, 821: 5045, 825: 5047, 984: 5048}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 706: 2701, 708: 2701, 2701, 2701, 715: 2701, 751: 2701, 2701, 777: 5252, 3068, 3069, 3067, 1296: 5251}, + {2628, 2628, 2628, 2628, 2628, 2628, 9: 2628, 2628, 2628, 57: 2628, 551: 2628}, + {706: 2605}, // 2240 - {535: 5202}, - {714: 5185}, - {533: 5184}, - {702: 5175}, - {537: 5168}, + {553: 5250}, + {2595, 2595, 2595, 2595, 2595, 2595, 2595, 2595, 2595, 2595, 2595, 2595, 2595, 2595, 2595, 57: 2595, 535: 2595, 539: 2595, 2595, 2595, 2595, 2595, 551: 2595, 553: 2595, 706: 2595, 708: 2595, 2595, 2595, 2595, 2595, 2595}, + {2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 57: 2594, 535: 2594, 539: 2594, 2594, 2594, 2594, 2594, 551: 2594, 553: 2594, 706: 2594, 708: 2594, 2594, 2594, 2594, 2594, 2594}, + {706: 5246}, + {2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 57: 2591, 535: 2591, 539: 2591, 2591, 2591, 2591, 2591, 551: 2591, 553: 2591, 706: 5245, 708: 2591, 2591, 2591, 2591, 2591, 2591}, // 2245 - {2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 57: 2569, 530: 2569, 534: 2569, 2569, 2569, 2569, 2569, 546: 2569, 548: 2569, 701: 2569, 2569, 704: 2569, 2569, 2569, 2569, 2569}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 586: 3735, 770: 3737, 3051, 3052, 3050, 805: 3734, 974: 5167}, - {177: 5165, 255: 5166, 535: 5164, 1333: 5163}, - {236: 5162, 300: 5161, 535: 5160, 1470: 5159}, - {2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 57: 2564, 530: 2564, 5153, 534: 2564, 2564, 2564, 2564, 2564, 546: 2564, 548: 2564, 701: 2564, 2564, 704: 2564, 2564, 2564, 2564, 2564, 1325: 5152}, + {56: 5233, 265: 5235, 412: 5236, 536: 5232, 538: 3608, 548: 4963, 4964, 553: 3599, 564: 3603, 634: 3598, 3600, 641: 3602, 3601, 3606, 645: 3607, 652: 3605, 5218, 5217, 5213, 5214, 658: 5215, 5216, 783: 4962, 785: 3604, 5230, 1005: 5231, 1042: 5212, 1065: 5210, 5211, 5234, 1088: 5229, 1220: 5228, 1356: 5227}, + {540: 5225}, + {719: 5208}, + {538: 5207}, + {709: 5198}, // 2250 - {366: 5151}, - {2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 57: 2550, 530: 2550, 534: 2550, 2550, 2550, 2550, 2550, 546: 2550, 548: 2550, 701: 2550, 2550, 704: 2550, 2550, 2550, 2550, 2550}, - {2547, 2547, 2547, 2547, 2547, 2547, 5096, 5102, 5090, 2547, 2547, 2547, 5094, 5103, 5101, 57: 2547, 530: 5095, 534: 3812, 5093, 3811, 2555, 5100, 546: 2547, 548: 5089, 701: 2592, 2685, 704: 5087, 5092, 5085, 5107, 5104, 915: 5088, 928: 5097, 1011: 5099, 1032: 5150, 1048: 5098, 1070: 5091}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 5108}, - {2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 57: 2483, 530: 2483, 5110, 534: 2483, 2483, 2483, 2483, 2483, 546: 2483, 548: 2483, 701: 2483, 2483, 704: 2483, 2483, 2483, 2483, 2483, 711: 2483, 1375: 5109}, + {542: 5191}, + {2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 57: 2583, 535: 2583, 539: 2583, 2583, 2583, 2583, 2583, 551: 2583, 553: 2583, 706: 2583, 708: 2583, 2583, 2583, 2583, 2583, 2583}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 591: 3758, 777: 3760, 3068, 3069, 3067, 811: 3757, 980: 5190}, + {177: 5188, 255: 5189, 540: 5187, 1340: 5186}, + {236: 5185, 300: 5184, 540: 5183, 1477: 5182}, // 2255 - {2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 57: 2537, 530: 2537, 534: 2537, 2537, 2537, 2537, 2537, 546: 2537, 548: 2537, 701: 2537, 2537, 704: 2537, 2537, 2537, 2537, 2537, 711: 5125, 1390: 5126, 5127}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 531: 5114, 770: 4024, 3051, 3052, 3050, 821: 5113, 922: 5112, 932: 5111}, - {9: 5123, 57: 5122}, - {9: 2481, 57: 2481}, - {9: 465, 57: 465, 531: 4408, 577: 465, 605: 465, 841: 4409, 888: 5120}, + {2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 57: 2578, 535: 2578, 5176, 539: 2578, 2578, 2578, 2578, 2578, 551: 2578, 553: 2578, 706: 2578, 708: 2578, 2578, 2578, 2578, 2578, 2578, 1331: 5175}, + {367: 5174}, + {2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 57: 2564, 535: 2564, 539: 2564, 2564, 2564, 2564, 2564, 551: 2564, 553: 2564, 706: 2564, 708: 2564, 2564, 2564, 2564, 2564, 2564}, + {2561, 2561, 2561, 2561, 2561, 2561, 5119, 5125, 5113, 2561, 2561, 2561, 5117, 5126, 5124, 57: 2561, 535: 5118, 539: 3835, 5116, 3834, 2569, 5123, 551: 2561, 553: 5112, 706: 2606, 708: 5110, 2702, 5115, 5108, 5130, 5127, 921: 5111, 935: 5120, 1017: 5122, 1038: 5173, 1054: 5121, 1076: 5114}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 5131}, // 2260 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 5115}, - {57: 5116, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {9: 1502, 57: 1502, 577: 5119, 605: 5118, 1064: 5117}, - {9: 2478, 57: 2478}, - {1501, 1501, 1501, 1501, 1501, 1501, 9: 1501, 57: 1501, 546: 1501}, + {2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 57: 2497, 535: 2497, 5133, 539: 2497, 2497, 2497, 2497, 2497, 551: 2497, 553: 2497, 706: 2497, 708: 2497, 2497, 2497, 2497, 2497, 2497, 716: 2497, 1382: 5132}, + {2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551, 57: 2551, 535: 2551, 539: 2551, 2551, 2551, 2551, 2551, 551: 2551, 553: 2551, 706: 2551, 708: 2551, 2551, 2551, 2551, 2551, 2551, 716: 5148, 1397: 5149, 5150}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 536: 5137, 777: 4047, 3068, 3069, 3067, 828: 5136, 928: 5135, 939: 5134}, + {9: 5146, 57: 5145}, + {9: 2495, 57: 2495}, // 2265 - {1500, 1500, 1500, 1500, 1500, 1500, 9: 1500, 57: 1500, 546: 1500}, - {9: 1502, 57: 1502, 577: 5119, 605: 5118, 1064: 5121}, - {9: 2479, 57: 2479}, - {2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 57: 2482, 530: 2482, 534: 2482, 2482, 2482, 2482, 2482, 546: 2482, 548: 2482, 701: 2482, 2482, 704: 2482, 2482, 2482, 2482, 2482, 711: 2482}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 531: 5114, 770: 4024, 3051, 3052, 3050, 821: 5113, 922: 5124}, + {9: 466, 57: 466, 536: 4431, 582: 466, 610: 466, 847: 4432, 894: 5143}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 5138}, + {57: 5139, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {9: 1511, 57: 1511, 582: 5142, 610: 5141, 1070: 5140}, + {9: 2492, 57: 2492}, // 2270 - {9: 2480, 57: 2480}, - {260: 5147, 416: 5148, 437: 5149}, - {2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 57: 2536, 530: 2536, 534: 2536, 2536, 2536, 2536, 2536, 546: 2536, 548: 2536, 701: 2536, 2536, 704: 2536, 2536, 2536, 2536, 2536}, - {2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 57: 2532, 530: 5129, 534: 2532, 2532, 2532, 2532, 2532, 546: 2532, 548: 2532, 701: 2532, 2532, 704: 2532, 2532, 2532, 2532, 2532, 1219: 5130, 5131, 1397: 5128}, - {2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 57: 2535, 530: 2535, 534: 2535, 2535, 2535, 2535, 2535, 546: 2535, 548: 2535, 701: 2535, 2535, 704: 2535, 2535, 2535, 2535, 2535}, + {1510, 1510, 1510, 1510, 1510, 1510, 9: 1510, 57: 1510, 551: 1510}, + {1509, 1509, 1509, 1509, 1509, 1509, 9: 1509, 57: 1509, 551: 1509}, + {9: 1511, 57: 1511, 582: 5142, 610: 5141, 1070: 5144}, + {9: 2493, 57: 2493}, + {2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 57: 2496, 535: 2496, 539: 2496, 2496, 2496, 2496, 2496, 551: 2496, 553: 2496, 706: 2496, 708: 2496, 2496, 2496, 2496, 2496, 2496, 716: 2496}, // 2275 - {714: 5145, 803: 5134}, - {2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 57: 2531, 530: 5143, 534: 2531, 2531, 2531, 2531, 2531, 546: 2531, 548: 2531, 701: 2531, 2531, 704: 2531, 2531, 2531, 2531, 2531, 1220: 5144}, - {2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 57: 2530, 530: 5132, 534: 2530, 2530, 2530, 2530, 2530, 546: 2530, 548: 2530, 701: 2530, 2530, 704: 2530, 2530, 2530, 2530, 2530, 1219: 5133}, - {803: 5134}, - {2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 57: 2528, 530: 2528, 534: 2528, 2528, 2528, 2528, 2528, 546: 2528, 548: 2528, 701: 2528, 2528, 704: 2528, 2528, 2528, 2528, 2528}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 536: 5137, 777: 4047, 3068, 3069, 3067, 828: 5136, 928: 5147}, + {9: 2494, 57: 2494}, + {260: 5170, 419: 5171, 441: 5172}, + {2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 57: 2550, 535: 2550, 539: 2550, 2550, 2550, 2550, 2550, 551: 2550, 553: 2550, 706: 2550, 708: 2550, 2550, 2550, 2550, 2550, 2550}, + {2546, 2546, 2546, 2546, 2546, 2546, 2546, 2546, 2546, 2546, 2546, 2546, 2546, 2546, 2546, 57: 2546, 535: 5152, 539: 2546, 2546, 2546, 2546, 2546, 551: 2546, 553: 2546, 706: 2546, 708: 2546, 2546, 2546, 2546, 2546, 2546, 1225: 5153, 5154, 1404: 5151}, // 2280 - {86: 5139, 557: 5138, 728: 5137, 730: 5136, 1249: 5135}, - {2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 57: 2534, 530: 2534, 534: 2534, 2534, 2534, 2534, 2534, 546: 2534, 548: 2534, 701: 2534, 2534, 704: 2534, 2534, 2534, 2534, 2534}, - {2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 57: 2527, 530: 2527, 534: 2527, 2527, 2527, 2527, 2527, 546: 2527, 548: 2527, 701: 2527, 2527, 704: 2527, 2527, 2527, 2527, 2527}, - {2526, 2526, 2526, 2526, 2526, 2526, 2526, 2526, 2526, 2526, 2526, 2526, 2526, 2526, 2526, 57: 2526, 530: 2526, 534: 2526, 2526, 2526, 2526, 2526, 546: 2526, 548: 2526, 701: 2526, 2526, 704: 2526, 2526, 2526, 2526, 2526}, - {535: 5142, 548: 5141}, + {2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 57: 2549, 535: 2549, 539: 2549, 2549, 2549, 2549, 2549, 551: 2549, 553: 2549, 706: 2549, 708: 2549, 2549, 2549, 2549, 2549, 2549}, + {719: 5168, 809: 5157}, + {2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 57: 2545, 535: 5166, 539: 2545, 2545, 2545, 2545, 2545, 551: 2545, 553: 2545, 706: 2545, 708: 2545, 2545, 2545, 2545, 2545, 2545, 1226: 5167}, + {2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544, 57: 2544, 535: 5155, 539: 2544, 2544, 2544, 2544, 2544, 551: 2544, 553: 2544, 706: 2544, 708: 2544, 2544, 2544, 2544, 2544, 2544, 1225: 5156}, + {809: 5157}, // 2285 - {93: 5140}, - {2524, 2524, 2524, 2524, 2524, 2524, 2524, 2524, 2524, 2524, 2524, 2524, 2524, 2524, 2524, 57: 2524, 530: 2524, 534: 2524, 2524, 2524, 2524, 2524, 546: 2524, 548: 2524, 701: 2524, 2524, 704: 2524, 2524, 2524, 2524, 2524}, - {2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 57: 2525, 530: 2525, 534: 2525, 2525, 2525, 2525, 2525, 546: 2525, 548: 2525, 701: 2525, 2525, 704: 2525, 2525, 2525, 2525, 2525}, - {2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 57: 2523, 530: 2523, 534: 2523, 2523, 2523, 2523, 2523, 546: 2523, 548: 2523, 701: 2523, 2523, 704: 2523, 2523, 2523, 2523, 2523}, - {714: 5145}, + {2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 57: 2542, 535: 2542, 539: 2542, 2542, 2542, 2542, 2542, 551: 2542, 553: 2542, 706: 2542, 708: 2542, 2542, 2542, 2542, 2542, 2542}, + {86: 5162, 560: 5161, 733: 5160, 735: 5159, 1255: 5158}, + {2548, 2548, 2548, 2548, 2548, 2548, 2548, 2548, 2548, 2548, 2548, 2548, 2548, 2548, 2548, 57: 2548, 535: 2548, 539: 2548, 2548, 2548, 2548, 2548, 551: 2548, 553: 2548, 706: 2548, 708: 2548, 2548, 2548, 2548, 2548, 2548}, + {2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 57: 2541, 535: 2541, 539: 2541, 2541, 2541, 2541, 2541, 551: 2541, 553: 2541, 706: 2541, 708: 2541, 2541, 2541, 2541, 2541, 2541}, + {2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540, 57: 2540, 535: 2540, 539: 2540, 2540, 2540, 2540, 2540, 551: 2540, 553: 2540, 706: 2540, 708: 2540, 2540, 2540, 2540, 2540, 2540}, // 2290 - {2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 57: 2529, 530: 2529, 534: 2529, 2529, 2529, 2529, 2529, 546: 2529, 548: 2529, 701: 2529, 2529, 704: 2529, 2529, 2529, 2529, 2529}, - {86: 5139, 557: 5138, 728: 5137, 730: 5136, 1249: 5146}, - {2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 57: 2533, 530: 2533, 534: 2533, 2533, 2533, 2533, 2533, 546: 2533, 548: 2533, 701: 2533, 2533, 704: 2533, 2533, 2533, 2533, 2533}, - {2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540, 57: 2540, 530: 2540, 534: 2540, 2540, 2540, 2540, 2540, 546: 2540, 548: 2540, 701: 2540, 2540, 704: 2540, 2540, 2540, 2540, 2540}, - {2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 57: 2539, 530: 2539, 534: 2539, 2539, 2539, 2539, 2539, 546: 2539, 548: 2539, 701: 2539, 2539, 704: 2539, 2539, 2539, 2539, 2539}, + {540: 5165, 553: 5164}, + {93: 5163}, + {2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 57: 2538, 535: 2538, 539: 2538, 2538, 2538, 2538, 2538, 551: 2538, 553: 2538, 706: 2538, 708: 2538, 2538, 2538, 2538, 2538, 2538}, + {2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 57: 2539, 535: 2539, 539: 2539, 2539, 2539, 2539, 2539, 551: 2539, 553: 2539, 706: 2539, 708: 2539, 2539, 2539, 2539, 2539, 2539}, + {2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 57: 2537, 535: 2537, 539: 2537, 2537, 2537, 2537, 2537, 551: 2537, 553: 2537, 706: 2537, 708: 2537, 2537, 2537, 2537, 2537, 2537}, // 2295 - {2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 57: 2538, 530: 2538, 534: 2538, 2538, 2538, 2538, 2538, 546: 2538, 548: 2538, 701: 2538, 2538, 704: 2538, 2538, 2538, 2538, 2538}, - {2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 57: 2549, 530: 2549, 534: 2549, 2549, 2549, 2549, 2549, 546: 2549, 548: 2549, 701: 2549, 2549, 704: 2549, 2549, 2549, 2549, 2549}, - {537: 2554}, - {2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 57: 2565, 530: 2565, 534: 2565, 2565, 2565, 2565, 2565, 546: 2565, 548: 2565, 701: 2565, 2565, 704: 2565, 2565, 2565, 2565, 2565}, - {560: 3037, 799: 3866, 816: 5154}, + {719: 5168}, + {2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 57: 2543, 535: 2543, 539: 2543, 2543, 2543, 2543, 2543, 551: 2543, 553: 2543, 706: 2543, 708: 2543, 2543, 2543, 2543, 2543, 2543}, + {86: 5162, 560: 5161, 733: 5160, 735: 5159, 1255: 5169}, + {2547, 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2547, 57: 2547, 535: 2547, 539: 2547, 2547, 2547, 2547, 2547, 551: 2547, 553: 2547, 706: 2547, 708: 2547, 2547, 2547, 2547, 2547, 2547}, + {2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 57: 2554, 535: 2554, 539: 2554, 2554, 2554, 2554, 2554, 551: 2554, 553: 2554, 706: 2554, 708: 2554, 2554, 2554, 2554, 2554, 2554}, // 2300 - {9: 5156, 57: 5155}, - {2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 57: 2563, 530: 2563, 534: 2563, 2563, 2563, 2563, 2563, 546: 2563, 548: 2563, 701: 2563, 2563, 704: 2563, 2563, 2563, 2563, 2563}, - {560: 3037, 799: 3866, 816: 5157}, - {57: 5158}, - {2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 57: 2562, 530: 2562, 534: 2562, 2562, 2562, 2562, 2562, 546: 2562, 548: 2562, 701: 2562, 2562, 704: 2562, 2562, 2562, 2562, 2562}, + {2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 57: 2553, 535: 2553, 539: 2553, 2553, 2553, 2553, 2553, 551: 2553, 553: 2553, 706: 2553, 708: 2553, 2553, 2553, 2553, 2553, 2553}, + {2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 57: 2552, 535: 2552, 539: 2552, 2552, 2552, 2552, 2552, 551: 2552, 553: 2552, 706: 2552, 708: 2552, 2552, 2552, 2552, 2552, 2552}, + {2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563, 57: 2563, 535: 2563, 539: 2563, 2563, 2563, 2563, 2563, 551: 2563, 553: 2563, 706: 2563, 708: 2563, 2563, 2563, 2563, 2563, 2563}, + {542: 2568}, + {2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 57: 2579, 535: 2579, 539: 2579, 2579, 2579, 2579, 2579, 551: 2579, 553: 2579, 706: 2579, 708: 2579, 2579, 2579, 2579, 2579, 2579}, // 2305 - {2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 57: 2566, 530: 2566, 534: 2566, 2566, 2566, 2566, 2566, 546: 2566, 548: 2566, 701: 2566, 2566, 704: 2566, 2566, 2566, 2566, 2566}, - {2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 57: 2561, 530: 2561, 534: 2561, 2561, 2561, 2561, 2561, 546: 2561, 548: 2561, 701: 2561, 2561, 704: 2561, 2561, 2561, 2561, 2561}, - {2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 57: 2560, 530: 2560, 534: 2560, 2560, 2560, 2560, 2560, 546: 2560, 548: 2560, 701: 2560, 2560, 704: 2560, 2560, 2560, 2560, 2560}, - {2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 57: 2559, 530: 2559, 534: 2559, 2559, 2559, 2559, 2559, 546: 2559, 548: 2559, 701: 2559, 2559, 704: 2559, 2559, 2559, 2559, 2559}, - {2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 57: 2567, 530: 2567, 534: 2567, 2567, 2567, 2567, 2567, 546: 2567, 548: 2567, 701: 2567, 2567, 704: 2567, 2567, 2567, 2567, 2567}, + {564: 3054, 805: 3889, 820: 5177}, + {9: 5179, 57: 5178}, + {2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 57: 2577, 535: 2577, 539: 2577, 2577, 2577, 2577, 2577, 551: 2577, 553: 2577, 706: 2577, 708: 2577, 2577, 2577, 2577, 2577, 2577}, + {564: 3054, 805: 3889, 820: 5180}, + {57: 5181}, // 2310 - {2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 57: 2558, 530: 2558, 534: 2558, 2558, 2558, 2558, 2558, 546: 2558, 548: 2558, 701: 2558, 2558, 704: 2558, 2558, 2558, 2558, 2558}, - {2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 57: 2557, 530: 2557, 534: 2557, 2557, 2557, 2557, 2557, 546: 2557, 548: 2557, 701: 2557, 2557, 704: 2557, 2557, 2557, 2557, 2557}, - {2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, 57: 2556, 530: 2556, 534: 2556, 2556, 2556, 2556, 2556, 546: 2556, 548: 2556, 701: 2556, 2556, 704: 2556, 2556, 2556, 2556, 2556}, - {2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 57: 2568, 530: 2568, 534: 2568, 2568, 2568, 2568, 2568, 546: 2568, 548: 2568, 701: 2568, 2568, 704: 2568, 2568, 2568, 2568, 2568}, - {531: 5169}, + {2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 57: 2576, 535: 2576, 539: 2576, 2576, 2576, 2576, 2576, 551: 2576, 553: 2576, 706: 2576, 708: 2576, 2576, 2576, 2576, 2576, 2576}, + {2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 57: 2580, 535: 2580, 539: 2580, 2580, 2580, 2580, 2580, 551: 2580, 553: 2580, 706: 2580, 708: 2580, 2580, 2580, 2580, 2580, 2580}, + {2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 57: 2575, 535: 2575, 539: 2575, 2575, 2575, 2575, 2575, 551: 2575, 553: 2575, 706: 2575, 708: 2575, 2575, 2575, 2575, 2575, 2575}, + {2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 57: 2574, 535: 2574, 539: 2574, 2574, 2574, 2574, 2574, 551: 2574, 553: 2574, 706: 2574, 708: 2574, 2574, 2574, 2574, 2574, 2574}, + {2573, 2573, 2573, 2573, 2573, 2573, 2573, 2573, 2573, 2573, 2573, 2573, 2573, 2573, 2573, 57: 2573, 535: 2573, 539: 2573, 2573, 2573, 2573, 2573, 551: 2573, 553: 2573, 706: 2573, 708: 2573, 2573, 2573, 2573, 2573, 2573}, // 2315 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 5170}, - {57: 5171, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 57: 2553, 530: 2553, 534: 2553, 2553, 2553, 2553, 2553, 546: 2553, 548: 2553, 701: 2553, 2553, 704: 2553, 2553, 2553, 2553, 2553, 1471: 5174, 1498: 5173, 5172}, - {2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, 57: 2570, 530: 2570, 534: 2570, 2570, 2570, 2570, 2570, 546: 2570, 548: 2570, 701: 2570, 2570, 704: 2570, 2570, 2570, 2570, 2570}, - {2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 57: 2552, 530: 2552, 534: 2552, 2552, 2552, 2552, 2552, 546: 2552, 548: 2552, 701: 2552, 2552, 704: 2552, 2552, 2552, 2552, 2552}, + {2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 57: 2581, 535: 2581, 539: 2581, 2581, 2581, 2581, 2581, 551: 2581, 553: 2581, 706: 2581, 708: 2581, 2581, 2581, 2581, 2581, 2581}, + {2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 57: 2572, 535: 2572, 539: 2572, 2572, 2572, 2572, 2572, 551: 2572, 553: 2572, 706: 2572, 708: 2572, 2572, 2572, 2572, 2572, 2572}, + {2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 57: 2571, 535: 2571, 539: 2571, 2571, 2571, 2571, 2571, 551: 2571, 553: 2571, 706: 2571, 708: 2571, 2571, 2571, 2571, 2571, 2571}, + {2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, 57: 2570, 535: 2570, 539: 2570, 2570, 2570, 2570, 2570, 551: 2570, 553: 2570, 706: 2570, 708: 2570, 2570, 2570, 2570, 2570, 2570}, + {2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 57: 2582, 535: 2582, 539: 2582, 2582, 2582, 2582, 2582, 551: 2582, 553: 2582, 706: 2582, 708: 2582, 2582, 2582, 2582, 2582, 2582}, // 2320 - {2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551, 57: 2551, 530: 2551, 534: 2551, 2551, 2551, 2551, 2551, 546: 2551, 548: 2551, 701: 2551, 2551, 704: 2551, 2551, 2551, 2551, 2551}, - {531: 5176}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 5177}, - {57: 5178, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 57: 2586, 190: 4929, 530: 2586, 534: 3812, 2586, 3811, 2586, 2586, 546: 2586, 548: 2586, 701: 2586, 2586, 704: 2586, 2586, 2586, 2586, 2586, 915: 5179, 1044: 5180, 1168: 5181, 1354: 5182}, + {536: 5192}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 5193}, + {57: 5194, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 57: 2567, 535: 2567, 539: 2567, 2567, 2567, 2567, 2567, 551: 2567, 553: 2567, 706: 2567, 708: 2567, 2567, 2567, 2567, 2567, 2567, 1478: 5197, 1505: 5196, 5195}, + {2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 57: 2584, 535: 2584, 539: 2584, 2584, 2584, 2584, 2584, 551: 2584, 553: 2584, 706: 2584, 708: 2584, 2584, 2584, 2584, 2584, 2584}, // 2325 - {190: 4931, 548: 5183}, - {2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 57: 2585, 530: 2585, 534: 2585, 2585, 2585, 2585, 2585, 546: 2585, 548: 2585, 701: 2585, 2585, 704: 2585, 2585, 2585, 2585, 2585}, - {2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 57: 2583, 530: 2583, 534: 2583, 2583, 2583, 2583, 2583, 546: 2583, 548: 2583, 701: 2583, 2583, 704: 2583, 2583, 2583, 2583, 2583}, - {2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 57: 2571, 530: 2571, 534: 2571, 2571, 2571, 2571, 2571, 546: 2571, 548: 2571, 701: 2571, 2571, 704: 2571, 2571, 2571, 2571, 2571}, - {2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 57: 2584, 530: 2584, 534: 2584, 2584, 2584, 2584, 2584, 546: 2584, 548: 2584, 701: 2584, 2584, 704: 2584, 2584, 2584, 2584, 2584}, + {2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 57: 2566, 535: 2566, 539: 2566, 2566, 2566, 2566, 2566, 551: 2566, 553: 2566, 706: 2566, 708: 2566, 2566, 2566, 2566, 2566, 2566}, + {2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 57: 2565, 535: 2565, 539: 2565, 2565, 2565, 2565, 2565, 551: 2565, 553: 2565, 706: 2565, 708: 2565, 2565, 2565, 2565, 2565, 2565}, + {536: 5199}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 5200}, + {57: 5201, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, // 2330 - {2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 57: 2572, 530: 2572, 534: 2572, 2572, 2572, 2572, 2572, 546: 2572, 548: 2572, 701: 2572, 2572, 704: 2572, 2572, 2572, 2572, 2572}, - {648: 5195, 5194, 5190, 5191, 653: 5192, 5193, 1036: 5189, 1059: 5187, 5188, 5186}, - {2573, 2573, 2573, 2573, 2573, 2573, 2573, 2573, 2573, 2573, 2573, 2573, 2573, 2573, 2573, 57: 2573, 530: 2573, 534: 2573, 2573, 2573, 2573, 2573, 546: 2573, 548: 2573, 701: 2573, 2573, 704: 2573, 2573, 2573, 2573, 2573}, - {2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 57: 2513, 530: 2513, 534: 2513, 2513, 2513, 2513, 2513, 546: 2513, 548: 2513, 701: 2513, 2513, 704: 2513, 2513, 2513, 2513, 2513}, - {531: 5198}, + {2600, 2600, 2600, 2600, 2600, 2600, 2600, 2600, 2600, 2600, 2600, 2600, 2600, 2600, 2600, 57: 2600, 190: 4952, 535: 2600, 539: 3835, 2600, 3834, 2600, 2600, 551: 2600, 553: 2600, 706: 2600, 708: 2600, 2600, 2600, 2600, 2600, 2600, 921: 5202, 1050: 5203, 1174: 5204, 1361: 5205}, + {190: 4954, 553: 5206}, + {2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, 57: 2599, 535: 2599, 539: 2599, 2599, 2599, 2599, 2599, 551: 2599, 553: 2599, 706: 2599, 708: 2599, 2599, 2599, 2599, 2599, 2599}, + {2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, 57: 2597, 535: 2597, 539: 2597, 2597, 2597, 2597, 2597, 551: 2597, 553: 2597, 706: 2597, 708: 2597, 2597, 2597, 2597, 2597, 2597}, + {2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 57: 2585, 535: 2585, 539: 2585, 2585, 2585, 2585, 2585, 551: 2585, 553: 2585, 706: 2585, 708: 2585, 2585, 2585, 2585, 2585, 2585}, // 2335 - {531: 5196}, - {2509, 2509, 2509, 2509, 2509, 2509, 2509, 2509, 2509, 2509, 2509, 2509, 2509, 2509, 2509, 57: 2509, 530: 2509, 2498, 534: 2509, 2509, 2509, 2509, 2509, 546: 2509, 548: 2509, 701: 2509, 2509, 704: 2509, 2509, 2509, 2509, 2509}, - {2502, 2502, 2502, 2502, 2502, 2502, 2502, 2502, 2502, 2502, 2502, 2502, 2502, 2502, 2502, 57: 2502, 530: 2502, 2506, 534: 2502, 2502, 2502, 2502, 2502, 546: 2502, 548: 2502, 701: 2502, 2502, 704: 2502, 2502, 2502, 2502, 2502}, - {2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, 57: 2501, 530: 2501, 2505, 534: 2501, 2501, 2501, 2501, 2501, 546: 2501, 548: 2501, 701: 2501, 2501, 704: 2501, 2501, 2501, 2501, 2501}, - {2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500, 57: 2500, 530: 2500, 2504, 534: 2500, 2500, 2500, 2500, 2500, 546: 2500, 548: 2500, 701: 2500, 2500, 704: 2500, 2500, 2500, 2500, 2500}, + {2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 57: 2598, 535: 2598, 539: 2598, 2598, 2598, 2598, 2598, 551: 2598, 553: 2598, 706: 2598, 708: 2598, 2598, 2598, 2598, 2598, 2598}, + {2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 57: 2586, 535: 2586, 539: 2586, 2586, 2586, 2586, 2586, 551: 2586, 553: 2586, 706: 2586, 708: 2586, 2586, 2586, 2586, 2586, 2586}, + {653: 5218, 5217, 5213, 5214, 658: 5215, 5216, 1042: 5212, 1065: 5210, 5211, 5209}, + {2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 57: 2587, 535: 2587, 539: 2587, 2587, 2587, 2587, 2587, 551: 2587, 553: 2587, 706: 2587, 708: 2587, 2587, 2587, 2587, 2587, 2587}, + {2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 57: 2527, 535: 2527, 539: 2527, 2527, 2527, 2527, 2527, 551: 2527, 553: 2527, 706: 2527, 708: 2527, 2527, 2527, 2527, 2527, 2527}, // 2340 - {531: 2503}, - {531: 2499}, - {57: 5197}, - {2510, 2510, 2510, 2510, 2510, 2510, 2510, 2510, 2510, 2510, 2510, 2510, 2510, 2510, 2510, 57: 2510, 530: 2510, 534: 2510, 2510, 2510, 2510, 2510, 546: 2510, 548: 2510, 701: 2510, 2510, 704: 2510, 2510, 2510, 2510, 2510}, - {57: 5199, 560: 3037, 799: 5200}, + {536: 5221}, + {536: 5219}, + {2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 57: 2523, 535: 2523, 2512, 539: 2523, 2523, 2523, 2523, 2523, 551: 2523, 553: 2523, 706: 2523, 708: 2523, 2523, 2523, 2523, 2523, 2523}, + {2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516, 57: 2516, 535: 2516, 2520, 539: 2516, 2516, 2516, 2516, 2516, 551: 2516, 553: 2516, 706: 2516, 708: 2516, 2516, 2516, 2516, 2516, 2516}, + {2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 57: 2515, 535: 2515, 2519, 539: 2515, 2515, 2515, 2515, 2515, 551: 2515, 553: 2515, 706: 2515, 708: 2515, 2515, 2515, 2515, 2515, 2515}, // 2345 - {2512, 2512, 2512, 2512, 2512, 2512, 2512, 2512, 2512, 2512, 2512, 2512, 2512, 2512, 2512, 57: 2512, 530: 2512, 534: 2512, 2512, 2512, 2512, 2512, 546: 2512, 548: 2512, 701: 2512, 2512, 704: 2512, 2512, 2512, 2512, 2512}, - {57: 5201}, - {2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 57: 2511, 530: 2511, 534: 2511, 2511, 2511, 2511, 2511, 546: 2511, 548: 2511, 701: 2511, 2511, 704: 2511, 2511, 2511, 2511, 2511}, - {186: 5203}, - {2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 57: 2574, 530: 2574, 534: 2574, 2574, 2574, 2574, 2574, 546: 2574, 548: 2574, 701: 2574, 2574, 704: 2574, 2574, 2574, 2574, 2574}, + {2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 57: 2514, 535: 2514, 2518, 539: 2514, 2514, 2514, 2514, 2514, 551: 2514, 553: 2514, 706: 2514, 708: 2514, 2514, 2514, 2514, 2514, 2514}, + {536: 2517}, + {536: 2513}, + {57: 5220}, + {2524, 2524, 2524, 2524, 2524, 2524, 2524, 2524, 2524, 2524, 2524, 2524, 2524, 2524, 2524, 57: 2524, 535: 2524, 539: 2524, 2524, 2524, 2524, 2524, 551: 2524, 553: 2524, 706: 2524, 708: 2524, 2524, 2524, 2524, 2524, 2524}, // 2350 - {2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 57: 2575, 530: 2575, 534: 2575, 2575, 2575, 2575, 2575, 546: 2575, 548: 2575, 701: 2575, 2575, 704: 2575, 2575, 2575, 2575, 2575}, - {2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 2522, 57: 2522, 530: 2522, 534: 2522, 2522, 2522, 2522, 2522, 546: 2522, 548: 2522, 701: 2522, 2522, 704: 2522, 2522, 2522, 2522, 2522}, - {2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 57: 2521, 530: 2521, 534: 2521, 2521, 2521, 2521, 2521, 546: 2521, 548: 2521, 701: 2521, 2521, 704: 2521, 2521, 2521, 2521, 2521}, - {2520, 2520, 2520, 2520, 2520, 2520, 2520, 2520, 2520, 2520, 2520, 2520, 2520, 2520, 2520, 57: 2520, 530: 2520, 534: 2520, 2520, 2520, 2520, 2520, 546: 2520, 548: 2520, 701: 2520, 2520, 704: 2520, 2520, 2520, 2520, 2520}, - {2519, 2519, 2519, 2519, 2519, 2519, 2519, 2519, 2519, 2519, 2519, 2519, 2519, 2519, 2519, 57: 2519, 530: 2519, 534: 2519, 2519, 2519, 2519, 2519, 546: 2519, 548: 2519, 701: 2519, 2519, 704: 2519, 2519, 2519, 2519, 2519}, + {57: 5222, 564: 3054, 805: 5223}, + {2526, 2526, 2526, 2526, 2526, 2526, 2526, 2526, 2526, 2526, 2526, 2526, 2526, 2526, 2526, 57: 2526, 535: 2526, 539: 2526, 2526, 2526, 2526, 2526, 551: 2526, 553: 2526, 706: 2526, 708: 2526, 2526, 2526, 2526, 2526, 2526}, + {57: 5224}, + {2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 57: 2525, 535: 2525, 539: 2525, 2525, 2525, 2525, 2525, 551: 2525, 553: 2525, 706: 2525, 708: 2525, 2525, 2525, 2525, 2525, 2525}, + {186: 5226}, // 2355 - {56: 5210, 531: 5209, 648: 5195, 5194, 5190, 5191, 653: 5192, 5193, 999: 5218, 1036: 5189, 1059: 5187, 5188, 5211, 1214: 5219}, - {531: 5214}, - {2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 57: 2514, 530: 2514, 534: 2514, 2514, 2514, 2514, 2514, 546: 2514, 548: 2514, 701: 2514, 2514, 704: 2514, 2514, 2514, 2514, 2514}, - {186: 4576}, - {531: 4573}, + {2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 57: 2588, 535: 2588, 539: 2588, 2588, 2588, 2588, 2588, 551: 2588, 553: 2588, 706: 2588, 708: 2588, 2588, 2588, 2588, 2588, 2588}, + {2589, 2589, 2589, 2589, 2589, 2589, 2589, 2589, 2589, 2589, 2589, 2589, 2589, 2589, 2589, 57: 2589, 535: 2589, 539: 2589, 2589, 2589, 2589, 2589, 551: 2589, 553: 2589, 706: 2589, 708: 2589, 2589, 2589, 2589, 2589, 2589}, + {2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 57: 2536, 535: 2536, 539: 2536, 2536, 2536, 2536, 2536, 551: 2536, 553: 2536, 706: 2536, 708: 2536, 2536, 2536, 2536, 2536, 2536}, + {2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 57: 2535, 535: 2535, 539: 2535, 2535, 2535, 2535, 2535, 551: 2535, 553: 2535, 706: 2535, 708: 2535, 2535, 2535, 2535, 2535, 2535}, + {2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 57: 2534, 535: 2534, 539: 2534, 2534, 2534, 2534, 2534, 551: 2534, 553: 2534, 706: 2534, 708: 2534, 2534, 2534, 2534, 2534, 2534}, // 2360 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 5215, 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3842, 863: 5216}, - {2517, 2517, 2517, 2517, 2517, 2517, 2517, 2517, 2517, 2517, 2517, 2517, 2517, 2517, 2517, 57: 2517, 530: 2517, 534: 2517, 2517, 2517, 2517, 2517, 546: 2517, 548: 2517, 701: 2517, 2517, 704: 2517, 2517, 2517, 2517, 2517}, - {9: 3990, 57: 5217}, - {2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516, 57: 2516, 530: 2516, 534: 2516, 2516, 2516, 2516, 2516, 546: 2516, 548: 2516, 701: 2516, 2516, 704: 2516, 2516, 2516, 2516, 2516}, - {57: 5221}, + {2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 57: 2533, 535: 2533, 539: 2533, 2533, 2533, 2533, 2533, 551: 2533, 553: 2533, 706: 2533, 708: 2533, 2533, 2533, 2533, 2533, 2533}, + {56: 5233, 536: 5232, 653: 5218, 5217, 5213, 5214, 658: 5215, 5216, 1005: 5241, 1042: 5212, 1065: 5210, 5211, 5234, 1220: 5242}, + {536: 5237}, + {2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 57: 2528, 535: 2528, 539: 2528, 2528, 2528, 2528, 2528, 551: 2528, 553: 2528, 706: 2528, 708: 2528, 2528, 2528, 2528, 2528, 2528}, + {186: 4599}, // 2365 - {57: 5220}, - {2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 57: 2515, 530: 2515, 534: 2515, 2515, 2515, 2515, 2515, 546: 2515, 548: 2515, 701: 2515, 2515, 704: 2515, 2515, 2515, 2515, 2515}, - {2518, 2518, 2518, 2518, 2518, 2518, 2518, 2518, 2518, 2518, 2518, 2518, 2518, 2518, 2518, 57: 2518, 530: 2518, 534: 2518, 2518, 2518, 2518, 2518, 546: 2518, 548: 2518, 701: 2518, 2518, 704: 2518, 2518, 2518, 2518, 2518}, - {2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 57: 2576, 530: 2576, 534: 2576, 2576, 2576, 2576, 2576, 546: 2576, 548: 2576, 701: 2576, 2576, 704: 2576, 2576, 2576, 2576, 2576}, - {2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 57: 2579, 105: 5224, 107: 5225, 530: 2579, 534: 2579, 2579, 2579, 2579, 2579, 546: 2579, 548: 2579, 701: 2579, 2579, 704: 2579, 2579, 2579, 2579, 2579, 971: 5226}, + {536: 4596}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 5238, 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3865, 869: 5239}, + {2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 57: 2531, 535: 2531, 539: 2531, 2531, 2531, 2531, 2531, 551: 2531, 553: 2531, 706: 2531, 708: 2531, 2531, 2531, 2531, 2531, 2531}, + {9: 4013, 57: 5240}, + {2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 57: 2530, 535: 2530, 539: 2530, 2530, 2530, 2530, 2530, 551: 2530, 553: 2530, 706: 2530, 708: 2530, 2530, 2530, 2530, 2530, 2530}, // 2370 - {2711, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 19: 2711, 57: 2711, 102: 2711, 104: 2711, 2711, 2711, 2711, 109: 2711, 530: 2711, 532: 2711, 534: 2711, 2711, 2711, 2711, 2711, 542: 2711, 546: 2711, 548: 2711, 562: 2711, 701: 2711, 2711, 704: 2711, 2711, 2711, 2711, 2711}, - {2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, 19: 2710, 57: 2710, 102: 2710, 104: 2710, 2710, 2710, 2710, 109: 2710, 530: 2710, 532: 2710, 534: 2710, 2710, 2710, 2710, 2710, 542: 2710, 546: 2710, 548: 2710, 562: 2710, 701: 2710, 2710, 704: 2710, 2710, 2710, 2710, 2710}, - {2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 57: 2578, 530: 2578, 534: 2578, 2578, 2578, 2578, 2578, 546: 2578, 548: 2578, 701: 2578, 2578, 704: 2578, 2578, 2578, 2578, 2578}, - {2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 57: 2582, 530: 2582, 534: 2582, 2582, 2582, 2582, 2582, 546: 2582, 548: 2582, 701: 2582, 2582, 704: 2582, 2582, 2582, 2582, 2582}, - {701: 2683, 2683, 704: 2683, 2683, 710: 2683, 746: 2683, 2683}, + {57: 5244}, + {57: 5243}, + {2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 57: 2529, 535: 2529, 539: 2529, 2529, 2529, 2529, 2529, 551: 2529, 553: 2529, 706: 2529, 708: 2529, 2529, 2529, 2529, 2529, 2529}, + {2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 57: 2532, 535: 2532, 539: 2532, 2532, 2532, 2532, 2532, 551: 2532, 553: 2532, 706: 2532, 708: 2532, 2532, 2532, 2532, 2532, 2532}, + {2590, 2590, 2590, 2590, 2590, 2590, 2590, 2590, 2590, 2590, 2590, 2590, 2590, 2590, 2590, 57: 2590, 535: 2590, 539: 2590, 2590, 2590, 2590, 2590, 551: 2590, 553: 2590, 706: 2590, 708: 2590, 2590, 2590, 2590, 2590, 2590}, // 2375 - {2682, 2682, 2682, 2682, 2682, 2682, 9: 2682, 546: 2682, 701: 2682, 2682, 704: 2682, 2682, 710: 2682, 746: 2682, 2682}, - {2615, 2615, 2615, 2615, 2615, 2615, 9: 2615, 2615, 2615, 57: 2615, 546: 2615}, - {2741, 2741, 2741, 2741, 2741, 2741, 9: 2741, 546: 2741}, - {2693, 2693, 2693, 2693, 2693, 2693, 9: 2693, 546: 2693}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4024, 3051, 3052, 3050, 821: 5234}, + {2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 57: 2593, 105: 5247, 107: 5248, 535: 2593, 539: 2593, 2593, 2593, 2593, 2593, 551: 2593, 553: 2593, 706: 2593, 708: 2593, 2593, 2593, 2593, 2593, 2593, 977: 5249}, + {2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 19: 2728, 57: 2728, 102: 2728, 104: 2728, 2728, 2728, 2728, 109: 2728, 535: 2728, 537: 2728, 539: 2728, 2728, 2728, 2728, 2728, 547: 2728, 551: 2728, 553: 2728, 567: 2728, 706: 2728, 708: 2728, 2728, 2728, 2728, 2728, 2728}, + {2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 19: 2727, 57: 2727, 102: 2727, 104: 2727, 2727, 2727, 2727, 109: 2727, 535: 2727, 537: 2727, 539: 2727, 2727, 2727, 2727, 2727, 547: 2727, 551: 2727, 553: 2727, 567: 2727, 706: 2727, 708: 2727, 2727, 2727, 2727, 2727, 2727}, + {2592, 2592, 2592, 2592, 2592, 2592, 2592, 2592, 2592, 2592, 2592, 2592, 2592, 2592, 2592, 57: 2592, 535: 2592, 539: 2592, 2592, 2592, 2592, 2592, 551: 2592, 553: 2592, 706: 2592, 708: 2592, 2592, 2592, 2592, 2592, 2592}, + {2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 57: 2596, 535: 2596, 539: 2596, 2596, 2596, 2596, 2596, 551: 2596, 553: 2596, 706: 2596, 708: 2596, 2596, 2596, 2596, 2596, 2596}, // 2380 - {2692, 2692, 2692, 2692, 2692, 2692, 9: 2692, 546: 2692}, - {2: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 10: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 58: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 578: 4948, 854: 5236}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4024, 3051, 3052, 3050, 821: 4952, 953: 5237}, - {2694, 2694, 2694, 2694, 2694, 2694, 9: 2694, 5232, 5233, 546: 2694, 1033: 5238}, - {2742, 2742, 2742, 2742, 2742, 2742, 9: 2742, 546: 2742}, + {706: 2700, 708: 2700, 2700, 2700, 715: 2700, 751: 2700, 2700}, + {2699, 2699, 2699, 2699, 2699, 2699, 9: 2699, 551: 2699, 706: 2699, 708: 2699, 2699, 2699, 715: 2699, 751: 2699, 2699}, + {2629, 2629, 2629, 2629, 2629, 2629, 9: 2629, 2629, 2629, 57: 2629, 551: 2629}, + {2758, 2758, 2758, 2758, 2758, 2758, 9: 2758, 551: 2758}, + {2710, 2710, 2710, 2710, 2710, 2710, 9: 2710, 551: 2710}, // 2385 - {2743, 2743, 2743, 2743, 2743, 2743, 9: 2743, 546: 2743}, - {2744, 2744, 2744, 2744, 2744, 2744, 9: 2744, 546: 2744}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4024, 3051, 3052, 3050, 821: 5244, 1104: 5243, 1313: 5242}, - {2745, 2745, 2745, 2745, 2745, 2745, 9: 5246, 546: 2745}, - {1512, 1512, 1512, 1512, 1512, 1512, 9: 1512, 546: 1512}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4047, 3068, 3069, 3067, 828: 5257}, + {2709, 2709, 2709, 2709, 2709, 2709, 9: 2709, 551: 2709}, + {2: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 10: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 58: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 583: 4971, 860: 5259}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4047, 3068, 3069, 3067, 828: 4975, 959: 5260}, + {2711, 2711, 2711, 2711, 2711, 2711, 9: 2711, 5255, 5256, 551: 2711, 1039: 5261}, // 2390 - {1502, 1502, 1502, 1502, 1502, 1502, 9: 1502, 546: 1502, 577: 5119, 605: 5118, 1064: 5245}, - {1510, 1510, 1510, 1510, 1510, 1510, 9: 1510, 546: 1510}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4024, 3051, 3052, 3050, 821: 5244, 1104: 5247}, - {1511, 1511, 1511, 1511, 1511, 1511, 9: 1511, 546: 1511}, - {2: 762, 762, 762, 762, 762, 762, 762, 10: 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 58: 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 5251, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 715: 762, 908: 5250, 924: 5249}, + {2759, 2759, 2759, 2759, 2759, 2759, 9: 2759, 551: 2759}, + {2760, 2760, 2760, 2760, 2760, 2760, 9: 2760, 551: 2760}, + {2761, 2761, 2761, 2761, 2761, 2761, 9: 2761, 551: 2761}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4047, 3068, 3069, 3067, 828: 5267, 1110: 5266, 1319: 5265}, + {2762, 2762, 2762, 2762, 2762, 2762, 9: 5269, 551: 2762}, // 2395 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 715: 5253, 770: 5255, 3051, 3052, 3050, 859: 5254, 927: 5252}, - {761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 58: 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 531: 761, 546: 761, 560: 761, 586: 761, 608: 761, 715: 761}, - {760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 58: 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 531: 760, 546: 760, 560: 760, 586: 760, 608: 760, 715: 760}, - {2748, 2748, 2748, 2748, 2748, 2748, 9: 2748, 546: 2748}, - {2717, 2717, 2717, 2717, 2717, 2717, 9: 2717, 20: 2717, 546: 2717}, + {1521, 1521, 1521, 1521, 1521, 1521, 9: 1521, 551: 1521}, + {1511, 1511, 1511, 1511, 1511, 1511, 9: 1511, 551: 1511, 582: 5142, 610: 5141, 1070: 5268}, + {1519, 1519, 1519, 1519, 1519, 1519, 9: 1519, 551: 1519}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4047, 3068, 3069, 3067, 828: 5267, 1110: 5270}, + {1520, 1520, 1520, 1520, 1520, 1520, 9: 1520, 551: 1520}, // 2400 - {2716, 2716, 2716, 2716, 2716, 2716, 9: 5256, 20: 2716, 546: 2716}, - {2687, 2687, 2687, 2687, 2687, 2687, 9: 2687, 20: 2687, 57: 2687, 131: 2687, 200: 2687, 215: 2687, 532: 2687, 546: 2687, 559: 2687, 710: 2687, 715: 2687}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 5257, 3051, 3052, 3050}, - {2686, 2686, 2686, 2686, 2686, 2686, 9: 2686, 20: 2686, 57: 2686, 131: 2686, 200: 2686, 215: 2686, 532: 2686, 546: 2686, 559: 2686, 710: 2686, 715: 2686}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 715: 5253, 770: 5255, 3051, 3052, 3050, 859: 5254, 927: 5260}, + {2: 763, 763, 763, 763, 763, 763, 763, 10: 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 58: 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 5274, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 721: 763, 914: 5273, 930: 5272}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 721: 5276, 777: 5278, 3068, 3069, 3067, 865: 5277, 933: 5275}, + {762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 58: 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 536: 762, 551: 762, 564: 762, 591: 762, 613: 762, 721: 762}, + {761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 58: 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 536: 761, 551: 761, 564: 761, 591: 761, 613: 761, 721: 761}, + {2765, 2765, 2765, 2765, 2765, 2765, 9: 2765, 551: 2765}, // 2405 - {2749, 2749, 2749, 2749, 2749, 2749, 9: 2749, 546: 2749}, - {20: 5261}, - {2751, 2751, 2751, 2751, 2751, 2751, 9: 2751, 546: 2751}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 715: 5253, 770: 5255, 3051, 3052, 3050, 859: 5254, 927: 5264}, - {2750, 2750, 2750, 2750, 2750, 2750, 9: 2750, 546: 2750}, + {2734, 2734, 2734, 2734, 2734, 2734, 9: 2734, 20: 2734, 551: 2734}, + {2733, 2733, 2733, 2733, 2733, 2733, 9: 5279, 20: 2733, 551: 2733}, + {2704, 2704, 2704, 2704, 2704, 2704, 9: 2704, 20: 2704, 57: 2704, 131: 2704, 202: 2704, 216: 2704, 537: 2704, 551: 2704, 565: 2704, 715: 2704, 721: 2704}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 5280, 3068, 3069, 3067}, + {2703, 2703, 2703, 2703, 2703, 2703, 9: 2703, 20: 2703, 57: 2703, 131: 2703, 202: 2703, 216: 2703, 537: 2703, 551: 2703, 565: 2703, 715: 2703, 721: 2703}, // 2410 - {20: 5265}, - {2752, 2752, 2752, 2752, 2752, 2752, 9: 2752, 546: 2752}, - {2: 762, 762, 762, 762, 762, 762, 762, 10: 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 58: 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 5251, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 715: 762, 908: 5250, 924: 5267}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 715: 5253, 770: 5255, 3051, 3052, 3050, 859: 5254, 927: 5268}, - {2753, 2753, 2753, 2753, 2753, 2753, 9: 2753, 546: 2753}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 721: 5276, 777: 5278, 3068, 3069, 3067, 865: 5277, 933: 5283}, + {2766, 2766, 2766, 2766, 2766, 2766, 9: 2766, 551: 2766}, + {20: 5284}, + {2768, 2768, 2768, 2768, 2768, 2768, 9: 2768, 551: 2768}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 721: 5276, 777: 5278, 3068, 3069, 3067, 865: 5277, 933: 5287}, // 2415 - {2: 762, 762, 762, 762, 762, 762, 762, 10: 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 58: 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 5251, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 715: 762, 908: 5250, 924: 5270}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 715: 5253, 770: 5255, 3051, 3052, 3050, 859: 5254, 927: 5271}, - {2754, 2754, 2754, 2754, 2754, 2754, 9: 2754, 546: 2754}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 715: 5253, 770: 5255, 3051, 3052, 3050, 859: 5254, 927: 5273}, - {2755, 2755, 2755, 2755, 2755, 2755, 9: 2755, 546: 2755}, + {2767, 2767, 2767, 2767, 2767, 2767, 9: 2767, 551: 2767}, + {20: 5288}, + {2769, 2769, 2769, 2769, 2769, 2769, 9: 2769, 551: 2769}, + {2: 763, 763, 763, 763, 763, 763, 763, 10: 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 58: 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 5274, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 721: 763, 914: 5273, 930: 5290}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 721: 5276, 777: 5278, 3068, 3069, 3067, 865: 5277, 933: 5291}, // 2420 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 5275, 3051, 3052, 3050}, - {532: 5276}, - {608: 5277}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 5278}, - {2715, 2715, 2715, 2715, 2715, 2715, 9: 2715, 276: 5282, 532: 5281, 546: 2715, 1511: 5280, 5279}, + {2770, 2770, 2770, 2770, 2770, 2770, 9: 2770, 551: 2770}, + {2: 763, 763, 763, 763, 763, 763, 763, 10: 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 58: 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 5274, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 721: 763, 914: 5273, 930: 5293}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 721: 5276, 777: 5278, 3068, 3069, 3067, 865: 5277, 933: 5294}, + {2771, 2771, 2771, 2771, 2771, 2771, 9: 2771, 551: 2771}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 721: 5276, 777: 5278, 3068, 3069, 3067, 865: 5277, 933: 5296}, // 2425 - {2756, 2756, 2756, 2756, 2756, 2756, 9: 2756, 546: 2756}, - {2714, 2714, 2714, 2714, 2714, 2714, 9: 2714, 546: 2714}, - {247: 5284}, - {247: 5283}, - {2712, 2712, 2712, 2712, 2712, 2712, 9: 2712, 546: 2712}, + {2772, 2772, 2772, 2772, 2772, 2772, 9: 2772, 551: 2772}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 5298, 3068, 3069, 3067}, + {537: 5299}, + {613: 5300}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 5301}, // 2430 - {2713, 2713, 2713, 2713, 2713, 2713, 9: 2713, 546: 2713}, - {192: 5286}, - {199: 5287}, - {531: 5288}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 5289}, + {2732, 2732, 2732, 2732, 2732, 2732, 9: 2732, 276: 5305, 537: 5304, 551: 2732, 1518: 5303, 5302}, + {2773, 2773, 2773, 2773, 2773, 2773, 9: 2773, 551: 2773}, + {2731, 2731, 2731, 2731, 2731, 2731, 9: 2731, 551: 2731}, + {247: 5307}, + {247: 5306}, // 2435 - {57: 5290, 543: 3782, 3783, 3788, 584: 3784, 609: 3785, 3786, 3779, 3789, 3778, 615: 3787, 3780, 618: 3781}, - {2119, 2119, 2119, 2119, 2119, 2119, 9: 2119, 546: 2119, 578: 4948, 854: 5291}, - {2758, 2758, 2758, 2758, 2758, 2758, 9: 2758, 546: 2758}, - {2: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 10: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 58: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 578: 4948, 854: 5310}, - {701: 5309}, + {2729, 2729, 2729, 2729, 2729, 2729, 9: 2729, 551: 2729}, + {2730, 2730, 2730, 2730, 2730, 2730, 9: 2730, 551: 2730}, + {192: 5309}, + {201: 5310}, + {536: 5311}, // 2440 - {2: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 10: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 58: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 578: 4948, 854: 5307}, - {2: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 10: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 58: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 578: 4948, 854: 5305}, - {2: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 10: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 58: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 578: 4948, 854: 5303}, - {701: 5300}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 5299, 3051, 3052, 3050}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 5312}, + {57: 5313, 548: 3805, 3806, 3811, 589: 3807, 614: 3808, 3809, 3802, 3812, 3801, 3810, 3803, 3804}, + {2133, 2133, 2133, 2133, 2133, 2133, 9: 2133, 551: 2133, 583: 4971, 860: 5314}, + {2775, 2775, 2775, 2775, 2775, 2775, 9: 2775, 551: 2775}, + {2: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 10: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 58: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 583: 4971, 860: 5333}, // 2445 - {2723, 2723, 2723, 2723, 2723, 2723, 9: 2723, 546: 2723}, - {2: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 10: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 58: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 578: 4948, 854: 5301}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 5229, 3051, 3052, 3050, 1290: 5302}, - {2746, 2746, 2746, 2746, 2746, 2746, 9: 2746, 546: 2746}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 5304, 3051, 3052, 3050}, + {706: 5332}, + {2: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 10: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 58: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 583: 4971, 860: 5330}, + {2: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 10: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 58: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 583: 4971, 860: 5328}, + {2: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 10: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 58: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 583: 4971, 860: 5326}, + {706: 5323}, // 2450 - {2747, 2747, 2747, 2747, 2747, 2747, 9: 2747, 546: 2747}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 5306, 3051, 3052, 3050}, - {2757, 2757, 2757, 2757, 2757, 2757, 9: 2757, 546: 2757}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 5255, 3051, 3052, 3050, 859: 5308}, - {2759, 2759, 2759, 2759, 2759, 2759, 9: 5256, 546: 2759}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 5322, 3068, 3069, 3067}, + {2740, 2740, 2740, 2740, 2740, 2740, 9: 2740, 551: 2740}, + {2: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 10: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 58: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 583: 4971, 860: 5324}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 5252, 3068, 3069, 3067, 1296: 5325}, + {2763, 2763, 2763, 2763, 2763, 2763, 9: 2763, 551: 2763}, // 2455 - {2760, 2760, 2760, 2760, 2760, 2760, 9: 2760, 546: 2760}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4024, 3051, 3052, 3050, 821: 5311}, - {2321, 2321, 2321, 2321, 2321, 2321, 9: 2321, 546: 2321, 728: 5314, 730: 5313, 1012: 5312}, - {2761, 2761, 2761, 2761, 2761, 2761, 9: 2761, 546: 2761}, - {2320, 2320, 2320, 2320, 2320, 2320, 9: 2320, 546: 2320}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 5327, 3068, 3069, 3067}, + {2764, 2764, 2764, 2764, 2764, 2764, 9: 2764, 551: 2764}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 5329, 3068, 3069, 3067}, + {2774, 2774, 2774, 2774, 2774, 2774, 9: 2774, 551: 2774}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 5278, 3068, 3069, 3067, 865: 5331}, // 2460 - {2319, 2319, 2319, 2319, 2319, 2319, 9: 2319, 546: 2319}, - {173: 5251, 560: 762, 908: 5250, 924: 5316}, - {560: 3037, 799: 5317}, - {2762, 2762, 2762, 2762, 2762, 2762, 9: 2762, 546: 2762}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 715: 5253, 770: 5255, 3051, 3052, 3050, 859: 5254, 927: 5319}, + {2776, 2776, 2776, 2776, 2776, 2776, 9: 5279, 551: 2776}, + {2777, 2777, 2777, 2777, 2777, 2777, 9: 2777, 551: 2777}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4047, 3068, 3069, 3067, 828: 5334}, + {2335, 2335, 2335, 2335, 2335, 2335, 9: 2335, 551: 2335, 733: 5337, 735: 5336, 1018: 5335}, + {2778, 2778, 2778, 2778, 2778, 2778, 9: 2778, 551: 2778}, // 2465 - {2763, 2763, 2763, 2763, 2763, 2763, 9: 2763, 546: 2763}, - {192: 5321}, - {199: 5322}, - {531: 5323}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 5324}, + {2334, 2334, 2334, 2334, 2334, 2334, 9: 2334, 551: 2334}, + {2333, 2333, 2333, 2333, 2333, 2333, 9: 2333, 551: 2333}, + {173: 5274, 564: 763, 914: 5273, 930: 5339}, + {564: 3054, 805: 5340}, + {2779, 2779, 2779, 2779, 2779, 2779, 9: 2779, 551: 2779}, // 2470 - {57: 5325, 543: 3782, 3783, 3788, 584: 3784, 609: 3785, 3786, 3779, 3789, 3778, 615: 3787, 3780, 618: 3781}, - {762, 762, 762, 762, 762, 762, 9: 762, 173: 5251, 546: 762, 908: 5250, 924: 5326}, - {2767, 2767, 2767, 2767, 2767, 2767, 9: 2767, 546: 2767}, - {2: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 10: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 58: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 531: 2117, 578: 5345, 883: 5465}, - {2770, 2770, 2770, 2770, 2770, 2770, 9: 2770, 546: 2770}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 721: 5276, 777: 5278, 3068, 3069, 3067, 865: 5277, 933: 5342}, + {2780, 2780, 2780, 2780, 2780, 2780, 9: 2780, 551: 2780}, + {192: 5344}, + {201: 5345}, + {536: 5346}, // 2475 - {2117, 2117, 2117, 2117, 2117, 2117, 9: 2117, 116: 2117, 173: 2117, 531: 2117, 546: 2117, 578: 5345, 883: 5414, 908: 2117}, - {2: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 10: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 58: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 578: 5345, 883: 5405}, - {701: 4906, 5337, 704: 5332, 5335, 710: 4907, 746: 5336, 5333, 923: 5334, 1340: 5338}, - {701: 5399}, - {2: 2698, 2698, 2698, 2698, 2698, 2698, 2698, 10: 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 58: 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 531: 2698, 701: 4906, 710: 4907, 923: 5354, 1197: 5393}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 5347}, + {57: 5348, 548: 3805, 3806, 3811, 589: 3807, 614: 3808, 3809, 3802, 3812, 3801, 3810, 3803, 3804}, + {763, 763, 763, 763, 763, 763, 9: 763, 173: 5274, 551: 763, 914: 5273, 930: 5349}, + {2784, 2784, 2784, 2784, 2784, 2784, 9: 2784, 551: 2784}, + {2: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 10: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 58: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 536: 2131, 583: 5368, 889: 5488}, // 2480 - {2: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 10: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 58: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 531: 2117, 542: 2117, 578: 5345, 883: 5387}, - {2: 2698, 2698, 2698, 2698, 2698, 2698, 2698, 10: 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 58: 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 531: 2698, 542: 2698, 701: 4906, 710: 4907, 923: 5354, 1197: 5355}, - {701: 5343}, - {531: 5339}, - {626, 626, 626, 626, 626, 626, 9: 626, 57: 626, 546: 626}, + {2787, 2787, 2787, 2787, 2787, 2787, 9: 2787, 551: 2787}, + {2131, 2131, 2131, 2131, 2131, 2131, 9: 2131, 116: 2131, 173: 2131, 536: 2131, 551: 2131, 583: 5368, 889: 5437, 914: 2131}, + {2: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 10: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 58: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 583: 5368, 889: 5428}, + {706: 4929, 708: 5355, 5360, 5358, 715: 4930, 751: 5359, 5356, 929: 5357, 1347: 5361}, + {706: 5422}, // 2485 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 5340}, - {57: 5341, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {2586, 2586, 2586, 2586, 2586, 2586, 9: 2586, 57: 2586, 190: 4929, 534: 3812, 536: 3811, 546: 2586, 915: 4930, 1044: 5180, 1168: 5342}, - {2541, 2541, 2541, 2541, 2541, 2541, 9: 2541, 57: 2541, 546: 2541}, - {2: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 10: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 58: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 531: 2117, 578: 5345, 883: 5344}, + {2: 2715, 2715, 2715, 2715, 2715, 2715, 2715, 10: 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 58: 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 536: 2715, 706: 4929, 715: 4930, 929: 5377, 1203: 5416}, + {2: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 10: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 58: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 536: 2131, 547: 2131, 583: 5368, 889: 5410}, + {2: 2715, 2715, 2715, 2715, 2715, 2715, 2715, 10: 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 58: 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 536: 2715, 547: 2715, 706: 4929, 715: 4930, 929: 5377, 1203: 5378}, + {706: 5366}, + {536: 5362}, // 2490 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 531: 2113, 770: 5349, 3051, 3052, 3050, 981: 5348}, - {534: 3812, 536: 3811, 915: 5346}, - {645: 5347}, - {2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 58: 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 531: 2116, 533: 2116, 535: 2116, 542: 2116, 546: 2116, 631: 2116, 908: 2116}, - {531: 5350}, + {627, 627, 627, 627, 627, 627, 9: 627, 57: 627, 551: 627}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 5363}, + {57: 5364, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {2600, 2600, 2600, 2600, 2600, 2600, 9: 2600, 57: 2600, 190: 4952, 539: 3835, 541: 3834, 551: 2600, 921: 4953, 1050: 5203, 1174: 5365}, + {2555, 2555, 2555, 2555, 2555, 2555, 9: 2555, 57: 2555, 551: 2555}, // 2495 - {531: 2112}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 531: 5114, 770: 4024, 3051, 3052, 3050, 821: 5113, 922: 5112, 932: 5351}, - {9: 5123, 57: 5352}, - {707: 5107, 1011: 5353}, - {2542, 2542, 2542, 2542, 2542, 2542, 9: 2542, 57: 2542, 546: 2542}, + {2: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 10: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 58: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 536: 2131, 583: 5368, 889: 5367}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 536: 2127, 777: 5372, 3068, 3069, 3067, 987: 5371}, + {539: 3835, 541: 3834, 921: 5369}, + {650: 5370}, + {2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 58: 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 536: 2130, 538: 2130, 540: 2130, 547: 2130, 551: 2130, 636: 2130, 914: 2130}, // 2500 - {2: 2697, 2697, 2697, 2697, 2697, 2697, 2697, 10: 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 58: 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 531: 2697, 542: 2697}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 531: 2113, 542: 2113, 770: 5357, 3051, 3052, 3050, 981: 5358, 1053: 5356}, - {531: 5367}, - {104: 5365, 531: 2112, 542: 2112}, - {531: 2103, 542: 5359}, + {536: 5373}, + {536: 2126}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 536: 5137, 777: 4047, 3068, 3069, 3067, 828: 5136, 928: 5135, 939: 5374}, + {9: 5146, 57: 5375}, + {712: 5130, 1017: 5376}, // 2505 - {182: 5362, 207: 5364, 228: 5361, 242: 5363, 1004: 5360}, - {531: 2102}, - {2096, 2096, 2096, 2096, 2096, 2096, 2096, 9: 2096, 19: 2096, 57: 2096, 102: 2096, 104: 2096, 2096, 2096, 2096, 109: 2096, 530: 2096, 2096, 2096, 542: 2096, 546: 2096, 562: 2096}, - {2095, 2095, 2095, 2095, 2095, 2095, 2095, 9: 2095, 19: 2095, 57: 2095, 102: 2095, 104: 2095, 2095, 2095, 2095, 109: 2095, 530: 2095, 2095, 2095, 542: 2095, 546: 2095, 562: 2095}, - {2094, 2094, 2094, 2094, 2094, 2094, 2094, 9: 2094, 19: 2094, 57: 2094, 102: 2094, 104: 2094, 2094, 2094, 2094, 109: 2094, 530: 2094, 2094, 2094, 542: 2094, 546: 2094, 562: 2094}, + {2556, 2556, 2556, 2556, 2556, 2556, 9: 2556, 57: 2556, 551: 2556}, + {2: 2714, 2714, 2714, 2714, 2714, 2714, 2714, 10: 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 58: 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 536: 2714, 547: 2714}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 536: 2127, 547: 2127, 777: 5380, 3068, 3069, 3067, 987: 5381, 1059: 5379}, + {536: 5390}, + {104: 5388, 536: 2126, 547: 2126}, // 2510 - {2093, 2093, 2093, 2093, 2093, 2093, 2093, 9: 2093, 19: 2093, 57: 2093, 102: 2093, 104: 2093, 2093, 2093, 2093, 109: 2093, 530: 2093, 2093, 2093, 542: 2093, 546: 2093, 562: 2093}, - {182: 5362, 207: 5364, 228: 5361, 242: 5363, 1004: 5366}, - {531: 2101}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 531: 5114, 770: 4024, 3051, 3052, 3050, 821: 5113, 922: 5112, 932: 5368}, - {9: 5123, 57: 5369}, + {536: 2117, 547: 5382}, + {182: 5385, 209: 5387, 228: 5384, 242: 5386, 1010: 5383}, + {536: 2116}, + {2110, 2110, 2110, 2110, 2110, 2110, 2110, 9: 2110, 19: 2110, 57: 2110, 102: 2110, 104: 2110, 2110, 2110, 2110, 109: 2110, 535: 2110, 2110, 2110, 547: 2110, 551: 2110, 567: 2110}, + {2109, 2109, 2109, 2109, 2109, 2109, 2109, 9: 2109, 19: 2109, 57: 2109, 102: 2109, 104: 2109, 2109, 2109, 2109, 109: 2109, 535: 2109, 2109, 2109, 547: 2109, 551: 2109, 567: 2109}, // 2515 - {2111, 2111, 2111, 2111, 2111, 2111, 2111, 9: 2111, 19: 2111, 57: 2111, 104: 2111, 2111, 2111, 2111, 109: 2111, 532: 2111, 542: 2111, 546: 2111, 983: 5370}, - {2543, 2543, 2543, 2543, 2543, 2543, 5375, 9: 2543, 19: 5372, 57: 2543, 104: 5379, 5224, 4926, 5225, 109: 4925, 532: 5374, 542: 5378, 546: 2543, 959: 5376, 961: 5373, 971: 5377, 982: 5371}, - {2110, 2110, 2110, 2110, 2110, 2110, 2110, 9: 2110, 19: 2110, 57: 2110, 102: 2110, 104: 2110, 2110, 2110, 2110, 109: 2110, 532: 2110, 542: 2110, 546: 2110, 562: 2110}, - {555: 4588, 560: 2316, 802: 5385}, - {2108, 2108, 2108, 2108, 2108, 2108, 2108, 9: 2108, 19: 2108, 57: 2108, 102: 2108, 104: 2108, 2108, 2108, 2108, 109: 2108, 532: 2108, 542: 2108, 546: 2108, 562: 2108}, + {2108, 2108, 2108, 2108, 2108, 2108, 2108, 9: 2108, 19: 2108, 57: 2108, 102: 2108, 104: 2108, 2108, 2108, 2108, 109: 2108, 535: 2108, 2108, 2108, 547: 2108, 551: 2108, 567: 2108}, + {2107, 2107, 2107, 2107, 2107, 2107, 2107, 9: 2107, 19: 2107, 57: 2107, 102: 2107, 104: 2107, 2107, 2107, 2107, 109: 2107, 535: 2107, 2107, 2107, 547: 2107, 551: 2107, 567: 2107}, + {182: 5385, 209: 5387, 228: 5384, 242: 5386, 1010: 5389}, + {536: 2115}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 536: 5137, 777: 4047, 3068, 3069, 3067, 828: 5136, 928: 5135, 939: 5391}, // 2520 - {415: 5383}, - {533: 5382}, - {2105, 2105, 2105, 2105, 2105, 2105, 2105, 9: 2105, 19: 2105, 57: 2105, 102: 2105, 104: 2105, 2105, 2105, 2105, 109: 2105, 532: 2105, 542: 2105, 546: 2105, 562: 2105}, - {2104, 2104, 2104, 2104, 2104, 2104, 2104, 9: 2104, 19: 2104, 57: 2104, 102: 2104, 104: 2104, 2104, 2104, 2104, 109: 2104, 532: 2104, 542: 2104, 546: 2104, 562: 2104}, - {182: 5362, 207: 5364, 228: 5361, 242: 5363, 1004: 5381}, + {9: 5146, 57: 5392}, + {2125, 2125, 2125, 2125, 2125, 2125, 2125, 9: 2125, 19: 2125, 57: 2125, 104: 2125, 2125, 2125, 2125, 109: 2125, 537: 2125, 547: 2125, 551: 2125, 989: 5393}, + {2557, 2557, 2557, 2557, 2557, 2557, 5398, 9: 2557, 19: 5395, 57: 2557, 104: 5402, 5247, 4949, 5248, 109: 4948, 537: 5397, 547: 5401, 551: 2557, 965: 5399, 967: 5396, 977: 5400, 988: 5394}, + {2124, 2124, 2124, 2124, 2124, 2124, 2124, 9: 2124, 19: 2124, 57: 2124, 102: 2124, 104: 2124, 2124, 2124, 2124, 109: 2124, 537: 2124, 547: 2124, 551: 2124, 567: 2124}, + {561: 4611, 564: 2330, 808: 5408}, // 2525 - {182: 5362, 207: 5364, 228: 5361, 242: 5363, 1004: 5380}, - {2097, 2097, 2097, 2097, 2097, 2097, 2097, 9: 2097, 19: 2097, 57: 2097, 102: 2097, 104: 2097, 2097, 2097, 2097, 109: 2097, 530: 2097, 532: 2097, 542: 2097, 546: 2097, 562: 2097}, - {2098, 2098, 2098, 2098, 2098, 2098, 2098, 9: 2098, 19: 2098, 57: 2098, 102: 2098, 104: 2098, 2098, 2098, 2098, 109: 2098, 530: 2098, 532: 2098, 542: 2098, 546: 2098, 562: 2098}, - {2106, 2106, 2106, 2106, 2106, 2106, 2106, 9: 2106, 19: 2106, 57: 2106, 102: 2106, 104: 2106, 2106, 2106, 2106, 109: 2106, 532: 2106, 542: 2106, 546: 2106, 562: 2106}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 5384, 3051, 3052, 3050}, + {2122, 2122, 2122, 2122, 2122, 2122, 2122, 9: 2122, 19: 2122, 57: 2122, 102: 2122, 104: 2122, 2122, 2122, 2122, 109: 2122, 537: 2122, 547: 2122, 551: 2122, 567: 2122}, + {418: 5406}, + {538: 5405}, + {2119, 2119, 2119, 2119, 2119, 2119, 2119, 9: 2119, 19: 2119, 57: 2119, 102: 2119, 104: 2119, 2119, 2119, 2119, 109: 2119, 537: 2119, 547: 2119, 551: 2119, 567: 2119}, + {2118, 2118, 2118, 2118, 2118, 2118, 2118, 9: 2118, 19: 2118, 57: 2118, 102: 2118, 104: 2118, 2118, 2118, 2118, 109: 2118, 537: 2118, 547: 2118, 551: 2118, 567: 2118}, // 2530 - {2107, 2107, 2107, 2107, 2107, 2107, 2107, 9: 2107, 19: 2107, 57: 2107, 102: 2107, 104: 2107, 2107, 2107, 2107, 109: 2107, 532: 2107, 542: 2107, 546: 2107, 562: 2107}, - {560: 3037, 799: 3866, 816: 5386}, - {2109, 2109, 2109, 2109, 2109, 2109, 2109, 9: 2109, 19: 2109, 57: 2109, 102: 2109, 104: 2109, 2109, 2109, 2109, 109: 2109, 532: 2109, 542: 2109, 546: 2109, 562: 2109}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 531: 2113, 542: 2113, 770: 5357, 3051, 3052, 3050, 981: 5358, 1053: 5388}, - {531: 5389}, + {182: 5385, 209: 5387, 228: 5384, 242: 5386, 1010: 5404}, + {182: 5385, 209: 5387, 228: 5384, 242: 5386, 1010: 5403}, + {2111, 2111, 2111, 2111, 2111, 2111, 2111, 9: 2111, 19: 2111, 57: 2111, 102: 2111, 104: 2111, 2111, 2111, 2111, 109: 2111, 535: 2111, 537: 2111, 547: 2111, 551: 2111, 567: 2111}, + {2112, 2112, 2112, 2112, 2112, 2112, 2112, 9: 2112, 19: 2112, 57: 2112, 102: 2112, 104: 2112, 2112, 2112, 2112, 109: 2112, 535: 2112, 537: 2112, 547: 2112, 551: 2112, 567: 2112}, + {2120, 2120, 2120, 2120, 2120, 2120, 2120, 9: 2120, 19: 2120, 57: 2120, 102: 2120, 104: 2120, 2120, 2120, 2120, 109: 2120, 537: 2120, 547: 2120, 551: 2120, 567: 2120}, // 2535 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 531: 5114, 770: 4024, 3051, 3052, 3050, 821: 5113, 922: 5112, 932: 5390}, - {9: 5123, 57: 5391}, - {2111, 2111, 2111, 2111, 2111, 2111, 2111, 9: 2111, 19: 2111, 57: 2111, 104: 2111, 2111, 2111, 2111, 109: 2111, 532: 2111, 542: 2111, 546: 2111, 983: 5392}, - {2544, 2544, 2544, 2544, 2544, 2544, 5375, 9: 2544, 19: 5372, 57: 2544, 104: 5379, 5224, 4926, 5225, 109: 4925, 532: 5374, 542: 5378, 546: 2544, 959: 5376, 961: 5373, 971: 5377, 982: 5371}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 531: 2113, 770: 5349, 3051, 3052, 3050, 981: 5394}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 5407, 3068, 3069, 3067}, + {2121, 2121, 2121, 2121, 2121, 2121, 2121, 9: 2121, 19: 2121, 57: 2121, 102: 2121, 104: 2121, 2121, 2121, 2121, 109: 2121, 537: 2121, 547: 2121, 551: 2121, 567: 2121}, + {564: 3054, 805: 3889, 820: 5409}, + {2123, 2123, 2123, 2123, 2123, 2123, 2123, 9: 2123, 19: 2123, 57: 2123, 102: 2123, 104: 2123, 2123, 2123, 2123, 109: 2123, 537: 2123, 547: 2123, 551: 2123, 567: 2123}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 536: 2127, 547: 2127, 777: 5380, 3068, 3069, 3067, 987: 5381, 1059: 5411}, // 2540 - {531: 5395}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 531: 5114, 770: 4024, 3051, 3052, 3050, 821: 5113, 922: 5112, 932: 5396}, - {9: 5123, 57: 5397}, - {2111, 2111, 2111, 2111, 2111, 2111, 2111, 9: 2111, 19: 2111, 57: 2111, 104: 2111, 2111, 2111, 2111, 109: 2111, 532: 2111, 542: 2111, 546: 2111, 983: 5398}, - {2545, 2545, 2545, 2545, 2545, 2545, 5375, 9: 2545, 19: 5372, 57: 2545, 104: 5379, 5224, 4926, 5225, 109: 4925, 532: 5374, 542: 5378, 546: 2545, 959: 5376, 961: 5373, 971: 5377, 982: 5371}, + {536: 5412}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 536: 5137, 777: 4047, 3068, 3069, 3067, 828: 5136, 928: 5135, 939: 5413}, + {9: 5146, 57: 5414}, + {2125, 2125, 2125, 2125, 2125, 2125, 2125, 9: 2125, 19: 2125, 57: 2125, 104: 2125, 2125, 2125, 2125, 109: 2125, 537: 2125, 547: 2125, 551: 2125, 989: 5415}, + {2558, 2558, 2558, 2558, 2558, 2558, 5398, 9: 2558, 19: 5395, 57: 2558, 104: 5402, 5247, 4949, 5248, 109: 4948, 537: 5397, 547: 5401, 551: 2558, 965: 5399, 967: 5396, 977: 5400, 988: 5394}, // 2545 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 531: 2113, 542: 2113, 770: 5357, 3051, 3052, 3050, 981: 5358, 1053: 5400}, - {531: 5401}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 531: 5114, 770: 4024, 3051, 3052, 3050, 821: 5113, 922: 5112, 932: 5402}, - {9: 5123, 57: 5403}, - {2111, 2111, 2111, 2111, 2111, 2111, 2111, 9: 2111, 19: 2111, 57: 2111, 104: 2111, 2111, 2111, 2111, 109: 2111, 532: 2111, 542: 2111, 546: 2111, 983: 5404}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 536: 2127, 777: 5372, 3068, 3069, 3067, 987: 5417}, + {536: 5418}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 536: 5137, 777: 4047, 3068, 3069, 3067, 828: 5136, 928: 5135, 939: 5419}, + {9: 5146, 57: 5420}, + {2125, 2125, 2125, 2125, 2125, 2125, 2125, 9: 2125, 19: 2125, 57: 2125, 104: 2125, 2125, 2125, 2125, 109: 2125, 537: 2125, 547: 2125, 551: 2125, 989: 5421}, // 2550 - {2546, 2546, 2546, 2546, 2546, 2546, 5375, 9: 2546, 19: 5372, 57: 2546, 104: 5379, 5224, 4926, 5225, 109: 4925, 532: 5374, 542: 5378, 546: 2546, 959: 5376, 961: 5373, 971: 5377, 982: 5371}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 5406, 3051, 3052, 3050}, - {286: 5408, 294: 5410, 297: 5409, 1287: 5407}, - {531: 5411}, - {57: 2491, 531: 2491}, + {2559, 2559, 2559, 2559, 2559, 2559, 5398, 9: 2559, 19: 5395, 57: 2559, 104: 5402, 5247, 4949, 5248, 109: 4948, 537: 5397, 547: 5401, 551: 2559, 965: 5399, 967: 5396, 977: 5400, 988: 5394}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 536: 2127, 547: 2127, 777: 5380, 3068, 3069, 3067, 987: 5381, 1059: 5423}, + {536: 5424}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 536: 5137, 777: 4047, 3068, 3069, 3067, 828: 5136, 928: 5135, 939: 5425}, + {9: 5146, 57: 5426}, // 2555 - {57: 2490, 531: 2490}, - {57: 2489, 531: 2489}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4024, 3051, 3052, 3050, 821: 4025, 906: 5412}, - {9: 4027, 57: 5413}, - {2766, 2766, 2766, 2766, 2766, 2766, 9: 2766, 546: 2766}, + {2125, 2125, 2125, 2125, 2125, 2125, 2125, 9: 2125, 19: 2125, 57: 2125, 104: 2125, 2125, 2125, 2125, 109: 2125, 537: 2125, 547: 2125, 551: 2125, 989: 5427}, + {2560, 2560, 2560, 2560, 2560, 2560, 5398, 9: 2560, 19: 5395, 57: 2560, 104: 5402, 5247, 4949, 5248, 109: 4948, 537: 5397, 547: 5401, 551: 2560, 965: 5399, 967: 5396, 977: 5400, 988: 5394}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 5429, 3068, 3069, 3067}, + {286: 5431, 294: 5433, 297: 5432, 1293: 5430}, + {536: 5434}, // 2560 - {762, 762, 762, 762, 762, 762, 9: 762, 116: 762, 173: 5251, 531: 762, 546: 762, 908: 5250, 924: 5415}, - {2412, 2412, 2412, 2412, 2412, 2412, 9: 2412, 116: 5417, 531: 5418, 546: 2412, 1231: 5416}, - {2769, 2769, 2769, 2769, 2769, 2769, 9: 2769, 546: 2769}, - {560: 3037, 799: 5464}, - {546: 5421, 1067: 5420, 1230: 5419}, + {57: 2505, 536: 2505}, + {57: 2504, 536: 2504}, + {57: 2503, 536: 2503}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4047, 3068, 3069, 3067, 828: 4048, 912: 5435}, + {9: 4050, 57: 5436}, // 2565 - {9: 5462, 57: 5461}, - {9: 2410, 57: 2410}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 5422, 3051, 3052, 3050}, - {6: 2389, 2389, 9: 2389, 18: 2389, 20: 2389, 22: 2389, 2389, 2389, 2389, 2389, 2389, 57: 2389, 189: 5427, 262: 5426, 531: 2389, 535: 5425, 547: 5424, 710: 2389, 1414: 5423}, - {6: 2402, 2402, 9: 2402, 18: 2402, 20: 2402, 22: 2402, 2402, 2402, 2402, 2402, 2402, 57: 2402, 531: 2402, 710: 2402, 1066: 5448}, + {2783, 2783, 2783, 2783, 2783, 2783, 9: 2783, 551: 2783}, + {763, 763, 763, 763, 763, 763, 9: 763, 116: 763, 173: 5274, 536: 763, 551: 763, 914: 5273, 930: 5438}, + {2426, 2426, 2426, 2426, 2426, 2426, 9: 2426, 116: 5440, 536: 5441, 551: 2426, 1237: 5439}, + {2786, 2786, 2786, 2786, 2786, 2786, 9: 2786, 551: 2786}, + {564: 3054, 805: 5487}, // 2570 - {192: 5428, 606: 5429}, - {6: 2386, 2386, 9: 2386, 18: 2386, 20: 2386, 22: 2386, 2386, 2386, 2386, 2386, 2386, 57: 2386, 531: 2386, 710: 2386}, - {6: 2384, 2384, 9: 2384, 18: 2384, 20: 2384, 22: 2384, 2384, 2384, 2384, 2384, 2384, 57: 2384, 531: 2384, 710: 2384}, - {6: 2383, 2383, 9: 2383, 18: 2383, 20: 2383, 22: 2383, 2383, 2383, 2383, 2383, 2383, 57: 2383, 531: 2383, 710: 2383}, - {199: 5438}, + {551: 5444, 1073: 5443, 1236: 5442}, + {9: 5485, 57: 5484}, + {9: 2424, 57: 2424}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 5445, 3068, 3069, 3067}, + {6: 2403, 2403, 9: 2403, 18: 2403, 20: 2403, 22: 2403, 2403, 2403, 2403, 2403, 2403, 57: 2403, 189: 5450, 262: 5449, 536: 2403, 540: 5448, 552: 5447, 715: 2403, 1421: 5446}, // 2575 - {531: 5430}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 5432, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 5433, 1147: 5434, 1348: 5431}, - {9: 5436, 57: 5435}, - {9: 2203, 57: 2203, 531: 3900}, - {9: 2202, 57: 2202, 543: 3782, 3783, 3788, 584: 3784, 609: 3785, 3786, 3779, 3789, 3778, 615: 3787, 3780, 618: 3781}, + {6: 2416, 2416, 9: 2416, 18: 2416, 20: 2416, 22: 2416, 2416, 2416, 2416, 2416, 2416, 57: 2416, 536: 2416, 715: 2416, 1072: 5471}, + {192: 5451, 611: 5452}, + {6: 2400, 2400, 9: 2400, 18: 2400, 20: 2400, 22: 2400, 2400, 2400, 2400, 2400, 2400, 57: 2400, 536: 2400, 715: 2400}, + {6: 2398, 2398, 9: 2398, 18: 2398, 20: 2398, 22: 2398, 2398, 2398, 2398, 2398, 2398, 57: 2398, 536: 2398, 715: 2398}, + {6: 2397, 2397, 9: 2397, 18: 2397, 20: 2397, 22: 2397, 2397, 2397, 2397, 2397, 2397, 57: 2397, 536: 2397, 715: 2397}, // 2580 - {9: 2186, 57: 2186}, - {6: 2385, 2385, 9: 2385, 18: 2385, 20: 2385, 22: 2385, 2385, 2385, 2385, 2385, 2385, 57: 2385, 531: 2385, 710: 2385}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 5432, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 5433, 1147: 5437}, - {9: 2185, 57: 2185}, - {531: 5440, 720: 5439}, + {201: 5461}, + {536: 5453}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 5455, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 5456, 1153: 5457, 1355: 5454}, + {9: 5459, 57: 5458}, + {9: 2217, 57: 2217, 536: 3923}, // 2585 - {6: 2388, 2388, 9: 2388, 18: 2388, 20: 2388, 22: 2388, 2388, 2388, 2388, 2388, 2388, 57: 2388, 531: 2388, 710: 2388}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 720: 5442, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 5443, 1212: 5444, 1395: 5441}, - {9: 5446, 57: 5445}, - {9: 2201, 57: 2201}, - {9: 2200, 57: 2200, 543: 3782, 3783, 3788, 584: 3784, 609: 3785, 3786, 3779, 3789, 3778, 615: 3787, 3780, 618: 3781}, + {9: 2216, 57: 2216, 548: 3805, 3806, 3811, 589: 3807, 614: 3808, 3809, 3802, 3812, 3801, 3810, 3803, 3804}, + {9: 2200, 57: 2200}, + {6: 2399, 2399, 9: 2399, 18: 2399, 20: 2399, 22: 2399, 2399, 2399, 2399, 2399, 2399, 57: 2399, 536: 2399, 715: 2399}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 5455, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 5456, 1153: 5460}, + {9: 2199, 57: 2199}, // 2590 - {9: 2188, 57: 2188}, - {6: 2387, 2387, 9: 2387, 18: 2387, 20: 2387, 22: 2387, 2387, 2387, 2387, 2387, 2387, 57: 2387, 531: 2387, 710: 2387}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 720: 5442, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 5443, 1212: 5447}, - {9: 2187, 57: 2187}, - {6: 4725, 5452, 9: 2407, 18: 4681, 20: 4733, 22: 4729, 4726, 4728, 4731, 4732, 4734, 57: 2407, 531: 5450, 710: 4730, 865: 4735, 910: 5451, 1475: 5449}, + {536: 5463, 725: 5462}, + {6: 2402, 2402, 9: 2402, 18: 2402, 20: 2402, 22: 2402, 2402, 2402, 2402, 2402, 2402, 57: 2402, 536: 2402, 715: 2402}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 725: 5465, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 5466, 1218: 5467, 1402: 5464}, + {9: 5469, 57: 5468}, + {9: 2215, 57: 2215}, // 2595 - {9: 2408, 57: 2408}, - {115: 5455, 1288: 5454, 1474: 5453}, - {2401, 2401, 6: 2401, 2401, 9: 2401, 18: 2401, 20: 2401, 22: 2401, 2401, 2401, 2401, 2401, 2401, 57: 2401, 531: 2401, 710: 2401}, - {23: 4877}, - {9: 5459, 57: 5458}, + {9: 2214, 57: 2214, 548: 3805, 3806, 3811, 589: 3807, 614: 3808, 3809, 3802, 3812, 3801, 3810, 3803, 3804}, + {9: 2202, 57: 2202}, + {6: 2401, 2401, 9: 2401, 18: 2401, 20: 2401, 22: 2401, 2401, 2401, 2401, 2401, 2401, 57: 2401, 536: 2401, 715: 2401}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 725: 5465, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 5466, 1218: 5470}, + {9: 2201, 57: 2201}, // 2600 - {9: 2405, 57: 2405}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 5456, 3051, 3052, 3050}, - {6: 2402, 2402, 9: 2402, 18: 2402, 20: 2402, 22: 2402, 2402, 2402, 2402, 2402, 2402, 57: 2402, 710: 2402, 1066: 5457}, - {6: 4725, 5452, 9: 2403, 18: 4681, 20: 4733, 22: 4729, 4726, 4728, 4731, 4732, 4734, 57: 2403, 710: 4730, 865: 4735, 910: 5451}, - {9: 2406, 57: 2406}, + {6: 4748, 5475, 9: 2421, 18: 4704, 20: 4756, 22: 4752, 4749, 4751, 4754, 4755, 4757, 57: 2421, 536: 5473, 715: 4753, 871: 4758, 916: 5474, 1482: 5472}, + {9: 2422, 57: 2422}, + {115: 5478, 1294: 5477, 1481: 5476}, + {2415, 2415, 6: 2415, 2415, 9: 2415, 18: 2415, 20: 2415, 22: 2415, 2415, 2415, 2415, 2415, 2415, 57: 2415, 536: 2415, 715: 2415}, + {23: 4900}, // 2605 - {115: 5455, 1288: 5460}, - {9: 2404, 57: 2404}, - {2411, 2411, 2411, 2411, 2411, 2411, 9: 2411, 530: 2411, 2411, 2411, 537: 2411, 546: 2411, 2411, 549: 2411, 552: 2411, 608: 2411, 695: 2411}, - {546: 5421, 1067: 5463}, - {9: 2409, 57: 2409}, + {9: 5482, 57: 5481}, + {9: 2419, 57: 2419}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 5479, 3068, 3069, 3067}, + {6: 2416, 2416, 9: 2416, 18: 2416, 20: 2416, 22: 2416, 2416, 2416, 2416, 2416, 2416, 57: 2416, 715: 2416, 1072: 5480}, + {6: 4748, 5475, 9: 2417, 18: 4704, 20: 4756, 22: 4752, 4749, 4751, 4754, 4755, 4757, 57: 2417, 715: 4753, 871: 4758, 916: 5474}, // 2610 - {2768, 2768, 2768, 2768, 2768, 2768, 9: 2768, 546: 2768}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 531: 5467, 770: 4024, 3051, 3052, 3050, 821: 4952, 953: 5466}, - {2694, 2694, 2694, 2694, 2694, 2694, 9: 2694, 5232, 5233, 546: 2694, 1033: 5475}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 701: 2685, 2685, 704: 2685, 2685, 5085, 710: 2685, 746: 2685, 2685, 770: 4024, 3051, 3052, 3050, 821: 4952, 928: 5331, 953: 5469, 1002: 5470, 1085: 5471, 1291: 5468}, - {9: 5473, 57: 5472}, + {9: 2420, 57: 2420}, + {115: 5478, 1294: 5483}, + {9: 2418, 57: 2418}, + {2425, 2425, 2425, 2425, 2425, 2425, 9: 2425, 535: 2425, 2425, 2425, 542: 2425, 551: 2425, 2425, 554: 2425, 557: 2425, 613: 2425, 661: 2425}, + {551: 5444, 1073: 5486}, // 2615 + {9: 2423, 57: 2423}, + {2785, 2785, 2785, 2785, 2785, 2785, 9: 2785, 551: 2785}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 536: 5490, 777: 4047, 3068, 3069, 3067, 828: 4975, 959: 5489}, + {2711, 2711, 2711, 2711, 2711, 2711, 9: 2711, 5255, 5256, 551: 2711, 1039: 5498}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 706: 2702, 708: 2702, 2702, 2702, 5108, 715: 2702, 751: 2702, 2702, 777: 4047, 3068, 3069, 3067, 828: 4975, 935: 5354, 959: 5492, 1008: 5493, 1091: 5494, 1297: 5491}, + // 2620 + {9: 5496, 57: 5495}, + {9: 624, 57: 624}, {9: 623, 57: 623}, {9: 622, 57: 622}, - {9: 621, 57: 621}, - {2771, 2771, 2771, 2771, 2771, 2771, 9: 2771, 546: 2771}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 701: 2685, 2685, 704: 2685, 2685, 5085, 710: 2685, 746: 2685, 2685, 770: 4024, 3051, 3052, 3050, 821: 4952, 928: 5331, 953: 5469, 1002: 5470, 1085: 5474}, - // 2620 - {9: 620, 57: 620}, - {2772, 2772, 2772, 2772, 2772, 2772, 9: 2772, 546: 2772}, - {16: 4418, 553: 4419, 709: 4417, 853: 5477}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 535: 5479, 586: 4354, 770: 3737, 3051, 3052, 3050, 805: 4353, 905: 5478}, - {444, 444, 444, 444, 444, 444, 9: 444, 538: 5481, 546: 444, 1221: 5483}, + {2788, 2788, 2788, 2788, 2788, 2788, 9: 2788, 551: 2788}, // 2625 - {444, 444, 444, 444, 444, 444, 9: 444, 538: 5481, 546: 444, 1221: 5480}, - {2773, 2773, 2773, 2773, 2773, 2773, 9: 2773, 546: 2773}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 586: 3735, 770: 3737, 3051, 3052, 3050, 805: 3734, 974: 5482}, - {443, 443, 443, 443, 443, 443, 9: 443, 546: 443}, - {2774, 2774, 2774, 2774, 2774, 2774, 9: 2774, 546: 2774}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 706: 2702, 708: 2702, 2702, 2702, 5108, 715: 2702, 751: 2702, 2702, 777: 4047, 3068, 3069, 3067, 828: 4975, 935: 5354, 959: 5492, 1008: 5493, 1091: 5497}, + {9: 621, 57: 621}, + {2789, 2789, 2789, 2789, 2789, 2789, 9: 2789, 551: 2789}, + {16: 4441, 558: 4442, 714: 4440, 859: 5500}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 540: 5502, 591: 4377, 777: 3760, 3068, 3069, 3067, 811: 4376, 911: 5501}, // 2630 - {223: 5496}, - {200: 5486}, - {223: 5487}, - {560: 3037, 799: 3866, 816: 5488}, - {2779, 2779, 2779, 2779, 2779, 2779, 9: 2779, 220: 5489, 546: 2779, 1057: 5490}, + {445, 445, 445, 445, 445, 445, 9: 445, 543: 5504, 551: 445, 1227: 5506}, + {445, 445, 445, 445, 445, 445, 9: 445, 543: 5504, 551: 445, 1227: 5503}, + {2790, 2790, 2790, 2790, 2790, 2790, 9: 2790, 551: 2790}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 591: 3758, 777: 3760, 3068, 3069, 3067, 811: 3757, 980: 5505}, + {444, 444, 444, 444, 444, 444, 9: 444, 551: 444}, // 2635 - {319: 5491}, - {2775, 2775, 2775, 2775, 2775, 2775, 9: 2775, 546: 2775}, - {533: 5493, 1472: 5492}, - {2778, 2778, 2778, 2778, 2778, 2778, 9: 5494, 16: 2778, 18: 2778, 21: 2778, 535: 2778, 538: 2778, 546: 2778, 553: 2778, 557: 2778, 709: 2778}, - {442, 442, 442, 442, 442, 442, 9: 442, 16: 442, 18: 442, 21: 442, 535: 442, 538: 442, 546: 442, 553: 442, 557: 442, 709: 442}, + {2791, 2791, 2791, 2791, 2791, 2791, 9: 2791, 551: 2791}, + {224: 5519}, + {202: 5509}, + {224: 5510}, + {564: 3054, 805: 3889, 820: 5511}, // 2640 - {533: 5495}, - {441, 441, 441, 441, 441, 441, 9: 441, 16: 441, 18: 441, 21: 441, 535: 441, 538: 441, 546: 441, 553: 441, 557: 441, 709: 441}, - {560: 3037, 799: 3866, 816: 5497}, - {2779, 2779, 2779, 2779, 2779, 2779, 9: 2779, 220: 5489, 546: 2779, 1057: 5498}, - {2776, 2776, 2776, 2776, 2776, 2776, 9: 2776, 546: 2776}, + {2796, 2796, 2796, 2796, 2796, 2796, 9: 2796, 221: 5512, 551: 2796, 1063: 5513}, + {319: 5514}, + {2792, 2792, 2792, 2792, 2792, 2792, 9: 2792, 551: 2792}, + {538: 5516, 1479: 5515}, + {2795, 2795, 2795, 2795, 2795, 2795, 9: 5517, 16: 2795, 18: 2795, 21: 2795, 540: 2795, 543: 2795, 551: 2795, 558: 2795, 560: 2795, 714: 2795}, // 2645 - {8: 579, 29: 579}, - {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, 530: 573, 573, 573, 535: 573, 537: 573, 573, 573, 546: 573, 573, 549: 573, 552: 573, 573, 565: 573, 608: 573, 695: 573, 709: 573, 573}, - {6: 4725, 4727, 580, 15: 4744, 2446, 4742, 4681, 4746, 4733, 4762, 4729, 4726, 4728, 4731, 4732, 4734, 4741, 580, 4752, 4753, 4763, 4739, 4740, 4745, 4747, 4759, 4758, 4767, 4760, 4757, 4750, 4755, 4756, 4749, 4751, 4754, 4743, 4764, 4765, 535: 4724, 538: 2446, 4761, 553: 2446, 565: 5499, 709: 2446, 4730, 865: 4735, 891: 4737, 910: 4736, 931: 4738, 937: 4748, 941: 5502}, - {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, 530: 572, 572, 572, 535: 572, 537: 572, 572, 572, 546: 572, 572, 549: 572, 552: 572, 572, 565: 572, 608: 572, 695: 572, 709: 572, 572}, - {533: 5505, 535: 5504}, + {443, 443, 443, 443, 443, 443, 9: 443, 16: 443, 18: 443, 21: 443, 540: 443, 543: 443, 551: 443, 558: 443, 560: 443, 714: 443}, + {538: 5518}, + {442, 442, 442, 442, 442, 442, 9: 442, 16: 442, 18: 442, 21: 442, 540: 442, 543: 442, 551: 442, 558: 442, 560: 442, 714: 442}, + {564: 3054, 805: 3889, 820: 5520}, + {2796, 2796, 2796, 2796, 2796, 2796, 9: 2796, 221: 5512, 551: 2796, 1063: 5521}, // 2650 - {2789, 2789, 2789, 2789, 2789, 2789, 9: 2789, 546: 2789}, - {2788, 2788, 2788, 2788, 2788, 2788, 9: 2788, 546: 2788}, - {533: 5508, 535: 5507}, - {2791, 2791, 2791, 2791, 2791, 2791, 9: 2791, 546: 2791}, - {2790, 2790, 2790, 2790, 2790, 2790, 9: 2790, 546: 2790}, + {2793, 2793, 2793, 2793, 2793, 2793, 9: 2793, 551: 2793}, + {8: 580, 29: 580}, + {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, 535: 574, 574, 574, 540: 574, 542: 574, 574, 574, 551: 574, 574, 554: 574, 557: 574, 574, 570: 574, 613: 574, 661: 574, 714: 574, 574}, + {6: 4748, 4750, 581, 15: 4767, 2460, 4765, 4704, 4769, 4756, 4785, 4752, 4749, 4751, 4754, 4755, 4757, 4764, 581, 4775, 4776, 4786, 4762, 4763, 4768, 4770, 4782, 4781, 4790, 4783, 4780, 4773, 4778, 4779, 4772, 4774, 4777, 4766, 4787, 4788, 540: 4747, 543: 2460, 4784, 558: 2460, 570: 5522, 714: 2460, 4753, 871: 4758, 897: 4760, 916: 4759, 938: 4761, 944: 4771, 948: 5525}, + {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, 535: 573, 573, 573, 540: 573, 542: 573, 573, 573, 551: 573, 573, 554: 573, 557: 573, 573, 570: 573, 613: 573, 661: 573, 714: 573, 573}, // 2655 - {2: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 10: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 58: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 533: 2316, 535: 2316, 555: 4588, 557: 5511, 802: 5510}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 5513, 535: 5515, 770: 5516, 3051, 3052, 3050, 989: 5514}, - {535: 5512}, - {2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 15: 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 57: 2792, 530: 2792, 2792, 2792, 535: 2792, 537: 2792, 2792, 2792, 546: 2792, 2792, 549: 2792, 552: 2792, 2792, 557: 2792, 565: 2792, 608: 2792, 695: 2792, 709: 2792, 2792}, - {2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 15: 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 57: 2795, 530: 2795, 2795, 2795, 535: 2795, 537: 2795, 2795, 2795, 546: 2795, 2795, 549: 2795, 552: 2795, 2795, 557: 2795, 565: 2795, 608: 2795, 695: 2795, 709: 2795, 2795}, + {538: 5528, 540: 5527}, + {2806, 2806, 2806, 2806, 2806, 2806, 9: 2806, 551: 2806}, + {2805, 2805, 2805, 2805, 2805, 2805, 9: 2805, 551: 2805}, + {538: 5531, 540: 5530}, + {2808, 2808, 2808, 2808, 2808, 2808, 9: 2808, 551: 2808}, // 2660 - {2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 15: 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 57: 2794, 530: 2794, 2794, 2794, 535: 2794, 537: 2794, 2794, 2794, 546: 2794, 2794, 549: 2794, 552: 2794, 2794, 557: 2794, 565: 2794, 608: 2794, 695: 2794, 709: 2794, 2794}, - {2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 15: 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 57: 2793, 530: 2793, 2793, 2793, 535: 2793, 537: 2793, 2793, 2793, 546: 2793, 2793, 549: 2793, 552: 2793, 2793, 557: 2793, 565: 2793, 608: 2793, 695: 2793, 709: 2793, 2793}, - {2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 15: 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 57: 2464, 108: 2464, 119: 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 128: 2464, 2464, 2464, 530: 2464, 2464, 2464, 535: 2464, 537: 2464, 2464, 2464, 546: 2464, 2464, 549: 2464, 552: 2464, 2464, 557: 2464, 565: 2464, 608: 2464, 695: 2464, 709: 2464, 2464}, - {223: 5522}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 5255, 3051, 3052, 3050, 859: 5519}, + {2807, 2807, 2807, 2807, 2807, 2807, 9: 2807, 551: 2807}, + {2: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 10: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 58: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 538: 2330, 540: 2330, 560: 5534, 4611, 808: 5533}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 5536, 540: 5538, 777: 5539, 3068, 3069, 3067, 995: 5537}, + {540: 5535}, + {2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 15: 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 57: 2809, 535: 2809, 2809, 2809, 540: 2809, 542: 2809, 2809, 2809, 551: 2809, 2809, 554: 2809, 557: 2809, 2809, 560: 2809, 570: 2809, 613: 2809, 661: 2809, 714: 2809, 2809}, // 2665 - {2847, 2847, 9: 5256, 200: 5520}, - {223: 5521}, - {2846, 2846}, - {2848, 2848}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 5255, 3051, 3052, 3050, 859: 5524}, + {2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 15: 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 57: 2812, 535: 2812, 2812, 2812, 540: 2812, 542: 2812, 2812, 2812, 551: 2812, 2812, 554: 2812, 557: 2812, 2812, 560: 2812, 570: 2812, 613: 2812, 661: 2812, 714: 2812, 2812}, + {2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 15: 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 57: 2811, 535: 2811, 2811, 2811, 540: 2811, 542: 2811, 2811, 2811, 551: 2811, 2811, 554: 2811, 557: 2811, 2811, 560: 2811, 570: 2811, 613: 2811, 661: 2811, 714: 2811, 2811}, + {2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 15: 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 57: 2810, 535: 2810, 2810, 2810, 540: 2810, 542: 2810, 2810, 2810, 551: 2810, 2810, 554: 2810, 557: 2810, 2810, 560: 2810, 570: 2810, 613: 2810, 661: 2810, 714: 2810, 2810}, + {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, 57: 2478, 108: 2478, 119: 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 128: 2478, 2478, 2478, 535: 2478, 2478, 2478, 540: 2478, 542: 2478, 2478, 2478, 551: 2478, 2478, 554: 2478, 557: 2478, 2478, 560: 2478, 570: 2478, 613: 2478, 661: 2478, 714: 2478, 2478}, + {224: 5545}, // 2670 - {2642, 2642, 9: 5256, 532: 5527, 710: 5526, 902: 5525}, - {2851, 2851}, - {1107, 1107, 3297, 3451, 3261, 3138, 3177, 3299, 3064, 1107, 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 532: 1107, 704: 5544, 770: 5543, 3051, 3052, 3050, 960: 5542}, - {560: 5532, 636: 4089, 4088, 799: 5530, 916: 5531, 1112: 5529, 1318: 5528}, - {2641, 2641, 9: 5540}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 5278, 3068, 3069, 3067, 865: 5542}, + {2864, 2864, 9: 5279, 202: 5543}, + {224: 5544}, + {2863, 2863}, + {2865, 2865}, // 2675 - {2640, 2640, 9: 2640}, - {283: 5534, 289: 5536, 337: 5537, 356: 5535}, - {243: 5533}, - {243: 2494, 283: 2224, 289: 2224, 337: 2224, 356: 2224}, - {2633, 2633, 9: 2633}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 5278, 3068, 3069, 3067, 865: 5547}, + {2656, 2656, 9: 5279, 537: 5550, 715: 5549, 908: 5548}, + {2868, 2868}, + {1115, 1115, 3317, 3472, 3281, 3157, 3197, 3319, 3081, 1115, 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 537: 1115, 708: 5567, 777: 5566, 3068, 3069, 3067, 966: 5565}, + {564: 5555, 641: 4112, 4111, 805: 5553, 922: 5554, 1118: 5552, 1324: 5551}, // 2680 - {2638, 2638, 9: 2638}, - {2637, 2637, 9: 2637}, - {382: 5538, 457: 5539}, - {2634, 2634, 9: 2634}, - {2636, 2636, 9: 2636}, + {2655, 2655, 9: 5563}, + {2654, 2654, 9: 2654}, + {283: 5557, 289: 5559, 338: 5560, 357: 5558}, + {243: 5556}, + {243: 2508, 283: 2238, 289: 2238, 338: 2238, 357: 2238}, // 2685 - {2635, 2635, 9: 2635}, - {560: 5532, 636: 4089, 4088, 799: 5530, 916: 5531, 1112: 5541}, - {2639, 2639, 9: 2639}, - {2642, 2642, 9: 5546, 532: 5527, 902: 5545}, - {1106, 1106, 9: 1106, 57: 1106, 532: 1106}, + {2647, 2647, 9: 2647}, + {2652, 2652, 9: 2652}, + {2651, 2651, 9: 2651}, + {384: 5561, 461: 5562}, + {2648, 2648, 9: 2648}, // 2690 - {1104, 1104, 9: 1104, 57: 1104, 532: 1104}, - {2850, 2850}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 704: 5548, 770: 5547, 3051, 3052, 3050}, - {1105, 1105, 9: 1105, 57: 1105, 532: 1105}, - {1103, 1103, 9: 1103, 57: 1103, 532: 1103}, + {2650, 2650, 9: 2650}, + {2649, 2649, 9: 2649}, + {564: 5555, 641: 4112, 4111, 805: 5553, 922: 5554, 1118: 5564}, + {2653, 2653, 9: 2653}, + {2656, 2656, 9: 5569, 537: 5550, 908: 5568}, // 2695 - {2852, 2852}, - {2787, 2787}, - {32: 5662, 417: 5661}, - {546: 5653}, - {720: 5646}, + {1114, 1114, 9: 1114, 57: 1114, 537: 1114}, + {1112, 1112, 9: 1112, 57: 1112, 537: 1112}, + {2867, 2867}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 708: 5571, 777: 5570, 3068, 3069, 3067}, + {1113, 1113, 9: 1113, 57: 1113, 537: 1113}, // 2700 - {10: 5639}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 723: 5557, 770: 5556, 3051, 3052, 3050}, - {2402, 2402, 6: 2402, 2402, 18: 2402, 20: 2402, 22: 2402, 2402, 2402, 2402, 2402, 2402, 249: 4682, 710: 2402, 1028: 5637, 1066: 5638}, - {182: 2420, 404: 5562, 445: 5563, 591: 5561, 701: 2420, 1202: 5564, 5559, 1289: 5560, 1416: 5558}, - {2414, 2414, 115: 2414, 5627, 530: 2414, 2414, 2414, 537: 2414, 547: 2414, 549: 2414, 552: 2414, 608: 2414, 695: 2414, 1417: 5626}, + {1111, 1111, 9: 1111, 57: 1111, 537: 1111}, + {2869, 2869}, + {2804, 2804}, + {32: 5685, 420: 5684}, + {551: 5676}, // 2705 - {182: 5614, 701: 5613}, - {2438, 2438, 115: 2438, 2438, 530: 2438, 2438, 2438, 537: 2438, 547: 2438, 549: 2438, 552: 2438, 608: 2438, 695: 2438}, - {131: 3950, 154: 3949, 531: 5577, 930: 5578}, - {131: 3950, 154: 3949, 531: 5570, 930: 5571}, - {2431, 2431, 115: 2431, 2431, 530: 2431, 2431, 2431, 537: 2431, 547: 2431, 549: 2431, 552: 2431, 556: 5566, 608: 2431, 641: 5565, 695: 2431}, + {725: 5669}, + {10: 5662}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 728: 5580, 777: 5579, 3068, 3069, 3067}, + {2416, 2416, 6: 2416, 2416, 18: 2416, 20: 2416, 22: 2416, 2416, 2416, 2416, 2416, 2416, 249: 4705, 715: 2416, 1034: 5660, 1072: 5661}, + {182: 2434, 406: 5585, 449: 5586, 596: 5584, 706: 2434, 1208: 5587, 5582, 1295: 5583, 1423: 5581}, // 2710 - {182: 2419, 701: 2419}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 5568}, - {560: 3037, 799: 3866, 816: 5567}, - {2432, 2432, 115: 2432, 2432, 530: 2432, 2432, 2432, 537: 2432, 547: 2432, 549: 2432, 552: 2432, 608: 2432, 695: 2432}, - {118: 3767, 127: 3775, 133: 3763, 137: 3760, 3762, 3759, 3761, 3765, 3766, 3771, 3770, 3769, 3773, 3774, 3768, 3772, 3764, 566: 3745, 3743, 3744, 3742, 3740, 594: 3757, 3754, 3756, 3755, 3751, 3753, 3752, 3749, 3750, 3748, 3758, 800: 3741, 3739, 886: 3747, 901: 5569}, + {2428, 2428, 115: 2428, 5650, 535: 2428, 2428, 2428, 542: 2428, 552: 2428, 554: 2428, 557: 2428, 613: 2428, 661: 2428, 1424: 5649}, + {182: 5637, 706: 5636}, + {2452, 2452, 115: 2452, 2452, 535: 2452, 2452, 2452, 542: 2452, 552: 2452, 554: 2452, 557: 2452, 613: 2452, 661: 2452}, + {131: 3973, 154: 3972, 536: 5600, 937: 5601}, + {131: 3973, 154: 3972, 536: 5593, 937: 5594}, // 2715 - {2433, 2433, 115: 2433, 2433, 530: 2433, 2433, 2433, 537: 2433, 547: 2433, 549: 2433, 552: 2433, 608: 2433, 695: 2433}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 5575}, - {531: 5572}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4024, 3051, 3052, 3050, 821: 4025, 906: 5573}, - {9: 4027, 57: 5574}, + {2445, 2445, 115: 2445, 2445, 535: 2445, 2445, 2445, 542: 2445, 552: 2445, 554: 2445, 557: 2445, 562: 5589, 613: 2445, 646: 5588, 661: 2445}, + {182: 2433, 706: 2433}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 5591}, + {564: 3054, 805: 3889, 820: 5590}, + {2446, 2446, 115: 2446, 2446, 535: 2446, 2446, 2446, 542: 2446, 552: 2446, 554: 2446, 557: 2446, 613: 2446, 661: 2446}, // 2720 - {2434, 2434, 115: 2434, 2434, 530: 2434, 2434, 2434, 537: 2434, 547: 2434, 549: 2434, 552: 2434, 608: 2434, 695: 2434}, - {57: 5576, 543: 3782, 3783, 3788, 584: 3784, 609: 3785, 3786, 3779, 3789, 3778, 615: 3787, 3780, 618: 3781}, - {2435, 2435, 115: 2435, 2435, 530: 2435, 2435, 2435, 537: 2435, 547: 2435, 549: 2435, 552: 2435, 608: 2435, 695: 2435}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 5610}, - {531: 5579}, + {118: 3790, 127: 3798, 133: 3786, 137: 3783, 3785, 3782, 3784, 3788, 3789, 3794, 3793, 3792, 3796, 3797, 3791, 3795, 3787, 571: 3768, 3766, 3767, 3765, 3763, 599: 3780, 3777, 3779, 3778, 3774, 3776, 3775, 3772, 3773, 3771, 3781, 806: 3764, 3762, 892: 3770, 907: 5592}, + {2447, 2447, 115: 2447, 2447, 535: 2447, 2447, 2447, 542: 2447, 552: 2447, 554: 2447, 557: 2447, 613: 2447, 661: 2447}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 5598}, + {536: 5595}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4047, 3068, 3069, 3067, 828: 4048, 912: 5596}, // 2725 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4024, 3051, 3052, 3050, 821: 4025, 906: 5580}, - {9: 4027, 57: 5581}, - {2430, 2430, 115: 2430, 2430, 530: 2430, 2430, 2430, 537: 2430, 547: 2430, 549: 2430, 552: 2430, 608: 2430, 641: 5583, 695: 2430, 1232: 5582}, - {2436, 2436, 115: 2436, 2436, 530: 2436, 2436, 2436, 537: 2436, 547: 2436, 549: 2436, 552: 2436, 608: 2436, 695: 2436}, - {531: 5584}, + {9: 4050, 57: 5597}, + {2448, 2448, 115: 2448, 2448, 535: 2448, 2448, 2448, 542: 2448, 552: 2448, 554: 2448, 557: 2448, 613: 2448, 661: 2448}, + {57: 5599, 548: 3805, 3806, 3811, 589: 3807, 614: 3808, 3809, 3802, 3812, 3801, 3810, 3803, 3804}, + {2449, 2449, 115: 2449, 2449, 535: 2449, 2449, 2449, 542: 2449, 552: 2449, 554: 2449, 557: 2449, 613: 2449, 661: 2449}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 5633}, // 2730 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 5586, 1379: 5585}, - {57: 5588}, - {57: 2428, 118: 3767, 127: 3775, 133: 3763, 137: 3760, 3762, 3759, 3761, 3765, 3766, 3771, 3770, 3769, 3773, 3774, 3768, 3772, 3764, 543: 3782, 3783, 3788, 584: 3784, 594: 3757, 3754, 3756, 3755, 3751, 3753, 3752, 3749, 3750, 3748, 3758, 609: 3785, 3786, 3779, 3789, 3778, 615: 3787, 3780, 618: 3781, 886: 3747, 901: 5587}, - {57: 2427}, - {2422, 2422, 10: 5590, 115: 2422, 2422, 530: 2422, 2422, 2422, 537: 2422, 547: 2422, 2422, 2422, 552: 2422, 608: 2422, 695: 2422, 720: 2422, 1362: 5589}, + {536: 5602}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4047, 3068, 3069, 3067, 828: 4048, 912: 5603}, + {9: 4050, 57: 5604}, + {2444, 2444, 115: 2444, 2444, 535: 2444, 2444, 2444, 542: 2444, 552: 2444, 554: 2444, 557: 2444, 613: 2444, 646: 5606, 661: 2444, 1238: 5605}, + {2450, 2450, 115: 2450, 2450, 535: 2450, 2450, 2450, 542: 2450, 552: 2450, 554: 2450, 557: 2450, 613: 2450, 661: 2450}, // 2735 - {2426, 2426, 115: 2426, 2426, 530: 2426, 2426, 2426, 537: 2426, 547: 2426, 5605, 2426, 552: 2426, 608: 2426, 695: 2426, 720: 2426, 1396: 5604}, - {546: 5591}, - {192: 5592}, - {199: 5593}, - {531: 5594}, + {536: 5607}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 5609, 1386: 5608}, + {57: 5611}, + {57: 2442, 118: 3790, 127: 3798, 133: 3786, 137: 3783, 3785, 3782, 3784, 3788, 3789, 3794, 3793, 3792, 3796, 3797, 3791, 3795, 3787, 548: 3805, 3806, 3811, 589: 3807, 599: 3780, 3777, 3779, 3778, 3774, 3776, 3775, 3772, 3773, 3771, 3781, 614: 3808, 3809, 3802, 3812, 3801, 3810, 3803, 3804, 892: 3770, 907: 5610}, + {57: 2441}, // 2740 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 5595}, - {57: 5596, 543: 3782, 3783, 3788, 584: 3784, 609: 3785, 3786, 3779, 3789, 3778, 615: 3787, 3780, 618: 3781}, - {234: 5597}, - {546: 5598}, - {192: 5599}, + {2436, 2436, 10: 5613, 115: 2436, 2436, 535: 2436, 2436, 2436, 542: 2436, 552: 2436, 2436, 2436, 557: 2436, 613: 2436, 661: 2436, 725: 2436, 1369: 5612}, + {2440, 2440, 115: 2440, 2440, 535: 2440, 2440, 2440, 542: 2440, 552: 2440, 5628, 2440, 557: 2440, 613: 2440, 661: 2440, 725: 2440, 1403: 5627}, + {551: 5614}, + {192: 5615}, + {201: 5616}, // 2745 - {199: 5600}, - {531: 5601}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 5602}, - {57: 5603, 543: 3782, 3783, 3788, 584: 3784, 609: 3785, 3786, 3779, 3789, 3778, 615: 3787, 3780, 618: 3781}, - {2421, 2421, 115: 2421, 2421, 530: 2421, 2421, 2421, 537: 2421, 547: 2421, 2421, 2421, 552: 2421, 608: 2421, 695: 2421, 720: 2421}, + {536: 5617}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 5618}, + {57: 5619, 548: 3805, 3806, 3811, 589: 3807, 614: 3808, 3809, 3802, 3812, 3801, 3810, 3803, 3804}, + {234: 5620}, + {551: 5621}, // 2750 - {2424, 2424, 115: 2424, 2424, 530: 2424, 2424, 2424, 537: 2424, 547: 2424, 549: 2424, 552: 2424, 608: 2424, 695: 2424, 720: 5608, 1394: 5607}, - {546: 5606}, - {2425, 2425, 115: 2425, 2425, 530: 2425, 2425, 2425, 537: 2425, 547: 2425, 549: 2425, 552: 2425, 608: 2425, 695: 2425, 720: 2425}, - {2429, 2429, 115: 2429, 2429, 530: 2429, 2429, 2429, 537: 2429, 547: 2429, 549: 2429, 552: 2429, 608: 2429, 695: 2429}, - {546: 5609}, + {192: 5622}, + {201: 5623}, + {536: 5624}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 5625}, + {57: 5626, 548: 3805, 3806, 3811, 589: 3807, 614: 3808, 3809, 3802, 3812, 3801, 3810, 3803, 3804}, // 2755 - {2423, 2423, 115: 2423, 2423, 530: 2423, 2423, 2423, 537: 2423, 547: 2423, 549: 2423, 552: 2423, 608: 2423, 695: 2423}, - {57: 5611, 543: 3782, 3783, 3788, 584: 3784, 609: 3785, 3786, 3779, 3789, 3778, 615: 3787, 3780, 618: 3781}, - {2430, 2430, 115: 2430, 2430, 530: 2430, 2430, 2430, 537: 2430, 547: 2430, 549: 2430, 552: 2430, 608: 2430, 641: 5583, 695: 2430, 1232: 5612}, - {2437, 2437, 115: 2437, 2437, 530: 2437, 2437, 2437, 537: 2437, 547: 2437, 549: 2437, 552: 2437, 608: 2437, 695: 2437}, - {102: 5619, 531: 2440, 1415: 5618}, + {2435, 2435, 115: 2435, 2435, 535: 2435, 2435, 2435, 542: 2435, 552: 2435, 2435, 2435, 557: 2435, 613: 2435, 661: 2435, 725: 2435}, + {2438, 2438, 115: 2438, 2438, 535: 2438, 2438, 2438, 542: 2438, 552: 2438, 554: 2438, 557: 2438, 613: 2438, 661: 2438, 725: 5631, 1401: 5630}, + {551: 5629}, + {2439, 2439, 115: 2439, 2439, 535: 2439, 2439, 2439, 542: 2439, 552: 2439, 554: 2439, 557: 2439, 613: 2439, 661: 2439, 725: 2439}, + {2443, 2443, 115: 2443, 2443, 535: 2443, 2443, 2443, 542: 2443, 552: 2443, 554: 2443, 557: 2443, 613: 2443, 661: 2443}, // 2760 - {531: 5615}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 5616}, - {57: 5617, 543: 3782, 3783, 3788, 584: 3784, 609: 3785, 3786, 3779, 3789, 3778, 615: 3787, 3780, 618: 3781}, - {2441, 2441, 115: 2441, 2441, 274: 2441, 530: 2441, 2441, 2441, 537: 2441, 547: 2441, 549: 2441, 552: 2441, 608: 2441, 695: 2441}, - {531: 5622}, + {551: 5632}, + {2437, 2437, 115: 2437, 2437, 535: 2437, 2437, 2437, 542: 2437, 552: 2437, 554: 2437, 557: 2437, 613: 2437, 661: 2437}, + {57: 5634, 548: 3805, 3806, 3811, 589: 3807, 614: 3808, 3809, 3802, 3812, 3801, 3810, 3803, 3804}, + {2444, 2444, 115: 2444, 2444, 535: 2444, 2444, 2444, 542: 2444, 552: 2444, 554: 2444, 557: 2444, 613: 2444, 646: 5606, 661: 2444, 1238: 5635}, + {2451, 2451, 115: 2451, 2451, 535: 2451, 2451, 2451, 542: 2451, 552: 2451, 554: 2451, 557: 2451, 613: 2451, 661: 2451}, // 2765 - {555: 5620}, - {560: 3037, 799: 5621}, - {531: 2439}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 2608, 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4024, 3051, 3052, 3050, 821: 4025, 906: 5623, 1123: 5624}, - {9: 4027, 57: 2607}, + {102: 5642, 536: 2454, 1422: 5641}, + {536: 5638}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 5639}, + {57: 5640, 548: 3805, 3806, 3811, 589: 3807, 614: 3808, 3809, 3802, 3812, 3801, 3810, 3803, 3804}, + {2455, 2455, 115: 2455, 2455, 274: 2455, 535: 2455, 2455, 2455, 542: 2455, 552: 2455, 554: 2455, 557: 2455, 613: 2455, 661: 2455}, // 2770 - {57: 5625}, - {2442, 2442, 115: 2442, 2442, 274: 2442, 530: 2442, 2442, 2442, 537: 2442, 547: 2442, 549: 2442, 552: 2442, 608: 2442, 695: 2442}, - {2418, 2418, 115: 5630, 530: 2418, 2418, 2418, 537: 2418, 547: 2418, 549: 2418, 552: 2418, 608: 2418, 695: 2418, 1477: 5629}, - {560: 3037, 799: 3866, 816: 5628}, - {2413, 2413, 115: 2413, 530: 2413, 2413, 2413, 537: 2413, 547: 2413, 549: 2413, 552: 2413, 608: 2413, 695: 2413}, + {536: 5645}, + {561: 5643}, + {564: 3054, 805: 5644}, + {536: 2453}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 2622, 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4047, 3068, 3069, 3067, 828: 4048, 912: 5646, 1129: 5647}, // 2775 - {2412, 2412, 530: 2412, 5418, 2412, 537: 2412, 547: 2412, 549: 2412, 552: 2412, 608: 2412, 695: 2412, 1231: 5636}, - {723: 5631}, - {182: 2420, 701: 2420, 1202: 5564, 5559, 1289: 5632}, - {2416, 2416, 274: 5634, 530: 2416, 2416, 2416, 537: 2416, 547: 2416, 549: 2416, 552: 2416, 608: 2416, 695: 2416, 1476: 5633}, - {2417, 2417, 530: 2417, 2417, 2417, 537: 2417, 547: 2417, 549: 2417, 552: 2417, 608: 2417, 695: 2417}, + {9: 4050, 57: 2621}, + {57: 5648}, + {2456, 2456, 115: 2456, 2456, 274: 2456, 535: 2456, 2456, 2456, 542: 2456, 552: 2456, 554: 2456, 557: 2456, 613: 2456, 661: 2456}, + {2432, 2432, 115: 5653, 535: 2432, 2432, 2432, 542: 2432, 552: 2432, 554: 2432, 557: 2432, 613: 2432, 661: 2432, 1484: 5652}, + {564: 3054, 805: 3889, 820: 5651}, // 2780 - {560: 3037, 799: 3866, 816: 5635}, - {2415, 2415, 530: 2415, 2415, 2415, 537: 2415, 547: 2415, 549: 2415, 552: 2415, 608: 2415, 695: 2415}, - {2443, 2443, 530: 2443, 2443, 2443, 537: 2443, 547: 2443, 549: 2443, 552: 2443, 608: 2443, 695: 2443}, - {2782, 2782}, - {2781, 2781, 6: 4725, 5452, 18: 4681, 20: 4733, 22: 4729, 4726, 4728, 4731, 4732, 4734, 710: 4730, 865: 4735, 910: 5451}, + {2427, 2427, 115: 2427, 535: 2427, 2427, 2427, 542: 2427, 552: 2427, 554: 2427, 557: 2427, 613: 2427, 661: 2427}, + {2426, 2426, 535: 2426, 5441, 2426, 542: 2426, 552: 2426, 554: 2426, 557: 2426, 613: 2426, 661: 2426, 1237: 5659}, + {728: 5654}, + {182: 2434, 706: 2434, 1208: 5587, 5582, 1295: 5655}, + {2430, 2430, 274: 5657, 535: 2430, 2430, 2430, 542: 2430, 552: 2430, 554: 2430, 557: 2430, 613: 2430, 661: 2430, 1483: 5656}, // 2785 - {546: 5640}, - {192: 5641}, - {199: 5642}, - {531: 5643}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 5644}, + {2431, 2431, 535: 2431, 2431, 2431, 542: 2431, 552: 2431, 554: 2431, 557: 2431, 613: 2431, 661: 2431}, + {564: 3054, 805: 3889, 820: 5658}, + {2429, 2429, 535: 2429, 2429, 2429, 542: 2429, 552: 2429, 554: 2429, 557: 2429, 613: 2429, 661: 2429}, + {2457, 2457, 535: 2457, 2457, 2457, 542: 2457, 552: 2457, 554: 2457, 557: 2457, 613: 2457, 661: 2457}, + {2799, 2799}, // 2790 - {57: 5645, 543: 3782, 3783, 3788, 584: 3784, 609: 3785, 3786, 3779, 3789, 3778, 615: 3787, 3780, 618: 3781}, - {2783, 2783}, - {546: 5647}, - {192: 5648}, - {199: 5649}, + {2798, 2798, 6: 4748, 5475, 18: 4704, 20: 4756, 22: 4752, 4749, 4751, 4754, 4755, 4757, 715: 4753, 871: 4758, 916: 5474}, + {551: 5663}, + {192: 5664}, + {201: 5665}, + {536: 5666}, // 2795 - {531: 5650}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 5651}, - {57: 5652, 543: 3782, 3783, 3788, 584: 3784, 609: 3785, 3786, 3779, 3789, 3778, 615: 3787, 3780, 618: 3781}, - {2784, 2784}, - {762, 762, 762, 762, 762, 762, 762, 762, 762, 10: 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 58: 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 5251, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 908: 5250, 924: 5654}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 5667}, + {57: 5668, 548: 3805, 3806, 3811, 589: 3807, 614: 3808, 3809, 3802, 3812, 3801, 3810, 3803, 3804}, + {2800, 2800}, + {551: 5670}, + {192: 5671}, // 2800 - {2719, 2719, 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 5255, 3051, 3052, 3050, 859: 5656, 1438: 5655}, - {2785, 2785}, - {9: 5256, 559: 5657}, - {531: 5658}, - {546: 5421, 1067: 5420, 1230: 5659}, + {201: 5672}, + {536: 5673}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 5674}, + {57: 5675, 548: 3805, 3806, 3811, 589: 3807, 614: 3808, 3809, 3802, 3812, 3801, 3810, 3803, 3804}, + {2801, 2801}, // 2805 - {9: 5462, 57: 5660}, - {2718, 2718}, - {2786, 2786}, - {2780, 2780}, - {173: 5664, 984: 264, 1209: 5665}, + {763, 763, 763, 763, 763, 763, 763, 763, 763, 10: 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 58: 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 5274, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 914: 5273, 930: 5677}, + {2736, 2736, 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 5278, 3068, 3069, 3067, 865: 5679, 1445: 5678}, + {2802, 2802}, + {9: 5279, 565: 5680}, + {536: 5681}, // 2810 - {984: 263}, - {984: 5666}, - {533: 5667}, - {156, 156, 235: 156, 406: 5669, 722: 156, 1393: 5668}, - {154, 154, 235: 5672, 722: 154, 1392: 5671}, + {551: 5444, 1073: 5443, 1236: 5682}, + {9: 5485, 57: 5683}, + {2735, 2735}, + {2803, 2803}, + {2797, 2797}, // 2815 - {560: 3037, 799: 5670}, - {155, 155, 235: 155, 722: 155}, - {247, 247, 722: 3978, 1056: 5679}, - {152, 152, 239: 152, 418: 5674, 722: 152, 1419: 5673}, - {150, 150, 239: 5677, 722: 150, 1418: 5676}, + {173: 5687, 990: 264, 1215: 5688}, + {990: 263}, + {990: 5689}, + {538: 5690}, + {156, 156, 235: 156, 410: 5692, 727: 156, 1400: 5691}, // 2820 - {560: 3037, 799: 5675}, - {151, 151, 239: 151, 722: 151}, - {153, 153, 722: 153}, - {560: 3037, 799: 5678}, - {149, 149, 722: 149}, + {154, 154, 235: 5695, 727: 154, 1399: 5694}, + {564: 3054, 805: 5693}, + {155, 155, 235: 155, 727: 155}, + {247, 247, 727: 4001, 1062: 5702}, + {152, 152, 239: 152, 421: 5697, 727: 152, 1426: 5696}, // 2825 + {150, 150, 239: 5700, 727: 150, 1425: 5699}, + {564: 3054, 805: 5698}, + {151, 151, 239: 151, 727: 151}, + {153, 153, 727: 153}, + {564: 3054, 805: 5701}, + // 2830 + {149, 149, 727: 149}, {157, 157}, - {28: 203, 56: 203, 159: 203, 531: 203, 560: 203}, - {56: 5210, 531: 5681, 999: 5218}, + {28: 203, 56: 203, 159: 203, 536: 203, 564: 203}, + {56: 5233, 536: 5704, 1005: 5241}, {208, 208}, - {560: 3037, 799: 5687}, - // 2830 - {560: 3037, 799: 5686}, + // 2835 + {564: 3054, 805: 5710}, + {564: 3054, 805: 5709}, {205, 205}, {206, 206}, {207, 207}, - {556: 5691}, - // 2835 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4024, 3051, 3052, 3050, 821: 5690}, - {556: 209}, - {560: 3037, 799: 5692}, - {303: 5694, 532: 213, 552: 213, 587: 213, 714: 213, 803: 213, 1350: 5693}, - {532: 2906, 552: 2891, 587: 2890, 714: 3019, 803: 2870, 815: 5697, 822: 3018, 2871, 5701, 826: 5702, 5700, 833: 2872, 839: 5699, 1452: 5698}, // 2840 - {433: 5695}, - {159: 5696, 532: 212, 552: 212, 587: 212, 714: 212, 803: 212}, - {532: 211, 552: 211, 587: 211, 714: 211, 803: 211}, - {714: 3019, 803: 2870, 822: 5705, 5703, 833: 5704}, - {218, 218}, + {562: 5714}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4047, 3068, 3069, 3067, 828: 5713}, + {562: 209}, + {564: 3054, 805: 5715}, + {303: 5717, 537: 213, 557: 213, 592: 213, 719: 213, 809: 213, 1357: 5716}, // 2845 + {537: 2923, 557: 2908, 592: 2907, 719: 3036, 809: 2887, 822: 5720, 827: 3035, 829: 2888, 5724, 5725, 5723, 839: 2889, 845: 5722, 1459: 5721}, + {436: 5718}, + {159: 5719, 537: 212, 557: 212, 592: 212, 719: 212, 809: 212}, + {537: 211, 557: 211, 592: 211, 719: 211, 809: 211}, + {719: 3036, 809: 2887, 827: 5728, 829: 5726, 839: 5727}, + // 2850 + {218, 218}, {217, 217}, {216, 216}, {215, 215}, {214, 214}, - {2340, 2340}, - // 2850 - {2339, 2339}, - {429, 429, 542: 429}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 5718, 1292: 5719, 1479: 5717}, - {227, 227, 227, 227, 227, 227, 227, 227, 227, 10: 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 58: 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227}, - {226, 226, 226, 226, 226, 226, 226, 226, 226, 10: 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 58: 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226}, // 2855 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 5710, 884: 5711}, - {1252, 1252, 9: 1252, 546: 5712}, - {201, 201, 9: 3930}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 531: 5714, 770: 5255, 3051, 3052, 3050, 859: 5713}, - {200, 200, 9: 5256}, + {2354, 2354}, + {2353, 2353}, + {430, 430, 547: 430}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 5741, 1298: 5742, 1486: 5740}, + {227, 227, 227, 227, 227, 227, 227, 227, 227, 10: 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 58: 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227}, // 2860 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 5255, 3051, 3052, 3050, 859: 5715}, - {9: 5256, 57: 5716}, - {199, 199}, - {228, 228, 9: 5725}, - {729: 5721, 768: 5722, 1388: 5720}, + {226, 226, 226, 226, 226, 226, 226, 226, 226, 10: 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 58: 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 5733, 890: 5734}, + {1260, 1260, 9: 1260, 551: 5735}, + {201, 201, 9: 3953}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 536: 5737, 777: 5278, 3068, 3069, 3067, 865: 5736}, // 2865 + {200, 200, 9: 5279}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 5278, 3068, 3069, 3067, 865: 5738}, + {9: 5279, 57: 5739}, + {199, 199}, + {228, 228, 9: 5748}, + // 2870 + {734: 5744, 774: 5745, 1395: 5743}, {220, 220, 9: 220}, {225, 225, 9: 225}, - {224, 224, 9: 224, 173: 5724}, - {222, 222, 9: 222, 173: 5723}, + {224, 224, 9: 224, 173: 5747}, + {222, 222, 9: 222, 173: 5746}, + // 2875 {221, 221, 9: 221}, - // 2870 {223, 223, 9: 223}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 5718, 1292: 5726}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 5741, 1298: 5749}, {219, 219, 9: 219}, {229, 229}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 5729, 884: 5730}, - // 2875 - {1252, 1252, 9: 1252, 546: 5731}, - {198, 198, 9: 3930}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 531: 5733, 770: 5255, 3051, 3052, 3050, 859: 5732}, - {197, 197, 9: 5256}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 5255, 3051, 3052, 3050, 859: 5734}, // 2880 - {9: 5256, 57: 5735}, - {196, 196}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 5737}, - {531: 5738, 557: 2596, 561: 2596, 1125: 5739}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 2602, 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 628: 3682, 770: 4024, 3051, 3052, 3050, 776: 5766, 821: 5765, 1124: 5764, 1335: 5763, 5767}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 5752, 890: 5753}, + {1260, 1260, 9: 1260, 551: 5754}, + {198, 198, 9: 3953}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 536: 5756, 777: 5278, 3068, 3069, 3067, 865: 5755}, + {197, 197, 9: 5279}, // 2885 - {557: 5740, 561: 241, 1207: 5741}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3901, 3051, 3052, 3050, 778: 5758, 1206: 5757, 1387: 5756}, - {561: 5742}, - {533: 5743}, - {270, 270, 232: 5744, 532: 270, 1179: 5745}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 5278, 3068, 3069, 3067, 865: 5757}, + {9: 5279, 57: 5758}, + {196, 196}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 5760}, + {536: 5761, 560: 2610, 566: 2610, 1131: 5762}, // 2890 - {533: 5755}, - {236, 236, 532: 5746, 1205: 5747}, - {56: 5750, 1204: 5749, 1386: 5748}, - {230, 230}, - {235, 235, 9: 5753}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 2616, 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 633: 3704, 777: 4047, 3068, 3069, 3067, 782: 5789, 828: 5788, 1130: 5787, 1342: 5786, 5790}, + {560: 5763, 566: 241, 1213: 5764}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3924, 3068, 3069, 3067, 784: 5781, 1212: 5780, 1394: 5779}, + {566: 5765}, + {538: 5766}, // 2895 + {270, 270, 232: 5767, 537: 270, 1185: 5768}, + {538: 5778}, + {236, 236, 537: 5769, 1211: 5770}, + {56: 5773, 1210: 5772, 1393: 5771}, + {230, 230}, + // 2900 + {235, 235, 9: 5776}, {234, 234, 9: 234}, - {232, 232, 9: 232, 555: 5751}, - {533: 3586, 543: 4940, 4941, 548: 3577, 560: 3581, 629: 3576, 3578, 636: 3580, 3579, 3584, 640: 3585, 647: 3583, 777: 4939, 779: 3582, 1082: 5752}, + {232, 232, 9: 232, 561: 5774}, + {538: 3608, 548: 4963, 4964, 553: 3599, 564: 3603, 634: 3598, 3600, 641: 3602, 3601, 3606, 645: 3607, 652: 3605, 783: 4962, 785: 3604, 1088: 5775}, {231, 231, 9: 231}, - {56: 5750, 1204: 5754}, - // 2900 - {233, 233, 9: 233}, - {269, 269, 532: 269, 549: 269, 552: 269, 559: 269}, - {240, 240, 9: 5761, 532: 240, 561: 240}, - {238, 238, 9: 238, 532: 238, 561: 238}, - {555: 5759}, // 2905 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3899, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3895, 893: 5760}, - {237, 237, 9: 237, 532: 237, 561: 237}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3901, 3051, 3052, 3050, 778: 5758, 1206: 5762}, - {239, 239, 9: 239, 532: 239, 561: 239}, - {9: 5769, 57: 2601}, + {56: 5773, 1210: 5777}, + {233, 233, 9: 233}, + {269, 269, 537: 269, 554: 269, 557: 269, 565: 269}, + {240, 240, 9: 5784, 537: 240, 566: 240}, + {238, 238, 9: 238, 537: 238, 566: 238}, // 2910 - {9: 2600, 57: 2600}, - {9: 2598, 57: 2598}, - {9: 2597, 57: 2597}, - {57: 5768}, - {2595, 2595, 532: 2595, 557: 2595, 561: 2595}, + {561: 5782}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3922, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3918, 899: 5783}, + {237, 237, 9: 237, 537: 237, 566: 237}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3924, 3068, 3069, 3067, 784: 5781, 1212: 5785}, + {239, 239, 9: 239, 537: 239, 566: 239}, // 2915 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 628: 3682, 770: 4024, 3051, 3052, 3050, 776: 5766, 821: 5765, 1124: 5770}, - {9: 2599, 57: 2599}, - {173: 5664, 984: 264, 1209: 5774}, - {533: 5773}, - {202, 202}, + {9: 5792, 57: 2615}, + {9: 2614, 57: 2614}, + {9: 2612, 57: 2612}, + {9: 2611, 57: 2611}, + {57: 5791}, // 2920 - {984: 5775}, - {533: 5776}, - {232: 5744, 549: 270, 552: 270, 559: 270, 1179: 5777}, - {549: 5778, 552: 5779, 559: 2382, 1164: 5780}, - {2381, 2381, 530: 2381, 2381, 2381, 537: 2381, 547: 2381, 559: 2381, 608: 2381, 695: 2381}, + {2609, 2609, 537: 2609, 560: 2609, 566: 2609}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 633: 3704, 777: 4047, 3068, 3069, 3067, 782: 5789, 828: 5788, 1130: 5793}, + {9: 2613, 57: 2613}, + {173: 5687, 990: 264, 1215: 5797}, + {538: 5796}, // 2925 - {2380, 2380, 530: 2380, 2380, 2380, 537: 2380, 547: 2380, 559: 2380, 608: 2380, 695: 2380}, - {559: 5781}, - {608: 5782}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 5783}, - {266, 266, 131: 266, 154: 266, 531: 266, 266, 549: 266, 557: 266, 709: 5785, 722: 266, 1332: 5784}, + {202, 202}, + {990: 5798}, + {538: 5799}, + {232: 5767, 554: 270, 557: 270, 565: 270, 1185: 5800}, + {554: 5801, 557: 5802, 565: 2396, 1170: 5803}, // 2930 - {262, 262, 131: 3950, 154: 3949, 531: 262, 262, 549: 262, 557: 262, 722: 262, 930: 3948, 1173: 5788}, - {557: 5786}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 586: 4354, 770: 3737, 3051, 3052, 3050, 805: 4353, 905: 5787}, - {265, 265, 131: 265, 154: 265, 531: 265, 265, 549: 265, 557: 265, 722: 265}, - {247, 247, 531: 247, 247, 549: 247, 557: 247, 722: 3978, 1056: 5789}, + {2395, 2395, 535: 2395, 2395, 2395, 542: 2395, 552: 2395, 565: 2395, 613: 2395, 661: 2395}, + {2394, 2394, 535: 2394, 2394, 2394, 542: 2394, 552: 2394, 565: 2394, 613: 2394, 661: 2394}, + {565: 5804}, + {613: 5805}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 5806}, // 2935 - {268, 268, 531: 268, 268, 549: 5791, 557: 268, 1371: 5790}, - {2596, 2596, 531: 5738, 2596, 557: 2596, 1125: 5794}, - {560: 3037, 799: 5792}, - {722: 5793}, - {267, 267, 531: 267, 267, 557: 267}, + {266, 266, 131: 266, 154: 266, 536: 266, 266, 554: 266, 560: 266, 714: 5808, 727: 266, 1339: 5807}, + {262, 262, 131: 3973, 154: 3972, 536: 262, 262, 554: 262, 560: 262, 727: 262, 937: 3971, 1179: 5811}, + {560: 5809}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 591: 4377, 777: 3760, 3068, 3069, 3067, 811: 4376, 911: 5810}, + {265, 265, 131: 265, 154: 265, 536: 265, 265, 554: 265, 560: 265, 727: 265}, // 2940 - {241, 241, 532: 241, 557: 5740, 1207: 5795}, - {236, 236, 532: 5746, 1205: 5796}, - {271, 271}, - {9: 328, 56: 328, 530: 328, 561: 328, 628: 2090, 712: 328, 726: 2090}, - {9: 293, 530: 293, 293, 561: 293, 628: 2058, 712: 293, 726: 2058}, + {247, 247, 536: 247, 247, 554: 247, 560: 247, 727: 4001, 1062: 5812}, + {268, 268, 536: 268, 268, 554: 5814, 560: 268, 1378: 5813}, + {2610, 2610, 536: 5761, 2610, 560: 2610, 1131: 5817}, + {564: 3054, 805: 5815}, + {727: 5816}, // 2945 - {9: 307, 530: 307, 307, 561: 307, 628: 2032, 712: 307, 726: 2032}, - {9: 294, 530: 294, 294, 561: 294, 628: 2029, 712: 294, 726: 2029}, - {9: 283, 530: 283, 283, 561: 283, 628: 1992, 712: 283, 726: 1992}, - {9: 303, 530: 303, 303, 561: 303, 628: 1914, 712: 303, 726: 1914}, - {9: 308, 530: 308, 308, 561: 308, 628: 1907, 712: 308, 726: 1907}, + {267, 267, 536: 267, 267, 560: 267}, + {241, 241, 537: 241, 560: 5763, 1213: 5818}, + {236, 236, 537: 5769, 1211: 5819}, + {271, 271}, + {9: 328, 56: 328, 535: 328, 566: 328, 633: 2104, 717: 328, 731: 2104}, // 2950 - {374: 5906, 438: 5905, 628: 1888, 726: 1888}, - {9: 295, 530: 295, 295, 561: 295, 628: 1885, 712: 295, 726: 1885}, - {9: 284, 530: 284, 284, 561: 284, 628: 1882, 712: 284, 726: 1882}, - {628: 5903, 726: 5902}, - {9: 932, 530: 932, 561: 932, 628: 435, 712: 932, 726: 435}, + {9: 293, 535: 293, 293, 566: 293, 633: 2071, 717: 293, 731: 2071}, + {9: 307, 535: 307, 307, 566: 307, 633: 2045, 717: 307, 731: 2045}, + {9: 294, 535: 294, 294, 566: 294, 633: 2042, 717: 294, 731: 2042}, + {9: 283, 535: 283, 283, 566: 283, 633: 2004, 717: 283, 731: 2004}, + {9: 303, 535: 303, 303, 566: 303, 633: 1925, 717: 303, 731: 1925}, // 2955 - {9: 931, 530: 931, 561: 931, 712: 931}, - {9: 324, 56: 5901, 530: 324, 561: 324, 712: 324}, - {9: 326, 530: 326, 561: 326, 712: 326}, - {9: 325, 530: 325, 561: 325, 712: 325}, - {561: 5899}, + {9: 308, 535: 308, 308, 566: 308, 633: 1918, 717: 308, 731: 1918}, + {376: 5929, 442: 5928, 633: 1899, 731: 1899}, + {9: 295, 535: 295, 295, 566: 295, 633: 1896, 717: 295, 731: 1896}, + {9: 284, 535: 284, 284, 566: 284, 633: 1893, 717: 284, 731: 1893}, + {633: 5926, 731: 5925}, // 2960 - {9: 304, 530: 304, 304, 559: 5897, 561: 304, 712: 304}, - {9: 321, 530: 321, 561: 321, 712: 321}, - {9: 5849, 530: 5850, 561: 5851}, - {9: 319, 530: 319, 5846, 561: 319, 712: 319}, - {9: 317, 240: 5845, 530: 317, 317, 561: 317, 712: 317}, + {9: 940, 535: 940, 566: 940, 633: 436, 717: 940, 731: 436}, + {9: 939, 535: 939, 566: 939, 717: 939}, + {9: 324, 56: 5924, 535: 324, 566: 324, 717: 324}, + {9: 326, 535: 326, 566: 326, 717: 326}, + {9: 325, 535: 325, 566: 325, 717: 325}, // 2965 - {9: 315, 335: 5844, 530: 315, 315, 561: 315, 712: 315}, - {9: 314, 20: 5838, 132: 5840, 216: 5839, 5837, 224: 5841, 335: 5842, 530: 314, 314, 561: 314, 712: 314}, - {9: 311, 530: 311, 311, 561: 311, 712: 311}, - {9: 310, 530: 310, 310, 561: 310, 712: 310}, - {9: 309, 224: 5836, 530: 309, 309, 561: 309, 712: 309}, + {566: 5922}, + {9: 304, 535: 304, 304, 565: 5920, 304, 717: 304}, + {9: 321, 535: 321, 566: 321, 717: 321}, + {9: 5872, 535: 5873, 566: 5874}, + {9: 319, 535: 319, 5869, 566: 319, 717: 319}, // 2970 - {9: 306, 530: 306, 306, 561: 306, 712: 306}, - {9: 305, 530: 305, 305, 561: 305, 712: 305}, - {132: 5835, 1144: 5834}, - {9: 301, 530: 301, 301, 561: 301, 712: 301}, - {1006: 5833}, + {9: 317, 240: 5868, 535: 317, 317, 566: 317, 717: 317}, + {9: 315, 336: 5867, 535: 315, 315, 566: 315, 717: 315}, + {9: 314, 20: 5861, 132: 5863, 196: 5864, 217: 5862, 5860, 336: 5865, 535: 314, 314, 566: 314, 717: 314}, + {9: 311, 535: 311, 311, 566: 311, 717: 311}, + {9: 310, 535: 310, 310, 566: 310, 717: 310}, // 2975 - {9: 299, 530: 299, 299, 561: 299, 712: 299}, - {9: 296, 530: 296, 296, 561: 296, 712: 296}, - {157: 5832}, - {9: 291, 530: 291, 291, 561: 291, 712: 291}, - {9: 300, 530: 300, 300, 561: 300, 712: 300}, + {9: 309, 196: 5859, 535: 309, 309, 566: 309, 717: 309}, + {9: 306, 535: 306, 306, 566: 306, 717: 306}, + {9: 305, 535: 305, 305, 566: 305, 717: 305}, + {132: 5858, 1150: 5857}, + {9: 301, 535: 301, 301, 566: 301, 717: 301}, // 2980 - {9: 302, 530: 302, 302, 561: 302, 712: 302}, - {9: 289, 530: 289, 289, 561: 289, 712: 289}, - {9: 287, 530: 287, 287, 561: 287, 712: 287}, - {9: 313, 530: 313, 313, 561: 313, 712: 313}, - {9: 312, 530: 312, 312, 561: 312, 712: 312}, + {1012: 5856}, + {9: 299, 535: 299, 299, 566: 299, 717: 299}, + {9: 296, 535: 296, 296, 566: 296, 717: 296}, + {157: 5855}, + {9: 291, 535: 291, 291, 566: 291, 717: 291}, // 2985 - {157: 5843}, - {9: 290, 530: 290, 290, 561: 290, 712: 290}, - {9: 288, 530: 288, 288, 561: 288, 712: 288}, - {9: 286, 530: 286, 286, 561: 286, 712: 286}, - {9: 292, 530: 292, 292, 561: 292, 712: 292}, + {9: 300, 535: 300, 300, 566: 300, 717: 300}, + {9: 302, 535: 302, 302, 566: 302, 717: 302}, + {9: 289, 535: 289, 289, 566: 289, 717: 289}, + {9: 287, 535: 287, 287, 566: 287, 717: 287}, + {9: 313, 535: 313, 313, 566: 313, 717: 313}, // 2990 - {9: 285, 530: 285, 285, 561: 285, 712: 285}, - {9: 316, 530: 316, 316, 561: 316, 712: 316}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4024, 3051, 3052, 3050, 821: 4025, 906: 5847}, - {9: 4027, 57: 5848}, - {9: 318, 530: 318, 561: 318, 712: 318}, + {9: 312, 535: 312, 312, 566: 312, 717: 312}, + {157: 5866}, + {9: 290, 535: 290, 290, 566: 290, 717: 290}, + {9: 288, 535: 288, 288, 566: 288, 717: 288}, + {9: 286, 535: 286, 286, 566: 286, 717: 286}, // 2995 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 5797, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 5799, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 5805, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 5801, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 5798, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 5806, 3226, 3477, 5800, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 5803, 3134, 3135, 3379, 5804, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 5802, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 5808, 562: 5831, 587: 5825, 695: 5814, 707: 5829, 710: 5824, 714: 5827, 5818, 724: 5819, 727: 5823, 743: 5820, 770: 3737, 3051, 3052, 3050, 803: 5822, 805: 5807, 894: 5813, 898: 5809, 957: 5828, 968: 5826, 1045: 5810, 1071: 5811, 5817, 1078: 5812, 5896, 1088: 5821, 1092: 5830}, - {2: 282, 282, 282, 282, 282, 282, 282, 10: 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 58: 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 5863, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 584: 282, 608: 5862, 964: 5864, 1215: 5865}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 631: 5853, 770: 3737, 3051, 3052, 3050, 805: 5852, 855: 5854, 970: 5855}, - {945, 945, 6: 945, 9: 945, 15: 945, 51: 945, 945, 945, 945, 945, 132: 945, 183: 945, 532: 945, 542: 945, 555: 945, 628: 5860, 696: 945, 712: 945, 717: 945, 725: 945, 5859}, - {1405, 1405, 6: 1405, 9: 1405, 15: 1405, 51: 1405, 1405, 1405, 1405, 1405, 132: 1405, 183: 1405, 531: 4363, 1405, 542: 1405, 555: 1405, 696: 1405, 712: 1405, 717: 1405, 725: 1405, 1224: 5858}, + {9: 292, 535: 292, 292, 566: 292, 717: 292}, + {9: 285, 535: 285, 285, 566: 285, 717: 285}, + {9: 316, 535: 316, 316, 566: 316, 717: 316}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4047, 3068, 3069, 3067, 828: 4048, 912: 5870}, + {9: 4050, 57: 5871}, // 3000 - {941, 941, 9: 941, 532: 941}, - {272, 272, 9: 5856}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 631: 5853, 770: 3737, 3051, 3052, 3050, 805: 5852, 855: 5857}, - {940, 940, 9: 940, 532: 940}, - {942, 942, 6: 942, 9: 942, 15: 942, 51: 942, 942, 942, 942, 942, 132: 942, 183: 942, 532: 942, 542: 942, 555: 942, 696: 942, 712: 942, 717: 942, 725: 942}, + {9: 318, 535: 318, 566: 318, 717: 318}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 5820, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 5822, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 5828, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 5824, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 5821, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 5829, 3246, 3498, 5823, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 5826, 3153, 3154, 3400, 5827, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 5825, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 5831, 567: 5854, 592: 5848, 661: 5837, 712: 5852, 715: 5847, 719: 5850, 721: 5841, 729: 5842, 732: 5846, 748: 5843, 777: 3760, 3068, 3069, 3067, 809: 5845, 811: 5830, 900: 5836, 904: 5832, 963: 5851, 974: 5849, 1051: 5833, 1077: 5834, 5840, 1084: 5835, 5919, 1094: 5844, 1098: 5853}, + {2: 282, 282, 282, 282, 282, 282, 282, 10: 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 58: 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 5886, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 589: 282, 613: 5885, 970: 5887, 1221: 5888}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 636: 5876, 777: 3760, 3068, 3069, 3067, 811: 5875, 861: 5877, 976: 5878}, + {953, 953, 6: 953, 9: 953, 15: 953, 51: 953, 953, 953, 953, 953, 132: 953, 183: 953, 537: 953, 547: 953, 561: 953, 633: 5883, 662: 953, 717: 953, 722: 953, 730: 953, 5882}, // 3005 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 770: 3737, 3051, 3052, 3050, 805: 5861}, - {943, 943, 6: 943, 9: 943, 15: 943, 51: 943, 943, 943, 943, 943, 132: 943, 183: 943, 532: 943, 542: 943, 555: 943, 696: 943, 712: 943, 717: 943, 725: 943}, - {944, 944, 6: 944, 9: 944, 15: 944, 51: 944, 944, 944, 944, 944, 132: 944, 183: 944, 532: 944, 542: 944, 555: 944, 696: 944, 712: 944, 717: 944, 725: 944}, - {2: 281, 281, 281, 281, 281, 281, 281, 10: 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 58: 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 584: 281}, - {2: 280, 280, 280, 280, 280, 280, 280, 10: 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 58: 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 584: 280}, + {1413, 1413, 6: 1413, 9: 1413, 15: 1413, 51: 1413, 1413, 1413, 1413, 1413, 132: 1413, 183: 1413, 536: 4386, 1413, 547: 1413, 561: 1413, 662: 1413, 717: 1413, 722: 1413, 730: 1413, 1230: 5881}, + {949, 949, 9: 949, 537: 949}, + {272, 272, 9: 5879}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 636: 5876, 777: 3760, 3068, 3069, 3067, 811: 5875, 861: 5880}, + {948, 948, 9: 948, 537: 948}, // 3010 - {2: 279, 279, 279, 279, 279, 279, 279, 10: 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 58: 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 584: 279}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 584: 5866, 770: 5867, 3051, 3052, 3050, 1241: 5868}, - {561: 278, 712: 278, 716: 5894}, - {561: 274, 712: 274, 716: 5891}, - {561: 5869}, + {950, 950, 6: 950, 9: 950, 15: 950, 51: 950, 950, 950, 950, 950, 132: 950, 183: 950, 537: 950, 547: 950, 561: 950, 662: 950, 717: 950, 722: 950, 730: 950}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 777: 3760, 3068, 3069, 3067, 811: 5884}, + {951, 951, 6: 951, 9: 951, 15: 951, 51: 951, 951, 951, 951, 951, 132: 951, 183: 951, 537: 951, 547: 951, 561: 951, 662: 951, 717: 951, 722: 951, 730: 951}, + {952, 952, 6: 952, 9: 952, 15: 952, 51: 952, 952, 952, 952, 952, 132: 952, 183: 952, 537: 952, 547: 952, 561: 952, 662: 952, 717: 952, 722: 952, 730: 952}, + {2: 281, 281, 281, 281, 281, 281, 281, 10: 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 58: 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 589: 281}, // 3015 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 631: 5853, 770: 3737, 3051, 3052, 3050, 805: 5852, 855: 5870, 994: 5871, 1024: 5872}, - {365, 365, 6: 365, 9: 365, 15: 365, 51: 365, 365, 365, 365, 365, 183: 5876, 532: 365, 725: 365, 1323: 5875}, - {411, 411, 6: 411, 9: 411, 15: 411, 51: 411, 411, 411, 411, 411, 532: 411, 725: 411}, - {273, 273, 9: 5873}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 631: 5853, 770: 3737, 3051, 3052, 3050, 805: 5852, 855: 5870, 994: 5874}, + {2: 280, 280, 280, 280, 280, 280, 280, 10: 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 58: 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 589: 280}, + {2: 279, 279, 279, 279, 279, 279, 279, 10: 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 58: 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 589: 279}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 589: 5889, 777: 5890, 3068, 3069, 3067, 1247: 5891}, + {566: 278, 717: 278, 720: 5917}, + {566: 274, 717: 274, 720: 5914}, // 3020 - {410, 410, 6: 410, 9: 410, 15: 410, 51: 410, 410, 410, 410, 410, 532: 410, 725: 410}, - {412, 412, 6: 412, 9: 412, 15: 412, 51: 412, 412, 412, 412, 412, 532: 412, 725: 412}, - {532: 5878, 723: 5877}, - {15: 5889, 533: 5886, 997: 5888}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 770: 3737, 3051, 3052, 3050, 805: 5880, 1324: 5879}, + {566: 5892}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 636: 5876, 777: 3760, 3068, 3069, 3067, 811: 5875, 861: 5893, 1000: 5894, 1030: 5895}, + {366, 366, 6: 366, 9: 366, 15: 366, 51: 366, 366, 366, 366, 366, 183: 5899, 537: 366, 730: 366, 1329: 5898}, + {412, 412, 6: 412, 9: 412, 15: 412, 51: 412, 412, 412, 412, 412, 537: 412, 730: 412}, + {273, 273, 9: 5896}, // 3025 - {363, 363, 6: 363, 9: 363, 15: 363, 51: 363, 363, 363, 363, 363, 532: 363, 537: 5882, 723: 5881, 725: 363}, - {359, 359, 6: 359, 9: 359, 15: 359, 51: 359, 359, 359, 359, 359, 532: 359, 537: 359, 723: 359, 725: 359}, - {533: 5886, 997: 5887}, - {533: 5884, 638: 5885, 1186: 5883}, - {361, 361, 6: 361, 9: 361, 15: 361, 51: 361, 361, 361, 361, 361, 532: 361, 725: 361}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 636: 5876, 777: 3760, 3068, 3069, 3067, 811: 5875, 861: 5893, 1000: 5897}, + {411, 411, 6: 411, 9: 411, 15: 411, 51: 411, 411, 411, 411, 411, 537: 411, 730: 411}, + {413, 413, 6: 413, 9: 413, 15: 413, 51: 413, 413, 413, 413, 413, 537: 413, 730: 413}, + {537: 5901, 728: 5900}, + {15: 5912, 538: 5909, 1003: 5911}, // 3030 - {358, 358, 6: 358, 9: 358, 15: 358, 51: 358, 358, 358, 358, 358, 532: 358, 725: 358}, - {357, 357, 6: 357, 9: 357, 15: 357, 51: 357, 357, 357, 357, 357, 532: 357, 725: 357}, - {937, 937, 6: 937, 9: 937, 15: 937, 51: 937, 937, 937, 937, 937, 57: 937, 532: 937, 725: 937}, - {362, 362, 6: 362, 9: 362, 15: 362, 51: 362, 362, 362, 362, 362, 532: 362, 725: 362}, - {364, 364, 6: 364, 9: 364, 15: 364, 51: 364, 364, 364, 364, 364, 532: 364, 725: 364}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 777: 3760, 3068, 3069, 3067, 811: 5903, 1330: 5902}, + {364, 364, 6: 364, 9: 364, 15: 364, 51: 364, 364, 364, 364, 364, 537: 364, 542: 5905, 728: 5904, 730: 364}, + {360, 360, 6: 360, 9: 360, 15: 360, 51: 360, 360, 360, 360, 360, 537: 360, 542: 360, 728: 360, 730: 360}, + {538: 5909, 1003: 5910}, + {538: 5907, 643: 5908, 1192: 5906}, // 3035 - {533: 5884, 638: 5885, 1186: 5890}, - {360, 360, 6: 360, 9: 360, 15: 360, 51: 360, 360, 360, 360, 360, 532: 360, 725: 360}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 584: 5892, 770: 5893, 3051, 3052, 3050}, - {561: 276, 712: 276}, - {561: 275, 712: 275}, + {362, 362, 6: 362, 9: 362, 15: 362, 51: 362, 362, 362, 362, 362, 537: 362, 730: 362}, + {359, 359, 6: 359, 9: 359, 15: 359, 51: 359, 359, 359, 359, 359, 537: 359, 730: 359}, + {358, 358, 6: 358, 9: 358, 15: 358, 51: 358, 358, 358, 358, 358, 537: 358, 730: 358}, + {945, 945, 6: 945, 9: 945, 15: 945, 51: 945, 945, 945, 945, 945, 57: 945, 537: 945, 730: 945}, + {363, 363, 6: 363, 9: 363, 15: 363, 51: 363, 363, 363, 363, 363, 537: 363, 730: 363}, // 3040 - {584: 5895}, - {561: 277, 712: 277}, - {9: 320, 530: 320, 561: 320, 712: 320}, - {336: 5898}, - {9: 322, 530: 322, 561: 322, 712: 322}, + {365, 365, 6: 365, 9: 365, 15: 365, 51: 365, 365, 365, 365, 365, 537: 365, 730: 365}, + {538: 5907, 643: 5908, 1192: 5913}, + {361, 361, 6: 361, 9: 361, 15: 361, 51: 361, 361, 361, 361, 361, 537: 361, 730: 361}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 589: 5915, 777: 5916, 3068, 3069, 3067}, + {566: 276, 717: 276}, // 3045 - {336: 5900}, - {9: 323, 530: 323, 561: 323, 712: 323}, - {9: 327, 56: 327, 530: 327, 561: 327, 712: 327}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 770: 3737, 3051, 3052, 3050, 805: 5904}, - {933, 933, 9: 933, 530: 933, 561: 933, 712: 933}, + {566: 275, 717: 275}, + {589: 5918}, + {566: 277, 717: 277}, + {9: 320, 535: 320, 566: 320, 717: 320}, + {337: 5921}, // 3050 - {934, 934, 9: 934, 530: 934, 561: 934, 712: 934}, - {9: 298, 530: 298, 298, 561: 298, 712: 298}, - {9: 297, 530: 297, 297, 561: 297, 712: 297}, - {530: 5949, 628: 2005, 726: 2005}, - {9: 5849, 530: 5909, 712: 5910}, + {9: 322, 535: 322, 566: 322, 717: 322}, + {337: 5923}, + {9: 323, 535: 323, 566: 323, 717: 323}, + {9: 327, 56: 327, 535: 327, 566: 327, 717: 327}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 777: 3760, 3068, 3069, 3067, 811: 5927}, // 3055 - {2: 282, 282, 282, 282, 282, 282, 282, 10: 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 58: 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 5863, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 584: 282, 608: 5862, 964: 5864, 1215: 5912}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 631: 5853, 770: 3737, 3051, 3052, 3050, 805: 5852, 855: 5854, 970: 5911}, - {335, 335, 9: 5856}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 584: 5866, 770: 5867, 3051, 3052, 3050, 1241: 5913}, - {712: 5914}, + {941, 941, 9: 941, 535: 941, 566: 941, 717: 941}, + {942, 942, 9: 942, 535: 942, 566: 942, 717: 942}, + {9: 298, 535: 298, 298, 566: 298, 717: 298}, + {9: 297, 535: 297, 297, 566: 297, 717: 297}, + {535: 5972, 633: 2017, 731: 2017}, // 3060 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 631: 5853, 770: 3737, 3051, 3052, 3050, 805: 5852, 855: 5870, 994: 5871, 1024: 5915}, - {401, 401, 9: 5873, 532: 401, 725: 5917, 1075: 5916, 5918}, - {400, 400, 6: 400, 15: 400, 51: 400, 400, 400, 400, 400, 532: 400}, - {161: 5938, 5936, 168: 5939, 5937, 5940, 409: 5931, 459: 5933, 1077: 5935, 1439: 5934, 1464: 5932}, - {334, 334, 532: 5920, 1307: 5919}, + {9: 5872, 535: 5932, 717: 5933}, + {2: 282, 282, 282, 282, 282, 282, 282, 10: 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 58: 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 5886, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 589: 282, 613: 5885, 970: 5887, 1221: 5935}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 636: 5876, 777: 3760, 3068, 3069, 3067, 811: 5875, 861: 5877, 976: 5934}, + {335, 335, 9: 5879}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 589: 5889, 777: 5890, 3068, 3069, 3067, 1247: 5936}, // 3065 - {337, 337}, - {163: 5924, 5922, 5923, 5925, 957: 5921}, - {1006: 5930}, - {560: 3037, 799: 5929}, - {560: 3037, 799: 5928}, + {717: 5937}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 636: 5876, 777: 3760, 3068, 3069, 3067, 811: 5875, 861: 5893, 1000: 5894, 1030: 5938}, + {402, 402, 9: 5896, 537: 402, 730: 5940, 1081: 5939, 5941}, + {401, 401, 6: 401, 15: 401, 51: 401, 401, 401, 401, 401, 537: 401}, + {161: 5961, 5959, 168: 5962, 5960, 5963, 327: 5954, 463: 5956, 1083: 5958, 1446: 5957, 1471: 5955}, // 3070 - {560: 3037, 799: 5927}, - {560: 3037, 799: 5926}, + {334, 334, 537: 5943, 1313: 5942}, + {337, 337}, + {163: 5947, 5945, 5946, 5948, 963: 5944}, + {1012: 5953}, + {564: 3054, 805: 5952}, + // 3075 + {564: 3054, 805: 5951}, + {564: 3054, 805: 5950}, + {564: 3054, 805: 5949}, {329, 329}, {330, 330}, + // 3080 {331, 331}, - // 3075 {332, 332}, {333, 333}, - {399, 399, 6: 399, 15: 399, 51: 399, 399, 399, 399, 399, 532: 399}, - {398, 398, 6: 398, 15: 398, 51: 398, 398, 398, 398, 398, 532: 398}, - {397, 397, 6: 397, 15: 397, 51: 397, 397, 397, 397, 397, 532: 397}, - // 3080 - {396, 396, 6: 396, 15: 396, 51: 396, 396, 396, 396, 396, 161: 5938, 5936, 168: 5939, 5937, 5940, 532: 396, 566: 5946, 1077: 5947}, - {395, 395, 6: 395, 15: 395, 51: 395, 395, 395, 395, 395, 161: 395, 395, 168: 395, 395, 395, 532: 395, 566: 395}, - {533: 5945}, - {533: 5944}, - {533: 5943}, + {400, 400, 6: 400, 15: 400, 51: 400, 400, 400, 400, 400, 537: 400}, + {399, 399, 6: 399, 15: 399, 51: 399, 399, 399, 399, 399, 537: 399}, // 3085 - {533: 5942}, - {533: 5941}, - {388, 388, 6: 388, 15: 388, 51: 388, 388, 388, 388, 388, 161: 388, 388, 168: 388, 388, 388, 532: 388, 566: 388}, - {389, 389, 6: 389, 15: 389, 51: 389, 389, 389, 389, 389, 161: 389, 389, 168: 389, 389, 389, 532: 389, 566: 389}, - {390, 390, 6: 390, 15: 390, 51: 390, 390, 390, 390, 390, 161: 390, 390, 168: 390, 390, 390, 532: 390, 566: 390}, + {398, 398, 6: 398, 15: 398, 51: 398, 398, 398, 398, 398, 537: 398}, + {397, 397, 6: 397, 15: 397, 51: 397, 397, 397, 397, 397, 161: 5961, 5959, 168: 5962, 5960, 5963, 537: 397, 571: 5969, 1083: 5970}, + {396, 396, 6: 396, 15: 396, 51: 396, 396, 396, 396, 396, 161: 396, 396, 168: 396, 396, 396, 537: 396, 571: 396}, + {538: 5968}, + {538: 5967}, // 3090 - {391, 391, 6: 391, 15: 391, 51: 391, 391, 391, 391, 391, 161: 391, 391, 168: 391, 391, 391, 532: 391, 566: 391}, - {392, 392, 6: 392, 15: 392, 51: 392, 392, 392, 392, 392, 161: 392, 392, 168: 392, 392, 392, 532: 392, 566: 392}, - {161: 5938, 5936, 168: 5939, 5937, 5940, 1077: 5948}, - {393, 393, 6: 393, 15: 393, 51: 393, 393, 393, 393, 393, 161: 393, 393, 168: 393, 393, 393, 532: 393, 566: 393}, - {394, 394, 6: 394, 15: 394, 51: 394, 394, 394, 394, 394, 161: 394, 394, 168: 394, 394, 394, 532: 394, 566: 394}, + {538: 5966}, + {538: 5965}, + {538: 5964}, + {389, 389, 6: 389, 15: 389, 51: 389, 389, 389, 389, 389, 161: 389, 389, 168: 389, 389, 389, 537: 389, 571: 389}, + {390, 390, 6: 390, 15: 390, 51: 390, 390, 390, 390, 390, 161: 390, 390, 168: 390, 390, 390, 537: 390, 571: 390}, // 3095 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 631: 5853, 770: 3737, 3051, 3052, 3050, 805: 5852, 855: 5950}, - {712: 5951}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 631: 5853, 770: 3737, 3051, 3052, 3050, 805: 5852, 855: 5854, 970: 5952}, - {334, 334, 9: 5856, 532: 5920, 1307: 5953}, - {336, 336}, + {391, 391, 6: 391, 15: 391, 51: 391, 391, 391, 391, 391, 161: 391, 391, 168: 391, 391, 391, 537: 391, 571: 391}, + {392, 392, 6: 392, 15: 392, 51: 392, 392, 392, 392, 392, 161: 392, 392, 168: 392, 392, 392, 537: 392, 571: 392}, + {393, 393, 6: 393, 15: 393, 51: 393, 393, 393, 393, 393, 161: 393, 393, 168: 393, 393, 393, 537: 393, 571: 393}, + {161: 5961, 5959, 168: 5962, 5960, 5963, 1083: 5971}, + {394, 394, 6: 394, 15: 394, 51: 394, 394, 394, 394, 394, 161: 394, 394, 168: 394, 394, 394, 537: 394, 571: 394}, // 3100 - {2465, 2465, 9: 2465, 16: 2465, 18: 2465, 21: 2465, 535: 2465, 538: 2465, 553: 2465, 557: 2465, 561: 2465, 563: 2465, 579: 2465, 709: 2465, 712: 2465, 765: 2465}, - {426, 426}, - {2: 1053, 1053, 1053, 1053, 1053, 1053, 1053, 10: 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 58: 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 531: 1053, 533: 1053, 1053, 1053, 1053, 540: 1053, 1053, 543: 1053, 1053, 1053, 547: 1053, 1053, 1053, 552: 1053, 1053, 559: 1053, 1053, 1053, 573: 1053, 578: 1053, 584: 1053, 586: 1053, 1053, 614: 1053, 617: 1053, 628: 1053, 1053, 1053, 1053, 636: 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 697: 1053, 1053, 1053, 1053, 711: 1053, 715: 1053, 829: 1053, 1053, 836: 1053, 1053, 1053, 840: 1053, 849: 1053, 1053, 1053}, - {2: 1051, 1051, 1051, 1051, 1051, 1051, 1051, 10: 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 58: 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 531: 1051, 549: 1051, 559: 1051, 561: 1051, 643: 1051, 836: 1051, 1051, 1051}, - {2: 1256, 1256, 1256, 1256, 1256, 1256, 1256, 10: 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 58: 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 531: 1256, 549: 1256, 643: 1256, 836: 5961, 5960, 5959, 934: 5962, 990: 5963}, + {395, 395, 6: 395, 15: 395, 51: 395, 395, 395, 395, 395, 161: 395, 395, 168: 395, 395, 395, 537: 395, 571: 395}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 636: 5876, 777: 3760, 3068, 3069, 3067, 811: 5875, 861: 5973}, + {717: 5974}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 636: 5876, 777: 3760, 3068, 3069, 3067, 811: 5875, 861: 5877, 976: 5975}, + {334, 334, 9: 5879, 537: 5943, 1313: 5976}, // 3105 - {2: 1259, 1259, 1259, 1259, 1259, 1259, 1259, 10: 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 58: 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 531: 1259, 533: 1259, 1259, 1259, 1259, 540: 1259, 1259, 543: 1259, 1259, 1259, 547: 1259, 1259, 1259, 552: 1259, 1259, 559: 1259, 1259, 1259, 573: 1259, 578: 1259, 584: 1259, 586: 1259, 1259, 614: 1259, 617: 1259, 628: 1259, 1259, 1259, 1259, 636: 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 697: 1259, 1259, 1259, 1259, 711: 1259, 715: 1259, 829: 1259, 1259, 836: 1259, 1259, 1259, 840: 1259, 849: 1259, 1259, 1259}, - {2: 1258, 1258, 1258, 1258, 1258, 1258, 1258, 10: 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 58: 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 531: 1258, 533: 1258, 1258, 1258, 1258, 540: 1258, 1258, 543: 1258, 1258, 1258, 547: 1258, 1258, 1258, 552: 1258, 1258, 559: 1258, 1258, 1258, 573: 1258, 578: 1258, 584: 1258, 586: 1258, 1258, 614: 1258, 617: 1258, 628: 1258, 1258, 1258, 1258, 636: 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 697: 1258, 1258, 1258, 1258, 711: 1258, 715: 1258, 829: 1258, 1258, 836: 1258, 1258, 1258, 840: 1258, 849: 1258, 1258, 1258}, - {2: 1257, 1257, 1257, 1257, 1257, 1257, 1257, 10: 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 58: 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 531: 1257, 533: 1257, 1257, 1257, 1257, 540: 1257, 1257, 543: 1257, 1257, 1257, 547: 1257, 1257, 1257, 552: 1257, 1257, 559: 1257, 1257, 1257, 573: 1257, 578: 1257, 584: 1257, 586: 1257, 1257, 614: 1257, 617: 1257, 628: 1257, 1257, 1257, 1257, 636: 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 697: 1257, 1257, 1257, 1257, 711: 1257, 715: 1257, 829: 1257, 1257, 836: 1257, 1257, 1257, 840: 1257, 849: 1257, 1257, 1257}, - {2: 1255, 1255, 1255, 1255, 1255, 1255, 1255, 10: 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 58: 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 531: 1255, 549: 1255, 559: 1255, 561: 1255, 643: 1255}, - {2: 2115, 2115, 2115, 2115, 2115, 2115, 2115, 10: 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 58: 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 531: 2115, 549: 4675, 643: 2115, 958: 5964}, + {336, 336}, + {2479, 2479, 9: 2479, 16: 2479, 18: 2479, 21: 2479, 540: 2479, 543: 2479, 558: 2479, 560: 2479, 566: 2479, 568: 2479, 584: 2479, 714: 2479, 717: 2479, 770: 2479, 2479}, + {427, 427}, + {2: 1061, 1061, 1061, 1061, 1061, 1061, 1061, 10: 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 58: 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 536: 1061, 538: 1061, 1061, 1061, 1061, 545: 1061, 1061, 548: 1061, 1061, 1061, 552: 1061, 1061, 1061, 557: 1061, 1061, 564: 1061, 1061, 1061, 578: 1061, 583: 1061, 589: 1061, 591: 1061, 1061, 624: 1061, 631: 1061, 633: 1061, 1061, 1061, 1061, 641: 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 663: 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 716: 1061, 721: 1061, 835: 1061, 1061, 842: 1061, 1061, 1061, 846: 1061, 855: 1061, 1061, 1061}, + {2: 1059, 1059, 1059, 1059, 1059, 1059, 1059, 10: 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 58: 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 536: 1059, 554: 1059, 565: 1059, 1059, 648: 1059, 842: 1059, 1059, 1059}, // 3110 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 531: 5973, 643: 5968, 770: 3927, 3051, 3052, 3050, 775: 5972, 804: 5971, 895: 5970, 899: 5969, 5967, 955: 5965, 993: 5966}, - {1130, 1130, 9: 1130, 57: 1130, 530: 1130, 532: 1130, 539: 1130, 542: 1130, 550: 1130, 1130, 554: 1130, 556: 1130, 1130, 1130, 1130, 562: 1130, 1130, 1130, 571: 1130, 1130, 574: 1130}, - {9: 6019, 557: 6088}, - {9: 1128, 540: 5986, 5987, 557: 6073, 573: 5985, 576: 5988, 580: 5984, 5989, 583: 5990, 914: 5983, 919: 5982}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6070, 3051, 3052, 3050}, + {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, 1264, 1264, 1264, 1264, 1264, 58: 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 536: 1264, 554: 1264, 648: 1264, 842: 5984, 5983, 5982, 941: 5985, 996: 5986}, + {2: 1267, 1267, 1267, 1267, 1267, 1267, 1267, 10: 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 58: 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 536: 1267, 538: 1267, 1267, 1267, 1267, 545: 1267, 1267, 548: 1267, 1267, 1267, 552: 1267, 1267, 1267, 557: 1267, 1267, 564: 1267, 1267, 1267, 578: 1267, 583: 1267, 589: 1267, 591: 1267, 1267, 624: 1267, 631: 1267, 633: 1267, 1267, 1267, 1267, 641: 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 663: 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 716: 1267, 721: 1267, 835: 1267, 1267, 842: 1267, 1267, 1267, 846: 1267, 855: 1267, 1267, 1267}, + {2: 1266, 1266, 1266, 1266, 1266, 1266, 1266, 10: 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 58: 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 536: 1266, 538: 1266, 1266, 1266, 1266, 545: 1266, 1266, 548: 1266, 1266, 1266, 552: 1266, 1266, 1266, 557: 1266, 1266, 564: 1266, 1266, 1266, 578: 1266, 583: 1266, 589: 1266, 591: 1266, 1266, 624: 1266, 631: 1266, 633: 1266, 1266, 1266, 1266, 641: 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 663: 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 716: 1266, 721: 1266, 835: 1266, 1266, 842: 1266, 1266, 1266, 846: 1266, 855: 1266, 1266, 1266}, + {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, 1265, 1265, 1265, 1265, 1265, 58: 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 536: 1265, 538: 1265, 1265, 1265, 1265, 545: 1265, 1265, 548: 1265, 1265, 1265, 552: 1265, 1265, 1265, 557: 1265, 1265, 564: 1265, 1265, 1265, 578: 1265, 583: 1265, 589: 1265, 591: 1265, 1265, 624: 1265, 631: 1265, 633: 1265, 1265, 1265, 1265, 641: 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 663: 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 716: 1265, 721: 1265, 835: 1265, 1265, 842: 1265, 1265, 1265, 846: 1265, 855: 1265, 1265, 1265}, + {2: 1263, 1263, 1263, 1263, 1263, 1263, 1263, 10: 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 58: 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 536: 1263, 554: 1263, 565: 1263, 1263, 648: 1263}, // 3115 - {1126, 1126, 9: 1126, 57: 1126, 530: 1126, 532: 1126, 539: 1126, 1126, 1126, 1126, 550: 1126, 1126, 554: 1126, 556: 1126, 1126, 1126, 1126, 562: 1126, 1126, 1126, 571: 1126, 1126, 1126, 1126, 576: 1126, 580: 1126, 1126, 583: 1126, 585: 1126}, - {1125, 1125, 9: 1125, 57: 1125, 530: 1125, 532: 1125, 539: 1125, 1125, 1125, 1125, 550: 1125, 1125, 554: 1125, 556: 1125, 1125, 1125, 1125, 562: 1125, 1125, 1125, 571: 1125, 1125, 1125, 1125, 576: 1125, 580: 1125, 1125, 583: 1125, 585: 1125}, - {1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 532: 1121, 537: 1121, 539: 1121, 1121, 1121, 1121, 546: 6023, 549: 1121, 1121, 1121, 554: 1121, 556: 1121, 1121, 1121, 1121, 562: 1121, 1121, 1121, 1121, 571: 1121, 1121, 1121, 1121, 1121, 1121, 580: 1121, 1121, 583: 1121, 585: 1121, 592: 1121, 731: 1121, 963: 6022}, - {1119, 1119, 3297, 3451, 3261, 3138, 3177, 3299, 3064, 1119, 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 1119, 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 1119, 532: 1119, 537: 5980, 539: 1119, 1119, 1119, 1119, 550: 1119, 1119, 554: 1119, 556: 1119, 1119, 1119, 1119, 562: 1119, 1119, 1119, 571: 1119, 1119, 1119, 1119, 576: 1119, 580: 1119, 1119, 583: 1119, 585: 1119, 770: 5979, 3051, 3052, 3050, 1016: 5978, 5977}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 531: 5973, 2906, 547: 2905, 608: 2904, 643: 5968, 695: 2900, 770: 3927, 3051, 3052, 3050, 775: 5976, 804: 5971, 806: 3847, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 3846, 817: 3849, 3848, 895: 5970, 899: 5969, 5975, 955: 5965, 993: 5974}, + {2: 2129, 2129, 2129, 2129, 2129, 2129, 2129, 10: 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 58: 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 536: 2129, 554: 4698, 648: 2129, 964: 5987}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 536: 5996, 648: 5991, 777: 3950, 3068, 3069, 3067, 5995, 810: 5994, 901: 5993, 905: 5992, 5990, 961: 5988, 999: 5989}, + {1138, 1138, 9: 1138, 57: 1138, 535: 1138, 537: 1138, 544: 1138, 547: 1138, 555: 1138, 1138, 559: 1138, 1138, 562: 1138, 1138, 565: 1138, 567: 1138, 1138, 1138, 576: 1138, 1138, 579: 1138}, + {9: 6042, 560: 6111}, + {9: 1136, 545: 6009, 6010, 560: 6096, 578: 6008, 581: 6011, 585: 6007, 6012, 588: 6013, 920: 6006, 925: 6005}, // 3120 - {9: 6019, 57: 6020}, - {1128, 1128, 9: 1128, 57: 1128, 530: 1128, 532: 1128, 539: 1128, 5986, 5987, 1128, 550: 1128, 1128, 554: 1128, 556: 1128, 1128, 1128, 1128, 562: 1128, 1128, 1128, 571: 1128, 1128, 5985, 1128, 576: 5988, 580: 5984, 5989, 583: 5990, 914: 5983, 919: 5982}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 1119, 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 3989, 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 537: 5980, 539: 1013, 1119, 1119, 550: 1013, 1013, 554: 3859, 556: 3858, 564: 3857, 573: 1119, 576: 1119, 580: 1119, 1119, 583: 1119, 770: 5979, 3051, 3052, 3050, 842: 3860, 3861, 1016: 5978, 5977}, - {1123, 1123, 9: 1123, 57: 1123, 530: 1123, 532: 1123, 539: 1123, 1123, 1123, 1123, 550: 1123, 1123, 554: 1123, 556: 1123, 1123, 1123, 1123, 562: 1123, 1123, 1123, 571: 1123, 1123, 1123, 1123, 576: 1123, 580: 1123, 1123, 583: 1123, 585: 1123}, - {1118, 1118, 9: 1118, 57: 1118, 530: 1118, 532: 1118, 539: 1118, 1118, 1118, 1118, 549: 1118, 1118, 1118, 554: 1118, 556: 1118, 1118, 1118, 1118, 562: 1118, 1118, 1118, 1118, 571: 1118, 1118, 1118, 1118, 1118, 1118, 580: 1118, 1118, 583: 1118, 585: 1118, 592: 1118, 731: 1118}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6093, 3068, 3069, 3067}, + {1134, 1134, 9: 1134, 57: 1134, 535: 1134, 537: 1134, 544: 1134, 1134, 1134, 1134, 555: 1134, 1134, 559: 1134, 1134, 562: 1134, 1134, 565: 1134, 567: 1134, 1134, 1134, 576: 1134, 1134, 1134, 1134, 581: 1134, 585: 1134, 1134, 588: 1134, 590: 1134}, + {1133, 1133, 9: 1133, 57: 1133, 535: 1133, 537: 1133, 544: 1133, 1133, 1133, 1133, 555: 1133, 1133, 559: 1133, 1133, 562: 1133, 1133, 565: 1133, 567: 1133, 1133, 1133, 576: 1133, 1133, 1133, 1133, 581: 1133, 585: 1133, 1133, 588: 1133, 590: 1133}, + {1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 537: 1129, 542: 1129, 544: 1129, 1129, 1129, 1129, 551: 6046, 554: 1129, 1129, 1129, 559: 1129, 1129, 562: 1129, 1129, 565: 1129, 567: 1129, 1129, 1129, 1129, 576: 1129, 1129, 1129, 1129, 1129, 1129, 585: 1129, 1129, 588: 1129, 590: 1129, 597: 1129, 736: 1129, 969: 6045}, + {1127, 1127, 3317, 3472, 3281, 3157, 3197, 3319, 3081, 1127, 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 1127, 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 1127, 537: 1127, 542: 6003, 544: 1127, 1127, 1127, 1127, 555: 1127, 1127, 559: 1127, 1127, 562: 1127, 1127, 565: 1127, 567: 1127, 1127, 1127, 576: 1127, 1127, 1127, 1127, 581: 1127, 585: 1127, 1127, 588: 1127, 590: 1127, 777: 6002, 3068, 3069, 3067, 1022: 6001, 6000}, // 3125 - {1117, 1117, 9: 1117, 57: 1117, 530: 1117, 532: 1117, 539: 1117, 1117, 1117, 1117, 549: 1117, 1117, 1117, 554: 1117, 556: 1117, 1117, 1117, 1117, 562: 1117, 1117, 1117, 1117, 571: 1117, 1117, 1117, 1117, 1117, 1117, 580: 1117, 1117, 583: 1117, 585: 1117, 592: 1117, 731: 1117}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 5981, 3051, 3052, 3050}, - {1116, 1116, 9: 1116, 57: 1116, 530: 1116, 532: 1116, 539: 1116, 1116, 1116, 1116, 549: 1116, 1116, 1116, 554: 1116, 556: 1116, 1116, 1116, 1116, 562: 1116, 1116, 1116, 1116, 571: 1116, 1116, 1116, 1116, 1116, 1116, 580: 1116, 1116, 583: 1116, 585: 1116, 592: 1116, 731: 1116}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 531: 5973, 770: 3927, 3051, 3052, 3050, 775: 5972, 804: 5971, 895: 5970, 899: 5969, 6012}, - {576: 1087, 1009: 5999, 1229: 6003}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 536: 5996, 2923, 552: 2922, 613: 2921, 648: 5991, 661: 2917, 777: 3950, 3068, 3069, 3067, 5999, 810: 5994, 812: 3870, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 3869, 3872, 3871, 901: 5993, 905: 5992, 5998, 961: 5988, 999: 5997}, + {9: 6042, 57: 6043}, + {1136, 1136, 9: 1136, 57: 1136, 535: 1136, 537: 1136, 544: 1136, 6009, 6010, 1136, 555: 1136, 1136, 559: 1136, 1136, 562: 1136, 1136, 565: 1136, 567: 1136, 1136, 1136, 576: 1136, 1136, 6008, 1136, 581: 6011, 585: 6007, 6012, 588: 6013, 920: 6006, 925: 6005}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 1127, 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 4012, 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 542: 6003, 544: 1021, 1127, 1127, 555: 1021, 1021, 559: 3882, 562: 3881, 569: 3880, 578: 1127, 581: 1127, 585: 1127, 1127, 588: 1127, 777: 6002, 3068, 3069, 3067, 848: 3883, 3884, 1022: 6001, 6000}, + {1131, 1131, 9: 1131, 57: 1131, 535: 1131, 537: 1131, 544: 1131, 1131, 1131, 1131, 555: 1131, 1131, 559: 1131, 1131, 562: 1131, 1131, 565: 1131, 567: 1131, 1131, 1131, 576: 1131, 1131, 1131, 1131, 581: 1131, 585: 1131, 1131, 588: 1131, 590: 1131}, // 3130 - {540: 5986, 5987, 576: 5996, 914: 5997}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 531: 5973, 770: 3927, 3051, 3052, 3050, 775: 5972, 804: 5971, 895: 5970, 899: 5969, 5993}, - {576: 1089, 1009: 1089}, - {576: 1088, 1009: 1088}, - {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, 1085, 1085, 1085, 1085, 1085, 58: 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 531: 1085}, + {1126, 1126, 9: 1126, 57: 1126, 535: 1126, 537: 1126, 544: 1126, 1126, 1126, 1126, 554: 1126, 1126, 1126, 559: 1126, 1126, 562: 1126, 1126, 565: 1126, 567: 1126, 1126, 1126, 1126, 576: 1126, 1126, 1126, 1126, 1126, 1126, 585: 1126, 1126, 588: 1126, 590: 1126, 597: 1126, 736: 1126}, + {1125, 1125, 9: 1125, 57: 1125, 535: 1125, 537: 1125, 544: 1125, 1125, 1125, 1125, 554: 1125, 1125, 1125, 559: 1125, 1125, 562: 1125, 1125, 565: 1125, 567: 1125, 1125, 1125, 1125, 576: 1125, 1125, 1125, 1125, 1125, 1125, 585: 1125, 1125, 588: 1125, 590: 1125, 597: 1125, 736: 1125}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6004, 3068, 3069, 3067}, + {1124, 1124, 9: 1124, 57: 1124, 535: 1124, 537: 1124, 544: 1124, 1124, 1124, 1124, 554: 1124, 1124, 1124, 559: 1124, 1124, 562: 1124, 1124, 565: 1124, 567: 1124, 1124, 1124, 1124, 576: 1124, 1124, 1124, 1124, 1124, 1124, 585: 1124, 1124, 588: 1124, 590: 1124, 597: 1124, 736: 1124}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 536: 5996, 777: 3950, 3068, 3069, 3067, 5995, 810: 5994, 901: 5993, 905: 5992, 6035}, // 3135 - {576: 5992}, - {576: 5991}, - {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, 1083, 1083, 1083, 1083, 1083, 58: 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 531: 1083}, - {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, 1084, 1084, 1084, 1084, 1084, 58: 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 531: 1084}, - {1091, 1091, 9: 1091, 57: 1091, 530: 5994, 532: 1091, 539: 1091, 1091, 1091, 1091, 550: 1091, 1091, 554: 1091, 556: 1091, 1091, 1091, 1091, 562: 1091, 1091, 1091, 571: 1091, 1091, 1091, 1091, 576: 1091, 580: 1091, 1091, 583: 1091, 585: 1091, 914: 5983, 919: 5982}, + {581: 1095, 1015: 6022, 1235: 6026}, + {545: 6009, 6010, 581: 6019, 920: 6020}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 536: 5996, 777: 3950, 3068, 3069, 3067, 5995, 810: 5994, 901: 5993, 905: 5992, 6016}, + {581: 1097, 1015: 1097}, + {581: 1096, 1015: 1096}, // 3140 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 5995}, - {1090, 1090, 9: 1090, 57: 1090, 530: 1090, 532: 1090, 539: 1090, 1090, 1090, 1090, 550: 1090, 1090, 554: 1090, 556: 1090, 1090, 1090, 1090, 562: 1090, 1090, 1090, 566: 3745, 3743, 3744, 3742, 3740, 1090, 1090, 1090, 1090, 576: 1090, 580: 1090, 1090, 583: 1090, 585: 1090, 800: 3741, 3739}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 531: 5973, 770: 3927, 3051, 3052, 3050, 775: 5972, 804: 5971, 895: 5970, 899: 5969, 6002}, - {576: 1087, 1009: 5999, 1229: 5998}, - {576: 6000}, + {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, 1093, 1093, 1093, 1093, 1093, 58: 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 536: 1093}, + {581: 6015}, + {581: 6014}, + {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, 1091, 1091, 1091, 1091, 1091, 58: 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 536: 1091}, + {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, 1092, 1092, 1092, 1092, 1092, 58: 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 536: 1092}, // 3145 - {576: 1086}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 531: 5973, 770: 3927, 3051, 3052, 3050, 775: 5972, 804: 5971, 895: 5970, 899: 5969, 6001}, - {1092, 1092, 9: 1092, 57: 1092, 530: 1092, 532: 1092, 539: 1092, 1092, 1092, 1092, 550: 1092, 1092, 554: 1092, 556: 1092, 1092, 1092, 1092, 562: 1092, 1092, 1092, 571: 1092, 1092, 1092, 1092, 576: 1092, 580: 1092, 1092, 583: 1092, 585: 1092, 914: 5983, 919: 5982}, - {1093, 1093, 9: 1093, 57: 1093, 530: 1093, 532: 1093, 539: 1093, 1093, 1093, 1093, 550: 1093, 1093, 554: 1093, 556: 1093, 1093, 1093, 1093, 562: 1093, 1093, 1093, 571: 1093, 1093, 1093, 1093, 576: 1093, 580: 1093, 1093, 583: 1093, 585: 1093, 914: 5983, 919: 5982}, - {576: 6004}, + {1099, 1099, 9: 1099, 57: 1099, 535: 6017, 537: 1099, 544: 1099, 1099, 1099, 1099, 555: 1099, 1099, 559: 1099, 1099, 562: 1099, 1099, 565: 1099, 567: 1099, 1099, 1099, 576: 1099, 1099, 1099, 1099, 581: 1099, 585: 1099, 1099, 588: 1099, 590: 1099, 920: 6006, 925: 6005}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 6018}, + {1098, 1098, 9: 1098, 57: 1098, 535: 1098, 537: 1098, 544: 1098, 1098, 1098, 1098, 555: 1098, 1098, 559: 1098, 1098, 562: 1098, 1098, 565: 1098, 567: 1098, 1098, 1098, 571: 3768, 3766, 3767, 3765, 3763, 1098, 1098, 1098, 1098, 581: 1098, 585: 1098, 1098, 588: 1098, 590: 1098, 806: 3764, 3762}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 536: 5996, 777: 3950, 3068, 3069, 3067, 5995, 810: 5994, 901: 5993, 905: 5992, 6025}, + {581: 1095, 1015: 6022, 1235: 6021}, // 3150 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 531: 5973, 770: 3927, 3051, 3052, 3050, 775: 5972, 804: 5971, 895: 5970, 899: 5969, 6005}, - {530: 6006, 540: 5986, 5987, 6007, 573: 5985, 576: 5988, 580: 5984, 5989, 583: 5990, 914: 5983, 919: 5982}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 6011}, - {531: 6008}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4024, 3051, 3052, 3050, 821: 4025, 906: 6009}, + {581: 6023}, + {581: 1094}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 536: 5996, 777: 3950, 3068, 3069, 3067, 5995, 810: 5994, 901: 5993, 905: 5992, 6024}, + {1100, 1100, 9: 1100, 57: 1100, 535: 1100, 537: 1100, 544: 1100, 1100, 1100, 1100, 555: 1100, 1100, 559: 1100, 1100, 562: 1100, 1100, 565: 1100, 567: 1100, 1100, 1100, 576: 1100, 1100, 1100, 1100, 581: 1100, 585: 1100, 1100, 588: 1100, 590: 1100, 920: 6006, 925: 6005}, + {1101, 1101, 9: 1101, 57: 1101, 535: 1101, 537: 1101, 544: 1101, 1101, 1101, 1101, 555: 1101, 1101, 559: 1101, 1101, 562: 1101, 1101, 565: 1101, 567: 1101, 1101, 1101, 576: 1101, 1101, 1101, 1101, 581: 1101, 585: 1101, 1101, 588: 1101, 590: 1101, 920: 6006, 925: 6005}, // 3155 - {9: 4027, 57: 6010}, - {1094, 1094, 9: 1094, 57: 1094, 530: 1094, 532: 1094, 539: 1094, 1094, 1094, 1094, 550: 1094, 1094, 554: 1094, 556: 1094, 1094, 1094, 1094, 562: 1094, 1094, 1094, 571: 1094, 1094, 1094, 1094, 576: 1094, 580: 1094, 1094, 583: 1094, 585: 1094}, - {1095, 1095, 9: 1095, 57: 1095, 530: 1095, 532: 1095, 539: 1095, 1095, 1095, 1095, 550: 1095, 1095, 554: 1095, 556: 1095, 1095, 1095, 1095, 562: 1095, 1095, 1095, 566: 3745, 3743, 3744, 3742, 3740, 1095, 1095, 1095, 1095, 576: 1095, 580: 1095, 1095, 583: 1095, 585: 1095, 800: 3741, 3739}, - {1098, 1098, 9: 1098, 57: 1098, 530: 6013, 532: 1098, 539: 1098, 5986, 5987, 6014, 550: 1098, 1098, 554: 1098, 556: 1098, 1098, 1098, 1098, 562: 1098, 1098, 1098, 571: 1098, 1098, 5985, 1098, 576: 5988, 580: 5984, 5989, 583: 5990, 585: 1098, 914: 5983, 919: 5982}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 6018}, + {581: 6027}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 536: 5996, 777: 3950, 3068, 3069, 3067, 5995, 810: 5994, 901: 5993, 905: 5992, 6028}, + {535: 6029, 545: 6009, 6010, 6030, 578: 6008, 581: 6011, 585: 6007, 6012, 588: 6013, 920: 6006, 925: 6005}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 6034}, + {536: 6031}, // 3160 - {531: 6015}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4024, 3051, 3052, 3050, 821: 4025, 906: 6016}, - {9: 4027, 57: 6017}, - {1096, 1096, 9: 1096, 57: 1096, 530: 1096, 532: 1096, 539: 1096, 1096, 1096, 1096, 550: 1096, 1096, 554: 1096, 556: 1096, 1096, 1096, 1096, 562: 1096, 1096, 1096, 571: 1096, 1096, 1096, 1096, 576: 1096, 580: 1096, 1096, 583: 1096, 585: 1096}, - {1097, 1097, 9: 1097, 57: 1097, 530: 1097, 532: 1097, 539: 1097, 1097, 1097, 1097, 550: 1097, 1097, 554: 1097, 556: 1097, 1097, 1097, 1097, 562: 1097, 1097, 1097, 566: 3745, 3743, 3744, 3742, 3740, 1097, 1097, 1097, 1097, 576: 1097, 580: 1097, 1097, 583: 1097, 585: 1097, 800: 3741, 3739}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4047, 3068, 3069, 3067, 828: 4048, 912: 6032}, + {9: 4050, 57: 6033}, + {1102, 1102, 9: 1102, 57: 1102, 535: 1102, 537: 1102, 544: 1102, 1102, 1102, 1102, 555: 1102, 1102, 559: 1102, 1102, 562: 1102, 1102, 565: 1102, 567: 1102, 1102, 1102, 576: 1102, 1102, 1102, 1102, 581: 1102, 585: 1102, 1102, 588: 1102, 590: 1102}, + {1103, 1103, 9: 1103, 57: 1103, 535: 1103, 537: 1103, 544: 1103, 1103, 1103, 1103, 555: 1103, 1103, 559: 1103, 1103, 562: 1103, 1103, 565: 1103, 567: 1103, 1103, 1103, 571: 3768, 3766, 3767, 3765, 3763, 1103, 1103, 1103, 1103, 581: 1103, 585: 1103, 1103, 588: 1103, 590: 1103, 806: 3764, 3762}, + {1106, 1106, 9: 1106, 57: 1106, 535: 6036, 537: 1106, 544: 1106, 6009, 6010, 6037, 555: 1106, 1106, 559: 1106, 1106, 562: 1106, 1106, 565: 1106, 567: 1106, 1106, 1106, 576: 1106, 1106, 6008, 1106, 581: 6011, 585: 6007, 6012, 588: 6013, 590: 1106, 920: 6006, 925: 6005}, // 3165 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 531: 5973, 643: 5968, 770: 3927, 3051, 3052, 3050, 775: 5972, 804: 5971, 895: 5970, 899: 5969, 5975, 955: 6021}, - {1122, 1122, 9: 1122, 57: 1122, 530: 1122, 532: 1122, 539: 1122, 1122, 1122, 1122, 550: 1122, 1122, 554: 1122, 556: 1122, 1122, 1122, 1122, 562: 1122, 1122, 1122, 571: 1122, 1122, 1122, 1122, 576: 1122, 580: 1122, 1122, 583: 1122, 585: 1122}, - {1129, 1129, 9: 1129, 57: 1129, 530: 1129, 532: 1129, 539: 1129, 542: 1129, 550: 1129, 1129, 554: 1129, 556: 1129, 1129, 1129, 1129, 562: 1129, 1129, 1129, 571: 1129, 1129, 574: 1129}, - {1119, 1119, 3297, 3451, 3261, 3138, 3177, 3299, 3064, 1119, 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 1119, 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 1119, 532: 1119, 537: 5980, 539: 1119, 1119, 1119, 1119, 549: 1119, 1119, 1119, 554: 1119, 556: 1119, 1119, 1119, 1119, 562: 1119, 1119, 1119, 1119, 571: 1119, 1119, 1119, 1119, 1119, 1119, 580: 1119, 1119, 583: 1119, 585: 1119, 592: 1119, 731: 1119, 770: 5979, 3051, 3052, 3050, 1016: 5978, 6027}, - {531: 6024}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 6041}, + {536: 6038}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4047, 3068, 3069, 3067, 828: 4048, 912: 6039}, + {9: 4050, 57: 6040}, + {1104, 1104, 9: 1104, 57: 1104, 535: 1104, 537: 1104, 544: 1104, 1104, 1104, 1104, 555: 1104, 1104, 559: 1104, 1104, 562: 1104, 1104, 565: 1104, 567: 1104, 1104, 1104, 576: 1104, 1104, 1104, 1104, 581: 1104, 585: 1104, 1104, 588: 1104, 590: 1104}, // 3170 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 5255, 3051, 3052, 3050, 859: 6025}, - {9: 5256, 57: 6026}, - {1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 537: 1120, 539: 1120, 1120, 1120, 1120, 547: 1120, 549: 1120, 1120, 1120, 554: 1120, 556: 1120, 1120, 1120, 1120, 562: 1120, 1120, 1120, 1120, 571: 1120, 1120, 1120, 1120, 1120, 1120, 580: 1120, 1120, 583: 1120, 585: 1120, 592: 1120, 608: 1120, 627: 1120, 695: 1120, 710: 1120, 723: 1120, 731: 1120}, - {2122, 2122, 9: 2122, 57: 2122, 530: 2122, 532: 2122, 539: 2122, 2122, 2122, 2122, 549: 2122, 2122, 2122, 554: 2122, 556: 2122, 2122, 2122, 2122, 562: 2122, 2122, 2122, 2122, 571: 2122, 2122, 2122, 2122, 2122, 2122, 580: 2122, 2122, 583: 2122, 585: 2122, 592: 2122, 731: 4641, 995: 6028, 1321: 6029}, - {2121, 2121, 9: 2121, 57: 2121, 530: 2121, 532: 2121, 539: 2121, 2121, 2121, 2121, 549: 2121, 2121, 2121, 554: 2121, 556: 2121, 2121, 2121, 2121, 562: 2121, 2121, 2121, 2121, 571: 2121, 2121, 2121, 2121, 2121, 2121, 580: 2121, 2121, 583: 2121, 585: 2121, 592: 2121}, + {1105, 1105, 9: 1105, 57: 1105, 535: 1105, 537: 1105, 544: 1105, 1105, 1105, 1105, 555: 1105, 1105, 559: 1105, 1105, 562: 1105, 1105, 565: 1105, 567: 1105, 1105, 1105, 571: 3768, 3766, 3767, 3765, 3763, 1105, 1105, 1105, 1105, 581: 1105, 585: 1105, 1105, 588: 1105, 590: 1105, 806: 3764, 3762}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 536: 5996, 648: 5991, 777: 3950, 3068, 3069, 3067, 5995, 810: 5994, 901: 5993, 905: 5992, 5998, 961: 6044}, + {1130, 1130, 9: 1130, 57: 1130, 535: 1130, 537: 1130, 544: 1130, 1130, 1130, 1130, 555: 1130, 1130, 559: 1130, 1130, 562: 1130, 1130, 565: 1130, 567: 1130, 1130, 1130, 576: 1130, 1130, 1130, 1130, 581: 1130, 585: 1130, 1130, 588: 1130, 590: 1130}, + {1137, 1137, 9: 1137, 57: 1137, 535: 1137, 537: 1137, 544: 1137, 547: 1137, 555: 1137, 1137, 559: 1137, 1137, 562: 1137, 1137, 565: 1137, 567: 1137, 1137, 1137, 576: 1137, 1137, 579: 1137}, + {1127, 1127, 3317, 3472, 3281, 3157, 3197, 3319, 3081, 1127, 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 1127, 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 1127, 537: 1127, 542: 6003, 544: 1127, 1127, 1127, 1127, 554: 1127, 1127, 1127, 559: 1127, 1127, 562: 1127, 1127, 565: 1127, 567: 1127, 1127, 1127, 1127, 576: 1127, 1127, 1127, 1127, 1127, 1127, 585: 1127, 1127, 588: 1127, 590: 1127, 597: 1127, 736: 1127, 777: 6002, 3068, 3069, 3067, 1022: 6001, 6050}, // 3175 - {1100, 1100, 9: 1100, 57: 1100, 530: 1100, 532: 1100, 539: 1100, 1100, 1100, 1100, 549: 6032, 1100, 1100, 554: 1100, 556: 1100, 1100, 1100, 1100, 562: 1100, 1100, 1100, 6033, 571: 1100, 1100, 1100, 1100, 6031, 1100, 580: 1100, 1100, 583: 1100, 585: 1100, 592: 1100, 1051: 6035, 6034, 1191: 6036, 6030}, - {1215, 1215, 9: 1215, 57: 1215, 530: 1215, 532: 1215, 539: 1215, 1215, 1215, 1215, 550: 1215, 1215, 554: 1215, 556: 1215, 1215, 1215, 1215, 562: 1215, 1215, 1215, 571: 1215, 1215, 1215, 1215, 576: 1215, 580: 1215, 1215, 583: 1215, 585: 1215, 592: 6051, 1482: 6052}, - {701: 4906, 710: 4907, 923: 6050}, - {701: 4906, 710: 4907, 923: 6049}, - {701: 4906, 710: 4907, 923: 6048}, + {536: 6047}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 5278, 3068, 3069, 3067, 865: 6048}, + {9: 5279, 57: 6049}, + {1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 542: 1128, 544: 1128, 1128, 1128, 1128, 552: 1128, 554: 1128, 1128, 1128, 559: 1128, 1128, 562: 1128, 1128, 565: 1128, 567: 1128, 1128, 1128, 1128, 576: 1128, 1128, 1128, 1128, 1128, 1128, 585: 1128, 1128, 588: 1128, 590: 1128, 597: 1128, 613: 1128, 632: 1128, 661: 1128, 715: 1128, 728: 1128, 736: 1128}, + {2136, 2136, 9: 2136, 57: 2136, 535: 2136, 537: 2136, 544: 2136, 2136, 2136, 2136, 554: 2136, 2136, 2136, 559: 2136, 2136, 562: 2136, 2136, 565: 2136, 567: 2136, 2136, 2136, 2136, 576: 2136, 2136, 2136, 2136, 2136, 2136, 585: 2136, 2136, 588: 2136, 590: 2136, 597: 2136, 736: 4664, 1001: 6051, 1327: 6052}, // 3180 - {531: 1112, 558: 6038, 1373: 6039}, - {1102, 1102, 9: 1102, 57: 1102, 530: 1102, 532: 1102, 539: 1102, 1102, 1102, 1102, 549: 1102, 1102, 1102, 554: 1102, 556: 1102, 1102, 1102, 1102, 562: 1102, 1102, 1102, 1102, 571: 1102, 1102, 1102, 1102, 1102, 1102, 580: 1102, 1102, 583: 1102, 585: 1102, 592: 1102}, - {1099, 1099, 9: 1099, 57: 1099, 530: 1099, 532: 1099, 539: 1099, 1099, 1099, 1099, 549: 6032, 1099, 1099, 554: 1099, 556: 1099, 1099, 1099, 1099, 562: 1099, 1099, 1099, 6033, 571: 1099, 1099, 1099, 1099, 6031, 1099, 580: 1099, 1099, 583: 1099, 585: 1099, 592: 1099, 1051: 6037, 6034}, - {1101, 1101, 9: 1101, 57: 1101, 530: 1101, 532: 1101, 539: 1101, 1101, 1101, 1101, 549: 1101, 1101, 1101, 554: 1101, 556: 1101, 1101, 1101, 1101, 562: 1101, 1101, 1101, 1101, 571: 1101, 1101, 1101, 1101, 1101, 1101, 580: 1101, 1101, 583: 1101, 585: 1101, 592: 1101}, - {564: 6044, 571: 6045, 576: 6043}, + {2135, 2135, 9: 2135, 57: 2135, 535: 2135, 537: 2135, 544: 2135, 2135, 2135, 2135, 554: 2135, 2135, 2135, 559: 2135, 2135, 562: 2135, 2135, 565: 2135, 567: 2135, 2135, 2135, 2135, 576: 2135, 2135, 2135, 2135, 2135, 2135, 585: 2135, 2135, 588: 2135, 590: 2135, 597: 2135}, + {1108, 1108, 9: 1108, 57: 1108, 535: 1108, 537: 1108, 544: 1108, 1108, 1108, 1108, 554: 6055, 1108, 1108, 559: 1108, 1108, 562: 1108, 1108, 565: 1108, 567: 1108, 1108, 1108, 6056, 576: 1108, 1108, 1108, 1108, 6054, 1108, 585: 1108, 1108, 588: 1108, 590: 1108, 597: 1108, 1057: 6058, 6057, 1197: 6059, 6053}, + {1223, 1223, 9: 1223, 57: 1223, 535: 1223, 537: 1223, 544: 1223, 1223, 1223, 1223, 555: 1223, 1223, 559: 1223, 1223, 562: 1223, 1223, 565: 1223, 567: 1223, 1223, 1223, 576: 1223, 1223, 1223, 1223, 581: 1223, 585: 1223, 1223, 588: 1223, 590: 1223, 597: 6074, 1489: 6075}, + {706: 4929, 715: 4930, 929: 6073}, + {706: 4929, 715: 4930, 929: 6072}, // 3185 - {531: 6040}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 1107, 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 1107, 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 704: 5544, 770: 5543, 3051, 3052, 3050, 960: 6041}, - {9: 5546, 57: 6042}, - {1108, 1108, 9: 1108, 57: 1108, 530: 1108, 532: 1108, 539: 1108, 1108, 1108, 1108, 549: 1108, 1108, 1108, 554: 1108, 556: 1108, 1108, 1108, 1108, 562: 1108, 1108, 1108, 1108, 571: 1108, 1108, 1108, 1108, 1108, 1108, 580: 1108, 1108, 583: 1108, 585: 1108, 592: 1108}, - {531: 1111}, + {706: 4929, 715: 4930, 929: 6071}, + {536: 1120, 563: 6061, 1380: 6062}, + {1110, 1110, 9: 1110, 57: 1110, 535: 1110, 537: 1110, 544: 1110, 1110, 1110, 1110, 554: 1110, 1110, 1110, 559: 1110, 1110, 562: 1110, 1110, 565: 1110, 567: 1110, 1110, 1110, 1110, 576: 1110, 1110, 1110, 1110, 1110, 1110, 585: 1110, 1110, 588: 1110, 590: 1110, 597: 1110}, + {1107, 1107, 9: 1107, 57: 1107, 535: 1107, 537: 1107, 544: 1107, 1107, 1107, 1107, 554: 6055, 1107, 1107, 559: 1107, 1107, 562: 1107, 1107, 565: 1107, 567: 1107, 1107, 1107, 6056, 576: 1107, 1107, 1107, 1107, 6054, 1107, 585: 1107, 1107, 588: 1107, 590: 1107, 597: 1107, 1057: 6060, 6057}, + {1109, 1109, 9: 1109, 57: 1109, 535: 1109, 537: 1109, 544: 1109, 1109, 1109, 1109, 554: 1109, 1109, 1109, 559: 1109, 1109, 562: 1109, 1109, 565: 1109, 567: 1109, 1109, 1109, 1109, 576: 1109, 1109, 1109, 1109, 1109, 1109, 585: 1109, 1109, 588: 1109, 590: 1109, 597: 1109}, // 3190 - {723: 6047}, - {723: 6046}, - {531: 1109}, - {531: 1110}, - {531: 1113, 558: 1113}, + {569: 6067, 576: 6068, 581: 6066}, + {536: 6063}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 1115, 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 1115, 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 708: 5567, 777: 5566, 3068, 3069, 3067, 966: 6064}, + {9: 5569, 57: 6065}, + {1116, 1116, 9: 1116, 57: 1116, 535: 1116, 537: 1116, 544: 1116, 1116, 1116, 1116, 554: 1116, 1116, 1116, 559: 1116, 1116, 562: 1116, 1116, 565: 1116, 567: 1116, 1116, 1116, 1116, 576: 1116, 1116, 1116, 1116, 1116, 1116, 585: 1116, 1116, 588: 1116, 590: 1116, 597: 1116}, // 3195 - {531: 1114, 558: 1114}, - {531: 1115, 558: 1115}, - {108: 6056, 368: 6055, 444: 6054, 531: 1212, 1481: 6053}, - {1124, 1124, 9: 1124, 57: 1124, 530: 1124, 532: 1124, 539: 1124, 1124, 1124, 1124, 550: 1124, 1124, 554: 1124, 556: 1124, 1124, 1124, 1124, 562: 1124, 1124, 1124, 571: 1124, 1124, 1124, 1124, 576: 1124, 580: 1124, 1124, 583: 1124, 585: 1124}, - {531: 6057}, + {536: 1119}, + {728: 6070}, + {728: 6069}, + {536: 1117}, + {536: 1118}, // 3200 - {531: 1211}, - {531: 1210}, - {531: 1209}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 6059, 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 6058}, - {57: 1208, 419: 6067, 566: 3745, 3743, 3744, 3742, 3740, 588: 6066, 800: 3741, 3739, 1483: 6065}, + {536: 1121, 563: 1121}, + {536: 1122, 563: 1122}, + {536: 1123, 563: 1123}, + {108: 6079, 370: 6078, 448: 6077, 536: 1220, 1488: 6076}, + {1132, 1132, 9: 1132, 57: 1132, 535: 1132, 537: 1132, 544: 1132, 1132, 1132, 1132, 555: 1132, 1132, 559: 1132, 1132, 562: 1132, 1132, 565: 1132, 567: 1132, 1132, 1132, 576: 1132, 1132, 1132, 1132, 581: 1132, 585: 1132, 1132, 588: 1132, 590: 1132}, // 3205 - {1205, 1205, 9: 1205, 57: 1205, 271: 6061, 530: 1205, 532: 1205, 539: 1205, 1205, 1205, 1205, 550: 1205, 1205, 554: 1205, 556: 1205, 1205, 1205, 1205, 562: 1205, 1205, 1205, 571: 1205, 1205, 1205, 1205, 576: 1205, 580: 1205, 1205, 583: 1205, 585: 1205, 1253: 6060}, - {1213, 1213, 9: 1213, 57: 1213, 530: 1213, 532: 1213, 539: 1213, 1213, 1213, 1213, 550: 1213, 1213, 554: 1213, 556: 1213, 1213, 1213, 1213, 562: 1213, 1213, 1213, 571: 1213, 1213, 1213, 1213, 576: 1213, 580: 1213, 1213, 583: 1213, 585: 1213}, - {531: 6062}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 6063}, - {57: 6064, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, + {536: 6080}, + {536: 1219}, + {536: 1218}, + {536: 1217}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 6082, 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 6081}, // 3210 - {1204, 1204, 9: 1204, 57: 1204, 530: 1204, 532: 1204, 539: 1204, 1204, 1204, 1204, 550: 1204, 1204, 554: 1204, 556: 1204, 1204, 1204, 1204, 562: 1204, 1204, 1204, 571: 1204, 1204, 1204, 1204, 576: 1204, 580: 1204, 1204, 583: 1204, 585: 1204}, - {57: 6068}, - {57: 1207}, - {57: 1206}, - {1205, 1205, 9: 1205, 57: 1205, 271: 6061, 530: 1205, 532: 1205, 539: 1205, 1205, 1205, 1205, 550: 1205, 1205, 554: 1205, 556: 1205, 1205, 1205, 1205, 562: 1205, 1205, 1205, 571: 1205, 1205, 1205, 1205, 576: 1205, 580: 1205, 1205, 583: 1205, 585: 1205, 1253: 6069}, + {57: 1216, 422: 6090, 571: 3768, 3766, 3767, 3765, 3763, 593: 6089, 806: 3764, 3762, 1490: 6088}, + {1213, 1213, 9: 1213, 57: 1213, 271: 6084, 535: 1213, 537: 1213, 544: 1213, 1213, 1213, 1213, 555: 1213, 1213, 559: 1213, 1213, 562: 1213, 1213, 565: 1213, 567: 1213, 1213, 1213, 576: 1213, 1213, 1213, 1213, 581: 1213, 585: 1213, 1213, 588: 1213, 590: 1213, 1259: 6083}, + {1221, 1221, 9: 1221, 57: 1221, 535: 1221, 537: 1221, 544: 1221, 1221, 1221, 1221, 555: 1221, 1221, 559: 1221, 1221, 562: 1221, 1221, 565: 1221, 567: 1221, 1221, 1221, 576: 1221, 1221, 1221, 1221, 581: 1221, 585: 1221, 1221, 588: 1221, 590: 1221}, + {536: 6085}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 6086}, // 3215 - {1214, 1214, 9: 1214, 57: 1214, 530: 1214, 532: 1214, 539: 1214, 1214, 1214, 1214, 550: 1214, 1214, 554: 1214, 556: 1214, 1214, 1214, 1214, 562: 1214, 1214, 1214, 571: 1214, 1214, 1214, 1214, 576: 1214, 580: 1214, 1214, 583: 1214, 585: 1214}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 531: 5973, 770: 3927, 3051, 3052, 3050, 775: 5972, 804: 5971, 895: 5970, 899: 5969, 6071}, - {540: 5986, 5987, 573: 5985, 576: 5988, 580: 5984, 5989, 583: 5990, 585: 6072, 914: 5983, 919: 5982}, - {1127, 1127, 9: 1127, 57: 1127, 530: 1127, 532: 1127, 539: 1127, 542: 1127, 550: 1127, 1127, 554: 1127, 556: 1127, 1127, 1127, 1127, 562: 1127, 1127, 1127, 571: 1127, 1127, 574: 1127}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4024, 3051, 3052, 3050, 821: 6074, 996: 6075, 1027: 6076}, + {57: 6087, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {1212, 1212, 9: 1212, 57: 1212, 535: 1212, 537: 1212, 544: 1212, 1212, 1212, 1212, 555: 1212, 1212, 559: 1212, 1212, 562: 1212, 1212, 565: 1212, 567: 1212, 1212, 1212, 576: 1212, 1212, 1212, 1212, 581: 1212, 585: 1212, 1212, 588: 1212, 590: 1212}, + {57: 6091}, + {57: 1215}, + {57: 1214}, // 3220 - {555: 6085, 717: 6086, 892: 6084}, - {2631, 2631, 9: 2631, 542: 2631, 556: 2631, 563: 2631, 2631}, - {424, 424, 9: 6077, 542: 424, 556: 424, 563: 4661, 424, 889: 4662, 6078}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4024, 3051, 3052, 3050, 821: 6074, 996: 6083}, - {1499, 1499, 542: 1499, 556: 1499, 564: 3857, 842: 3911, 909: 6079}, + {1213, 1213, 9: 1213, 57: 1213, 271: 6084, 535: 1213, 537: 1213, 544: 1213, 1213, 1213, 1213, 555: 1213, 1213, 559: 1213, 1213, 562: 1213, 1213, 565: 1213, 567: 1213, 1213, 1213, 576: 1213, 1213, 1213, 1213, 581: 1213, 585: 1213, 1213, 588: 1213, 590: 1213, 1259: 6092}, + {1222, 1222, 9: 1222, 57: 1222, 535: 1222, 537: 1222, 544: 1222, 1222, 1222, 1222, 555: 1222, 1222, 559: 1222, 1222, 562: 1222, 1222, 565: 1222, 567: 1222, 1222, 1222, 576: 1222, 1222, 1222, 1222, 581: 1222, 585: 1222, 1222, 588: 1222, 590: 1222}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 536: 5996, 777: 3950, 3068, 3069, 3067, 5995, 810: 5994, 901: 5993, 905: 5992, 6094}, + {545: 6009, 6010, 578: 6008, 581: 6011, 585: 6007, 6012, 588: 6013, 590: 6095, 920: 6006, 925: 6005}, + {1135, 1135, 9: 1135, 57: 1135, 535: 1135, 537: 1135, 544: 1135, 547: 1135, 555: 1135, 1135, 559: 1135, 1135, 562: 1135, 1135, 565: 1135, 567: 1135, 1135, 1135, 576: 1135, 1135, 579: 1135}, // 3225 - {1082, 1082, 542: 1082, 556: 6080, 1201: 6081}, - {560: 3037, 642: 3868, 799: 3866, 816: 3867, 985: 6082}, - {428, 428, 542: 428}, - {1081, 1081, 542: 1081}, - {2630, 2630, 9: 2630, 542: 2630, 556: 2630, 563: 2630, 2630}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4047, 3068, 3069, 3067, 828: 6097, 1002: 6098, 1033: 6099}, + {561: 6108, 722: 6109, 898: 6107}, + {2645, 2645, 9: 2645, 547: 2645, 562: 2645, 568: 2645, 2645}, + {425, 425, 9: 6100, 547: 425, 562: 425, 568: 4684, 425, 895: 4685, 6101}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4047, 3068, 3069, 3067, 828: 6097, 1002: 6106}, // 3230 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3899, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3895, 893: 6087}, - {2: 975, 975, 975, 975, 975, 975, 975, 10: 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 58: 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 533: 975, 975, 975, 975, 540: 975, 975, 543: 975, 975, 975, 547: 975, 975, 552: 975, 975, 560: 975, 578: 975, 586: 975, 975, 614: 975, 617: 975, 628: 975, 975, 975, 975, 636: 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 697: 975, 975, 975, 975, 711: 975}, - {2: 974, 974, 974, 974, 974, 974, 974, 10: 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 58: 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 533: 974, 974, 974, 974, 540: 974, 974, 543: 974, 974, 974, 547: 974, 974, 552: 974, 974, 560: 974, 578: 974, 586: 974, 974, 614: 974, 617: 974, 628: 974, 974, 974, 974, 636: 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 697: 974, 974, 974, 974, 711: 974}, - {2632, 2632, 9: 2632, 542: 2632, 556: 2632, 563: 2632, 2632}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4024, 3051, 3052, 3050, 821: 6074, 996: 6075, 1027: 6089}, + {1508, 1508, 547: 1508, 562: 1508, 569: 3880, 848: 3934, 915: 6102}, + {1090, 1090, 547: 1090, 562: 6103, 1207: 6104}, + {564: 3054, 647: 3891, 805: 3889, 820: 3890, 991: 6105}, + {429, 429, 547: 429}, + {1089, 1089, 547: 1089}, // 3235 - {424, 424, 9: 6077, 542: 424, 563: 4661, 889: 4662, 6090}, - {427, 427, 542: 427}, - {2: 570, 570, 570, 570, 570, 570, 570, 10: 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 58: 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 6093}, - {569, 569}, + {2644, 2644, 9: 2644, 547: 2644, 562: 2644, 568: 2644, 2644}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3922, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3918, 899: 6110}, + {2: 983, 983, 983, 983, 983, 983, 983, 10: 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 58: 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 538: 983, 983, 983, 983, 545: 983, 983, 548: 983, 983, 983, 552: 983, 983, 557: 983, 983, 564: 983, 583: 983, 591: 983, 983, 624: 983, 631: 983, 633: 983, 983, 983, 983, 641: 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 663: 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 716: 983}, + {2: 982, 982, 982, 982, 982, 982, 982, 10: 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 58: 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 538: 982, 982, 982, 982, 545: 982, 982, 548: 982, 982, 982, 552: 982, 982, 557: 982, 982, 564: 982, 583: 982, 591: 982, 982, 624: 982, 631: 982, 633: 982, 982, 982, 982, 641: 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 663: 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 716: 982}, + {2646, 2646, 9: 2646, 547: 2646, 562: 2646, 568: 2646, 2646}, // 3240 - {23: 6106, 155: 768, 6099, 6096, 240: 6098, 246: 6109, 257: 6107, 275: 6100, 288: 6104, 309: 6108, 313: 6101, 586: 6105, 608: 6095, 1294: 6103, 1364: 6097, 1389: 6102}, - {2318, 2318, 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, 2318, 2318, 2318, 2318, 2318, 58: 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318, 532: 2318, 578: 2318}, - {2317, 2317, 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, 2317, 2317, 2317, 2317, 2317, 58: 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 532: 2317, 578: 2317}, - {778, 778}, - {775, 775}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4047, 3068, 3069, 3067, 828: 6097, 1002: 6098, 1033: 6112}, + {425, 425, 9: 6100, 547: 425, 568: 4684, 895: 4685, 6113}, + {428, 428, 547: 428}, + {2: 571, 571, 571, 571, 571, 571, 571, 10: 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 58: 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 6116}, // 3245 - {774, 774}, - {267: 6116}, - {772, 772}, - {155: 6115}, - {759, 759, 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 532: 759, 770: 3927, 3051, 3052, 3050, 804: 3928, 884: 4799, 1293: 6110}, + {570, 570}, + {23: 6129, 155: 6122, 769, 6119, 240: 6121, 246: 6132, 257: 6130, 275: 6123, 288: 6127, 309: 6131, 313: 6124, 591: 6128, 613: 6118, 1300: 6126, 1371: 6120, 1396: 6125}, + {2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 10: 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 58: 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 537: 2332, 583: 2332}, + {2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 10: 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 58: 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 537: 2331, 583: 2331}, + {779, 779}, // 3250 - {769, 769}, - {155: 767}, - {155: 766}, - {155: 765}, - {155: 764}, + {776, 776}, + {775, 775}, + {267: 6139}, + {773, 773}, + {156: 6138}, // 3255 - {155: 763}, - {755, 755, 532: 6112, 1509: 6111}, + {760, 760, 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 537: 760, 777: 3950, 3068, 3069, 3067, 810: 3951, 890: 4822, 1299: 6133}, {770, 770}, - {729: 6113}, - {562: 6114}, + {156: 768}, + {156: 767}, + {156: 766}, // 3260 - {754, 754}, + {156: 765}, + {156: 764}, + {756, 756, 537: 6135, 1516: 6134}, {771, 771}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6117, 3051, 3052, 3050, 1069: 6118}, - {777, 777, 9: 777}, - {773, 773, 9: 6119}, + {734: 6136}, // 3265 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6120, 3051, 3052, 3050}, - {776, 776, 9: 776}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 6232, 3305, 3203, 3057, 3420, 3084, 6233, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 6234, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 6235}, - {608: 6218, 710: 6219}, - {710: 6215}, + {567: 6137}, + {755, 755}, + {772, 772}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6140, 3068, 3069, 3067, 1075: 6141}, + {778, 778, 9: 778}, // 3270 - {608: 6210, 710: 6209}, - {608: 6207}, - {252: 6204}, - {252: 6201}, - {252: 6195}, + {774, 774, 9: 6142}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6143, 3068, 3069, 3067}, + {777, 777, 9: 777}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 6264, 3326, 3223, 3074, 3441, 3102, 6265, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 6263, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 6266, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 6267}, + {613: 6249, 715: 6250}, // 3275 - {180: 6192, 273: 6194, 390: 6190, 414: 6191, 1015: 6193}, - {253: 6187, 256: 6186}, - {608: 6145}, - {180: 6139, 206: 6141, 221: 787, 245: 6143, 316: 6142, 1469: 6140}, - {180: 6138}, + {715: 6246}, + {613: 6241, 715: 6240}, + {613: 6238}, + {252: 6235}, + {252: 6232}, // 3280 - {180: 6137}, - {447: 6136}, - {894, 894}, - {899, 899}, - {900, 900}, + {252: 6226}, + {180: 6223, 273: 6225, 392: 6221, 417: 6222, 1021: 6224}, + {253: 6218, 256: 6217}, + {613: 6176}, + {180: 6170, 208: 6172, 222: 788, 245: 6174, 316: 6173, 1476: 6171}, // 3285 - {901, 901}, - {221: 6144}, - {221: 786}, - {221: 785}, - {221: 784}, + {180: 6169}, + {180: 6168}, + {451: 6167}, + {369: 6160}, + {196: 6161}, // 3290 - {893, 893}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 6146}, - {743: 6147, 1035: 6148}, - {206: 6151, 216: 6150, 608: 2333, 1065: 6149}, - {902, 902}, + {327: 6165, 407: 6164, 437: 6163, 708: 6162, 1332: 6166}, + {931, 931}, + {930, 930}, + {929, 929}, + {928, 928}, // 3295 - {608: 6153}, - {157: 2332, 608: 2332}, - {216: 6152}, - {157: 2331, 608: 2331}, - {2: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 10: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 58: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 578: 5345, 883: 6154}, + {896, 896}, + {898, 898}, + {903, 903}, + {904, 904}, + {905, 905}, // 3300 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 6155}, - {619, 619, 6: 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, 530: 619, 6159, 619, 535: 619, 537: 619, 619, 619, 546: 619, 619, 549: 619, 552: 619, 619, 565: 619, 579: 6158, 608: 619, 695: 619, 709: 619, 619, 1384: 6157, 1478: 6156}, - {576, 576, 6: 4725, 4727, 580, 15: 4744, 2446, 4742, 4681, 4746, 4733, 4762, 4729, 4726, 4728, 4731, 4732, 4734, 4741, 580, 4752, 4753, 4763, 4739, 4740, 4745, 4747, 4759, 4758, 4767, 4760, 4757, 4750, 4755, 4756, 4749, 4751, 4754, 4743, 4764, 4765, 530: 576, 576, 576, 535: 4724, 537: 576, 2446, 4761, 546: 576, 576, 549: 576, 552: 576, 2446, 565: 5499, 608: 576, 695: 576, 709: 2446, 4730, 865: 4735, 891: 4737, 910: 4736, 931: 4738, 937: 4748, 941: 4766, 1020: 6174, 1141: 6173}, - {2449, 2449, 530: 6167, 1218: 6166}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 6165}, + {222: 6175}, + {222: 787}, + {222: 786}, + {222: 785}, + {897, 897}, // 3305 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 579: 6160, 701: 2685, 2685, 704: 2685, 2685, 5085, 710: 2685, 746: 2685, 2685, 770: 4024, 3051, 3052, 3050, 821: 4952, 928: 5331, 953: 5469, 1002: 5470, 1085: 5471, 1291: 6161}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 6163}, - {9: 5473, 57: 6162}, - {618, 618, 6: 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, 530: 618, 618, 618, 535: 618, 537: 618, 618, 618, 546: 618, 618, 549: 618, 552: 618, 618, 565: 618, 608: 618, 695: 618, 709: 618, 618}, - {57: 6164}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 6177}, + {748: 6178, 1041: 6179}, + {208: 6182, 217: 6181, 613: 2347, 1071: 6180}, + {906, 906}, + {613: 6184}, // 3310 - {2367, 2367, 530: 2367}, - {2368, 2368, 530: 2368}, - {2450, 2450}, - {85: 6168}, - {422: 6170, 803: 6169}, + {157: 2346, 613: 2346}, + {217: 6183}, + {157: 2345, 613: 2345}, + {2: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 10: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 58: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 583: 5368, 889: 6185}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 6186}, // 3315 - {588: 6172}, - {588: 6171}, - {2447, 2447}, - {2448, 2448}, - {2444, 2444, 530: 2444, 2444, 2444, 537: 2444, 546: 6176, 2444, 549: 2444, 552: 2444, 608: 2444, 695: 2444, 1233: 6175}, + {620, 620, 6: 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, 535: 620, 6190, 620, 540: 620, 542: 620, 620, 620, 551: 620, 620, 554: 620, 557: 620, 620, 570: 620, 584: 6189, 613: 620, 661: 620, 714: 620, 620, 1391: 6188, 1485: 6187}, + {577, 577, 6: 4748, 4750, 581, 15: 4767, 2460, 4765, 4704, 4769, 4756, 4785, 4752, 4749, 4751, 4754, 4755, 4757, 4764, 581, 4775, 4776, 4786, 4762, 4763, 4768, 4770, 4782, 4781, 4790, 4783, 4780, 4773, 4778, 4779, 4772, 4774, 4777, 4766, 4787, 4788, 535: 577, 577, 577, 540: 4747, 542: 577, 2460, 4784, 551: 577, 577, 554: 577, 557: 577, 2460, 570: 5522, 613: 577, 661: 577, 714: 2460, 4753, 871: 4758, 897: 4760, 916: 4759, 938: 4761, 944: 4771, 948: 4789, 1026: 6205, 1147: 6204}, + {2463, 2463, 535: 6198, 1224: 6197}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 6196}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 584: 6191, 706: 2702, 708: 2702, 2702, 2702, 5108, 715: 2702, 751: 2702, 2702, 777: 4047, 3068, 3069, 3067, 828: 4975, 935: 5354, 959: 5492, 1008: 5493, 1091: 5494, 1297: 6192}, // 3320 - {575, 575, 6: 4725, 4727, 580, 5501, 15: 4744, 2446, 4742, 4681, 4746, 4733, 4762, 4729, 4726, 4728, 4731, 4732, 4734, 4741, 580, 4752, 4753, 4763, 4739, 4740, 4745, 4747, 4759, 4758, 4767, 4760, 4757, 4750, 4755, 4756, 4749, 4751, 4754, 4743, 4764, 4765, 530: 575, 575, 575, 535: 4724, 537: 575, 2446, 4761, 546: 575, 575, 549: 575, 552: 575, 2446, 565: 5499, 608: 575, 695: 575, 709: 2446, 4730, 865: 4735, 891: 4737, 910: 4736, 931: 4738, 937: 4748, 941: 5500}, - {2382, 2382, 530: 2382, 2382, 2382, 537: 2382, 547: 2382, 549: 5778, 552: 5779, 608: 2382, 695: 2382, 1164: 6177}, - {723: 5557}, - {2379, 2379, 530: 2379, 2379, 2379, 537: 6179, 547: 2379, 608: 2379, 695: 2379, 1322: 6178}, - {2377, 2377, 530: 2377, 2907, 2906, 547: 2905, 608: 2904, 695: 2900, 775: 6184, 806: 6182, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 3846, 817: 6183, 6181, 1343: 6180}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 6194}, + {9: 5496, 57: 6193}, + {619, 619, 6: 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, 535: 619, 619, 619, 540: 619, 542: 619, 619, 619, 551: 619, 619, 554: 619, 557: 619, 619, 570: 619, 613: 619, 661: 619, 714: 619, 619}, + {57: 6195}, + {2381, 2381, 535: 2381}, // 3325 - {2378, 2378, 530: 2378, 2378, 2378, 547: 2378, 608: 2378, 695: 2378}, - {2449, 2449, 530: 6167, 1218: 6185}, - {2376, 2376, 530: 2376}, - {2375, 2375, 530: 2375, 539: 1014, 550: 1014, 1014}, - {2374, 2374, 530: 2374}, + {2382, 2382, 535: 2382}, + {2464, 2464}, + {85: 6199}, + {425: 6201, 809: 6200}, + {593: 6203}, // 3330 - {2373, 2373, 530: 2373, 539: 1013, 550: 1013, 1013, 554: 3859, 556: 3858, 564: 3857, 842: 3860, 3861}, - {2451, 2451}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6117, 3051, 3052, 3050, 1069: 6189}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6117, 3051, 3052, 3050, 1069: 6188}, - {904, 904, 9: 6119}, + {593: 6202}, + {2461, 2461}, + {2462, 2462}, + {2458, 2458, 535: 2458, 2458, 2458, 542: 2458, 551: 6207, 2458, 554: 2458, 557: 2458, 613: 2458, 661: 2458, 1239: 6206}, + {576, 576, 6: 4748, 4750, 581, 5524, 15: 4767, 2460, 4765, 4704, 4769, 4756, 4785, 4752, 4749, 4751, 4754, 4755, 4757, 4764, 581, 4775, 4776, 4786, 4762, 4763, 4768, 4770, 4782, 4781, 4790, 4783, 4780, 4773, 4778, 4779, 4772, 4774, 4777, 4766, 4787, 4788, 535: 576, 576, 576, 540: 4747, 542: 576, 2460, 4784, 551: 576, 576, 554: 576, 557: 576, 2460, 570: 5522, 613: 576, 661: 576, 714: 2460, 4753, 871: 4758, 897: 4760, 916: 4759, 938: 4761, 944: 4771, 948: 5523}, // 3335 - {905, 905, 9: 6119}, - {907, 907}, - {906, 906}, - {898, 898}, - {897, 897}, + {2396, 2396, 535: 2396, 2396, 2396, 542: 2396, 552: 2396, 554: 5801, 557: 5802, 613: 2396, 661: 2396, 1170: 6208}, + {728: 5580}, + {2393, 2393, 535: 2393, 2393, 2393, 542: 6210, 552: 2393, 613: 2393, 661: 2393, 1328: 6209}, + {2391, 2391, 535: 2391, 2924, 2923, 552: 2922, 613: 2921, 661: 2917, 781: 6215, 812: 6213, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 3869, 6214, 6212, 1350: 6211}, + {2392, 2392, 535: 2392, 2392, 2392, 552: 2392, 613: 2392, 661: 2392}, // 3340 - {896, 896}, - {219: 6196}, - {560: 3037, 799: 4538, 825: 6198, 1005: 6197}, - {911, 911, 9: 6199}, - {885, 885, 9: 885}, + {2463, 2463, 535: 6198, 1224: 6216}, + {2390, 2390, 535: 2390}, + {2389, 2389, 535: 2389, 544: 1022, 555: 1022, 1022}, + {2388, 2388, 535: 2388}, + {2387, 2387, 535: 2387, 544: 1021, 555: 1021, 1021, 559: 3882, 562: 3881, 569: 3880, 848: 3883, 3884}, // 3345 - {560: 3037, 799: 4538, 825: 6200}, - {884, 884, 9: 884}, - {219: 6202}, - {560: 3037, 799: 4538, 825: 6198, 1005: 6203}, - {912, 912, 9: 6199}, + {2465, 2465}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6140, 3068, 3069, 3067, 1075: 6220}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6140, 3068, 3069, 3067, 1075: 6219}, + {908, 908, 9: 6142}, + {909, 909, 9: 6142}, // 3350 - {219: 6205}, - {560: 3037, 799: 4538, 825: 6198, 1005: 6206}, - {913, 913, 9: 6199}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 3928, 884: 6208}, - {914, 914, 9: 3930}, + {911, 911}, + {910, 910}, + {902, 902}, + {901, 901}, + {900, 900}, // 3355 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 6213}, - {562: 6211}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 3928, 884: 6212}, - {903, 903, 9: 3930}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6214, 3051, 3052, 3050}, + {220: 6227}, + {564: 3054, 805: 4561, 833: 6229, 1011: 6228}, + {915, 915, 9: 6230}, + {887, 887, 9: 887}, + {564: 3054, 805: 4561, 833: 6231}, // 3360 - {916, 916}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 6216}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6217, 3051, 3052, 3050}, - {917, 917}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 3928, 884: 6231}, + {886, 886, 9: 886}, + {220: 6233}, + {564: 3054, 805: 4561, 833: 6229, 1011: 6234}, + {916, 916, 9: 6230}, + {220: 6236}, // 3365 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 6220}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6221, 3051, 3052, 3050}, - {918, 918, 531: 6224, 1185: 6223, 1369: 6222}, - {915, 915, 9: 6229}, - {888, 888, 9: 888}, + {564: 3054, 805: 4561, 833: 6229, 1011: 6237}, + {917, 917, 9: 6230}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 3951, 890: 6239}, + {918, 918, 9: 3953}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 6244}, // 3370 - {560: 3037, 799: 4538, 825: 6225}, - {9: 6226}, - {560: 3037, 799: 4538, 825: 6227}, - {57: 6228}, - {886, 886, 9: 886}, + {567: 6242}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 3951, 890: 6243}, + {907, 907, 9: 3953}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6245, 3068, 3069, 3067}, + {920, 920}, // 3375 - {531: 6224, 1185: 6230}, - {887, 887, 9: 887}, - {919, 919, 9: 3930}, - {211: 1893, 426: 6252, 450: 6253, 716: 1893, 1311: 6251}, - {923, 923, 178: 6238, 211: 1712, 219: 6237, 716: 1712}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 6247}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6248, 3068, 3069, 3067}, + {921, 921}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 3951, 890: 6262}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 6251}, // 3380 - {895, 895, 211: 1691, 716: 1691}, - {211: 6236}, - {920, 920}, - {424, 424, 560: 3037, 563: 4661, 799: 4538, 825: 6249, 889: 4662, 6248}, - {425: 6239}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6252, 3068, 3069, 3067}, + {922, 922, 536: 6255, 1191: 6254, 1376: 6253}, + {919, 919, 9: 6260}, + {890, 890, 9: 890}, + {564: 3054, 805: 4561, 833: 6256}, // 3385 - {556: 6240, 560: 3037, 799: 4538, 825: 6198, 1005: 6241, 1312: 6242}, - {560: 3037, 799: 3866, 816: 6243}, - {910, 910, 9: 6199}, - {909, 909}, - {926, 926, 9: 6244, 213: 6245}, + {9: 6257}, + {564: 3054, 805: 4561, 833: 6258}, + {57: 6259}, + {888, 888, 9: 888}, + {536: 6255, 1191: 6261}, // 3390 - {560: 3037, 799: 3866, 816: 6247}, - {560: 3037, 799: 3866, 816: 6246}, - {924, 924}, - {925, 925}, - {922, 922}, + {889, 889, 9: 889}, + {923, 923, 9: 3953}, + {193: 2085, 196: 6292, 720: 2085}, + {193: 1904, 429: 6284, 454: 6285, 720: 1904, 1317: 6283}, + {927, 927, 178: 6270, 193: 1722, 220: 6269, 720: 1722}, // 3395 - {424, 424, 563: 4661, 889: 4662, 6250}, - {921, 921}, - {908, 908}, - {560: 3037, 799: 6259}, - {399: 6255, 560: 3037, 715: 6256, 799: 6254}, + {899, 899, 193: 1701, 720: 1701}, + {193: 6268}, + {924, 924}, + {425, 425, 564: 3054, 568: 4684, 805: 4561, 833: 6281, 895: 4685, 6280}, + {428: 6271}, // 3400 - {891, 891}, - {560: 3037, 799: 6258}, - {560: 3037, 799: 6257}, - {889, 889}, - {890, 890}, + {562: 6272, 564: 3054, 805: 4561, 833: 6229, 1011: 6273, 1318: 6274}, + {564: 3054, 805: 3889, 820: 6275}, + {914, 914, 9: 6230}, + {913, 913}, + {934, 934, 9: 6276, 214: 6277}, // 3405 - {892, 892}, - {2: 446, 446, 446, 446, 446, 446, 446, 10: 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, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 58: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 533: 446, 535: 446, 555: 2060, 586: 446, 716: 2060, 2060}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 6415, 555: 2058, 716: 2058, 2058, 770: 6414, 3051, 3052, 3050}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 6412, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 555: 2021, 716: 2021, 2021, 770: 6274, 3051, 3052, 3050, 926: 6315}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 555: 2015, 716: 2015, 2015, 770: 6274, 3051, 3052, 3050, 926: 6409}, + {564: 3054, 805: 3889, 820: 6279}, + {564: 3054, 805: 3889, 820: 6278}, + {932, 932}, + {933, 933}, + {926, 926}, // 3410 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 535: 6405, 555: 2013, 586: 4354, 716: 2013, 2013, 770: 3737, 3051, 3052, 3050, 805: 4353, 905: 6404}, - {555: 6085, 558: 6394, 716: 2008, 2008, 892: 6393}, - {555: 2000, 571: 6391, 716: 2000, 2000}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 6295, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 6296, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 6300, 535: 6388, 555: 1998, 715: 6386, 1998, 1998, 770: 3737, 3051, 3052, 3050, 805: 5807, 898: 6302, 917: 6303, 6301, 966: 6299, 1269: 6387, 1451: 6385}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 6383, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 555: 1995, 716: 1995, 1995, 770: 6274, 3051, 3052, 3050, 926: 6312}, + {425, 425, 568: 4684, 895: 4685, 6282}, + {925, 925}, + {912, 912}, + {564: 3054, 805: 6291}, + {401: 6287, 564: 3054, 721: 6288, 805: 6286}, // 3415 - {233: 6368, 555: 1977, 716: 1977, 1977, 729: 6369, 1023: 6367, 1087: 6366}, - {383: 6320, 385: 6319, 555: 1921, 716: 1921, 1921, 1327: 6321}, - {533: 6318, 555: 1701, 716: 1701, 1701}, - {1006, 1006, 9: 6308}, - {224: 6294}, + {893, 893}, + {564: 3054, 805: 6290}, + {564: 3054, 805: 6289}, + {891, 891}, + {892, 892}, // 3420 - {555: 973, 716: 6292, 973}, - {555: 6085, 717: 6086, 892: 6290}, - {555: 6085, 717: 6086, 892: 6285}, - {555: 6085, 717: 6086, 892: 6283}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 535: 6282, 586: 4354, 770: 3737, 3051, 3052, 3050, 805: 4353, 905: 6281, 1331: 6280}, + {894, 894}, + {895, 895}, + {2: 447, 447, 447, 447, 447, 447, 447, 10: 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, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 58: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 538: 447, 540: 447, 561: 2073, 591: 447, 720: 2073, 722: 2073}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 6448, 561: 2071, 720: 2071, 722: 2071, 777: 6447, 3068, 3069, 3067}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 6445, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 561: 2034, 720: 2034, 722: 2034, 777: 6307, 3068, 3069, 3067, 932: 6348}, // 3425 - {951, 951, 9: 951}, - {958, 958, 9: 958}, - {957, 957, 9: 957}, - {956, 956, 9: 956}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 6284}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 561: 2028, 720: 2028, 722: 2028, 777: 6307, 3068, 3069, 3067, 932: 6442}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 540: 6438, 561: 2025, 591: 4377, 720: 2025, 722: 2025, 777: 3760, 3068, 3069, 3067, 811: 4376, 911: 6437}, + {561: 6108, 563: 6427, 720: 2020, 722: 2020, 898: 6426}, + {561: 2012, 576: 6424, 720: 2012, 722: 2012}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 6328, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 6329, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 6333, 540: 6421, 561: 2010, 720: 2010, 6419, 2010, 777: 3760, 3068, 3069, 3067, 811: 5830, 904: 6335, 923: 6336, 6334, 972: 6332, 1275: 6420, 1458: 6418}, // 3430 - {963, 963, 9: 963, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 6287, 3604, 533: 3586, 3602, 3899, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 6286, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3895, 893: 6288, 939: 6289}, - {977, 977, 3297, 3451, 3261, 3138, 3177, 3299, 3064, 977, 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3616, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 4450, 3597, 3679, 3596, 3593}, - {978, 978, 9: 978}, - {976, 976, 9: 976}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 6416, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 561: 2007, 720: 2007, 722: 2007, 777: 6307, 3068, 3069, 3067, 932: 6345}, + {233: 6401, 561: 1989, 720: 1989, 722: 1989, 734: 6402, 1029: 6400, 1093: 6399}, + {385: 6353, 387: 6352, 561: 1932, 720: 1932, 722: 1932, 1334: 6354}, + {538: 6351, 561: 1711, 720: 1711, 722: 1711}, + {1014, 1014, 9: 6341}, // 3435 - {964, 964, 9: 964}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 6287, 3604, 533: 3586, 3602, 3899, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 6286, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3895, 893: 6288, 939: 6291}, - {968, 968, 9: 968}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6293, 3051, 3052, 3050}, - {555: 972, 717: 972}, + {196: 6327}, + {561: 981, 720: 6325, 722: 981}, + {561: 6108, 722: 6109, 898: 6323}, + {561: 6108, 722: 6109, 898: 6318}, + {561: 6108, 722: 6109, 898: 6316}, // 3440 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 6295, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 6296, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 6300, 715: 6298, 770: 3737, 3051, 3052, 3050, 805: 5807, 898: 6302, 917: 6303, 6301, 966: 6299, 1269: 6297}, - {935, 935, 9: 935, 628: 2090, 712: 935, 726: 2090}, - {994, 994, 628: 1916, 712: 994, 726: 1916}, - {712: 6306}, - {712: 993}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 540: 6315, 591: 4377, 777: 3760, 3068, 3069, 3067, 811: 4376, 911: 6314, 1338: 6313}, + {959, 959, 9: 959}, + {966, 966, 9: 966}, + {965, 965, 9: 965}, + {964, 964, 9: 964}, // 3445 - {992, 992, 9: 6304, 712: 992}, - {936, 936, 9: 936, 628: 435, 712: 936, 726: 435}, - {930, 930, 9: 930, 712: 930}, - {929, 929, 9: 929, 712: 929}, - {928, 928, 9: 928, 712: 928}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 6317}, + {971, 971, 9: 971, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 6320, 3626, 538: 3608, 3624, 3922, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 6319, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3918, 899: 6321, 946: 6322}, + {985, 985, 3317, 3472, 3281, 3157, 3197, 3319, 3081, 985, 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3638, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 4473, 3619, 3701, 3618, 3615}, + {986, 986, 9: 986}, // 3450 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 6295, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 6300, 770: 3737, 3051, 3052, 3050, 805: 5807, 898: 6302, 917: 6305, 6301}, - {927, 927, 9: 927, 712: 927}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 631: 5853, 770: 3737, 3051, 3052, 3050, 805: 5852, 855: 5854, 970: 6307}, - {995, 995, 9: 5856}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 6260, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 6263, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 6309, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 6310, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 6264, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 553: 4419, 628: 6277, 652: 6276, 709: 4417, 770: 6274, 3051, 3052, 3050, 853: 6278, 926: 6275, 1096: 6311}, + {984, 984, 9: 984}, + {972, 972, 9: 972}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 6320, 3626, 538: 3608, 3624, 3922, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 6319, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3918, 899: 6321, 946: 6324}, + {976, 976, 9: 976}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6326, 3068, 3069, 3067}, // 3455 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 555: 2021, 716: 2021, 2021, 770: 6274, 3051, 3052, 3050, 926: 6315}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 555: 1995, 716: 1995, 1995, 770: 6274, 3051, 3052, 3050, 926: 6312}, - {950, 950, 9: 950}, - {555: 6085, 717: 6086, 892: 6313}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 6287, 3604, 533: 3586, 3602, 3899, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 6286, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3895, 893: 6288, 939: 6314}, + {561: 980, 722: 980}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 6328, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 6329, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 6333, 721: 6331, 777: 3760, 3068, 3069, 3067, 811: 5830, 904: 6335, 923: 6336, 6334, 972: 6332, 1275: 6330}, + {943, 943, 9: 943, 633: 2104, 717: 943, 731: 2104}, + {1002, 1002, 633: 1927, 717: 1002, 731: 1927}, + {717: 6339}, // 3460 - {966, 966, 9: 966}, - {555: 6085, 717: 6086, 892: 6316}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 6287, 3604, 533: 3586, 3602, 3899, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 6286, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3895, 893: 6288, 939: 6317}, - {967, 967, 9: 967}, - {998, 998}, + {717: 1001}, + {1000, 1000, 9: 6337, 717: 1000}, + {944, 944, 9: 944, 633: 436, 717: 944, 731: 436}, + {938, 938, 9: 938, 717: 938}, + {937, 937, 9: 937, 717: 937}, // 3465 - {558: 2488}, - {558: 2487}, - {558: 6322}, - {531: 2907, 2906, 547: 2905, 552: 2891, 587: 2890, 608: 2904, 695: 2900, 6334, 714: 3019, 775: 6325, 803: 6323, 806: 6326, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 6324, 817: 6328, 6327, 822: 3018, 6330, 6331, 826: 6332, 6329, 944: 6333}, - {2: 1052, 1052, 1052, 1052, 1052, 1052, 1052, 10: 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 58: 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 549: 1052, 561: 1052, 836: 1052, 1052, 1052, 840: 5956, 969: 5957, 1019: 6339}, + {936, 936, 9: 936, 717: 936}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 6328, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 6333, 777: 3760, 3068, 3069, 3067, 811: 5830, 904: 6335, 923: 6338, 6334}, + {935, 935, 9: 935, 717: 935}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 636: 5876, 777: 3760, 3068, 3069, 3067, 811: 5875, 861: 5877, 976: 6340}, + {1003, 1003, 9: 5879}, // 3470 - {531: 2907, 547: 2905, 608: 2904, 695: 2900, 714: 3019, 775: 3854, 806: 3853, 2901, 2902, 2903, 2912, 2910, 3855, 3856, 822: 5705}, - {350, 350, 539: 1013, 542: 350, 550: 1013, 1013, 554: 3859, 556: 3858, 564: 3857, 842: 3860, 3861}, - {352, 352, 539: 1014, 542: 352, 550: 1014, 1014}, - {353, 353, 542: 353}, - {351, 351, 542: 351}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 6293, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 6296, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 6342, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 6343, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 6297, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 558: 4442, 633: 6310, 657: 6309, 714: 4440, 777: 6307, 3068, 3069, 3067, 859: 6311, 932: 6308, 1102: 6344}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 561: 2034, 720: 2034, 722: 2034, 777: 6307, 3068, 3069, 3067, 932: 6348}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 561: 2007, 720: 2007, 722: 2007, 777: 6307, 3068, 3069, 3067, 932: 6345}, + {958, 958, 9: 958}, + {561: 6108, 722: 6109, 898: 6346}, // 3475 - {349, 349, 542: 349}, - {348, 348, 542: 348}, - {347, 347, 542: 347}, - {346, 346, 542: 346}, - {340, 340, 542: 6337}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 6320, 3626, 538: 3608, 3624, 3922, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 6319, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3918, 899: 6321, 946: 6347}, + {974, 974, 9: 974}, + {561: 6108, 722: 6109, 898: 6349}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 6320, 3626, 538: 3608, 3624, 3922, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 6319, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3918, 899: 6321, 946: 6350}, + {975, 975, 9: 975}, // 3480 - {218: 6335}, - {533: 6336}, - {338, 338}, - {531: 2907, 2906, 547: 2905, 552: 2891, 587: 2890, 608: 2904, 695: 2900, 714: 3019, 775: 6325, 803: 6323, 806: 6326, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 6324, 817: 6328, 6327, 822: 3018, 6330, 6331, 826: 6332, 6329, 944: 6338}, - {339, 339}, + {1006, 1006}, + {563: 2502}, + {563: 2501}, + {563: 6355}, + {536: 2924, 2923, 552: 2922, 557: 2908, 592: 2907, 613: 2921, 661: 2917, 6367, 719: 3036, 781: 6358, 809: 6356, 812: 6359, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 6357, 6361, 6360, 827: 3035, 829: 6363, 6364, 6365, 6362, 934: 6366}, // 3485 - {2: 1256, 1256, 1256, 1256, 1256, 1256, 1256, 10: 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 58: 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 549: 1256, 561: 1256, 836: 5961, 5960, 5959, 934: 5962, 990: 6340}, - {2: 1244, 1244, 1244, 1244, 1244, 1244, 1244, 10: 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 58: 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 6342, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 549: 1244, 561: 1244, 1247: 6341}, - {2: 2115, 2115, 2115, 2115, 2115, 2115, 2115, 10: 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 58: 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 549: 4675, 561: 2115, 958: 6343}, - {2: 1243, 1243, 1243, 1243, 1243, 1243, 1243, 10: 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 58: 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 549: 1243, 561: 1243}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 561: 6344, 770: 6346, 3051, 3052, 3050, 1018: 6347, 1084: 6345}, + {2: 1060, 1060, 1060, 1060, 1060, 1060, 1060, 10: 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 58: 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 554: 1060, 566: 1060, 842: 1060, 1060, 1060, 846: 5979, 975: 5980, 1025: 6372}, + {536: 2924, 552: 2922, 613: 2921, 661: 2917, 719: 3036, 781: 3877, 812: 3876, 2918, 2919, 2920, 2929, 2927, 3878, 3879, 827: 5728}, + {351, 351, 544: 1021, 547: 351, 555: 1021, 1021, 559: 3882, 562: 3881, 569: 3880, 848: 3883, 3884}, + {353, 353, 544: 1022, 547: 353, 555: 1022, 1022}, + {354, 354, 547: 354}, // 3490 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 6359}, - {9: 6355, 561: 6354}, - {9: 1246, 542: 1246, 561: 1246, 716: 6349, 1008: 6348}, - {9: 1248, 542: 1248, 561: 1248}, - {9: 1250, 542: 1250, 561: 1250}, + {352, 352, 547: 352}, + {350, 350, 547: 350}, + {349, 349, 547: 349}, + {348, 348, 547: 348}, + {347, 347, 547: 347}, // 3495 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 584: 6351, 770: 6350, 3051, 3052, 3050}, - {9: 1246, 542: 1246, 561: 1246, 716: 6353, 1008: 6352}, - {9: 1245, 542: 1245, 561: 1245}, - {9: 1249, 542: 1249, 561: 1249}, - {584: 6351}, + {340, 340, 547: 6370}, + {219: 6368}, + {538: 6369}, + {338, 338}, + {536: 2924, 2923, 552: 2922, 557: 2908, 592: 2907, 613: 2921, 661: 2917, 719: 3036, 781: 6358, 809: 6356, 812: 6359, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 6357, 6361, 6360, 827: 3035, 829: 6363, 6364, 6365, 6362, 934: 6371}, // 3500 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 531: 5973, 643: 5968, 770: 3927, 3051, 3052, 3050, 775: 5972, 804: 5971, 895: 5970, 899: 5969, 5975, 955: 5965, 993: 6357}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6346, 3051, 3052, 3050, 1018: 6356}, - {9: 1247, 542: 1247, 561: 1247}, - {424, 424, 9: 6019, 542: 424, 563: 4661, 889: 4662, 6358}, - {2344, 2344, 542: 2344}, + {339, 339}, + {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, 1264, 1264, 1264, 1264, 1264, 58: 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 554: 1264, 566: 1264, 842: 5984, 5983, 5982, 941: 5985, 996: 6373}, + {2: 1252, 1252, 1252, 1252, 1252, 1252, 1252, 10: 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 58: 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 6375, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 554: 1252, 566: 1252, 1253: 6374}, + {2: 2129, 2129, 2129, 2129, 2129, 2129, 2129, 10: 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 58: 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 554: 4698, 566: 2129, 964: 6376}, + {2: 1251, 1251, 1251, 1251, 1251, 1251, 1251, 10: 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 58: 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 554: 1251, 566: 1251}, // 3505 - {1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 10: 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 58: 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 537: 1121, 542: 1121, 546: 6023, 549: 1121, 556: 1121, 563: 1121, 1121, 1121, 575: 1121, 963: 6360}, - {1119, 1119, 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 537: 5980, 542: 1119, 549: 1119, 556: 1119, 563: 1119, 1119, 1119, 575: 1119, 770: 5979, 3051, 3052, 3050, 1016: 5978, 6361}, - {1100, 1100, 542: 1100, 549: 6032, 556: 1100, 563: 1100, 1100, 6033, 575: 6031, 1051: 6035, 6034, 1191: 6036, 6362}, - {424, 424, 542: 424, 556: 424, 563: 4661, 424, 889: 4662, 6363}, - {1499, 1499, 542: 1499, 556: 1499, 564: 3857, 842: 3911, 909: 6364}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 566: 6377, 777: 6379, 3068, 3069, 3067, 1024: 6380, 1090: 6378}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 6392}, + {9: 6388, 566: 6387}, + {9: 1254, 547: 1254, 566: 1254, 720: 6382, 1014: 6381}, + {9: 1256, 547: 1256, 566: 1256}, // 3510 - {1082, 1082, 542: 1082, 556: 6080, 1201: 6365}, - {2345, 2345, 542: 2345}, - {1001, 1001, 9: 6381}, - {988, 988, 9: 988}, - {403: 6373}, + {9: 1258, 547: 1258, 566: 1258}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 589: 6384, 777: 6383, 3068, 3069, 3067}, + {9: 1254, 547: 1254, 566: 1254, 720: 6386, 1014: 6385}, + {9: 1253, 547: 1253, 566: 1253}, + {9: 1257, 547: 1257, 566: 1257}, // 3515 - {194: 6371, 768: 6370}, - {985, 985, 9: 985}, - {984, 984, 9: 984, 731: 4641, 995: 6372}, - {983, 983, 9: 983}, - {271: 6375, 435: 6377, 729: 6376, 1380: 6374}, + {589: 6384}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 536: 5996, 648: 5991, 777: 3950, 3068, 3069, 3067, 5995, 810: 5994, 901: 5993, 905: 5992, 5998, 961: 5988, 999: 6390}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6379, 3068, 3069, 3067, 1024: 6389}, + {9: 1255, 547: 1255, 566: 1255}, + {425, 425, 9: 6042, 547: 425, 568: 4684, 895: 4685, 6391}, // 3520 - {986, 986, 9: 986}, - {729: 6380}, - {378: 6378, 455: 6379}, - {979, 979, 9: 979}, - {981, 981, 9: 981}, + {2358, 2358, 547: 2358}, + {1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 10: 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 58: 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 542: 1129, 547: 1129, 551: 6046, 554: 1129, 562: 1129, 568: 1129, 1129, 1129, 580: 1129, 969: 6393}, + {1127, 1127, 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 542: 6003, 547: 1127, 554: 1127, 562: 1127, 568: 1127, 1127, 1127, 580: 1127, 777: 6002, 3068, 3069, 3067, 1022: 6001, 6394}, + {1108, 1108, 547: 1108, 554: 6055, 562: 1108, 568: 1108, 1108, 6056, 580: 6054, 1057: 6058, 6057, 1197: 6059, 6395}, + {425, 425, 547: 425, 562: 425, 568: 4684, 425, 895: 4685, 6396}, // 3525 - {980, 980, 9: 980}, - {982, 982, 9: 982}, - {233: 6368, 729: 6369, 1023: 6382}, - {987, 987, 9: 987}, - {233: 6368, 555: 1977, 716: 1977, 1977, 729: 6369, 1023: 6367, 1087: 6384}, + {1508, 1508, 547: 1508, 562: 1508, 569: 3880, 848: 3934, 915: 6397}, + {1090, 1090, 547: 1090, 562: 6103, 1207: 6398}, + {2359, 2359, 547: 2359}, + {1009, 1009, 9: 6414}, + {996, 996, 9: 996}, // 3530 - {1002, 1002, 9: 6381}, - {996, 996}, - {993, 993, 550: 6389}, - {990, 990}, - {989, 989}, + {405: 6406}, + {195: 6404, 774: 6403}, + {993, 993, 9: 993}, + {992, 992, 9: 992, 736: 4664, 1001: 6405}, + {991, 991, 9: 991}, // 3535 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 6295, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 6300, 770: 3737, 3051, 3052, 3050, 805: 5807, 898: 6302, 917: 6303, 6301, 966: 6390}, - {991, 991, 9: 6304}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 535: 4596, 770: 4595, 3051, 3052, 3050, 936: 6392}, - {997, 997}, - {15: 6399, 533: 6398, 1234: 6403}, + {271: 6408, 439: 6410, 734: 6409, 1387: 6407}, + {994, 994, 9: 994}, + {734: 6413}, + {380: 6411, 459: 6412}, + {987, 987, 9: 987}, // 3540 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 631: 5853, 770: 3737, 3051, 3052, 3050, 805: 5852, 855: 6395}, - {555: 6085, 717: 6086, 892: 6396}, - {15: 6399, 533: 6398, 1234: 6397}, - {1004, 1004}, - {939, 939}, + {989, 989, 9: 989}, + {988, 988, 9: 988}, + {990, 990, 9: 990}, + {233: 6401, 734: 6402, 1029: 6415}, + {995, 995, 9: 995}, // 3545 - {531: 6400}, - {533: 5886, 997: 6401}, - {57: 6402}, - {938, 938}, - {1005, 1005}, + {233: 6401, 561: 1989, 720: 1989, 722: 1989, 734: 6402, 1029: 6400, 1093: 6417}, + {1010, 1010, 9: 6414}, + {1004, 1004}, + {1001, 1001, 555: 6422}, + {998, 998}, // 3550 - {962, 962, 9: 962, 538: 6406}, - {959, 959, 9: 959}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 535: 6407, 770: 3737, 3051, 3052, 3050, 805: 6408}, - {961, 961, 9: 961}, - {960, 960, 9: 960}, + {997, 997}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 6328, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 6333, 777: 3760, 3068, 3069, 3067, 811: 5830, 904: 6335, 923: 6336, 6334, 972: 6423}, + {999, 999, 9: 6337}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 540: 4619, 777: 4618, 3068, 3069, 3067, 943: 6425}, + {1005, 1005}, // 3555 - {555: 6085, 717: 6086, 892: 6410}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 6287, 3604, 533: 3586, 3602, 3899, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 6286, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3895, 893: 6288, 939: 6411}, - {965, 965, 9: 965}, - {233: 6368, 555: 1977, 716: 1977, 1977, 729: 6369, 1023: 6367, 1087: 6413}, - {1003, 1003, 9: 6381}, + {15: 6432, 538: 6431, 1240: 6436}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 636: 5876, 777: 3760, 3068, 3069, 3067, 811: 5875, 861: 6428}, + {561: 6108, 722: 6109, 898: 6429}, + {15: 6432, 538: 6431, 1240: 6430}, + {1012, 1012}, // 3560 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6417, 3051, 3052, 3050, 1001: 6424}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6417, 3051, 3052, 3050, 1001: 6416}, - {555: 6085, 717: 6086, 892: 6422}, - {544: 6419, 555: 971, 716: 6418, 971}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6417, 3051, 3052, 3050, 1001: 6421}, + {947, 947}, + {536: 6433}, + {538: 5909, 1003: 6434}, + {57: 6435}, + {946, 946}, // 3565 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6417, 3051, 3052, 3050, 1001: 6420}, - {555: 969, 717: 969}, - {555: 970, 717: 970}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 6287, 3604, 533: 3586, 3602, 3899, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 6286, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3895, 893: 6288, 939: 6423}, - {999, 999}, + {1013, 1013}, + {970, 970, 9: 970, 543: 6439}, + {967, 967, 9: 967}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 540: 6440, 777: 3760, 3068, 3069, 3067, 811: 6441}, + {969, 969, 9: 969}, // 3570 - {555: 6085, 717: 6086, 892: 6425}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 6287, 3604, 533: 3586, 3602, 3899, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 6286, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3895, 893: 6288, 939: 6426}, - {1000, 1000}, - {712: 6436}, - {712: 6429}, + {968, 968, 9: 968}, + {561: 6108, 722: 6109, 898: 6443}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 6320, 3626, 538: 3608, 3624, 3922, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 6319, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3918, 899: 6321, 946: 6444}, + {973, 973, 9: 973}, + {233: 6401, 561: 1989, 720: 1989, 722: 1989, 734: 6402, 1029: 6400, 1093: 6446}, // 3575 - {326: 6430}, - {555: 6431}, - {533: 6432}, - {558: 6433}, - {325: 6434}, + {1011, 1011, 9: 6414}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6450, 3068, 3069, 3067, 1007: 6457}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6450, 3068, 3069, 3067, 1007: 6449}, + {561: 6108, 722: 6109, 898: 6455}, + {549: 6452, 561: 979, 720: 6451, 722: 979}, // 3580 - {533: 6435}, - {1007, 1007}, - {326: 6437}, - {555: 6438}, - {533: 6439}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6450, 3068, 3069, 3067, 1007: 6454}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6450, 3068, 3069, 3067, 1007: 6453}, + {561: 977, 722: 977}, + {561: 978, 722: 978}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 6320, 3626, 538: 3608, 3624, 3922, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 6319, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3918, 899: 6321, 946: 6456}, // 3585 - {558: 6440}, - {325: 6441}, - {533: 6442}, + {1007, 1007}, + {561: 6108, 722: 6109, 898: 6458}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 6320, 3626, 538: 3608, 3624, 3922, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 6319, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3918, 899: 6321, 946: 6459}, {1008, 1008}, - {531: 2907, 547: 2905, 608: 2904, 695: 2900, 775: 6454, 806: 6453, 2901, 2902, 2903, 6455}, + {717: 6469}, // 3590 - {531: 1439, 547: 1439, 608: 1439, 695: 1439, 715: 4174, 829: 4172, 4173, 885: 6447, 887: 6448, 1039: 6450, 1081: 6452}, - {531: 1439, 547: 1439, 608: 1439, 695: 1439, 715: 4174, 829: 4172, 4173, 885: 6447, 887: 6448, 1039: 6450, 1081: 6451}, - {531: 1439, 547: 1439, 608: 1439, 695: 1439, 715: 4174, 829: 4172, 4173, 885: 6447, 887: 6448, 1039: 6450, 1081: 6449}, - {2: 1442, 1442, 1442, 1442, 1442, 1442, 1442, 10: 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 58: 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 531: 1442, 533: 1442, 1442, 1442, 1442, 540: 1442, 1442, 543: 1442, 1442, 1442, 547: 1442, 1442, 552: 1442, 1442, 560: 1442, 573: 1442, 578: 1442, 584: 1442, 586: 1442, 1442, 608: 1442, 614: 1442, 617: 1442, 628: 1442, 1442, 1442, 1442, 636: 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 697: 1442, 1442, 1442, 1442, 711: 1442, 715: 1442, 829: 1442, 1442, 836: 1442, 1442, 1442, 840: 1442, 849: 1442, 1442, 1442}, - {531: 1438, 547: 1438, 608: 1438, 695: 1438}, + {717: 6462}, + {326: 6463}, + {561: 6464}, + {538: 6465}, + {563: 6466}, // 3595 - {531: 1010, 547: 1010, 608: 1010, 695: 1010}, - {531: 1009, 547: 1009, 608: 1009, 695: 1009}, - {531: 1011, 547: 1011, 608: 1011, 695: 1011}, - {531: 1012, 547: 1012, 608: 1012, 695: 1012}, - {1024, 1024, 57: 1024, 530: 1024, 532: 1024, 539: 1014, 542: 1024, 550: 1014, 1014}, + {325: 6467}, + {538: 6468}, + {1015, 1015}, + {326: 6470}, + {561: 6471}, // 3600 - {1023, 1023, 57: 1023, 530: 1023, 532: 1023, 539: 1013, 542: 1023, 550: 1013, 1013, 554: 3859, 556: 3858, 564: 3857, 842: 6456, 6457}, - {539: 1015, 550: 1015, 1015}, - {1022, 1022, 57: 1022, 530: 1022, 532: 1022, 542: 1022, 554: 3859, 556: 3858, 843: 6458}, - {1021, 1021, 57: 1021, 530: 1021, 532: 1021, 542: 1021}, - {1020, 1020, 57: 1020, 530: 1020, 532: 1020, 542: 1020}, + {538: 6472}, + {563: 6473}, + {325: 6474}, + {538: 6475}, + {1016, 1016}, // 3605 - {57: 3989, 539: 1013, 550: 1013, 1013, 554: 3859, 556: 3858, 564: 3857, 842: 3860, 3861}, - {9: 6474, 531: 1196, 547: 1196, 608: 1196, 695: 1196, 714: 1196, 803: 1196}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6463, 3051, 3052, 3050, 1034: 6462, 1308: 6473}, - {9: 1193, 531: 1193, 547: 1193, 608: 1193, 695: 1193, 714: 1193, 803: 1193}, - {531: 6464, 537: 2606, 1370: 6465}, + {536: 2924, 552: 2922, 613: 2921, 661: 2917, 781: 6487, 812: 6486, 2918, 2919, 2920, 6488}, + {536: 1448, 552: 1448, 613: 1448, 661: 1448, 721: 4197, 835: 4195, 4196, 891: 6480, 893: 6481, 1045: 6483, 1087: 6485}, + {536: 1448, 552: 1448, 613: 1448, 661: 1448, 721: 4197, 835: 4195, 4196, 891: 6480, 893: 6481, 1045: 6483, 1087: 6484}, + {536: 1448, 552: 1448, 613: 1448, 661: 1448, 721: 4197, 835: 4195, 4196, 891: 6480, 893: 6481, 1045: 6483, 1087: 6482}, + {2: 1451, 1451, 1451, 1451, 1451, 1451, 1451, 10: 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 58: 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 536: 1451, 538: 1451, 1451, 1451, 1451, 545: 1451, 1451, 548: 1451, 1451, 1451, 552: 1451, 1451, 557: 1451, 1451, 564: 1451, 578: 1451, 583: 1451, 589: 1451, 591: 1451, 1451, 613: 1451, 624: 1451, 631: 1451, 633: 1451, 1451, 1451, 1451, 641: 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 663: 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 716: 1451, 721: 1451, 835: 1451, 1451, 842: 1451, 1451, 1451, 846: 1451, 855: 1451, 1451, 1451}, // 3610 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6469, 3051, 3052, 3050, 980: 6468}, - {537: 6466}, - {531: 2907, 775: 6467}, - {9: 1192, 531: 1192, 547: 1192, 608: 1192, 695: 1192, 714: 1192, 803: 1192}, - {9: 6471, 57: 6470}, + {536: 1447, 552: 1447, 613: 1447, 661: 1447}, + {536: 1018, 552: 1018, 613: 1018, 661: 1018}, + {536: 1017, 552: 1017, 613: 1017, 661: 1017}, + {536: 1019, 552: 1019, 613: 1019, 661: 1019}, + {536: 1020, 552: 1020, 613: 1020, 661: 1020}, // 3615 - {2604, 2604, 9: 2604, 57: 2604, 532: 2604}, - {537: 2605}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6472, 3051, 3052, 3050}, - {2603, 2603, 9: 2603, 57: 2603, 532: 2603}, - {9: 6474, 531: 1195, 547: 1195, 608: 1195, 695: 1195, 714: 1195, 803: 1195}, + {1032, 1032, 57: 1032, 535: 1032, 537: 1032, 544: 1022, 547: 1032, 555: 1022, 1022}, + {1031, 1031, 57: 1031, 535: 1031, 537: 1031, 544: 1021, 547: 1031, 555: 1021, 1021, 559: 3882, 562: 3881, 569: 3880, 848: 6489, 6490}, + {544: 1023, 555: 1023, 1023}, + {1030, 1030, 57: 1030, 535: 1030, 537: 1030, 547: 1030, 559: 3882, 562: 3881, 849: 6491}, + {1029, 1029, 57: 1029, 535: 1029, 537: 1029, 547: 1029}, // 3620 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6463, 3051, 3052, 3050, 1034: 6475}, - {9: 1194, 531: 1194, 547: 1194, 608: 1194, 695: 1194, 714: 1194, 803: 1194}, - {1499, 1499, 57: 1499, 530: 1499, 532: 1499, 539: 1499, 542: 1499, 550: 1499, 1499, 554: 1499, 556: 1499, 558: 1499, 1499, 562: 1499, 564: 3857, 842: 3911, 909: 6477}, - {1068, 1068, 57: 1068, 530: 1068, 532: 1068, 539: 1068, 542: 1068, 550: 1068, 1068, 554: 3859, 556: 3858, 558: 1068, 1068, 562: 1068, 843: 3916, 925: 6478}, - {1039, 1039, 57: 1039, 530: 1039, 532: 1039, 539: 1039, 542: 1039, 550: 1039, 1039, 558: 3918, 1039, 562: 3919, 991: 6479}, + {1028, 1028, 57: 1028, 535: 1028, 537: 1028, 547: 1028}, + {57: 4012, 544: 1021, 555: 1021, 1021, 559: 3882, 562: 3881, 569: 3880, 848: 3883, 3884}, + {9: 6507, 536: 1204, 552: 1204, 613: 1204, 661: 1204, 719: 1204, 809: 1204}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6496, 3068, 3069, 3067, 1040: 6495, 1314: 6506}, + {9: 1201, 536: 1201, 552: 1201, 613: 1201, 661: 1201, 719: 1201, 809: 1201}, // 3625 - {1045, 1045, 57: 1045, 530: 1045, 532: 1045, 539: 1045, 542: 1045, 550: 1045, 1045, 559: 3944, 992: 6480}, - {1200, 1200, 57: 1200, 530: 1200, 532: 1200, 539: 1200, 542: 1200, 550: 1200, 1200}, - {1068, 1068, 57: 1068, 530: 1068, 532: 1068, 539: 1068, 542: 1068, 550: 1068, 1068, 554: 3859, 556: 3858, 558: 1068, 1068, 562: 1068, 843: 3916, 925: 6482}, - {1039, 1039, 57: 1039, 530: 1039, 532: 1039, 539: 1039, 542: 1039, 550: 1039, 1039, 558: 3918, 1039, 562: 3919, 991: 6483}, - {1045, 1045, 57: 1045, 530: 1045, 532: 1045, 539: 1045, 542: 1045, 550: 1045, 1045, 559: 3944, 992: 6484}, + {536: 6497, 542: 2620, 1377: 6498}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6502, 3068, 3069, 3067, 986: 6501}, + {542: 6499}, + {536: 2924, 781: 6500}, + {9: 1200, 536: 1200, 552: 1200, 613: 1200, 661: 1200, 719: 1200, 809: 1200}, // 3630 - {1201, 1201, 57: 1201, 530: 1201, 532: 1201, 539: 1201, 542: 1201, 550: 1201, 1201}, - {723: 6492}, - {1499, 1499, 57: 1499, 530: 1499, 532: 1499, 539: 1499, 542: 1499, 550: 1499, 1499, 554: 1499, 556: 1499, 558: 1499, 1499, 562: 1499, 564: 3857, 842: 3911, 909: 6488}, - {1046, 1046, 57: 1046, 530: 1046, 532: 1046, 539: 1046, 542: 1046, 550: 1046, 1046, 554: 1046, 556: 1046, 558: 1046, 1046, 562: 1046, 564: 1046, 572: 1046, 574: 1046}, - {1068, 1068, 57: 1068, 530: 1068, 532: 1068, 539: 1068, 542: 1068, 550: 1068, 1068, 554: 3859, 556: 3858, 558: 1068, 1068, 562: 1068, 843: 3916, 925: 6489}, + {9: 6504, 57: 6503}, + {2618, 2618, 9: 2618, 57: 2618, 537: 2618}, + {542: 2619}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6505, 3068, 3069, 3067}, + {2617, 2617, 9: 2617, 57: 2617, 537: 2617}, // 3635 - {1039, 1039, 57: 1039, 530: 1039, 532: 1039, 539: 1039, 542: 1039, 550: 1039, 1039, 558: 3918, 1039, 562: 3919, 991: 6490}, - {1045, 1045, 57: 1045, 530: 1045, 532: 1045, 539: 1045, 542: 1045, 550: 1045, 1045, 559: 3944, 992: 6491}, - {1202, 1202, 57: 1202, 530: 1202, 532: 1202, 539: 1202, 542: 1202, 550: 1202, 1202}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3881, 973: 3883, 1000: 6493}, - {2127, 2127, 9: 3884, 57: 2127, 530: 2127, 532: 6494, 539: 2127, 542: 2127, 550: 2127, 2127, 554: 2127, 556: 2127, 558: 2127, 2127, 562: 2127, 564: 2127, 572: 2127, 574: 2127, 1510: 6495}, + {9: 6507, 536: 1203, 552: 1203, 613: 1203, 661: 1203, 719: 1203, 809: 1203}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6496, 3068, 3069, 3067, 1040: 6508}, + {9: 1202, 536: 1202, 552: 1202, 613: 1202, 661: 1202, 719: 1202, 809: 1202}, + {1508, 1508, 57: 1508, 535: 1508, 537: 1508, 544: 1508, 547: 1508, 555: 1508, 1508, 559: 1508, 562: 1508, 1508, 565: 1508, 567: 1508, 569: 3880, 848: 3934, 915: 6510}, + {1076, 1076, 57: 1076, 535: 1076, 537: 1076, 544: 1076, 547: 1076, 555: 1076, 1076, 559: 3882, 562: 3881, 1076, 565: 1076, 567: 1076, 849: 3939, 931: 6511}, // 3640 - {432: 6496}, - {2125, 2125, 57: 2125, 530: 2125, 532: 2125, 539: 2125, 542: 2125, 550: 2125, 2125, 554: 2125, 556: 2125, 558: 2125, 2125, 562: 2125, 564: 2125, 572: 2125, 574: 2125}, - {2126, 2126, 57: 2126, 530: 2126, 532: 2126, 539: 2126, 542: 2126, 550: 2126, 2126, 554: 2126, 556: 2126, 558: 2126, 2126, 562: 2126, 564: 2126, 572: 2126, 574: 2126}, - {424, 424, 57: 424, 530: 424, 532: 424, 539: 424, 542: 424, 550: 424, 424, 554: 424, 556: 424, 558: 424, 424, 562: 424, 4661, 424, 571: 424, 889: 4662, 6522}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 531: 5973, 643: 5968, 770: 3927, 3051, 3052, 3050, 775: 5972, 804: 5971, 895: 5970, 899: 5969, 5975, 955: 5965, 993: 6507, 1351: 6506, 1480: 6505}, + {1047, 1047, 57: 1047, 535: 1047, 537: 1047, 544: 1047, 547: 1047, 555: 1047, 1047, 563: 3941, 565: 1047, 567: 3942, 997: 6512}, + {1053, 1053, 57: 1053, 535: 1053, 537: 1053, 544: 1053, 547: 1053, 555: 1053, 1053, 565: 3967, 998: 6513}, + {1208, 1208, 57: 1208, 535: 1208, 537: 1208, 544: 1208, 547: 1208, 555: 1208, 1208}, + {1076, 1076, 57: 1076, 535: 1076, 537: 1076, 544: 1076, 547: 1076, 555: 1076, 1076, 559: 3882, 562: 3881, 1076, 565: 1076, 567: 1076, 849: 3939, 931: 6515}, + {1047, 1047, 57: 1047, 535: 1047, 537: 1047, 544: 1047, 547: 1047, 555: 1047, 1047, 563: 3941, 565: 1047, 567: 3942, 997: 6516}, // 3645 - {1047, 1047, 57: 1047, 530: 1047, 532: 1047, 539: 1047, 542: 1047, 550: 1047, 1047, 554: 1047, 556: 1047, 558: 1047, 1047, 562: 1047, 564: 1047, 571: 6485, 1050: 6487, 1080: 6500}, - {1499, 1499, 57: 1499, 530: 1499, 532: 1499, 539: 1499, 542: 1499, 550: 1499, 1499, 554: 1499, 556: 1499, 558: 1499, 1499, 562: 1499, 564: 3857, 842: 3911, 909: 6501}, - {1068, 1068, 57: 1068, 530: 1068, 532: 1068, 539: 1068, 542: 1068, 550: 1068, 1068, 554: 3859, 556: 3858, 558: 1068, 1068, 562: 1068, 843: 3916, 925: 6502}, - {1039, 1039, 57: 1039, 530: 1039, 532: 1039, 539: 1039, 542: 1039, 550: 1039, 1039, 558: 3918, 1039, 562: 3919, 991: 6503}, - {1045, 1045, 57: 1045, 530: 1045, 532: 1045, 539: 1045, 542: 1045, 550: 1045, 1045, 559: 3944, 992: 6504}, + {1053, 1053, 57: 1053, 535: 1053, 537: 1053, 544: 1053, 547: 1053, 555: 1053, 1053, 565: 3967, 998: 6517}, + {1209, 1209, 57: 1209, 535: 1209, 537: 1209, 544: 1209, 547: 1209, 555: 1209, 1209}, + {728: 6525}, + {1508, 1508, 57: 1508, 535: 1508, 537: 1508, 544: 1508, 547: 1508, 555: 1508, 1508, 559: 1508, 562: 1508, 1508, 565: 1508, 567: 1508, 569: 3880, 848: 3934, 915: 6521}, + {1054, 1054, 57: 1054, 535: 1054, 537: 1054, 544: 1054, 547: 1054, 555: 1054, 1054, 559: 1054, 562: 1054, 1054, 565: 1054, 567: 1054, 569: 1054, 577: 1054, 579: 1054}, // 3650 - {1203, 1203, 57: 1203, 530: 1203, 532: 1203, 539: 1203, 542: 1203, 550: 1203, 1203}, - {424, 424, 57: 424, 530: 424, 532: 424, 539: 424, 542: 424, 550: 424, 424, 554: 424, 556: 424, 558: 424, 424, 562: 424, 4661, 424, 571: 424, 424, 574: 424, 889: 4662, 6508}, - {1191, 1191, 57: 1191, 530: 1191, 532: 1191, 539: 1191, 542: 1191, 550: 1191, 1191, 554: 1191, 556: 1191, 558: 1191, 1191, 562: 1191, 1191, 1191, 571: 1191}, - {1131, 1131, 9: 6019, 57: 1131, 530: 1131, 532: 1131, 539: 1131, 542: 1131, 550: 1131, 1131, 554: 1131, 556: 1131, 558: 1131, 1131, 562: 1131, 1131, 1131, 571: 1131, 1131, 574: 1131}, - {1047, 1047, 57: 1047, 530: 1047, 532: 1047, 539: 1047, 542: 1047, 550: 1047, 1047, 554: 1047, 556: 1047, 558: 1047, 1047, 562: 1047, 564: 1047, 571: 6485, 1047, 574: 1047, 1050: 6487, 1080: 6509}, + {1076, 1076, 57: 1076, 535: 1076, 537: 1076, 544: 1076, 547: 1076, 555: 1076, 1076, 559: 3882, 562: 3881, 1076, 565: 1076, 567: 1076, 849: 3939, 931: 6522}, + {1047, 1047, 57: 1047, 535: 1047, 537: 1047, 544: 1047, 547: 1047, 555: 1047, 1047, 563: 3941, 565: 1047, 567: 3942, 997: 6523}, + {1053, 1053, 57: 1053, 535: 1053, 537: 1053, 544: 1053, 547: 1053, 555: 1053, 1053, 565: 3967, 998: 6524}, + {1210, 1210, 57: 1210, 535: 1210, 537: 1210, 544: 1210, 547: 1210, 555: 1210, 1210}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3904, 979: 3906, 1006: 6526}, // 3655 - {2124, 2124, 57: 2124, 530: 2124, 532: 2124, 539: 2124, 542: 2124, 550: 2124, 2124, 554: 2124, 556: 2124, 558: 2124, 2124, 562: 2124, 564: 2124, 572: 6510, 574: 2124, 1187: 6511}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 6521}, - {1190, 1190, 57: 1190, 530: 1190, 532: 1190, 539: 1190, 542: 1190, 550: 1190, 1190, 554: 1190, 556: 1190, 558: 1190, 1190, 562: 1190, 564: 1190, 574: 6513, 1502: 6512}, - {1216, 1216, 57: 1216, 530: 1216, 532: 1216, 539: 1216, 542: 1216, 550: 1216, 1216, 554: 1216, 556: 1216, 558: 1216, 1216, 562: 1216, 564: 1216}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4066, 3051, 3052, 3050, 1026: 6516, 1304: 6515, 1503: 6514}, + {2141, 2141, 9: 3907, 57: 2141, 535: 2141, 537: 6527, 544: 2141, 547: 2141, 555: 2141, 2141, 559: 2141, 562: 2141, 2141, 565: 2141, 567: 2141, 569: 2141, 577: 2141, 579: 2141, 1517: 6528}, + {435: 6529}, + {2139, 2139, 57: 2139, 535: 2139, 537: 2139, 544: 2139, 547: 2139, 555: 2139, 2139, 559: 2139, 562: 2139, 2139, 565: 2139, 567: 2139, 569: 2139, 577: 2139, 579: 2139}, + {2140, 2140, 57: 2140, 535: 2140, 537: 2140, 544: 2140, 547: 2140, 555: 2140, 2140, 559: 2140, 562: 2140, 2140, 565: 2140, 567: 2140, 569: 2140, 577: 2140, 579: 2140}, + {425, 425, 57: 425, 535: 425, 537: 425, 544: 425, 547: 425, 555: 425, 425, 559: 425, 562: 425, 425, 565: 425, 567: 425, 4684, 425, 576: 425, 895: 4685, 6555}, // 3660 - {1189, 1189, 9: 6519, 57: 1189, 530: 1189, 532: 1189, 539: 1189, 542: 1189, 550: 1189, 1189, 554: 1189, 556: 1189, 558: 1189, 1189, 562: 1189, 564: 1189}, - {1188, 1188, 9: 1188, 57: 1188, 530: 1188, 532: 1188, 539: 1188, 542: 1188, 550: 1188, 1188, 554: 1188, 556: 1188, 558: 1188, 1188, 562: 1188, 564: 1188}, - {537: 6517}, - {531: 4067, 1306: 6518}, - {1186, 1186, 9: 1186, 57: 1186, 530: 1186, 532: 1186, 539: 1186, 542: 1186, 550: 1186, 1186, 554: 1186, 556: 1186, 558: 1186, 1186, 562: 1186, 564: 1186}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 536: 5996, 648: 5991, 777: 3950, 3068, 3069, 3067, 5995, 810: 5994, 901: 5993, 905: 5992, 5998, 961: 5988, 999: 6540, 1358: 6539, 1487: 6538}, + {1055, 1055, 57: 1055, 535: 1055, 537: 1055, 544: 1055, 547: 1055, 555: 1055, 1055, 559: 1055, 562: 1055, 1055, 565: 1055, 567: 1055, 569: 1055, 576: 6518, 1056: 6520, 1086: 6533}, + {1508, 1508, 57: 1508, 535: 1508, 537: 1508, 544: 1508, 547: 1508, 555: 1508, 1508, 559: 1508, 562: 1508, 1508, 565: 1508, 567: 1508, 569: 3880, 848: 3934, 915: 6534}, + {1076, 1076, 57: 1076, 535: 1076, 537: 1076, 544: 1076, 547: 1076, 555: 1076, 1076, 559: 3882, 562: 3881, 1076, 565: 1076, 567: 1076, 849: 3939, 931: 6535}, + {1047, 1047, 57: 1047, 535: 1047, 537: 1047, 544: 1047, 547: 1047, 555: 1047, 1047, 563: 3941, 565: 1047, 567: 3942, 997: 6536}, // 3665 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4066, 3051, 3052, 3050, 1026: 6516, 1304: 6520}, - {1187, 1187, 9: 1187, 57: 1187, 530: 1187, 532: 1187, 539: 1187, 542: 1187, 550: 1187, 1187, 554: 1187, 556: 1187, 558: 1187, 1187, 562: 1187, 564: 1187}, - {2123, 2123, 57: 2123, 530: 2123, 532: 2123, 539: 2123, 542: 2123, 550: 2123, 2123, 554: 2123, 556: 2123, 558: 2123, 2123, 561: 2123, 2123, 2123, 2123, 566: 3745, 3743, 3744, 3742, 3740, 2123, 574: 2123, 800: 3741, 3739}, - {1217, 1217, 57: 1217, 530: 1217, 532: 1217, 539: 1217, 542: 1217, 550: 1217, 1217, 554: 1217, 556: 1217, 558: 1217, 1217, 562: 1217, 564: 1217, 571: 1217}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 584: 6539, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 6540, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 6538, 1171: 6541, 1361: 6542, 1446: 6543}, + {1053, 1053, 57: 1053, 535: 1053, 537: 1053, 544: 1053, 547: 1053, 555: 1053, 1053, 565: 3967, 998: 6537}, + {1211, 1211, 57: 1211, 535: 1211, 537: 1211, 544: 1211, 547: 1211, 555: 1211, 1211}, + {425, 425, 57: 425, 535: 425, 537: 425, 544: 425, 547: 425, 555: 425, 425, 559: 425, 562: 425, 425, 565: 425, 567: 425, 4684, 425, 576: 425, 425, 579: 425, 895: 4685, 6541}, + {1199, 1199, 57: 1199, 535: 1199, 537: 1199, 544: 1199, 547: 1199, 555: 1199, 1199, 559: 1199, 562: 1199, 1199, 565: 1199, 567: 1199, 1199, 1199, 576: 1199}, + {1139, 1139, 9: 6042, 57: 1139, 535: 1139, 537: 1139, 544: 1139, 547: 1139, 555: 1139, 1139, 559: 1139, 562: 1139, 1139, 565: 1139, 567: 1139, 1139, 1139, 576: 1139, 1139, 579: 1139}, // 3670 - {2: 1066, 1066, 1066, 1066, 1066, 1066, 1066, 10: 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 58: 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 531: 1066, 533: 1066, 1066, 1066, 1066, 540: 1066, 1066, 543: 1066, 1066, 1066, 547: 1066, 1066, 552: 1066, 1066, 560: 1066, 573: 1066, 578: 1066, 584: 1066, 586: 1066, 1066, 614: 1066, 617: 1066, 628: 1066, 1066, 1066, 1066, 636: 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 697: 1066, 1066, 1066, 1066, 711: 1066, 715: 1066, 829: 1066, 1066, 836: 1066, 1066, 1066, 840: 1066, 849: 1066, 1066, 1066}, - {2: 1065, 1065, 1065, 1065, 1065, 1065, 1065, 10: 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 58: 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 531: 1065, 533: 1065, 1065, 1065, 1065, 540: 1065, 1065, 543: 1065, 1065, 1065, 547: 1065, 1065, 552: 1065, 1065, 560: 1065, 573: 1065, 578: 1065, 584: 1065, 586: 1065, 1065, 614: 1065, 617: 1065, 628: 1065, 1065, 1065, 1065, 636: 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 697: 1065, 1065, 1065, 1065, 711: 1065, 715: 1065, 829: 1065, 1065, 836: 1065, 1065, 1065, 840: 1065, 849: 1065, 1065, 1065}, - {2: 1064, 1064, 1064, 1064, 1064, 1064, 1064, 10: 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 58: 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 531: 1064, 533: 1064, 1064, 1064, 1064, 540: 1064, 1064, 543: 1064, 1064, 1064, 547: 1064, 1064, 552: 1064, 1064, 560: 1064, 573: 1064, 578: 1064, 584: 1064, 586: 1064, 1064, 614: 1064, 617: 1064, 628: 1064, 1064, 1064, 1064, 636: 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 697: 1064, 1064, 1064, 1064, 711: 1064, 715: 1064, 829: 1064, 1064, 836: 1064, 1064, 1064, 840: 1064, 849: 1064, 1064, 1064}, - {2: 1063, 1063, 1063, 1063, 1063, 1063, 1063, 10: 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 58: 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 531: 1063, 533: 1063, 1063, 1063, 1063, 540: 1063, 1063, 543: 1063, 1063, 1063, 547: 1063, 1063, 552: 1063, 1063, 560: 1063, 573: 1063, 578: 1063, 584: 1063, 586: 1063, 1063, 614: 1063, 617: 1063, 628: 1063, 1063, 1063, 1063, 636: 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 697: 1063, 1063, 1063, 1063, 711: 1063, 715: 1063, 829: 1063, 1063, 836: 1063, 1063, 1063, 840: 1063, 849: 1063, 1063, 1063}, - {2: 1062, 1062, 1062, 1062, 1062, 1062, 1062, 10: 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 58: 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 531: 1062, 533: 1062, 1062, 1062, 1062, 540: 1062, 1062, 543: 1062, 1062, 1062, 547: 1062, 1062, 552: 1062, 1062, 560: 1062, 573: 1062, 578: 1062, 584: 1062, 586: 1062, 1062, 614: 1062, 617: 1062, 628: 1062, 1062, 1062, 1062, 636: 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 697: 1062, 1062, 1062, 1062, 711: 1062, 715: 1062, 829: 1062, 1062, 836: 1062, 1062, 1062, 840: 1062, 849: 1062, 1062, 1062}, + {1055, 1055, 57: 1055, 535: 1055, 537: 1055, 544: 1055, 547: 1055, 555: 1055, 1055, 559: 1055, 562: 1055, 1055, 565: 1055, 567: 1055, 569: 1055, 576: 6518, 1055, 579: 1055, 1056: 6520, 1086: 6542}, + {2138, 2138, 57: 2138, 535: 2138, 537: 2138, 544: 2138, 547: 2138, 555: 2138, 2138, 559: 2138, 562: 2138, 2138, 565: 2138, 567: 2138, 569: 2138, 577: 6543, 579: 2138, 1193: 6544}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 6554}, + {1198, 1198, 57: 1198, 535: 1198, 537: 1198, 544: 1198, 547: 1198, 555: 1198, 1198, 559: 1198, 562: 1198, 1198, 565: 1198, 567: 1198, 569: 1198, 579: 6546, 1509: 6545}, + {1224, 1224, 57: 1224, 535: 1224, 537: 1224, 544: 1224, 547: 1224, 555: 1224, 1224, 559: 1224, 562: 1224, 1224, 565: 1224, 567: 1224, 569: 1224}, // 3675 - {2: 1061, 1061, 1061, 1061, 1061, 1061, 1061, 10: 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 58: 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 531: 1061, 533: 1061, 1061, 1061, 1061, 540: 1061, 1061, 543: 1061, 1061, 1061, 547: 1061, 1061, 552: 1061, 1061, 560: 1061, 573: 1061, 578: 1061, 584: 1061, 586: 1061, 1061, 614: 1061, 617: 1061, 628: 1061, 1061, 1061, 1061, 636: 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 697: 1061, 1061, 1061, 1061, 711: 1061, 715: 1061, 829: 1061, 1061, 836: 1061, 1061, 1061, 840: 1061, 849: 1061, 1061, 1061}, - {2: 1060, 1060, 1060, 1060, 1060, 1060, 1060, 10: 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 58: 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 531: 1060, 533: 1060, 1060, 1060, 1060, 540: 1060, 1060, 543: 1060, 1060, 1060, 547: 1060, 1060, 552: 1060, 1060, 560: 1060, 573: 1060, 578: 1060, 584: 1060, 586: 1060, 1060, 614: 1060, 617: 1060, 628: 1060, 1060, 1060, 1060, 636: 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 697: 1060, 1060, 1060, 1060, 711: 1060, 715: 1060, 829: 1060, 1060, 836: 1060, 1060, 1060, 840: 1060, 849: 1060, 1060, 1060}, - {2: 1059, 1059, 1059, 1059, 1059, 1059, 1059, 10: 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 58: 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 531: 1059, 533: 1059, 1059, 1059, 1059, 540: 1059, 1059, 543: 1059, 1059, 1059, 547: 1059, 1059, 552: 1059, 1059, 560: 1059, 573: 1059, 578: 1059, 584: 1059, 586: 1059, 1059, 614: 1059, 617: 1059, 628: 1059, 1059, 1059, 1059, 636: 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 697: 1059, 1059, 1059, 1059, 711: 1059, 715: 1059, 829: 1059, 1059, 836: 1059, 1059, 1059, 840: 1059, 849: 1059, 1059, 1059}, - {2: 1058, 1058, 1058, 1058, 1058, 1058, 1058, 10: 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 58: 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 531: 1058, 533: 1058, 1058, 1058, 1058, 540: 1058, 1058, 543: 1058, 1058, 1058, 547: 1058, 1058, 552: 1058, 1058, 560: 1058, 573: 1058, 578: 1058, 584: 1058, 586: 1058, 1058, 614: 1058, 617: 1058, 628: 1058, 1058, 1058, 1058, 636: 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 697: 1058, 1058, 1058, 1058, 711: 1058, 715: 1058, 829: 1058, 1058, 836: 1058, 1058, 1058, 840: 1058, 849: 1058, 1058, 1058}, - {2: 1056, 1056, 1056, 1056, 1056, 1056, 1056, 10: 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 58: 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 6529, 6535, 6536, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 531: 1056, 533: 1056, 1056, 1056, 1056, 540: 1056, 1056, 543: 1056, 1056, 1056, 547: 1056, 1056, 552: 1056, 1056, 560: 1056, 573: 6532, 578: 1056, 584: 1056, 586: 1056, 1056, 614: 1056, 617: 1056, 628: 1056, 1056, 1056, 1056, 636: 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 697: 1056, 1056, 1056, 1056, 711: 1056, 715: 4174, 829: 4172, 4173, 836: 5961, 5960, 5959, 840: 5956, 849: 6528, 6531, 6527, 885: 6447, 887: 6525, 934: 6526, 969: 6524, 1266: 6537, 6530}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4089, 3068, 3069, 3067, 1032: 6549, 1310: 6548, 1510: 6547}, + {1197, 1197, 9: 6552, 57: 1197, 535: 1197, 537: 1197, 544: 1197, 547: 1197, 555: 1197, 1197, 559: 1197, 562: 1197, 1197, 565: 1197, 567: 1197, 569: 1197}, + {1196, 1196, 9: 1196, 57: 1196, 535: 1196, 537: 1196, 544: 1196, 547: 1196, 555: 1196, 1196, 559: 1196, 562: 1196, 1196, 565: 1196, 567: 1196, 569: 1196}, + {542: 6550}, + {536: 4090, 1312: 6551}, // 3680 - {2: 1054, 1054, 1054, 1054, 1054, 1054, 1054, 10: 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 58: 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 531: 1054, 533: 1054, 1054, 1054, 1054, 540: 1054, 1054, 543: 1054, 1054, 1054, 547: 1054, 1054, 552: 1054, 1054, 560: 1054, 573: 1054, 578: 1054, 584: 1054, 586: 1054, 1054, 614: 1054, 617: 1054, 628: 1054, 1054, 1054, 1054, 636: 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 697: 1054, 1054, 1054, 1054, 711: 1054, 715: 1054, 829: 1054, 1054, 836: 1054, 1054, 1054, 840: 1054, 849: 1054, 1054, 1054}, - {2: 1050, 1050, 1050, 1050, 1050, 1050, 1050, 10: 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 58: 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 531: 1050, 533: 1050, 1050, 1050, 1050, 540: 1050, 1050, 543: 1050, 1050, 1050, 547: 1050, 1050, 552: 1050, 1050, 560: 1050, 573: 1050, 578: 1050, 584: 1050, 586: 1050, 1050, 614: 1050, 617: 1050, 628: 1050, 1050, 1050, 1050, 636: 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 697: 1050, 1050, 1050, 1050, 711: 1050, 715: 1050, 829: 1050, 1050, 836: 1050, 1050, 1050, 840: 1050, 849: 1050, 1050, 1050}, - {2: 1049, 1049, 1049, 1049, 1049, 1049, 1049, 10: 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 58: 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 531: 1049, 533: 1049, 1049, 1049, 1049, 540: 1049, 1049, 543: 1049, 1049, 1049, 547: 1049, 1049, 552: 1049, 1049, 560: 1049, 573: 1049, 578: 1049, 584: 1049, 586: 1049, 1049, 614: 1049, 617: 1049, 628: 1049, 1049, 1049, 1049, 636: 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 697: 1049, 1049, 1049, 1049, 711: 1049, 715: 1049, 829: 1049, 1049, 836: 1049, 1049, 1049, 840: 1049, 849: 1049, 1049, 1049}, - {2: 1055, 1055, 1055, 1055, 1055, 1055, 1055, 10: 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 58: 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 531: 1055, 533: 1055, 1055, 1055, 1055, 540: 1055, 1055, 543: 1055, 1055, 1055, 547: 1055, 1055, 552: 1055, 1055, 560: 1055, 573: 1055, 578: 1055, 584: 1055, 586: 1055, 1055, 614: 1055, 617: 1055, 628: 1055, 1055, 1055, 1055, 636: 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 697: 1055, 1055, 1055, 1055, 711: 1055, 715: 1055, 829: 1055, 1055, 836: 1055, 1055, 1055, 840: 1055, 849: 1055, 1055, 1055}, - {2135, 2135, 3297, 3451, 3261, 3138, 3177, 3299, 3064, 2135, 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 2135, 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 2135, 532: 2135, 6556, 537: 6555, 539: 2135, 542: 2135, 550: 2135, 2135, 554: 2135, 556: 2135, 558: 2135, 2135, 561: 2135, 2135, 2135, 2135, 566: 3745, 3743, 3744, 3742, 3740, 2135, 2135, 770: 6554, 3051, 3052, 3050, 800: 3741, 3739, 1358: 6553, 6552}, + {1194, 1194, 9: 1194, 57: 1194, 535: 1194, 537: 1194, 544: 1194, 547: 1194, 555: 1194, 1194, 559: 1194, 562: 1194, 1194, 565: 1194, 567: 1194, 569: 1194}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4089, 3068, 3069, 3067, 1032: 6549, 1310: 6553}, + {1195, 1195, 9: 1195, 57: 1195, 535: 1195, 537: 1195, 544: 1195, 547: 1195, 555: 1195, 1195, 559: 1195, 562: 1195, 1195, 565: 1195, 567: 1195, 569: 1195}, + {2137, 2137, 57: 2137, 535: 2137, 537: 2137, 544: 2137, 547: 2137, 555: 2137, 2137, 559: 2137, 562: 2137, 2137, 565: 2137, 2137, 2137, 2137, 2137, 571: 3768, 3766, 3767, 3765, 3763, 2137, 579: 2137, 806: 3764, 3762}, + {1225, 1225, 57: 1225, 535: 1225, 537: 1225, 544: 1225, 547: 1225, 555: 1225, 1225, 559: 1225, 562: 1225, 1225, 565: 1225, 567: 1225, 569: 1225, 576: 1225}, // 3685 - {2139, 2139, 9: 2139, 57: 2139, 530: 2139, 532: 2139, 539: 2139, 542: 2139, 550: 2139, 2139, 554: 2139, 556: 2139, 558: 2139, 2139, 561: 2139, 2139, 2139, 2139, 571: 2139, 2139}, - {1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 532: 1481, 1481, 1481, 536: 1481, 1481, 1481, 1481, 542: 1481, 1481, 1481, 1481, 550: 1481, 1481, 554: 1481, 1481, 1481, 558: 1481, 1481, 561: 1481, 1481, 1481, 1481, 566: 1481, 1481, 1481, 1481, 1481, 1481, 1481, 579: 1481, 584: 1481, 606: 1481, 609: 1481, 1481, 1481, 1481, 1481, 615: 1481, 1481, 618: 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 632: 1481, 1481, 1481, 1481, 703: 1481, 716: 6547, 718: 1481, 1481}, - {2129, 2129, 9: 2129, 57: 2129, 530: 2129, 532: 2129, 539: 2129, 542: 2129, 550: 2129, 2129, 554: 2129, 556: 2129, 558: 2129, 2129, 561: 2129, 2129, 2129, 2129, 571: 2129, 2129}, - {1048, 1048, 9: 6545, 57: 1048, 530: 1048, 532: 1048, 539: 1048, 542: 1048, 550: 1048, 1048, 554: 1048, 556: 1048, 558: 1048, 1048, 561: 1048, 1048, 1048, 1048, 571: 1048, 1048}, - {2124, 2124, 57: 2124, 530: 2124, 532: 2124, 539: 2124, 542: 2124, 550: 2124, 2124, 554: 2124, 556: 2124, 558: 2124, 2124, 561: 2124, 2124, 2124, 2124, 571: 2124, 6510, 1187: 6544}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 589: 6572, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 6573, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 6571, 1177: 6574, 1368: 6575, 1453: 6576}, + {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, 1074, 1074, 1074, 1074, 1074, 58: 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 536: 1074, 538: 1074, 1074, 1074, 1074, 545: 1074, 1074, 548: 1074, 1074, 1074, 552: 1074, 1074, 557: 1074, 1074, 564: 1074, 578: 1074, 583: 1074, 589: 1074, 591: 1074, 1074, 624: 1074, 631: 1074, 633: 1074, 1074, 1074, 1074, 641: 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 663: 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 716: 1074, 721: 1074, 835: 1074, 1074, 842: 1074, 1074, 1074, 846: 1074, 855: 1074, 1074, 1074}, + {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, 1073, 1073, 1073, 1073, 1073, 58: 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 536: 1073, 538: 1073, 1073, 1073, 1073, 545: 1073, 1073, 548: 1073, 1073, 1073, 552: 1073, 1073, 557: 1073, 1073, 564: 1073, 578: 1073, 583: 1073, 589: 1073, 591: 1073, 1073, 624: 1073, 631: 1073, 633: 1073, 1073, 1073, 1073, 641: 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 663: 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 716: 1073, 721: 1073, 835: 1073, 1073, 842: 1073, 1073, 1073, 846: 1073, 855: 1073, 1073, 1073}, + {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, 1072, 1072, 1072, 1072, 1072, 58: 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 536: 1072, 538: 1072, 1072, 1072, 1072, 545: 1072, 1072, 548: 1072, 1072, 1072, 552: 1072, 1072, 557: 1072, 1072, 564: 1072, 578: 1072, 583: 1072, 589: 1072, 591: 1072, 1072, 624: 1072, 631: 1072, 633: 1072, 1072, 1072, 1072, 641: 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 663: 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 716: 1072, 721: 1072, 835: 1072, 1072, 842: 1072, 1072, 1072, 846: 1072, 855: 1072, 1072, 1072}, + {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, 1071, 1071, 1071, 1071, 1071, 58: 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 536: 1071, 538: 1071, 1071, 1071, 1071, 545: 1071, 1071, 548: 1071, 1071, 1071, 552: 1071, 1071, 557: 1071, 1071, 564: 1071, 578: 1071, 583: 1071, 589: 1071, 591: 1071, 1071, 624: 1071, 631: 1071, 633: 1071, 1071, 1071, 1071, 641: 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 663: 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 716: 1071, 721: 1071, 835: 1071, 1071, 842: 1071, 1071, 1071, 846: 1071, 855: 1071, 1071, 1071}, // 3690 - {1218, 1218, 57: 1218, 530: 1218, 532: 1218, 539: 1218, 542: 1218, 550: 1218, 1218, 554: 1218, 556: 1218, 558: 1218, 1218, 561: 1218, 1218, 1218, 1218, 571: 1218}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 584: 6539, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 6540, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 6538, 1171: 6546}, - {2128, 2128, 9: 2128, 57: 2128, 530: 2128, 532: 2128, 539: 2128, 542: 2128, 550: 2128, 2128, 554: 2128, 556: 2128, 558: 2128, 2128, 561: 2128, 2128, 2128, 2128, 571: 2128, 2128}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 584: 6548, 770: 6549, 3051, 3052, 3050}, - {2138, 2138, 9: 2138, 57: 2138, 530: 2138, 532: 2138, 539: 2138, 542: 2138, 550: 2138, 2138, 554: 2138, 556: 2138, 558: 2138, 2138, 561: 2138, 2138, 2138, 2138, 571: 2138, 2138}, + {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, 1070, 1070, 1070, 1070, 1070, 58: 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 536: 1070, 538: 1070, 1070, 1070, 1070, 545: 1070, 1070, 548: 1070, 1070, 1070, 552: 1070, 1070, 557: 1070, 1070, 564: 1070, 578: 1070, 583: 1070, 589: 1070, 591: 1070, 1070, 624: 1070, 631: 1070, 633: 1070, 1070, 1070, 1070, 641: 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 663: 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 716: 1070, 721: 1070, 835: 1070, 1070, 842: 1070, 1070, 1070, 846: 1070, 855: 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, 1069, 1069, 1069, 1069, 1069, 58: 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 536: 1069, 538: 1069, 1069, 1069, 1069, 545: 1069, 1069, 548: 1069, 1069, 1069, 552: 1069, 1069, 557: 1069, 1069, 564: 1069, 578: 1069, 583: 1069, 589: 1069, 591: 1069, 1069, 624: 1069, 631: 1069, 633: 1069, 1069, 1069, 1069, 641: 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 663: 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 716: 1069, 721: 1069, 835: 1069, 1069, 842: 1069, 1069, 1069, 846: 1069, 855: 1069, 1069, 1069}, + {2: 1068, 1068, 1068, 1068, 1068, 1068, 1068, 10: 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 58: 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 536: 1068, 538: 1068, 1068, 1068, 1068, 545: 1068, 1068, 548: 1068, 1068, 1068, 552: 1068, 1068, 557: 1068, 1068, 564: 1068, 578: 1068, 583: 1068, 589: 1068, 591: 1068, 1068, 624: 1068, 631: 1068, 633: 1068, 1068, 1068, 1068, 641: 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 663: 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 716: 1068, 721: 1068, 835: 1068, 1068, 842: 1068, 1068, 1068, 846: 1068, 855: 1068, 1068, 1068}, + {2: 1067, 1067, 1067, 1067, 1067, 1067, 1067, 10: 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 58: 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 536: 1067, 538: 1067, 1067, 1067, 1067, 545: 1067, 1067, 548: 1067, 1067, 1067, 552: 1067, 1067, 557: 1067, 1067, 564: 1067, 578: 1067, 583: 1067, 589: 1067, 591: 1067, 1067, 624: 1067, 631: 1067, 633: 1067, 1067, 1067, 1067, 641: 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 663: 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 716: 1067, 721: 1067, 835: 1067, 1067, 842: 1067, 1067, 1067, 846: 1067, 855: 1067, 1067, 1067}, + {2: 1066, 1066, 1066, 1066, 1066, 1066, 1066, 10: 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 58: 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 536: 1066, 538: 1066, 1066, 1066, 1066, 545: 1066, 1066, 548: 1066, 1066, 1066, 552: 1066, 1066, 557: 1066, 1066, 564: 1066, 578: 1066, 583: 1066, 589: 1066, 591: 1066, 1066, 624: 1066, 631: 1066, 633: 1066, 1066, 1066, 1066, 641: 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 663: 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 716: 1066, 721: 1066, 835: 1066, 1066, 842: 1066, 1066, 1066, 846: 1066, 855: 1066, 1066, 1066}, // 3695 - {1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 4477, 1480, 1480, 1480, 536: 1480, 1480, 1480, 1480, 542: 1480, 1480, 1480, 1480, 550: 1480, 1480, 554: 1480, 1480, 1480, 558: 1480, 1480, 561: 1480, 1480, 1480, 1480, 566: 1480, 1480, 1480, 1480, 1480, 1480, 1480, 579: 1480, 584: 1480, 606: 1480, 609: 1480, 1480, 1480, 1480, 1480, 615: 1480, 1480, 618: 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 632: 1480, 1480, 1480, 1480, 703: 1480, 716: 6550, 718: 1480, 1480}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 584: 6551, 770: 3907, 3051, 3052, 3050}, - {2137, 2137, 9: 2137, 57: 2137, 530: 2137, 532: 2137, 539: 2137, 542: 2137, 550: 2137, 2137, 554: 2137, 556: 2137, 558: 2137, 2137, 561: 2137, 2137, 2137, 2137, 571: 2137, 2137}, - {2136, 2136, 9: 2136, 57: 2136, 530: 2136, 532: 2136, 539: 2136, 542: 2136, 550: 2136, 2136, 554: 2136, 556: 2136, 558: 2136, 2136, 561: 2136, 2136, 2136, 2136, 571: 2136, 2136}, - {2134, 2134, 9: 2134, 57: 2134, 530: 2134, 532: 2134, 539: 2134, 542: 2134, 550: 2134, 2134, 554: 2134, 556: 2134, 558: 2134, 2134, 561: 2134, 2134, 2134, 2134, 571: 2134, 2134}, + {2: 1064, 1064, 1064, 1064, 1064, 1064, 1064, 10: 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 58: 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 6562, 6568, 6569, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 536: 1064, 538: 1064, 1064, 1064, 1064, 545: 1064, 1064, 548: 1064, 1064, 1064, 552: 1064, 1064, 557: 1064, 1064, 564: 1064, 578: 6565, 583: 1064, 589: 1064, 591: 1064, 1064, 624: 1064, 631: 1064, 633: 1064, 1064, 1064, 1064, 641: 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 663: 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 716: 1064, 721: 4197, 835: 4195, 4196, 842: 5984, 5983, 5982, 846: 5979, 855: 6561, 6564, 6560, 891: 6480, 893: 6558, 941: 6559, 975: 6557, 1272: 6570, 6563}, + {2: 1062, 1062, 1062, 1062, 1062, 1062, 1062, 10: 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 58: 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 536: 1062, 538: 1062, 1062, 1062, 1062, 545: 1062, 1062, 548: 1062, 1062, 1062, 552: 1062, 1062, 557: 1062, 1062, 564: 1062, 578: 1062, 583: 1062, 589: 1062, 591: 1062, 1062, 624: 1062, 631: 1062, 633: 1062, 1062, 1062, 1062, 641: 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 663: 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 716: 1062, 721: 1062, 835: 1062, 1062, 842: 1062, 1062, 1062, 846: 1062, 855: 1062, 1062, 1062}, + {2: 1058, 1058, 1058, 1058, 1058, 1058, 1058, 10: 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 58: 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 536: 1058, 538: 1058, 1058, 1058, 1058, 545: 1058, 1058, 548: 1058, 1058, 1058, 552: 1058, 1058, 557: 1058, 1058, 564: 1058, 578: 1058, 583: 1058, 589: 1058, 591: 1058, 1058, 624: 1058, 631: 1058, 633: 1058, 1058, 1058, 1058, 641: 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 663: 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 716: 1058, 721: 1058, 835: 1058, 1058, 842: 1058, 1058, 1058, 846: 1058, 855: 1058, 1058, 1058}, + {2: 1057, 1057, 1057, 1057, 1057, 1057, 1057, 10: 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 58: 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 536: 1057, 538: 1057, 1057, 1057, 1057, 545: 1057, 1057, 548: 1057, 1057, 1057, 552: 1057, 1057, 557: 1057, 1057, 564: 1057, 578: 1057, 583: 1057, 589: 1057, 591: 1057, 1057, 624: 1057, 631: 1057, 633: 1057, 1057, 1057, 1057, 641: 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 663: 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 716: 1057, 721: 1057, 835: 1057, 1057, 842: 1057, 1057, 1057, 846: 1057, 855: 1057, 1057, 1057}, + {2: 1063, 1063, 1063, 1063, 1063, 1063, 1063, 10: 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 58: 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 536: 1063, 538: 1063, 1063, 1063, 1063, 545: 1063, 1063, 548: 1063, 1063, 1063, 552: 1063, 1063, 557: 1063, 1063, 564: 1063, 578: 1063, 583: 1063, 589: 1063, 591: 1063, 1063, 624: 1063, 631: 1063, 633: 1063, 1063, 1063, 1063, 641: 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 663: 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 716: 1063, 721: 1063, 835: 1063, 1063, 842: 1063, 1063, 1063, 846: 1063, 855: 1063, 1063, 1063}, // 3700 - {2133, 2133, 9: 2133, 57: 2133, 530: 2133, 532: 2133, 539: 2133, 542: 2133, 550: 2133, 2133, 554: 2133, 556: 2133, 558: 2133, 2133, 561: 2133, 2133, 2133, 2133, 571: 2133, 2133}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 6558, 770: 6557, 3051, 3052, 3050}, - {2131, 2131, 9: 2131, 57: 2131, 530: 2131, 532: 2131, 539: 2131, 542: 2131, 550: 2131, 2131, 554: 2131, 556: 2131, 558: 2131, 2131, 561: 2131, 2131, 2131, 2131, 571: 2131, 2131}, - {2132, 2132, 9: 2132, 57: 2132, 530: 2132, 532: 2132, 539: 2132, 542: 2132, 550: 2132, 2132, 554: 2132, 556: 2132, 558: 2132, 2132, 561: 2132, 2132, 2132, 2132, 571: 2132, 2132}, - {2130, 2130, 9: 2130, 57: 2130, 530: 2130, 532: 2130, 539: 2130, 542: 2130, 550: 2130, 2130, 554: 2130, 556: 2130, 558: 2130, 2130, 561: 2130, 2130, 2130, 2130, 571: 2130, 2130}, + {2149, 2149, 3317, 3472, 3281, 3157, 3197, 3319, 3081, 2149, 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 2149, 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 2149, 537: 2149, 6589, 542: 6588, 544: 2149, 547: 2149, 555: 2149, 2149, 559: 2149, 562: 2149, 2149, 565: 2149, 2149, 2149, 2149, 2149, 571: 3768, 3766, 3767, 3765, 3763, 2149, 2149, 777: 6587, 3068, 3069, 3067, 806: 3764, 3762, 1365: 6586, 6585}, + {2153, 2153, 9: 2153, 57: 2153, 535: 2153, 537: 2153, 544: 2153, 547: 2153, 555: 2153, 2153, 559: 2153, 562: 2153, 2153, 565: 2153, 2153, 2153, 2153, 2153, 576: 2153, 2153}, + {1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 537: 1490, 1490, 1490, 541: 1490, 1490, 1490, 1490, 547: 1490, 1490, 1490, 1490, 555: 1490, 1490, 559: 1490, 561: 1490, 1490, 1490, 565: 1490, 1490, 1490, 1490, 1490, 571: 1490, 1490, 1490, 1490, 1490, 1490, 1490, 584: 1490, 589: 1490, 611: 1490, 614: 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 625: 1490, 1490, 1490, 1490, 1490, 1490, 632: 1490, 637: 1490, 1490, 1490, 1490, 707: 1490, 720: 6580, 723: 1490, 1490}, + {2143, 2143, 9: 2143, 57: 2143, 535: 2143, 537: 2143, 544: 2143, 547: 2143, 555: 2143, 2143, 559: 2143, 562: 2143, 2143, 565: 2143, 2143, 2143, 2143, 2143, 576: 2143, 2143}, + {1056, 1056, 9: 6578, 57: 1056, 535: 1056, 537: 1056, 544: 1056, 547: 1056, 555: 1056, 1056, 559: 1056, 562: 1056, 1056, 565: 1056, 1056, 1056, 1056, 1056, 576: 1056, 1056}, // 3705 - {1219, 1219}, - {1231, 1231}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 6574, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6575, 3051, 3052, 3050}, - {86: 6567, 287: 6566}, - {1223, 1223}, + {2138, 2138, 57: 2138, 535: 2138, 537: 2138, 544: 2138, 547: 2138, 555: 2138, 2138, 559: 2138, 562: 2138, 2138, 565: 2138, 2138, 2138, 2138, 2138, 576: 2138, 6543, 1193: 6577}, + {1226, 1226, 57: 1226, 535: 1226, 537: 1226, 544: 1226, 547: 1226, 555: 1226, 1226, 559: 1226, 562: 1226, 1226, 565: 1226, 1226, 1226, 1226, 1226, 576: 1226}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 589: 6572, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 6573, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 6571, 1177: 6579}, + {2142, 2142, 9: 2142, 57: 2142, 535: 2142, 537: 2142, 544: 2142, 547: 2142, 555: 2142, 2142, 559: 2142, 562: 2142, 2142, 565: 2142, 2142, 2142, 2142, 2142, 576: 2142, 2142}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 589: 6581, 777: 6582, 3068, 3069, 3067}, // 3710 - {897: 6565}, - {1222, 1222}, - {1225, 1225, 86: 6572}, - {287: 6568}, - {1224, 1224, 86: 6570, 897: 6569}, + {2152, 2152, 9: 2152, 57: 2152, 535: 2152, 537: 2152, 544: 2152, 547: 2152, 555: 2152, 2152, 559: 2152, 562: 2152, 2152, 565: 2152, 2152, 2152, 2152, 2152, 576: 2152, 2152}, + {1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 4500, 1489, 1489, 1489, 541: 1489, 1489, 1489, 1489, 547: 1489, 1489, 1489, 1489, 555: 1489, 1489, 559: 1489, 561: 1489, 1489, 1489, 565: 1489, 1489, 1489, 1489, 1489, 571: 1489, 1489, 1489, 1489, 1489, 1489, 1489, 584: 1489, 589: 1489, 611: 1489, 614: 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 625: 1489, 1489, 1489, 1489, 1489, 1489, 632: 1489, 637: 1489, 1489, 1489, 1489, 707: 1489, 720: 6583, 723: 1489, 1489}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 589: 6584, 777: 3930, 3068, 3069, 3067}, + {2151, 2151, 9: 2151, 57: 2151, 535: 2151, 537: 2151, 544: 2151, 547: 2151, 555: 2151, 2151, 559: 2151, 562: 2151, 2151, 565: 2151, 2151, 2151, 2151, 2151, 576: 2151, 2151}, + {2150, 2150, 9: 2150, 57: 2150, 535: 2150, 537: 2150, 544: 2150, 547: 2150, 555: 2150, 2150, 559: 2150, 562: 2150, 2150, 565: 2150, 2150, 2150, 2150, 2150, 576: 2150, 2150}, // 3715 - {1227, 1227}, - {897: 6571}, - {1226, 1226}, - {897: 6573}, - {1228, 1228}, + {2148, 2148, 9: 2148, 57: 2148, 535: 2148, 537: 2148, 544: 2148, 547: 2148, 555: 2148, 2148, 559: 2148, 562: 2148, 2148, 565: 2148, 2148, 2148, 2148, 2148, 576: 2148, 2148}, + {2147, 2147, 9: 2147, 57: 2147, 535: 2147, 537: 2147, 544: 2147, 547: 2147, 555: 2147, 2147, 559: 2147, 562: 2147, 2147, 565: 2147, 2147, 2147, 2147, 2147, 576: 2147, 2147}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 6591, 777: 6590, 3068, 3069, 3067}, + {2145, 2145, 9: 2145, 57: 2145, 535: 2145, 537: 2145, 544: 2145, 547: 2145, 555: 2145, 2145, 559: 2145, 562: 2145, 2145, 565: 2145, 2145, 2145, 2145, 2145, 576: 2145, 2145}, + {2146, 2146, 9: 2146, 57: 2146, 535: 2146, 537: 2146, 544: 2146, 547: 2146, 555: 2146, 2146, 559: 2146, 562: 2146, 2146, 565: 2146, 2146, 2146, 2146, 2146, 576: 2146, 2146}, // 3720 - {1898, 1898, 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6576, 3051, 3052, 3050}, - {1230, 1230}, - {1229, 1229}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6578, 3051, 3052, 3050}, - {1235, 1235}, + {2144, 2144, 9: 2144, 57: 2144, 535: 2144, 537: 2144, 544: 2144, 547: 2144, 555: 2144, 2144, 559: 2144, 562: 2144, 2144, 565: 2144, 2144, 2144, 2144, 2144, 576: 2144, 2144}, + {1227, 1227}, + {1239, 1239}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 6607, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6608, 3068, 3069, 3067}, + {86: 6600, 287: 6599}, // 3725 - {1239, 1239, 542: 6580}, - {628: 3682, 776: 6582, 1488: 6581}, - {1238, 1238, 9: 6583}, - {1237, 1237, 9: 1237}, - {628: 3682, 776: 6584}, + {1231, 1231}, + {903: 6598}, + {1230, 1230}, + {1233, 1233, 86: 6605}, + {287: 6601}, // 3730 - {1236, 1236, 9: 1236}, - {561: 6586}, - {533: 6588, 628: 3682, 776: 6589, 1422: 6587}, - {1242, 1242}, - {1241, 1241}, + {1232, 1232, 86: 6603, 903: 6602}, + {1235, 1235}, + {903: 6604}, + {1234, 1234}, + {903: 6606}, // 3735 - {1240, 1240}, - {2: 1555, 1555, 1555, 1555, 1555, 1555, 1555, 10: 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 58: 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 559: 6591, 1196: 6592}, - {2: 1554, 1554, 1554, 1554, 1554, 1554, 1554, 10: 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 58: 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 6593}, - {186: 1121, 531: 1121, 1121, 546: 6023, 1121, 557: 1121, 608: 1121, 695: 1121, 963: 6594}, + {1236, 1236}, + {1909, 1909, 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6609, 3068, 3069, 3067}, + {1238, 1238}, + {1237, 1237}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6611, 3068, 3069, 3067}, // 3740 - {186: 6602, 531: 6595, 2906, 547: 6603, 557: 6601, 608: 2904, 695: 2900, 775: 6600, 806: 6598, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 3846, 817: 6599, 6597, 1095: 6596, 1195: 6604}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 2608, 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 531: 2907, 2906, 547: 2905, 608: 2904, 695: 2900, 770: 4024, 3051, 3052, 3050, 775: 6459, 806: 3847, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 3846, 817: 3849, 3848, 821: 4025, 906: 5623, 1123: 6617}, - {531: 3893, 938: 6614, 1093: 6613}, - {1547, 1547, 530: 1547, 542: 1547}, - {1546, 1546, 530: 1546, 539: 1014, 542: 1546, 550: 1014, 1014}, + {1243, 1243}, + {1247, 1247, 547: 6613}, + {633: 3704, 782: 6615, 1495: 6614}, + {1246, 1246, 9: 6616}, + {1245, 1245, 9: 1245}, // 3745 - {1545, 1545, 530: 1545, 542: 1545}, - {1544, 1544, 530: 1544, 539: 1013, 542: 1544, 550: 1013, 1013, 554: 3859, 556: 3858, 564: 3857, 842: 3860, 3861}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4024, 3051, 3052, 3050, 821: 6606, 1337: 6605}, - {531: 1542}, - {531: 1541, 639: 3892, 1013: 3891, 1094: 3890}, + {633: 3704, 782: 6617}, + {1244, 1244, 9: 1244}, + {566: 6619}, + {538: 6621, 633: 3704, 782: 6622, 1429: 6620}, + {1250, 1250}, // 3750 - {1527, 1527, 542: 1527}, - {1543, 1543, 9: 6609, 530: 1543, 542: 1543}, - {555: 6085, 717: 6086, 892: 6607}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3899, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3895, 893: 6608}, - {1531, 1531, 9: 1531, 530: 1531, 542: 1531}, + {1249, 1249}, + {1248, 1248}, + {2: 1564, 1564, 1564, 1564, 1564, 1564, 1564, 10: 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 58: 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 565: 6624, 1202: 6625}, + {2: 1563, 1563, 1563, 1563, 1563, 1563, 1563, 10: 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 58: 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 6626}, // 3755 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4024, 3051, 3052, 3050, 821: 6610}, - {555: 6085, 717: 6086, 892: 6611}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3899, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3895, 893: 6612}, - {1530, 1530, 9: 1530, 530: 1530, 542: 1530}, - {1548, 1548, 9: 6615, 530: 1548, 542: 1548}, + {186: 1129, 536: 1129, 1129, 551: 6046, 1129, 560: 1129, 613: 1129, 661: 1129, 969: 6627}, + {186: 6635, 536: 6628, 2923, 552: 6636, 560: 6634, 613: 2921, 661: 2917, 781: 6633, 812: 6631, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 3869, 6632, 6630, 1101: 6629, 1201: 6637}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 2622, 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 536: 2924, 2923, 552: 2922, 613: 2921, 661: 2917, 777: 4047, 3068, 3069, 3067, 6492, 812: 3870, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 3869, 3872, 3871, 828: 4048, 912: 5646, 1129: 6650}, + {536: 3916, 945: 6647, 1099: 6646}, + {1556, 1556, 535: 1556, 547: 1556}, // 3760 - {1540, 1540, 9: 1540, 530: 1540, 542: 1540}, - {531: 3893, 938: 6616}, - {1539, 1539, 9: 1539, 530: 1539, 542: 1539}, - {57: 6618}, - {186: 6602, 531: 2907, 2906, 547: 6603, 608: 2904, 695: 2900, 775: 6623, 806: 6621, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 3846, 817: 6622, 6620, 1095: 6619}, + {1555, 1555, 535: 1555, 544: 1022, 547: 1555, 555: 1022, 1022}, + {1554, 1554, 535: 1554, 547: 1554}, + {1553, 1553, 535: 1553, 544: 1021, 547: 1553, 555: 1021, 1021, 559: 3882, 562: 3881, 569: 3880, 848: 3883, 3884}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4047, 3068, 3069, 3067, 828: 6639, 1344: 6638}, + {536: 1551}, // 3765 - {531: 3893, 938: 6614, 1093: 6624}, - {1552, 1552, 530: 1552, 542: 1552}, - {1551, 1551, 530: 1551, 539: 1014, 542: 1551, 550: 1014, 1014}, - {1550, 1550, 530: 1550, 542: 1550}, - {1549, 1549, 530: 1549, 539: 1013, 542: 1549, 550: 1013, 1013, 554: 3859, 556: 3858, 564: 3857, 842: 3860, 3861}, + {536: 1550, 644: 3915, 1019: 3914, 1100: 3913}, + {1536, 1536, 547: 1536}, + {1552, 1552, 9: 6642, 535: 1552, 547: 1552}, + {561: 6108, 722: 6109, 898: 6640}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3922, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3918, 899: 6641}, // 3770 - {1553, 1553, 9: 6615, 530: 1553, 542: 1553}, - {2: 1256, 1256, 1256, 1256, 1256, 1256, 1256, 10: 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 58: 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 549: 1256, 559: 1256, 836: 5961, 5960, 5959, 934: 5962, 990: 6626}, - {2: 2115, 2115, 2115, 2115, 2115, 2115, 2115, 10: 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 58: 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 549: 4675, 559: 2115, 958: 6627}, - {2: 1555, 1555, 1555, 1555, 1555, 1555, 1555, 10: 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 58: 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 559: 6591, 1196: 6628}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 6629}, + {1540, 1540, 9: 1540, 535: 1540, 547: 1540}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4047, 3068, 3069, 3067, 828: 6643}, + {561: 6108, 722: 6109, 898: 6644}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3922, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3918, 899: 6645}, + {1539, 1539, 9: 1539, 535: 1539, 547: 1539}, // 3775 - {186: 1121, 531: 1121, 1121, 546: 6023, 1121, 557: 1121, 608: 1121, 695: 1121, 963: 6630}, - {186: 6602, 531: 6595, 2906, 547: 6603, 557: 6601, 608: 2904, 695: 2900, 775: 6600, 806: 6598, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 3846, 817: 6599, 6597, 1095: 6596, 1195: 6631}, - {1529, 1529, 530: 6633, 542: 1529, 1398: 6632}, - {1556, 1556, 542: 1556}, - {304: 6634}, + {1557, 1557, 9: 6648, 535: 1557, 547: 1557}, + {1549, 1549, 9: 1549, 535: 1549, 547: 1549}, + {536: 3916, 945: 6649}, + {1548, 1548, 9: 1548, 535: 1548, 547: 1548}, + {57: 6651}, // 3780 - {701: 6635}, - {714: 6636}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4024, 3051, 3052, 3050, 821: 6074, 996: 6075, 1027: 6637}, - {1528, 1528, 9: 6077, 542: 1528}, - {1560, 1560, 531: 6646, 716: 2090}, + {186: 6635, 536: 2924, 2923, 552: 6636, 613: 2921, 661: 2917, 781: 6656, 812: 6654, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 3869, 6655, 6653, 1101: 6652}, + {536: 3916, 945: 6647, 1099: 6657}, + {1561, 1561, 535: 1561, 547: 1561}, + {1560, 1560, 535: 1560, 544: 1022, 547: 1560, 555: 1022, 1022}, + {1559, 1559, 535: 1559, 547: 1559}, // 3785 - {1561, 1561}, - {716: 6641}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6642, 3051, 3052, 3050}, - {1559, 1559, 531: 6643}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 2184, 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3842, 863: 4345, 921: 6644}, + {1558, 1558, 535: 1558, 544: 1021, 547: 1558, 555: 1021, 1021, 559: 3882, 562: 3881, 569: 3880, 848: 3883, 3884}, + {1562, 1562, 9: 6648, 535: 1562, 547: 1562}, + {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, 1264, 1264, 1264, 1264, 1264, 58: 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 554: 1264, 565: 1264, 842: 5984, 5983, 5982, 941: 5985, 996: 6659}, + {2: 2129, 2129, 2129, 2129, 2129, 2129, 2129, 10: 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 58: 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 554: 4698, 565: 2129, 964: 6660}, + {2: 1564, 1564, 1564, 1564, 1564, 1564, 1564, 10: 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 58: 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 565: 6624, 1202: 6661}, // 3790 - {57: 6645}, - {1557, 1557}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 2184, 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 3842, 863: 4345, 921: 6647}, - {57: 6648}, - {1558, 1558}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 6662}, + {186: 1129, 536: 1129, 1129, 551: 6046, 1129, 560: 1129, 613: 1129, 661: 1129, 969: 6663}, + {186: 6635, 536: 6628, 2923, 552: 6636, 560: 6634, 613: 2921, 661: 2917, 781: 6633, 812: 6631, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 3869, 6632, 6630, 1101: 6629, 1201: 6664}, + {1538, 1538, 535: 6666, 547: 1538, 1405: 6665}, + {1565, 1565, 547: 1565}, // 3795 - {2: 2338, 2338, 2338, 2338, 2338, 2338, 2338, 10: 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 58: 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 535: 2338, 538: 2338, 553: 2338, 557: 2338, 578: 2338, 584: 2338, 709: 2338}, - {561: 6746}, - {561: 6660}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 584: 6655, 770: 5954, 3051, 3052, 3050, 907: 6657, 1347: 6656}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 3928, 884: 6654}, + {304: 6667}, + {706: 6668}, + {719: 6669}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4047, 3068, 3069, 3067, 828: 6097, 1002: 6098, 1033: 6670}, + {1537, 1537, 9: 6100, 547: 1537}, // 3800 - {9: 3930, 561: 2269, 712: 2269}, - {561: 2271, 712: 2271}, - {9: 6658, 561: 2270, 712: 2270}, - {9: 2268, 561: 2268, 712: 2268}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 5954, 3051, 3052, 3050, 907: 6659}, + {1569, 1569, 536: 6679, 720: 2104}, + {1570, 1570}, + {720: 6674}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6675, 3068, 3069, 3067}, + {1568, 1568, 536: 6676}, // 3805 - {9: 2267, 561: 2267, 712: 2267}, - {533: 6661}, - {2266, 2266, 17: 2266, 58: 2266, 60: 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 530: 2266, 713: 2266, 949: 6662}, - {2272, 2272, 17: 6689, 58: 6665, 60: 6685, 6678, 6668, 6664, 6672, 6676, 6688, 6671, 6677, 6675, 6673, 6691, 6695, 6686, 6679, 6667, 6687, 6692, 6666, 6669, 6693, 6670, 6674, 6694, 530: 6680, 713: 6690, 945: 6682, 6681, 6684, 6663, 950: 6683}, - {2265, 2265, 17: 2265, 58: 2265, 60: 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 530: 2265, 713: 2265}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 2198, 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3865, 869: 4368, 927: 6677}, + {57: 6678}, + {1566, 1566}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 2198, 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 3865, 869: 4368, 927: 6680}, + {57: 6681}, // 3810 - {555: 2264, 560: 2264}, - {555: 2263, 560: 2263}, - {555: 2262, 560: 2262, 629: 2262, 2262}, - {555: 2261, 560: 2261, 629: 2261, 2261}, - {555: 2260, 560: 2260, 629: 2260, 2260}, + {1567, 1567}, + {2: 2352, 2352, 2352, 2352, 2352, 2352, 2352, 10: 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 58: 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 540: 2352, 543: 2352, 558: 2352, 560: 2352, 583: 2352, 589: 2352, 714: 2352}, + {566: 6779}, + {566: 6693}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 589: 6688, 777: 5977, 3068, 3069, 3067, 913: 6690, 1354: 6689}, // 3815 - {555: 2259, 560: 2259, 629: 2259, 2259}, - {555: 2258, 560: 2258, 629: 2258, 2258}, - {555: 2257, 560: 2257, 629: 2257, 2257}, - {555: 2256, 560: 2256, 629: 2256, 2256}, - {555: 2255, 560: 2255, 629: 2255, 2255}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 3951, 890: 6687}, + {9: 3953, 566: 2283, 717: 2283}, + {566: 2285, 717: 2285}, + {9: 6691, 566: 2284, 717: 2284}, + {9: 2282, 566: 2282, 717: 2282}, // 3820 - {533: 2254, 555: 2254}, - {533: 2253, 555: 2253}, - {533: 2252, 555: 2252}, - {533: 2251, 555: 2251}, - {2: 2250, 2250, 2250, 2250, 2250, 2250, 2250, 10: 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 58: 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 533: 2250, 549: 2250, 552: 2250, 555: 2250}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 5977, 3068, 3069, 3067, 913: 6692}, + {9: 2281, 566: 2281, 717: 2281}, + {538: 6694}, + {2280, 2280, 17: 2280, 58: 2280, 60: 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 535: 2280, 718: 2280, 955: 6695}, + {2286, 2286, 17: 6722, 58: 6698, 60: 6718, 6711, 6701, 6697, 6705, 6709, 6721, 6704, 6710, 6708, 6706, 6724, 6728, 6719, 6712, 6700, 6720, 6725, 6699, 6702, 6726, 6703, 6707, 6727, 535: 6713, 718: 6723, 951: 6715, 6714, 6717, 6696, 956: 6716}, // 3825 - {2: 2249, 2249, 2249, 2249, 2249, 2249, 2249, 10: 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 58: 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 533: 2249, 549: 2249, 552: 2249, 555: 2249}, - {304: 6745}, - {555: 4588, 560: 2316, 802: 6743}, - {555: 4588, 560: 2316, 629: 2316, 2316, 802: 6741}, - {533: 2316, 555: 4588, 802: 6739}, + {2279, 2279, 17: 2279, 58: 2279, 60: 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 535: 2279, 718: 2279}, + {561: 2278, 564: 2278}, + {561: 2277, 564: 2277}, + {561: 2276, 564: 2276, 634: 2276, 2276}, + {561: 2275, 564: 2275, 634: 2275, 2275}, // 3830 - {2: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 10: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 58: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 533: 2316, 549: 2316, 552: 2316, 555: 4588, 802: 6734}, - {533: 2316, 555: 4588, 560: 2316, 802: 6729}, - {533: 2316, 555: 4588, 560: 2316, 802: 6726}, - {555: 4588, 560: 2316, 802: 6721}, - {131: 2316, 154: 2316, 555: 4588, 560: 2316, 802: 6718}, + {561: 2274, 564: 2274, 634: 2274, 2274}, + {561: 2273, 564: 2273, 634: 2273, 2273}, + {561: 2272, 564: 2272, 634: 2272, 2272}, + {561: 2271, 564: 2271, 634: 2271, 2271}, + {561: 2270, 564: 2270, 634: 2270, 2270}, // 3835 - {237: 2316, 2316, 241: 2316, 555: 4588, 560: 2316, 629: 2316, 2316, 802: 6715}, - {237: 2316, 2316, 241: 2316, 555: 4588, 560: 2316, 629: 2316, 2316, 802: 6706}, - {533: 2316, 555: 4588, 802: 6704}, - {533: 2316, 555: 4588, 802: 6702}, - {533: 2316, 555: 4588, 802: 6700}, + {561: 2269, 564: 2269, 634: 2269, 2269}, + {538: 2268, 561: 2268}, + {538: 2267, 561: 2267}, + {538: 2266, 561: 2266}, + {538: 2265, 561: 2265}, // 3840 - {533: 2316, 555: 4588, 802: 6698}, - {533: 2316, 555: 4588, 802: 6696}, - {533: 6697}, - {2227, 2227, 17: 2227, 58: 2227, 60: 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 530: 2227, 713: 2227}, - {533: 6699}, + {2: 2264, 2264, 2264, 2264, 2264, 2264, 2264, 10: 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 58: 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 538: 2264, 554: 2264, 557: 2264, 561: 2264}, + {2: 2263, 2263, 2263, 2263, 2263, 2263, 2263, 10: 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 58: 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 538: 2263, 554: 2263, 557: 2263, 561: 2263}, + {304: 6778}, + {561: 4611, 564: 2330, 808: 6776}, + {561: 4611, 564: 2330, 634: 2330, 2330, 808: 6774}, // 3845 - {2228, 2228, 17: 2228, 58: 2228, 60: 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 530: 2228, 713: 2228}, - {533: 6701}, - {2229, 2229, 17: 2229, 58: 2229, 60: 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 530: 2229, 713: 2229}, - {533: 6703}, - {2230, 2230, 17: 2230, 58: 2230, 60: 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 530: 2230, 713: 2230}, + {538: 2330, 561: 4611, 808: 6772}, + {2: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 10: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 58: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 538: 2330, 554: 2330, 557: 2330, 561: 4611, 808: 6767}, + {538: 2330, 561: 4611, 564: 2330, 808: 6762}, + {538: 2330, 561: 4611, 564: 2330, 808: 6759}, + {561: 4611, 564: 2330, 808: 6754}, // 3850 - {533: 6705}, - {2231, 2231, 17: 2231, 58: 2231, 60: 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 530: 2231, 713: 2231}, - {237: 6712, 6713, 241: 6714, 560: 3037, 629: 6710, 6711, 799: 6709, 998: 6707, 1225: 6708}, - {2233, 2233, 17: 2233, 58: 2233, 60: 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 530: 2233, 713: 2233}, - {2232, 2232, 17: 2232, 58: 2232, 60: 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 530: 2232, 713: 2232}, + {131: 2330, 154: 2330, 561: 4611, 564: 2330, 808: 6751}, + {237: 2330, 2330, 241: 2330, 561: 4611, 564: 2330, 634: 2330, 2330, 808: 6748}, + {237: 2330, 2330, 241: 2330, 561: 4611, 564: 2330, 634: 2330, 2330, 808: 6739}, + {538: 2330, 561: 4611, 808: 6737}, + {538: 2330, 561: 4611, 808: 6735}, // 3855 - {2223, 2223, 9: 2223, 17: 2223, 58: 2223, 60: 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 110: 2223, 2223, 2223, 2223, 2223, 530: 2223, 713: 2223}, - {2222, 2222, 9: 2222, 17: 2222, 58: 2222, 60: 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 110: 2222, 2222, 2222, 2222, 2222, 530: 2222, 713: 2222}, - {2221, 2221, 9: 2221, 17: 2221, 58: 2221, 60: 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 110: 2221, 2221, 2221, 2221, 2221, 530: 2221, 713: 2221}, - {2220, 2220, 17: 2220, 58: 2220, 60: 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 530: 2220, 713: 2220}, - {2219, 2219, 17: 2219, 58: 2219, 60: 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 530: 2219, 713: 2219}, + {538: 2330, 561: 4611, 808: 6733}, + {538: 2330, 561: 4611, 808: 6731}, + {538: 2330, 561: 4611, 808: 6729}, + {538: 6730}, + {2241, 2241, 17: 2241, 58: 2241, 60: 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 535: 2241, 718: 2241}, // 3860 - {2218, 2218, 17: 2218, 58: 2218, 60: 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 530: 2218, 713: 2218}, - {237: 6712, 6713, 241: 6714, 560: 3037, 629: 6710, 6711, 799: 6709, 998: 6716, 1225: 6717}, - {2235, 2235, 17: 2235, 58: 2235, 60: 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 530: 2235, 713: 2235}, - {2234, 2234, 17: 2234, 58: 2234, 60: 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 530: 2234, 713: 2234}, - {131: 3950, 154: 3949, 560: 3037, 799: 3866, 816: 6720, 930: 6719}, + {538: 6732}, + {2242, 2242, 17: 2242, 58: 2242, 60: 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 535: 2242, 718: 2242}, + {538: 6734}, + {2243, 2243, 17: 2243, 58: 2243, 60: 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 535: 2243, 718: 2243}, + {538: 6736}, // 3865 - {2237, 2237, 17: 2237, 58: 2237, 60: 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 530: 2237, 713: 2237}, - {2236, 2236, 17: 2236, 58: 2236, 60: 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 530: 2236, 713: 2236}, - {560: 3037, 799: 3866, 816: 6722}, - {263: 6723}, - {609: 6724}, + {2244, 2244, 17: 2244, 58: 2244, 60: 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 535: 2244, 718: 2244}, + {538: 6738}, + {2245, 2245, 17: 2245, 58: 2245, 60: 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 535: 2245, 718: 2245}, + {237: 6745, 6746, 241: 6747, 564: 3054, 634: 6743, 6744, 805: 6742, 1004: 6740, 1231: 6741}, + {2247, 2247, 17: 2247, 58: 2247, 60: 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 535: 2247, 718: 2247}, // 3870 - {137: 6725}, - {2238, 2238, 17: 2238, 58: 2238, 60: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 530: 2238, 713: 2238}, - {533: 6727, 560: 3037, 799: 3866, 816: 6728}, - {2240, 2240, 17: 2240, 58: 2240, 60: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 530: 2240, 713: 2240}, - {2239, 2239, 17: 2239, 58: 2239, 60: 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 530: 2239, 713: 2239}, + {2246, 2246, 17: 2246, 58: 2246, 60: 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 535: 2246, 718: 2246}, + {2237, 2237, 9: 2237, 17: 2237, 58: 2237, 60: 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 110: 2237, 2237, 2237, 2237, 2237, 535: 2237, 718: 2237}, + {2236, 2236, 9: 2236, 17: 2236, 58: 2236, 60: 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 110: 2236, 2236, 2236, 2236, 2236, 535: 2236, 718: 2236}, + {2235, 2235, 9: 2235, 17: 2235, 58: 2235, 60: 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 110: 2235, 2235, 2235, 2235, 2235, 535: 2235, 718: 2235}, + {2234, 2234, 17: 2234, 58: 2234, 60: 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 535: 2234, 718: 2234}, // 3875 - {533: 6731, 560: 3037, 799: 3866, 816: 6730}, - {2241, 2241, 17: 2241, 58: 2241, 60: 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 118: 3767, 127: 3775, 133: 3763, 137: 3760, 3762, 3759, 3761, 3765, 3766, 3771, 3770, 3769, 3773, 3774, 3768, 3772, 3764, 530: 2241, 713: 2241, 886: 6732}, - {2242, 2242, 17: 2242, 58: 2242, 60: 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 530: 2242, 713: 2242}, - {365: 6733}, - {2243, 2243, 17: 2243, 58: 2243, 60: 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 530: 2243, 713: 2243}, + {2233, 2233, 17: 2233, 58: 2233, 60: 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 535: 2233, 718: 2233}, + {2232, 2232, 17: 2232, 58: 2232, 60: 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 535: 2232, 718: 2232}, + {237: 6745, 6746, 241: 6747, 564: 3054, 634: 6743, 6744, 805: 6742, 1004: 6749, 1231: 6750}, + {2249, 2249, 17: 2249, 58: 2249, 60: 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 535: 2249, 718: 2249}, + {2248, 2248, 17: 2248, 58: 2248, 60: 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 535: 2248, 718: 2248}, // 3880 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 549: 6737, 552: 6738, 770: 3737, 3051, 3052, 3050, 805: 6736, 1473: 6735}, - {2244, 2244, 17: 2244, 58: 2244, 60: 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 530: 2244, 713: 2244}, - {433, 433, 17: 433, 58: 433, 60: 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 530: 433, 713: 433}, - {432, 432, 17: 432, 58: 432, 60: 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 530: 432, 713: 432}, - {431, 431, 17: 431, 58: 431, 60: 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 530: 431, 713: 431}, + {131: 3973, 154: 3972, 564: 3054, 805: 3889, 820: 6753, 937: 6752}, + {2251, 2251, 17: 2251, 58: 2251, 60: 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 535: 2251, 718: 2251}, + {2250, 2250, 17: 2250, 58: 2250, 60: 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 535: 2250, 718: 2250}, + {564: 3054, 805: 3889, 820: 6755}, + {263: 6756}, // 3885 - {533: 6740}, - {2245, 2245, 17: 2245, 58: 2245, 60: 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 530: 2245, 713: 2245}, - {560: 3037, 629: 6710, 6711, 799: 6709, 998: 6742}, - {2246, 2246, 17: 2246, 58: 2246, 60: 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 530: 2246, 713: 2246}, - {560: 3037, 799: 3866, 816: 6744}, + {614: 6757}, + {137: 6758}, + {2252, 2252, 17: 2252, 58: 2252, 60: 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 535: 2252, 718: 2252}, + {538: 6760, 564: 3054, 805: 3889, 820: 6761}, + {2254, 2254, 17: 2254, 58: 2254, 60: 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 535: 2254, 718: 2254}, // 3890 - {2247, 2247, 17: 2247, 58: 2247, 60: 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 530: 2247, 713: 2247}, - {2: 2248, 2248, 2248, 2248, 2248, 2248, 2248, 10: 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 58: 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 533: 2248, 549: 2248, 552: 2248, 555: 2248}, - {533: 6747}, - {2266, 2266, 17: 2266, 58: 2266, 60: 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 530: 2266, 713: 2266, 949: 6748}, - {2273, 2273, 17: 6689, 58: 6665, 60: 6685, 6678, 6668, 6664, 6672, 6676, 6688, 6671, 6677, 6675, 6673, 6691, 6695, 6686, 6679, 6667, 6687, 6692, 6666, 6669, 6693, 6670, 6674, 6694, 530: 6680, 713: 6690, 945: 6682, 6681, 6684, 6663, 950: 6683}, + {2253, 2253, 17: 2253, 58: 2253, 60: 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 535: 2253, 718: 2253}, + {538: 6764, 564: 3054, 805: 3889, 820: 6763}, + {2255, 2255, 17: 2255, 58: 2255, 60: 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 118: 3790, 127: 3798, 133: 3786, 137: 3783, 3785, 3782, 3784, 3788, 3789, 3794, 3793, 3792, 3796, 3797, 3791, 3795, 3787, 535: 2255, 718: 2255, 892: 6765}, + {2256, 2256, 17: 2256, 58: 2256, 60: 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 535: 2256, 718: 2256}, + {366: 6766}, // 3895 - {178: 6753}, - {178: 6751}, - {560: 3037, 799: 4538, 825: 6752}, - {2215, 2215}, - {560: 3037, 799: 4538, 825: 6754}, + {2257, 2257, 17: 2257, 58: 2257, 60: 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 535: 2257, 718: 2257}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 554: 6770, 557: 6771, 777: 3760, 3068, 3069, 3067, 811: 6769, 1480: 6768}, + {2258, 2258, 17: 2258, 58: 2258, 60: 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 535: 2258, 718: 2258}, + {434, 434, 17: 434, 58: 434, 60: 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 535: 434, 718: 434}, + {433, 433, 17: 433, 58: 433, 60: 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 535: 433, 718: 433}, // 3900 - {2275, 2275}, - {155: 6926, 323: 6927}, - {178: 6922}, - {793, 793, 563: 6919, 579: 6918, 1454: 6917}, - {18: 6902, 51: 6903, 132: 6899, 217: 6904, 244: 6901, 608: 6898, 644: 6900, 964: 6905}, + {432, 432, 17: 432, 58: 432, 60: 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 535: 432, 718: 432}, + {538: 6773}, + {2259, 2259, 17: 2259, 58: 2259, 60: 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 535: 2259, 718: 2259}, + {564: 3054, 634: 6743, 6744, 805: 6742, 1004: 6775}, + {2260, 2260, 17: 2260, 58: 2260, 60: 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 535: 2260, 718: 2260}, // 3905 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 6887, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 6888}, - {872, 872, 558: 6882}, - {156: 6881}, - {131: 3950, 154: 3949, 157: 6876, 268: 6875, 930: 6877}, - {868, 868}, + {564: 3054, 805: 3889, 820: 6777}, + {2261, 2261, 17: 2261, 58: 2261, 60: 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 535: 2261, 718: 2261}, + {2: 2262, 2262, 2262, 2262, 2262, 2262, 2262, 10: 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 58: 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 538: 2262, 554: 2262, 557: 2262, 561: 2262}, + {538: 6780}, + {2280, 2280, 17: 2280, 58: 2280, 60: 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 535: 2280, 718: 2280, 955: 6781}, // 3910 - {858, 858, 236: 6857, 280: 6858, 292: 6859, 295: 6856, 318: 6861, 328: 6860, 342: 6863, 345: 6862, 554: 858, 556: 858, 558: 858, 715: 6864, 1272: 6855, 1457: 6854, 6853}, - {866, 866}, - {865, 865}, - {796, 796, 319: 6845, 558: 6844, 563: 796, 579: 796}, - {178: 6841, 219: 6842}, + {2287, 2287, 17: 6722, 58: 6698, 60: 6718, 6711, 6701, 6697, 6705, 6709, 6721, 6704, 6710, 6708, 6706, 6724, 6728, 6719, 6712, 6700, 6720, 6725, 6699, 6702, 6726, 6703, 6707, 6727, 535: 6713, 718: 6723, 951: 6715, 6714, 6717, 6696, 956: 6716}, + {178: 6786}, + {178: 6784}, + {564: 3054, 805: 4561, 833: 6785}, + {2229, 2229}, // 3915 - {561: 841, 606: 841}, - {561: 840, 606: 840}, - {561: 839, 606: 839}, - {836, 836, 563: 836, 579: 836}, - {835, 835, 563: 835, 579: 835}, + {564: 3054, 805: 4561, 833: 6787}, + {2289, 2289}, + {156: 6962, 323: 6963}, + {178: 6958}, + {794, 794, 568: 6955, 584: 6954, 1461: 6953}, // 3920 - {834, 834, 563: 834, 579: 834}, - {833, 833, 563: 833, 579: 833}, - {157: 6839}, - {561: 6809, 606: 6810, 903: 6834}, - {131: 783, 154: 783, 260: 6807, 1222: 6828}, + {18: 6938, 51: 6939, 132: 6935, 218: 6940, 244: 6937, 613: 6934, 649: 6936, 970: 6941}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 6923, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 6924}, + {874, 874, 563: 6918}, + {155: 6917}, + {408: 6915}, // 3925 - {531: 6823}, - {824, 824, 563: 824, 579: 824}, - {822, 822, 563: 822, 579: 822}, - {156: 6821, 180: 6822, 248: 6820}, - {818, 818, 563: 818, 579: 818}, + {131: 3973, 154: 3972, 157: 6910, 268: 6909, 937: 6911}, + {869, 869}, + {859, 859, 236: 6891, 280: 6892, 292: 6893, 295: 6890, 318: 6895, 329: 6894, 343: 6897, 346: 6896, 559: 859, 562: 859, 859, 721: 6898, 1278: 6889, 1464: 6888, 6887}, + {867, 867}, + {866, 866}, // 3930 - {781, 781, 561: 6809, 563: 781, 579: 781, 606: 6810, 903: 6812, 940: 6819}, - {156: 6818}, - {156: 6817}, - {156: 6816}, - {156: 6815}, + {797, 797, 319: 6879, 563: 6878, 568: 797, 584: 797}, + {178: 6875, 220: 6876}, + {566: 842, 611: 842}, + {566: 841, 611: 841}, + {566: 840, 611: 840}, // 3935 - {156: 6814}, - {781, 781, 561: 6809, 563: 781, 579: 781, 606: 6810, 903: 6812, 940: 6811}, - {810, 810, 563: 810, 579: 810}, - {809, 809, 563: 809, 579: 809}, - {808, 808, 563: 808, 579: 808}, + {837, 837, 568: 837, 584: 837}, + {836, 836, 568: 836, 584: 836}, + {835, 835, 568: 835, 584: 835}, + {834, 834, 568: 834, 584: 834}, + {157: 6873}, // 3940 - {807, 807, 563: 807, 579: 807}, - {806, 806, 563: 806, 579: 806}, - {805, 805, 563: 805, 579: 805}, - {804, 804, 563: 804, 579: 804}, - {803, 803, 563: 803, 579: 803}, + {566: 6843, 611: 6844, 909: 6868}, + {131: 784, 154: 784, 260: 6841, 1228: 6862}, + {536: 6857}, + {825, 825, 568: 825, 584: 825}, + {823, 823, 568: 823, 584: 823}, // 3945 - {802, 802, 563: 802, 579: 802}, - {801, 801, 563: 801, 579: 801}, - {800, 800, 563: 800, 579: 800}, - {156: 6808}, - {798, 798, 563: 798, 579: 798}, + {155: 6855, 180: 6856, 248: 6854}, + {819, 819, 568: 819, 584: 819}, + {782, 782, 566: 6843, 568: 782, 584: 782, 611: 6844, 909: 6846, 947: 6853}, + {155: 6852}, + {155: 6851}, // 3950 - {797, 797, 563: 797, 579: 797}, - {156: 789, 180: 789, 248: 789}, - {156: 788, 180: 788, 202: 788, 248: 788}, - {131: 782, 154: 782, 157: 782, 268: 782}, - {799, 799, 563: 799, 579: 799}, + {155: 6850}, + {155: 6849}, + {155: 6848}, + {782, 782, 566: 6843, 568: 782, 584: 782, 611: 6844, 909: 6846, 947: 6845}, + {811, 811, 568: 811, 584: 811}, // 3955 - {2: 838, 838, 838, 838, 838, 838, 838, 10: 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 58: 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838}, - {2: 837, 837, 837, 837, 837, 837, 837, 10: 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 58: 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837}, - {811, 811, 563: 811, 579: 811}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 5954, 3051, 3052, 3050, 907: 6813}, - {780, 780, 563: 780, 579: 780}, + {810, 810, 568: 810, 584: 810}, + {809, 809, 568: 809, 584: 809}, + {808, 808, 568: 808, 584: 808}, + {807, 807, 568: 807, 584: 807}, + {806, 806, 568: 806, 584: 806}, // 3960 - {812, 812, 563: 812, 579: 812}, - {813, 813, 563: 813, 579: 813}, - {814, 814, 563: 814, 579: 814}, - {815, 815, 563: 815, 579: 815}, - {816, 816, 563: 816, 579: 816}, + {805, 805, 568: 805, 584: 805}, + {804, 804, 568: 804, 584: 804}, + {803, 803, 568: 803, 584: 803}, + {802, 802, 568: 802, 584: 802}, + {801, 801, 568: 801, 584: 801}, // 3965 - {817, 817, 563: 817, 579: 817}, - {821, 821, 563: 821, 579: 821}, - {820, 820, 563: 820, 579: 820}, - {819, 819, 563: 819, 579: 819}, - {584: 6824}, + {155: 6842}, + {799, 799, 568: 799, 584: 799}, + {798, 798, 568: 798, 584: 798}, + {155: 790, 180: 790, 248: 790}, + {155: 789, 180: 789, 204: 789, 248: 789}, // 3970 - {57: 6825}, - {314: 6827, 362: 6826}, - {825, 825, 563: 825, 579: 825}, - {823, 823, 563: 823, 579: 823}, - {131: 3950, 154: 3949, 930: 6829}, + {131: 783, 154: 783, 157: 783, 268: 783}, + {800, 800, 568: 800, 584: 800}, + {2: 839, 839, 839, 839, 839, 839, 839, 10: 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 58: 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839}, + {2: 838, 838, 838, 838, 838, 838, 838, 10: 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 58: 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838}, + {812, 812, 568: 812, 584: 812}, // 3975 - {561: 6809, 606: 6810, 903: 6831, 1274: 6830}, - {781, 781, 561: 6809, 563: 781, 579: 781, 606: 6810, 903: 6812, 940: 6833}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 6832}, - {779, 779, 561: 779, 563: 779, 579: 779, 606: 779}, - {826, 826, 563: 826, 579: 826}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 5977, 3068, 3069, 3067, 913: 6847}, + {781, 781, 568: 781, 584: 781}, + {813, 813, 568: 813, 584: 813}, + {814, 814, 568: 814, 584: 814}, + {815, 815, 568: 815, 584: 815}, // 3980 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6835, 3051, 3052, 3050, 804: 6836}, - {1254, 1254, 561: 6809, 563: 1254, 579: 1254, 606: 6810, 716: 3932, 903: 6837}, - {829, 829, 563: 829, 579: 829}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6838, 3051, 3052, 3050}, - {828, 828, 563: 828, 579: 828}, + {816, 816, 568: 816, 584: 816}, + {817, 817, 568: 817, 584: 817}, + {818, 818, 568: 818, 584: 818}, + {822, 822, 568: 822, 584: 822}, + {821, 821, 568: 821, 584: 821}, // 3985 - {781, 781, 561: 6809, 563: 781, 579: 781, 606: 6810, 903: 6812, 940: 6840}, - {831, 831, 563: 831, 579: 831}, - {560: 3037, 799: 4538, 825: 6843}, - {794, 794, 563: 794, 579: 794}, - {863, 863}, + {820, 820, 568: 820, 584: 820}, + {589: 6858}, + {57: 6859}, + {314: 6861, 363: 6860}, + {826, 826, 568: 826, 584: 826}, // 3990 - {608: 6848, 644: 6649, 929: 6847, 1455: 6846}, - {795, 795, 563: 795, 579: 795}, - {864, 864}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 5954, 3051, 3052, 3050, 907: 6852}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 6849}, + {824, 824, 568: 824, 584: 824}, + {131: 3973, 154: 3972, 937: 6863}, + {566: 6843, 611: 6844, 909: 6865, 1280: 6864}, + {782, 782, 566: 6843, 568: 782, 584: 782, 611: 6844, 909: 6846, 947: 6867}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 6866}, // 3995 - {860, 860, 546: 6850}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6851, 3051, 3052, 3050}, - {859, 859}, - {861, 861}, - {845, 845, 554: 845, 556: 845, 558: 6871, 1456: 6870}, + {780, 780, 566: 780, 568: 780, 584: 780, 611: 780}, + {827, 827, 568: 827, 584: 827}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6869, 3068, 3069, 3067, 810: 6870}, + {1262, 1262, 566: 6843, 568: 1262, 584: 1262, 611: 6844, 720: 3955, 909: 6871}, + {830, 830, 568: 830, 584: 830}, // 4000 - {857, 857, 9: 6868, 554: 857, 556: 857, 558: 857}, - {856, 856, 9: 856, 554: 856, 556: 856, 558: 856}, - {854, 854, 9: 854, 554: 854, 556: 854, 558: 854}, - {853, 853, 9: 853, 554: 853, 556: 853, 558: 853}, - {401: 6867}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6872, 3068, 3069, 3067}, + {829, 829, 568: 829, 584: 829}, + {782, 782, 566: 6843, 568: 782, 584: 782, 611: 6844, 909: 6846, 947: 6874}, + {832, 832, 568: 832, 584: 832}, + {564: 3054, 805: 4561, 833: 6877}, // 4005 - {443: 6866}, - {392: 6865}, - {849, 849, 9: 849, 554: 849, 556: 849, 558: 849}, - {848, 848, 9: 848, 554: 848, 556: 848, 558: 848}, - {847, 847, 9: 847, 554: 847, 556: 847, 558: 847}, + {795, 795, 568: 795, 584: 795}, + {864, 864}, + {613: 6882, 649: 6682, 936: 6881, 1462: 6880}, + {796, 796, 568: 796, 584: 796}, + {865, 865}, // 4010 - {846, 846, 9: 846, 554: 846, 556: 846, 558: 846}, - {850, 850, 9: 850, 554: 850, 556: 850, 558: 850}, - {851, 851, 9: 851, 554: 851, 556: 851, 558: 851}, - {852, 852, 9: 852, 554: 852, 556: 852, 558: 852}, - {236: 6857, 280: 6858, 292: 6859, 295: 6856, 318: 6861, 328: 6860, 342: 6863, 345: 6862, 715: 6864, 1272: 6869}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 5977, 3068, 3069, 3067, 913: 6886}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 6883}, + {861, 861, 551: 6884}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6885, 3068, 3069, 3067}, + {860, 860}, // 4015 - {855, 855, 9: 855, 554: 855, 556: 855, 558: 855}, - {1068, 1068, 554: 3859, 556: 3858, 843: 3916, 925: 6874}, - {159: 6872}, - {560: 3037, 799: 4538, 825: 6873}, - {844, 844, 554: 844, 556: 844}, + {862, 862}, + {846, 846, 559: 846, 562: 846, 6905, 1463: 6904}, + {858, 858, 9: 6902, 559: 858, 562: 858, 858}, + {857, 857, 9: 857, 559: 857, 562: 857, 857}, + {855, 855, 9: 855, 559: 855, 562: 855, 855}, // 4020 - {867, 867}, - {869, 869}, - {781, 781, 561: 6809, 563: 781, 579: 781, 606: 6810, 903: 6812, 940: 6880}, - {561: 6809, 606: 6810, 903: 6831, 1274: 6878}, - {781, 781, 561: 6809, 563: 781, 579: 781, 606: 6810, 903: 6812, 940: 6879}, + {854, 854, 9: 854, 559: 854, 562: 854, 854}, + {403: 6901}, + {447: 6900}, + {394: 6899}, + {850, 850, 9: 850, 559: 850, 562: 850, 850}, // 4025 - {827, 827, 563: 827, 579: 827}, - {832, 832, 563: 832, 579: 832}, - {870, 870}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 631: 5853, 770: 3737, 3051, 3052, 3050, 805: 5852, 855: 6883}, - {843, 843, 542: 6885, 1489: 6884}, + {849, 849, 9: 849, 559: 849, 562: 849, 849}, + {848, 848, 9: 848, 559: 848, 562: 848, 848}, + {847, 847, 9: 847, 559: 847, 562: 847, 847}, + {851, 851, 9: 851, 559: 851, 562: 851, 851}, + {852, 852, 9: 852, 559: 852, 562: 852, 852}, // 4030 - {871, 871}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 6295, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 6300, 770: 3737, 3051, 3052, 3050, 805: 5807, 898: 6302, 917: 6303, 6301, 966: 6886}, - {842, 842, 9: 6304}, - {781, 781, 108: 1989, 211: 1989, 546: 1989, 561: 6809, 563: 781, 579: 781, 606: 6810, 710: 1989, 716: 1989, 903: 6812, 940: 6897}, - {108: 1121, 211: 6890, 546: 6023, 710: 1121, 963: 6889}, + {853, 853, 9: 853, 559: 853, 562: 853, 853}, + {236: 6891, 280: 6892, 292: 6893, 295: 6890, 318: 6895, 329: 6894, 343: 6897, 346: 6896, 721: 6898, 1278: 6903}, + {856, 856, 9: 856, 559: 856, 562: 856, 856}, + {1076, 1076, 559: 3882, 562: 3881, 849: 3939, 931: 6908}, + {159: 6906}, // 4035 - {108: 6891, 710: 6892}, - {874, 874}, - {424, 424, 563: 4661, 889: 4662, 6896}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6893, 3051, 3052, 3050}, - {108: 6894}, + {564: 3054, 805: 4561, 833: 6907}, + {845, 845, 559: 845, 562: 845}, + {868, 868}, + {870, 870}, + {782, 782, 566: 6843, 568: 782, 584: 782, 611: 6844, 909: 6846, 947: 6914}, // 4040 - {424, 424, 563: 4661, 889: 4662, 6895}, - {873, 873}, - {875, 875}, - {830, 830, 563: 830, 579: 830}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 6916}, + {566: 6843, 611: 6844, 909: 6865, 1280: 6912}, + {782, 782, 566: 6843, 568: 782, 584: 782, 611: 6844, 909: 6846, 947: 6913}, + {828, 828, 568: 828, 584: 828}, + {833, 833, 568: 833, 584: 833}, + {155: 6916}, // 4045 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 6915}, - {2: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 10: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 58: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 578: 5345, 883: 6913}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 6912}, - {214: 6910}, - {571: 6908}, + {871, 871}, + {872, 872}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 636: 5876, 777: 3760, 3068, 3069, 3067, 811: 5875, 861: 6919}, + {844, 844, 547: 6921, 1496: 6920}, + {873, 873}, // 4050 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 631: 5853, 770: 3737, 3051, 3052, 3050, 805: 5852, 855: 6907}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 6906}, - {862, 862}, - {876, 876}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 535: 4596, 770: 4595, 3051, 3052, 3050, 936: 6909}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 6328, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 6333, 777: 3760, 3068, 3069, 3067, 811: 5830, 904: 6335, 923: 6336, 6334, 972: 6922}, + {843, 843, 9: 6337}, + {782, 782, 108: 2001, 193: 2001, 551: 2001, 566: 6843, 568: 782, 584: 782, 611: 6844, 715: 2001, 720: 2001, 909: 6846, 947: 6933}, + {108: 1129, 193: 6926, 551: 6046, 715: 1129, 969: 6925}, + {108: 6927, 715: 6928}, // 4055 + {876, 876}, + {425, 425, 568: 4684, 895: 4685, 6932}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6929, 3068, 3069, 3067}, + {108: 6930}, + {425, 425, 568: 4684, 895: 4685, 6931}, + // 4060 + {875, 875}, {877, 877}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 5516, 3051, 3052, 3050, 989: 6911}, + {831, 831, 568: 831, 584: 831}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 6952}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 6951}, + // 4065 + {2: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 10: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 58: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 583: 5368, 889: 6949}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 6948}, + {215: 6946}, + {576: 6944}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 636: 5876, 777: 3760, 3068, 3069, 3067, 811: 5875, 861: 6943}, + // 4070 + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 6942}, + {863, 863}, {878, 878}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 540: 4619, 777: 4618, 3068, 3069, 3067, 943: 6945}, {879, 879}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 5954, 3051, 3052, 3050, 907: 6914}, - // 4060 + // 4075 + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 5539, 3068, 3069, 3067, 995: 6947}, {880, 880}, {881, 881}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 5977, 3068, 3069, 3067, 913: 6950}, {882, 882}, - {883, 883}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3682, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3616, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 6921, 3597, 3679, 3596, 3593}, - // 4065 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 6920}, - {791, 791, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {792, 792, 538: 3693, 703: 3694}, - {159: 6924, 560: 3037, 799: 4538, 825: 6923}, - {2277, 2277}, - // 4070 - {560: 3037, 799: 4538, 825: 6925}, - {2276, 2276}, - {156: 6930, 323: 6931}, - {561: 6928}, - {533: 6929}, - // 4075 - {2274, 2274}, - {2279, 2279}, - {561: 6932}, - {533: 6933}, - {2278, 2278}, // 4080 - {155: 6935}, - {561: 6936}, - {533: 6937}, - {2266, 2266, 17: 2266, 58: 2266, 60: 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 530: 2266, 713: 2266, 949: 6938}, - {2280, 2280, 17: 6689, 58: 6665, 60: 6685, 6678, 6668, 6664, 6672, 6676, 6688, 6671, 6677, 6675, 6673, 6691, 6695, 6686, 6679, 6667, 6687, 6692, 6666, 6669, 6693, 6670, 6674, 6694, 530: 6680, 713: 6690, 945: 6682, 6681, 6684, 6663, 950: 6683}, + {883, 883}, + {884, 884}, + {885, 885}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3704, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3638, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 6957, 3619, 3701, 3618, 3615}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 6956}, // 4085 - {155: 6944}, - {22: 6941}, - {178: 6942}, - {560: 3037, 799: 4538, 825: 6943}, - {2216, 2216}, + {792, 792, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {793, 793, 543: 3715, 707: 3716}, + {159: 6960, 564: 3054, 805: 4561, 833: 6959}, + {2291, 2291}, + {564: 3054, 805: 4561, 833: 6961}, // 4090 - {2281, 2281}, - {155: 6950}, - {22: 6947}, - {178: 6948}, - {560: 3037, 799: 4538, 825: 6949}, + {2290, 2290}, + {155: 6966, 323: 6967}, + {566: 6964}, + {538: 6965}, + {2288, 2288}, // 4095 - {2217, 2217}, - {2266, 2266, 17: 2266, 58: 2266, 60: 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 530: 2266, 713: 2266, 949: 6951}, - {2282, 2282, 17: 6689, 58: 6665, 60: 6685, 6678, 6668, 6664, 6672, 6676, 6688, 6671, 6677, 6675, 6673, 6691, 6695, 6686, 6679, 6667, 6687, 6692, 6666, 6669, 6693, 6670, 6674, 6694, 530: 6680, 713: 6690, 945: 6682, 6681, 6684, 6663, 950: 6683}, - {155: 6953}, - {2283, 2283}, + {2293, 2293}, + {566: 6968}, + {538: 6969}, + {2292, 2292}, + {156: 6971}, // 4100 - {712: 6959}, - {712: 6956}, - {533: 6957}, - {2266, 2266, 17: 2266, 58: 2266, 60: 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 530: 2266, 713: 2266, 949: 6958}, - {2284, 2284, 17: 6689, 58: 6665, 60: 6685, 6678, 6668, 6664, 6672, 6676, 6688, 6671, 6677, 6675, 6673, 6691, 6695, 6686, 6679, 6667, 6687, 6692, 6666, 6669, 6693, 6670, 6674, 6694, 530: 6680, 713: 6690, 945: 6682, 6681, 6684, 6663, 950: 6683}, + {566: 6972}, + {538: 6973}, + {2280, 2280, 17: 2280, 58: 2280, 60: 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 535: 2280, 718: 2280, 955: 6974}, + {2294, 2294, 17: 6722, 58: 6698, 60: 6718, 6711, 6701, 6697, 6705, 6709, 6721, 6704, 6710, 6708, 6706, 6724, 6728, 6719, 6712, 6700, 6720, 6725, 6699, 6702, 6726, 6703, 6707, 6727, 535: 6713, 718: 6723, 951: 6715, 6714, 6717, 6696, 956: 6716}, + {156: 6980}, // 4105 - {533: 6960}, - {2266, 2266, 17: 2266, 58: 2266, 60: 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 530: 2266, 713: 2266, 949: 6961}, - {2285, 2285, 17: 6689, 58: 6665, 60: 6685, 6678, 6668, 6664, 6672, 6676, 6688, 6671, 6677, 6675, 6673, 6691, 6695, 6686, 6679, 6667, 6687, 6692, 6666, 6669, 6693, 6670, 6674, 6694, 530: 6680, 713: 6690, 945: 6682, 6681, 6684, 6663, 950: 6683}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6963, 3051, 3052, 3050}, - {2286, 2286}, + {22: 6977}, + {178: 6978}, + {564: 3054, 805: 4561, 833: 6979}, + {2230, 2230}, + {2295, 2295}, // 4110 - {2287, 2287}, - {2306, 2306, 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4024, 3051, 3052, 3050, 821: 6998}, - {2304, 2304}, - {28: 6996}, - {2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 10: 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 58: 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 555: 6985, 716: 2024}, + {156: 6986}, + {22: 6983}, + {178: 6984}, + {564: 3054, 805: 4561, 833: 6985}, + {2231, 2231}, // 4115 - {232: 6971, 531: 2907, 2906, 547: 2905, 552: 2891, 587: 2890, 608: 2904, 695: 2900, 714: 3019, 724: 4646, 775: 4647, 803: 2870, 806: 4648, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 2873, 817: 4654, 4653, 822: 3018, 2871, 4651, 826: 4652, 4650, 833: 2872, 839: 4649, 904: 4655, 920: 6970}, - {2298, 2298}, - {555: 6972}, - {172: 6976, 282: 6979, 301: 6978, 346: 6982, 358: 6975, 6981, 361: 6980, 533: 6974, 639: 6977, 1170: 6973}, - {531: 2907, 2906, 547: 2905, 552: 2891, 587: 2890, 608: 2904, 695: 2900, 714: 3019, 724: 4646, 775: 4647, 803: 2870, 806: 4648, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 2873, 817: 4654, 4653, 822: 3018, 2871, 4651, 826: 4652, 4650, 833: 2872, 839: 4649, 904: 4655, 920: 6984}, + {2280, 2280, 17: 2280, 58: 2280, 60: 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 535: 2280, 718: 2280, 955: 6987}, + {2296, 2296, 17: 6722, 58: 6698, 60: 6718, 6711, 6701, 6697, 6705, 6709, 6721, 6704, 6710, 6708, 6706, 6724, 6728, 6719, 6712, 6700, 6720, 6725, 6699, 6702, 6726, 6703, 6707, 6727, 535: 6713, 718: 6723, 951: 6715, 6714, 6717, 6696, 956: 6716}, + {156: 6989}, + {2297, 2297}, + {717: 6995}, // 4120 - {531: 2907, 2906, 547: 2905, 552: 2891, 587: 2890, 608: 2904, 695: 2900, 714: 3019, 724: 4646, 775: 4647, 803: 2870, 806: 4648, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 2873, 817: 4654, 4653, 822: 3018, 2871, 4651, 826: 4652, 4650, 833: 2872, 839: 4649, 904: 4655, 920: 6983}, - {531: 2295, 2295, 547: 2295, 552: 2295, 558: 2295, 587: 2295, 608: 2295, 695: 2295, 714: 2295, 724: 2295, 803: 2295}, - {531: 2294, 2294, 547: 2294, 552: 2294, 558: 2294, 587: 2294, 608: 2294, 695: 2294, 714: 2294, 724: 2294, 803: 2294}, - {531: 2293, 2293, 547: 2293, 552: 2293, 558: 2293, 587: 2293, 608: 2293, 695: 2293, 714: 2293, 724: 2293, 803: 2293}, - {531: 2292, 2292, 547: 2292, 552: 2292, 558: 2292, 587: 2292, 608: 2292, 695: 2292, 714: 2292, 724: 2292, 803: 2292}, + {717: 6992}, + {538: 6993}, + {2280, 2280, 17: 2280, 58: 2280, 60: 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 535: 2280, 718: 2280, 955: 6994}, + {2298, 2298, 17: 6722, 58: 6698, 60: 6718, 6711, 6701, 6697, 6705, 6709, 6721, 6704, 6710, 6708, 6706, 6724, 6728, 6719, 6712, 6700, 6720, 6725, 6699, 6702, 6726, 6703, 6707, 6727, 535: 6713, 718: 6723, 951: 6715, 6714, 6717, 6696, 956: 6716}, + {538: 6996}, // 4125 - {531: 2291, 2291, 547: 2291, 552: 2291, 558: 2291, 587: 2291, 608: 2291, 695: 2291, 714: 2291, 724: 2291, 803: 2291}, - {531: 2290, 2290, 547: 2290, 552: 2290, 558: 2290, 587: 2290, 608: 2290, 695: 2290, 714: 2290, 724: 2290, 803: 2290}, - {531: 2289, 2289, 547: 2289, 552: 2289, 558: 2289, 587: 2289, 608: 2289, 695: 2289, 714: 2289, 724: 2289, 803: 2289}, - {531: 2288, 2288, 547: 2288, 552: 2288, 558: 2288, 587: 2288, 608: 2288, 695: 2288, 714: 2288, 724: 2288, 803: 2288}, - {2296, 2296}, - // 4130 - {2297, 2297}, - {172: 6976, 282: 6979, 301: 6978, 346: 6982, 358: 6975, 6981, 361: 6980, 533: 6986, 639: 6977, 1170: 6987}, - {531: 2907, 2906, 547: 2905, 552: 2891, 558: 6992, 587: 2890, 608: 2904, 695: 2900, 714: 3019, 724: 4646, 775: 4647, 803: 2870, 806: 4648, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 2873, 817: 4654, 4653, 822: 3018, 2871, 4651, 826: 4652, 4650, 833: 2872, 839: 4649, 904: 4655, 920: 6993}, - {531: 2907, 2906, 547: 2905, 552: 2891, 558: 6988, 587: 2890, 608: 2904, 695: 2900, 714: 3019, 724: 4646, 775: 4647, 803: 2870, 806: 4648, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 2873, 817: 4654, 4653, 822: 3018, 2871, 4651, 826: 4652, 4650, 833: 2872, 839: 4649, 904: 4655, 920: 6989}, - {28: 6990}, - // 4135 - {2299, 2299}, - {560: 3037, 799: 6991}, + {2280, 2280, 17: 2280, 58: 2280, 60: 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 535: 2280, 718: 2280, 955: 6997}, + {2299, 2299, 17: 6722, 58: 6698, 60: 6718, 6711, 6701, 6697, 6705, 6709, 6721, 6704, 6710, 6708, 6706, 6724, 6728, 6719, 6712, 6700, 6720, 6725, 6699, 6702, 6726, 6703, 6707, 6727, 535: 6713, 718: 6723, 951: 6715, 6714, 6717, 6696, 956: 6716}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6999, 3068, 3069, 3067}, {2300, 2300}, - {28: 6994}, {2301, 2301}, + // 4130 + {2320, 2320, 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4047, 3068, 3069, 3067, 828: 7034}, + {2318, 2318}, + {28: 7032}, + {2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 10: 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 58: 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 561: 7021, 720: 2037}, + {232: 7007, 536: 2924, 2923, 552: 2922, 557: 2908, 592: 2907, 613: 2921, 661: 2917, 719: 3036, 729: 4669, 781: 4670, 809: 2887, 812: 4671, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 2890, 4677, 4676, 827: 3035, 829: 2888, 4674, 4675, 4673, 839: 2889, 845: 4672, 910: 4678, 926: 7006}, + // 4135 + {2312, 2312}, + {561: 7008}, + {172: 7012, 282: 7015, 301: 7014, 347: 7018, 359: 7011, 7017, 362: 7016, 538: 7010, 644: 7013, 1176: 7009}, + {536: 2924, 2923, 552: 2922, 557: 2908, 592: 2907, 613: 2921, 661: 2917, 719: 3036, 729: 4669, 781: 4670, 809: 2887, 812: 4671, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 2890, 4677, 4676, 827: 3035, 829: 2888, 4674, 4675, 4673, 839: 2889, 845: 4672, 910: 4678, 926: 7020}, + {536: 2924, 2923, 552: 2922, 557: 2908, 592: 2907, 613: 2921, 661: 2917, 719: 3036, 729: 4669, 781: 4670, 809: 2887, 812: 4671, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 2890, 4677, 4676, 827: 3035, 829: 2888, 4674, 4675, 4673, 839: 2889, 845: 4672, 910: 4678, 926: 7019}, // 4140 - {560: 3037, 799: 6995}, - {2302, 2302}, - {560: 3037, 799: 6997}, - {2303, 2303}, - {2305, 2305}, + {536: 2309, 2309, 552: 2309, 557: 2309, 563: 2309, 592: 2309, 613: 2309, 661: 2309, 719: 2309, 729: 2309, 809: 2309}, + {536: 2308, 2308, 552: 2308, 557: 2308, 563: 2308, 592: 2308, 613: 2308, 661: 2308, 719: 2308, 729: 2308, 809: 2308}, + {536: 2307, 2307, 552: 2307, 557: 2307, 563: 2307, 592: 2307, 613: 2307, 661: 2307, 719: 2307, 729: 2307, 809: 2307}, + {536: 2306, 2306, 552: 2306, 557: 2306, 563: 2306, 592: 2306, 613: 2306, 661: 2306, 719: 2306, 729: 2306, 809: 2306}, + {536: 2305, 2305, 552: 2305, 557: 2305, 563: 2305, 592: 2305, 613: 2305, 661: 2305, 719: 2305, 729: 2305, 809: 2305}, // 4145 - {2313, 2313}, - {555: 7025}, - {84: 2863, 2866, 87: 2896, 2864, 195: 2879, 446: 7021, 531: 2907, 2906, 547: 2905, 552: 2891, 557: 7004, 587: 2890, 608: 2904, 695: 2900, 713: 2862, 3019, 775: 7002, 803: 2870, 806: 7003, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 2873, 817: 7010, 7009, 822: 3018, 2871, 7007, 826: 7008, 7006, 833: 2872, 839: 7005, 845: 7018, 7013, 7016, 7017, 894: 7019, 897: 2880, 943: 7012, 962: 7011, 965: 7015, 967: 7014, 1022: 7020}, - {646, 646, 539: 1013, 550: 1013, 1013, 554: 3859, 556: 3858, 564: 3857, 842: 3860, 3861}, - {648, 648, 539: 1014, 550: 1014, 1014}, + {536: 2304, 2304, 552: 2304, 557: 2304, 563: 2304, 592: 2304, 613: 2304, 661: 2304, 719: 2304, 729: 2304, 809: 2304}, + {536: 2303, 2303, 552: 2303, 557: 2303, 563: 2303, 592: 2303, 613: 2303, 661: 2303, 719: 2303, 729: 2303, 809: 2303}, + {536: 2302, 2302, 552: 2302, 557: 2302, 563: 2302, 592: 2302, 613: 2302, 661: 2302, 719: 2302, 729: 2302, 809: 2302}, + {2310, 2310}, + {2311, 2311}, // 4150 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 6265, 6260, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 6266, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 6263, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 6262, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 6268, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 6261, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 6271, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 6269, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 6264, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 553: 4419, 628: 6277, 652: 6276, 709: 4417, 770: 6274, 3051, 3052, 3050, 853: 6278, 926: 6275, 1096: 6279, 1302: 6272}, + {172: 7012, 282: 7015, 301: 7014, 347: 7018, 359: 7011, 7017, 362: 7016, 538: 7022, 644: 7013, 1176: 7023}, + {536: 2924, 2923, 552: 2922, 557: 2908, 563: 7028, 592: 2907, 613: 2921, 661: 2917, 719: 3036, 729: 4669, 781: 4670, 809: 2887, 812: 4671, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 2890, 4677, 4676, 827: 3035, 829: 2888, 4674, 4675, 4673, 839: 2889, 845: 4672, 910: 4678, 926: 7029}, + {536: 2924, 2923, 552: 2922, 557: 2908, 563: 7024, 592: 2907, 613: 2921, 661: 2917, 719: 3036, 729: 4669, 781: 4670, 809: 2887, 812: 4671, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 2890, 4677, 4676, 827: 3035, 829: 2888, 4674, 4675, 4673, 839: 2889, 845: 4672, 910: 4678, 926: 7025}, + {28: 7026}, + {2313, 2313}, + // 4155 + {564: 3054, 805: 7027}, + {2314, 2314}, + {28: 7030}, + {2315, 2315}, + {564: 3054, 805: 7031}, + // 4160 + {2316, 2316}, + {564: 3054, 805: 7033}, + {2317, 2317}, + {2319, 2319}, + {2327, 2327}, + // 4165 + {561: 7061}, + {84: 2880, 2883, 87: 2913, 2881, 197: 2896, 450: 7057, 536: 2924, 2923, 552: 2922, 557: 2908, 560: 7040, 592: 2907, 613: 2921, 661: 2917, 718: 2879, 3036, 781: 7038, 809: 2887, 812: 7039, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 2890, 7046, 7045, 827: 3035, 829: 2888, 7043, 7044, 7042, 839: 2889, 845: 7041, 851: 7054, 7049, 7052, 7053, 900: 7055, 903: 2897, 950: 7048, 968: 7047, 971: 7051, 973: 7050, 1028: 7056}, + {647, 647, 544: 1021, 555: 1021, 1021, 559: 3882, 562: 3881, 569: 3880, 848: 3883, 3884}, + {649, 649, 544: 1022, 555: 1022, 1022}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 6298, 6293, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 6299, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 6296, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 6295, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 6301, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 6294, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 6304, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 6302, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 6297, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 558: 4442, 633: 6310, 657: 6309, 714: 4440, 777: 6307, 3068, 3069, 3067, 859: 6311, 932: 6308, 1102: 6312, 1308: 6305}, + // 4170 + {654, 654}, {653, 653}, {652, 652}, {651, 651}, {650, 650}, - // 4155 - {649, 649}, - {647, 647}, + // 4175 + {648, 648}, + {646, 646}, {645, 645}, {644, 644}, {643, 643}, - // 4160 + // 4180 {642, 642}, {641, 641}, {640, 640}, {639, 639}, - {638, 638}, - // 4165 - {22: 5771}, - {2311, 2311}, - {555: 7022}, - {533: 7023}, - {84: 2863, 2866, 87: 2896, 2864, 195: 2879, 531: 2907, 2906, 547: 2905, 552: 2891, 557: 7004, 587: 2890, 608: 2904, 695: 2900, 713: 2862, 3019, 775: 7002, 803: 2870, 806: 7003, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 2873, 817: 7010, 7009, 822: 3018, 2871, 7007, 826: 7008, 7006, 833: 2872, 839: 7005, 845: 7018, 7013, 7016, 7017, 894: 7019, 897: 2880, 943: 7012, 962: 7011, 965: 7015, 967: 7014, 1022: 7024}, - // 4170 - {2310, 2310}, - {533: 7026}, - {84: 2863, 2866, 87: 2896, 2864, 195: 2879, 531: 2907, 2906, 547: 2905, 552: 2891, 557: 7004, 587: 2890, 608: 2904, 695: 2900, 713: 2862, 3019, 775: 7002, 803: 2870, 806: 7003, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 2873, 817: 7010, 7009, 822: 3018, 2871, 7007, 826: 7008, 7006, 833: 2872, 839: 7005, 845: 7018, 7013, 7016, 7017, 894: 7019, 897: 2880, 943: 7012, 962: 7011, 965: 7015, 967: 7014, 1022: 7027}, - {2312, 2312}, - {2: 1256, 1256, 1256, 1256, 1256, 1256, 1256, 10: 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 58: 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 549: 1256, 561: 1256, 836: 5961, 5960, 5959, 934: 5962, 990: 7029}, - // 4175 - {2: 1244, 1244, 1244, 1244, 1244, 1244, 1244, 10: 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 58: 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 6342, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 549: 1244, 561: 1244, 1247: 7030}, - {2: 2115, 2115, 2115, 2115, 2115, 2115, 2115, 10: 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 58: 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 549: 4675, 561: 2115, 958: 7031}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 561: 7032, 770: 6346, 3051, 3052, 3050, 1018: 6347, 1084: 6345}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 7034, 3051, 3052, 3050, 804: 6359, 1018: 6347, 1084: 7033}, - {9: 6355, 542: 7037}, - // 4180 - {1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1246, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 58: 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 537: 1254, 542: 1246, 546: 1254, 549: 1254, 556: 1254, 563: 1254, 1254, 1254, 575: 1254, 716: 7035, 1008: 6348}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 584: 6351, 770: 7036, 3051, 3052, 3050}, - {1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1246, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 58: 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 537: 1253, 542: 1246, 546: 1253, 549: 1253, 556: 1253, 563: 1253, 1253, 1253, 575: 1253, 716: 6353, 1008: 6352}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 531: 5973, 643: 5968, 770: 3927, 3051, 3052, 3050, 775: 5972, 804: 5971, 895: 5970, 899: 5969, 5975, 955: 5965, 993: 7038}, - {424, 424, 9: 6019, 563: 4661, 889: 4662, 7039}, + {22: 5794}, // 4185 - {2343, 2343}, - {2346, 2346, 9: 3990}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 7117, 3051, 3052, 3050}, - {2: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 10: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 58: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 578: 4948, 854: 7115}, - {2: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 10: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 58: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 578: 4948, 854: 7106}, + {2325, 2325}, + {561: 7058}, + {538: 7059}, + {84: 2880, 2883, 87: 2913, 2881, 197: 2896, 536: 2924, 2923, 552: 2922, 557: 2908, 560: 7040, 592: 2907, 613: 2921, 661: 2917, 718: 2879, 3036, 781: 7038, 809: 2887, 812: 7039, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 2890, 7046, 7045, 827: 3035, 829: 2888, 7043, 7044, 7042, 839: 2889, 845: 7041, 851: 7054, 7049, 7052, 7053, 900: 7055, 903: 2897, 950: 7048, 968: 7047, 971: 7051, 973: 7050, 1028: 7060}, + {2324, 2324}, // 4190 - {710: 7101}, - {157: 6096, 608: 6095, 1294: 7097}, - {202: 789, 216: 6152}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 578: 7092, 770: 3927, 3051, 3052, 3050, 804: 3928, 884: 7091}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 578: 7088, 631: 5853, 770: 3737, 3051, 3052, 3050, 805: 5852, 855: 5854, 970: 7087}, + {538: 7062}, + {84: 2880, 2883, 87: 2913, 2881, 197: 2896, 536: 2924, 2923, 552: 2922, 557: 2908, 560: 7040, 592: 2907, 613: 2921, 661: 2917, 718: 2879, 3036, 781: 7038, 809: 2887, 812: 7039, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 2890, 7046, 7045, 827: 3035, 829: 2888, 7043, 7044, 7042, 839: 2889, 845: 7041, 851: 7054, 7049, 7052, 7053, 900: 7055, 903: 2897, 950: 7048, 968: 7047, 971: 7051, 973: 7050, 1028: 7063}, + {2326, 2326}, + {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, 1264, 1264, 1264, 1264, 1264, 58: 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 554: 1264, 566: 1264, 842: 5984, 5983, 5982, 941: 5985, 996: 7065}, + {2: 1252, 1252, 1252, 1252, 1252, 1252, 1252, 10: 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 58: 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 6375, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 554: 1252, 566: 1252, 1253: 7066}, // 4195 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 6295, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 6300, 578: 7084, 770: 3737, 3051, 3052, 3050, 805: 5807, 898: 6302, 917: 6303, 6301, 966: 7083}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 7079, 884: 7078}, - {22: 7075}, - {202: 7067}, - {214: 7064}, + {2: 2129, 2129, 2129, 2129, 2129, 2129, 2129, 10: 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 58: 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 554: 4698, 566: 2129, 964: 7067}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 566: 7068, 777: 6379, 3068, 3069, 3067, 1024: 6380, 1090: 6378}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 7070, 3068, 3069, 3067, 810: 6392, 1024: 6380, 1090: 7069}, + {9: 6388, 547: 7073}, + {1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1254, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 58: 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 542: 1262, 547: 1254, 551: 1262, 554: 1262, 562: 1262, 568: 1262, 1262, 1262, 580: 1262, 720: 7071, 1014: 6381}, // 4200 - {571: 7061}, - {2: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 10: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 58: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 578: 4948, 854: 7059}, - {2: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 10: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 58: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 578: 4948, 854: 7057}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 7058}, - {29, 29}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 589: 6384, 777: 7072, 3068, 3069, 3067}, + {1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1254, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 58: 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 542: 1261, 547: 1254, 551: 1261, 554: 1261, 562: 1261, 568: 1261, 1261, 1261, 580: 1261, 720: 6386, 1014: 6385}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 536: 5996, 648: 5991, 777: 3950, 3068, 3069, 3067, 5995, 810: 5994, 901: 5993, 905: 5992, 5998, 961: 5988, 999: 7074}, + {425, 425, 9: 6042, 568: 4684, 895: 4685, 7075}, + {2357, 2357}, // 4205 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 3928, 884: 7060}, - {165, 165, 9: 3930}, - {2: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 10: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 58: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 535: 2119, 578: 4948, 854: 7062}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 535: 4596, 770: 4595, 3051, 3052, 3050, 936: 7063}, - {192, 192}, + {2360, 2360, 9: 4013}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 7153, 3068, 3069, 3067}, + {2: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 10: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 58: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 583: 4971, 860: 7151}, + {2: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 10: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 58: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 583: 4971, 860: 7142}, + {715: 7137}, // 4210 - {2: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 10: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 58: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 578: 4948, 854: 7065}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 5516, 3051, 3052, 3050, 989: 7066}, - {195, 195}, - {558: 7068}, - {531: 2907, 2906, 547: 2905, 552: 2891, 587: 2890, 608: 2904, 695: 2900, 7070, 714: 3019, 775: 6325, 803: 6323, 806: 6326, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 6324, 817: 6328, 6327, 822: 3018, 6330, 6331, 826: 6332, 6329, 944: 7069}, + {157: 6119, 613: 6118, 1300: 7133}, + {204: 790, 217: 6183}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 583: 7128, 777: 3950, 3068, 3069, 3067, 810: 3951, 890: 7127}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 583: 7124, 636: 5876, 777: 3760, 3068, 3069, 3067, 811: 5875, 861: 5877, 976: 7123}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 6328, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 6333, 583: 7120, 777: 3760, 3068, 3069, 3067, 811: 5830, 904: 6335, 923: 6336, 6334, 972: 7119}, // 4215 - {343, 343, 542: 7073}, - {218: 7071}, - {533: 7072}, - {341, 341}, - {531: 2907, 2906, 547: 2905, 552: 2891, 587: 2890, 608: 2904, 695: 2900, 714: 3019, 775: 6325, 803: 6323, 806: 6326, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 6324, 817: 6328, 6327, 822: 3018, 6330, 6331, 826: 6332, 6329, 944: 7074}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 7115, 890: 7114}, + {22: 7111}, + {204: 7103}, + {215: 7100}, + {576: 7097}, // 4220 - {342, 342}, - {178: 7076}, - {560: 3037, 799: 4538, 825: 7077}, - {2214, 2214}, - {2324, 2324, 9: 3930}, + {2: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 10: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 58: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 583: 4971, 860: 7095}, + {2: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 10: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 58: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 583: 4971, 860: 7093}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 7094}, + {29, 29}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 3951, 890: 7096}, // 4225 - {1252, 1252, 9: 1252, 206: 7081, 546: 7080}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 5255, 3051, 3052, 3050, 859: 7082}, - {2322, 2322}, - {2323, 2323, 9: 5256}, - {2326, 2326, 9: 6304}, + {165, 165, 9: 3953}, + {2: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 10: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 58: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 540: 2133, 583: 4971, 860: 7098}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 540: 4619, 777: 4618, 3068, 3069, 3067, 943: 7099}, + {192, 192}, + {2: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 10: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 58: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 583: 4971, 860: 7101}, // 4230 - {645: 7085}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 6295, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 6300, 770: 3737, 3051, 3052, 3050, 805: 5807, 898: 6302, 917: 6303, 6301, 966: 7086}, - {2325, 2325, 9: 6304}, - {2328, 2328, 9: 5856}, - {645: 7089}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 5539, 3068, 3069, 3067, 995: 7102}, + {195, 195}, + {563: 7104}, + {536: 2924, 2923, 552: 2922, 557: 2908, 592: 2907, 613: 2921, 661: 2917, 7106, 719: 3036, 781: 6358, 809: 6356, 812: 6359, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 6357, 6361, 6360, 827: 3035, 829: 6363, 6364, 6365, 6362, 934: 7105}, + {343, 343, 547: 7109}, // 4235 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 631: 5853, 770: 3737, 3051, 3052, 3050, 805: 5852, 855: 5854, 970: 7090}, - {2327, 2327, 9: 5856}, - {2321, 2321, 9: 3930, 728: 5314, 730: 5313, 1012: 7096}, - {645: 7093}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 3928, 884: 7094}, + {219: 7107}, + {538: 7108}, + {341, 341}, + {536: 2924, 2923, 552: 2922, 557: 2908, 592: 2907, 613: 2921, 661: 2917, 719: 3036, 781: 6358, 809: 6356, 812: 6359, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 6357, 6361, 6360, 827: 3035, 829: 6363, 6364, 6365, 6362, 934: 7110}, + {342, 342}, // 4240 - {2321, 2321, 9: 3930, 728: 5314, 730: 5313, 1012: 7095}, - {2329, 2329}, - {2330, 2330}, - {2: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 10: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 58: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 578: 4948, 854: 7098}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 3928, 884: 7099}, + {178: 7112}, + {564: 3054, 805: 4561, 833: 7113}, + {2228, 2228}, + {2338, 2338, 9: 3953}, + {1260, 1260, 9: 1260, 208: 7117, 551: 7116}, // 4245 - {2321, 2321, 9: 3930, 728: 5314, 730: 5313, 1012: 7100}, - {2334, 2334}, - {2: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 10: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 58: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 578: 4948, 854: 7102}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 7103, 3051, 3052, 3050}, - {530: 7104}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 5278, 3068, 3069, 3067, 865: 7118}, + {2336, 2336}, + {2337, 2337, 9: 5279}, + {2340, 2340, 9: 6337}, + {650: 7121}, // 4250 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 7105}, - {2335, 2335}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 7107, 3051, 3052, 3050}, - {530: 7108}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 7109}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 6328, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 6333, 777: 3760, 3068, 3069, 3067, 811: 5830, 904: 6335, 923: 6336, 6334, 972: 7122}, + {2339, 2339, 9: 6337}, + {2342, 2342, 9: 5879}, + {650: 7125}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 636: 5876, 777: 3760, 3068, 3069, 3067, 811: 5875, 861: 5877, 976: 7126}, // 4255 - {2477, 2477, 102: 4719, 562: 4720, 972: 7111, 986: 7110, 1193: 7112}, - {2476, 2476, 102: 4719, 972: 7114}, - {2475, 2475, 562: 4720, 986: 7113}, - {2336, 2336}, - {2473, 2473}, + {2341, 2341, 9: 5879}, + {2335, 2335, 9: 3953, 733: 5337, 735: 5336, 1018: 7132}, + {650: 7129}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 3951, 890: 7130}, + {2335, 2335, 9: 3953, 733: 5337, 735: 5336, 1018: 7131}, // 4260 - {2474, 2474}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 5954, 3051, 3052, 3050, 907: 7116}, - {2337, 2337}, - {2485, 2485}, - {2: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 10: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 58: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 578: 5345, 883: 7589}, + {2343, 2343}, + {2344, 2344}, + {2: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 10: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 58: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 583: 4971, 860: 7134}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 3951, 890: 7135}, + {2335, 2335, 9: 3953, 733: 5337, 735: 5336, 1018: 7136}, // 4265 - {710: 7577}, - {710: 2471}, - {710: 2470}, - {710: 2469}, - {2: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 10: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 58: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 578: 5345, 883: 7554}, + {2348, 2348}, + {2: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 10: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 58: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 583: 4971, 860: 7138}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 7139, 3068, 3069, 3067}, + {535: 7140}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 7141}, // 4270 - {18: 7472, 102: 7471, 132: 2363, 181: 2363, 696: 2363, 1492: 7470}, - {552: 7469}, - {2: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 10: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 58: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 533: 2117, 578: 5345, 631: 2117, 883: 7417}, - {2: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 10: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 58: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 533: 2117, 578: 5345, 883: 7411}, - {202: 7400}, + {2349, 2349}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 7143, 3068, 3069, 3067}, + {535: 7144}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 7145}, + {2491, 2491, 102: 4742, 567: 4743, 978: 7147, 992: 7146, 1199: 7148}, // 4275 - {571: 7341}, - {2: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 10: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 58: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 578: 5345, 883: 7305}, - {2: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 10: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 58: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 578: 5345, 883: 7132}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 7133}, - {531: 7134}, + {2490, 2490, 102: 4742, 978: 7150}, + {2489, 2489, 567: 4743, 992: 7149}, + {2350, 2350}, + {2487, 2487}, + {2488, 2488}, // 4280 - {2: 128, 128, 128, 128, 128, 128, 128, 10: 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 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, 606: 7138, 1194: 7140, 1228: 7139, 1279: 7137, 7136, 1406: 7141, 1463: 7135}, - {9: 7303, 57: 132}, - {9: 130, 57: 130}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 7301, 3051, 3052, 3050}, - {2: 127, 127, 127, 127, 127, 127, 127, 10: 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 58: 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 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: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 5977, 3068, 3069, 3067, 913: 7152}, + {2351, 2351}, + {2499, 2499}, + {2: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 10: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 58: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 583: 5368, 889: 7627}, + {715: 7615}, // 4285 - {2: 126, 126, 126, 126, 126, 126, 126, 10: 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 58: 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126}, - {2: 125, 125, 125, 125, 125, 125, 125, 10: 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 58: 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125}, - {57: 7142}, - {56: 7170, 84: 7162, 2866, 87: 2896, 89: 3017, 92: 7159, 94: 7161, 531: 2907, 2906, 547: 2905, 552: 2891, 554: 7160, 557: 7004, 575: 3020, 577: 2877, 7163, 582: 2875, 587: 2890, 608: 2904, 614: 7166, 617: 7169, 695: 2900, 713: 2862, 3019, 775: 7143, 803: 2870, 806: 7144, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 2873, 817: 7145, 7154, 822: 3018, 2871, 7149, 826: 7150, 7147, 2876, 831: 7168, 833: 2872, 7171, 7172, 839: 7155, 845: 7156, 7151, 7152, 7146, 857: 7153, 2878, 860: 7157, 7148, 866: 7158, 7167, 7176, 7179, 7180, 7175, 7183, 7181, 7182, 7184, 7178, 7185, 7165, 7164, 7173, 7174, 7177}, - {122, 122, 539: 1013, 550: 1013, 1013, 554: 3859, 556: 3858, 564: 3857, 842: 3860, 3861}, + {715: 2485}, + {715: 2484}, + {715: 2483}, + {2: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 10: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 58: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 583: 5368, 889: 7592}, + {18: 7510, 102: 7509, 132: 2377, 181: 2377, 662: 2377, 1499: 7508}, // 4290 - {124, 124, 539: 1014, 550: 1014, 1014}, + {557: 7507}, + {2: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 10: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 58: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 538: 2131, 583: 5368, 636: 2131, 889: 7455}, + {2: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 10: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 58: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 538: 2131, 583: 5368, 889: 7449}, + {204: 7436}, + {576: 7377}, + // 4295 + {2: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 10: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 58: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 583: 5368, 889: 7341}, + {2: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 10: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 58: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 583: 5368, 889: 7168}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 7169}, + {536: 7170}, + {2: 128, 128, 128, 128, 128, 128, 128, 10: 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 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, 611: 7174, 1200: 7176, 1234: 7175, 1285: 7173, 7172, 1413: 7177, 1470: 7171}, + // 4300 + {9: 7339, 57: 132}, + {9: 130, 57: 130}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 7337, 3068, 3069, 3067}, + {2: 127, 127, 127, 127, 127, 127, 127, 10: 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 58: 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127}, + {2: 126, 126, 126, 126, 126, 126, 126, 10: 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 58: 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126}, + // 4305 + {2: 125, 125, 125, 125, 125, 125, 125, 10: 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 58: 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125}, + {57: 7178}, + {56: 7206, 84: 7198, 2883, 87: 2913, 89: 3034, 92: 7195, 94: 7197, 536: 2924, 2923, 552: 2922, 557: 2908, 559: 7196, 7040, 580: 3037, 582: 2894, 7199, 587: 2892, 592: 2907, 613: 2921, 624: 7202, 631: 7205, 661: 2917, 718: 2879, 3036, 781: 7179, 809: 2887, 812: 7180, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 2890, 7181, 7190, 827: 3035, 829: 2888, 7185, 7186, 7183, 834: 2893, 837: 7204, 839: 2889, 7207, 7208, 845: 7191, 851: 7192, 7187, 7188, 7182, 863: 7189, 2895, 866: 7193, 7184, 872: 7194, 7203, 7212, 7215, 7216, 7211, 7219, 7217, 7218, 7220, 7214, 7221, 7201, 7200, 7209, 7210, 7213}, + {122, 122, 544: 1021, 555: 1021, 1021, 559: 3882, 562: 3881, 569: 3880, 848: 3883, 3884}, + {124, 124, 544: 1022, 555: 1022, 1022}, + // 4310 {123, 123}, {121, 121}, {120, 120}, {119, 119}, - // 4295 {118, 118}, + // 4315 {117, 117}, {116, 116}, {115, 115}, {114, 114}, - // 4300 {113, 113}, + // 4320 {112, 112}, {111, 111}, {110, 110}, {105, 105}, - // 4305 - {56: 7300}, - {56: 82, 265: 7291, 561: 7292, 1433: 7290}, - {56: 7289}, - {56: 77, 84: 77, 77, 87: 77, 89: 77, 92: 77, 94: 77, 97: 77, 230: 7242, 531: 77, 77, 547: 77, 552: 77, 554: 77, 557: 77, 575: 77, 577: 77, 77, 582: 77, 587: 77, 608: 77, 614: 77, 617: 77, 695: 77, 713: 77, 77, 803: 77, 828: 77, 831: 77, 834: 77, 77, 1244: 7244, 1427: 7243, 7245}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 7231, 1246: 7232}, - // 4310 + {56: 7336}, + // 4325 + {56: 82, 265: 7327, 566: 7328, 1440: 7326}, + {56: 7325}, + {56: 77, 84: 77, 77, 87: 77, 89: 77, 92: 77, 94: 77, 97: 77, 230: 7278, 536: 77, 77, 552: 77, 557: 77, 559: 77, 77, 580: 77, 582: 77, 77, 587: 77, 592: 77, 613: 77, 624: 77, 631: 77, 661: 77, 718: 77, 77, 809: 77, 834: 77, 837: 77, 840: 77, 77, 1250: 7280, 1434: 7279, 7281}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 7267, 1252: 7268}, {63, 63}, + // 4330 {62, 62}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 589: 7211, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 7208, 1265: 7209, 1445: 7210}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 594: 7247, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 7244, 1271: 7245, 1452: 7246}, {51, 51}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 7203}, - // 4315 - {56: 7170, 84: 7162, 2866, 87: 2896, 89: 3017, 92: 7159, 94: 7161, 531: 2907, 2906, 547: 2905, 552: 2891, 554: 7160, 557: 7004, 575: 3020, 577: 2877, 7163, 582: 2875, 587: 2890, 608: 2904, 614: 7166, 617: 7169, 695: 2900, 713: 2862, 3019, 775: 7143, 803: 2870, 806: 7144, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 2873, 817: 7145, 7154, 822: 3018, 2871, 7149, 826: 7150, 7147, 2876, 831: 7168, 833: 2872, 7171, 7172, 839: 7155, 845: 7156, 7151, 7152, 7146, 857: 7153, 2878, 860: 7157, 7148, 866: 7158, 7167, 7176, 7179, 7180, 7175, 7183, 7181, 7182, 7184, 7178, 7194, 7165, 7164, 7173, 7174, 7177, 935: 7195}, - {1310: 7188}, - {56: 7187}, - {56: 7186}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 7239}, + {56: 7206, 84: 7198, 2883, 87: 2913, 89: 3034, 92: 7195, 94: 7197, 536: 2924, 2923, 552: 2922, 557: 2908, 559: 7196, 7040, 580: 3037, 582: 2894, 7199, 587: 2892, 592: 2907, 613: 2921, 624: 7202, 631: 7205, 661: 2917, 718: 2879, 3036, 781: 7179, 809: 2887, 812: 7180, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 2890, 7181, 7190, 827: 3035, 829: 2888, 7185, 7186, 7183, 834: 2893, 837: 7204, 839: 2889, 7207, 7208, 845: 7191, 851: 7192, 7187, 7188, 7182, 863: 7189, 2895, 866: 7193, 7184, 872: 7194, 7203, 7212, 7215, 7216, 7211, 7219, 7217, 7218, 7220, 7214, 7230, 7201, 7200, 7209, 7210, 7213, 942: 7231}, + // 4335 + {1316: 7224}, + {56: 7223}, + {56: 7222}, {42, 42}, - // 4320 {41, 41}, + // 4340 {40, 40}, {39, 39}, {38, 38}, {37, 37}, - // 4325 {36, 36}, + // 4345 {35, 35}, {34, 34}, {33, 33}, {32, 32}, - // 4330 {31, 31}, + // 4350 {30, 30}, {43, 43}, {44, 44}, - {84: 7162, 617: 7169, 831: 7168, 866: 7189, 7190}, - // 4335 - {47, 47, 56: 7191, 1243: 7193}, - {47, 47, 56: 7191, 1243: 7192}, + {84: 7198, 631: 7205, 837: 7204, 872: 7225, 7226}, + {47, 47, 56: 7227, 1249: 7229}, + // 4355 + {47, 47, 56: 7227, 1249: 7228}, {46, 46}, {45, 45}, {48, 48}, - // 4340 - {7202}, - {56: 7170, 84: 7162, 2866, 87: 2896, 89: 3017, 92: 7159, 94: 7161, 531: 2907, 2906, 547: 2905, 552: 2891, 554: 7160, 557: 7004, 575: 3020, 577: 2877, 7163, 582: 2875, 587: 2890, 608: 2904, 614: 7166, 617: 7169, 695: 2900, 713: 2862, 3019, 775: 7143, 803: 2870, 806: 7144, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 2873, 817: 7145, 7154, 822: 3018, 2871, 7149, 826: 7150, 7147, 2876, 831: 7168, 833: 2872, 7171, 7172, 839: 7155, 845: 7156, 7151, 7152, 7146, 857: 7153, 2878, 860: 7157, 7148, 866: 7158, 7167, 7176, 7179, 7180, 7175, 7183, 7181, 7182, 7184, 7178, 7196, 7165, 7164, 7173, 7174, 7177, 1091: 7197}, - {7201}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 7198}, - {97: 7199, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - // 4345 - {617: 7200}, - {49, 49, 56: 49}, - {56: 70, 84: 70, 70, 87: 70, 89: 70, 92: 70, 94: 70, 97: 70, 531: 70, 70, 547: 70, 552: 70, 554: 70, 557: 70, 575: 70, 577: 70, 70, 582: 70, 587: 70, 589: 70, 70, 608: 70, 614: 70, 617: 70, 695: 70, 713: 70, 70, 803: 70, 828: 70, 831: 70, 834: 70, 70, 1043: 70, 1091: 70}, - {56: 71, 84: 71, 71, 87: 71, 89: 71, 92: 71, 94: 71, 97: 71, 531: 71, 71, 547: 71, 552: 71, 554: 71, 557: 71, 575: 71, 577: 71, 71, 582: 71, 587: 71, 589: 71, 71, 608: 71, 614: 71, 617: 71, 695: 71, 713: 71, 71, 803: 71, 828: 71, 831: 71, 834: 71, 71, 1043: 71, 1091: 71}, - {254: 7204, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - // 4350 - {56: 7170, 84: 7162, 2866, 87: 2896, 89: 3017, 92: 7159, 94: 7161, 531: 2907, 2906, 547: 2905, 552: 2891, 554: 7160, 557: 7004, 575: 3020, 577: 2877, 7163, 582: 2875, 587: 2890, 608: 2904, 614: 7166, 617: 7169, 695: 2900, 713: 2862, 3019, 775: 7143, 803: 2870, 806: 7144, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 2873, 817: 7145, 7154, 822: 3018, 2871, 7149, 826: 7150, 7147, 2876, 831: 7168, 833: 2872, 7171, 7172, 839: 7155, 845: 7156, 7151, 7152, 7146, 857: 7153, 2878, 860: 7157, 7148, 866: 7158, 7167, 7176, 7179, 7180, 7175, 7183, 7181, 7182, 7184, 7178, 7194, 7165, 7164, 7173, 7174, 7177, 935: 7205}, - {56: 7170, 84: 7162, 2866, 87: 2896, 89: 3017, 92: 7159, 94: 7161, 97: 7206, 531: 2907, 2906, 547: 2905, 552: 2891, 554: 7160, 557: 7004, 575: 3020, 577: 2877, 7163, 582: 2875, 587: 2890, 608: 2904, 614: 7166, 617: 7169, 695: 2900, 713: 2862, 3019, 775: 7143, 803: 2870, 806: 7144, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 2873, 817: 7145, 7154, 822: 3018, 2871, 7149, 826: 7150, 7147, 2876, 831: 7168, 833: 2872, 7171, 7172, 839: 7155, 845: 7156, 7151, 7152, 7146, 857: 7153, 2878, 860: 7157, 7148, 866: 7158, 7167, 7176, 7179, 7180, 7175, 7183, 7181, 7182, 7184, 7178, 7196, 7165, 7164, 7173, 7174, 7177}, - {831: 7207}, - {50, 50, 56: 50}, - {566: 3745, 3743, 3744, 3742, 3740, 589: 7223, 800: 3741, 3739, 1276: 7221, 1460: 7222}, - // 4355 - {97: 59, 589: 59, 59}, - {97: 55, 589: 7211, 7216, 1165: 7217, 1265: 7215}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 7212}, - {566: 3745, 3743, 3744, 3742, 3740, 607: 7213, 800: 3741, 3739}, - {56: 7170, 84: 7162, 2866, 87: 2896, 89: 3017, 92: 7159, 94: 7161, 531: 2907, 2906, 547: 2905, 552: 2891, 554: 7160, 557: 7004, 575: 3020, 577: 2877, 7163, 582: 2875, 587: 2890, 608: 2904, 614: 7166, 617: 7169, 695: 2900, 713: 2862, 3019, 775: 7143, 803: 2870, 806: 7144, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 2873, 817: 7145, 7154, 822: 3018, 2871, 7149, 826: 7150, 7147, 2876, 831: 7168, 833: 2872, 7171, 7172, 839: 7155, 845: 7156, 7151, 7152, 7146, 857: 7153, 2878, 860: 7157, 7148, 866: 7158, 7167, 7176, 7179, 7180, 7175, 7183, 7181, 7182, 7184, 7178, 7194, 7165, 7164, 7173, 7174, 7177, 935: 7214}, + {7238}, // 4360 - {56: 7170, 84: 7162, 2866, 87: 2896, 89: 3017, 92: 7159, 94: 7161, 97: 56, 531: 2907, 2906, 547: 2905, 552: 2891, 554: 7160, 557: 7004, 575: 3020, 577: 2877, 7163, 582: 2875, 587: 2890, 589: 56, 56, 608: 2904, 614: 7166, 617: 7169, 695: 2900, 713: 2862, 3019, 775: 7143, 803: 2870, 806: 7144, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 2873, 817: 7145, 7154, 822: 3018, 2871, 7149, 826: 7150, 7147, 2876, 831: 7168, 833: 2872, 7171, 7172, 839: 7155, 845: 7156, 7151, 7152, 7146, 857: 7153, 2878, 860: 7157, 7148, 866: 7158, 7167, 7176, 7179, 7180, 7175, 7183, 7181, 7182, 7184, 7178, 7196, 7165, 7164, 7173, 7174, 7177}, - {97: 58, 589: 58, 58}, - {56: 7170, 84: 7162, 2866, 87: 2896, 89: 3017, 92: 7159, 94: 7161, 531: 2907, 2906, 547: 2905, 552: 2891, 554: 7160, 557: 7004, 575: 3020, 577: 2877, 7163, 582: 2875, 587: 2890, 608: 2904, 614: 7166, 617: 7169, 695: 2900, 713: 2862, 3019, 775: 7143, 803: 2870, 806: 7144, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 2873, 817: 7145, 7154, 822: 3018, 2871, 7149, 826: 7150, 7147, 2876, 831: 7168, 833: 2872, 7171, 7172, 839: 7155, 845: 7156, 7151, 7152, 7146, 857: 7153, 2878, 860: 7157, 7148, 866: 7158, 7167, 7176, 7179, 7180, 7175, 7183, 7181, 7182, 7184, 7178, 7194, 7165, 7164, 7173, 7174, 7177, 935: 7220}, - {97: 7218}, - {614: 7219}, + {56: 7206, 84: 7198, 2883, 87: 2913, 89: 3034, 92: 7195, 94: 7197, 536: 2924, 2923, 552: 2922, 557: 2908, 559: 7196, 7040, 580: 3037, 582: 2894, 7199, 587: 2892, 592: 2907, 613: 2921, 624: 7202, 631: 7205, 661: 2917, 718: 2879, 3036, 781: 7179, 809: 2887, 812: 7180, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 2890, 7181, 7190, 827: 3035, 829: 2888, 7185, 7186, 7183, 834: 2893, 837: 7204, 839: 2889, 7207, 7208, 845: 7191, 851: 7192, 7187, 7188, 7182, 863: 7189, 2895, 866: 7193, 7184, 872: 7194, 7203, 7212, 7215, 7216, 7211, 7219, 7217, 7218, 7220, 7214, 7232, 7201, 7200, 7209, 7210, 7213, 1097: 7233}, + {7237}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 7234}, + {97: 7235, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {631: 7236}, // 4365 - {52, 52}, - {56: 7170, 84: 7162, 2866, 87: 2896, 89: 3017, 92: 7159, 94: 7161, 97: 54, 531: 2907, 2906, 547: 2905, 552: 2891, 554: 7160, 557: 7004, 575: 3020, 577: 2877, 7163, 582: 2875, 587: 2890, 608: 2904, 614: 7166, 617: 7169, 695: 2900, 713: 2862, 3019, 775: 7143, 803: 2870, 806: 7144, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 2873, 817: 7145, 7154, 822: 3018, 2871, 7149, 826: 7150, 7147, 2876, 831: 7168, 833: 2872, 7171, 7172, 839: 7155, 845: 7156, 7151, 7152, 7146, 857: 7153, 2878, 860: 7157, 7148, 866: 7158, 7167, 7176, 7179, 7180, 7175, 7183, 7181, 7182, 7184, 7178, 7196, 7165, 7164, 7173, 7174, 7177}, - {97: 61, 589: 61, 61}, - {97: 55, 589: 7223, 7216, 1165: 7228, 1276: 7227}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 7224}, + {49, 49, 56: 49}, + {56: 70, 84: 70, 70, 87: 70, 89: 70, 92: 70, 94: 70, 97: 70, 536: 70, 70, 552: 70, 557: 70, 559: 70, 70, 580: 70, 582: 70, 70, 587: 70, 592: 70, 594: 70, 70, 613: 70, 624: 70, 631: 70, 661: 70, 718: 70, 70, 809: 70, 834: 70, 837: 70, 840: 70, 70, 1049: 70, 1097: 70}, + {56: 71, 84: 71, 71, 87: 71, 89: 71, 92: 71, 94: 71, 97: 71, 536: 71, 71, 552: 71, 557: 71, 559: 71, 71, 580: 71, 582: 71, 71, 587: 71, 592: 71, 594: 71, 71, 613: 71, 624: 71, 631: 71, 661: 71, 718: 71, 71, 809: 71, 834: 71, 837: 71, 840: 71, 71, 1049: 71, 1097: 71}, + {254: 7240, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {56: 7206, 84: 7198, 2883, 87: 2913, 89: 3034, 92: 7195, 94: 7197, 536: 2924, 2923, 552: 2922, 557: 2908, 559: 7196, 7040, 580: 3037, 582: 2894, 7199, 587: 2892, 592: 2907, 613: 2921, 624: 7202, 631: 7205, 661: 2917, 718: 2879, 3036, 781: 7179, 809: 2887, 812: 7180, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 2890, 7181, 7190, 827: 3035, 829: 2888, 7185, 7186, 7183, 834: 2893, 837: 7204, 839: 2889, 7207, 7208, 845: 7191, 851: 7192, 7187, 7188, 7182, 863: 7189, 2895, 866: 7193, 7184, 872: 7194, 7203, 7212, 7215, 7216, 7211, 7219, 7217, 7218, 7220, 7214, 7230, 7201, 7200, 7209, 7210, 7213, 942: 7241}, // 4370 - {566: 3745, 3743, 3744, 3742, 3740, 607: 7225, 800: 3741, 3739}, - {56: 7170, 84: 7162, 2866, 87: 2896, 89: 3017, 92: 7159, 94: 7161, 531: 2907, 2906, 547: 2905, 552: 2891, 554: 7160, 557: 7004, 575: 3020, 577: 2877, 7163, 582: 2875, 587: 2890, 608: 2904, 614: 7166, 617: 7169, 695: 2900, 713: 2862, 3019, 775: 7143, 803: 2870, 806: 7144, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 2873, 817: 7145, 7154, 822: 3018, 2871, 7149, 826: 7150, 7147, 2876, 831: 7168, 833: 2872, 7171, 7172, 839: 7155, 845: 7156, 7151, 7152, 7146, 857: 7153, 2878, 860: 7157, 7148, 866: 7158, 7167, 7176, 7179, 7180, 7175, 7183, 7181, 7182, 7184, 7178, 7194, 7165, 7164, 7173, 7174, 7177, 935: 7226}, - {56: 7170, 84: 7162, 2866, 87: 2896, 89: 3017, 92: 7159, 94: 7161, 97: 57, 531: 2907, 2906, 547: 2905, 552: 2891, 554: 7160, 557: 7004, 575: 3020, 577: 2877, 7163, 582: 2875, 587: 2890, 589: 57, 57, 608: 2904, 614: 7166, 617: 7169, 695: 2900, 713: 2862, 3019, 775: 7143, 803: 2870, 806: 7144, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 2873, 817: 7145, 7154, 822: 3018, 2871, 7149, 826: 7150, 7147, 2876, 831: 7168, 833: 2872, 7171, 7172, 839: 7155, 845: 7156, 7151, 7152, 7146, 857: 7153, 2878, 860: 7157, 7148, 866: 7158, 7167, 7176, 7179, 7180, 7175, 7183, 7181, 7182, 7184, 7178, 7196, 7165, 7164, 7173, 7174, 7177}, - {97: 60, 589: 60, 60}, - {97: 7229}, + {56: 7206, 84: 7198, 2883, 87: 2913, 89: 3034, 92: 7195, 94: 7197, 97: 7242, 536: 2924, 2923, 552: 2922, 557: 2908, 559: 7196, 7040, 580: 3037, 582: 2894, 7199, 587: 2892, 592: 2907, 613: 2921, 624: 7202, 631: 7205, 661: 2917, 718: 2879, 3036, 781: 7179, 809: 2887, 812: 7180, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 2890, 7181, 7190, 827: 3035, 829: 2888, 7185, 7186, 7183, 834: 2893, 837: 7204, 839: 2889, 7207, 7208, 845: 7191, 851: 7192, 7187, 7188, 7182, 863: 7189, 2895, 866: 7193, 7184, 872: 7194, 7203, 7212, 7215, 7216, 7211, 7219, 7217, 7218, 7220, 7214, 7232, 7201, 7200, 7209, 7210, 7213}, + {837: 7243}, + {50, 50, 56: 50}, + {571: 3768, 3766, 3767, 3765, 3763, 594: 7259, 806: 3764, 3762, 1282: 7257, 1467: 7258}, + {97: 59, 594: 59, 59}, // 4375 - {614: 7230}, - {53, 53}, - {566: 3745, 3743, 3744, 3742, 3740, 607: 7235, 800: 3741, 3739}, - {97: 7233}, - {578: 7234}, + {97: 55, 594: 7247, 7252, 1171: 7253, 1271: 7251}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 7248}, + {571: 3768, 3766, 3767, 3765, 3763, 612: 7249, 806: 3764, 3762}, + {56: 7206, 84: 7198, 2883, 87: 2913, 89: 3034, 92: 7195, 94: 7197, 536: 2924, 2923, 552: 2922, 557: 2908, 559: 7196, 7040, 580: 3037, 582: 2894, 7199, 587: 2892, 592: 2907, 613: 2921, 624: 7202, 631: 7205, 661: 2917, 718: 2879, 3036, 781: 7179, 809: 2887, 812: 7180, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 2890, 7181, 7190, 827: 3035, 829: 2888, 7185, 7186, 7183, 834: 2893, 837: 7204, 839: 2889, 7207, 7208, 845: 7191, 851: 7192, 7187, 7188, 7182, 863: 7189, 2895, 866: 7193, 7184, 872: 7194, 7203, 7212, 7215, 7216, 7211, 7219, 7217, 7218, 7220, 7214, 7230, 7201, 7200, 7209, 7210, 7213, 942: 7250}, + {56: 7206, 84: 7198, 2883, 87: 2913, 89: 3034, 92: 7195, 94: 7197, 97: 56, 536: 2924, 2923, 552: 2922, 557: 2908, 559: 7196, 7040, 580: 3037, 582: 2894, 7199, 587: 2892, 592: 2907, 594: 56, 56, 613: 2921, 624: 7202, 631: 7205, 661: 2917, 718: 2879, 3036, 781: 7179, 809: 2887, 812: 7180, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 2890, 7181, 7190, 827: 3035, 829: 2888, 7185, 7186, 7183, 834: 2893, 837: 7204, 839: 2889, 7207, 7208, 845: 7191, 851: 7192, 7187, 7188, 7182, 863: 7189, 2895, 866: 7193, 7184, 872: 7194, 7203, 7212, 7215, 7216, 7211, 7219, 7217, 7218, 7220, 7214, 7232, 7201, 7200, 7209, 7210, 7213}, // 4380 - {68, 68}, - {56: 7170, 84: 7162, 2866, 87: 2896, 89: 3017, 92: 7159, 94: 7161, 531: 2907, 2906, 547: 2905, 552: 2891, 554: 7160, 557: 7004, 575: 3020, 577: 2877, 7163, 582: 2875, 587: 2890, 608: 2904, 614: 7166, 617: 7169, 695: 2900, 713: 2862, 3019, 775: 7143, 803: 2870, 806: 7144, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 2873, 817: 7145, 7154, 822: 3018, 2871, 7149, 826: 7150, 7147, 2876, 831: 7168, 833: 2872, 7171, 7172, 839: 7155, 845: 7156, 7151, 7152, 7146, 857: 7153, 2878, 860: 7157, 7148, 866: 7158, 7167, 7176, 7179, 7180, 7175, 7183, 7181, 7182, 7184, 7178, 7194, 7165, 7164, 7173, 7174, 7177, 935: 7236}, - {56: 7170, 84: 7162, 2866, 87: 2896, 89: 3017, 92: 7159, 94: 7161, 97: 66, 531: 2907, 2906, 547: 2905, 552: 2891, 554: 7160, 557: 7004, 575: 3020, 577: 2877, 7163, 582: 2875, 587: 2890, 590: 7239, 608: 2904, 614: 7166, 617: 7169, 695: 2900, 713: 2862, 3019, 775: 7143, 803: 2870, 806: 7144, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 2873, 817: 7145, 7154, 822: 3018, 2871, 7149, 826: 7150, 7147, 2876, 831: 7168, 833: 2872, 7171, 7172, 839: 7155, 845: 7156, 7151, 7152, 7146, 857: 7153, 2878, 860: 7157, 7148, 866: 7158, 7167, 7176, 7179, 7180, 7175, 7183, 7181, 7182, 7184, 7178, 7196, 7165, 7164, 7173, 7174, 7177, 1043: 7238, 1423: 7237}, - {97: 67}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 7231, 1246: 7241}, + {97: 58, 594: 58, 58}, + {56: 7206, 84: 7198, 2883, 87: 2913, 89: 3034, 92: 7195, 94: 7197, 536: 2924, 2923, 552: 2922, 557: 2908, 559: 7196, 7040, 580: 3037, 582: 2894, 7199, 587: 2892, 592: 2907, 613: 2921, 624: 7202, 631: 7205, 661: 2917, 718: 2879, 3036, 781: 7179, 809: 2887, 812: 7180, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 2890, 7181, 7190, 827: 3035, 829: 2888, 7185, 7186, 7183, 834: 2893, 837: 7204, 839: 2889, 7207, 7208, 845: 7191, 851: 7192, 7187, 7188, 7182, 863: 7189, 2895, 866: 7193, 7184, 872: 7194, 7203, 7212, 7215, 7216, 7211, 7219, 7217, 7218, 7220, 7214, 7230, 7201, 7200, 7209, 7210, 7213, 942: 7256}, + {97: 7254}, + {624: 7255}, + {52, 52}, // 4385 - {56: 7170, 84: 7162, 2866, 87: 2896, 89: 3017, 92: 7159, 94: 7161, 531: 2907, 2906, 547: 2905, 552: 2891, 554: 7160, 557: 7004, 575: 3020, 577: 2877, 7163, 582: 2875, 587: 2890, 608: 2904, 614: 7166, 617: 7169, 695: 2900, 713: 2862, 3019, 775: 7143, 803: 2870, 806: 7144, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 2873, 817: 7145, 7154, 822: 3018, 2871, 7149, 826: 7150, 7147, 2876, 831: 7168, 833: 2872, 7171, 7172, 839: 7155, 845: 7156, 7151, 7152, 7146, 857: 7153, 2878, 860: 7157, 7148, 866: 7158, 7167, 7176, 7179, 7180, 7175, 7183, 7181, 7182, 7184, 7178, 7194, 7165, 7164, 7173, 7174, 7177, 935: 7240}, - {56: 7170, 84: 7162, 2866, 87: 2896, 89: 3017, 92: 7159, 94: 7161, 97: 64, 531: 2907, 2906, 547: 2905, 552: 2891, 554: 7160, 557: 7004, 575: 3020, 577: 2877, 7163, 582: 2875, 587: 2890, 608: 2904, 614: 7166, 617: 7169, 695: 2900, 713: 2862, 3019, 775: 7143, 803: 2870, 806: 7144, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 2873, 817: 7145, 7154, 822: 3018, 2871, 7149, 826: 7150, 7147, 2876, 831: 7168, 833: 2872, 7171, 7172, 839: 7155, 845: 7156, 7151, 7152, 7146, 857: 7153, 2878, 860: 7157, 7148, 866: 7158, 7167, 7176, 7179, 7180, 7175, 7183, 7181, 7182, 7184, 7178, 7196, 7165, 7164, 7173, 7174, 7177}, - {97: 65}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 7253, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 7254, 3051, 3052, 3050, 1341: 7257, 1355: 7258, 1426: 7255, 1430: 7256}, - {56: 76, 84: 76, 76, 87: 76, 89: 76, 92: 76, 94: 76, 97: 76, 230: 7242, 531: 76, 76, 547: 76, 552: 76, 554: 76, 557: 76, 575: 76, 577: 76, 76, 582: 76, 587: 76, 608: 76, 614: 76, 617: 76, 695: 76, 713: 76, 76, 803: 76, 828: 76, 831: 76, 834: 76, 76, 1244: 7251}, + {56: 7206, 84: 7198, 2883, 87: 2913, 89: 3034, 92: 7195, 94: 7197, 97: 54, 536: 2924, 2923, 552: 2922, 557: 2908, 559: 7196, 7040, 580: 3037, 582: 2894, 7199, 587: 2892, 592: 2907, 613: 2921, 624: 7202, 631: 7205, 661: 2917, 718: 2879, 3036, 781: 7179, 809: 2887, 812: 7180, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 2890, 7181, 7190, 827: 3035, 829: 2888, 7185, 7186, 7183, 834: 2893, 837: 7204, 839: 2889, 7207, 7208, 845: 7191, 851: 7192, 7187, 7188, 7182, 863: 7189, 2895, 866: 7193, 7184, 872: 7194, 7203, 7212, 7215, 7216, 7211, 7219, 7217, 7218, 7220, 7214, 7232, 7201, 7200, 7209, 7210, 7213}, + {97: 61, 594: 61, 61}, + {97: 55, 594: 7259, 7252, 1171: 7264, 1282: 7263}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 7260}, + {571: 3768, 3766, 3767, 3765, 3763, 612: 7261, 806: 3764, 3762}, // 4390 - {7250}, - {56: 73, 84: 73, 73, 87: 73, 89: 73, 92: 73, 94: 73, 97: 73, 531: 73, 73, 547: 73, 552: 73, 554: 73, 557: 73, 575: 73, 577: 73, 73, 582: 73, 587: 73, 608: 73, 614: 73, 617: 73, 695: 73, 713: 73, 73, 803: 73, 828: 73, 831: 73, 834: 73, 73, 1434: 7246}, - {56: 7170, 84: 7162, 2866, 87: 2896, 89: 3017, 92: 7159, 94: 7161, 97: 7248, 531: 2907, 2906, 547: 2905, 552: 2891, 554: 7160, 557: 7004, 575: 3020, 577: 2877, 7163, 582: 2875, 587: 2890, 608: 2904, 614: 7166, 617: 7169, 695: 2900, 713: 2862, 3019, 775: 7143, 803: 2870, 806: 7144, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 2873, 817: 7145, 7154, 822: 3018, 2871, 7149, 826: 7150, 7147, 2876, 831: 7168, 833: 2872, 7171, 7172, 839: 7155, 845: 7156, 7151, 7152, 7146, 857: 7153, 2878, 860: 7157, 7148, 866: 7158, 7167, 7176, 7179, 7180, 7175, 7183, 7181, 7182, 7184, 7178, 7247, 7165, 7164, 7173, 7174, 7177}, - {7249}, - {69, 69, 56: 69}, + {56: 7206, 84: 7198, 2883, 87: 2913, 89: 3034, 92: 7195, 94: 7197, 536: 2924, 2923, 552: 2922, 557: 2908, 559: 7196, 7040, 580: 3037, 582: 2894, 7199, 587: 2892, 592: 2907, 613: 2921, 624: 7202, 631: 7205, 661: 2917, 718: 2879, 3036, 781: 7179, 809: 2887, 812: 7180, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 2890, 7181, 7190, 827: 3035, 829: 2888, 7185, 7186, 7183, 834: 2893, 837: 7204, 839: 2889, 7207, 7208, 845: 7191, 851: 7192, 7187, 7188, 7182, 863: 7189, 2895, 866: 7193, 7184, 872: 7194, 7203, 7212, 7215, 7216, 7211, 7219, 7217, 7218, 7220, 7214, 7230, 7201, 7200, 7209, 7210, 7213, 942: 7262}, + {56: 7206, 84: 7198, 2883, 87: 2913, 89: 3034, 92: 7195, 94: 7197, 97: 57, 536: 2924, 2923, 552: 2922, 557: 2908, 559: 7196, 7040, 580: 3037, 582: 2894, 7199, 587: 2892, 592: 2907, 594: 57, 57, 613: 2921, 624: 7202, 631: 7205, 661: 2917, 718: 2879, 3036, 781: 7179, 809: 2887, 812: 7180, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 2890, 7181, 7190, 827: 3035, 829: 2888, 7185, 7186, 7183, 834: 2893, 837: 7204, 839: 2889, 7207, 7208, 845: 7191, 851: 7192, 7187, 7188, 7182, 863: 7189, 2895, 866: 7193, 7184, 872: 7194, 7203, 7212, 7215, 7216, 7211, 7219, 7217, 7218, 7220, 7214, 7232, 7201, 7200, 7209, 7210, 7213}, + {97: 60, 594: 60, 60}, + {97: 7265}, + {624: 7266}, // 4395 - {56: 72, 84: 72, 72, 87: 72, 89: 72, 92: 72, 94: 72, 97: 72, 531: 72, 72, 547: 72, 552: 72, 554: 72, 557: 72, 575: 72, 577: 72, 72, 582: 72, 587: 72, 608: 72, 614: 72, 617: 72, 695: 72, 713: 72, 72, 803: 72, 828: 72, 831: 72, 834: 72, 72}, - {56: 75, 84: 75, 75, 87: 75, 89: 75, 92: 75, 94: 75, 97: 75, 230: 75, 531: 75, 75, 547: 75, 552: 75, 554: 75, 557: 75, 575: 75, 577: 75, 75, 582: 75, 587: 75, 608: 75, 614: 75, 617: 75, 695: 75, 713: 75, 75, 803: 75, 828: 75, 831: 75, 834: 75, 75}, - {7252}, - {56: 74, 84: 74, 74, 87: 74, 89: 74, 92: 74, 94: 74, 97: 74, 230: 74, 531: 74, 74, 547: 74, 552: 74, 554: 74, 557: 74, 575: 74, 577: 74, 74, 582: 74, 587: 74, 608: 74, 614: 74, 617: 74, 695: 74, 713: 74, 74, 803: 74, 828: 74, 831: 74, 834: 74, 74}, - {9: 2090, 118: 2090, 127: 2090, 172: 2090, 175: 2090, 2090, 2090, 179: 2090, 185: 2090, 188: 2090, 198: 2090, 203: 2090, 2090, 2090, 209: 2090, 2090, 212: 2090, 553: 2090, 557: 2090, 586: 2090, 709: 2090, 732: 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 744: 2090, 2090, 748: 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 1345: 7282}, + {53, 53}, + {571: 3768, 3766, 3767, 3765, 3763, 612: 7271, 806: 3764, 3762}, + {97: 7269}, + {583: 7270}, + {68, 68}, // 4400 - {9: 104, 118: 104, 127: 104, 172: 104, 175: 104, 104, 104, 179: 104, 185: 104, 188: 104, 198: 104, 203: 104, 104, 104, 209: 104, 104, 212: 104, 553: 104, 557: 104, 586: 104, 709: 104, 732: 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 744: 104, 104, 748: 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104}, - {9: 7276, 118: 5005, 127: 5006, 172: 4996, 175: 5016, 5015, 4979, 179: 5018, 185: 5017, 188: 4976, 198: 5012, 203: 4985, 4975, 4994, 209: 5001, 5000, 212: 5004, 553: 4999, 557: 4995, 586: 4990, 709: 4998, 732: 5003, 5002, 4977, 4982, 4980, 4973, 4967, 4981, 4991, 4974, 5008, 744: 4983, 4984, 748: 4968, 4969, 4970, 4971, 4972, 4997, 5010, 5014, 5009, 4965, 5013, 4966, 4978, 4964, 5007, 4963, 5011, 951: 4986, 1025: 4988, 1029: 4962, 4992, 4959, 1038: 4957, 1046: 4960, 4961, 1054: 4958, 1058: 4987, 1062: 4955, 4989, 1083: 4956, 1086: 4993, 1089: 7277, 1098: 5019}, - {261: 7259}, - {261: 97}, - {261: 96}, + {56: 7206, 84: 7198, 2883, 87: 2913, 89: 3034, 92: 7195, 94: 7197, 536: 2924, 2923, 552: 2922, 557: 2908, 559: 7196, 7040, 580: 3037, 582: 2894, 7199, 587: 2892, 592: 2907, 613: 2921, 624: 7202, 631: 7205, 661: 2917, 718: 2879, 3036, 781: 7179, 809: 2887, 812: 7180, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 2890, 7181, 7190, 827: 3035, 829: 2888, 7185, 7186, 7183, 834: 2893, 837: 7204, 839: 2889, 7207, 7208, 845: 7191, 851: 7192, 7187, 7188, 7182, 863: 7189, 2895, 866: 7193, 7184, 872: 7194, 7203, 7212, 7215, 7216, 7211, 7219, 7217, 7218, 7220, 7214, 7230, 7201, 7200, 7209, 7210, 7213, 942: 7272}, + {56: 7206, 84: 7198, 2883, 87: 2913, 89: 3034, 92: 7195, 94: 7197, 97: 66, 536: 2924, 2923, 552: 2922, 557: 2908, 559: 7196, 7040, 580: 3037, 582: 2894, 7199, 587: 2892, 592: 2907, 595: 7275, 613: 2921, 624: 7202, 631: 7205, 661: 2917, 718: 2879, 3036, 781: 7179, 809: 2887, 812: 7180, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 2890, 7181, 7190, 827: 3035, 829: 2888, 7185, 7186, 7183, 834: 2893, 837: 7204, 839: 2889, 7207, 7208, 845: 7191, 851: 7192, 7187, 7188, 7182, 863: 7189, 2895, 866: 7193, 7184, 872: 7194, 7203, 7212, 7215, 7216, 7211, 7219, 7217, 7218, 7220, 7214, 7232, 7201, 7200, 7209, 7210, 7213, 1049: 7274, 1430: 7273}, + {97: 67}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 7267, 1252: 7277}, + {56: 7206, 84: 7198, 2883, 87: 2913, 89: 3034, 92: 7195, 94: 7197, 536: 2924, 2923, 552: 2922, 557: 2908, 559: 7196, 7040, 580: 3037, 582: 2894, 7199, 587: 2892, 592: 2907, 613: 2921, 624: 7202, 631: 7205, 661: 2917, 718: 2879, 3036, 781: 7179, 809: 2887, 812: 7180, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 2890, 7181, 7190, 827: 3035, 829: 2888, 7185, 7186, 7183, 834: 2893, 837: 7204, 839: 2889, 7207, 7208, 845: 7191, 851: 7192, 7187, 7188, 7182, 863: 7189, 2895, 866: 7193, 7184, 872: 7194, 7203, 7212, 7215, 7216, 7211, 7219, 7217, 7218, 7220, 7214, 7230, 7201, 7200, 7209, 7210, 7213, 942: 7276}, // 4405 - {558: 7260}, - {536: 7265, 560: 3037, 799: 7267, 1242: 7263, 1245: 7262, 1281: 7266, 7268, 7264, 1431: 7261}, - {9: 7274, 56: 7170, 84: 7162, 2866, 87: 2896, 89: 3017, 92: 7159, 94: 7161, 531: 2907, 2906, 547: 2905, 552: 2891, 554: 7160, 557: 7004, 575: 3020, 577: 2877, 7163, 582: 2875, 587: 2890, 608: 2904, 614: 7166, 617: 7169, 695: 2900, 713: 2862, 3019, 775: 7143, 803: 2870, 806: 7144, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 2873, 817: 7145, 7154, 822: 3018, 2871, 7149, 826: 7150, 7147, 2876, 831: 7168, 833: 2872, 7171, 7172, 839: 7155, 845: 7156, 7151, 7152, 7146, 857: 7153, 2878, 860: 7157, 7148, 866: 7158, 7167, 7176, 7179, 7180, 7175, 7183, 7181, 7182, 7184, 7178, 7273, 7165, 7164, 7173, 7174, 7177}, - {9: 95, 56: 95, 84: 95, 95, 87: 95, 89: 95, 92: 95, 94: 95, 531: 95, 95, 547: 95, 552: 95, 554: 95, 557: 95, 575: 95, 577: 95, 95, 582: 95, 587: 95, 608: 95, 614: 95, 617: 95, 695: 95, 713: 95, 95, 803: 95, 828: 95, 831: 95, 834: 95, 95}, - {9: 93, 56: 93, 84: 93, 93, 87: 93, 89: 93, 92: 93, 94: 93, 531: 93, 93, 547: 93, 552: 93, 554: 93, 557: 93, 575: 93, 577: 93, 93, 582: 93, 587: 93, 608: 93, 614: 93, 617: 93, 695: 93, 713: 93, 93, 803: 93, 828: 93, 831: 93, 834: 93, 93}, + {56: 7206, 84: 7198, 2883, 87: 2913, 89: 3034, 92: 7195, 94: 7197, 97: 64, 536: 2924, 2923, 552: 2922, 557: 2908, 559: 7196, 7040, 580: 3037, 582: 2894, 7199, 587: 2892, 592: 2907, 613: 2921, 624: 7202, 631: 7205, 661: 2917, 718: 2879, 3036, 781: 7179, 809: 2887, 812: 7180, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 2890, 7181, 7190, 827: 3035, 829: 2888, 7185, 7186, 7183, 834: 2893, 837: 7204, 839: 2889, 7207, 7208, 845: 7191, 851: 7192, 7187, 7188, 7182, 863: 7189, 2895, 866: 7193, 7184, 872: 7194, 7203, 7212, 7215, 7216, 7211, 7219, 7217, 7218, 7220, 7214, 7232, 7201, 7200, 7209, 7210, 7213}, + {97: 65}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 7289, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 7290, 3068, 3069, 3067, 1348: 7293, 1362: 7294, 1433: 7291, 1437: 7292}, + {56: 76, 84: 76, 76, 87: 76, 89: 76, 92: 76, 94: 76, 97: 76, 230: 7278, 536: 76, 76, 552: 76, 557: 76, 559: 76, 76, 580: 76, 582: 76, 76, 587: 76, 592: 76, 613: 76, 624: 76, 631: 76, 661: 76, 718: 76, 76, 809: 76, 834: 76, 837: 76, 840: 76, 76, 1250: 7287}, + {7286}, // 4410 - {9: 92, 56: 92, 84: 92, 92, 87: 92, 89: 92, 92: 92, 94: 92, 531: 92, 92, 547: 92, 552: 92, 554: 92, 557: 92, 575: 92, 577: 92, 92, 582: 92, 587: 92, 608: 92, 614: 92, 617: 92, 695: 92, 713: 92, 92, 803: 92, 828: 92, 831: 92, 834: 92, 92}, - {393: 7272}, - {9: 90, 56: 90, 84: 90, 90, 87: 90, 89: 90, 92: 90, 94: 90, 531: 90, 90, 547: 90, 552: 90, 554: 90, 557: 90, 575: 90, 577: 90, 90, 582: 90, 587: 90, 608: 90, 614: 90, 617: 90, 695: 90, 713: 90, 90, 803: 90, 828: 90, 831: 90, 834: 90, 90}, - {9: 89, 56: 89, 84: 89, 89, 87: 89, 89: 89, 92: 89, 94: 89, 531: 89, 89, 547: 89, 552: 89, 554: 89, 557: 89, 575: 89, 577: 89, 89, 582: 89, 587: 89, 608: 89, 614: 89, 617: 89, 695: 89, 713: 89, 89, 803: 89, 828: 89, 831: 89, 834: 89, 89}, - {186: 7270, 533: 87, 1408: 7269}, + {56: 73, 84: 73, 73, 87: 73, 89: 73, 92: 73, 94: 73, 97: 73, 536: 73, 73, 552: 73, 557: 73, 559: 73, 73, 580: 73, 582: 73, 73, 587: 73, 592: 73, 613: 73, 624: 73, 631: 73, 661: 73, 718: 73, 73, 809: 73, 834: 73, 837: 73, 840: 73, 73, 1441: 7282}, + {56: 7206, 84: 7198, 2883, 87: 2913, 89: 3034, 92: 7195, 94: 7197, 97: 7284, 536: 2924, 2923, 552: 2922, 557: 2908, 559: 7196, 7040, 580: 3037, 582: 2894, 7199, 587: 2892, 592: 2907, 613: 2921, 624: 7202, 631: 7205, 661: 2917, 718: 2879, 3036, 781: 7179, 809: 2887, 812: 7180, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 2890, 7181, 7190, 827: 3035, 829: 2888, 7185, 7186, 7183, 834: 2893, 837: 7204, 839: 2889, 7207, 7208, 845: 7191, 851: 7192, 7187, 7188, 7182, 863: 7189, 2895, 866: 7193, 7184, 872: 7194, 7203, 7212, 7215, 7216, 7211, 7219, 7217, 7218, 7220, 7214, 7283, 7201, 7200, 7209, 7210, 7213}, + {7285}, + {69, 69, 56: 69}, + {56: 72, 84: 72, 72, 87: 72, 89: 72, 92: 72, 94: 72, 97: 72, 536: 72, 72, 552: 72, 557: 72, 559: 72, 72, 580: 72, 582: 72, 72, 587: 72, 592: 72, 613: 72, 624: 72, 631: 72, 661: 72, 718: 72, 72, 809: 72, 834: 72, 837: 72, 840: 72, 72}, // 4415 - {533: 7271}, - {533: 86}, - {9: 88, 56: 88, 84: 88, 88, 87: 88, 89: 88, 92: 88, 94: 88, 531: 88, 88, 547: 88, 552: 88, 554: 88, 557: 88, 575: 88, 577: 88, 88, 582: 88, 587: 88, 608: 88, 614: 88, 617: 88, 695: 88, 713: 88, 88, 803: 88, 828: 88, 831: 88, 834: 88, 88}, - {9: 91, 56: 91, 84: 91, 91, 87: 91, 89: 91, 92: 91, 94: 91, 531: 91, 91, 547: 91, 552: 91, 554: 91, 557: 91, 575: 91, 577: 91, 91, 582: 91, 587: 91, 608: 91, 614: 91, 617: 91, 695: 91, 713: 91, 91, 803: 91, 828: 91, 831: 91, 834: 91, 91}, - {98}, + {56: 75, 84: 75, 75, 87: 75, 89: 75, 92: 75, 94: 75, 97: 75, 230: 75, 536: 75, 75, 552: 75, 557: 75, 559: 75, 75, 580: 75, 582: 75, 75, 587: 75, 592: 75, 613: 75, 624: 75, 631: 75, 661: 75, 718: 75, 75, 809: 75, 834: 75, 837: 75, 840: 75, 75}, + {7288}, + {56: 74, 84: 74, 74, 87: 74, 89: 74, 92: 74, 94: 74, 97: 74, 230: 74, 536: 74, 74, 552: 74, 557: 74, 559: 74, 74, 580: 74, 582: 74, 74, 587: 74, 592: 74, 613: 74, 624: 74, 631: 74, 661: 74, 718: 74, 74, 809: 74, 834: 74, 837: 74, 840: 74, 74}, + {9: 2104, 118: 2104, 127: 2104, 172: 2104, 175: 2104, 2104, 2104, 179: 2104, 185: 2104, 188: 2104, 200: 2104, 205: 2104, 2104, 2104, 211: 2104, 2104, 2104, 558: 2104, 560: 2104, 591: 2104, 714: 2104, 737: 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 749: 2104, 2104, 753: 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 1352: 7318}, + {9: 104, 118: 104, 127: 104, 172: 104, 175: 104, 104, 104, 179: 104, 185: 104, 188: 104, 200: 104, 205: 104, 104, 104, 211: 104, 104, 104, 558: 104, 560: 104, 591: 104, 714: 104, 737: 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 749: 104, 104, 753: 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104}, // 4420 - {536: 7265, 560: 3037, 799: 7267, 1242: 7263, 1245: 7275, 1281: 7266, 7268, 7264}, - {9: 94, 56: 94, 84: 94, 94, 87: 94, 89: 94, 92: 94, 94: 94, 531: 94, 94, 547: 94, 552: 94, 554: 94, 557: 94, 575: 94, 577: 94, 94, 582: 94, 587: 94, 608: 94, 614: 94, 617: 94, 695: 94, 713: 94, 94, 803: 94, 828: 94, 831: 94, 834: 94, 94}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 7281, 3051, 3052, 3050}, - {102, 535: 7278, 1432: 7279}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3131, 3079, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3049, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3163, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3168, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3092, 3570, 3473, 3567, 3242, 3121, 3235, 3236, 3231, 3189, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3170, 3055, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3090, 3112, 3430, 3159, 3219, 3259, 3119, 3175, 3196, 3160, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3174, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3115, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3047, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3230, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3176, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3048, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3152, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3460, 3172, 3461, 3462, 3067, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3479, 3480, 3313, 3552, 3553, 3532, 3531, 3353, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3212, 3229, 3489, 3354, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3497, 3498, 3499, 3225, 3446, 3510, 3511, 3522, 3506, 3507, 3508, 3541, 3171, 531: 3604, 533: 3586, 3602, 3612, 3686, 540: 3617, 3621, 543: 3601, 3600, 3640, 547: 3613, 3577, 552: 3620, 3638, 560: 3581, 578: 3615, 586: 3608, 3639, 614: 3610, 617: 3619, 628: 3684, 3576, 3578, 3622, 636: 3580, 3579, 3584, 3605, 3585, 3691, 3595, 3607, 3614, 3606, 3611, 3583, 3636, 3618, 3623, 3628, 3681, 3629, 3630, 3659, 3598, 3599, 3654, 3655, 3656, 3657, 3658, 3609, 3641, 3651, 3652, 3645, 3660, 3661, 3662, 3646, 3664, 3665, 3647, 3663, 3642, 3650, 3648, 3634, 3666, 3667, 3671, 3624, 3627, 3670, 3676, 3675, 3677, 3674, 3678, 3673, 3672, 3669, 3668, 697: 3626, 3625, 3631, 3632, 711: 3687, 770: 3587, 3051, 3052, 3050, 775: 3603, 3680, 3594, 3588, 3582, 3653, 3591, 3589, 3590, 3633, 3644, 3643, 3637, 3635, 3649, 3692, 3597, 3679, 3596, 3593, 3690, 3689, 3688, 7280}, + {9: 7312, 118: 5028, 127: 5029, 172: 5019, 175: 5039, 5038, 5002, 179: 5041, 185: 5040, 188: 4999, 200: 5035, 205: 5008, 4998, 5017, 211: 5024, 5023, 5027, 558: 5022, 560: 5018, 591: 5013, 714: 5021, 737: 5026, 5025, 5000, 5005, 5003, 4996, 4990, 5004, 5014, 4997, 5031, 749: 5006, 5007, 753: 4991, 4992, 4993, 4994, 4995, 5020, 5033, 5037, 5032, 4988, 5036, 4989, 5001, 4987, 5030, 4986, 5034, 957: 5009, 1031: 5011, 1035: 4985, 5015, 4982, 1044: 4980, 1052: 4983, 4984, 1060: 4981, 1064: 5010, 1068: 4978, 5012, 1089: 4979, 1092: 5016, 1095: 7313, 1104: 5042}, + {261: 7295}, + {261: 97}, + {261: 96}, + {563: 7296}, // 4425 - {100}, - {101, 566: 3745, 3743, 3744, 3742, 3740, 800: 3741, 3739}, - {9: 103, 118: 103, 127: 103, 172: 103, 175: 103, 103, 103, 179: 103, 185: 103, 188: 103, 198: 103, 203: 103, 103, 103, 209: 103, 103, 212: 103, 553: 103, 557: 103, 586: 103, 709: 103, 732: 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 744: 103, 103, 748: 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103}, - {558: 7283}, - {531: 2907, 2906, 547: 2905, 608: 2904, 695: 2900, 775: 7284, 806: 7285, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 3846, 817: 7286, 7287, 1425: 7288}, + {541: 7301, 564: 3054, 805: 7303, 1248: 7299, 1251: 7298, 1287: 7302, 7304, 7300, 1438: 7297}, + {9: 7310, 56: 7206, 84: 7198, 2883, 87: 2913, 89: 3034, 92: 7195, 94: 7197, 536: 2924, 2923, 552: 2922, 557: 2908, 559: 7196, 7040, 580: 3037, 582: 2894, 7199, 587: 2892, 592: 2907, 613: 2921, 624: 7202, 631: 7205, 661: 2917, 718: 2879, 3036, 781: 7179, 809: 2887, 812: 7180, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 2890, 7181, 7190, 827: 3035, 829: 2888, 7185, 7186, 7183, 834: 2893, 837: 7204, 839: 2889, 7207, 7208, 845: 7191, 851: 7192, 7187, 7188, 7182, 863: 7189, 2895, 866: 7193, 7184, 872: 7194, 7203, 7212, 7215, 7216, 7211, 7219, 7217, 7218, 7220, 7214, 7309, 7201, 7200, 7209, 7210, 7213}, + {9: 95, 56: 95, 84: 95, 95, 87: 95, 89: 95, 92: 95, 94: 95, 536: 95, 95, 552: 95, 557: 95, 559: 95, 95, 580: 95, 582: 95, 95, 587: 95, 592: 95, 613: 95, 624: 95, 631: 95, 661: 95, 718: 95, 95, 809: 95, 834: 95, 837: 95, 840: 95, 95}, + {9: 93, 56: 93, 84: 93, 93, 87: 93, 89: 93, 92: 93, 94: 93, 536: 93, 93, 552: 93, 557: 93, 559: 93, 93, 580: 93, 582: 93, 93, 587: 93, 592: 93, 613: 93, 624: 93, 631: 93, 661: 93, 718: 93, 93, 809: 93, 834: 93, 837: 93, 840: 93, 93}, + {9: 92, 56: 92, 84: 92, 92, 87: 92, 89: 92, 92: 92, 94: 92, 536: 92, 92, 552: 92, 557: 92, 559: 92, 92, 580: 92, 582: 92, 92, 587: 92, 592: 92, 613: 92, 624: 92, 631: 92, 661: 92, 718: 92, 92, 809: 92, 834: 92, 837: 92, 840: 92, 92}, // 4430 - {107, 539: 1013, 550: 1013, 1013, 554: 3859, 556: 3858, 564: 3857, 842: 3860, 3861}, - {109, 539: 1014, 550: 1014, 1014}, + {395: 7308}, + {9: 90, 56: 90, 84: 90, 90, 87: 90, 89: 90, 92: 90, 94: 90, 536: 90, 90, 552: 90, 557: 90, 559: 90, 90, 580: 90, 582: 90, 90, 587: 90, 592: 90, 613: 90, 624: 90, 631: 90, 661: 90, 718: 90, 90, 809: 90, 834: 90, 837: 90, 840: 90, 90}, + {9: 89, 56: 89, 84: 89, 89, 87: 89, 89: 89, 92: 89, 94: 89, 536: 89, 89, 552: 89, 557: 89, 559: 89, 89, 580: 89, 582: 89, 89, 587: 89, 592: 89, 613: 89, 624: 89, 631: 89, 661: 89, 718: 89, 89, 809: 89, 834: 89, 837: 89, 840: 89, 89}, + {186: 7306, 538: 87, 1415: 7305}, + {538: 7307}, + // 4435 + {538: 86}, + {9: 88, 56: 88, 84: 88, 88, 87: 88, 89: 88, 92: 88, 94: 88, 536: 88, 88, 552: 88, 557: 88, 559: 88, 88, 580: 88, 582: 88, 88, 587: 88, 592: 88, 613: 88, 624: 88, 631: 88, 661: 88, 718: 88, 88, 809: 88, 834: 88, 837: 88, 840: 88, 88}, + {9: 91, 56: 91, 84: 91, 91, 87: 91, 89: 91, 92: 91, 94: 91, 536: 91, 91, 552: 91, 557: 91, 559: 91, 91, 580: 91, 582: 91, 91, 587: 91, 592: 91, 613: 91, 624: 91, 631: 91, 661: 91, 718: 91, 91, 809: 91, 834: 91, 837: 91, 840: 91, 91}, + {98}, + {541: 7301, 564: 3054, 805: 7303, 1248: 7299, 1251: 7311, 1287: 7302, 7304, 7300}, + // 4440 + {9: 94, 56: 94, 84: 94, 94, 87: 94, 89: 94, 92: 94, 94: 94, 536: 94, 94, 552: 94, 557: 94, 559: 94, 94, 580: 94, 582: 94, 94, 587: 94, 592: 94, 613: 94, 624: 94, 631: 94, 661: 94, 718: 94, 94, 809: 94, 834: 94, 837: 94, 840: 94, 94}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 7317, 3068, 3069, 3067}, + {102, 540: 7314, 1439: 7315}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3150, 3097, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3066, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3182, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3188, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3110, 3592, 3494, 3589, 3262, 3139, 3255, 3256, 3251, 3209, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3190, 3072, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3108, 3130, 3451, 3178, 3239, 3279, 3137, 3195, 3216, 3179, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3194, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3133, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3064, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3250, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3196, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3505, 3203, 3370, 3291, 3065, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3171, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3481, 3192, 3482, 3483, 3084, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3500, 3501, 3334, 3574, 3575, 3554, 3553, 3374, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3232, 3249, 3511, 3375, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3519, 3520, 3521, 3245, 3467, 3532, 3533, 3544, 3183, 3528, 3529, 3530, 3563, 3191, 536: 3626, 538: 3608, 3624, 3634, 3708, 545: 3639, 3643, 548: 3623, 3622, 3662, 552: 3635, 3599, 557: 3642, 3660, 564: 3603, 583: 3637, 591: 3630, 3661, 624: 3632, 631: 3641, 633: 3706, 3598, 3600, 3644, 641: 3602, 3601, 3606, 3627, 3607, 3713, 3617, 3629, 3636, 3628, 3633, 3605, 3658, 3640, 3645, 3650, 3703, 3651, 3652, 3681, 663: 3620, 3621, 3676, 3677, 3678, 3679, 3680, 3631, 3663, 3673, 3674, 3667, 3682, 3683, 3684, 3668, 3686, 3687, 3669, 3685, 3664, 3672, 3670, 3656, 3688, 3689, 3693, 3646, 3649, 3692, 3698, 3697, 3699, 3696, 3700, 3695, 3694, 3691, 3690, 3648, 3647, 3653, 3654, 716: 3709, 777: 3609, 3068, 3069, 3067, 3625, 3702, 3616, 3610, 3604, 3675, 3613, 3611, 3612, 3655, 3666, 3665, 3659, 3657, 3671, 3714, 3619, 3701, 3618, 3615, 3712, 3711, 3710, 7316}, + {100}, + // 4445 + {101, 571: 3768, 3766, 3767, 3765, 3763, 806: 3764, 3762}, + {9: 103, 118: 103, 127: 103, 172: 103, 175: 103, 103, 103, 179: 103, 185: 103, 188: 103, 200: 103, 205: 103, 103, 103, 211: 103, 103, 103, 558: 103, 560: 103, 591: 103, 714: 103, 737: 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 749: 103, 103, 753: 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103}, + {563: 7319}, + {536: 2924, 2923, 552: 2922, 613: 2921, 661: 2917, 781: 7320, 812: 7321, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 3869, 7322, 7323, 1432: 7324}, + {107, 544: 1021, 555: 1021, 1021, 559: 3882, 562: 3881, 569: 3880, 848: 3883, 3884}, + // 4450 + {109, 544: 1022, 555: 1022, 1022}, {108}, {106}, {99}, - // 4435 {83, 83}, - {56: 7294}, - {561: 7293}, + // 4455 + {56: 7330}, + {566: 7329}, {56: 80}, {56: 81}, - // 4440 - {559: 7295}, - {56: 7297, 1429: 7296}, - {84, 84, 9: 7298}, + {565: 7331}, + // 4460 + {56: 7333, 1436: 7332}, + {84, 84, 9: 7334}, {79, 79, 9: 79}, - {56: 7299}, - // 4445 + {56: 7335}, {78, 78, 9: 78}, + // 4465 {85, 85}, - {118: 5005, 127: 5006, 172: 4996, 175: 5016, 5015, 4979, 179: 5018, 185: 5017, 188: 4976, 198: 5012, 203: 4985, 4975, 4994, 209: 5001, 5000, 212: 5004, 553: 4999, 557: 4995, 586: 4990, 709: 4998, 732: 5003, 5002, 4977, 4982, 4980, 4973, 4967, 4981, 4991, 4974, 5008, 744: 4983, 4984, 748: 4968, 4969, 4970, 4971, 4972, 4997, 5010, 5014, 5009, 4965, 5013, 4966, 4978, 4964, 5007, 4963, 5011, 951: 4986, 1025: 4988, 1029: 4962, 4992, 4959, 1038: 4957, 1046: 4960, 4961, 1054: 4958, 1058: 4987, 1062: 4955, 4989, 1083: 4956, 1086: 4993, 1089: 7302, 1098: 5019}, + {118: 5028, 127: 5029, 172: 5019, 175: 5039, 5038, 5002, 179: 5041, 185: 5040, 188: 4999, 200: 5035, 205: 5008, 4998, 5017, 211: 5024, 5023, 5027, 558: 5022, 560: 5018, 591: 5013, 714: 5021, 737: 5026, 5025, 5000, 5005, 5003, 4996, 4990, 5004, 5014, 4997, 5031, 749: 5006, 5007, 753: 4991, 4992, 4993, 4994, 4995, 5020, 5033, 5037, 5032, 4988, 5036, 4989, 5001, 4987, 5030, 4986, 5034, 957: 5009, 1031: 5011, 1035: 4985, 5015, 4982, 1044: 4980, 1052: 4983, 4984, 1060: 4981, 1064: 5010, 1068: 4978, 5012, 1089: 4979, 1092: 5016, 1095: 7338, 1104: 5042}, {9: 129, 57: 129}, - {2: 128, 128, 128, 128, 128, 128, 128, 10: 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 58: 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 606: 7138, 1194: 7140, 1228: 7139, 1279: 7137, 7304}, - // 4450 + {2: 128, 128, 128, 128, 128, 128, 128, 10: 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 58: 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 611: 7174, 1200: 7176, 1234: 7175, 1285: 7173, 7340}, {9: 131, 57: 131}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 7306}, - {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, 86: 7314, 88: 7311, 90: 7317, 7318, 95: 7319, 7312, 98: 7310, 7320, 7316, 7313, 535: 188, 538: 188, 188, 553: 188, 565: 188, 709: 188, 188, 720: 7315, 1014: 7309, 1342: 7307, 1449: 7308}, - {576, 576, 6: 4725, 4727, 580, 15: 4744, 2446, 4742, 4681, 4746, 4733, 4762, 4729, 4726, 4728, 4731, 4732, 4734, 4741, 580, 4752, 4753, 4763, 4739, 4740, 4745, 4747, 4759, 4758, 4767, 4760, 4757, 4750, 4755, 4756, 4749, 4751, 4754, 4743, 4764, 4765, 535: 4724, 538: 2446, 4761, 553: 2446, 565: 5499, 709: 2446, 4730, 865: 4735, 891: 4737, 910: 4736, 931: 4738, 937: 4748, 941: 4766, 1020: 6174, 1141: 7340}, - {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, 86: 7314, 88: 7311, 90: 7317, 7318, 95: 7319, 7312, 98: 7310, 7320, 7316, 7313, 535: 187, 538: 187, 187, 553: 187, 565: 187, 709: 187, 187, 720: 7315, 1014: 7339}, - // 4455 - {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, 86: 186, 88: 186, 90: 186, 186, 95: 186, 186, 98: 186, 186, 186, 186, 535: 186, 538: 186, 186, 553: 186, 565: 186, 709: 186, 186, 720: 186}, - {543: 2316, 2316, 555: 4588, 560: 2316, 723: 7336, 802: 7335}, - {532: 7332, 543: 2316, 2316, 555: 4588, 560: 2316, 802: 7331}, - {543: 2316, 2316, 555: 4588, 560: 2316, 802: 7329}, - {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, 86: 179, 88: 179, 90: 179, 179, 95: 179, 179, 98: 179, 179, 179, 179, 103: 179, 535: 179, 538: 179, 179, 553: 179, 565: 179, 709: 179, 179, 720: 179}, - // 4460 - {90: 7327, 95: 7328, 7325, 720: 7326}, - {543: 2316, 2316, 555: 4588, 560: 2316, 802: 7323}, - {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, 86: 176, 88: 176, 90: 176, 176, 95: 176, 176, 98: 176, 176, 176, 176, 103: 176, 535: 176, 538: 176, 176, 553: 176, 565: 176, 709: 176, 176, 720: 176}, - {543: 2316, 2316, 555: 4588, 560: 2316, 802: 7321}, - {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, 86: 173, 88: 173, 90: 173, 173, 95: 173, 173, 98: 173, 173, 173, 173, 103: 173, 535: 173, 538: 173, 173, 553: 173, 565: 173, 709: 173, 173, 720: 173}, - // 4465 - {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, 86: 171, 88: 171, 90: 171, 171, 95: 171, 171, 98: 171, 171, 171, 171, 103: 171, 535: 171, 538: 171, 171, 553: 171, 565: 171, 709: 171, 171, 720: 171}, - {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, 86: 170, 88: 170, 90: 170, 170, 95: 170, 170, 98: 170, 170, 170, 170, 103: 170, 535: 170, 538: 170, 170, 553: 170, 565: 170, 709: 170, 170, 720: 170}, - {543: 4541, 4542, 560: 3037, 799: 4538, 825: 4540, 911: 7322}, - {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, 86: 174, 88: 174, 90: 174, 174, 95: 174, 174, 98: 174, 174, 174, 174, 103: 174, 535: 174, 538: 174, 174, 553: 174, 565: 174, 709: 174, 174, 720: 174}, - {543: 4541, 4542, 560: 3037, 799: 4538, 825: 4540, 911: 7324}, // 4470 - {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, 86: 177, 88: 177, 90: 177, 177, 95: 177, 177, 98: 177, 177, 177, 177, 103: 177, 535: 177, 538: 177, 177, 553: 177, 565: 177, 709: 177, 177, 720: 177}, - {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, 86: 178, 88: 178, 90: 178, 178, 95: 178, 178, 98: 178, 178, 178, 178, 103: 178, 535: 178, 538: 178, 178, 553: 178, 565: 178, 709: 178, 178, 720: 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, 86: 175, 88: 175, 90: 175, 175, 95: 175, 175, 98: 175, 175, 175, 175, 103: 175, 535: 175, 538: 175, 175, 553: 175, 565: 175, 709: 175, 175, 720: 175}, - {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, 86: 172, 88: 172, 90: 172, 172, 95: 172, 172, 98: 172, 172, 172, 172, 103: 172, 535: 172, 538: 172, 172, 553: 172, 565: 172, 709: 172, 172, 720: 172}, - {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, 86: 169, 88: 169, 90: 169, 169, 95: 169, 169, 98: 169, 169, 169, 169, 103: 169, 535: 169, 538: 169, 169, 553: 169, 565: 169, 709: 169, 169, 720: 169}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 7342}, + {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, 86: 7350, 88: 7347, 90: 7353, 7354, 95: 7355, 7348, 98: 7346, 7356, 7352, 7349, 540: 188, 543: 188, 188, 558: 188, 570: 188, 714: 188, 188, 725: 7351, 1020: 7345, 1349: 7343, 1456: 7344}, + {577, 577, 6: 4748, 4750, 581, 15: 4767, 2460, 4765, 4704, 4769, 4756, 4785, 4752, 4749, 4751, 4754, 4755, 4757, 4764, 581, 4775, 4776, 4786, 4762, 4763, 4768, 4770, 4782, 4781, 4790, 4783, 4780, 4773, 4778, 4779, 4772, 4774, 4777, 4766, 4787, 4788, 540: 4747, 543: 2460, 4784, 558: 2460, 570: 5522, 714: 2460, 4753, 871: 4758, 897: 4760, 916: 4759, 938: 4761, 944: 4771, 948: 4789, 1026: 6205, 1147: 7376}, + {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, 86: 7350, 88: 7347, 90: 7353, 7354, 95: 7355, 7348, 98: 7346, 7356, 7352, 7349, 540: 187, 543: 187, 187, 558: 187, 570: 187, 714: 187, 187, 725: 7351, 1020: 7375}, + {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, 86: 186, 88: 186, 90: 186, 186, 95: 186, 186, 98: 186, 186, 186, 186, 540: 186, 543: 186, 186, 558: 186, 570: 186, 714: 186, 186, 725: 186}, // 4475 - {543: 4541, 4542, 560: 3037, 799: 4538, 825: 4540, 911: 7330}, - {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, 86: 180, 88: 180, 90: 180, 180, 95: 180, 180, 98: 180, 180, 180, 180, 103: 180, 535: 180, 538: 180, 180, 553: 180, 565: 180, 709: 180, 180, 720: 180}, - {543: 4541, 4542, 560: 3037, 799: 4538, 825: 4540, 911: 7334}, - {543: 4541, 4542, 560: 3037, 799: 4538, 825: 4540, 911: 7333}, - {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, 86: 181, 88: 181, 90: 181, 181, 95: 181, 181, 98: 181, 181, 181, 181, 103: 181, 535: 181, 538: 181, 181, 553: 181, 565: 181, 709: 181, 181, 720: 181}, + {548: 2330, 2330, 561: 4611, 564: 2330, 728: 7372, 808: 7371}, + {537: 7368, 548: 2330, 2330, 561: 4611, 564: 2330, 808: 7367}, + {548: 2330, 2330, 561: 4611, 564: 2330, 808: 7365}, + {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, 86: 179, 88: 179, 90: 179, 179, 95: 179, 179, 98: 179, 179, 179, 179, 103: 179, 540: 179, 543: 179, 179, 558: 179, 570: 179, 714: 179, 179, 725: 179}, + {90: 7363, 95: 7364, 7361, 725: 7362}, // 4480 - {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, 86: 182, 88: 182, 90: 182, 182, 95: 182, 182, 98: 182, 182, 182, 182, 103: 182, 535: 182, 538: 182, 182, 553: 182, 565: 182, 709: 182, 182, 720: 182}, - {543: 4541, 4542, 560: 3037, 799: 4538, 825: 4540, 911: 7338}, - {543: 4541, 4542, 560: 3037, 799: 4538, 825: 4540, 911: 7337}, - {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, 86: 183, 88: 183, 90: 183, 183, 95: 183, 183, 98: 183, 183, 183, 183, 103: 183, 535: 183, 538: 183, 183, 553: 183, 565: 183, 709: 183, 183, 720: 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, 86: 184, 88: 184, 90: 184, 184, 95: 184, 184, 98: 184, 184, 184, 184, 103: 184, 535: 184, 538: 184, 184, 553: 184, 565: 184, 709: 184, 184, 720: 184}, + {548: 2330, 2330, 561: 4611, 564: 2330, 808: 7359}, + {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, 86: 176, 88: 176, 90: 176, 176, 95: 176, 176, 98: 176, 176, 176, 176, 103: 176, 540: 176, 543: 176, 176, 558: 176, 570: 176, 714: 176, 176, 725: 176}, + {548: 2330, 2330, 561: 4611, 564: 2330, 808: 7357}, + {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, 86: 173, 88: 173, 90: 173, 173, 95: 173, 173, 98: 173, 173, 173, 173, 103: 173, 540: 173, 543: 173, 173, 558: 173, 570: 173, 714: 173, 173, 725: 173}, + {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, 86: 171, 88: 171, 90: 171, 171, 95: 171, 171, 98: 171, 171, 171, 171, 103: 171, 540: 171, 543: 171, 171, 558: 171, 570: 171, 714: 171, 171, 725: 171}, // 4485 - {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, 86: 185, 88: 185, 90: 185, 185, 95: 185, 185, 98: 185, 185, 185, 185, 535: 185, 538: 185, 185, 553: 185, 565: 185, 709: 185, 185, 720: 185}, - {189, 189}, - {2: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 10: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 58: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 535: 2117, 578: 5345, 883: 7342}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 535: 4596, 770: 4595, 3051, 3052, 3050, 936: 7343}, - {110: 7350, 7348, 7347, 7349, 7346, 977: 7344, 1255: 7345}, + {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, 86: 170, 88: 170, 90: 170, 170, 95: 170, 170, 98: 170, 170, 170, 170, 103: 170, 540: 170, 543: 170, 170, 558: 170, 570: 170, 714: 170, 170, 725: 170}, + {548: 4564, 4565, 564: 3054, 805: 4561, 833: 4563, 917: 7358}, + {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, 86: 174, 88: 174, 90: 174, 174, 95: 174, 174, 98: 174, 174, 174, 174, 103: 174, 540: 174, 543: 174, 174, 558: 174, 570: 174, 714: 174, 174, 725: 174}, + {548: 4564, 4565, 564: 3054, 805: 4561, 833: 4563, 917: 7360}, + {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, 86: 177, 88: 177, 90: 177, 177, 95: 177, 177, 98: 177, 177, 177, 177, 103: 177, 540: 177, 543: 177, 177, 558: 177, 570: 177, 714: 177, 177, 725: 177}, // 4490 - {2845, 2845, 9: 2845, 110: 2845, 2845, 2845, 2845, 2845}, - {194, 194, 9: 7398, 110: 7350, 7348, 7347, 7349, 7346, 977: 7397}, - {555: 4588, 560: 2316, 802: 7395}, - {311: 2316, 321: 2316, 2316, 555: 4588, 802: 7390}, - {2822, 2822, 9: 2822, 110: 2822, 2822, 2822, 2822, 2822, 555: 4588, 560: 2316, 629: 2316, 2316, 802: 7388}, + {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, 86: 178, 88: 178, 90: 178, 178, 95: 178, 178, 98: 178, 178, 178, 178, 103: 178, 540: 178, 543: 178, 178, 558: 178, 570: 178, 714: 178, 178, 725: 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, 86: 175, 88: 175, 90: 175, 175, 95: 175, 175, 98: 175, 175, 175, 175, 103: 175, 540: 175, 543: 175, 175, 558: 175, 570: 175, 714: 175, 175, 725: 175}, + {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, 86: 172, 88: 172, 90: 172, 172, 95: 172, 172, 98: 172, 172, 172, 172, 103: 172, 540: 172, 543: 172, 172, 558: 172, 570: 172, 714: 172, 172, 725: 172}, + {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, 86: 169, 88: 169, 90: 169, 169, 95: 169, 169, 98: 169, 169, 169, 169, 103: 169, 540: 169, 543: 169, 169, 558: 169, 570: 169, 714: 169, 169, 725: 169}, + {548: 4564, 4565, 564: 3054, 805: 4561, 833: 4563, 917: 7366}, // 4495 - {531: 2316, 548: 2316, 555: 4588, 802: 7364}, - {531: 2316, 548: 2316, 555: 4588, 802: 7351}, - {531: 7352, 548: 7353}, - {57: 7355, 197: 7357, 1040: 7356, 1440: 7354}, - {2815, 2815, 9: 2815, 110: 2815, 2815, 2815, 2815, 2815}, + {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, 86: 180, 88: 180, 90: 180, 180, 95: 180, 180, 98: 180, 180, 180, 180, 103: 180, 540: 180, 543: 180, 180, 558: 180, 570: 180, 714: 180, 180, 725: 180}, + {548: 4564, 4565, 564: 3054, 805: 4561, 833: 4563, 917: 7370}, + {548: 4564, 4565, 564: 3054, 805: 4561, 833: 4563, 917: 7369}, + {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, 86: 181, 88: 181, 90: 181, 181, 95: 181, 181, 98: 181, 181, 181, 181, 103: 181, 540: 181, 543: 181, 181, 558: 181, 570: 181, 714: 181, 181, 725: 181}, + {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, 86: 182, 88: 182, 90: 182, 182, 95: 182, 182, 98: 182, 182, 182, 182, 103: 182, 540: 182, 543: 182, 182, 558: 182, 570: 182, 714: 182, 182, 725: 182}, // 4500 - {9: 7362, 57: 7360, 197: 7357, 1040: 7361}, - {2816, 2816, 9: 2816, 110: 2816, 2816, 2816, 2816, 2816}, - {9: 2814, 57: 2814, 197: 2814}, - {533: 2316, 555: 4588, 802: 7358}, - {533: 7359}, + {548: 4564, 4565, 564: 3054, 805: 4561, 833: 4563, 917: 7374}, + {548: 4564, 4565, 564: 3054, 805: 4561, 833: 4563, 917: 7373}, + {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, 86: 183, 88: 183, 90: 183, 183, 95: 183, 183, 98: 183, 183, 183, 183, 103: 183, 540: 183, 543: 183, 183, 558: 183, 570: 183, 714: 183, 183, 725: 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, 86: 184, 88: 184, 90: 184, 184, 95: 184, 184, 98: 184, 184, 184, 184, 103: 184, 540: 184, 543: 184, 184, 558: 184, 570: 184, 714: 184, 184, 725: 184}, + {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, 86: 185, 88: 185, 90: 185, 185, 95: 185, 185, 98: 185, 185, 185, 185, 540: 185, 543: 185, 185, 558: 185, 570: 185, 714: 185, 185, 725: 185}, // 4505 - {9: 2811, 57: 2811, 197: 2811}, - {2817, 2817, 9: 2817, 110: 2817, 2817, 2817, 2817, 2817}, - {9: 2813, 57: 2813, 197: 2813}, - {197: 7357, 1040: 7363}, - {9: 2812, 57: 2812, 197: 2812}, + {189, 189}, + {2: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 10: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 58: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 540: 2131, 583: 5368, 889: 7378}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 540: 4619, 777: 4618, 3068, 3069, 3067, 943: 7379}, + {110: 7386, 7384, 7383, 7385, 7382, 983: 7380, 1261: 7381}, + {2862, 2862, 9: 2862, 110: 2862, 2862, 2862, 2862, 2862}, // 4510 - {531: 7365, 548: 7366}, - {57: 7372, 93: 7370, 134: 7371, 136: 7369, 1041: 7367, 1442: 7368}, - {2818, 2818, 9: 2818, 110: 2818, 2818, 2818, 2818, 2818}, - {9: 2839, 57: 2839, 93: 2839, 134: 2839, 136: 2839}, - {9: 7385, 57: 7386, 93: 7370, 134: 7371, 136: 7369, 1041: 7384}, + {194, 194, 9: 7434, 110: 7386, 7384, 7383, 7385, 7382, 983: 7433}, + {561: 4611, 564: 2330, 808: 7431}, + {311: 2330, 321: 2330, 2330, 561: 4611, 808: 7426}, + {2839, 2839, 9: 2839, 110: 2839, 2839, 2839, 2839, 2839, 561: 4611, 564: 2330, 634: 2330, 2330, 808: 7424}, + {536: 2330, 553: 2330, 561: 4611, 808: 7400}, // 4515 - {533: 2316, 555: 4588, 802: 7382}, - {229: 2316, 231: 2316, 555: 4588, 802: 7380, 933: 2316}, - {117: 2316, 258: 2316, 272: 2316, 555: 4588, 802: 7373}, - {2819, 2819, 9: 2819, 110: 2819, 2819, 2819, 2819, 2819}, - {117: 4583, 258: 4581, 272: 4582, 1257: 7374}, + {536: 2330, 553: 2330, 561: 4611, 808: 7387}, + {536: 7388, 553: 7389}, + {57: 7391, 199: 7393, 1046: 7392, 1447: 7390}, + {2832, 2832, 9: 2832, 110: 2832, 2832, 2832, 2832, 2832}, + {9: 7398, 57: 7396, 199: 7393, 1046: 7397}, // 4520 - {9: 2827, 57: 2827, 93: 2827, 134: 2827, 136: 2827, 158: 7376, 1500: 7375}, - {9: 2828, 57: 2828, 93: 2828, 134: 2828, 136: 2828}, - {360: 2316, 533: 2316, 555: 4588, 802: 7377}, - {360: 7379, 533: 7378}, - {9: 2826, 57: 2826, 93: 2826, 134: 2826, 136: 2826}, + {2833, 2833, 9: 2833, 110: 2833, 2833, 2833, 2833, 2833}, + {9: 2831, 57: 2831, 199: 2831}, + {538: 2330, 561: 4611, 808: 7394}, + {538: 7395}, + {9: 2828, 57: 2828, 199: 2828}, // 4525 - {9: 2825, 57: 2825, 93: 2825, 134: 2825, 136: 2825}, - {229: 4591, 231: 4590, 933: 4592, 1256: 7381}, - {9: 2829, 57: 2829, 93: 2829, 134: 2829, 136: 2829}, - {533: 7383}, - {9: 2830, 57: 2830, 93: 2830, 134: 2830, 136: 2830}, + {2834, 2834, 9: 2834, 110: 2834, 2834, 2834, 2834, 2834}, + {9: 2830, 57: 2830, 199: 2830}, + {199: 7393, 1046: 7399}, + {9: 2829, 57: 2829, 199: 2829}, + {536: 7401, 553: 7402}, // 4530 - {9: 2838, 57: 2838, 93: 2838, 134: 2838, 136: 2838}, - {93: 7370, 134: 7371, 136: 7369, 1041: 7387}, - {2820, 2820, 9: 2820, 110: 2820, 2820, 2820, 2820, 2820}, - {9: 2837, 57: 2837, 93: 2837, 134: 2837, 136: 2837}, - {560: 3037, 629: 6710, 6711, 799: 6709, 998: 7389}, + {57: 7408, 93: 7406, 134: 7407, 136: 7405, 1047: 7403, 1449: 7404}, + {2835, 2835, 9: 2835, 110: 2835, 2835, 2835, 2835, 2835}, + {9: 2856, 57: 2856, 93: 2856, 134: 2856, 136: 2856}, + {9: 7421, 57: 7422, 93: 7406, 134: 7407, 136: 7405, 1047: 7420}, + {538: 2330, 561: 4611, 808: 7418}, // 4535 - {2821, 2821, 9: 2821, 110: 2821, 2821, 2821, 2821, 2821}, - {311: 7393, 321: 7391, 7392, 1441: 7394}, - {2842, 2842, 9: 2842, 110: 2842, 2842, 2842, 2842, 2842}, - {2841, 2841, 9: 2841, 110: 2841, 2841, 2841, 2841, 2841}, - {2840, 2840, 9: 2840, 110: 2840, 2840, 2840, 2840, 2840}, + {229: 2330, 231: 2330, 561: 4611, 808: 7416, 940: 2330}, + {117: 2330, 258: 2330, 272: 2330, 561: 4611, 808: 7409}, + {2836, 2836, 9: 2836, 110: 2836, 2836, 2836, 2836, 2836}, + {117: 4606, 258: 4604, 272: 4605, 1263: 7410}, + {9: 2844, 57: 2844, 93: 2844, 134: 2844, 136: 2844, 158: 7412, 1507: 7411}, // 4540 - {2823, 2823, 9: 2823, 110: 2823, 2823, 2823, 2823, 2823}, - {560: 3037, 799: 3866, 816: 7396}, - {2824, 2824, 9: 2824, 110: 2824, 2824, 2824, 2824, 2824}, - {2844, 2844, 9: 2844, 110: 2844, 2844, 2844, 2844, 2844}, - {110: 7350, 7348, 7347, 7349, 7346, 977: 7399}, + {9: 2845, 57: 2845, 93: 2845, 134: 2845, 136: 2845}, + {361: 2330, 538: 2330, 561: 4611, 808: 7413}, + {361: 7415, 538: 7414}, + {9: 2843, 57: 2843, 93: 2843, 134: 2843, 136: 2843}, + {9: 2842, 57: 2842, 93: 2842, 134: 2842, 136: 2842}, // 4545 - {2843, 2843, 9: 2843, 110: 2843, 2843, 2843, 2843, 2843}, - {558: 7401, 561: 7402}, - {531: 2907, 2906, 547: 2905, 552: 2891, 587: 2890, 608: 2904, 695: 2900, 714: 3019, 775: 6325, 803: 6323, 806: 6326, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 6324, 817: 6328, 6327, 822: 3018, 6330, 6331, 826: 6332, 6329, 944: 7408}, - {262: 7403}, - {542: 7404}, + {229: 4614, 231: 4613, 940: 4615, 1262: 7417}, + {9: 2846, 57: 2846, 93: 2846, 134: 2846, 136: 2846}, + {538: 7419}, + {9: 2847, 57: 2847, 93: 2847, 134: 2847, 136: 2847}, + {9: 2855, 57: 2855, 93: 2855, 134: 2855, 136: 2855}, // 4550 - {117: 7405}, - {218: 7406}, - {533: 7407}, - {344, 344}, - {542: 7409}, + {93: 7406, 134: 7407, 136: 7405, 1047: 7423}, + {2837, 2837, 9: 2837, 110: 2837, 2837, 2837, 2837, 2837}, + {9: 2854, 57: 2854, 93: 2854, 134: 2854, 136: 2854}, + {564: 3054, 634: 6743, 6744, 805: 6742, 1004: 7425}, + {2838, 2838, 9: 2838, 110: 2838, 2838, 2838, 2838, 2838}, // 4555 - {531: 2907, 2906, 547: 2905, 552: 2891, 587: 2890, 608: 2904, 695: 2900, 714: 3019, 775: 6325, 803: 6323, 806: 6326, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 6324, 817: 6328, 6327, 822: 3018, 6330, 6331, 826: 6332, 6329, 944: 7410}, - {345, 345}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 6295, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 6300, 770: 3737, 3051, 3052, 3050, 805: 5807, 898: 6302, 917: 7413, 6301, 1264: 7414, 1443: 7412}, - {419, 419, 9: 7415}, - {356, 356, 9: 356}, + {311: 7429, 321: 7427, 7428, 1448: 7430}, + {2859, 2859, 9: 2859, 110: 2859, 2859, 2859, 2859, 2859}, + {2858, 2858, 9: 2858, 110: 2858, 2858, 2858, 2858, 2858}, + {2857, 2857, 9: 2857, 110: 2857, 2857, 2857, 2857, 2857}, + {2840, 2840, 9: 2840, 110: 2840, 2840, 2840, 2840, 2840}, // 4560 - {355, 355, 9: 355}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 6295, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 6300, 770: 3737, 3051, 3052, 3050, 805: 5807, 898: 6302, 917: 7413, 6301, 1264: 7416}, - {354, 354, 9: 354}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 631: 5853, 770: 3737, 3051, 3052, 3050, 805: 5852, 855: 5870, 994: 5871, 1024: 7418}, - {401, 401, 6: 401, 9: 5873, 15: 401, 51: 401, 401, 401, 401, 401, 532: 401, 725: 5917, 1075: 5916, 7419}, + {564: 3054, 805: 3889, 820: 7432}, + {2841, 2841, 9: 2841, 110: 2841, 2841, 2841, 2841, 2841}, + {2861, 2861, 9: 2861, 110: 2861, 2861, 2861, 2861, 2861}, + {110: 7386, 7384, 7383, 7385, 7382, 983: 7435}, + {2860, 2860, 9: 2860, 110: 2860, 2860, 2860, 2860, 2860}, // 4565 - {409, 409, 6: 409, 15: 409, 51: 409, 409, 409, 409, 409, 532: 7421, 1131: 7420}, - {382, 382, 6: 382, 15: 7437, 51: 382, 382, 7436, 7438, 7439, 1068: 7435, 1235: 7434, 7433}, - {163: 7426, 7424, 7425, 7427, 1130: 7423, 1339: 7422}, - {408, 408, 6: 408, 15: 408, 51: 408, 408, 408, 408, 408, 163: 7426, 7424, 7425, 7427, 1130: 7432}, - {407, 407, 6: 407, 15: 407, 51: 407, 407, 407, 407, 407, 163: 407, 407, 407, 407}, + {547: 7438, 563: 7437, 566: 7439}, + {536: 2924, 2923, 552: 2922, 557: 2908, 592: 2907, 613: 2921, 661: 2917, 719: 3036, 781: 6358, 809: 6356, 812: 6359, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 6357, 6361, 6360, 827: 3035, 829: 6363, 6364, 6365, 6362, 934: 7446}, + {536: 2924, 2923, 552: 2922, 557: 2908, 592: 2907, 613: 2921, 661: 2917, 719: 3036, 781: 6358, 809: 6356, 812: 6359, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 6357, 6361, 6360, 827: 3035, 829: 6363, 6364, 6365, 6362, 934: 7445}, + {262: 7440}, + {547: 7441}, // 4570 - {560: 3037, 799: 4538, 825: 7431}, - {560: 3037, 799: 4538, 825: 7430}, - {560: 3037, 799: 4538, 825: 7429}, - {560: 3037, 799: 4538, 825: 7428}, - {402, 402, 6: 402, 15: 402, 51: 402, 402, 402, 402, 402, 163: 402, 402, 402, 402}, + {117: 7442}, + {219: 7443}, + {538: 7444}, + {344, 344}, + {345, 345}, // 4575 + {547: 7447}, + {536: 2924, 2923, 552: 2922, 557: 2908, 592: 2907, 613: 2921, 661: 2917, 719: 3036, 781: 6358, 809: 6356, 812: 6359, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 6357, 6361, 6360, 827: 3035, 829: 6363, 6364, 6365, 6362, 934: 7448}, + {346, 346}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 6328, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 6333, 777: 3760, 3068, 3069, 3067, 811: 5830, 904: 6335, 923: 7451, 6334, 1270: 7452, 1450: 7450}, + {420, 420, 9: 7453}, + // 4580 + {357, 357, 9: 357}, + {356, 356, 9: 356}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 6328, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 6333, 777: 3760, 3068, 3069, 3067, 811: 5830, 904: 6335, 923: 7451, 6334, 1270: 7454}, + {355, 355, 9: 355}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 636: 5876, 777: 3760, 3068, 3069, 3067, 811: 5875, 861: 5893, 1000: 5894, 1030: 7456}, + // 4585 + {402, 402, 6: 402, 9: 5896, 15: 402, 51: 402, 402, 402, 402, 402, 537: 402, 730: 5940, 1081: 5939, 7457}, + {410, 410, 6: 410, 15: 410, 51: 410, 410, 410, 410, 410, 537: 7459, 1137: 7458}, + {383, 383, 6: 383, 15: 7475, 51: 383, 383, 7474, 7476, 7477, 1074: 7473, 1241: 7472, 7471}, + {163: 7464, 7462, 7463, 7465, 1136: 7461, 1346: 7460}, + {409, 409, 6: 409, 15: 409, 51: 409, 409, 409, 409, 409, 163: 7464, 7462, 7463, 7465, 1136: 7470}, + // 4590 + {408, 408, 6: 408, 15: 408, 51: 408, 408, 408, 408, 408, 163: 408, 408, 408, 408}, + {564: 3054, 805: 4561, 833: 7469}, + {564: 3054, 805: 4561, 833: 7468}, + {564: 3054, 805: 4561, 833: 7467}, + {564: 3054, 805: 4561, 833: 7466}, + // 4595 {403, 403, 6: 403, 15: 403, 51: 403, 403, 403, 403, 403, 163: 403, 403, 403, 403}, {404, 404, 6: 404, 15: 404, 51: 404, 404, 404, 404, 404, 163: 404, 404, 404, 404}, {405, 405, 6: 405, 15: 405, 51: 405, 405, 405, 405, 405, 163: 405, 405, 405, 405}, {406, 406, 6: 406, 15: 406, 51: 406, 406, 406, 406, 406, 163: 406, 406, 406, 406}, - {387, 387, 6: 7461, 51: 387, 7462, 1128: 7460}, - // 4580 - {381, 381, 6: 381, 15: 7437, 51: 381, 381, 7436, 7438, 7439, 1068: 7459}, - {380, 380, 6: 380, 15: 380, 51: 380, 380, 380, 380, 380}, - {562: 7458, 1090: 7457}, - {262: 7443, 389: 7445, 431: 7444}, - {560: 3037, 799: 4538, 825: 7442}, - // 4585 - {201: 7441, 560: 3037, 799: 4538, 825: 7440}, - {367, 367, 6: 367, 15: 367, 51: 367, 367, 367, 367, 367}, - {366, 366, 6: 366, 15: 366, 51: 366, 366, 366, 366, 366}, + {407, 407, 6: 407, 15: 407, 51: 407, 407, 407, 407, 407, 163: 407, 407, 407, 407}, + // 4600 + {388, 388, 6: 7499, 51: 388, 7500, 1134: 7498}, + {382, 382, 6: 382, 15: 7475, 51: 382, 382, 7474, 7476, 7477, 1074: 7497}, + {381, 381, 6: 381, 15: 381, 51: 381, 381, 381, 381, 381}, + {567: 7496, 1096: 7495}, + {262: 7481, 391: 7483, 434: 7482}, + // 4605 + {564: 3054, 805: 4561, 833: 7480}, + {203: 7479, 564: 3054, 805: 4561, 833: 7478}, {368, 368, 6: 368, 15: 368, 51: 368, 368, 368, 368, 368}, - {535: 7455, 560: 3037, 799: 7456}, - // 4590 - {641: 7451}, - {372, 372, 6: 372, 15: 372, 51: 372, 372, 372, 372, 372, 407: 7447, 535: 7448, 641: 7446}, - {560: 3037, 799: 4538, 825: 7449}, - {370, 370, 6: 370, 15: 370, 51: 370, 370, 370, 370, 370}, + {367, 367, 6: 367, 15: 367, 51: 367, 367, 367, 367, 367}, {369, 369, 6: 369, 15: 369, 51: 369, 369, 369, 369, 369}, - // 4595 - {133: 7450}, + // 4610 + {540: 7493, 564: 3054, 805: 7494}, + {646: 7489}, + {373, 373, 6: 373, 15: 373, 51: 373, 373, 373, 373, 373, 411: 7485, 540: 7486, 646: 7484}, + {564: 3054, 805: 4561, 833: 7487}, {371, 371, 6: 371, 15: 371, 51: 371, 371, 371, 371, 371}, - {535: 7452, 560: 3037, 799: 7453}, - {374, 374, 6: 374, 15: 374, 51: 374, 374, 374, 374, 374}, - {133: 7454}, - // 4600 - {373, 373, 6: 373, 15: 373, 51: 373, 373, 373, 373, 373}, - {376, 376, 6: 376, 15: 376, 51: 376, 376, 376, 376, 376}, + // 4615 + {370, 370, 6: 370, 15: 370, 51: 370, 370, 370, 370, 370}, + {133: 7488}, + {372, 372, 6: 372, 15: 372, 51: 372, 372, 372, 372, 372}, + {540: 7490, 564: 3054, 805: 7491}, {375, 375, 6: 375, 15: 375, 51: 375, 375, 375, 375, 375}, - {378, 378, 6: 378, 15: 378, 51: 378, 378, 378, 378, 378}, + // 4620 + {133: 7492}, + {374, 374, 6: 374, 15: 374, 51: 374, 374, 374, 374, 374}, {377, 377, 6: 377, 15: 377, 51: 377, 377, 377, 377, 377}, - // 4605 + {376, 376, 6: 376, 15: 376, 51: 376, 376, 376, 376, 376}, {379, 379, 6: 379, 15: 379, 51: 379, 379, 379, 379, 379}, - {384, 384, 51: 7466, 1254: 7465}, - {533: 7464}, - {533: 7463}, - {385, 385, 51: 385}, - // 4610 - {386, 386, 51: 386}, - {420, 420}, - {571: 7467}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 535: 4596, 770: 4595, 3051, 3052, 3050, 936: 7468}, - {383, 383}, - // 4615 - {18: 2364, 102: 2364, 132: 2364, 181: 2364, 696: 2364}, - {132: 2359, 181: 7522, 696: 2359, 1494: 7521}, - {555: 7517}, - {214: 7473}, - {2: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 10: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 58: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 578: 5345, 883: 7474}, - // 4620 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 5516, 3051, 3052, 3050, 989: 7475}, - {108: 7479, 119: 7484, 7486, 7480, 7485, 7488, 7482, 7478, 7483, 128: 7489, 7487, 7481, 976: 7476, 1238: 7477}, - {2810, 2810, 9: 2810, 108: 2810, 119: 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 128: 2810, 2810, 2810}, - {191, 191, 9: 7515, 108: 7479, 119: 7484, 7486, 7480, 7485, 7488, 7482, 7478, 7483, 128: 7489, 7487, 7481, 976: 7514}, - {533: 2316, 555: 4588, 802: 7512}, // 4625 - {533: 2316, 555: 4588, 802: 7510}, - {555: 4588, 560: 2316, 802: 7508}, - {555: 4588, 560: 2316, 802: 7506}, - {555: 4588, 560: 2316, 802: 7504}, - {533: 2316, 555: 4588, 802: 7502}, + {378, 378, 6: 378, 15: 378, 51: 378, 378, 378, 378, 378}, + {380, 380, 6: 380, 15: 380, 51: 380, 380, 380, 380, 380}, + {385, 385, 51: 7504, 1260: 7503}, + {538: 7502}, + {538: 7501}, // 4630 - {533: 2316, 555: 4588, 802: 7500}, - {533: 2316, 555: 4588, 802: 7498}, - {533: 2316, 555: 4588, 802: 7496}, - {533: 2316, 555: 4588, 802: 7494}, - {533: 2316, 555: 4588, 802: 7492}, + {386, 386, 51: 386}, + {387, 387, 51: 387}, + {421, 421}, + {576: 7505}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 540: 4619, 777: 4618, 3068, 3069, 3067, 943: 7506}, // 4635 - {533: 2316, 555: 4588, 802: 7490}, - {533: 7491}, - {2796, 2796, 9: 2796, 108: 2796, 119: 2796, 2796, 2796, 2796, 2796, 2796, 2796, 2796, 128: 2796, 2796, 2796}, - {533: 7493}, - {2797, 2797, 9: 2797, 108: 2797, 119: 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797, 128: 2797, 2797, 2797}, + {384, 384}, + {18: 2378, 102: 2378, 132: 2378, 181: 2378, 662: 2378}, + {132: 2373, 181: 7560, 662: 2373, 1501: 7559}, + {561: 7555}, + {215: 7511}, // 4640 - {533: 7495}, - {2798, 2798, 9: 2798, 108: 2798, 119: 2798, 2798, 2798, 2798, 2798, 2798, 2798, 2798, 128: 2798, 2798, 2798}, - {533: 7497}, - {2799, 2799, 9: 2799, 108: 2799, 119: 2799, 2799, 2799, 2799, 2799, 2799, 2799, 2799, 128: 2799, 2799, 2799}, - {533: 7499}, + {2: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 10: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 58: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 583: 5368, 889: 7512}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 5539, 3068, 3069, 3067, 995: 7513}, + {108: 7517, 119: 7522, 7524, 7518, 7523, 7526, 7520, 7516, 7521, 128: 7527, 7525, 7519, 982: 7514, 1244: 7515}, + {2827, 2827, 9: 2827, 108: 2827, 119: 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 128: 2827, 2827, 2827}, + {191, 191, 9: 7553, 108: 7517, 119: 7522, 7524, 7518, 7523, 7526, 7520, 7516, 7521, 128: 7527, 7525, 7519, 982: 7552}, // 4645 - {2800, 2800, 9: 2800, 108: 2800, 119: 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800, 128: 2800, 2800, 2800}, - {533: 7501}, - {2801, 2801, 9: 2801, 108: 2801, 119: 2801, 2801, 2801, 2801, 2801, 2801, 2801, 2801, 128: 2801, 2801, 2801}, - {533: 7503}, - {2802, 2802, 9: 2802, 108: 2802, 119: 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 128: 2802, 2802, 2802}, + {538: 2330, 561: 4611, 808: 7550}, + {538: 2330, 561: 4611, 808: 7548}, + {561: 4611, 564: 2330, 808: 7546}, + {561: 4611, 564: 2330, 808: 7544}, + {561: 4611, 564: 2330, 808: 7542}, // 4650 - {560: 3037, 799: 3866, 816: 7505}, - {2803, 2803, 9: 2803, 108: 2803, 119: 2803, 2803, 2803, 2803, 2803, 2803, 2803, 2803, 128: 2803, 2803, 2803}, - {560: 3037, 799: 3866, 816: 7507}, - {2804, 2804, 9: 2804, 108: 2804, 119: 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 128: 2804, 2804, 2804}, - {560: 3037, 799: 3866, 816: 7509}, + {538: 2330, 561: 4611, 808: 7540}, + {538: 2330, 561: 4611, 808: 7538}, + {538: 2330, 561: 4611, 808: 7536}, + {538: 2330, 561: 4611, 808: 7534}, + {538: 2330, 561: 4611, 808: 7532}, // 4655 - {2805, 2805, 9: 2805, 108: 2805, 119: 2805, 2805, 2805, 2805, 2805, 2805, 2805, 2805, 128: 2805, 2805, 2805}, - {533: 7511}, - {2806, 2806, 9: 2806, 108: 2806, 119: 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 128: 2806, 2806, 2806}, - {533: 7513}, - {2807, 2807, 9: 2807, 108: 2807, 119: 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2807, 128: 2807, 2807, 2807}, + {538: 2330, 561: 4611, 808: 7530}, + {538: 2330, 561: 4611, 808: 7528}, + {538: 7529}, + {2813, 2813, 9: 2813, 108: 2813, 119: 2813, 2813, 2813, 2813, 2813, 2813, 2813, 2813, 128: 2813, 2813, 2813}, + {538: 7531}, // 4660 - {2809, 2809, 9: 2809, 108: 2809, 119: 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 128: 2809, 2809, 2809}, - {108: 7479, 119: 7484, 7486, 7480, 7485, 7488, 7482, 7478, 7483, 128: 7489, 7487, 7481, 976: 7516}, - {2808, 2808, 9: 2808, 108: 2808, 119: 2808, 2808, 2808, 2808, 2808, 2808, 2808, 2808, 128: 2808, 2808, 2808}, - {4: 7519, 448: 7520, 456: 7518}, - {132: 2362, 181: 2362, 696: 2362}, + {2814, 2814, 9: 2814, 108: 2814, 119: 2814, 2814, 2814, 2814, 2814, 2814, 2814, 2814, 128: 2814, 2814, 2814}, + {538: 7533}, + {2815, 2815, 9: 2815, 108: 2815, 119: 2815, 2815, 2815, 2815, 2815, 2815, 2815, 2815, 128: 2815, 2815, 2815}, + {538: 7535}, + {2816, 2816, 9: 2816, 108: 2816, 119: 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 128: 2816, 2816, 2816}, // 4665 - {132: 2361, 181: 2361, 696: 2361}, - {132: 2360, 181: 2360, 696: 2360}, - {132: 2357, 696: 7526, 1497: 7525}, - {555: 7523}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 631: 5853, 770: 3737, 3051, 3052, 3050, 805: 5852, 855: 7524}, + {538: 7537}, + {2817, 2817, 9: 2817, 108: 2817, 119: 2817, 2817, 2817, 2817, 2817, 2817, 2817, 2817, 128: 2817, 2817, 2817}, + {538: 7539}, + {2818, 2818, 9: 2818, 108: 2818, 119: 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818, 128: 2818, 2818, 2818}, + {538: 7541}, // 4670 - {132: 2358, 696: 2358}, - {132: 7530}, - {434: 7527}, - {181: 7528, 400: 7529}, - {132: 2356}, + {2819, 2819, 9: 2819, 108: 2819, 119: 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819, 128: 2819, 2819, 2819}, + {564: 3054, 805: 3889, 820: 7543}, + {2820, 2820, 9: 2820, 108: 2820, 119: 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820, 128: 2820, 2820, 2820}, + {564: 3054, 805: 3889, 820: 7545}, + {2821, 2821, 9: 2821, 108: 2821, 119: 2821, 2821, 2821, 2821, 2821, 2821, 2821, 2821, 128: 2821, 2821, 2821}, // 4675 - {132: 2355}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 7532, 1496: 7531}, - {531: 7534, 537: 2353, 1495: 7533}, - {531: 2354, 537: 2354}, - {537: 7540}, + {564: 3054, 805: 3889, 820: 7547}, + {2822, 2822, 9: 2822, 108: 2822, 119: 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822, 128: 2822, 2822, 2822}, + {538: 7549}, + {2823, 2823, 9: 2823, 108: 2823, 119: 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 128: 2823, 2823, 2823}, + {538: 7551}, // 4680 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 7536, 3051, 3052, 3050, 1334: 7535}, - {9: 7538, 57: 7537}, - {9: 2351, 57: 2351}, - {537: 2352}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 7539, 3051, 3052, 3050}, + {2824, 2824, 9: 2824, 108: 2824, 119: 2824, 2824, 2824, 2824, 2824, 2824, 2824, 2824, 128: 2824, 2824, 2824}, + {2826, 2826, 9: 2826, 108: 2826, 119: 2826, 2826, 2826, 2826, 2826, 2826, 2826, 2826, 128: 2826, 2826, 2826}, + {108: 7517, 119: 7522, 7524, 7518, 7523, 7526, 7520, 7516, 7521, 128: 7527, 7525, 7519, 982: 7554}, + {2825, 2825, 9: 2825, 108: 2825, 119: 2825, 2825, 2825, 2825, 2825, 2825, 2825, 2825, 128: 2825, 2825, 2825}, + {4: 7557, 452: 7558, 460: 7556}, // 4685 - {9: 2350, 57: 2350}, - {531: 2907, 2906, 547: 2905, 608: 2904, 695: 2900, 775: 7544, 806: 7542, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 3846, 817: 7543, 7541, 1344: 7545}, - {2372, 2372, 532: 2372}, - {2371, 2371, 532: 2371, 539: 1014, 550: 1014, 1014}, - {2370, 2370, 532: 2370}, + {132: 2376, 181: 2376, 662: 2376}, + {132: 2375, 181: 2375, 662: 2375}, + {132: 2374, 181: 2374, 662: 2374}, + {132: 2371, 662: 7564, 1504: 7563}, + {561: 7561}, // 4690 - {2369, 2369, 532: 2369, 539: 1013, 550: 1013, 1013, 554: 3859, 556: 3858, 564: 3857, 842: 3860, 3861}, - {2349, 2349, 532: 7547, 1493: 7546}, - {2366, 2366}, - {173: 7549, 371: 7548}, - {702: 7552}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 636: 5876, 777: 3760, 3068, 3069, 3067, 811: 5875, 861: 7562}, + {132: 2372, 662: 2372}, + {132: 7568}, + {438: 7565}, + {181: 7566, 402: 7567}, // 4695 - {702: 7550}, - {1006: 7551}, - {2347, 2347}, - {1006: 7553}, - {2348, 2348}, + {132: 2370}, + {132: 2369}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 7570, 1503: 7569}, + {536: 7572, 542: 2367, 1502: 7571}, + {536: 2368, 542: 2368}, // 4700 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 5954, 3051, 3052, 3050, 907: 7555}, - {2455, 2455, 16: 2446, 18: 2446, 21: 2446, 535: 4724, 538: 2446, 553: 2446, 557: 7559, 709: 2446, 865: 7558, 891: 7557, 954: 7561, 1037: 7560, 1346: 7556}, - {2466, 2466}, - {16: 4418, 18: 4681, 21: 7569, 538: 7568, 553: 4419, 709: 4417, 853: 7567, 865: 7570}, - {2457, 2457, 16: 2457, 18: 2457, 21: 2457, 535: 2457, 538: 2457, 553: 2457, 557: 2457, 709: 2457}, + {542: 7578}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 7574, 3068, 3069, 3067, 1341: 7573}, + {9: 7576, 57: 7575}, + {9: 2365, 57: 2365}, + {542: 2366}, // 4705 - {200: 7563}, - {2454, 2454, 16: 2446, 18: 2446, 21: 2446, 535: 4724, 538: 2446, 553: 2446, 557: 7559, 709: 2446, 865: 7558, 891: 7557, 954: 7562}, - {2453, 2453, 16: 2453, 18: 2453, 21: 2453, 535: 2453, 538: 2453, 553: 2453, 557: 2453, 709: 2453}, - {2452, 2452, 16: 2452, 18: 2452, 21: 2452, 535: 2452, 538: 2452, 553: 2452, 557: 2452, 709: 2452}, - {223: 7564}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 7577, 3068, 3069, 3067}, + {9: 2364, 57: 2364}, + {536: 2924, 2923, 552: 2922, 613: 2921, 661: 2917, 781: 7582, 812: 7580, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 3869, 7581, 7579, 1351: 7583}, + {2386, 2386, 537: 2386}, + {2385, 2385, 537: 2385, 544: 1022, 555: 1022, 1022}, // 4710 - {560: 3037, 799: 3866, 816: 7565}, - {2779, 2779, 16: 2779, 18: 2779, 21: 2779, 220: 5489, 535: 2779, 538: 2779, 553: 2779, 557: 2779, 709: 2779, 1057: 7566}, - {2456, 2456, 16: 2456, 18: 2456, 21: 2456, 535: 2456, 538: 2456, 553: 2456, 557: 2456, 709: 2456}, - {2: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 10: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 58: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 533: 2316, 555: 4588, 586: 2316, 802: 7575}, - {2: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 10: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 58: 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 533: 2316, 555: 4588, 586: 2316, 802: 7573}, + {2384, 2384, 537: 2384}, + {2383, 2383, 537: 2383, 544: 1021, 555: 1021, 1021, 559: 3882, 562: 3881, 569: 3880, 848: 3883, 3884}, + {2363, 2363, 537: 7585, 1500: 7584}, + {2380, 2380}, + {173: 7587, 373: 7586}, // 4715 - {533: 2316, 555: 4588, 802: 7571}, - {2458, 2458, 16: 2458, 18: 2458, 21: 2458, 535: 2458, 538: 2458, 553: 2458, 557: 2458, 709: 2458}, - {533: 4796, 1167: 7572}, - {2459, 2459, 16: 2459, 18: 2459, 21: 2459, 535: 2459, 538: 2459, 553: 2459, 557: 2459, 709: 2459}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 586: 3735, 770: 3737, 3051, 3052, 3050, 805: 3734, 974: 7574}, + {709: 7590}, + {709: 7588}, + {1012: 7589}, + {2361, 2361}, + {1012: 7591}, // 4720 - {2460, 2460, 16: 2460, 18: 2460, 21: 2460, 535: 2460, 538: 2460, 553: 2460, 557: 2460, 709: 2460}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 586: 4354, 770: 3737, 3051, 3052, 3050, 805: 4353, 905: 7576}, - {2461, 2461, 16: 2461, 18: 2461, 21: 2461, 535: 2461, 538: 2461, 553: 2461, 557: 2461, 709: 2461}, - {2: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 10: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 58: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 578: 5345, 883: 7578}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 7579, 3051, 3052, 3050}, + {2362, 2362}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 5977, 3068, 3069, 3067, 913: 7593}, + {2469, 2469, 16: 2460, 18: 2460, 21: 2460, 540: 4747, 543: 2460, 558: 2460, 560: 7597, 714: 2460, 871: 7596, 897: 7595, 960: 7599, 1043: 7598, 1353: 7594}, + {2480, 2480}, + {16: 4441, 18: 4704, 21: 7607, 543: 7606, 558: 4442, 714: 4440, 859: 7605, 871: 7608}, // 4725 - {104: 5379, 530: 2100, 542: 5378, 961: 7581, 1376: 7580}, - {530: 7582}, - {530: 2099}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 7583}, - {531: 7584}, + {2471, 2471, 16: 2471, 18: 2471, 21: 2471, 540: 2471, 543: 2471, 558: 2471, 560: 2471, 714: 2471}, + {202: 7601}, + {2468, 2468, 16: 2460, 18: 2460, 21: 2460, 540: 4747, 543: 2460, 558: 2460, 560: 7597, 714: 2460, 871: 7596, 897: 7595, 960: 7600}, + {2467, 2467, 16: 2467, 18: 2467, 21: 2467, 540: 2467, 543: 2467, 558: 2467, 560: 2467, 714: 2467}, + {2466, 2466, 16: 2466, 18: 2466, 21: 2466, 540: 2466, 543: 2466, 558: 2466, 560: 2466, 714: 2466}, // 4730 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 531: 5114, 770: 4024, 3051, 3052, 3050, 821: 5113, 922: 5112, 932: 7585}, - {9: 5123, 57: 7586}, - {2111, 2111, 6: 2111, 19: 2111, 102: 2111, 104: 2111, 2111, 2111, 2111, 109: 2111, 532: 2111, 542: 2111, 562: 2111, 983: 7587}, - {2477, 2477, 6: 5375, 19: 5372, 102: 4719, 104: 5379, 5224, 4926, 5225, 109: 4925, 532: 5374, 542: 5378, 562: 4720, 959: 5376, 961: 5373, 971: 5377, 7111, 982: 5371, 986: 7110, 1193: 7588}, - {2484, 2484}, + {224: 7602}, + {564: 3054, 805: 3889, 820: 7603}, + {2796, 2796, 16: 2796, 18: 2796, 21: 2796, 221: 5512, 540: 2796, 543: 2796, 558: 2796, 560: 2796, 714: 2796, 1063: 7604}, + {2470, 2470, 16: 2470, 18: 2470, 21: 2470, 540: 2470, 543: 2470, 558: 2470, 560: 2470, 714: 2470}, + {2: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 10: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 58: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 538: 2330, 561: 4611, 591: 2330, 808: 7613}, // 4735 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 7590, 3051, 3052, 3050}, - {531: 7591}, - {286: 5408, 294: 5410, 297: 5409, 1287: 7592}, - {57: 7593}, - {530: 7594}, + {2: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 10: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 58: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 538: 2330, 561: 4611, 591: 2330, 808: 7611}, + {538: 2330, 561: 4611, 808: 7609}, + {2472, 2472, 16: 2472, 18: 2472, 21: 2472, 540: 2472, 543: 2472, 558: 2472, 560: 2472, 714: 2472}, + {538: 4819, 1173: 7610}, + {2473, 2473, 16: 2473, 18: 2473, 21: 2473, 540: 2473, 543: 2473, 558: 2473, 560: 2473, 714: 2473}, // 4740 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 7595}, - {531: 7596}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 4024, 3051, 3052, 3050, 821: 4025, 906: 7597}, - {9: 4027, 57: 7598}, - {2486, 2486}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 591: 3758, 777: 3760, 3068, 3069, 3067, 811: 3757, 980: 7612}, + {2474, 2474, 16: 2474, 18: 2474, 21: 2474, 540: 2474, 543: 2474, 558: 2474, 560: 2474, 714: 2474}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 591: 4377, 777: 3760, 3068, 3069, 3067, 811: 4376, 911: 7614}, + {2475, 2475, 16: 2475, 18: 2475, 21: 2475, 540: 2475, 543: 2475, 558: 2475, 560: 2475, 714: 2475}, + {2: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 10: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 58: 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 583: 5368, 889: 7616}, // 4745 - {2593, 2593}, - {2618, 2618}, - {2624, 2624, 532: 7603, 729: 7602}, - {194: 7610, 768: 7609}, - {372: 7605, 381: 7604}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 7617, 3068, 3069, 3067}, + {104: 5402, 535: 2114, 547: 5401, 967: 7619, 1383: 7618}, + {535: 7620}, + {535: 2113}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 7621}, // 4750 - {60: 7608}, - {380: 7606}, - {194: 7607}, - {2621, 2621}, - {2622, 2622}, + {536: 7622}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 536: 5137, 777: 4047, 3068, 3069, 3067, 828: 5136, 928: 5135, 939: 7623}, + {9: 5146, 57: 7624}, + {2125, 2125, 6: 2125, 19: 2125, 102: 2125, 104: 2125, 2125, 2125, 2125, 109: 2125, 537: 2125, 547: 2125, 567: 2125, 989: 7625}, + {2491, 2491, 6: 5398, 19: 5395, 102: 4742, 104: 5402, 5247, 4949, 5248, 109: 4948, 537: 5397, 547: 5401, 567: 4743, 965: 5399, 967: 5396, 977: 5400, 7147, 988: 5394, 992: 7146, 1199: 7626}, // 4755 - {2623, 2623}, - {2620, 2620, 731: 4641, 995: 7611}, - {2619, 2619}, - {2626, 2626}, - {2625, 2625}, + {2498, 2498}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 7628, 3068, 3069, 3067}, + {536: 7629}, + {286: 5431, 294: 5433, 297: 5432, 1293: 7630}, + {57: 7631}, // 4760 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 7627, 884: 7626}, - {608: 7616}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 7617}, - {546: 7619, 710: 7618}, - {1107, 1107, 3297, 3451, 3261, 3138, 3177, 3299, 3064, 1107, 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 532: 1107, 704: 5544, 770: 5543, 3051, 3052, 3050, 960: 7624}, + {535: 7632}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 7633}, + {536: 7634}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 4047, 3068, 3069, 3067, 828: 4048, 912: 7635}, + {9: 4050, 57: 7636}, // 4765 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 5255, 3051, 3052, 3050, 859: 7620}, - {9: 5256, 710: 7621}, - {1107, 1107, 3297, 3451, 3261, 3138, 3177, 3299, 3064, 1107, 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 532: 1107, 704: 5544, 770: 5543, 3051, 3052, 3050, 960: 7622}, - {2642, 2642, 9: 5546, 532: 5527, 902: 7623}, - {2650, 2650}, + {2500, 2500}, + {2607, 2607}, + {2632, 2632}, + {2638, 2638, 537: 7641, 734: 7640}, + {195: 7648, 774: 7647}, // 4770 - {2642, 2642, 9: 5546, 532: 5527, 902: 7625}, - {2653, 2653}, - {2645, 2645, 9: 3930, 215: 7647, 532: 2645, 715: 7646, 1101: 7657}, - {1252, 1252, 9: 1252, 131: 7632, 215: 1252, 532: 1252, 546: 7629, 710: 7628, 714: 7630, 1252, 727: 7631}, - {1107, 1107, 3297, 3451, 3261, 3138, 3177, 3299, 3064, 1107, 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 532: 1107, 704: 5544, 770: 5543, 3051, 3052, 3050, 960: 7655}, + {374: 7643, 383: 7642}, + {60: 7646}, + {382: 7644}, + {195: 7645}, + {2635, 2635}, // 4775 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 5255, 3051, 3052, 3050, 859: 7642}, - {312: 7638}, - {312: 7635}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6469, 3051, 3052, 3050, 980: 7633}, - {2642, 2642, 9: 6471, 532: 5527, 902: 7634}, + {2636, 2636}, + {2637, 2637}, + {2634, 2634, 736: 4664, 1001: 7649}, + {2633, 2633}, + {2640, 2640}, // 4780 - {2647, 2647}, - {530: 7636}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6469, 3051, 3052, 3050, 980: 7637}, - {2648, 2648, 9: 6471}, - {530: 7639}, + {2639, 2639}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 7665, 890: 7664}, + {613: 7654}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 7655}, + {551: 7657, 715: 7656}, // 4785 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6469, 3051, 3052, 3050, 980: 7640}, - {2642, 2642, 9: 6471, 532: 5527, 902: 7641}, - {2649, 2649}, - {2645, 2645, 9: 5256, 131: 7645, 215: 7647, 532: 2645, 710: 7644, 715: 7646, 1101: 7643}, - {2642, 2642, 532: 5527, 902: 7654}, + {1115, 1115, 3317, 3472, 3281, 3157, 3197, 3319, 3081, 1115, 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 537: 1115, 708: 5567, 777: 5566, 3068, 3069, 3067, 966: 7662}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 5278, 3068, 3069, 3067, 865: 7658}, + {9: 5279, 715: 7659}, + {1115, 1115, 3317, 3472, 3281, 3157, 3197, 3319, 3081, 1115, 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 537: 1115, 708: 5567, 777: 5566, 3068, 3069, 3067, 966: 7660}, + {2656, 2656, 9: 5569, 537: 5550, 908: 7661}, // 4790 - {1107, 1107, 3297, 3451, 3261, 3138, 3177, 3299, 3064, 1107, 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 532: 1107, 704: 5544, 770: 5543, 3051, 3052, 3050, 960: 7652}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 6469, 3051, 3052, 3050, 980: 7650}, - {131: 7649}, - {131: 7648}, - {2643, 2643, 532: 2643}, + {2664, 2664}, + {2656, 2656, 9: 5569, 537: 5550, 908: 7663}, + {2667, 2667}, + {2659, 2659, 9: 3953, 216: 7685, 537: 2659, 721: 7684, 1107: 7695}, + {1260, 1260, 9: 1260, 131: 7670, 216: 1260, 537: 1260, 551: 7667, 715: 7666, 719: 7668, 721: 1260, 732: 7669}, // 4795 - {2644, 2644, 532: 2644}, - {2642, 2642, 9: 6471, 532: 5527, 902: 7651}, - {2646, 2646}, - {2642, 2642, 9: 5546, 532: 5527, 902: 7653}, - {2651, 2651}, + {1115, 1115, 3317, 3472, 3281, 3157, 3197, 3319, 3081, 1115, 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 537: 1115, 708: 5567, 777: 5566, 3068, 3069, 3067, 966: 7693}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 5278, 3068, 3069, 3067, 865: 7680}, + {312: 7676}, + {312: 7673}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6502, 3068, 3069, 3067, 986: 7671}, // 4800 - {2652, 2652}, - {2642, 2642, 9: 5546, 532: 5527, 902: 7656}, - {2654, 2654}, - {2642, 2642, 532: 5527, 902: 7658}, - {2655, 2655}, + {2656, 2656, 9: 6504, 537: 5550, 908: 7672}, + {2661, 2661}, + {535: 7674}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6502, 3068, 3069, 3067, 986: 7675}, + {2662, 2662, 9: 6504}, // 4805 - {608: 7664}, - {558: 7662}, - {608: 2657}, - {546: 7663, 608: 2658}, - {608: 2656}, - // 4810 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 7665}, - {546: 6023, 627: 1121, 710: 1121, 723: 1121, 963: 7666}, - {627: 7669, 710: 7668, 723: 7670, 1277: 7667}, + {535: 7677}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6502, 3068, 3069, 3067, 986: 7678}, + {2656, 2656, 9: 6504, 537: 5550, 908: 7679}, {2663, 2663}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 7677, 3051, 3052, 3050}, + {2659, 2659, 9: 5279, 131: 7683, 216: 7685, 537: 2659, 715: 7682, 721: 7684, 1107: 7681}, + // 4810 + {2656, 2656, 537: 5550, 908: 7692}, + {1115, 1115, 3317, 3472, 3281, 3157, 3197, 3319, 3081, 1115, 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 537: 1115, 708: 5567, 777: 5566, 3068, 3069, 3067, 966: 7690}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 6502, 3068, 3069, 3067, 986: 7688}, + {131: 7687}, + {131: 7686}, // 4815 - {531: 3893, 938: 7672}, - {531: 3893, 938: 6614, 1093: 7671}, - {2660, 2660, 9: 6615}, - {566: 7673}, - {531: 3893, 938: 7674}, + {2657, 2657, 537: 2657}, + {2658, 2658, 537: 2658}, + {2656, 2656, 9: 6504, 537: 5550, 908: 7689}, + {2660, 2660}, + {2656, 2656, 9: 5569, 537: 5550, 908: 7691}, // 4820 - {108: 7675}, - {560: 3037, 799: 4538, 825: 7676}, - {2661, 2661}, - {627: 7669, 723: 7670, 1277: 7678}, - {2662, 2662}, - // 4825 - {765: 7693}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 7689, 884: 7688}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 5954, 3051, 3052, 3050, 907: 7682}, - {2666, 2666, 712: 7684, 765: 7683, 1176: 7685}, - {533: 7687}, - // 4830 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 7686, 3051, 3052, 3050}, - {2664, 2664}, {2665, 2665}, + {2666, 2666}, + {2656, 2656, 9: 5569, 537: 5550, 908: 7694}, {2668, 2668}, - {9: 3930, 765: 7691}, - // 4835 - {2666, 2666, 9: 1252, 712: 7684, 765: 1252, 1176: 7690}, - {2667, 2667}, - {533: 7692}, + {2656, 2656, 537: 5550, 908: 7696}, + // 4825 {2669, 2669}, - {533: 7694}, + {613: 7702}, + {563: 7700}, + {613: 2671}, + {551: 7701, 613: 2672}, + // 4830 + {613: 2670}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 7703}, + {551: 6046, 632: 1129, 715: 1129, 728: 1129, 969: 7704}, + {632: 7707, 715: 7706, 728: 7708, 1283: 7705}, + {2677, 2677}, + // 4835 + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 7715, 3068, 3069, 3067}, + {536: 3916, 945: 7710}, + {536: 3916, 945: 6647, 1099: 7709}, + {2674, 2674, 9: 6648}, + {571: 7711}, // 4840 - {2670, 2670}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 723: 7696, 770: 3927, 3051, 3052, 3050, 804: 7697}, - {178: 7699}, - {2672, 2672, 560: 3037, 799: 4538, 825: 7698}, - {2671, 2671}, + {536: 3916, 945: 7712}, + {108: 7713}, + {564: 3054, 805: 4561, 833: 7714}, + {2675, 2675}, + {632: 7707, 728: 7708, 1283: 7716}, // 4845 - {560: 3037, 799: 4538, 825: 7700}, - {2673, 2673}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 7712, 1296: 7711, 1484: 7710}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 631: 5853, 770: 3737, 3051, 3052, 3050, 805: 5852, 855: 7705, 1301: 7704, 1487: 7703}, - {2677, 2677, 9: 7708}, + {2676, 2676}, + {770: 7735, 7736}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 7729, 890: 7728}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 5977, 3068, 3069, 3067, 913: 7720}, + {2680, 2680, 717: 7723, 770: 7721, 7722, 1182: 7724}, // 4850 - {2676, 2676, 9: 2676}, - {712: 7706}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 631: 5853, 770: 3737, 3051, 3052, 3050, 805: 5852, 855: 7707}, - {2674, 2674, 9: 2674}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 631: 5853, 770: 3737, 3051, 3052, 3050, 805: 5852, 855: 7705, 1301: 7709}, + {538: 7727}, + {564: 3054, 805: 3889, 820: 7726}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 7725, 3068, 3069, 3067}, + {2678, 2678}, + {2679, 2679}, // 4855 - {2675, 2675, 9: 2675}, - {2681, 2681, 9: 7715}, - {2680, 2680, 9: 2680}, - {712: 7713}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 7714}, + {2682, 2682}, + {2685, 2685}, + {9: 3953, 770: 7731, 7732}, + {2680, 2680, 9: 1260, 717: 7723, 770: 1260, 1260, 1182: 7730}, + {2681, 2681}, // 4860 - {2678, 2678, 9: 2678}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 7712, 1296: 7716}, - {2679, 2679, 9: 2679}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 2446, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 535: 4724, 538: 2446, 553: 2446, 557: 7559, 709: 2446, 770: 5954, 3051, 3052, 3050, 865: 7558, 891: 7557, 907: 7766, 954: 7561, 1037: 7767}, - {2: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 10: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 58: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 533: 2119, 578: 4948, 631: 2119, 854: 7752}, + {538: 7734}, + {564: 3054, 805: 3889, 820: 7733}, + {2683, 2683}, + {2686, 2686}, + {538: 7738}, // 4865 - {333: 7746, 1378: 7745}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 7743, 3051, 3052, 3050}, - {571: 7739}, - {214: 7735}, - {2: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 10: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 58: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 578: 4948, 854: 7724}, + {564: 3054, 805: 3889, 820: 7737}, + {2684, 2684}, + {2687, 2687}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 728: 7740, 777: 3950, 3068, 3069, 3067, 810: 7741}, + {178: 7743}, // 4870 - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 3927, 3051, 3052, 3050, 804: 7725}, - {86: 7314, 88: 7311, 90: 7317, 7318, 95: 7319, 7312, 98: 7310, 7320, 7316, 7313, 103: 7729, 720: 7315, 1014: 7728, 1108: 7727, 1314: 7726}, - {164, 164, 86: 7314, 88: 7311, 90: 7317, 7318, 95: 7319, 7312, 98: 7310, 7320, 7316, 7313, 103: 7729, 720: 7315, 1014: 7728, 1108: 7734}, - {163, 163, 86: 163, 88: 163, 90: 163, 163, 95: 163, 163, 98: 163, 163, 163, 163, 103: 163, 720: 163}, - {161, 161, 86: 161, 88: 161, 90: 161, 161, 95: 161, 161, 98: 161, 161, 161, 161, 103: 161, 720: 161}, + {2689, 2689, 564: 3054, 805: 4561, 833: 7742}, + {2688, 2688}, + {564: 3054, 805: 4561, 833: 7744}, + {2690, 2690}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 7756, 1302: 7755, 1491: 7754}, // 4875 - {160, 160, 86: 160, 88: 160, 90: 160, 160, 95: 160, 160, 98: 160, 160, 160, 160, 103: 160, 532: 7731, 543: 2316, 2316, 555: 4588, 560: 2316, 720: 160, 802: 7730}, - {543: 4541, 4542, 560: 3037, 799: 4538, 825: 4540, 911: 7733}, - {543: 4541, 4542, 560: 3037, 799: 4538, 825: 4540, 911: 7732}, - {158, 158, 86: 158, 88: 158, 90: 158, 158, 95: 158, 158, 98: 158, 158, 158, 158, 103: 158, 720: 158}, - {159, 159, 86: 159, 88: 159, 90: 159, 159, 95: 159, 159, 98: 159, 159, 159, 159, 103: 159, 720: 159}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 636: 5876, 777: 3760, 3068, 3069, 3067, 811: 5875, 861: 7749, 1307: 7748, 1494: 7747}, + {2694, 2694, 9: 7752}, + {2693, 2693, 9: 2693}, + {717: 7750}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 636: 5876, 777: 3760, 3068, 3069, 3067, 811: 5875, 861: 7751}, // 4880 - {162, 162, 86: 162, 88: 162, 90: 162, 162, 95: 162, 162, 98: 162, 162, 162, 162, 103: 162, 720: 162}, - {2: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 10: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 58: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 578: 4948, 854: 7736}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 770: 5516, 3051, 3052, 3050, 989: 7737}, - {108: 7479, 119: 7484, 7486, 7480, 7485, 7488, 7482, 7478, 7483, 128: 7489, 7487, 7481, 976: 7476, 1238: 7738}, - {190, 190, 9: 7515, 108: 7479, 119: 7484, 7486, 7480, 7485, 7488, 7482, 7478, 7483, 128: 7489, 7487, 7481, 976: 7514}, + {2691, 2691, 9: 2691}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 636: 5876, 777: 3760, 3068, 3069, 3067, 811: 5875, 861: 7749, 1307: 7753}, + {2692, 2692, 9: 2692}, + {2698, 2698, 9: 7759}, + {2697, 2697, 9: 2697}, // 4885 - {2: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 10: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 58: 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 535: 2119, 578: 4948, 854: 7740}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 3712, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 535: 4596, 770: 4595, 3051, 3052, 3050, 936: 7741}, - {110: 7350, 7348, 7347, 7349, 7346, 977: 7344, 1255: 7742}, - {193, 193, 9: 7398, 110: 7350, 7348, 7347, 7349, 7346, 977: 7397}, - {18: 4681, 865: 7744}, + {717: 7757}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 7758}, + {2695, 2695, 9: 2695}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 7756, 1302: 7760}, + {2696, 2696, 9: 2696}, // 4890 - {415, 415}, - {416, 416}, - {449: 7747}, - {414, 414, 86: 7748}, - {87: 7749}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 2460, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 540: 4747, 543: 2460, 558: 2460, 560: 7597, 714: 2460, 777: 5977, 3068, 3069, 3067, 871: 7596, 897: 7595, 913: 7810, 960: 7599, 1043: 7811}, + {2: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 10: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 58: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 538: 2133, 583: 4971, 636: 2133, 860: 7796}, + {334: 7790, 1385: 7789}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 7787, 3068, 3069, 3067}, + {576: 7783}, // 4895 - {530: 7750}, - {257: 7751}, - {413, 413}, - {2: 3297, 3451, 3261, 3138, 3177, 3299, 3064, 10: 3111, 3065, 3200, 3317, 3310, 3704, 3699, 3180, 3490, 3182, 3156, 3097, 3089, 3100, 3122, 3184, 3185, 3293, 3179, 3318, 3442, 3441, 3399, 3063, 3178, 3181, 3192, 3129, 3133, 3188, 3302, 3146, 3228, 3061, 3062, 3227, 3301, 3060, 3315, 3400, 3401, 3139, 3056, 3273, 3402, 3403, 3696, 58: 3387, 3145, 3148, 3369, 3366, 3358, 3370, 3373, 3374, 3371, 3375, 3376, 3372, 3566, 3561, 3365, 3377, 3360, 3361, 3565, 3364, 3367, 3563, 3368, 3378, 3564, 3068, 3083, 3214, 3142, 3149, 3708, 3345, 3344, 3151, 3053, 3077, 3346, 3341, 3098, 3340, 3347, 3342, 3343, 3258, 3140, 3330, 3395, 3328, 3396, 3455, 3329, 3573, 3559, 3555, 3572, 3554, 3154, 3222, 3491, 3709, 3543, 3548, 3535, 3547, 3549, 3538, 3544, 3545, 3327, 3546, 3550, 3542, 3080, 3217, 3701, 3570, 3473, 3567, 3721, 3703, 3719, 3720, 3718, 3714, 3319, 3320, 3321, 3322, 3323, 3324, 3326, 3710, 3697, 3073, 3316, 3109, 3336, 3150, 3155, 3476, 3239, 3243, 3267, 3269, 3247, 3248, 3249, 3250, 3238, 3082, 3268, 3398, 3478, 3194, 3124, 3500, 3091, 3700, 3112, 3430, 3706, 3219, 3259, 3119, 3175, 3196, 3707, 3166, 3356, 3071, 3088, 3099, 3114, 3123, 3331, 3199, 3241, 3392, 3574, 3157, 3158, 3449, 3164, 3218, 3069, 3070, 3102, 3118, 3308, 3312, 3186, 3187, 3523, 3127, 3128, 3380, 3494, 3255, 7753, 3404, 3429, 3334, 3492, 3132, 3333, 3141, 3438, 3165, 3381, 3072, 3569, 3406, 3568, 3702, 3193, 3125, 3350, 3277, 3388, 3389, 3352, 3213, 3390, 3307, 3435, 3348, 3144, 3246, 3305, 3203, 3057, 3420, 3084, 3425, 3208, 3094, 3096, 3210, 3103, 3527, 3113, 3116, 3407, 3291, 3359, 3169, 3722, 3386, 3237, 3206, 3266, 3311, 3195, 3571, 3437, 3153, 3448, 3306, 3416, 3417, 3215, 3278, 3560, 3466, 3418, 3409, 3074, 3421, 3078, 3382, 3422, 3717, 3085, 3280, 3468, 3424, 3275, 3093, 3426, 3289, 3314, 3300, 3474, 3428, 3458, 3095, 3309, 3107, 3339, 3530, 3117, 3120, 3556, 3290, 3337, 3104, 3481, 3332, 3482, 3284, 3335, 3393, 3558, 3557, 3562, 3220, 3431, 3432, 3224, 3282, 3433, 3391, 3136, 3137, 3254, 3362, 3256, 3495, 3434, 3303, 3304, 3244, 3147, 3286, 3059, 3505, 3285, 3551, 3512, 3513, 3514, 3515, 3517, 3516, 3518, 3519, 3520, 3450, 3161, 3287, 3540, 3575, 3539, 3167, 3054, 3338, 3355, 3066, 3357, 3383, 3058, 3419, 3265, 3075, 3076, 3252, 3394, 3713, 3423, 3197, 3081, 3086, 3087, 3427, 3209, 3475, 3211, 3101, 3221, 3106, 3272, 3524, 3108, 3283, 3408, 3216, 3190, 3445, 3274, 3205, 3483, 3260, 3279, 3325, 3202, 3292, 3183, 3349, 3271, 3723, 3223, 3413, 3412, 3414, 3452, 3525, 3130, 3295, 3298, 3351, 3385, 3453, 3705, 3397, 3233, 3234, 3240, 3487, 3456, 3488, 3457, 3363, 3405, 3143, 3459, 3264, 3201, 3436, 3296, 3253, 3443, 3440, 3444, 3439, 3281, 3384, 3294, 3509, 3447, 3262, 3533, 3521, 3411, 3415, 3162, 3191, 3198, 3263, 3454, 3410, 3270, 3726, 3172, 3461, 3462, 3698, 3463, 3464, 3465, 3526, 3467, 3470, 3469, 3471, 3472, 3105, 3257, 3226, 3477, 3110, 3534, 3727, 3480, 3313, 3552, 3553, 3732, 3731, 3724, 3536, 3537, 3485, 3276, 3484, 3126, 3486, 3493, 3232, 3134, 3135, 3379, 3251, 3715, 3716, 3489, 3725, 3245, 3173, 3288, 3204, 3207, 3528, 3501, 3502, 3503, 3504, 3496, 3529, 3728, 3498, 3499, 3225, 3446, 3729, 3730, 3522, 3506, 3507, 3508, 3541, 3711, 533: 3736, 631: 5853, 770: 3737, 3051, 3052, 3050, 805: 5852, 855: 5870, 994: 5871, 1024: 7754}, - {1965, 1965, 6: 1965, 9: 1965, 15: 1965, 51: 1965, 1965, 1965, 1965, 1965, 183: 1965, 531: 7760, 1965, 628: 1965, 725: 1965, 1965}, + {215: 7779}, + {2: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 10: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 58: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 583: 4971, 860: 7768}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 3950, 3068, 3069, 3067, 810: 7769}, + {86: 7350, 88: 7347, 90: 7353, 7354, 95: 7355, 7348, 98: 7346, 7356, 7352, 7349, 103: 7773, 725: 7351, 1020: 7772, 1114: 7771, 1320: 7770}, + {164, 164, 86: 7350, 88: 7347, 90: 7353, 7354, 95: 7355, 7348, 98: 7346, 7356, 7352, 7349, 103: 7773, 725: 7351, 1020: 7772, 1114: 7778}, // 4900 - {401, 401, 6: 401, 9: 5873, 15: 401, 51: 401, 401, 401, 401, 401, 532: 401, 725: 5917, 1075: 5916, 7755}, - {409, 409, 6: 409, 15: 409, 51: 409, 409, 409, 409, 409, 532: 7421, 1131: 7756}, - {382, 382, 6: 382, 15: 7437, 51: 382, 382, 7436, 7438, 7439, 1068: 7435, 1235: 7434, 7757}, - {387, 387, 6: 7461, 51: 387, 7462, 1128: 7758}, - {384, 384, 51: 7466, 1254: 7759}, + {163, 163, 86: 163, 88: 163, 90: 163, 163, 95: 163, 163, 98: 163, 163, 163, 163, 103: 163, 725: 163}, + {161, 161, 86: 161, 88: 161, 90: 161, 161, 95: 161, 161, 98: 161, 161, 161, 161, 103: 161, 725: 161}, + {160, 160, 86: 160, 88: 160, 90: 160, 160, 95: 160, 160, 98: 160, 160, 160, 160, 103: 160, 537: 7775, 548: 2330, 2330, 561: 4611, 564: 2330, 725: 160, 808: 7774}, + {548: 4564, 4565, 564: 3054, 805: 4561, 833: 4563, 917: 7777}, + {548: 4564, 4565, 564: 3054, 805: 4561, 833: 4563, 917: 7776}, // 4905 - {418, 418}, - {57: 7761}, - {183: 7762}, - {723: 7763}, - {533: 5886, 997: 7764}, + {158, 158, 86: 158, 88: 158, 90: 158, 158, 95: 158, 158, 98: 158, 158, 158, 158, 103: 158, 725: 158}, + {159, 159, 86: 159, 88: 159, 90: 159, 159, 95: 159, 159, 98: 159, 159, 159, 159, 103: 159, 725: 159}, + {162, 162, 86: 162, 88: 162, 90: 162, 162, 95: 162, 162, 98: 162, 162, 162, 162, 103: 162, 725: 162}, + {2: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 10: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 58: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 583: 4971, 860: 7780}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 777: 5539, 3068, 3069, 3067, 995: 7781}, // 4910 - {417, 417}, - {16: 1647, 18: 1647, 21: 1647, 214: 5509, 535: 1647, 538: 1647, 553: 1647, 557: 1647, 709: 1647}, - {16: 2446, 18: 2446, 21: 2446, 535: 4724, 538: 2446, 553: 2446, 557: 7559, 709: 2446, 865: 7558, 891: 7557, 954: 7561, 1037: 7768}, - {2467, 2467, 16: 2446, 18: 2446, 21: 2446, 535: 4724, 538: 2446, 553: 2446, 557: 7559, 709: 2446, 865: 7558, 891: 7557, 954: 7562}, - {2468, 2468, 16: 2446, 18: 2446, 21: 2446, 535: 4724, 538: 2446, 553: 2446, 557: 7559, 709: 2446, 865: 7558, 891: 7557, 954: 7562}, + {108: 7517, 119: 7522, 7524, 7518, 7523, 7526, 7520, 7516, 7521, 128: 7527, 7525, 7519, 982: 7514, 1244: 7782}, + {190, 190, 9: 7553, 108: 7517, 119: 7522, 7524, 7518, 7523, 7526, 7520, 7516, 7521, 128: 7527, 7525, 7519, 982: 7552}, + {2: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 10: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 58: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 540: 2133, 583: 4971, 860: 7784}, + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 3734, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 540: 4619, 777: 4618, 3068, 3069, 3067, 943: 7785}, + {110: 7386, 7384, 7383, 7385, 7382, 983: 7380, 1261: 7786}, // 4915 - {2314, 2314, 3: 2861, 58: 2884, 84: 2863, 2866, 87: 2896, 2864, 3017, 103: 2898, 117: 3031, 159: 3033, 187: 2881, 195: 2879, 208: 3024, 222: 2892, 250: 2887, 254: 2869, 259: 2917, 266: 2883, 269: 2859, 277: 2916, 3027, 2865, 284: 3032, 296: 2895, 306: 2893, 308: 2860, 310: 2899, 330: 2885, 334: 2888, 341: 2897, 344: 2882, 357: 2874, 531: 2907, 2906, 547: 2905, 552: 2891, 557: 2915, 562: 3026, 575: 3020, 577: 2877, 582: 2875, 587: 2890, 608: 2904, 695: 2900, 710: 3030, 713: 2862, 3019, 724: 2857, 727: 2868, 743: 2867, 766: 2914, 2858, 775: 2911, 803: 2870, 806: 2913, 2901, 2902, 2903, 2912, 2910, 2909, 2908, 815: 2873, 817: 2995, 2994, 822: 3018, 2871, 2976, 826: 2988, 3004, 2876, 833: 2872, 839: 2934, 845: 2928, 2932, 2985, 2996, 857: 2936, 2878, 860: 3003, 3005, 894: 3023, 897: 2880, 904: 2921, 933: 3029, 943: 2929, 957: 3021, 962: 2979, 965: 2990, 967: 2993, 2886, 1035: 2941, 1090: 3025, 1099: 2949, 2919, 1102: 2920, 2923, 1105: 2926, 2924, 2927, 1109: 2925, 1111: 2922, 1113: 2930, 2931, 1116: 2937, 2889, 2974, 3014, 1121: 2938, 1132: 2945, 2939, 2940, 2946, 2947, 2948, 2944, 2950, 2951, 1142: 2943, 2942, 1145: 2933, 2894, 1148: 2952, 2966, 2953, 2954, 3015, 2957, 2956, 2962, 2961, 2963, 2958, 2964, 2965, 2955, 2960, 2959, 1166: 2918, 1169: 2935, 1174: 2970, 2968, 1177: 2969, 2967, 1182: 2972, 2973, 2971, 1188: 3010, 2975, 2977, 1198: 3028, 2978, 1208: 2980, 1210: 2981, 3007, 1213: 3011, 1237: 3012, 1239: 2983, 2984, 1248: 2989, 1251: 2986, 2987, 1258: 3009, 3013, 3022, 2992, 2991, 1268: 2997, 1270: 2999, 2998, 1273: 3001, 1275: 3008, 1278: 3000, 1284: 7770, 1298: 3002, 2982, 3006}, - {627, 627}, + {193, 193, 9: 7434, 110: 7386, 7384, 7383, 7385, 7382, 983: 7433}, + {18: 4704, 871: 7788}, + {416, 416}, + {417, 417}, + {453: 7791}, + // 4920 + {415, 415, 86: 7792}, + {87: 7793}, + {535: 7794}, + {257: 7795}, + {414, 414}, + // 4925 + {2: 3317, 3472, 3281, 3157, 3197, 3319, 3081, 10: 3129, 3082, 3220, 3338, 3331, 3726, 3721, 3200, 3512, 3202, 3175, 3115, 3107, 3118, 3140, 3204, 3205, 3313, 3199, 3339, 3463, 3462, 3420, 3080, 3198, 3201, 3212, 3148, 3152, 3208, 3323, 3165, 3248, 3078, 3079, 3247, 3321, 3077, 3336, 3421, 3422, 3158, 3073, 3293, 3423, 3424, 3718, 58: 3408, 3164, 3167, 3390, 3387, 3379, 3391, 3394, 3395, 3392, 3396, 3397, 3393, 3588, 3583, 3386, 3398, 3381, 3382, 3587, 3385, 3388, 3585, 3389, 3399, 3586, 3086, 3101, 3234, 3161, 3168, 3730, 3366, 3365, 3170, 3070, 3095, 3367, 3362, 3116, 3361, 3368, 3363, 3364, 3278, 3159, 3351, 3416, 3349, 3417, 3476, 3350, 3595, 3581, 3577, 3594, 3576, 3173, 3242, 3513, 3731, 3565, 3570, 3557, 3569, 3571, 3560, 3566, 3567, 3348, 3568, 3572, 3564, 3098, 3237, 3723, 3592, 3494, 3589, 3743, 3725, 3741, 3742, 3740, 3736, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3732, 3719, 3091, 3337, 3127, 3169, 3357, 3174, 3497, 3259, 3263, 3287, 3289, 3267, 3268, 3269, 3270, 3258, 3100, 3288, 3419, 3499, 3214, 3142, 3522, 3109, 3722, 3130, 3451, 3728, 3239, 3279, 3137, 3195, 3216, 3729, 3186, 3377, 3089, 3106, 3117, 3132, 3141, 3545, 3352, 3219, 3160, 3261, 3413, 3596, 3176, 3177, 3470, 3184, 3238, 3087, 3088, 3120, 3136, 3329, 3333, 3206, 3207, 3146, 3147, 3401, 3516, 3275, 7797, 3425, 3450, 3355, 3514, 3151, 3354, 3459, 3185, 3402, 3090, 3591, 3427, 3590, 3724, 3213, 3144, 3371, 3297, 3409, 3410, 3373, 3233, 3411, 3328, 3456, 3369, 3163, 3266, 3326, 3223, 3074, 3441, 3102, 3446, 3228, 3112, 3114, 3230, 3121, 3549, 3131, 3134, 3428, 3311, 3380, 3189, 3744, 3407, 3257, 3226, 3286, 3332, 3215, 3593, 3458, 3172, 3469, 3327, 3437, 3438, 3235, 3298, 3582, 3487, 3439, 3430, 3092, 3442, 3096, 3403, 3443, 3739, 3103, 3300, 3489, 3445, 3295, 3111, 3447, 3309, 3335, 3320, 3495, 3449, 3479, 3113, 3330, 3125, 3360, 3552, 3135, 3138, 3578, 3310, 3358, 3122, 3502, 3353, 3503, 3304, 3356, 3414, 3580, 3579, 3584, 3240, 3452, 3453, 3243, 3244, 3302, 3454, 3412, 3155, 3156, 3274, 3383, 3276, 3517, 3455, 3324, 3325, 3264, 3166, 3306, 3076, 3527, 3305, 3573, 3534, 3535, 3536, 3537, 3539, 3538, 3540, 3541, 3542, 3471, 3180, 3307, 3562, 3597, 3561, 3187, 3071, 3359, 3376, 3083, 3378, 3085, 3404, 3075, 3440, 3285, 3093, 3094, 3272, 3415, 3735, 3444, 3217, 3099, 3104, 3105, 3448, 3229, 3496, 3231, 3119, 3241, 3124, 3292, 3546, 3126, 3303, 3429, 3236, 3210, 3466, 3294, 3225, 3504, 3280, 3299, 3346, 3222, 3312, 3143, 3750, 3203, 3370, 3291, 3745, 3434, 3433, 3435, 3473, 3547, 3149, 3315, 3318, 3372, 3406, 3474, 3727, 3418, 3253, 3254, 3260, 3509, 3477, 3510, 3478, 3384, 3426, 3162, 3480, 3322, 3284, 3221, 3457, 3316, 3273, 3464, 3461, 3465, 3460, 3301, 3405, 3314, 3531, 3468, 3282, 3555, 3543, 3432, 3436, 3181, 3211, 3218, 3283, 3475, 3431, 3290, 3748, 3192, 3482, 3483, 3720, 3484, 3485, 3486, 3548, 3488, 3491, 3490, 3492, 3493, 3123, 3277, 3246, 3498, 3128, 3556, 3749, 3501, 3334, 3574, 3575, 3755, 3754, 3746, 3558, 3559, 3507, 3296, 3506, 3145, 3508, 3515, 3252, 3153, 3154, 3400, 3271, 3737, 3738, 3511, 3747, 3265, 3193, 3308, 3224, 3227, 3550, 3523, 3524, 3525, 3526, 3518, 3551, 3751, 3520, 3521, 3245, 3467, 3752, 3753, 3544, 3183, 3528, 3529, 3530, 3563, 3733, 538: 3759, 636: 5876, 777: 3760, 3068, 3069, 3067, 811: 5875, 861: 5893, 1000: 5894, 1030: 7798}, + {1976, 1976, 6: 1976, 9: 1976, 15: 1976, 51: 1976, 1976, 1976, 1976, 1976, 183: 1976, 536: 7804, 1976, 633: 1976, 730: 1976, 1976}, + {402, 402, 6: 402, 9: 5896, 15: 402, 51: 402, 402, 402, 402, 402, 537: 402, 730: 5940, 1081: 5939, 7799}, + {410, 410, 6: 410, 15: 410, 51: 410, 410, 410, 410, 410, 537: 7459, 1137: 7800}, + {383, 383, 6: 383, 15: 7475, 51: 383, 383, 7474, 7476, 7477, 1074: 7473, 1241: 7472, 7801}, + // 4930 + {388, 388, 6: 7499, 51: 388, 7500, 1134: 7802}, + {385, 385, 51: 7504, 1260: 7803}, + {419, 419}, + {57: 7805}, + {183: 7806}, + // 4935 + {728: 7807}, + {538: 5909, 1003: 7808}, + {418, 418}, + {16: 1656, 18: 1656, 21: 1656, 215: 5532, 540: 1656, 543: 1656, 558: 1656, 560: 1656, 714: 1656}, + {16: 2460, 18: 2460, 21: 2460, 540: 4747, 543: 2460, 558: 2460, 560: 7597, 714: 2460, 871: 7596, 897: 7595, 960: 7599, 1043: 7812}, + // 4940 + {2481, 2481, 16: 2460, 18: 2460, 21: 2460, 540: 4747, 543: 2460, 558: 2460, 560: 7597, 714: 2460, 871: 7596, 897: 7595, 960: 7600}, + {2482, 2482, 16: 2460, 18: 2460, 21: 2460, 540: 4747, 543: 2460, 558: 2460, 560: 7597, 714: 2460, 871: 7596, 897: 7595, 960: 7600}, + {2328, 2328, 3: 2878, 58: 2901, 84: 2880, 2883, 87: 2913, 2881, 3034, 103: 2915, 117: 3048, 159: 3050, 187: 2898, 197: 2896, 210: 3041, 223: 2909, 250: 2904, 254: 2886, 259: 2934, 266: 2900, 269: 2876, 277: 2933, 3044, 2882, 284: 3049, 296: 2912, 306: 2910, 308: 2877, 310: 2916, 331: 2902, 335: 2905, 342: 2914, 345: 2899, 358: 2891, 536: 2924, 2923, 552: 2922, 557: 2908, 560: 2932, 567: 3043, 580: 3037, 582: 2894, 587: 2892, 592: 2907, 613: 2921, 661: 2917, 715: 3047, 718: 2879, 3036, 729: 2874, 732: 2885, 748: 2884, 772: 2931, 2875, 781: 2928, 809: 2887, 812: 2930, 2918, 2919, 2920, 2929, 2927, 2926, 2925, 822: 2890, 3012, 3011, 827: 3035, 829: 2888, 2993, 3005, 3021, 834: 2893, 839: 2889, 845: 2951, 851: 2945, 2949, 3002, 3013, 863: 2953, 2895, 866: 3020, 3022, 900: 3040, 903: 2897, 910: 2938, 940: 3046, 950: 2946, 963: 3038, 968: 2996, 971: 3007, 973: 3010, 2903, 1041: 2958, 1096: 3042, 1105: 2966, 2936, 1108: 2937, 2940, 1111: 2943, 2941, 2944, 1115: 2942, 1117: 2939, 1119: 2947, 2948, 1122: 2954, 2906, 2991, 3031, 1127: 2955, 1138: 2962, 2956, 2957, 2963, 2964, 2965, 2961, 2967, 2968, 1148: 2960, 2959, 1151: 2950, 2911, 1154: 2969, 2983, 2970, 2971, 3032, 2974, 2973, 2979, 2978, 2980, 2975, 2981, 2982, 2972, 2977, 2976, 1172: 2935, 1175: 2952, 1180: 2987, 2985, 1183: 2986, 2984, 1188: 2989, 2990, 2988, 1194: 3027, 2992, 2994, 1204: 3045, 2995, 1214: 2997, 1216: 2998, 3024, 1219: 3028, 1243: 3029, 1245: 3000, 3001, 1254: 3006, 1257: 3003, 3004, 1264: 3026, 3030, 3039, 3009, 3008, 1274: 3014, 1276: 3016, 3015, 1279: 3018, 1281: 3025, 1284: 3017, 1290: 7814, 1304: 3019, 2999, 3023}, + {628, 628}, } ) @@ -12818,7 +12887,7 @@ func yylex1(yylex yyLexer, lval *yySymType) (n int) { } func yyParse(yylex yyLexer, parser *Parser) int { - const yyError = 1520 + const yyError = 1527 yyEx, _ := yylex.(yyLexerEx) var yyn int @@ -14180,46 +14249,84 @@ yynewstate: case 184: { parser.yyVAL.statement = &ast.FlashBackToTimestampStmt{ - FlashbackTS: ast.NewValueExpr(yyS[yypt-0].ident, "", ""), + FlashbackTS: ast.NewValueExpr(yyS[yypt-0].ident, "", ""), + FlashbackTSO: 0, } } case 185: { parser.yyVAL.statement = &ast.FlashBackToTimestampStmt{ - Tables: yyS[yypt-2].item.([]*ast.TableName), - FlashbackTS: ast.NewValueExpr(yyS[yypt-0].ident, "", ""), + Tables: yyS[yypt-2].item.([]*ast.TableName), + FlashbackTS: ast.NewValueExpr(yyS[yypt-0].ident, "", ""), + FlashbackTSO: 0, } } case 186: { parser.yyVAL.statement = &ast.FlashBackToTimestampStmt{ - DBName: model.NewCIStr(yyS[yypt-2].ident), - FlashbackTS: ast.NewValueExpr(yyS[yypt-0].ident, "", ""), + DBName: model.NewCIStr(yyS[yypt-2].ident), + FlashbackTS: ast.NewValueExpr(yyS[yypt-0].ident, "", ""), + FlashbackTSO: 0, } } case 187: + { + if tsoValue, ok := yyS[yypt-0].item.(uint64); ok && tsoValue > 0 { + parser.yyVAL.statement = &ast.FlashBackToTimestampStmt{ + FlashbackTSO: tsoValue, + } + } else { + yylex.AppendError(yylex.Errorf("Invalid TSO value provided: %d", yyS[yypt-0].item)) + return 1 + } + } + case 188: + { + if tsoValue, ok := yyS[yypt-0].item.(uint64); ok && tsoValue > 0 { + parser.yyVAL.statement = &ast.FlashBackToTimestampStmt{ + Tables: yyS[yypt-2].item.([]*ast.TableName), + FlashbackTSO: tsoValue, + } + } else { + yylex.AppendError(yylex.Errorf("Invalid TSO value provided: %d", yyS[yypt-0].item)) + return 1 + } + } + case 189: + { + if tsoValue, ok := yyS[yypt-0].item.(uint64); ok && tsoValue > 0 { + parser.yyVAL.statement = &ast.FlashBackToTimestampStmt{ + DBName: model.NewCIStr(yyS[yypt-2].ident), + FlashbackTSO: tsoValue, + } + } else { + yylex.AppendError(yylex.Errorf("Invalid TSO value provided: %d", yyS[yypt-0].item)) + return 1 + } + } + case 190: { parser.yyVAL.statement = &ast.FlashBackTableStmt{ Table: yyS[yypt-1].item.(*ast.TableName), NewName: yyS[yypt-0].ident, } } - case 188: + case 191: { parser.yyVAL.ident = "" } - case 189: + case 192: { parser.yyVAL.ident = yyS[yypt-0].ident } - case 190: + case 193: { parser.yyVAL.statement = &ast.FlashBackDatabaseStmt{ DBName: model.NewCIStr(yyS[yypt-1].ident), NewName: yyS[yypt-0].ident, } } - case 191: + case 194: { parser.yyVAL.statement = &ast.SplitRegionStmt{ SplitSyntaxOpt: yyS[yypt-4].item.(*ast.SplitSyntaxOption), @@ -14228,7 +14335,7 @@ yynewstate: SplitOpt: yyS[yypt-0].item.(*ast.SplitOption), } } - case 192: + case 195: { parser.yyVAL.statement = &ast.SplitRegionStmt{ SplitSyntaxOpt: yyS[yypt-6].item.(*ast.SplitSyntaxOption), @@ -14238,7 +14345,7 @@ yynewstate: SplitOpt: yyS[yypt-0].item.(*ast.SplitOption), } } - case 193: + case 196: { parser.yyVAL.item = &ast.SplitOption{ Lower: yyS[yypt-4].item.([]ast.ExprNode), @@ -14246,52 +14353,52 @@ yynewstate: Num: yyS[yypt-0].item.(int64), } } - case 194: + case 197: { parser.yyVAL.item = &ast.SplitOption{ ValueLists: yyS[yypt-0].item.([][]ast.ExprNode), } } - case 195: + case 198: { parser.yyVAL.item = &ast.SplitSyntaxOption{} } - case 196: + case 199: { parser.yyVAL.item = &ast.SplitSyntaxOption{ HasRegionFor: true, } } - case 197: + case 200: { parser.yyVAL.item = &ast.SplitSyntaxOption{ HasPartition: true, } } - case 198: + case 201: { parser.yyVAL.item = &ast.SplitSyntaxOption{ HasRegionFor: true, HasPartition: true, } } - case 199: + case 202: { parser.yyVAL.statement = &ast.AnalyzeTableStmt{TableNames: yyS[yypt-2].item.([]*ast.TableName), ColumnChoice: yyS[yypt-1].item.(model.ColumnChoice), AnalyzeOpts: yyS[yypt-0].item.([]ast.AnalyzeOpt)} } - case 200: + case 203: { parser.yyVAL.statement = &ast.AnalyzeTableStmt{TableNames: []*ast.TableName{yyS[yypt-3].item.(*ast.TableName)}, IndexNames: yyS[yypt-1].item.([]model.CIStr), IndexFlag: true, AnalyzeOpts: yyS[yypt-0].item.([]ast.AnalyzeOpt)} } - case 201: + case 204: { parser.yyVAL.statement = &ast.AnalyzeTableStmt{TableNames: []*ast.TableName{yyS[yypt-3].item.(*ast.TableName)}, IndexNames: yyS[yypt-1].item.([]model.CIStr), IndexFlag: true, Incremental: true, AnalyzeOpts: yyS[yypt-0].item.([]ast.AnalyzeOpt)} } - case 202: + case 205: { parser.yyVAL.statement = &ast.AnalyzeTableStmt{TableNames: []*ast.TableName{yyS[yypt-4].item.(*ast.TableName)}, PartitionNames: yyS[yypt-2].item.([]model.CIStr), ColumnChoice: yyS[yypt-1].item.(model.ColumnChoice), AnalyzeOpts: yyS[yypt-0].item.([]ast.AnalyzeOpt)} } - case 203: + case 206: { parser.yyVAL.statement = &ast.AnalyzeTableStmt{ TableNames: []*ast.TableName{yyS[yypt-5].item.(*ast.TableName)}, @@ -14301,7 +14408,7 @@ yynewstate: AnalyzeOpts: yyS[yypt-0].item.([]ast.AnalyzeOpt), } } - case 204: + case 207: { parser.yyVAL.statement = &ast.AnalyzeTableStmt{ TableNames: []*ast.TableName{yyS[yypt-5].item.(*ast.TableName)}, @@ -14312,7 +14419,7 @@ yynewstate: AnalyzeOpts: yyS[yypt-0].item.([]ast.AnalyzeOpt), } } - case 205: + case 208: { parser.yyVAL.statement = &ast.AnalyzeTableStmt{ TableNames: []*ast.TableName{yyS[yypt-5].item.(*ast.TableName)}, @@ -14321,7 +14428,7 @@ yynewstate: HistogramOperation: ast.HistogramOperationUpdate, } } - case 206: + case 209: { parser.yyVAL.statement = &ast.AnalyzeTableStmt{ TableNames: []*ast.TableName{yyS[yypt-4].item.(*ast.TableName)}, @@ -14329,7 +14436,7 @@ yynewstate: HistogramOperation: ast.HistogramOperationDrop, } } - case 207: + case 210: { parser.yyVAL.statement = &ast.AnalyzeTableStmt{ TableNames: []*ast.TableName{yyS[yypt-3].item.(*ast.TableName)}, @@ -14337,7 +14444,7 @@ yynewstate: ColumnChoice: model.ColumnList, AnalyzeOpts: yyS[yypt-0].item.([]ast.AnalyzeOpt)} } - case 208: + case 211: { parser.yyVAL.statement = &ast.AnalyzeTableStmt{ TableNames: []*ast.TableName{yyS[yypt-5].item.(*ast.TableName)}, @@ -14346,134 +14453,134 @@ yynewstate: ColumnChoice: model.ColumnList, AnalyzeOpts: yyS[yypt-0].item.([]ast.AnalyzeOpt)} } - case 209: + case 212: { parser.yyVAL.item = model.DefaultChoice } - case 210: + case 213: { parser.yyVAL.item = model.AllColumns } - case 211: + case 214: { parser.yyVAL.item = model.PredicateColumns } - case 212: + case 215: { parser.yyVAL.item = []ast.AnalyzeOpt{} } - case 213: + case 216: { parser.yyVAL.item = yyS[yypt-0].item.([]ast.AnalyzeOpt) } - case 214: + case 217: { parser.yyVAL.item = []ast.AnalyzeOpt{yyS[yypt-0].item.(ast.AnalyzeOpt)} } - case 215: + case 218: { parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.AnalyzeOpt), yyS[yypt-0].item.(ast.AnalyzeOpt)) } - case 216: + case 219: { parser.yyVAL.item = ast.AnalyzeOpt{Type: ast.AnalyzeOptNumBuckets, Value: ast.NewValueExpr(yyS[yypt-1].item, "", "")} } - case 217: + case 220: { parser.yyVAL.item = ast.AnalyzeOpt{Type: ast.AnalyzeOptNumTopN, Value: ast.NewValueExpr(yyS[yypt-1].item, "", "")} } - case 218: + case 221: { parser.yyVAL.item = ast.AnalyzeOpt{Type: ast.AnalyzeOptCMSketchDepth, Value: ast.NewValueExpr(yyS[yypt-2].item, "", "")} } - case 219: + case 222: { parser.yyVAL.item = ast.AnalyzeOpt{Type: ast.AnalyzeOptCMSketchWidth, Value: ast.NewValueExpr(yyS[yypt-2].item, "", "")} } - case 220: + case 223: { parser.yyVAL.item = ast.AnalyzeOpt{Type: ast.AnalyzeOptNumSamples, Value: ast.NewValueExpr(yyS[yypt-1].item, "", "")} } - case 221: + case 224: { parser.yyVAL.item = ast.AnalyzeOpt{Type: ast.AnalyzeOptSampleRate, Value: ast.NewValueExpr(yyS[yypt-1].item, "", "")} } - case 222: + case 225: { parser.yyVAL.item = &ast.Assignment{Column: yyS[yypt-2].item.(*ast.ColumnName), Expr: yyS[yypt-0].expr} } - case 223: + case 226: { parser.yyVAL.item = []*ast.Assignment{yyS[yypt-0].item.(*ast.Assignment)} } - case 224: + case 227: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.Assignment), yyS[yypt-0].item.(*ast.Assignment)) } - case 225: + case 228: { parser.yyVAL.item = []*ast.Assignment{} } - case 227: + case 230: { parser.yyVAL.statement = &ast.BeginStmt{} } - case 228: + case 231: { parser.yyVAL.statement = &ast.BeginStmt{ Mode: ast.Pessimistic, } } - case 229: + case 232: { parser.yyVAL.statement = &ast.BeginStmt{ Mode: ast.Optimistic, } } - case 230: + case 233: { parser.yyVAL.statement = &ast.BeginStmt{} } - case 231: + case 234: { parser.yyVAL.statement = &ast.BeginStmt{} } - case 232: + case 235: { parser.yyVAL.statement = &ast.BeginStmt{} } - case 233: + case 236: { parser.yyVAL.statement = &ast.BeginStmt{ CausalConsistencyOnly: true, } } - case 234: + case 237: { parser.yyVAL.statement = &ast.BeginStmt{ ReadOnly: true, } } - case 235: + case 238: { parser.yyVAL.statement = &ast.BeginStmt{ ReadOnly: true, AsOf: yyS[yypt-0].item.(*ast.AsOfClause), } } - case 236: + case 239: { parser.yyVAL.statement = &ast.BinlogStmt{Str: yyS[yypt-0].ident} } - case 237: + case 240: { parser.yyVAL.item = []*ast.ColumnDef{yyS[yypt-0].item.(*ast.ColumnDef)} } - case 238: + case 241: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.ColumnDef), yyS[yypt-0].item.(*ast.ColumnDef)) } - case 239: + case 242: { colDef := &ast.ColumnDef{Name: yyS[yypt-2].item.(*ast.ColumnName), Tp: yyS[yypt-1].item.(*types.FieldType), Options: yyS[yypt-0].item.([]*ast.ColumnOption)} if err := colDef.Validate(); err != nil { @@ -14482,7 +14589,7 @@ yynewstate: } parser.yyVAL.item = colDef } - case 240: + case 243: { // TODO: check flen 0 tp := types.NewFieldType(mysql.TypeLonglong) @@ -14496,103 +14603,103 @@ yynewstate: } parser.yyVAL.item = colDef } - case 241: + case 244: { parser.yyVAL.item = &ast.ColumnName{Name: model.NewCIStr(yyS[yypt-0].ident)} } - case 242: + case 245: { parser.yyVAL.item = &ast.ColumnName{Table: model.NewCIStr(yyS[yypt-2].ident), Name: model.NewCIStr(yyS[yypt-0].ident)} } - case 243: + case 246: { parser.yyVAL.item = &ast.ColumnName{Schema: model.NewCIStr(yyS[yypt-4].ident), Table: model.NewCIStr(yyS[yypt-2].ident), Name: model.NewCIStr(yyS[yypt-0].ident)} } - case 244: + case 247: { parser.yyVAL.item = []*ast.ColumnName{yyS[yypt-0].item.(*ast.ColumnName)} } - case 245: + case 248: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.ColumnName), yyS[yypt-0].item.(*ast.ColumnName)) } - case 246: + case 249: { parser.yyVAL.item = []*ast.ColumnName{} } - case 248: + case 251: { parser.yyVAL.item = []model.CIStr{} } - case 249: + case 252: { parser.yyVAL.item = yyS[yypt-1].item } - case 250: + case 253: { parser.yyVAL.item = []model.CIStr{model.NewCIStr(yyS[yypt-0].ident)} } - case 251: + case 254: { parser.yyVAL.item = append(yyS[yypt-2].item.([]model.CIStr), model.NewCIStr(yyS[yypt-0].ident)) } - case 252: + case 255: { parser.yyVAL.item = []*ast.ColumnNameOrUserVar{} } - case 254: + case 257: { parser.yyVAL.item = []*ast.ColumnNameOrUserVar{yyS[yypt-0].item.(*ast.ColumnNameOrUserVar)} } - case 255: + case 258: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.ColumnNameOrUserVar), yyS[yypt-0].item.(*ast.ColumnNameOrUserVar)) } - case 256: + case 259: { parser.yyVAL.item = &ast.ColumnNameOrUserVar{ColumnName: yyS[yypt-0].item.(*ast.ColumnName)} } - case 257: + case 260: { parser.yyVAL.item = &ast.ColumnNameOrUserVar{UserVar: yyS[yypt-0].expr.(*ast.VariableExpr)} } - case 258: + case 261: { parser.yyVAL.item = []*ast.ColumnNameOrUserVar{} } - case 259: + case 262: { parser.yyVAL.item = yyS[yypt-1].item.([]*ast.ColumnNameOrUserVar) } - case 260: + case 263: { parser.yyVAL.statement = &ast.CommitStmt{} } - case 261: + case 264: { parser.yyVAL.statement = &ast.CommitStmt{CompletionType: yyS[yypt-0].item.(ast.CompletionType)} } - case 265: + case 268: { parser.yyVAL.ident = "NOT" } - case 266: + case 269: { parser.yyVAL.item = true } - case 267: + case 270: { parser.yyVAL.item = false } - case 268: + case 271: { parser.yyVAL.item = true } - case 270: + case 273: { parser.yyVAL.item = 0 } - case 271: + case 274: { if yyS[yypt-0].item.(bool) { parser.yyVAL.item = 1 @@ -14600,57 +14707,57 @@ yynewstate: parser.yyVAL.item = 2 } } - case 272: + case 275: { parser.yyVAL.item = &ast.ColumnOption{Tp: ast.ColumnOptionNotNull} } - case 273: + case 276: { parser.yyVAL.item = &ast.ColumnOption{Tp: ast.ColumnOptionNull} } - case 274: + case 277: { parser.yyVAL.item = &ast.ColumnOption{Tp: ast.ColumnOptionAutoIncrement} } - case 275: + case 278: { // KEY is normally a synonym for INDEX. The key attribute PRIMARY KEY // can also be specified as just KEY when given in a column definition. // See http://dev.mysql.com/doc/refman/5.7/en/create-table.html parser.yyVAL.item = &ast.ColumnOption{Tp: ast.ColumnOptionPrimaryKey} } - case 276: + case 279: { // KEY is normally a synonym for INDEX. The key attribute PRIMARY KEY // can also be specified as just KEY when given in a column definition. // See http://dev.mysql.com/doc/refman/5.7/en/create-table.html parser.yyVAL.item = &ast.ColumnOption{Tp: ast.ColumnOptionPrimaryKey, PrimaryKeyTp: yyS[yypt-0].item.(model.PrimaryKeyType)} } - case 277: + case 280: { parser.yyVAL.item = &ast.ColumnOption{Tp: ast.ColumnOptionUniqKey} } - case 278: + case 281: { parser.yyVAL.item = &ast.ColumnOption{Tp: ast.ColumnOptionUniqKey} } - case 279: + case 282: { parser.yyVAL.item = &ast.ColumnOption{Tp: ast.ColumnOptionDefaultValue, Expr: yyS[yypt-0].expr} } - case 280: + case 283: { parser.yyVAL.item = []*ast.ColumnOption{{Tp: ast.ColumnOptionNotNull}, {Tp: ast.ColumnOptionAutoIncrement}, {Tp: ast.ColumnOptionUniqKey}} } - case 281: + case 284: { parser.yyVAL.item = &ast.ColumnOption{Tp: ast.ColumnOptionOnUpdate, Expr: yyS[yypt-0].expr} } - case 282: + case 285: { parser.yyVAL.item = &ast.ColumnOption{Tp: ast.ColumnOptionComment, Expr: ast.NewValueExpr(yyS[yypt-0].ident, "", "")} } - case 283: + case 286: { // See https://dev.mysql.com/doc/refman/5.7/en/create-table.html // The CHECK clause is parsed but ignored by all storage engines. @@ -14677,7 +14784,7 @@ yynewstate: default: } } - case 284: + case 287: { startOffset := parser.startOffset(&yyS[yypt-2]) endOffset := parser.endOffset(&yyS[yypt-1]) @@ -14690,68 +14797,68 @@ yynewstate: Stored: yyS[yypt-0].item.(bool), } } - case 285: + case 288: { parser.yyVAL.item = &ast.ColumnOption{ Tp: ast.ColumnOptionReference, Refer: yyS[yypt-0].item.(*ast.ReferenceDef), } } - case 286: + case 289: { parser.yyVAL.item = &ast.ColumnOption{Tp: ast.ColumnOptionCollate, StrValue: yyS[yypt-0].ident} } - case 287: + case 290: { parser.yyVAL.item = &ast.ColumnOption{Tp: ast.ColumnOptionColumnFormat, StrValue: yyS[yypt-0].ident} } - case 288: + case 291: { parser.yyVAL.item = &ast.ColumnOption{Tp: ast.ColumnOptionStorage, StrValue: yyS[yypt-0].ident} yylex.AppendError(yylex.Errorf("The STORAGE clause is parsed but ignored by all storage engines.")) parser.lastErrorAsWarn() } - case 289: + case 292: { parser.yyVAL.item = &ast.ColumnOption{Tp: ast.ColumnOptionAutoRandom, AutoRandOpt: yyS[yypt-0].item.(ast.AutoRandomOption)} } - case 290: + case 293: { parser.yyVAL.item = ast.AutoRandomOption{ShardBits: types.UnspecifiedLength, RangeBits: types.UnspecifiedLength} } - case 291: + case 294: { parser.yyVAL.item = ast.AutoRandomOption{ShardBits: int(yyS[yypt-1].item.(uint64)), RangeBits: types.UnspecifiedLength} } - case 292: + case 295: { parser.yyVAL.item = ast.AutoRandomOption{ShardBits: int(yyS[yypt-3].item.(uint64)), RangeBits: int(yyS[yypt-1].item.(uint64))} } - case 296: + case 299: { parser.yyVAL.ident = "DEFAULT" } - case 297: + case 300: { parser.yyVAL.ident = "FIXED" } - case 298: + case 301: { parser.yyVAL.ident = "DYNAMIC" } - case 301: + case 304: { parser.yyVAL.item = false } - case 302: + case 305: { parser.yyVAL.item = false } - case 303: + case 306: { parser.yyVAL.item = true } - case 304: + case 307: { if columnOption, ok := yyS[yypt-0].item.(*ast.ColumnOption); ok { parser.yyVAL.item = []*ast.ColumnOption{columnOption} @@ -14759,7 +14866,7 @@ yynewstate: parser.yyVAL.item = yyS[yypt-0].item } } - case 305: + case 308: { if columnOption, ok := yyS[yypt-0].item.(*ast.ColumnOption); ok { parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.ColumnOption), columnOption) @@ -14767,11 +14874,11 @@ yynewstate: parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.ColumnOption), yyS[yypt-0].item.([]*ast.ColumnOption)...) } } - case 306: + case 309: { parser.yyVAL.item = []*ast.ColumnOption{} } - case 308: + case 311: { c := &ast.Constraint{ Tp: ast.ConstraintPrimaryKey, @@ -14790,7 +14897,7 @@ yynewstate: } parser.yyVAL.item = c } - case 309: + case 312: { c := &ast.Constraint{ Tp: ast.ConstraintFulltext, @@ -14803,7 +14910,7 @@ yynewstate: } parser.yyVAL.item = c } - case 310: + case 313: { c := &ast.Constraint{ IfNotExists: yyS[yypt-5].item.(bool), @@ -14823,7 +14930,7 @@ yynewstate: } parser.yyVAL.item = c } - case 311: + case 314: { c := &ast.Constraint{ Tp: ast.ConstraintUniq, @@ -14843,7 +14950,7 @@ yynewstate: } parser.yyVAL.item = c } - case 312: + case 315: { parser.yyVAL.item = &ast.Constraint{ IfNotExists: yyS[yypt-5].item.(bool), @@ -14854,7 +14961,7 @@ yynewstate: IsEmptyIndex: yyS[yypt-4].item.(*ast.NullString).Empty, } } - case 313: + case 316: { parser.yyVAL.item = &ast.Constraint{ Tp: ast.ConstraintCheck, @@ -14862,29 +14969,29 @@ yynewstate: Enforced: yyS[yypt-0].item.(bool), } } - case 314: + case 317: { parser.yyVAL.item = ast.MatchFull } - case 315: + case 318: { parser.yyVAL.item = ast.MatchPartial } - case 316: + case 319: { parser.yyVAL.item = ast.MatchSimple } - case 317: + case 320: { parser.yyVAL.item = ast.MatchNone } - case 318: + case 321: { parser.yyVAL.item = yyS[yypt-0].item yylex.AppendError(yylex.Errorf("The MATCH clause is parsed but ignored by all storage engines.")) parser.lastErrorAsWarn() } - case 319: + case 322: { onDeleteUpdate := yyS[yypt-0].item.([2]interface{}) parser.yyVAL.item = &ast.ReferenceDef{ @@ -14895,98 +15002,98 @@ yynewstate: Match: yyS[yypt-1].item.(ast.MatchType), } } - case 320: + case 323: { parser.yyVAL.item = &ast.OnDeleteOpt{ReferOpt: yyS[yypt-0].item.(model.ReferOptionType)} } - case 321: + case 324: { parser.yyVAL.item = &ast.OnUpdateOpt{ReferOpt: yyS[yypt-0].item.(model.ReferOptionType)} } - case 322: + case 325: { parser.yyVAL.item = [2]interface{}{&ast.OnDeleteOpt{}, &ast.OnUpdateOpt{}} } - case 323: + case 326: { parser.yyVAL.item = [2]interface{}{yyS[yypt-0].item, &ast.OnUpdateOpt{}} } - case 324: + case 327: { parser.yyVAL.item = [2]interface{}{&ast.OnDeleteOpt{}, yyS[yypt-0].item} } - case 325: + case 328: { parser.yyVAL.item = [2]interface{}{yyS[yypt-1].item, yyS[yypt-0].item} } - case 326: + case 329: { parser.yyVAL.item = [2]interface{}{yyS[yypt-0].item, yyS[yypt-1].item} } - case 327: + case 330: { parser.yyVAL.item = model.ReferOptionRestrict } - case 328: + case 331: { parser.yyVAL.item = model.ReferOptionCascade } - case 329: + case 332: { parser.yyVAL.item = model.ReferOptionSetNull } - case 330: + case 333: { parser.yyVAL.item = model.ReferOptionNoAction } - case 331: + case 334: { parser.yyVAL.item = model.ReferOptionSetDefault yylex.AppendError(yylex.Errorf("The SET DEFAULT clause is parsed but ignored by all storage engines.")) parser.lastErrorAsWarn() } - case 336: + case 339: { parser.yyVAL.expr = yyS[yypt-1].expr.(*ast.FuncCallExpr) } - case 337: + case 340: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-2].ident), } } - case 338: + case 341: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-3].ident), Args: yyS[yypt-1].item.([]ast.ExprNode), } } - case 339: + case 342: { parser.yyVAL.expr = yyS[yypt-1].expr.(*ast.FuncCallExpr) } - case 341: + case 344: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr("CURRENT_TIMESTAMP")} } - case 342: + case 345: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr("CURRENT_TIMESTAMP")} } - case 343: + case 346: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr("CURRENT_TIMESTAMP"), Args: []ast.ExprNode{ast.NewValueExpr(yyS[yypt-1].item, parser.charset, parser.collation)}} } - case 344: + case 347: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr("CURRENT_DATE")} } - case 345: + case 348: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr("CURRENT_DATE")} } - case 346: + case 349: { objNameExpr := &ast.TableNameExpr{ Name: yyS[yypt-0].item.(*ast.TableName), @@ -14996,7 +15103,7 @@ yynewstate: Args: []ast.ExprNode{objNameExpr}, } } - case 347: + case 350: { objNameExpr := &ast.TableNameExpr{ Name: yyS[yypt-1].item.(*ast.TableName), @@ -15006,39 +15113,39 @@ yynewstate: Args: []ast.ExprNode{objNameExpr}, } } - case 357: + case 360: { parser.yyVAL.expr = ast.NewValueExpr(yyS[yypt-0].expr, parser.charset, parser.collation) } - case 358: + case 361: { parser.yyVAL.expr = &ast.UnaryOperationExpr{Op: opcode.Plus, V: ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation)} } - case 359: + case 362: { parser.yyVAL.expr = &ast.UnaryOperationExpr{Op: opcode.Minus, V: ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation)} } - case 363: + case 366: { parser.yyVAL.item = ast.StatsTypeCardinality } - case 364: + case 367: { parser.yyVAL.item = ast.StatsTypeDependency } - case 365: + case 368: { parser.yyVAL.item = ast.StatsTypeCorrelation } - case 366: + case 369: { parser.yyVAL.item = ast.BindingStatusTypeEnabled } - case 367: + case 370: { parser.yyVAL.item = ast.BindingStatusTypeDisabled } - case 368: + case 371: { parser.yyVAL.statement = &ast.CreateStatisticsStmt{ IfNotExists: yyS[yypt-9].item.(bool), @@ -15048,11 +15155,11 @@ yynewstate: Columns: yyS[yypt-1].item.([]*ast.ColumnName), } } - case 369: + case 372: { parser.yyVAL.statement = &ast.DropStatisticsStmt{StatsName: yyS[yypt-0].ident} } - case 370: + case 373: { var indexOption *ast.IndexOption if yyS[yypt-1].item != nil { @@ -15085,79 +15192,79 @@ yynewstate: LockAlg: indexLockAndAlgorithm, } } - case 371: + case 374: { parser.yyVAL.item = ([]*ast.IndexPartSpecification)(nil) } - case 372: + case 375: { parser.yyVAL.item = yyS[yypt-1].item } - case 373: + case 376: { parser.yyVAL.item = []*ast.IndexPartSpecification{yyS[yypt-0].item.(*ast.IndexPartSpecification)} } - case 374: + case 377: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.IndexPartSpecification), yyS[yypt-0].item.(*ast.IndexPartSpecification)) } - case 375: + case 378: { parser.yyVAL.item = &ast.IndexPartSpecification{Column: yyS[yypt-2].item.(*ast.ColumnName), Length: yyS[yypt-1].item.(int), Desc: yyS[yypt-0].item.(bool)} } - case 376: + case 379: { parser.yyVAL.item = &ast.IndexPartSpecification{Expr: yyS[yypt-2].expr, Desc: yyS[yypt-0].item.(bool)} } - case 377: + case 380: { parser.yyVAL.item = nil } - case 378: + case 381: { parser.yyVAL.item = &ast.IndexLockAndAlgorithm{ LockTp: yyS[yypt-0].item.(ast.LockType), AlgorithmTp: ast.AlgorithmTypeDefault, } } - case 379: + case 382: { parser.yyVAL.item = &ast.IndexLockAndAlgorithm{ LockTp: ast.LockTypeDefault, AlgorithmTp: yyS[yypt-0].item.(ast.AlgorithmType), } } - case 380: + case 383: { parser.yyVAL.item = &ast.IndexLockAndAlgorithm{ LockTp: yyS[yypt-1].item.(ast.LockType), AlgorithmTp: yyS[yypt-0].item.(ast.AlgorithmType), } } - case 381: + case 384: { parser.yyVAL.item = &ast.IndexLockAndAlgorithm{ LockTp: yyS[yypt-0].item.(ast.LockType), AlgorithmTp: yyS[yypt-1].item.(ast.AlgorithmType), } } - case 382: + case 385: { parser.yyVAL.item = ast.IndexKeyTypeNone } - case 383: + case 386: { parser.yyVAL.item = ast.IndexKeyTypeUnique } - case 384: + case 387: { parser.yyVAL.item = ast.IndexKeyTypeSpatial } - case 385: + case 388: { parser.yyVAL.item = ast.IndexKeyTypeFullText } - case 386: + case 389: { parser.yyVAL.statement = &ast.AlterDatabaseStmt{ Name: model.NewCIStr(yyS[yypt-1].ident), @@ -15165,7 +15272,7 @@ yynewstate: Options: yyS[yypt-0].item.([]*ast.DatabaseOption), } } - case 387: + case 390: { parser.yyVAL.statement = &ast.AlterDatabaseStmt{ Name: model.NewCIStr(""), @@ -15173,7 +15280,7 @@ yynewstate: Options: yyS[yypt-0].item.([]*ast.DatabaseOption), } } - case 388: + case 391: { parser.yyVAL.statement = &ast.CreateDatabaseStmt{ IfNotExists: yyS[yypt-2].item.(bool), @@ -15181,19 +15288,19 @@ yynewstate: Options: yyS[yypt-0].item.([]*ast.DatabaseOption), } } - case 393: + case 396: { parser.yyVAL.item = &ast.DatabaseOption{Tp: ast.DatabaseOptionCharset, Value: yyS[yypt-0].ident} } - case 394: + case 397: { parser.yyVAL.item = &ast.DatabaseOption{Tp: ast.DatabaseOptionCollate, Value: yyS[yypt-0].ident} } - case 395: + case 398: { parser.yyVAL.item = &ast.DatabaseOption{Tp: ast.DatabaseOptionEncryption, Value: yyS[yypt-0].ident} } - case 396: + case 399: { placementOptions := yyS[yypt-0].item.(*ast.PlacementOption) parser.yyVAL.item = &ast.DatabaseOption{ @@ -15203,7 +15310,7 @@ yynewstate: UintValue: placementOptions.UintValue, } } - case 397: + case 400: { placementOptions := yyS[yypt-0].item.(*ast.PlacementOption) parser.yyVAL.item = &ast.DatabaseOption{ @@ -15213,7 +15320,7 @@ yynewstate: UintValue: placementOptions.UintValue, } } - case 398: + case 401: { tiflashReplicaSpec := &ast.TiFlashReplicaSpec{ Count: yyS[yypt-1].item.(uint64), @@ -15224,19 +15331,19 @@ yynewstate: TiFlashReplica: tiflashReplicaSpec, } } - case 399: + case 402: { parser.yyVAL.item = []*ast.DatabaseOption{} } - case 401: + case 404: { parser.yyVAL.item = []*ast.DatabaseOption{yyS[yypt-0].item.(*ast.DatabaseOption)} } - case 402: + case 405: { parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.DatabaseOption), yyS[yypt-0].item.(*ast.DatabaseOption)) } - case 403: + case 406: { stmt := yyS[yypt-6].item.(*ast.CreateTableStmt) stmt.Table = yyS[yypt-7].item.(*ast.TableName) @@ -15257,7 +15364,7 @@ yynewstate: } parser.yyVAL.statement = stmt } - case 404: + case 407: { tmp := &ast.CreateTableStmt{ Table: yyS[yypt-2].item.(*ast.TableName), @@ -15274,23 +15381,23 @@ yynewstate: } parser.yyVAL.statement = tmp } - case 405: + case 408: { parser.yyVAL.item = nil } - case 406: + case 409: { parser.yyVAL.item = true } - case 407: + case 410: { parser.yyVAL.item = false } - case 410: + case 413: { parser.yyVAL.item = nil } - case 411: + case 414: { method := yyS[yypt-3].item.(*ast.PartitionMethod) method.Num = yyS[yypt-2].item.(uint64) @@ -15307,7 +15414,7 @@ yynewstate: } parser.yyVAL.item = opt } - case 412: + case 415: { keyAlgorithm, _ := yyS[yypt-3].item.(*ast.PartitionKeyAlgorithm) parser.yyVAL.item = &ast.PartitionMethod{ @@ -15317,7 +15424,7 @@ yynewstate: KeyAlgorithm: keyAlgorithm, } } - case 413: + case 416: { parser.yyVAL.item = &ast.PartitionMethod{ Tp: model.PartitionTypeHash, @@ -15325,11 +15432,11 @@ yynewstate: Expr: yyS[yypt-1].expr.(ast.ExprNode), } } - case 414: + case 417: { parser.yyVAL.item = nil } - case 415: + case 418: { tp := getUint64FromNUM(yyS[yypt-0].item) if tp != 1 && tp != 2 { @@ -15340,7 +15447,7 @@ yynewstate: Type: tp, } } - case 417: + case 420: { partitionInterval, _ := yyS[yypt-0].item.(*ast.PartitionInterval) parser.yyVAL.item = &ast.PartitionMethod{ @@ -15349,7 +15456,7 @@ yynewstate: Interval: partitionInterval, } } - case 418: + case 421: { partitionInterval, _ := yyS[yypt-0].item.(*ast.PartitionInterval) parser.yyVAL.item = &ast.PartitionMethod{ @@ -15358,21 +15465,21 @@ yynewstate: Interval: partitionInterval, } } - case 419: + case 422: { parser.yyVAL.item = &ast.PartitionMethod{ Tp: model.PartitionTypeList, Expr: yyS[yypt-1].expr.(ast.ExprNode), } } - case 420: + case 423: { parser.yyVAL.item = &ast.PartitionMethod{ Tp: model.PartitionTypeList, ColumnNames: yyS[yypt-1].item.([]*ast.ColumnName), } } - case 421: + case 424: { parser.yyVAL.item = &ast.PartitionMethod{ Tp: model.PartitionTypeSystemTime, @@ -15380,24 +15487,24 @@ yynewstate: Unit: yyS[yypt-0].item.(ast.TimeUnitType), } } - case 422: + case 425: { parser.yyVAL.item = &ast.PartitionMethod{ Tp: model.PartitionTypeSystemTime, Limit: yyS[yypt-0].item.(uint64), } } - case 423: + case 426: { parser.yyVAL.item = &ast.PartitionMethod{ Tp: model.PartitionTypeSystemTime, } } - case 424: + case 427: { parser.yyVAL.item = nil } - case 425: + case 428: { partitionInterval := &ast.PartitionInterval{ IntervalExpr: yyS[yypt-4].item.(ast.PartitionIntervalExpr), @@ -15413,35 +15520,35 @@ yynewstate: partitionInterval.SetOriginTextPosition(startOffset) parser.yyVAL.item = partitionInterval } - case 426: + case 429: { parser.yyVAL.item = ast.PartitionIntervalExpr{Expr: yyS[yypt-0].expr, TimeUnit: ast.TimeUnitInvalid} } - case 427: + case 430: { parser.yyVAL.item = ast.PartitionIntervalExpr{Expr: yyS[yypt-1].expr, TimeUnit: yyS[yypt-0].item.(ast.TimeUnitType)} } - case 428: + case 431: { parser.yyVAL.item = false } - case 429: + case 432: { parser.yyVAL.item = true } - case 430: + case 433: { parser.yyVAL.item = false } - case 431: + case 434: { parser.yyVAL.item = true } - case 432: + case 435: { parser.yyVAL.item = ast.PartitionInterval{} // First/LastRangeEnd defaults to nil } - case 433: + case 436: { first := yyS[yypt-8].expr.(ast.ExprNode) last := yyS[yypt-1].expr.(ast.ExprNode) @@ -15450,25 +15557,25 @@ yynewstate: LastRangeEnd: &last, } } - case 434: + case 437: { parser.yyVAL.ident = "" } - case 436: + case 439: { parser.yyVAL.item = nil } - case 437: + case 440: { method := yyS[yypt-1].item.(*ast.PartitionMethod) method.Num = yyS[yypt-0].item.(uint64) parser.yyVAL.item = method } - case 438: + case 441: { parser.yyVAL.item = uint64(0) } - case 439: + case 442: { res := yyS[yypt-0].item.(uint64) if res == 0 { @@ -15477,11 +15584,11 @@ yynewstate: } parser.yyVAL.item = res } - case 440: + case 443: { parser.yyVAL.item = uint64(0) } - case 441: + case 444: { res := yyS[yypt-0].item.(uint64) if res == 0 { @@ -15490,23 +15597,23 @@ yynewstate: } parser.yyVAL.item = res } - case 442: + case 445: { parser.yyVAL.item = nil } - case 443: + case 446: { parser.yyVAL.item = yyS[yypt-1].item.([]*ast.PartitionDefinition) } - case 444: + case 447: { parser.yyVAL.item = []*ast.PartitionDefinition{yyS[yypt-0].item.(*ast.PartitionDefinition)} } - case 445: + case 448: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.PartitionDefinition), yyS[yypt-0].item.(*ast.PartitionDefinition)) } - case 446: + case 449: { parser.yyVAL.item = &ast.PartitionDefinition{ Name: model.NewCIStr(yyS[yypt-3].ident), @@ -15515,80 +15622,80 @@ yynewstate: Sub: yyS[yypt-0].item.([]*ast.SubPartitionDefinition), } } - case 447: + case 450: { parser.yyVAL.item = make([]*ast.SubPartitionDefinition, 0) } - case 448: + case 451: { parser.yyVAL.item = yyS[yypt-1].item } - case 449: + case 452: { parser.yyVAL.item = []*ast.SubPartitionDefinition{yyS[yypt-0].item.(*ast.SubPartitionDefinition)} } - case 450: + case 453: { list := yyS[yypt-2].item.([]*ast.SubPartitionDefinition) parser.yyVAL.item = append(list, yyS[yypt-0].item.(*ast.SubPartitionDefinition)) } - case 451: + case 454: { parser.yyVAL.item = &ast.SubPartitionDefinition{ Name: model.NewCIStr(yyS[yypt-1].ident), Options: yyS[yypt-0].item.([]*ast.TableOption), } } - case 452: + case 455: { parser.yyVAL.item = make([]*ast.TableOption, 0) } - case 453: + case 456: { list := yyS[yypt-1].item.([]*ast.TableOption) parser.yyVAL.item = append(list, yyS[yypt-0].item.(*ast.TableOption)) } - case 454: + case 457: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionComment, StrValue: yyS[yypt-0].ident} } - case 455: + case 458: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionEngine, StrValue: yyS[yypt-0].ident} } - case 456: + case 459: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionEngine, StrValue: yyS[yypt-0].ident} } - case 457: + case 460: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionInsertMethod, StrValue: yyS[yypt-0].ident} } - case 458: + case 461: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionDataDirectory, StrValue: yyS[yypt-0].ident} } - case 459: + case 462: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionIndexDirectory, StrValue: yyS[yypt-0].ident} } - case 460: + case 463: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionMaxRows, UintValue: yyS[yypt-0].item.(uint64)} } - case 461: + case 464: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionMinRows, UintValue: yyS[yypt-0].item.(uint64)} } - case 462: + case 465: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionTablespace, StrValue: yyS[yypt-0].ident} } - case 463: + case 466: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionNodegroup, UintValue: yyS[yypt-0].item.(uint64)} } - case 464: + case 467: { placementOptions := yyS[yypt-0].item.(*ast.PlacementOption) parser.yyVAL.item = &ast.TableOption{ @@ -15598,29 +15705,29 @@ yynewstate: UintValue: placementOptions.UintValue, } } - case 465: + case 468: { parser.yyVAL.item = &ast.PartitionDefinitionClauseNone{} } - case 466: + case 469: { parser.yyVAL.item = &ast.PartitionDefinitionClauseLessThan{ Exprs: []ast.ExprNode{&ast.MaxValueExpr{}}, } } - case 467: + case 470: { parser.yyVAL.item = &ast.PartitionDefinitionClauseLessThan{ Exprs: yyS[yypt-1].item.([]ast.ExprNode), } } - case 468: + case 471: { parser.yyVAL.item = &ast.PartitionDefinitionClauseIn{ Values: [][]ast.ExprNode{{&ast.DefaultExpr{}}}, } } - case 469: + case 472: { exprs := yyS[yypt-1].item.([]ast.ExprNode) values := make([][]ast.ExprNode, 0, len(exprs)) @@ -15633,43 +15740,43 @@ yynewstate: } parser.yyVAL.item = &ast.PartitionDefinitionClauseIn{Values: values} } - case 470: + case 473: { parser.yyVAL.item = &ast.PartitionDefinitionClauseHistory{Current: false} } - case 471: + case 474: { parser.yyVAL.item = &ast.PartitionDefinitionClauseHistory{Current: true} } - case 472: + case 475: { parser.yyVAL.item = ast.OnDuplicateKeyHandlingError } - case 473: + case 476: { parser.yyVAL.item = ast.OnDuplicateKeyHandlingIgnore } - case 474: + case 477: { parser.yyVAL.item = ast.OnDuplicateKeyHandlingReplace } - case 477: + case 480: { parser.yyVAL.item = &ast.CreateTableStmt{} } - case 478: + case 481: { parser.yyVAL.item = &ast.CreateTableStmt{Select: yyS[yypt-0].statement.(ast.ResultSetNode)} } - case 479: + case 482: { parser.yyVAL.item = &ast.CreateTableStmt{Select: yyS[yypt-0].statement.(ast.ResultSetNode)} } - case 480: + case 483: { parser.yyVAL.item = &ast.CreateTableStmt{Select: yyS[yypt-0].statement.(ast.ResultSetNode)} } - case 481: + case 484: { var sel ast.ResultSetNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -15682,7 +15789,7 @@ yynewstate: } parser.yyVAL.item = &ast.CreateTableStmt{Select: sel} } - case 485: + case 488: { var sel ast.StmtNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -15695,15 +15802,15 @@ yynewstate: } parser.yyVAL.statement = sel } - case 486: + case 489: { parser.yyVAL.item = yyS[yypt-0].item } - case 487: + case 490: { parser.yyVAL.item = yyS[yypt-1].item } - case 488: + case 491: { startOffset := parser.startOffset(&yyS[yypt-1]) selStmt := yyS[yypt-1].statement.(ast.StmtNode) @@ -15728,85 +15835,85 @@ yynewstate: } parser.yyVAL.statement = x } - case 489: + case 492: { parser.yyVAL.item = false } - case 490: + case 493: { parser.yyVAL.item = true } - case 491: + case 494: { parser.yyVAL.item = model.AlgorithmUndefined } - case 492: + case 495: { parser.yyVAL.item = model.AlgorithmUndefined } - case 493: + case 496: { parser.yyVAL.item = model.AlgorithmMerge } - case 494: + case 497: { parser.yyVAL.item = model.AlgorithmTemptable } - case 495: + case 498: { parser.yyVAL.item = &auth.UserIdentity{CurrentUser: true} } - case 496: + case 499: { parser.yyVAL.item = yyS[yypt-0].item } - case 497: + case 500: { parser.yyVAL.item = model.SecurityDefiner } - case 498: + case 501: { parser.yyVAL.item = model.SecurityDefiner } - case 499: + case 502: { parser.yyVAL.item = model.SecurityInvoker } - case 501: + case 504: { parser.yyVAL.item = nil } - case 502: + case 505: { parser.yyVAL.item = yyS[yypt-1].item.([]model.CIStr) } - case 503: + case 506: { parser.yyVAL.item = []model.CIStr{model.NewCIStr(yyS[yypt-0].ident)} } - case 504: + case 507: { parser.yyVAL.item = append(yyS[yypt-2].item.([]model.CIStr), model.NewCIStr(yyS[yypt-0].ident)) } - case 505: + case 508: { parser.yyVAL.item = nil } - case 506: + case 509: { parser.yyVAL.item = model.CheckOptionCascaded } - case 507: + case 510: { parser.yyVAL.item = model.CheckOptionLocal } - case 508: + case 511: { parser.yyVAL.statement = &ast.DoStmt{ Exprs: yyS[yypt-0].item.([]ast.ExprNode), } } - case 509: + case 512: { // Single Table tn := yyS[yypt-6].item.(*ast.TableName) @@ -15834,7 +15941,7 @@ yynewstate: parser.yyVAL.statement = x } - case 510: + case 513: { // Multiple Table x := &ast.DeleteStmt{ @@ -15854,7 +15961,7 @@ yynewstate: } parser.yyVAL.statement = x } - case 511: + case 514: { // Multiple Table x := &ast.DeleteStmt{ @@ -15873,23 +15980,23 @@ yynewstate: } parser.yyVAL.statement = x } - case 514: + case 517: { d := yyS[yypt-0].statement.(*ast.DeleteStmt) d.With = yyS[yypt-1].item.(*ast.WithClause) parser.yyVAL.statement = d } - case 515: + case 518: { d := yyS[yypt-0].statement.(*ast.DeleteStmt) d.With = yyS[yypt-1].item.(*ast.WithClause) parser.yyVAL.statement = d } - case 517: + case 520: { parser.yyVAL.statement = &ast.DropDatabaseStmt{IfExists: yyS[yypt-1].item.(bool), Name: model.NewCIStr(yyS[yypt-0].ident)} } - case 518: + case 521: { var indexLockAndAlgorithm *ast.IndexLockAndAlgorithm if yyS[yypt-0].item != nil { @@ -15900,43 +16007,43 @@ yynewstate: } parser.yyVAL.statement = &ast.DropIndexStmt{IfExists: yyS[yypt-4].item.(bool), IndexName: yyS[yypt-3].ident, Table: yyS[yypt-1].item.(*ast.TableName), LockAlg: indexLockAndAlgorithm} } - case 519: + case 522: { parser.yyVAL.statement = &ast.DropIndexStmt{IfExists: yyS[yypt-3].item.(bool), IndexName: yyS[yypt-2].ident, Table: yyS[yypt-0].item.(*ast.TableName), IsHypo: true} } - case 520: + case 523: { parser.yyVAL.statement = &ast.DropTableStmt{IfExists: yyS[yypt-2].item.(bool), Tables: yyS[yypt-1].item.([]*ast.TableName), IsView: false, TemporaryKeyword: yyS[yypt-4].item.(ast.TemporaryKeyword)} } - case 521: + case 524: { parser.yyVAL.item = ast.TemporaryNone } - case 522: + case 525: { parser.yyVAL.item = ast.TemporaryLocal } - case 523: + case 526: { parser.yyVAL.item = ast.TemporaryGlobal } - case 524: + case 527: { parser.yyVAL.statement = &ast.DropTableStmt{Tables: yyS[yypt-1].item.([]*ast.TableName), IsView: true} } - case 525: + case 528: { parser.yyVAL.statement = &ast.DropTableStmt{IfExists: true, Tables: yyS[yypt-1].item.([]*ast.TableName), IsView: true} } - case 526: + case 529: { parser.yyVAL.statement = &ast.DropUserStmt{IsDropRole: false, IfExists: false, UserList: yyS[yypt-0].item.([]*auth.UserIdentity)} } - case 527: + case 530: { parser.yyVAL.statement = &ast.DropUserStmt{IsDropRole: false, IfExists: true, UserList: yyS[yypt-0].item.([]*auth.UserIdentity)} } - case 528: + case 531: { tmp := make([]*auth.UserIdentity, 0, 10) roleList := yyS[yypt-0].item.([]*auth.RoleIdentity) @@ -15945,7 +16052,7 @@ yynewstate: } parser.yyVAL.statement = &ast.DropUserStmt{IsDropRole: true, IfExists: false, UserList: tmp} } - case 529: + case 532: { tmp := make([]*auth.UserIdentity, 0, 10) roleList := yyS[yypt-0].item.([]*auth.RoleIdentity) @@ -15954,11 +16061,11 @@ yynewstate: } parser.yyVAL.statement = &ast.DropUserStmt{IsDropRole: true, IfExists: true, UserList: tmp} } - case 530: + case 533: { parser.yyVAL.statement = &ast.DropStatsStmt{Tables: yyS[yypt-0].item.([]*ast.TableName)} } - case 531: + case 534: { yylex.AppendError(ErrWarnDeprecatedSyntaxNoReplacement.FastGenByArgs("'DROP STATS ... PARTITION ...'", "")) parser.lastErrorAsWarn() @@ -15967,7 +16074,7 @@ yynewstate: PartitionNames: yyS[yypt-0].item.([]model.CIStr), } } - case 532: + case 535: { yylex.AppendError(ErrWarnDeprecatedSyntax.FastGenByArgs("DROP STATS ... GLOBAL", "DROP STATS ...")) parser.lastErrorAsWarn() @@ -15976,11 +16083,11 @@ yynewstate: IsGlobalStats: true, } } - case 540: + case 543: { parser.yyVAL.statement = nil } - case 541: + case 544: { parser.yyVAL.statement = &ast.TraceStmt{ Stmt: yyS[yypt-0].statement, @@ -15990,7 +16097,7 @@ yynewstate: startOffset := parser.startOffset(&yyS[yypt]) yyS[yypt-0].statement.SetText(parser.lexer.client, string(parser.src[startOffset:])) } - case 542: + case 545: { parser.yyVAL.statement = &ast.TraceStmt{ Stmt: yyS[yypt-0].statement, @@ -16000,7 +16107,7 @@ yynewstate: startOffset := parser.startOffset(&yyS[yypt]) yyS[yypt-0].statement.SetText(parser.lexer.client, string(parser.src[startOffset:])) } - case 543: + case 546: { parser.yyVAL.statement = &ast.TraceStmt{ Stmt: yyS[yypt-0].statement, @@ -16009,7 +16116,7 @@ yynewstate: startOffset := parser.startOffset(&yyS[yypt]) yyS[yypt-0].statement.SetText(parser.lexer.client, string(parser.src[startOffset:])) } - case 544: + case 547: { parser.yyVAL.statement = &ast.TraceStmt{ Stmt: yyS[yypt-0].statement, @@ -16019,7 +16126,7 @@ yynewstate: startOffset := parser.startOffset(&yyS[yypt]) yyS[yypt-0].statement.SetText(parser.lexer.client, string(parser.src[startOffset:])) } - case 548: + case 551: { parser.yyVAL.statement = &ast.ExplainStmt{ Stmt: &ast.ShowStmt{ @@ -16028,7 +16135,7 @@ yynewstate: }, } } - case 549: + case 552: { parser.yyVAL.statement = &ast.ExplainStmt{ Stmt: &ast.ShowStmt{ @@ -16038,49 +16145,49 @@ yynewstate: }, } } - case 550: + case 553: { parser.yyVAL.statement = &ast.ExplainStmt{ Stmt: yyS[yypt-0].statement, Format: "row", } } - case 551: + case 554: { parser.yyVAL.statement = &ast.ExplainForStmt{ Format: "row", ConnectionID: getUint64FromNUM(yyS[yypt-0].item), } } - case 552: + case 555: { parser.yyVAL.statement = &ast.ExplainForStmt{ Format: yyS[yypt-3].ident, ConnectionID: getUint64FromNUM(yyS[yypt-0].item), } } - case 553: + case 556: { parser.yyVAL.statement = &ast.ExplainStmt{ Stmt: yyS[yypt-0].statement, Format: yyS[yypt-1].ident, } } - case 554: + case 557: { parser.yyVAL.statement = &ast.ExplainForStmt{ Format: yyS[yypt-3].ident, ConnectionID: getUint64FromNUM(yyS[yypt-0].item), } } - case 555: + case 558: { parser.yyVAL.statement = &ast.ExplainStmt{ Stmt: yyS[yypt-0].statement, Format: yyS[yypt-1].ident, } } - case 556: + case 559: { parser.yyVAL.statement = &ast.ExplainStmt{ Stmt: yyS[yypt-0].statement, @@ -16088,7 +16195,7 @@ yynewstate: Analyze: true, } } - case 557: + case 560: { parser.yyVAL.statement = &ast.ExplainStmt{ Stmt: yyS[yypt-0].statement, @@ -16096,7 +16203,7 @@ yynewstate: Analyze: true, } } - case 558: + case 561: { parser.yyVAL.statement = &ast.ExplainStmt{ Stmt: yyS[yypt-0].statement, @@ -16104,15 +16211,15 @@ yynewstate: Analyze: true, } } - case 567: + case 570: { parser.yyVAL.statement = &ast.SavepointStmt{Name: yyS[yypt-0].ident} } - case 568: + case 571: { parser.yyVAL.statement = &ast.ReleaseSavepointStmt{Name: yyS[yypt-0].ident} } - case 569: + case 572: { stmt := yyS[yypt-3].item.(*ast.BRIEStmt) stmt.Kind = ast.BRIEKindBackup @@ -16120,7 +16227,7 @@ yynewstate: stmt.Options = yyS[yypt-0].item.([]*ast.BRIEOption) parser.yyVAL.statement = stmt } - case 570: + case 573: { stmt := &ast.BRIEStmt{} stmt.Kind = ast.BRIEKindStreamStart @@ -16128,26 +16235,26 @@ yynewstate: stmt.Options = yyS[yypt-0].item.([]*ast.BRIEOption) parser.yyVAL.statement = stmt } - case 571: + case 574: { stmt := &ast.BRIEStmt{} stmt.Kind = ast.BRIEKindStreamStop parser.yyVAL.statement = stmt } - case 572: + case 575: { stmt := &ast.BRIEStmt{} stmt.Kind = ast.BRIEKindStreamPause stmt.Options = yyS[yypt-0].item.([]*ast.BRIEOption) parser.yyVAL.statement = stmt } - case 573: + case 576: { stmt := &ast.BRIEStmt{} stmt.Kind = ast.BRIEKindStreamResume parser.yyVAL.statement = stmt } - case 574: + case 577: { stmt := &ast.BRIEStmt{} stmt.Kind = ast.BRIEKindStreamPurge @@ -16155,48 +16262,48 @@ yynewstate: stmt.Options = yyS[yypt-0].item.([]*ast.BRIEOption) parser.yyVAL.statement = stmt } - case 575: + case 578: { stmt := &ast.BRIEStmt{} stmt.Kind = ast.BRIEKindStreamStatus parser.yyVAL.statement = stmt } - case 576: + case 579: { stmt := &ast.BRIEStmt{} stmt.Kind = ast.BRIEKindStreamMetaData stmt.Storage = yyS[yypt-0].ident parser.yyVAL.statement = stmt } - case 577: + case 580: { stmt := &ast.BRIEStmt{} stmt.Kind = ast.BRIEKindShowJob stmt.JobID = yyS[yypt-0].item.(int64) parser.yyVAL.statement = stmt } - case 578: + case 581: { stmt := &ast.BRIEStmt{} stmt.Kind = ast.BRIEKindShowQuery stmt.JobID = yyS[yypt-0].item.(int64) parser.yyVAL.statement = stmt } - case 579: + case 582: { stmt := &ast.BRIEStmt{} stmt.Kind = ast.BRIEKindCancelJob stmt.JobID = yyS[yypt-0].item.(int64) parser.yyVAL.statement = stmt } - case 580: + case 583: { stmt := &ast.BRIEStmt{} stmt.Kind = ast.BRIEKindShowBackupMeta stmt.Storage = yyS[yypt-0].ident parser.yyVAL.statement = stmt } - case 581: + case 584: { stmt := yyS[yypt-3].item.(*ast.BRIEStmt) stmt.Kind = ast.BRIEKindRestore @@ -16204,7 +16311,7 @@ yynewstate: stmt.Options = yyS[yypt-0].item.([]*ast.BRIEOption) parser.yyVAL.statement = stmt } - case 582: + case 585: { stmt := &ast.BRIEStmt{} stmt.Kind = ast.BRIEKindRestorePIT @@ -16212,110 +16319,110 @@ yynewstate: stmt.Options = yyS[yypt-0].item.([]*ast.BRIEOption) parser.yyVAL.statement = stmt } - case 583: + case 586: { parser.yyVAL.item = &ast.BRIEStmt{} } - case 584: + case 587: { parser.yyVAL.item = &ast.BRIEStmt{Schemas: yyS[yypt-0].item.([]string)} } - case 585: + case 588: { parser.yyVAL.item = &ast.BRIEStmt{Tables: yyS[yypt-0].item.([]*ast.TableName)} } - case 586: + case 589: { parser.yyVAL.item = []string{yyS[yypt-0].ident} } - case 587: + case 590: { parser.yyVAL.item = append(yyS[yypt-2].item.([]string), yyS[yypt-0].ident) } - case 588: + case 591: { parser.yyVAL.item = []*ast.BRIEOption{} } - case 589: + case 592: { parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.BRIEOption), yyS[yypt-0].item.(*ast.BRIEOption)) } - case 590: + case 593: { parser.yyVAL.item = ast.BRIEOptionConcurrency } - case 591: + case 594: { parser.yyVAL.item = ast.BRIEOptionResume } - case 592: + case 595: { parser.yyVAL.item = ast.BRIEOptionSendCreds } - case 593: + case 596: { parser.yyVAL.item = ast.BRIEOptionOnline } - case 594: + case 597: { parser.yyVAL.item = ast.BRIEOptionCheckpoint } - case 595: + case 598: { parser.yyVAL.item = ast.BRIEOptionSkipSchemaFiles } - case 596: + case 599: { parser.yyVAL.item = ast.BRIEOptionStrictFormat } - case 597: + case 600: { parser.yyVAL.item = ast.BRIEOptionCSVNotNull } - case 598: + case 601: { parser.yyVAL.item = ast.BRIEOptionCSVBackslashEscape } - case 599: + case 602: { parser.yyVAL.item = ast.BRIEOptionCSVTrimLastSeparators } - case 600: + case 603: { parser.yyVAL.item = ast.BRIEOptionTiKVImporter } - case 601: + case 604: { parser.yyVAL.item = ast.BRIEOptionCSVSeparator } - case 602: + case 605: { parser.yyVAL.item = ast.BRIEOptionCSVDelimiter } - case 603: + case 606: { parser.yyVAL.item = ast.BRIEOptionCSVNull } - case 604: + case 607: { parser.yyVAL.item = ast.BRIEOptionBackend } - case 605: + case 608: { parser.yyVAL.item = ast.BRIEOptionOnDuplicate } - case 606: + case 609: { parser.yyVAL.item = ast.BRIEOptionOnDuplicate } - case 607: + case 610: { parser.yyVAL.item = &ast.BRIEOption{ Tp: yyS[yypt-2].item.(ast.BRIEOptionType), UintValue: yyS[yypt-0].item.(uint64), } } - case 608: + case 611: { value := uint64(0) if yyS[yypt-0].item.(bool) { @@ -16326,21 +16433,21 @@ yynewstate: UintValue: value, } } - case 609: + case 612: { parser.yyVAL.item = &ast.BRIEOption{ Tp: yyS[yypt-2].item.(ast.BRIEOptionType), StrValue: yyS[yypt-0].ident, } } - case 610: + case 613: { parser.yyVAL.item = &ast.BRIEOption{ Tp: yyS[yypt-2].item.(ast.BRIEOptionType), StrValue: strings.ToLower(yyS[yypt-0].ident), } } - case 611: + case 614: { unit, err := yyS[yypt-1].item.(ast.TimeUnitType).Duration() if err != nil { @@ -16353,35 +16460,35 @@ yynewstate: UintValue: yyS[yypt-2].item.(uint64) * uint64(unit), } } - case 612: + case 615: { parser.yyVAL.item = &ast.BRIEOption{ Tp: ast.BRIEOptionBackupTS, StrValue: yyS[yypt-0].ident, } } - case 613: + case 616: { parser.yyVAL.item = &ast.BRIEOption{ Tp: ast.BRIEOptionBackupTSO, UintValue: yyS[yypt-0].item.(uint64), } } - case 614: + case 617: { parser.yyVAL.item = &ast.BRIEOption{ Tp: ast.BRIEOptionLastBackupTS, StrValue: yyS[yypt-0].ident, } } - case 615: + case 618: { parser.yyVAL.item = &ast.BRIEOption{ Tp: ast.BRIEOptionLastBackupTSO, UintValue: yyS[yypt-0].item.(uint64), } } - case 616: + case 619: { // TODO: check overflow? parser.yyVAL.item = &ast.BRIEOption{ @@ -16389,21 +16496,21 @@ yynewstate: UintValue: yyS[yypt-3].item.(uint64) * 1048576, } } - case 617: + case 620: { parser.yyVAL.item = &ast.BRIEOption{ Tp: ast.BRIEOptionCSVHeader, UintValue: ast.BRIECSVHeaderIsColumns, } } - case 618: + case 621: { parser.yyVAL.item = &ast.BRIEOption{ Tp: ast.BRIEOptionCSVHeader, UintValue: yyS[yypt-0].item.(uint64), } } - case 619: + case 622: { value := uint64(0) if yyS[yypt-0].item.(bool) { @@ -16414,14 +16521,14 @@ yynewstate: UintValue: value, } } - case 620: + case 623: { parser.yyVAL.item = &ast.BRIEOption{ Tp: ast.BRIEOptionChecksum, UintValue: uint64(yyS[yypt-0].item.(ast.BRIEOptionLevel)), } } - case 621: + case 624: { value := uint64(0) if yyS[yypt-0].item.(bool) { @@ -16432,53 +16539,53 @@ yynewstate: UintValue: value, } } - case 622: + case 625: { parser.yyVAL.item = &ast.BRIEOption{ Tp: ast.BRIEOptionAnalyze, UintValue: uint64(yyS[yypt-0].item.(ast.BRIEOptionLevel)), } } - case 623: + case 626: { parser.yyVAL.item = &ast.BRIEOption{ Tp: ast.BRIEOptionFullBackupStorage, StrValue: yyS[yypt-0].ident, } } - case 624: + case 627: { parser.yyVAL.item = &ast.BRIEOption{ Tp: ast.BRIEOptionRestoredTS, StrValue: yyS[yypt-0].ident, } } - case 625: + case 628: { parser.yyVAL.item = &ast.BRIEOption{ Tp: ast.BRIEOptionStartTS, StrValue: yyS[yypt-0].ident, } } - case 626: + case 629: { parser.yyVAL.item = &ast.BRIEOption{ Tp: ast.BRIEOptionUntilTS, StrValue: yyS[yypt-0].ident, } } - case 627: + case 630: { parser.yyVAL.item = &ast.BRIEOption{ Tp: ast.BRIEOptionGCTTL, StrValue: yyS[yypt-0].ident, } } - case 628: + case 631: { parser.yyVAL.item = getUint64FromNUM(yyS[yypt-0].item) } - case 629: + case 632: { v, rangeErrMsg := getInt64FromNUM(yyS[yypt-0].item) if len(rangeErrMsg) != 0 { @@ -16487,59 +16594,59 @@ yynewstate: } parser.yyVAL.item = v } - case 631: + case 634: { parser.yyVAL.item = yyS[yypt-0].item.(int64) != 0 } - case 632: + case 635: { parser.yyVAL.item = false } - case 633: + case 636: { parser.yyVAL.item = true } - case 634: + case 637: { parser.yyVAL.item = ast.BRIEOptionLevelOff } - case 635: + case 638: { parser.yyVAL.item = ast.BRIEOptionLevelOptional } - case 636: + case 639: { parser.yyVAL.item = ast.BRIEOptionLevelRequired } - case 637: + case 640: { parser.yyVAL.statement = &ast.LoadDataActionStmt{ Tp: ast.LoadDataPause, JobID: yyS[yypt-0].item.(int64), } } - case 638: + case 641: { parser.yyVAL.statement = &ast.LoadDataActionStmt{ Tp: ast.LoadDataResume, JobID: yyS[yypt-0].item.(int64), } } - case 639: + case 642: { parser.yyVAL.statement = &ast.ImportIntoActionStmt{ Tp: ast.ImportIntoCancel, JobID: yyS[yypt-0].item.(int64), } } - case 640: + case 643: { parser.yyVAL.statement = &ast.LoadDataActionStmt{ Tp: ast.LoadDataDrop, JobID: yyS[yypt-0].item.(int64), } } - case 641: + case 644: { v := yyS[yypt-2].ident v = strings.TrimPrefix(v, "@") @@ -16550,19 +16657,19 @@ yynewstate: Value: yyS[yypt-0].expr, } } - case 642: + case 645: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.LogicOr, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 643: + case 646: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.LogicXor, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 644: + case 647: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.LogicAnd, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 645: + case 648: { expr, ok := yyS[yypt-0].expr.(*ast.ExistsSubqueryExpr) if ok { @@ -16572,7 +16679,7 @@ yynewstate: parser.yyVAL.expr = &ast.UnaryOperationExpr{Op: opcode.Not, V: yyS[yypt-0].expr} } } - case 646: + case 649: { parser.yyVAL.expr = &ast.MatchAgainst{ ColumnNames: yyS[yypt-6].item.([]*ast.ColumnName), @@ -16580,99 +16687,99 @@ yynewstate: Modifier: ast.FulltextSearchModifier(yyS[yypt-1].item.(int)), } } - case 647: + case 650: { parser.yyVAL.expr = &ast.IsTruthExpr{Expr: yyS[yypt-2].expr, Not: !yyS[yypt-1].item.(bool), True: int64(1)} } - case 648: + case 651: { parser.yyVAL.expr = &ast.IsTruthExpr{Expr: yyS[yypt-2].expr, Not: !yyS[yypt-1].item.(bool), True: int64(0)} } - case 649: + case 652: { /* https://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#operator_is */ parser.yyVAL.expr = &ast.IsNullExpr{Expr: yyS[yypt-2].expr, Not: !yyS[yypt-1].item.(bool)} } - case 651: + case 654: { parser.yyVAL.expr = &ast.DefaultExpr{} } - case 653: + case 656: { parser.yyVAL.expr = &ast.MaxValueExpr{} } - case 655: + case 658: { parser.yyVAL.item = ast.FulltextSearchModifierNaturalLanguageMode } - case 656: + case 659: { parser.yyVAL.item = ast.FulltextSearchModifierNaturalLanguageMode } - case 657: + case 660: { parser.yyVAL.item = ast.FulltextSearchModifierNaturalLanguageMode | ast.FulltextSearchModifierWithQueryExpansion } - case 658: + case 661: { parser.yyVAL.item = ast.FulltextSearchModifierBooleanMode } - case 659: + case 662: { parser.yyVAL.item = ast.FulltextSearchModifierWithQueryExpansion } - case 664: + case 667: { parser.yyVAL.item = []ast.ExprNode{yyS[yypt-0].expr} } - case 665: + case 668: { parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.ExprNode), yyS[yypt-0].expr) } - case 666: + case 669: { parser.yyVAL.item = []ast.ExprNode{yyS[yypt-0].expr} } - case 667: + case 670: { parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.ExprNode), yyS[yypt-0].expr) } - case 668: + case 671: { parser.yyVAL.item = []ast.ExprNode{yyS[yypt-0].expr} } - case 669: + case 672: { parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.ExprNode), yyS[yypt-0].expr) } - case 670: + case 673: { parser.yyVAL.item = []ast.ExprNode{} } - case 672: + case 675: { parser.yyVAL.item = []ast.ExprNode{} } - case 674: + case 677: { expr := ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation) parser.yyVAL.item = []ast.ExprNode{expr} } - case 675: + case 678: { parser.yyVAL.expr = &ast.IsNullExpr{Expr: yyS[yypt-2].expr, Not: !yyS[yypt-1].item.(bool)} } - case 676: + case 679: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: yyS[yypt-1].item.(opcode.Op), L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 677: + case 680: { sq := yyS[yypt-0].expr.(*ast.SubqueryExpr) sq.MultiRows = true parser.yyVAL.expr = &ast.CompareSubqueryExpr{Op: yyS[yypt-2].item.(opcode.Op), L: yyS[yypt-3].expr, R: sq, All: yyS[yypt-1].item.(bool)} } - case 678: + case 681: { v := yyS[yypt-2].ident v = strings.TrimPrefix(v, "@") @@ -16684,109 +16791,109 @@ yynewstate: } parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: yyS[yypt-3].item.(opcode.Op), L: yyS[yypt-4].expr, R: variable} } - case 680: + case 683: { parser.yyVAL.item = opcode.GE } - case 681: + case 684: { parser.yyVAL.item = opcode.GT } - case 682: + case 685: { parser.yyVAL.item = opcode.LE } - case 683: + case 686: { parser.yyVAL.item = opcode.LT } - case 684: + case 687: { parser.yyVAL.item = opcode.NE } - case 685: + case 688: { parser.yyVAL.item = opcode.NE } - case 686: + case 689: { parser.yyVAL.item = opcode.EQ } - case 687: + case 690: { parser.yyVAL.item = opcode.NullEQ } - case 688: + case 691: { parser.yyVAL.item = true } - case 689: + case 692: { parser.yyVAL.item = false } - case 690: + case 693: { parser.yyVAL.item = true } - case 691: + case 694: { parser.yyVAL.item = false } - case 692: + case 695: { parser.yyVAL.item = true } - case 693: + case 696: { parser.yyVAL.item = false } - case 694: + case 697: { parser.yyVAL.item = true } - case 695: + case 698: { parser.yyVAL.item = false } - case 696: + case 699: { parser.yyVAL.item = true } - case 697: + case 700: { parser.yyVAL.item = false } - case 698: + case 701: { parser.yyVAL.item = true } - case 699: + case 702: { parser.yyVAL.item = false } - case 700: + case 703: { parser.yyVAL.item = false } - case 701: + case 704: { parser.yyVAL.item = false } - case 702: + case 705: { parser.yyVAL.item = true } - case 703: + case 706: { parser.yyVAL.expr = &ast.PatternInExpr{Expr: yyS[yypt-4].expr, Not: !yyS[yypt-3].item.(bool), List: yyS[yypt-1].item.([]ast.ExprNode)} } - case 704: + case 707: { sq := yyS[yypt-0].expr.(*ast.SubqueryExpr) sq.MultiRows = true parser.yyVAL.expr = &ast.PatternInExpr{Expr: yyS[yypt-2].expr, Not: !yyS[yypt-1].item.(bool), Sel: sq} } - case 705: + case 708: { parser.yyVAL.expr = &ast.BetweenExpr{ Expr: yyS[yypt-4].expr, @@ -16795,7 +16902,7 @@ yynewstate: Not: !yyS[yypt-3].item.(bool), } } - case 706: + case 709: { escape := yyS[yypt-0].ident if len(escape) > 1 { @@ -16812,7 +16919,7 @@ yynewstate: IsLike: true, } } - case 707: + case 710: { escape := yyS[yypt-0].ident if len(escape) > 1 { @@ -16829,55 +16936,55 @@ yynewstate: IsLike: false, } } - case 708: + case 711: { parser.yyVAL.expr = &ast.PatternRegexpExpr{Expr: yyS[yypt-2].expr, Pattern: yyS[yypt-0].expr, Not: !yyS[yypt-1].item.(bool)} } - case 709: + case 712: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(ast.JSONMemberOf), Args: []ast.ExprNode{yyS[yypt-4].expr, yyS[yypt-1].expr}} } - case 713: + case 716: { parser.yyVAL.ident = "\\" } - case 714: + case 717: { parser.yyVAL.ident = yyS[yypt-0].ident } - case 715: + case 718: { parser.yyVAL.item = &ast.SelectField{WildCard: &ast.WildCardField{}} } - case 716: + case 719: { wildCard := &ast.WildCardField{Table: model.NewCIStr(yyS[yypt-2].ident)} parser.yyVAL.item = &ast.SelectField{WildCard: wildCard} } - case 717: + case 720: { wildCard := &ast.WildCardField{Schema: model.NewCIStr(yyS[yypt-4].ident), Table: model.NewCIStr(yyS[yypt-2].ident)} parser.yyVAL.item = &ast.SelectField{WildCard: wildCard} } - case 718: + case 721: { expr := yyS[yypt-1].expr asName := yyS[yypt-0].ident parser.yyVAL.item = &ast.SelectField{Expr: expr, AsName: model.NewCIStr(asName)} } - case 719: + case 722: { parser.yyVAL.ident = "" } - case 722: + case 725: { parser.yyVAL.ident = yyS[yypt-0].ident } - case 724: + case 727: { parser.yyVAL.ident = yyS[yypt-0].ident } - case 725: + case 728: { field := yyS[yypt-0].item.(*ast.SelectField) field.Offset = parser.startOffset(&yyS[yypt]) @@ -16887,7 +16994,7 @@ yynewstate: } parser.yyVAL.item = []*ast.SelectField{field} } - case 726: + case 729: { fl := yyS[yypt-2].item.([]*ast.SelectField) field := yyS[yypt-0].item.(*ast.SelectField) @@ -16898,79 +17005,79 @@ yynewstate: } parser.yyVAL.item = append(fl, field) } - case 727: + case 730: { parser.yyVAL.item = false } - case 728: + case 731: { parser.yyVAL.item = true } - case 729: + case 732: { parser.yyVAL.item = &ast.GroupByClause{Items: yyS[yypt-1].item.([]*ast.ByItem), Rollup: yyS[yypt-0].item.(bool)} } - case 730: + case 733: { parser.yyVAL.item = nil } - case 731: + case 734: { parser.yyVAL.item = &ast.HavingClause{Expr: yyS[yypt-0].expr} } - case 732: + case 735: { parser.yyVAL.item = nil } - case 734: + case 737: { parser.yyVAL.item = &ast.AsOfClause{ TsExpr: yyS[yypt-0].expr.(ast.ExprNode), } } - case 735: + case 738: { parser.yyVAL.item = false } - case 736: + case 739: { parser.yyVAL.item = true } - case 737: + case 740: { parser.yyVAL.item = false } - case 738: + case 741: { parser.yyVAL.item = true } - case 739: + case 742: { parser.yyVAL.item = false } - case 740: + case 743: { parser.yyVAL.item = true } - case 741: + case 744: { parser.yyVAL.item = &ast.NullString{ String: "", Empty: false, } } - case 742: + case 745: { parser.yyVAL.item = &ast.NullString{ String: yyS[yypt-0].ident, Empty: len(yyS[yypt-0].ident) == 0, } } - case 743: + case 746: { parser.yyVAL.item = nil } - case 744: + case 747: { // Merge the options if yyS[yypt-1].item == nil { @@ -16994,19 +17101,19 @@ yynewstate: parser.yyVAL.item = opt1 } } - case 745: + case 748: { parser.yyVAL.item = &ast.IndexOption{ KeyBlockSize: yyS[yypt-0].item.(uint64), } } - case 746: + case 749: { parser.yyVAL.item = &ast.IndexOption{ Tp: yyS[yypt-0].item.(model.IndexType), } } - case 747: + case 750: { parser.yyVAL.item = &ast.IndexOption{ ParserName: model.NewCIStr(yyS[yypt-0].ident), @@ -17014,79 +17121,79 @@ yynewstate: yylex.AppendError(yylex.Errorf("The WITH PARASER clause is parsed but ignored by all storage engines.")) parser.lastErrorAsWarn() } - case 748: + case 751: { parser.yyVAL.item = &ast.IndexOption{ Comment: yyS[yypt-0].ident, } } - case 749: + case 752: { parser.yyVAL.item = &ast.IndexOption{ Visibility: yyS[yypt-0].item.(ast.IndexVisibility), } } - case 750: + case 753: { parser.yyVAL.item = &ast.IndexOption{ PrimaryKeyTp: yyS[yypt-0].item.(model.PrimaryKeyType), } } - case 751: + case 754: { parser.yyVAL.item = []interface{}{yyS[yypt-0].item, nil} } - case 752: + case 755: { parser.yyVAL.item = []interface{}{yyS[yypt-2].item, yyS[yypt-0].item} } - case 753: + case 756: { parser.yyVAL.item = []interface{}{&ast.NullString{String: yyS[yypt-2].ident, Empty: len(yyS[yypt-2].ident) == 0}, yyS[yypt-0].item} } - case 754: + case 757: { parser.yyVAL.item = nil } - case 756: + case 759: { parser.yyVAL.item = yyS[yypt-0].item } - case 757: + case 760: { parser.yyVAL.item = yyS[yypt-0].item } - case 758: + case 761: { parser.yyVAL.item = model.IndexTypeBtree } - case 759: + case 762: { parser.yyVAL.item = model.IndexTypeHash } - case 760: + case 763: { parser.yyVAL.item = model.IndexTypeRtree } - case 761: + case 764: { parser.yyVAL.item = model.IndexTypeHypo } - case 762: + case 765: { parser.yyVAL.item = ast.IndexVisibilityVisible } - case 763: + case 766: { parser.yyVAL.item = ast.IndexVisibilityInvisible } - case 1293: + case 1301: { parser.yyVAL.statement = &ast.CallStmt{ Procedure: yyS[yypt-0].expr.(*ast.FuncCallExpr), } } - case 1294: + case 1302: { parser.yyVAL.expr = &ast.FuncCallExpr{ Tp: ast.FuncCallExprTypeGeneric, @@ -17094,7 +17201,7 @@ yynewstate: Args: []ast.ExprNode{}, } } - case 1295: + case 1303: { parser.yyVAL.expr = &ast.FuncCallExpr{ Tp: ast.FuncCallExprTypeGeneric, @@ -17103,7 +17210,7 @@ yynewstate: Args: []ast.ExprNode{}, } } - case 1296: + case 1304: { parser.yyVAL.expr = &ast.FuncCallExpr{ Tp: ast.FuncCallExprTypeGeneric, @@ -17111,7 +17218,7 @@ yynewstate: Args: yyS[yypt-1].item.([]ast.ExprNode), } } - case 1297: + case 1305: { parser.yyVAL.expr = &ast.FuncCallExpr{ Tp: ast.FuncCallExprTypeGeneric, @@ -17120,7 +17227,7 @@ yynewstate: Args: yyS[yypt-1].item.([]ast.ExprNode), } } - case 1298: + case 1306: { x := yyS[yypt-1].item.(*ast.InsertStmt) x.Priority = yyS[yypt-6].item.(mysql.PriorityEnum) @@ -17137,26 +17244,26 @@ yynewstate: x.PartitionNames = yyS[yypt-2].item.([]model.CIStr) parser.yyVAL.statement = x } - case 1301: + case 1309: { parser.yyVAL.item = &ast.InsertStmt{ Columns: yyS[yypt-3].item.([]*ast.ColumnName), Lists: yyS[yypt-0].item.([][]ast.ExprNode), } } - case 1302: + case 1310: { parser.yyVAL.item = &ast.InsertStmt{Columns: yyS[yypt-2].item.([]*ast.ColumnName), Select: yyS[yypt-0].statement.(ast.ResultSetNode)} } - case 1303: + case 1311: { parser.yyVAL.item = &ast.InsertStmt{Columns: yyS[yypt-2].item.([]*ast.ColumnName), Select: yyS[yypt-0].statement.(ast.ResultSetNode)} } - case 1304: + case 1312: { parser.yyVAL.item = &ast.InsertStmt{Columns: yyS[yypt-2].item.([]*ast.ColumnName), Select: yyS[yypt-0].statement.(ast.ResultSetNode)} } - case 1305: + case 1313: { var sel ast.ResultSetNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -17169,23 +17276,23 @@ yynewstate: } parser.yyVAL.item = &ast.InsertStmt{Columns: yyS[yypt-2].item.([]*ast.ColumnName), Select: sel} } - case 1306: + case 1314: { parser.yyVAL.item = &ast.InsertStmt{Lists: yyS[yypt-0].item.([][]ast.ExprNode)} } - case 1307: + case 1315: { parser.yyVAL.item = &ast.InsertStmt{Select: yyS[yypt-0].statement.(ast.ResultSetNode)} } - case 1308: + case 1316: { parser.yyVAL.item = &ast.InsertStmt{Select: yyS[yypt-0].statement.(ast.ResultSetNode)} } - case 1309: + case 1317: { parser.yyVAL.item = &ast.InsertStmt{Select: yyS[yypt-0].statement.(ast.ResultSetNode)} } - case 1310: + case 1318: { var sel ast.ResultSetNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -17198,39 +17305,39 @@ yynewstate: } parser.yyVAL.item = &ast.InsertStmt{Select: sel} } - case 1311: + case 1319: { parser.yyVAL.item = yyS[yypt-0].item.(*ast.InsertStmt) } - case 1314: + case 1322: { parser.yyVAL.item = [][]ast.ExprNode{yyS[yypt-0].item.([]ast.ExprNode)} } - case 1315: + case 1323: { parser.yyVAL.item = append(yyS[yypt-2].item.([][]ast.ExprNode), yyS[yypt-0].item.([]ast.ExprNode)) } - case 1316: + case 1324: { parser.yyVAL.item = yyS[yypt-1].item } - case 1317: + case 1325: { parser.yyVAL.item = []ast.ExprNode{} } - case 1319: + case 1327: { parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.ExprNode), yyS[yypt-0].expr) } - case 1320: + case 1328: { parser.yyVAL.item = []ast.ExprNode{yyS[yypt-0].expr} } - case 1322: + case 1330: { parser.yyVAL.expr = &ast.DefaultExpr{} } - case 1323: + case 1331: { parser.yyVAL.item = &ast.InsertStmt{ Columns: []*ast.ColumnName{yyS[yypt-2].item.(*ast.ColumnName)}, @@ -17238,22 +17345,22 @@ yynewstate: Setlist: true, } } - case 1324: + case 1332: { 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 1325: + case 1333: { parser.yyVAL.item = nil } - case 1326: + case 1334: { parser.yyVAL.item = yyS[yypt-0].item } - case 1327: + case 1335: { x := yyS[yypt-0].item.(*ast.InsertStmt) x.IsReplace = true @@ -17263,31 +17370,31 @@ yynewstate: x.PartitionNames = yyS[yypt-1].item.([]model.CIStr) parser.yyVAL.statement = x } - case 1328: + case 1336: { parser.yyVAL.expr = ast.NewValueExpr(false, parser.charset, parser.collation) } - case 1329: + case 1337: { parser.yyVAL.expr = ast.NewValueExpr(nil, parser.charset, parser.collation) } - case 1330: + case 1338: { parser.yyVAL.expr = ast.NewValueExpr(true, parser.charset, parser.collation) } - case 1331: + case 1339: { parser.yyVAL.expr = ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation) } - case 1332: + case 1340: { parser.yyVAL.expr = ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation) } - case 1333: + case 1341: { parser.yyVAL.expr = ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation) } - case 1335: + case 1343: { // See https://dev.mysql.com/doc/refman/5.7/en/charset-literal.html co, err := charset.GetDefaultCollationLegacy(yyS[yypt-1].ident) @@ -17305,15 +17412,15 @@ yynewstate: } parser.yyVAL.expr = expr } - case 1336: + case 1344: { parser.yyVAL.expr = ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation) } - case 1337: + case 1345: { parser.yyVAL.expr = ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation) } - case 1338: + case 1346: { co, err := charset.GetDefaultCollationLegacy(yyS[yypt-1].ident) if err != nil { @@ -17330,7 +17437,7 @@ yynewstate: } parser.yyVAL.expr = expr } - case 1339: + case 1347: { co, err := charset.GetDefaultCollationLegacy(yyS[yypt-1].ident) if err != nil { @@ -17347,12 +17454,12 @@ yynewstate: } parser.yyVAL.expr = expr } - case 1340: + case 1348: { expr := ast.NewValueExpr(yyS[yypt-0].ident, parser.charset, parser.collation) parser.yyVAL.expr = expr } - case 1341: + case 1349: { valExpr := yyS[yypt-1].expr.(ast.ValueExpr) strLit := valExpr.GetString() @@ -17365,31 +17472,31 @@ yynewstate: } parser.yyVAL.expr = expr } - case 1342: + case 1350: { parser.yyVAL.item = []*ast.AlterOrderItem{yyS[yypt-0].item.(*ast.AlterOrderItem)} } - case 1343: + case 1351: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.AlterOrderItem), yyS[yypt-0].item.(*ast.AlterOrderItem)) } - case 1344: + case 1352: { parser.yyVAL.item = &ast.AlterOrderItem{Column: yyS[yypt-1].item.(*ast.ColumnName), Desc: yyS[yypt-0].item.(bool)} } - case 1345: + case 1353: { parser.yyVAL.item = &ast.OrderByClause{Items: yyS[yypt-0].item.([]*ast.ByItem)} } - case 1346: + case 1354: { parser.yyVAL.item = []*ast.ByItem{yyS[yypt-0].item.(*ast.ByItem)} } - case 1347: + case 1355: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.ByItem), yyS[yypt-0].item.(*ast.ByItem)) } - case 1348: + case 1356: { expr := yyS[yypt-0].expr valueExpr, ok := expr.(ast.ValueExpr) @@ -17401,7 +17508,7 @@ yynewstate: } parser.yyVAL.item = &ast.ByItem{Expr: expr, NullOrder: true} } - case 1349: + case 1357: { expr := yyS[yypt-1].expr valueExpr, ok := expr.(ast.ValueExpr) @@ -17413,55 +17520,55 @@ yynewstate: } parser.yyVAL.item = &ast.ByItem{Expr: expr, Desc: yyS[yypt-0].item.(bool)} } - case 1350: + case 1358: { parser.yyVAL.item = false } - case 1351: + case 1359: { parser.yyVAL.item = true } - case 1352: + case 1360: { parser.yyVAL.item = false // ASC by default } - case 1353: + case 1361: { parser.yyVAL.item = false } - case 1354: + case 1362: { parser.yyVAL.item = true } - case 1355: + case 1363: { parser.yyVAL.item = nil } - case 1357: + case 1365: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Or, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1358: + case 1366: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.And, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1359: + case 1367: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.LeftShift, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1360: + case 1368: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.RightShift, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1361: + case 1369: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Plus, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1362: + case 1370: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Minus, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1363: + case 1371: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr("DATE_ADD"), @@ -17472,7 +17579,7 @@ yynewstate: }, } } - case 1364: + case 1372: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr("DATE_SUB"), @@ -17483,7 +17590,7 @@ yynewstate: }, } } - case 1365: + case 1373: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr("DATE_ADD"), @@ -17494,44 +17601,44 @@ yynewstate: }, } } - case 1366: + case 1374: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Mul, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1367: + case 1375: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Div, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1368: + case 1376: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Mod, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1369: + case 1377: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.IntDiv, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1370: + case 1378: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Mod, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1371: + case 1379: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Xor, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1373: + case 1381: { parser.yyVAL.expr = &ast.ColumnNameExpr{Name: &ast.ColumnName{ Name: model.NewCIStr(yyS[yypt-0].ident), }} } - case 1374: + case 1382: { parser.yyVAL.expr = &ast.ColumnNameExpr{Name: &ast.ColumnName{ Table: model.NewCIStr(yyS[yypt-2].ident), Name: model.NewCIStr(yyS[yypt-0].ident), }} } - case 1375: + case 1383: { parser.yyVAL.expr = &ast.ColumnNameExpr{Name: &ast.ColumnName{ Schema: model.NewCIStr(yyS[yypt-4].ident), @@ -17539,39 +17646,39 @@ yynewstate: Name: model.NewCIStr(yyS[yypt-0].ident), }} } - case 1380: + case 1388: { parser.yyVAL.expr = &ast.SetCollationExpr{Expr: yyS[yypt-2].expr, Collate: yyS[yypt-0].ident} } - case 1383: + case 1391: { parser.yyVAL.expr = ast.NewParamMarkerExpr(yyS[yypt].offset) } - case 1386: + case 1394: { parser.yyVAL.expr = &ast.UnaryOperationExpr{Op: opcode.Not2, V: yyS[yypt-0].expr} } - case 1387: + case 1395: { parser.yyVAL.expr = &ast.UnaryOperationExpr{Op: opcode.BitNeg, V: yyS[yypt-0].expr} } - case 1388: + case 1396: { parser.yyVAL.expr = &ast.UnaryOperationExpr{Op: opcode.Minus, V: yyS[yypt-0].expr} } - case 1389: + case 1397: { parser.yyVAL.expr = &ast.UnaryOperationExpr{Op: opcode.Plus, V: yyS[yypt-0].expr} } - case 1390: + case 1398: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(ast.Concat), Args: []ast.ExprNode{yyS[yypt-2].expr, yyS[yypt-0].expr}} } - case 1391: + case 1399: { parser.yyVAL.expr = &ast.UnaryOperationExpr{Op: opcode.Not2, V: yyS[yypt-0].expr} } - case 1393: + case 1401: { startOffset := parser.startOffset(&yyS[yypt-1]) endOffset := parser.endOffset(&yyS[yypt]) @@ -17579,23 +17686,23 @@ yynewstate: expr.SetText(parser.lexer.client, parser.src[startOffset:endOffset]) parser.yyVAL.expr = &ast.ParenthesesExpr{Expr: expr} } - case 1394: + case 1402: { values := append(yyS[yypt-3].item.([]ast.ExprNode), yyS[yypt-1].expr) parser.yyVAL.expr = &ast.RowExpr{Values: values} } - case 1395: + case 1403: { values := append(yyS[yypt-3].item.([]ast.ExprNode), yyS[yypt-1].expr) parser.yyVAL.expr = &ast.RowExpr{Values: values} } - case 1396: + case 1404: { sq := yyS[yypt-0].expr.(*ast.SubqueryExpr) sq.Exists = true parser.yyVAL.expr = &ast.ExistsSubqueryExpr{Sel: sq} } - case 1397: + case 1405: { /* * ODBC escape syntax. @@ -17619,7 +17726,7 @@ yynewstate: parser.yyVAL.expr = yyS[yypt-1].expr } } - case 1398: + case 1406: { // See https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#operator_binary tp := types.NewFieldType(mysql.TypeString) @@ -17632,7 +17739,7 @@ yynewstate: FunctionType: ast.CastBinaryOperator, } } - case 1399: + case 1407: { /* See https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#function_cast */ tp := yyS[yypt-2].item.(*types.FieldType) @@ -17658,7 +17765,7 @@ yynewstate: ExplicitCharSet: explicitCharset, } } - case 1400: + case 1408: { x := &ast.CaseExpr{WhenClauses: yyS[yypt-2].item.([]*ast.WhenClause)} if yyS[yypt-3].expr != nil { @@ -17669,7 +17776,7 @@ yynewstate: } parser.yyVAL.expr = x } - case 1401: + case 1409: { // See https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#function_convert tp := yyS[yypt-1].item.(*types.FieldType) @@ -17689,7 +17796,7 @@ yynewstate: ExplicitCharSet: explicitCharset, } } - case 1402: + case 1410: { // See https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#function_convert charset1 := ast.NewValueExpr(yyS[yypt-1].ident, "", "") @@ -17698,70 +17805,70 @@ yynewstate: Args: []ast.ExprNode{yyS[yypt-3].expr, charset1}, } } - case 1403: + case 1411: { parser.yyVAL.expr = &ast.DefaultExpr{Name: yyS[yypt-1].expr.(*ast.ColumnNameExpr).Name} } - case 1404: + case 1412: { parser.yyVAL.expr = &ast.ValuesExpr{Column: yyS[yypt-1].expr.(*ast.ColumnNameExpr)} } - case 1405: + case 1413: { 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 1406: + case 1414: { 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 1407: + case 1415: { parser.yyVAL.item = false } - case 1408: + case 1416: { parser.yyVAL.item = true } - case 1411: + case 1419: { parser.yyVAL.item = false } - case 1412: + case 1420: { parser.yyVAL.item = true } - case 1413: + case 1421: { parser.yyVAL.item = false } - case 1415: + case 1423: { parser.yyVAL.item = true } - case 1418: + case 1426: { parser.yyVAL.item = true } - case 1462: + case 1471: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(yyS[yypt-3].ident), Args: yyS[yypt-1].item.([]ast.ExprNode)} } - case 1463: + case 1472: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(yyS[yypt-3].ident), Args: yyS[yypt-1].item.([]ast.ExprNode)} } - case 1464: + case 1473: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(yyS[yypt-1].ident)} } - case 1465: + case 1474: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(yyS[yypt-2].ident)} } - case 1466: + case 1475: { args := []ast.ExprNode{} if yyS[yypt-0].item != nil { @@ -17769,7 +17876,7 @@ yynewstate: } parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(yyS[yypt-1].ident), Args: args} } - case 1467: + case 1476: { nilVal := ast.NewValueExpr(nil, parser.charset, parser.collation) args := yyS[yypt-1].item.([]ast.ExprNode) @@ -17778,7 +17885,7 @@ yynewstate: Args: append(args, nilVal), } } - case 1468: + case 1477: { charset1 := ast.NewValueExpr(yyS[yypt-1].ident, "", "") args := yyS[yypt-3].item.([]ast.ExprNode) @@ -17787,42 +17894,42 @@ yynewstate: Args: append(args, charset1), } } - case 1469: + case 1478: { expr := ast.NewValueExpr(yyS[yypt-0].ident, "", "") parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(ast.DateLiteral), Args: []ast.ExprNode{expr}} } - case 1470: + case 1479: { expr := ast.NewValueExpr(yyS[yypt-0].ident, "", "") parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(ast.TimeLiteral), Args: []ast.ExprNode{expr}} } - case 1471: + case 1480: { expr := ast.NewValueExpr(yyS[yypt-0].ident, "", "") parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(ast.TimestampLiteral), Args: []ast.ExprNode{expr}} } - case 1472: + case 1481: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(ast.InsertFunc), Args: yyS[yypt-1].item.([]ast.ExprNode)} } - case 1473: + case 1482: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Mod, L: yyS[yypt-3].expr, R: yyS[yypt-1].expr} } - case 1474: + case 1483: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(ast.PasswordFunc), Args: yyS[yypt-1].item.([]ast.ExprNode)} } - case 1475: + case 1484: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(yyS[yypt-3].ident), Args: yyS[yypt-1].item.([]ast.ExprNode)} } - case 1476: + case 1485: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(yyS[yypt-3].ident), Args: yyS[yypt-1].item.([]ast.ExprNode)} } - case 1477: + case 1486: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-5].ident), @@ -17833,7 +17940,7 @@ yynewstate: }, } } - case 1478: + case 1487: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-7].ident), @@ -17844,7 +17951,7 @@ yynewstate: }, } } - case 1479: + case 1488: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-7].ident), @@ -17855,7 +17962,7 @@ yynewstate: }, } } - case 1480: + case 1489: { timeUnit := &ast.TimeUnitExpr{Unit: yyS[yypt-3].item.(ast.TimeUnitType)} parser.yyVAL.expr = &ast.FuncCallExpr{ @@ -17863,7 +17970,7 @@ yynewstate: Args: []ast.ExprNode{timeUnit, yyS[yypt-1].expr}, } } - case 1481: + case 1490: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-5].ident), @@ -17873,67 +17980,67 @@ yynewstate: }, } } - case 1482: + case 1491: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(yyS[yypt-5].ident), Args: []ast.ExprNode{yyS[yypt-3].expr, yyS[yypt-1].expr}} } - case 1483: + case 1492: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-5].ident), Args: []ast.ExprNode{yyS[yypt-3].expr, yyS[yypt-1].expr}, } } - case 1484: + case 1493: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-5].ident), Args: []ast.ExprNode{yyS[yypt-3].expr, yyS[yypt-1].expr}, } } - case 1485: + case 1494: { 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 1486: + case 1495: { 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 1487: + case 1496: { 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 1488: + case 1497: { 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 1489: + case 1498: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-3].ident), Args: []ast.ExprNode{yyS[yypt-1].expr}, } } - case 1490: + case 1499: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-5].ident), Args: []ast.ExprNode{yyS[yypt-1].expr, yyS[yypt-3].expr}, } } - case 1491: + case 1500: { spaceVal := ast.NewValueExpr(" ", parser.charset, parser.collation) direction := &ast.TrimDirectionExpr{Direction: yyS[yypt-3].item.(ast.TrimDirectionType)} @@ -17942,7 +18049,7 @@ yynewstate: Args: []ast.ExprNode{yyS[yypt-1].expr, spaceVal, direction}, } } - case 1492: + case 1501: { direction := &ast.TrimDirectionExpr{Direction: yyS[yypt-4].item.(ast.TrimDirectionType)} parser.yyVAL.expr = &ast.FuncCallExpr{ @@ -17950,63 +18057,63 @@ yynewstate: Args: []ast.ExprNode{yyS[yypt-1].expr, yyS[yypt-3].expr, direction}, } } - case 1493: + case 1502: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-3].ident), Args: []ast.ExprNode{yyS[yypt-1].expr}, } } - case 1494: + case 1503: { 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 1495: + case 1504: { 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 1497: + case 1506: { 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 1498: + case 1507: { parser.yyVAL.item = ast.GetFormatSelectorDate } - case 1499: + case 1508: { parser.yyVAL.item = ast.GetFormatSelectorDatetime } - case 1500: + case 1509: { parser.yyVAL.item = ast.GetFormatSelectorTime } - case 1501: + case 1510: { parser.yyVAL.item = ast.GetFormatSelectorDatetime } - case 1506: + case 1515: { parser.yyVAL.item = ast.TrimBoth } - case 1507: + case 1516: { parser.yyVAL.item = ast.TrimLeading } - case 1508: + case 1517: { parser.yyVAL.item = ast.TrimTrailing } - case 1509: + case 1518: { objNameExpr := &ast.TableNameExpr{ Name: yyS[yypt-1].item.(*ast.TableName), @@ -18016,7 +18123,7 @@ yynewstate: Args: []ast.ExprNode{objNameExpr}, } } - case 1510: + case 1519: { objNameExpr := &ast.TableNameExpr{ Name: yyS[yypt-3].item.(*ast.TableName), @@ -18027,7 +18134,7 @@ yynewstate: Args: []ast.ExprNode{objNameExpr, valueExpr}, } } - case 1512: + case 1521: { 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))} @@ -18035,15 +18142,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 1513: + case 1522: { parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-3].ident, Args: yyS[yypt-1].item.([]ast.ExprNode), Distinct: false} } - case 1514: + case 1523: { parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-3].ident, Args: yyS[yypt-1].item.([]ast.ExprNode)} } - case 1515: + case 1524: { 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))} @@ -18051,7 +18158,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1516: + case 1525: { 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))} @@ -18059,7 +18166,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1517: + case 1526: { 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))} @@ -18067,7 +18174,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1518: + case 1527: { 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))} @@ -18075,7 +18182,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1519: + case 1528: { 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))} @@ -18083,7 +18190,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1520: + case 1529: { 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))} @@ -18091,11 +18198,11 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1521: + case 1530: { parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: yyS[yypt-1].item.([]ast.ExprNode), Distinct: true} } - case 1522: + case 1531: { 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))} @@ -18103,7 +18210,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1523: + case 1532: { 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))} @@ -18111,7 +18218,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1524: + case 1533: { args := []ast.ExprNode{ast.NewValueExpr(1, parser.charset, parser.collation)} if yyS[yypt-0].item != nil { @@ -18120,7 +18227,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: args} } } - case 1525: + case 1534: { args := yyS[yypt-4].item.([]ast.ExprNode) args = append(args, yyS[yypt-2].item.(ast.ExprNode)) @@ -18134,7 +18241,7 @@ yynewstate: parser.yyVAL.expr = agg } } - case 1526: + case 1535: { 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))} @@ -18142,7 +18249,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 1527: + case 1536: { 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))} @@ -18150,7 +18257,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 1528: + case 1537: { 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))} @@ -18158,7 +18265,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 1529: + case 1538: { 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))} @@ -18166,7 +18273,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: ast.AggFuncStddevPop, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool)} } } - case 1530: + case 1539: { 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))} @@ -18174,7 +18281,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 1531: + case 1540: { 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))} @@ -18182,11 +18289,11 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: ast.AggFuncVarPop, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool)} } } - case 1532: + case 1541: { parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool)} } - case 1533: + case 1542: { 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))} @@ -18194,7 +18301,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1534: + case 1543: { 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))} @@ -18202,7 +18309,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1535: + case 1544: { 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))} @@ -18210,7 +18317,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-6].ident, Args: []ast.ExprNode{yyS[yypt-4].expr, yyS[yypt-2].expr}} } } - case 1536: + case 1545: { 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))} @@ -18218,7 +18325,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-7].ident, Args: []ast.ExprNode{yyS[yypt-4].expr, yyS[yypt-2].expr}} } } - case 1537: + case 1546: { 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))} @@ -18226,7 +18333,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-7].ident, Args: []ast.ExprNode{yyS[yypt-5].expr, yyS[yypt-2].expr}} } } - case 1538: + case 1547: { 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))} @@ -18234,22 +18341,22 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-8].ident, Args: []ast.ExprNode{yyS[yypt-5].expr, yyS[yypt-2].expr}} } } - case 1539: + case 1548: { parser.yyVAL.item = ast.NewValueExpr(",", "", "") } - case 1540: + case 1549: { parser.yyVAL.item = ast.NewValueExpr(yyS[yypt-0].ident, "", "") } - case 1541: + case 1550: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-3].ident), Args: yyS[yypt-1].item.([]ast.ExprNode), } } - case 1542: + case 1551: { var tp ast.FuncCallExprType if isInTokenMap(yyS[yypt-3].ident) { @@ -18264,159 +18371,159 @@ yynewstate: Args: yyS[yypt-1].item.([]ast.ExprNode), } } - case 1543: + case 1552: { parser.yyVAL.item = nil } - case 1544: + case 1553: { parser.yyVAL.item = nil } - case 1545: + case 1554: { expr := ast.NewValueExpr(yyS[yypt-1].item, parser.charset, parser.collation) parser.yyVAL.item = expr } - case 1547: + case 1556: { parser.yyVAL.item = ast.TimeUnitSecondMicrosecond } - case 1548: + case 1557: { parser.yyVAL.item = ast.TimeUnitMinuteMicrosecond } - case 1549: + case 1558: { parser.yyVAL.item = ast.TimeUnitMinuteSecond } - case 1550: + case 1559: { parser.yyVAL.item = ast.TimeUnitHourMicrosecond } - case 1551: + case 1560: { parser.yyVAL.item = ast.TimeUnitHourSecond } - case 1552: + case 1561: { parser.yyVAL.item = ast.TimeUnitHourMinute } - case 1553: + case 1562: { parser.yyVAL.item = ast.TimeUnitDayMicrosecond } - case 1554: + case 1563: { parser.yyVAL.item = ast.TimeUnitDaySecond } - case 1555: + case 1564: { parser.yyVAL.item = ast.TimeUnitDayMinute } - case 1556: + case 1565: { parser.yyVAL.item = ast.TimeUnitDayHour } - case 1557: + case 1566: { parser.yyVAL.item = ast.TimeUnitYearMonth } - case 1558: + case 1567: { parser.yyVAL.item = ast.TimeUnitMicrosecond } - case 1559: + case 1568: { parser.yyVAL.item = ast.TimeUnitSecond } - case 1560: + case 1569: { parser.yyVAL.item = ast.TimeUnitMinute } - case 1561: + case 1570: { parser.yyVAL.item = ast.TimeUnitHour } - case 1562: + case 1571: { parser.yyVAL.item = ast.TimeUnitDay } - case 1563: + case 1572: { parser.yyVAL.item = ast.TimeUnitWeek } - case 1564: + case 1573: { parser.yyVAL.item = ast.TimeUnitMonth } - case 1565: + case 1574: { parser.yyVAL.item = ast.TimeUnitQuarter } - case 1566: + case 1575: { parser.yyVAL.item = ast.TimeUnitYear } - case 1567: + case 1576: { parser.yyVAL.item = ast.TimeUnitSecond } - case 1568: + case 1577: { parser.yyVAL.item = ast.TimeUnitMinute } - case 1569: + case 1578: { parser.yyVAL.item = ast.TimeUnitHour } - case 1570: + case 1579: { parser.yyVAL.item = ast.TimeUnitDay } - case 1571: + case 1580: { parser.yyVAL.item = ast.TimeUnitWeek } - case 1572: + case 1581: { parser.yyVAL.item = ast.TimeUnitMonth } - case 1573: + case 1582: { parser.yyVAL.item = ast.TimeUnitQuarter } - case 1574: + case 1583: { parser.yyVAL.item = ast.TimeUnitYear } - case 1575: + case 1584: { parser.yyVAL.expr = nil } - case 1577: + case 1586: { parser.yyVAL.item = []*ast.WhenClause{yyS[yypt-0].item.(*ast.WhenClause)} } - case 1578: + case 1587: { parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.WhenClause), yyS[yypt-0].item.(*ast.WhenClause)) } - case 1579: + case 1588: { parser.yyVAL.item = &ast.WhenClause{ Expr: yyS[yypt-2].expr, Result: yyS[yypt-0].expr, } } - case 1580: + case 1589: { parser.yyVAL.item = nil } - case 1581: + case 1590: { parser.yyVAL.item = yyS[yypt-0].expr } - case 1582: + case 1591: { tp := types.NewFieldType(mysql.TypeVarString) tp.SetFlen(yyS[yypt-0].item.(int)) // TODO: Flen should be the flen of expression @@ -18428,7 +18535,7 @@ yynewstate: tp.AddFlag(mysql.BinaryFlag) parser.yyVAL.item = tp } - case 1583: + case 1592: { tp := types.NewFieldType(mysql.TypeVarString) tp.SetFlen(yyS[yypt-1].item.(int)) // TODO: Flen should be the flen of expression @@ -18451,7 +18558,7 @@ yynewstate: } parser.yyVAL.item = tp } - case 1584: + case 1593: { tp := types.NewFieldType(mysql.TypeDate) tp.SetCharset(charset.CharsetBin) @@ -18459,7 +18566,7 @@ yynewstate: tp.AddFlag(mysql.BinaryFlag) parser.yyVAL.item = tp } - case 1585: + case 1594: { tp := types.NewFieldType(mysql.TypeYear) tp.SetCharset(charset.CharsetBin) @@ -18467,7 +18574,7 @@ yynewstate: tp.AddFlag(mysql.BinaryFlag) parser.yyVAL.item = tp } - case 1586: + case 1595: { tp := types.NewFieldType(mysql.TypeDatetime) flen, _ := mysql.GetDefaultFieldLengthAndDecimalForCast(mysql.TypeDatetime) @@ -18481,7 +18588,7 @@ yynewstate: tp.AddFlag(mysql.BinaryFlag) parser.yyVAL.item = tp } - case 1587: + case 1596: { fopt := yyS[yypt-0].item.(*ast.FloatOpt) tp := types.NewFieldType(mysql.TypeNewDecimal) @@ -18492,7 +18599,7 @@ yynewstate: tp.AddFlag(mysql.BinaryFlag) parser.yyVAL.item = tp } - case 1588: + case 1597: { tp := types.NewFieldType(mysql.TypeDuration) flen, _ := mysql.GetDefaultFieldLengthAndDecimalForCast(mysql.TypeDuration) @@ -18506,7 +18613,7 @@ yynewstate: tp.AddFlag(mysql.BinaryFlag) parser.yyVAL.item = tp } - case 1589: + case 1598: { tp := types.NewFieldType(mysql.TypeLonglong) tp.SetCharset(charset.CharsetBin) @@ -18514,7 +18621,7 @@ yynewstate: tp.AddFlag(mysql.BinaryFlag) parser.yyVAL.item = tp } - case 1590: + case 1599: { tp := types.NewFieldType(mysql.TypeLonglong) tp.AddFlag(mysql.UnsignedFlag | mysql.BinaryFlag) @@ -18522,7 +18629,7 @@ yynewstate: tp.SetCollate(charset.CollationBin) parser.yyVAL.item = tp } - case 1591: + case 1600: { tp := types.NewFieldType(mysql.TypeJSON) tp.AddFlag(mysql.BinaryFlag | mysql.ParseToJSONFlag) @@ -18530,7 +18637,7 @@ yynewstate: tp.SetCollate(mysql.DefaultCollationName) parser.yyVAL.item = tp } - case 1592: + case 1601: { tp := types.NewFieldType(mysql.TypeDouble) flen, decimal := mysql.GetDefaultFieldLengthAndDecimalForCast(mysql.TypeDouble) @@ -18541,7 +18648,7 @@ yynewstate: tp.SetCollate(charset.CollationBin) parser.yyVAL.item = tp } - case 1593: + case 1602: { tp := types.NewFieldType(mysql.TypeFloat) fopt := yyS[yypt-0].item.(*ast.FloatOpt) @@ -18558,7 +18665,7 @@ yynewstate: tp.SetCollate(charset.CollationBin) parser.yyVAL.item = tp } - case 1594: + case 1603: { var tp *types.FieldType if parser.lexer.GetSQLMode().HasRealAsFloatMode() { @@ -18574,65 +18681,65 @@ yynewstate: tp.SetCollate(charset.CollationBin) parser.yyVAL.item = tp } - case 1595: + case 1604: { parser.yyVAL.item = mysql.LowPriority } - case 1596: + case 1605: { parser.yyVAL.item = mysql.HighPriority } - case 1597: + case 1606: { parser.yyVAL.item = mysql.DelayedPriority } - case 1598: + case 1607: { parser.yyVAL.item = mysql.NoPriority } - case 1600: + case 1609: { parser.yyVAL.item = &ast.TableName{Name: model.NewCIStr(yyS[yypt-0].ident)} } - case 1601: + case 1610: { parser.yyVAL.item = &ast.TableName{Schema: model.NewCIStr(yyS[yypt-2].ident), Name: model.NewCIStr(yyS[yypt-0].ident)} } - case 1602: + case 1611: { tbl := []*ast.TableName{yyS[yypt-0].item.(*ast.TableName)} parser.yyVAL.item = tbl } - case 1603: + case 1612: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.TableName), yyS[yypt-0].item.(*ast.TableName)) } - case 1604: + case 1613: { parser.yyVAL.item = &ast.TableName{Name: model.NewCIStr(yyS[yypt-1].ident)} } - case 1605: + case 1614: { parser.yyVAL.item = &ast.TableName{Schema: model.NewCIStr(yyS[yypt-3].ident), Name: model.NewCIStr(yyS[yypt-1].ident)} } - case 1606: + case 1615: { tbl := []*ast.TableName{yyS[yypt-0].item.(*ast.TableName)} parser.yyVAL.item = tbl } - case 1607: + case 1616: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.TableName), yyS[yypt-0].item.(*ast.TableName)) } - case 1610: + case 1619: { parser.yyVAL.item = false } - case 1611: + case 1620: { parser.yyVAL.item = true } - case 1612: + case 1621: { var sqlText string var sqlVar *ast.VariableExpr @@ -18648,94 +18755,94 @@ yynewstate: SQLVar: sqlVar, } } - case 1613: + case 1622: { parser.yyVAL.item = yyS[yypt-0].ident } - case 1614: + case 1623: { parser.yyVAL.item = yyS[yypt-0].expr } - case 1615: + case 1624: { parser.yyVAL.statement = &ast.ExecuteStmt{Name: yyS[yypt-0].ident} } - case 1616: + case 1625: { parser.yyVAL.statement = &ast.ExecuteStmt{ Name: yyS[yypt-2].ident, UsingVars: yyS[yypt-0].item.([]ast.ExprNode), } } - case 1617: + case 1626: { parser.yyVAL.item = []ast.ExprNode{yyS[yypt-0].expr} } - case 1618: + case 1627: { parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.ExprNode), yyS[yypt-0].expr) } - case 1619: + case 1628: { parser.yyVAL.statement = &ast.DeallocateStmt{Name: yyS[yypt-0].ident} } - case 1622: + case 1631: { parser.yyVAL.statement = &ast.RollbackStmt{} } - case 1623: + case 1632: { parser.yyVAL.statement = &ast.RollbackStmt{CompletionType: yyS[yypt-0].item.(ast.CompletionType)} } - case 1624: + case 1633: { parser.yyVAL.statement = &ast.RollbackStmt{SavepointName: yyS[yypt-0].ident} } - case 1625: + case 1634: { parser.yyVAL.statement = &ast.RollbackStmt{SavepointName: yyS[yypt-0].ident} } - case 1626: + case 1635: { parser.yyVAL.item = ast.CompletionTypeChain } - case 1627: + case 1636: { parser.yyVAL.item = ast.CompletionTypeRelease } - case 1628: + case 1637: { parser.yyVAL.item = ast.CompletionTypeDefault } - case 1629: + case 1638: { parser.yyVAL.item = ast.CompletionTypeChain } - case 1630: + case 1639: { parser.yyVAL.item = ast.CompletionTypeDefault } - case 1631: + case 1640: { parser.yyVAL.item = ast.CompletionTypeRelease } - case 1632: + case 1641: { parser.yyVAL.item = ast.CompletionTypeDefault } - case 1633: + case 1642: { parser.yyVAL.statement = &ast.ShutdownStmt{} } - case 1634: + case 1643: { parser.yyVAL.statement = &ast.RestartStmt{} } - case 1635: + case 1644: { parser.yyVAL.statement = &ast.HelpStmt{Topic: yyS[yypt-0].ident} } - case 1636: + case 1645: { st := &ast.SelectStmt{ SelectStmtOpts: yyS[yypt-2].item.(*ast.SelectStmtOpts), @@ -18751,7 +18858,7 @@ yynewstate: } parser.yyVAL.item = st } - case 1637: + case 1646: { st := yyS[yypt-2].item.(*ast.SelectStmt) lastField := st.Fields.Fields[len(st.Fields.Fields)-1] @@ -18763,7 +18870,7 @@ yynewstate: st.Where = yyS[yypt-0].item.(ast.ExprNode) } } - case 1638: + case 1647: { st := yyS[yypt-6].item.(*ast.SelectStmt) st.From = yyS[yypt-4].item.(*ast.TableRefsClause) @@ -18786,11 +18893,11 @@ yynewstate: } parser.yyVAL.item = st } - case 1639: + case 1648: { parser.yyVAL.item = nil } - case 1640: + case 1649: { var repSeed ast.ExprNode if yyS[yypt-0].expr != nil { @@ -18803,7 +18910,7 @@ yynewstate: RepeatableSeed: repSeed, } } - case 1641: + case 1650: { var repSeed ast.ExprNode if yyS[yypt-0].expr != nil { @@ -18814,43 +18921,43 @@ yynewstate: RepeatableSeed: repSeed, } } - case 1642: + case 1651: { parser.yyVAL.item = ast.SampleMethodTypeNone } - case 1643: + case 1652: { parser.yyVAL.item = ast.SampleMethodTypeSystem } - case 1644: + case 1653: { parser.yyVAL.item = ast.SampleMethodTypeBernoulli } - case 1645: + case 1654: { parser.yyVAL.item = ast.SampleMethodTypeTiDBRegion } - case 1646: + case 1655: { parser.yyVAL.item = ast.SampleClauseUnitTypeDefault } - case 1647: + case 1656: { parser.yyVAL.item = ast.SampleClauseUnitTypeRow } - case 1648: + case 1657: { parser.yyVAL.item = ast.SampleClauseUnitTypePercent } - case 1649: + case 1658: { parser.yyVAL.expr = nil } - case 1650: + case 1659: { parser.yyVAL.expr = yyS[yypt-1].expr } - case 1651: + case 1660: { st := yyS[yypt-6].item.(*ast.SelectStmt) if yyS[yypt-1].item != nil { @@ -18873,7 +18980,7 @@ yynewstate: } parser.yyVAL.statement = st } - case 1652: + case 1661: { st := yyS[yypt-5].item.(*ast.SelectStmt) if yyS[yypt-4].item != nil { @@ -18893,7 +19000,7 @@ yynewstate: } parser.yyVAL.statement = st } - case 1653: + case 1662: { st := yyS[yypt-4].item.(*ast.SelectStmt) if yyS[yypt-1].item != nil { @@ -18910,7 +19017,7 @@ yynewstate: } parser.yyVAL.statement = st } - case 1654: + case 1663: { st := &ast.SelectStmt{ Kind: ast.SelectStmtKindTable, @@ -18932,7 +19039,7 @@ yynewstate: } parser.yyVAL.statement = st } - case 1655: + case 1664: { st := &ast.SelectStmt{ Kind: ast.SelectStmtKindValues, @@ -18953,13 +19060,13 @@ yynewstate: } parser.yyVAL.statement = st } - case 1656: + case 1665: { sel := yyS[yypt-0].statement.(*ast.SelectStmt) sel.With = yyS[yypt-1].item.(*ast.WithClause) parser.yyVAL.statement = sel } - case 1657: + case 1666: { var sel ast.StmtNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -18975,11 +19082,11 @@ yynewstate: } parser.yyVAL.statement = sel } - case 1658: + case 1667: { parser.yyVAL.item = yyS[yypt-0].item } - case 1659: + case 1668: { ws := yyS[yypt-0].item.(*ast.WithClause) ws.IsRecursive = true @@ -18988,20 +19095,20 @@ yynewstate: } parser.yyVAL.item = ws } - case 1660: + case 1669: { ws := yyS[yypt-2].item.(*ast.WithClause) ws.CTEs = append(ws.CTEs, yyS[yypt-0].item.(*ast.CommonTableExpression)) parser.yyVAL.item = ws } - case 1661: + case 1670: { 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 1662: + case 1671: { cte := &ast.CommonTableExpression{} cte.Name = model.NewCIStr(yyS[yypt-3].ident) @@ -19009,37 +19116,37 @@ yynewstate: cte.Query = yyS[yypt-0].expr.(*ast.SubqueryExpr) parser.yyVAL.item = cte } - case 1664: + case 1673: { parser.yyVAL.item = nil } - case 1665: + case 1674: { parser.yyVAL.item = yyS[yypt-0].item.([]ast.WindowSpec) } - case 1666: + case 1675: { parser.yyVAL.item = []ast.WindowSpec{yyS[yypt-0].item.(ast.WindowSpec)} } - case 1667: + case 1676: { parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.WindowSpec), yyS[yypt-0].item.(ast.WindowSpec)) } - case 1668: + case 1677: { var spec = yyS[yypt-0].item.(ast.WindowSpec) spec.Name = yyS[yypt-2].item.(model.CIStr) parser.yyVAL.item = spec } - case 1669: + case 1678: { parser.yyVAL.item = model.NewCIStr(yyS[yypt-0].ident) } - case 1670: + case 1679: { parser.yyVAL.item = yyS[yypt-1].item.(ast.WindowSpec) } - case 1671: + case 1680: { spec := ast.WindowSpec{Ref: yyS[yypt-3].item.(model.CIStr)} if yyS[yypt-2].item != nil { @@ -19053,138 +19160,138 @@ yynewstate: } parser.yyVAL.item = spec } - case 1672: + case 1681: { parser.yyVAL.item = model.CIStr{} } - case 1674: + case 1683: { parser.yyVAL.item = nil } - case 1675: + case 1684: { parser.yyVAL.item = &ast.PartitionByClause{Items: yyS[yypt-0].item.([]*ast.ByItem)} } - case 1676: + case 1685: { parser.yyVAL.item = nil } - case 1677: + case 1686: { parser.yyVAL.item = &ast.OrderByClause{Items: yyS[yypt-0].item.([]*ast.ByItem)} } - case 1678: + case 1687: { parser.yyVAL.item = nil } - case 1679: + case 1688: { parser.yyVAL.item = &ast.FrameClause{ Type: yyS[yypt-1].item.(ast.FrameType), Extent: yyS[yypt-0].item.(ast.FrameExtent), } } - case 1680: + case 1689: { parser.yyVAL.item = ast.FrameType(ast.Rows) } - case 1681: + case 1690: { parser.yyVAL.item = ast.FrameType(ast.Ranges) } - case 1682: + case 1691: { parser.yyVAL.item = ast.FrameType(ast.Groups) } - case 1683: + case 1692: { parser.yyVAL.item = ast.FrameExtent{ Start: yyS[yypt-0].item.(ast.FrameBound), End: ast.FrameBound{Type: ast.CurrentRow}, } } - case 1685: + case 1694: { parser.yyVAL.item = ast.FrameBound{Type: ast.Preceding, UnBounded: true} } - case 1686: + case 1695: { parser.yyVAL.item = ast.FrameBound{Type: ast.Preceding, Expr: ast.NewValueExpr(yyS[yypt-1].item, parser.charset, parser.collation)} } - case 1687: + case 1696: { parser.yyVAL.item = ast.FrameBound{Type: ast.Preceding, Expr: ast.NewParamMarkerExpr(yyS[yypt].offset)} } - case 1688: + case 1697: { parser.yyVAL.item = ast.FrameBound{Type: ast.Preceding, Expr: yyS[yypt-2].expr, Unit: yyS[yypt-1].item.(ast.TimeUnitType)} } - case 1689: + case 1698: { parser.yyVAL.item = ast.FrameBound{Type: ast.CurrentRow} } - case 1690: + case 1699: { parser.yyVAL.item = ast.FrameExtent{Start: yyS[yypt-2].item.(ast.FrameBound), End: yyS[yypt-0].item.(ast.FrameBound)} } - case 1692: + case 1701: { parser.yyVAL.item = ast.FrameBound{Type: ast.Following, UnBounded: true} } - case 1693: + case 1702: { parser.yyVAL.item = ast.FrameBound{Type: ast.Following, Expr: ast.NewValueExpr(yyS[yypt-1].item, parser.charset, parser.collation)} } - case 1694: + case 1703: { parser.yyVAL.item = ast.FrameBound{Type: ast.Following, Expr: ast.NewParamMarkerExpr(yyS[yypt].offset)} } - case 1695: + case 1704: { parser.yyVAL.item = ast.FrameBound{Type: ast.Following, Expr: yyS[yypt-2].expr, Unit: yyS[yypt-1].item.(ast.TimeUnitType)} } - case 1696: + case 1705: { parser.yyVAL.item = nil } - case 1697: + case 1706: { spec := yyS[yypt-0].item.(ast.WindowSpec) parser.yyVAL.item = &spec } - case 1698: + case 1707: { parser.yyVAL.item = yyS[yypt-0].item.(ast.WindowSpec) } - case 1699: + case 1708: { parser.yyVAL.item = ast.WindowSpec{Name: yyS[yypt-0].item.(model.CIStr), OnlyAlias: true} } - case 1701: + case 1710: { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-3].ident, Spec: yyS[yypt-0].item.(ast.WindowSpec)} } - case 1702: + case 1711: { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-3].ident, Spec: yyS[yypt-0].item.(ast.WindowSpec)} } - case 1703: + case 1712: { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-3].ident, Spec: yyS[yypt-0].item.(ast.WindowSpec)} } - case 1704: + case 1713: { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-3].ident, Spec: yyS[yypt-0].item.(ast.WindowSpec)} } - case 1705: + case 1714: { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-3].ident, Spec: yyS[yypt-0].item.(ast.WindowSpec)} } - case 1706: + case 1715: { 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 1707: + case 1716: { args := []ast.ExprNode{yyS[yypt-4].expr} if yyS[yypt-3].item != nil { @@ -19192,7 +19299,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 1708: + case 1717: { args := []ast.ExprNode{yyS[yypt-4].expr} if yyS[yypt-3].item != nil { @@ -19200,23 +19307,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 1709: + case 1718: { 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 1710: + case 1719: { 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 1711: + case 1720: { 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 1712: + case 1721: { parser.yyVAL.item = nil } - case 1713: + case 1722: { args := []ast.ExprNode{ast.NewValueExpr(yyS[yypt-1].item, parser.charset, parser.collation)} if yyS[yypt-0].item != nil { @@ -19224,7 +19331,7 @@ yynewstate: } parser.yyVAL.item = args } - case 1714: + case 1723: { args := []ast.ExprNode{ast.NewParamMarkerExpr(yyS[yypt-1].offset)} if yyS[yypt-0].item != nil { @@ -19232,43 +19339,43 @@ yynewstate: } parser.yyVAL.item = args } - case 1715: + case 1724: { parser.yyVAL.item = nil } - case 1716: + case 1725: { parser.yyVAL.item = yyS[yypt-0].expr } - case 1717: + case 1726: { parser.yyVAL.item = false } - case 1718: + case 1727: { parser.yyVAL.item = false } - case 1719: + case 1728: { parser.yyVAL.item = true } - case 1720: + case 1729: { parser.yyVAL.item = false } - case 1721: + case 1730: { parser.yyVAL.item = false } - case 1722: + case 1731: { parser.yyVAL.item = true } - case 1723: + case 1732: { parser.yyVAL.item = &ast.TableRefsClause{TableRefs: yyS[yypt-0].item.(*ast.Join)} } - case 1724: + case 1733: { if j, ok := yyS[yypt-0].item.(*ast.Join); ok { // if $1 is Join, use it directly @@ -19277,12 +19384,12 @@ yynewstate: parser.yyVAL.item = &ast.Join{Left: yyS[yypt-0].item.(ast.ResultSetNode), Right: nil} } } - case 1725: + case 1734: { /* 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 1727: + case 1736: { /* * ODBC escape syntax for outer join is { OJ join_table } @@ -19290,7 +19397,7 @@ yynewstate: */ parser.yyVAL.item = yyS[yypt-1].item } - case 1730: + case 1739: { tn := yyS[yypt-5].item.(*ast.TableName) tn.PartitionNames = yyS[yypt-4].item.([]model.CIStr) @@ -19303,66 +19410,66 @@ yynewstate: } parser.yyVAL.item = &ast.TableSource{Source: tn, AsName: yyS[yypt-3].item.(model.CIStr)} } - case 1731: + case 1740: { resultNode := yyS[yypt-1].expr.(*ast.SubqueryExpr).Query parser.yyVAL.item = &ast.TableSource{Source: resultNode, AsName: yyS[yypt-0].item.(model.CIStr)} } - case 1732: + case 1741: { j := yyS[yypt-1].item.(*ast.Join) j.ExplicitParens = true parser.yyVAL.item = yyS[yypt-1].item } - case 1733: + case 1742: { parser.yyVAL.item = []model.CIStr{} } - case 1734: + case 1743: { parser.yyVAL.item = yyS[yypt-1].item } - case 1735: + case 1744: { parser.yyVAL.item = model.CIStr{} } - case 1737: + case 1746: { parser.yyVAL.item = model.NewCIStr(yyS[yypt-0].ident) } - case 1738: + case 1747: { parser.yyVAL.item = model.NewCIStr(yyS[yypt-0].ident) } - case 1739: + case 1748: { parser.yyVAL.item = ast.HintUse } - case 1740: + case 1749: { parser.yyVAL.item = ast.HintIgnore } - case 1741: + case 1750: { parser.yyVAL.item = ast.HintForce } - case 1742: + case 1751: { parser.yyVAL.item = ast.HintForScan } - case 1743: + case 1752: { parser.yyVAL.item = ast.HintForJoin } - case 1744: + case 1753: { parser.yyVAL.item = ast.HintForOrderBy } - case 1745: + case 1754: { parser.yyVAL.item = ast.HintForGroupBy } - case 1746: + case 1755: { parser.yyVAL.item = &ast.IndexHint{ IndexNames: yyS[yypt-1].item.([]model.CIStr), @@ -19370,134 +19477,134 @@ yynewstate: HintScope: yyS[yypt-3].item.(ast.IndexHintScope), } } - case 1747: + case 1756: { var nameList []model.CIStr parser.yyVAL.item = nameList } - case 1748: + case 1757: { parser.yyVAL.item = []model.CIStr{model.NewCIStr(yyS[yypt-0].ident)} } - case 1749: + case 1758: { parser.yyVAL.item = append(yyS[yypt-2].item.([]model.CIStr), model.NewCIStr(yyS[yypt-0].ident)) } - case 1750: + case 1759: { parser.yyVAL.item = []model.CIStr{model.NewCIStr(yyS[yypt-0].ident)} } - case 1751: + case 1760: { parser.yyVAL.item = append(yyS[yypt-2].item.([]model.CIStr), model.NewCIStr(yyS[yypt-0].ident)) } - case 1752: + case 1761: { parser.yyVAL.item = []*ast.IndexHint{yyS[yypt-0].item.(*ast.IndexHint)} } - case 1753: + case 1762: { parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.IndexHint), yyS[yypt-0].item.(*ast.IndexHint)) } - case 1754: + case 1763: { parser.yyVAL.item = []*ast.IndexHint{} } - case 1756: + case 1765: { parser.yyVAL.item = ast.NewCrossJoin(yyS[yypt-2].item.(ast.ResultSetNode), yyS[yypt-0].item.(ast.ResultSetNode)) } - case 1757: + case 1766: { 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 1758: + case 1767: { 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 1759: + case 1768: { 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 1760: + case 1769: { 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 1761: + case 1770: { parser.yyVAL.item = &ast.Join{Left: yyS[yypt-3].item.(ast.ResultSetNode), Right: yyS[yypt-0].item.(ast.ResultSetNode), NaturalJoin: true} } - case 1762: + case 1771: { 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 1763: + case 1772: { parser.yyVAL.item = &ast.Join{Left: yyS[yypt-2].item.(ast.ResultSetNode), Right: yyS[yypt-0].item.(ast.ResultSetNode), StraightJoin: true} } - case 1764: + case 1773: { 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 1765: + case 1774: { parser.yyVAL.item = ast.LeftJoin } - case 1766: + case 1775: { parser.yyVAL.item = ast.RightJoin } - case 1772: + case 1781: { parser.yyVAL.item = nil } - case 1773: + case 1782: { parser.yyVAL.item = &ast.Limit{Count: yyS[yypt-0].item.(ast.ValueExpr)} } - case 1774: + case 1783: { parser.yyVAL.item = ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation) } - case 1775: + case 1784: { parser.yyVAL.item = ast.NewParamMarkerExpr(yyS[yypt].offset) } - case 1780: + case 1789: { parser.yyVAL.item = ast.NewValueExpr(uint64(1), parser.charset, parser.collation) } - case 1782: + case 1791: { parser.yyVAL.item = &ast.Limit{Count: yyS[yypt-0].item.(ast.ExprNode)} } - case 1783: + case 1792: { parser.yyVAL.item = &ast.Limit{Offset: yyS[yypt-2].item.(ast.ExprNode), Count: yyS[yypt-0].item.(ast.ExprNode)} } - case 1784: + case 1793: { parser.yyVAL.item = &ast.Limit{Offset: yyS[yypt-0].item.(ast.ExprNode), Count: yyS[yypt-2].item.(ast.ExprNode)} } - case 1785: + case 1794: { parser.yyVAL.item = &ast.Limit{Count: yyS[yypt-2].item.(ast.ExprNode)} } - case 1786: + case 1795: { parser.yyVAL.item = nil } - case 1788: + case 1797: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true opt.TableHints = yyS[yypt-0].item.([]*ast.TableOptimizerHint) parser.yyVAL.item = opt } - case 1789: + case 1798: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true @@ -19509,61 +19616,61 @@ yynewstate: } parser.yyVAL.item = opt } - case 1790: + case 1799: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true opt.Priority = yyS[yypt-0].item.(mysql.PriorityEnum) parser.yyVAL.item = opt } - case 1791: + case 1800: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true opt.SQLSmallResult = true parser.yyVAL.item = opt } - case 1792: + case 1801: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true opt.SQLBigResult = true parser.yyVAL.item = opt } - case 1793: + case 1802: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true opt.SQLBufferResult = true parser.yyVAL.item = opt } - case 1794: + case 1803: { opt := &ast.SelectStmtOpts{} opt.SQLCache = yyS[yypt-0].item.(bool) parser.yyVAL.item = opt } - case 1795: + case 1804: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true opt.CalcFoundRows = true parser.yyVAL.item = opt } - case 1796: + case 1805: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true opt.StraightJoin = true parser.yyVAL.item = opt } - case 1797: + case 1806: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true parser.yyVAL.item = opt } - case 1799: + case 1808: { opts := yyS[yypt-1].item.(*ast.SelectStmtOpts) opt := yyS[yypt-0].item.(*ast.SelectStmtOpts) @@ -19608,7 +19715,7 @@ yynewstate: parser.yyVAL.item = opts } - case 1801: + case 1810: { hints, warns := parser.parseHint(yyS[yypt-0].ident) for _, w := range warns { @@ -19617,31 +19724,31 @@ yynewstate: } parser.yyVAL.item = hints } - case 1802: + case 1811: { parser.yyVAL.item = nil } - case 1804: + case 1813: { parser.yyVAL.item = true } - case 1805: + case 1814: { parser.yyVAL.item = false } - case 1806: + case 1815: { parser.yyVAL.item = &ast.FieldList{Fields: yyS[yypt-0].item.([]*ast.SelectField)} } - case 1807: + case 1816: { parser.yyVAL.item = nil } - case 1809: + case 1818: { parser.yyVAL.item = nil } - case 1810: + case 1819: { x := &ast.SelectIntoOption{ Tp: ast.SelectIntoOutfile, @@ -19656,7 +19763,7 @@ yynewstate: parser.yyVAL.item = x } - case 1811: + case 1820: { rs := yyS[yypt-1].statement.(*ast.SelectStmt) endOffset := parser.endOffset(&yyS[yypt]) @@ -19666,14 +19773,14 @@ yynewstate: rs.SetText(parser.lexer.client, src[yyS[yypt-1].offset:yyS[yypt].offset]) parser.yyVAL.expr = &ast.SubqueryExpr{Query: rs} } - case 1812: + case 1821: { 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 1813: + case 1822: { switch rs := yyS[yypt-1].statement.(type) { case *ast.SelectStmt: @@ -19689,7 +19796,7 @@ yynewstate: parser.yyVAL.expr = &ast.SubqueryExpr{Query: rs} } } - case 1814: + case 1823: { subQuery := yyS[yypt-1].expr.(*ast.SubqueryExpr).Query isRecursive := true @@ -19712,32 +19819,32 @@ yynewstate: parser.yyVAL.expr = &ast.SubqueryExpr{Query: rs} } } - case 1815: + case 1824: { parser.yyVAL.item = nil } - case 1816: + case 1825: { parser.yyVAL.item = &ast.SelectLockInfo{ LockType: ast.SelectLockForUpdate, Tables: yyS[yypt-0].item.([]*ast.TableName), } } - case 1817: + case 1826: { parser.yyVAL.item = &ast.SelectLockInfo{ LockType: ast.SelectLockForShare, Tables: yyS[yypt-0].item.([]*ast.TableName), } } - case 1818: + case 1827: { parser.yyVAL.item = &ast.SelectLockInfo{ LockType: ast.SelectLockForUpdateNoWait, Tables: yyS[yypt-1].item.([]*ast.TableName), } } - case 1819: + case 1828: { parser.yyVAL.item = &ast.SelectLockInfo{ LockType: ast.SelectLockForUpdateWaitN, @@ -19745,55 +19852,55 @@ yynewstate: Tables: yyS[yypt-2].item.([]*ast.TableName), } } - case 1820: + case 1829: { parser.yyVAL.item = &ast.SelectLockInfo{ LockType: ast.SelectLockForShareNoWait, Tables: yyS[yypt-1].item.([]*ast.TableName), } } - case 1821: + case 1830: { parser.yyVAL.item = &ast.SelectLockInfo{ LockType: ast.SelectLockForUpdateSkipLocked, Tables: yyS[yypt-2].item.([]*ast.TableName), } } - case 1822: + case 1831: { parser.yyVAL.item = &ast.SelectLockInfo{ LockType: ast.SelectLockForShareSkipLocked, Tables: yyS[yypt-2].item.([]*ast.TableName), } } - case 1823: + case 1832: { parser.yyVAL.item = &ast.SelectLockInfo{ LockType: ast.SelectLockForShare, Tables: []*ast.TableName{}, } } - case 1824: + case 1833: { parser.yyVAL.item = []*ast.TableName{} } - case 1825: + case 1834: { parser.yyVAL.item = yyS[yypt-0].item.([]*ast.TableName) } - case 1828: + case 1837: { setOpr := yyS[yypt-0].statement.(*ast.SetOprStmt) setOpr.With = yyS[yypt-1].item.(*ast.WithClause) parser.yyVAL.statement = setOpr } - case 1829: + case 1838: { setOpr := yyS[yypt-0].statement.(*ast.SetOprStmt) setOpr.With = yyS[yypt-1].item.(*ast.WithClause) parser.yyVAL.statement = setOpr } - case 1830: + case 1839: { setOprList1 := yyS[yypt-2].item.([]ast.Node) if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { @@ -19810,7 +19917,7 @@ yynewstate: setOpr.SelectList.Selects = append(setOpr.SelectList.Selects, st) parser.yyVAL.statement = setOpr } - case 1831: + case 1840: { setOprList1 := yyS[yypt-2].item.([]ast.Node) if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { @@ -19833,7 +19940,7 @@ yynewstate: setOpr := &ast.SetOprStmt{SelectList: &ast.SetOprSelectList{Selects: setOprList}} parser.yyVAL.statement = setOpr } - case 1832: + case 1841: { setOprList1 := yyS[yypt-3].item.([]ast.Node) if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { @@ -19857,7 +19964,7 @@ yynewstate: setOpr.OrderBy = yyS[yypt-0].item.(*ast.OrderByClause) parser.yyVAL.statement = setOpr } - case 1833: + case 1842: { setOprList1 := yyS[yypt-3].item.([]ast.Node) if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { @@ -19881,7 +19988,7 @@ yynewstate: setOpr.Limit = yyS[yypt-0].item.(*ast.Limit) parser.yyVAL.statement = setOpr } - case 1834: + case 1843: { setOprList1 := yyS[yypt-4].item.([]ast.Node) if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { @@ -19906,7 +20013,7 @@ yynewstate: setOpr.Limit = yyS[yypt-0].item.(*ast.Limit) parser.yyVAL.statement = setOpr } - case 1835: + case 1844: { var setOprList []ast.Node var with *ast.WithClause @@ -19922,7 +20029,7 @@ yynewstate: setOpr.OrderBy = yyS[yypt-0].item.(*ast.OrderByClause) parser.yyVAL.statement = setOpr } - case 1836: + case 1845: { var setOprList []ast.Node var with *ast.WithClause @@ -19938,7 +20045,7 @@ yynewstate: setOpr.Limit = yyS[yypt-0].item.(*ast.Limit) parser.yyVAL.statement = setOpr } - case 1837: + case 1846: { var setOprList []ast.Node var with *ast.WithClause @@ -19955,7 +20062,7 @@ yynewstate: setOpr.Limit = yyS[yypt-0].item.(*ast.Limit) parser.yyVAL.statement = setOpr } - case 1839: + case 1848: { setOprList1 := yyS[yypt-2].item.([]ast.Node) setOprList2 := yyS[yypt-0].item.([]ast.Node) @@ -19971,11 +20078,11 @@ yynewstate: } parser.yyVAL.item = append(setOprList1, setOprList2...) } - case 1840: + case 1849: { parser.yyVAL.item = []ast.Node{yyS[yypt-0].statement.(*ast.SelectStmt)} } - case 1841: + case 1850: { var setOprList []ast.Node switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -19986,7 +20093,7 @@ yynewstate: } parser.yyVAL.item = setOprList } - case 1842: + case 1851: { var tp ast.SetOprType tp = ast.Union @@ -19995,7 +20102,7 @@ yynewstate: } parser.yyVAL.item = &tp } - case 1843: + case 1852: { var tp ast.SetOprType tp = ast.Except @@ -20004,7 +20111,7 @@ yynewstate: } parser.yyVAL.item = &tp } - case 1844: + case 1853: { var tp ast.SetOprType tp = ast.Intersect @@ -20013,7 +20120,7 @@ yynewstate: } parser.yyVAL.item = &tp } - case 1846: + case 1855: { parser.yyVAL.statement = &ast.ChangeStmt{ NodeType: ast.PumpType, @@ -20021,7 +20128,7 @@ yynewstate: NodeID: yyS[yypt-0].ident, } } - case 1847: + case 1856: { parser.yyVAL.statement = &ast.ChangeStmt{ NodeType: ast.DrainerType, @@ -20029,19 +20136,19 @@ yynewstate: NodeID: yyS[yypt-0].ident, } } - case 1848: + case 1857: { parser.yyVAL.statement = &ast.SetStmt{Variables: yyS[yypt-0].item.([]*ast.VariableAssignment)} } - case 1849: + case 1858: { parser.yyVAL.statement = &ast.SetPwdStmt{Password: yyS[yypt-0].ident} } - case 1850: + case 1859: { parser.yyVAL.statement = &ast.SetPwdStmt{User: yyS[yypt-2].item.(*auth.UserIdentity), Password: yyS[yypt-0].ident} } - case 1851: + case 1860: { vars := yyS[yypt-0].item.([]*ast.VariableAssignment) for _, v := range vars { @@ -20049,11 +20156,11 @@ yynewstate: } parser.yyVAL.statement = &ast.SetStmt{Variables: vars} } - case 1852: + case 1861: { parser.yyVAL.statement = &ast.SetStmt{Variables: yyS[yypt-0].item.([]*ast.VariableAssignment)} } - case 1853: + case 1862: { assigns := yyS[yypt-0].item.([]*ast.VariableAssignment) for i := 0; i < len(assigns); i++ { @@ -20064,27 +20171,27 @@ yynewstate: } parser.yyVAL.statement = &ast.SetStmt{Variables: assigns} } - case 1854: + case 1863: { parser.yyVAL.statement = &ast.SetConfigStmt{Type: strings.ToLower(yyS[yypt-3].ident), Name: yyS[yypt-2].ident, Value: yyS[yypt-0].expr} } - case 1855: + case 1864: { parser.yyVAL.statement = &ast.SetConfigStmt{Instance: yyS[yypt-3].ident, Name: yyS[yypt-2].ident, Value: yyS[yypt-0].expr} } - case 1856: + case 1865: { parser.yyVAL.statement = &ast.SetSessionStatesStmt{SessionStates: yyS[yypt-0].ident} } - case 1857: + case 1866: { parser.yyVAL.statement = &ast.SetResourceGroupStmt{Name: model.NewCIStr(yyS[yypt-0].ident)} } - case 1858: + case 1867: { parser.yyVAL.statement = yyS[yypt-0].item.(*ast.SetRoleStmt) } - case 1859: + case 1868: { tmp := yyS[yypt-2].item.(*ast.SetRoleStmt) parser.yyVAL.statement = &ast.SetDefaultRoleStmt{ @@ -20093,27 +20200,27 @@ yynewstate: UserList: yyS[yypt-0].item.([]*auth.UserIdentity), } } - case 1860: + case 1869: { parser.yyVAL.item = &ast.SetRoleStmt{SetRoleOpt: ast.SetRoleNone, RoleList: nil} } - case 1861: + case 1870: { parser.yyVAL.item = &ast.SetRoleStmt{SetRoleOpt: ast.SetRoleAll, RoleList: nil} } - case 1862: + case 1871: { parser.yyVAL.item = &ast.SetRoleStmt{SetRoleOpt: ast.SetRoleRegular, RoleList: yyS[yypt-0].item.([]*auth.RoleIdentity)} } - case 1863: + case 1872: { parser.yyVAL.item = &ast.SetRoleStmt{SetRoleOpt: ast.SetRoleAllExcept, RoleList: yyS[yypt-0].item.([]*auth.RoleIdentity)} } - case 1865: + case 1874: { parser.yyVAL.item = &ast.SetRoleStmt{SetRoleOpt: ast.SetRoleDefault, RoleList: nil} } - case 1866: + case 1875: { if yyS[yypt-0].item != nil { parser.yyVAL.item = yyS[yypt-0].item @@ -20121,7 +20228,7 @@ yynewstate: parser.yyVAL.item = []*ast.VariableAssignment{} } } - case 1867: + case 1876: { if yyS[yypt-0].item != nil { varAssigns := yyS[yypt-0].item.([]*ast.VariableAssignment) @@ -20130,28 +20237,28 @@ yynewstate: parser.yyVAL.item = yyS[yypt-2].item } } - case 1868: + case 1877: { 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 1869: + case 1878: { 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 1870: + case 1879: { 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 1871: + case 1880: { varAssigns := []*ast.VariableAssignment{} asof := yyS[yypt-0].item.(*ast.AsOfClause) @@ -20160,59 +20267,59 @@ yynewstate: } parser.yyVAL.item = varAssigns } - case 1872: + case 1881: { parser.yyVAL.ident = ast.RepeatableRead } - case 1873: + case 1882: { parser.yyVAL.ident = ast.ReadCommitted } - case 1874: + case 1883: { parser.yyVAL.ident = ast.ReadUncommitted } - case 1875: + case 1884: { parser.yyVAL.ident = ast.Serializable } - case 1876: + case 1885: { parser.yyVAL.expr = ast.NewValueExpr("ON", parser.charset, parser.collation) } - case 1877: + case 1886: { parser.yyVAL.expr = ast.NewValueExpr("BINARY", parser.charset, parser.collation) } - case 1882: + case 1891: { parser.yyVAL.ident = yyS[yypt-2].ident + "." + yyS[yypt-0].ident } - case 1884: + case 1893: { parser.yyVAL.ident = yyS[yypt-2].ident + "." + yyS[yypt-0].ident } - case 1885: + case 1894: { parser.yyVAL.ident = yyS[yypt-2].ident + "-" + yyS[yypt-0].ident } - case 1886: + case 1895: { parser.yyVAL.item = &ast.VariableAssignment{Name: yyS[yypt-2].ident, Value: yyS[yypt-0].expr, IsSystem: true} } - case 1887: + case 1896: { parser.yyVAL.item = &ast.VariableAssignment{Name: yyS[yypt-2].ident, Value: yyS[yypt-0].expr, IsGlobal: true, IsSystem: true} } - case 1888: + case 1897: { parser.yyVAL.item = &ast.VariableAssignment{Name: yyS[yypt-2].ident, Value: yyS[yypt-0].expr, IsSystem: true} } - case 1889: + case 1898: { parser.yyVAL.item = &ast.VariableAssignment{Name: yyS[yypt-2].ident, Value: yyS[yypt-0].expr, IsSystem: true} } - case 1890: + case 1899: { v := strings.ToLower(yyS[yypt-2].ident) var isGlobal bool @@ -20228,27 +20335,27 @@ yynewstate: } parser.yyVAL.item = &ast.VariableAssignment{Name: v, Value: yyS[yypt-0].expr, IsGlobal: isGlobal, IsSystem: true} } - case 1891: + case 1900: { v := yyS[yypt-2].ident v = strings.TrimPrefix(v, "@") parser.yyVAL.item = &ast.VariableAssignment{Name: v, Value: yyS[yypt-0].expr} } - case 1892: + case 1901: { parser.yyVAL.item = &ast.VariableAssignment{ Name: ast.SetNames, Value: ast.NewValueExpr(yyS[yypt-0].ident, "", ""), } } - case 1893: + case 1902: { parser.yyVAL.item = &ast.VariableAssignment{ Name: ast.SetNames, Value: ast.NewValueExpr(yyS[yypt-2].ident, "", ""), } } - case 1894: + case 1903: { parser.yyVAL.item = &ast.VariableAssignment{ Name: ast.SetNames, @@ -20256,24 +20363,24 @@ yynewstate: ExtendValue: ast.NewValueExpr(yyS[yypt-0].ident, "", ""), } } - case 1895: + case 1904: { v := &ast.DefaultExpr{} parser.yyVAL.item = &ast.VariableAssignment{Name: ast.SetNames, Value: v} } - case 1896: + case 1905: { parser.yyVAL.item = &ast.VariableAssignment{Name: ast.SetCharset, Value: yyS[yypt-0].expr} } - case 1897: + case 1906: { parser.yyVAL.expr = ast.NewValueExpr(yyS[yypt-0].ident, "", "") } - case 1898: + case 1907: { parser.yyVAL.expr = &ast.DefaultExpr{} } - case 1899: + case 1908: { // Validate input charset name to keep the same behavior as parser of MySQL. cs, err := charset.GetCharsetInfo(yyS[yypt-0].ident) @@ -20285,11 +20392,11 @@ yynewstate: // to keep lower case of input for generated column restore. parser.yyVAL.ident = cs.Name } - case 1900: + case 1909: { parser.yyVAL.ident = charset.CharsetBin } - case 1901: + case 1910: { info, err := charset.GetCollationByName(yyS[yypt-0].ident) if err != nil { @@ -20298,19 +20405,19 @@ yynewstate: } parser.yyVAL.ident = info.Name } - case 1902: + case 1911: { parser.yyVAL.ident = charset.CollationBin } - case 1903: + case 1912: { parser.yyVAL.item = []*ast.VariableAssignment{yyS[yypt-0].item.(*ast.VariableAssignment)} } - case 1904: + case 1913: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.VariableAssignment), yyS[yypt-0].item.(*ast.VariableAssignment)) } - case 1907: + case 1916: { v := strings.ToLower(yyS[yypt-0].ident) var isGlobal bool @@ -20327,89 +20434,105 @@ yynewstate: } parser.yyVAL.expr = &ast.VariableExpr{Name: v, IsGlobal: isGlobal, IsSystem: true, ExplicitScope: explicitScope} } - case 1908: + case 1917: { v := yyS[yypt-0].ident v = strings.TrimPrefix(v, "@") parser.yyVAL.expr = &ast.VariableExpr{Name: v, IsGlobal: false, IsSystem: false} } - case 1909: + case 1918: { parser.yyVAL.item = &auth.UserIdentity{Username: yyS[yypt-0].ident, Hostname: "%"} } - case 1910: + case 1919: { parser.yyVAL.item = &auth.UserIdentity{Username: yyS[yypt-2].ident, Hostname: strings.ToLower(yyS[yypt-0].ident)} } - case 1911: + case 1920: { parser.yyVAL.item = &auth.UserIdentity{Username: yyS[yypt-1].ident, Hostname: strings.ToLower(strings.TrimPrefix(yyS[yypt-0].ident, "@"))} } - case 1912: + case 1921: { parser.yyVAL.item = &auth.UserIdentity{CurrentUser: true} } - case 1913: + case 1922: { parser.yyVAL.item = []*auth.UserIdentity{yyS[yypt-0].item.(*auth.UserIdentity)} } - case 1914: + case 1923: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*auth.UserIdentity), yyS[yypt-0].item.(*auth.UserIdentity)) } - case 1916: + case 1925: { parser.yyVAL.ident = yyS[yypt-1].ident } - case 1920: + case 1929: { parser.yyVAL.item = &auth.RoleIdentity{Username: yyS[yypt-2].ident, Hostname: strings.ToLower(yyS[yypt-0].ident)} } - case 1921: + case 1930: { parser.yyVAL.item = &auth.RoleIdentity{Username: yyS[yypt-1].ident, Hostname: strings.ToLower(strings.TrimPrefix(yyS[yypt-0].ident, "@"))} } - case 1922: + case 1931: { parser.yyVAL.item = &auth.RoleIdentity{Username: yyS[yypt-0].ident, Hostname: "%"} } - case 1923: + case 1932: { parser.yyVAL.item = yyS[yypt-0].item } - case 1924: + case 1933: { parser.yyVAL.item = &auth.RoleIdentity{Username: yyS[yypt-0].ident, Hostname: "%"} } - case 1925: + case 1934: { parser.yyVAL.item = yyS[yypt-0].item } - case 1926: + case 1935: { parser.yyVAL.item = []*auth.RoleIdentity{yyS[yypt-0].item.(*auth.RoleIdentity)} } - case 1927: + case 1936: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*auth.RoleIdentity), yyS[yypt-0].item.(*auth.RoleIdentity)) } - case 1928: + case 1937: { parser.yyVAL.item = &ast.LimitSimple{Offset: 0, Count: yyS[yypt-0].item.(uint64)} } - case 1929: + case 1938: { parser.yyVAL.item = &ast.LimitSimple{Offset: yyS[yypt-2].item.(uint64), Count: yyS[yypt-0].item.(uint64)} } - case 1930: + case 1939: { parser.yyVAL.item = &ast.LimitSimple{Offset: yyS[yypt-0].item.(uint64), Count: yyS[yypt-2].item.(uint64)} } - case 1931: + case 1940: + { + parser.yyVAL.item = ast.BDRRolePrimary + } + case 1941: + { + parser.yyVAL.item = ast.BDRRoleSecondary + } + case 1942: + { + parser.yyVAL.item = ast.BDRRoleLocalOnly + } + case 1943: + { + parser.yyVAL.item = ast.BDRRoleNone + } + case 1944: { parser.yyVAL.statement = &ast.AdminStmt{Tp: ast.AdminShowDDL} } - case 1932: + case 1945: { stmt := &ast.AdminStmt{Tp: ast.AdminShowDDLJobs} if yyS[yypt-0].item != nil { @@ -20417,7 +20540,7 @@ yynewstate: } parser.yyVAL.statement = stmt } - case 1933: + case 1946: { stmt := &ast.AdminStmt{ Tp: ast.AdminShowDDLJobs, @@ -20428,21 +20551,21 @@ yynewstate: } parser.yyVAL.statement = stmt } - case 1934: + case 1947: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminShowNextRowID, Tables: []*ast.TableName{yyS[yypt-1].item.(*ast.TableName)}, } } - case 1935: + case 1948: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminCheckTable, Tables: yyS[yypt-0].item.([]*ast.TableName), } } - case 1936: + case 1949: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminCheckIndex, @@ -20450,7 +20573,7 @@ yynewstate: Index: string(yyS[yypt-0].ident), } } - case 1937: + case 1950: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminRecoverIndex, @@ -20458,7 +20581,7 @@ yynewstate: Index: string(yyS[yypt-0].ident), } } - case 1938: + case 1951: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminCleanupIndex, @@ -20466,7 +20589,7 @@ yynewstate: Index: string(yyS[yypt-0].ident), } } - case 1939: + case 1952: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminCheckIndexRange, @@ -20475,42 +20598,42 @@ yynewstate: HandleRanges: yyS[yypt-0].item.([]ast.HandleRange), } } - case 1940: + case 1953: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminChecksumTable, Tables: yyS[yypt-0].item.([]*ast.TableName), } } - case 1941: + case 1954: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminCancelDDLJobs, JobIDs: yyS[yypt-0].item.([]int64), } } - case 1942: + case 1955: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminPauseDDLJobs, JobIDs: yyS[yypt-0].item.([]int64), } } - case 1943: + case 1956: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminResumeDDLJobs, JobIDs: yyS[yypt-0].item.([]int64), } } - case 1944: + case 1957: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminShowDDLJobQueries, JobIDs: yyS[yypt-0].item.([]int64), } } - case 1945: + case 1958: { ret := &ast.AdminStmt{ Tp: ast.AdminShowDDLJobQueriesWithRange, @@ -20519,115 +20642,128 @@ yynewstate: ret.LimitSimple.Offset = yyS[yypt-0].item.(*ast.LimitSimple).Offset parser.yyVAL.statement = ret } - case 1946: + case 1959: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminShowSlow, ShowSlow: yyS[yypt-0].item.(*ast.ShowSlow), } } - case 1947: + case 1960: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminReloadExprPushdownBlacklist, } } - case 1948: + case 1961: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminReloadOptRuleBlacklist, } } - case 1949: + case 1962: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminPluginEnable, Plugins: yyS[yypt-0].item.([]string), } } - case 1950: + case 1963: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminPluginDisable, Plugins: yyS[yypt-0].item.([]string), } } - case 1951: + case 1964: { parser.yyVAL.statement = &ast.CleanupTableLockStmt{ Tables: yyS[yypt-0].item.([]*ast.TableName), } } - case 1952: + case 1965: { parser.yyVAL.statement = &ast.RepairTableStmt{ Table: yyS[yypt-1].item.(*ast.TableName), CreateStmt: yyS[yypt-0].statement.(*ast.CreateTableStmt), } } - case 1953: + case 1966: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminFlushBindings, } } - case 1954: + case 1967: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminCaptureBindings, } } - case 1955: + case 1968: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminEvolveBindings, } } - case 1956: + case 1969: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminReloadBindings, } } - case 1957: + case 1970: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminReloadStatistics, } } - case 1958: + case 1971: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminReloadStatistics, } } - case 1959: + case 1972: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminShowTelemetry, } } - case 1960: + case 1973: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminResetTelemetryID, } } - case 1961: + case 1974: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminFlushPlanCache, StatementScope: yyS[yypt-1].item.(ast.StatementScope), } } - case 1962: + case 1975: + { + parser.yyVAL.statement = &ast.AdminStmt{ + Tp: ast.AdminSetBDRRole, + BDRRole: yyS[yypt-0].item.(ast.BDRRole), + } + } + case 1976: + { + parser.yyVAL.statement = &ast.AdminStmt{ + Tp: ast.AdminShowBDRRole, + } + } + case 1977: { parser.yyVAL.item = &ast.ShowSlow{ Tp: ast.ShowSlowRecent, Count: getUint64FromNUM(yyS[yypt-0].item), } } - case 1963: + case 1978: { parser.yyVAL.item = &ast.ShowSlow{ Tp: ast.ShowSlowTop, @@ -20635,7 +20771,7 @@ yynewstate: Count: getUint64FromNUM(yyS[yypt-0].item), } } - case 1964: + case 1979: { parser.yyVAL.item = &ast.ShowSlow{ Tp: ast.ShowSlowTop, @@ -20643,7 +20779,7 @@ yynewstate: Count: getUint64FromNUM(yyS[yypt-0].item), } } - case 1965: + case 1980: { parser.yyVAL.item = &ast.ShowSlow{ Tp: ast.ShowSlowTop, @@ -20651,27 +20787,27 @@ yynewstate: Count: getUint64FromNUM(yyS[yypt-0].item), } } - case 1966: + case 1981: { parser.yyVAL.item = []ast.HandleRange{yyS[yypt-0].item.(ast.HandleRange)} } - case 1967: + case 1982: { parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.HandleRange), yyS[yypt-0].item.(ast.HandleRange)) } - case 1968: + case 1983: { parser.yyVAL.item = ast.HandleRange{Begin: yyS[yypt-3].item.(int64), End: yyS[yypt-1].item.(int64)} } - case 1969: + case 1984: { parser.yyVAL.item = []int64{yyS[yypt-0].item.(int64)} } - case 1970: + case 1985: { parser.yyVAL.item = append(yyS[yypt-2].item.([]int64), yyS[yypt-0].item.(int64)) } - case 1971: + case 1986: { stmt := yyS[yypt-1].item.(*ast.ShowStmt) if yyS[yypt-0].item != nil { @@ -20683,21 +20819,21 @@ yynewstate: } parser.yyVAL.statement = stmt } - case 1972: + case 1987: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowCreateTable, Table: yyS[yypt-0].item.(*ast.TableName), } } - case 1973: + case 1988: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowCreateView, Table: yyS[yypt-0].item.(*ast.TableName), } } - case 1974: + case 1989: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowCreateDatabase, @@ -20705,28 +20841,28 @@ yynewstate: DBName: yyS[yypt-0].ident, } } - case 1975: + case 1990: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowCreateSequence, Table: yyS[yypt-0].item.(*ast.TableName), } } - case 1976: + case 1991: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowCreatePlacementPolicy, DBName: yyS[yypt-0].ident, } } - case 1977: + case 1992: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowCreateResourceGroup, ResourceGroupName: yyS[yypt-0].ident, } } - case 1978: + case 1993: { // See https://dev.mysql.com/doc/refman/5.7/en/show-create-user.html parser.yyVAL.statement = &ast.ShowStmt{ @@ -20734,7 +20870,7 @@ yynewstate: User: yyS[yypt-0].item.(*auth.UserIdentity), } } - case 1979: + case 1994: { stmt := &ast.ShowStmt{ Tp: ast.ShowRegions, @@ -20746,14 +20882,14 @@ yynewstate: } parser.yyVAL.statement = stmt } - case 1980: + case 1995: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowTableNextRowId, Table: yyS[yypt-1].item.(*ast.TableName), } } - case 1981: + case 1996: { stmt := &ast.ShowStmt{ Tp: ast.ShowRegions, @@ -20766,12 +20902,12 @@ yynewstate: } parser.yyVAL.statement = stmt } - case 1982: + case 1997: { // See https://dev.mysql.com/doc/refman/5.7/en/show-grants.html parser.yyVAL.statement = &ast.ShowStmt{Tp: ast.ShowGrants} } - case 1983: + case 1998: { // See https://dev.mysql.com/doc/refman/5.7/en/show-grants.html if yyS[yypt-0].item != nil { @@ -20788,26 +20924,32 @@ yynewstate: } } } - case 1984: + case 1999: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowMasterStatus, } } - case 1985: + case 2000: + { + parser.yyVAL.statement = &ast.ShowStmt{ + Tp: ast.ShowBinlogStatus, + } + } + case 2001: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowProcessList, Full: yyS[yypt-1].item.(bool), } } - case 1986: + case 2002: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowProfiles, } } - case 1987: + case 2003: { v := &ast.ShowStmt{ Tp: ast.ShowProfile, @@ -20823,23 +20965,23 @@ yynewstate: } parser.yyVAL.statement = v } - case 1988: + case 2004: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowPrivileges, } } - case 1989: + case 2005: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowBuiltins, } } - case 1990: + case 2006: { parser.yyVAL.statement = yyS[yypt-0].item.(*ast.ShowStmt) } - case 1991: + case 2007: { v := yyS[yypt-0].item.(int64) parser.yyVAL.statement = &ast.ShowStmt{ @@ -20847,28 +20989,28 @@ yynewstate: ImportJobID: &v, } } - case 1992: + case 2008: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowCreateProcedure, Procedure: yyS[yypt-0].item.(*ast.TableName), } } - case 1993: + case 2009: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowPlacementForDatabase, DBName: yyS[yypt-0].ident, } } - case 1994: + case 2010: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowPlacementForTable, Table: yyS[yypt-0].item.(*ast.TableName), } } - case 1995: + case 2011: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowPlacementForPartition, @@ -20876,90 +21018,90 @@ yynewstate: Partition: model.NewCIStr(yyS[yypt-0].ident), } } - case 1996: + case 2012: { parser.yyVAL.item = nil } - case 1998: + case 2014: { parser.yyVAL.item = []int{yyS[yypt-0].item.(int)} } - case 1999: + case 2015: { l := yyS[yypt-2].item.([]int) l = append(l, yyS[yypt-0].item.(int)) parser.yyVAL.item = l } - case 2000: + case 2016: { parser.yyVAL.item = ast.ProfileTypeCPU } - case 2001: + case 2017: { parser.yyVAL.item = ast.ProfileTypeMemory } - case 2002: + case 2018: { parser.yyVAL.item = ast.ProfileTypeBlockIo } - case 2003: + case 2019: { parser.yyVAL.item = ast.ProfileTypeContextSwitch } - case 2004: + case 2020: { parser.yyVAL.item = ast.ProfileTypePageFaults } - case 2005: + case 2021: { parser.yyVAL.item = ast.ProfileTypeIpc } - case 2006: + case 2022: { parser.yyVAL.item = ast.ProfileTypeSwaps } - case 2007: + case 2023: { parser.yyVAL.item = ast.ProfileTypeSource } - case 2008: + case 2024: { parser.yyVAL.item = ast.ProfileTypeAll } - case 2009: + case 2025: { parser.yyVAL.item = nil } - case 2010: + case 2026: { v := yyS[yypt-0].item.(int64) parser.yyVAL.item = &v } - case 2011: + case 2027: { parser.yyVAL.item = nil } - case 2012: + case 2028: { parser.yyVAL.item = yyS[yypt-0].item.([]*auth.RoleIdentity) } - case 2018: + case 2034: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowEngines} } - case 2019: + case 2035: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowDatabases} } - case 2020: + case 2036: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowConfig} } - case 2021: + case 2037: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowCharset} } - case 2022: + case 2038: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowTables, @@ -20967,28 +21109,28 @@ yynewstate: Full: yyS[yypt-2].item.(bool), } } - case 2023: + case 2039: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowOpenTables, DBName: yyS[yypt-0].ident, } } - case 2024: + case 2040: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowTableStatus, DBName: yyS[yypt-0].ident, } } - case 2025: + case 2041: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowIndex, Table: yyS[yypt-0].item.(*ast.TableName), } } - case 2026: + case 2042: { show := &ast.ShowStmt{ Tp: ast.ShowIndex, @@ -20996,7 +21138,7 @@ yynewstate: } parser.yyVAL.item = show } - case 2027: + case 2043: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowColumns, @@ -21005,7 +21147,7 @@ yynewstate: Full: yyS[yypt-3].item.(bool), } } - case 2028: + case 2044: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowColumns, @@ -21015,81 +21157,81 @@ yynewstate: Extended: true, } } - case 2029: + case 2045: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowWarnings, CountWarningsOrErrors: true} } - case 2030: + case 2046: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowWarnings} } - case 2031: + case 2047: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowErrors, CountWarningsOrErrors: true} } - case 2032: + case 2048: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowErrors} } - case 2033: + case 2049: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowVariables, GlobalScope: yyS[yypt-1].item.(bool), } } - case 2034: + case 2050: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowStatus, GlobalScope: yyS[yypt-1].item.(bool), } } - case 2035: + case 2051: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowBindings, GlobalScope: yyS[yypt-1].item.(bool), } } - case 2036: + case 2052: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowCollation, } } - case 2037: + case 2053: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowTriggers, DBName: yyS[yypt-0].ident, } } - case 2038: + case 2054: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowBindingCacheStatus, } } - case 2039: + case 2055: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowProcedureStatus, } } - case 2040: + case 2056: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowPumpStatus, } } - case 2041: + case 2057: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowDrainerStatus, } } - case 2042: + case 2058: { // 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 @@ -21099,88 +21241,88 @@ yynewstate: Tp: ast.ShowFunctionStatus, } } - case 2043: + case 2059: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowEvents, DBName: yyS[yypt-0].ident, } } - case 2044: + case 2060: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowPlugins, } } - case 2045: + case 2061: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowSessionStates} } - case 2046: + case 2062: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsExtended} } - case 2047: + case 2063: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsMeta, Table: &ast.TableName{Name: model.NewCIStr("STATS_META"), Schema: model.NewCIStr(mysql.SystemDB)}} } - case 2048: + case 2064: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsHistograms, Table: &ast.TableName{Name: model.NewCIStr("STATS_HISTOGRAMS"), Schema: model.NewCIStr(mysql.SystemDB)}} } - case 2049: + case 2065: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsTopN} } - case 2050: + case 2066: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsBuckets, Table: &ast.TableName{Name: model.NewCIStr("STATS_BUCKETS"), Schema: model.NewCIStr(mysql.SystemDB)}} } - case 2051: + case 2067: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsHealthy} } - case 2052: + case 2068: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsLocked, Table: &ast.TableName{Name: model.NewCIStr("STATS_TABLE_LOCKED"), Schema: model.NewCIStr(mysql.SystemDB)}} } - case 2053: + case 2069: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowHistogramsInFlight} } - case 2054: + case 2070: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowColumnStatsUsage} } - case 2055: + case 2071: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowAnalyzeStatus} } - case 2056: + case 2072: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowBackups} } - case 2057: + case 2073: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowRestores} } - case 2058: + case 2074: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowPlacement} } - case 2059: + case 2075: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowPlacementLabels} } - case 2060: + case 2076: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowImportJobs} } - case 2061: + case 2077: { parser.yyVAL.item = nil } - case 2062: + case 2078: { parser.yyVAL.item = &ast.PatternLikeOrIlikeExpr{ Pattern: yyS[yypt-0].expr, @@ -21188,105 +21330,105 @@ yynewstate: IsLike: true, } } - case 2063: + case 2079: { parser.yyVAL.item = yyS[yypt-0].expr } - case 2064: + case 2080: { parser.yyVAL.item = false } - case 2065: + case 2081: { parser.yyVAL.item = true } - case 2066: + case 2082: { parser.yyVAL.item = false } - case 2067: + case 2083: { parser.yyVAL.item = ast.StatementScopeSession } - case 2068: + case 2084: { parser.yyVAL.item = ast.StatementScopeGlobal } - case 2069: + case 2085: { parser.yyVAL.item = ast.StatementScopeInstance } - case 2070: + case 2086: { parser.yyVAL.item = ast.StatementScopeSession } - case 2071: + case 2087: { parser.yyVAL.item = false } - case 2072: + case 2088: { parser.yyVAL.item = true } - case 2073: + case 2089: { parser.yyVAL.ident = "" } - case 2074: + case 2090: { parser.yyVAL.ident = yyS[yypt-0].ident } - case 2075: + case 2091: { parser.yyVAL.item = yyS[yypt-0].item.(*ast.TableName) } - case 2076: + case 2092: { tmp := yyS[yypt-0].item.(*ast.FlushStmt) tmp.NoWriteToBinLog = yyS[yypt-1].item.(bool) parser.yyVAL.statement = tmp } - case 2077: + case 2093: { parser.yyVAL.item = []string{yyS[yypt-0].ident} } - case 2078: + case 2094: { parser.yyVAL.item = append(yyS[yypt-2].item.([]string), yyS[yypt-0].ident) } - case 2079: + case 2095: { parser.yyVAL.item = &ast.FlushStmt{ Tp: ast.FlushPrivileges, } } - case 2080: + case 2096: { parser.yyVAL.item = &ast.FlushStmt{ Tp: ast.FlushStatus, } } - case 2081: + case 2097: { parser.yyVAL.item = &ast.FlushStmt{ Tp: ast.FlushTiDBPlugin, Plugins: yyS[yypt-0].item.([]string), } } - case 2082: + case 2098: { parser.yyVAL.item = &ast.FlushStmt{ Tp: ast.FlushHosts, } } - case 2083: + case 2099: { parser.yyVAL.item = &ast.FlushStmt{ Tp: ast.FlushLogs, LogType: yyS[yypt-1].item.(ast.LogType), } } - case 2084: + case 2100: { parser.yyVAL.item = &ast.FlushStmt{ Tp: ast.FlushTables, @@ -21294,69 +21436,69 @@ yynewstate: ReadLock: yyS[yypt-0].item.(bool), } } - case 2085: + case 2101: { parser.yyVAL.item = &ast.FlushStmt{ Tp: ast.FlushClientErrorsSummary, } } - case 2086: + case 2102: { parser.yyVAL.item = ast.LogTypeDefault } - case 2087: + case 2103: { parser.yyVAL.item = ast.LogTypeBinary } - case 2088: + case 2104: { parser.yyVAL.item = ast.LogTypeEngine } - case 2089: + case 2105: { parser.yyVAL.item = ast.LogTypeError } - case 2090: + case 2106: { parser.yyVAL.item = ast.LogTypeGeneral } - case 2091: + case 2107: { parser.yyVAL.item = ast.LogTypeSlow } - case 2092: + case 2108: { parser.yyVAL.item = false } - case 2093: + case 2109: { parser.yyVAL.item = true } - case 2094: + case 2110: { parser.yyVAL.item = true } - case 2095: + case 2111: { parser.yyVAL.item = []*ast.TableName{} } - case 2097: + case 2113: { parser.yyVAL.item = []*ast.TableName{} } - case 2098: + case 2114: { parser.yyVAL.item = yyS[yypt-0].item } - case 2099: + case 2115: { parser.yyVAL.item = false } - case 2100: + case 2116: { parser.yyVAL.item = true } - case 2180: + case 2196: { var sel ast.StmtNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -21369,7 +21511,7 @@ yynewstate: } parser.yyVAL.statement = sel } - case 2208: + case 2224: { var sel ast.StmtNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -21382,7 +21524,7 @@ yynewstate: } parser.yyVAL.statement = sel } - case 2224: + case 2240: { var sel ast.StmtNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -21395,7 +21537,7 @@ yynewstate: } parser.yyVAL.statement = sel } - case 2226: + case 2242: { if yyS[yypt-0].statement != nil { s := yyS[yypt-0].statement @@ -21405,7 +21547,7 @@ yynewstate: parser.result = append(parser.result, s) } } - case 2227: + case 2243: { if yyS[yypt-0].statement != nil { s := yyS[yypt-0].statement @@ -21415,7 +21557,7 @@ yynewstate: parser.result = append(parser.result, s) } } - case 2228: + case 2244: { cst := yyS[yypt-0].item.(*ast.Constraint) if yyS[yypt-1].item != nil { @@ -21424,7 +21566,7 @@ yynewstate: } parser.yyVAL.item = cst } - case 2233: + case 2249: { if yyS[yypt-0].item != nil { parser.yyVAL.item = []interface{}{yyS[yypt-0].item.(interface{})} @@ -21432,7 +21574,7 @@ yynewstate: parser.yyVAL.item = []interface{}{} } } - case 2234: + case 2250: { if yyS[yypt-0].item != nil { parser.yyVAL.item = append(yyS[yypt-2].item.([]interface{}), yyS[yypt-0].item) @@ -21440,7 +21582,7 @@ yynewstate: parser.yyVAL.item = yyS[yypt-2].item } } - case 2235: + case 2251: { var columnDefs []*ast.ColumnDef var constraints []*ast.Constraint @@ -21449,7 +21591,7 @@ yynewstate: Constraints: constraints, } } - case 2236: + case 2252: { tes := yyS[yypt-1].item.([]interface{}) var columnDefs []*ast.ColumnDef @@ -21467,69 +21609,69 @@ yynewstate: Constraints: constraints, } } - case 2238: + case 2254: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionCharset, StrValue: yyS[yypt-0].ident, UintValue: ast.TableOptionCharsetWithoutConvertTo} } - case 2239: + case 2255: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionCollate, StrValue: yyS[yypt-0].ident, UintValue: ast.TableOptionCharsetWithoutConvertTo} } - case 2240: + case 2256: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionAutoIncrement, UintValue: yyS[yypt-0].item.(uint64), BoolValue: yyS[yypt-3].item.(bool)} } - case 2241: + case 2257: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionAutoIdCache, UintValue: yyS[yypt-0].item.(uint64)} } - case 2242: + case 2258: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionAutoRandomBase, UintValue: yyS[yypt-0].item.(uint64), BoolValue: yyS[yypt-3].item.(bool)} } - case 2243: + case 2259: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionAvgRowLength, UintValue: yyS[yypt-0].item.(uint64)} } - case 2244: + case 2260: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionConnection, StrValue: yyS[yypt-0].ident} } - case 2245: + case 2261: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionCheckSum, UintValue: yyS[yypt-0].item.(uint64)} } - case 2246: + case 2262: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionTableCheckSum, UintValue: yyS[yypt-0].item.(uint64)} } - case 2247: + case 2263: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionPassword, StrValue: yyS[yypt-0].ident} } - case 2248: + case 2264: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionCompression, StrValue: yyS[yypt-0].ident} } - case 2249: + case 2265: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionKeyBlockSize, UintValue: yyS[yypt-0].item.(uint64)} } - case 2250: + case 2266: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionDelayKeyWrite, UintValue: yyS[yypt-0].item.(uint64)} } - case 2251: + case 2267: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionRowFormat, UintValue: yyS[yypt-0].item.(uint64)} } - case 2252: + case 2268: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionStatsPersistent} } - case 2253: + case 2269: { n := yyS[yypt-0].item.(uint64) if n != 0 && n != 1 { @@ -21540,13 +21682,13 @@ yynewstate: yylex.AppendError(yylex.Errorf("The STATS_AUTO_RECALC is parsed but ignored by all storage engines.")) parser.lastErrorAsWarn() } - case 2254: + case 2270: { 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 2255: + case 2271: { // Parse it but will ignore it. // In MySQL, STATS_SAMPLE_PAGES=N(Where 0 1 { @@ -23420,7 +23576,7 @@ yynewstate: OptEnclosed: true, } } - case 2600: + case 2617: { str := yyS[yypt-0].ident if str != "\\" && len(str) > 1 { @@ -23432,7 +23588,7 @@ yynewstate: Value: str, } } - case 2601: + case 2618: { str := yyS[yypt-0].ident if str != "\\" && len(str) > 1 { @@ -23444,14 +23600,14 @@ yynewstate: Value: str, } } - case 2602: + case 2619: { parser.yyVAL.item = &ast.FieldItem{ Type: ast.DefinedNullBy, Value: yyS[yypt-0].item.(*ast.TextString).Value, } } - case 2603: + case 2620: { parser.yyVAL.item = &ast.FieldItem{ Type: ast.DefinedNullBy, @@ -23459,89 +23615,89 @@ yynewstate: OptEnclosed: true, } } - case 2605: + case 2622: { parser.yyVAL.ident = yyS[yypt-0].item.(ast.BinaryLiteral).ToString() } - case 2606: + case 2623: { parser.yyVAL.ident = yyS[yypt-0].item.(ast.BinaryLiteral).ToString() } - case 2607: + case 2624: { parser.yyVAL.item = (*ast.LinesClause)(nil) } - case 2608: + case 2625: { parser.yyVAL.item = &ast.LinesClause{Starting: yyS[yypt-1].item.(*string), Terminated: yyS[yypt-0].item.(*string)} } - case 2609: + case 2626: { parser.yyVAL.item = (*string)(nil) } - case 2610: + case 2627: { s := yyS[yypt-0].ident parser.yyVAL.item = &s } - case 2611: + case 2628: { parser.yyVAL.item = (*string)(nil) } - case 2612: + case 2629: { s := yyS[yypt-0].ident parser.yyVAL.item = &s } - case 2613: + case 2630: { parser.yyVAL.item = ([]*ast.Assignment)(nil) } - case 2614: + case 2631: { parser.yyVAL.item = yyS[yypt-0].item } - case 2615: + case 2632: { l := yyS[yypt-2].item.([]*ast.Assignment) parser.yyVAL.item = append(l, yyS[yypt-0].item.(*ast.Assignment)) } - case 2616: + case 2633: { parser.yyVAL.item = []*ast.Assignment{yyS[yypt-0].item.(*ast.Assignment)} } - case 2617: + case 2634: { parser.yyVAL.item = &ast.Assignment{ Column: yyS[yypt-2].expr.(*ast.ColumnNameExpr).Name, Expr: yyS[yypt-0].expr, } } - case 2618: + case 2635: { parser.yyVAL.item = []*ast.LoadDataOpt{} } - case 2619: + case 2636: { parser.yyVAL.item = yyS[yypt-0].item.([]*ast.LoadDataOpt) } - case 2620: + case 2637: { parser.yyVAL.item = []*ast.LoadDataOpt{yyS[yypt-0].item.(*ast.LoadDataOpt)} } - case 2621: + case 2638: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.LoadDataOpt), yyS[yypt-0].item.(*ast.LoadDataOpt)) } - case 2622: + case 2639: { parser.yyVAL.item = &ast.LoadDataOpt{Name: strings.ToLower(yyS[yypt-0].ident)} } - case 2623: + case 2640: { parser.yyVAL.item = &ast.LoadDataOpt{Name: strings.ToLower(yyS[yypt-2].ident), Value: yyS[yypt-0].expr.(ast.ExprNode)} } - case 2624: + case 2641: { parser.yyVAL.statement = &ast.ImportIntoStmt{ Table: yyS[yypt-6].item.(*ast.TableName), @@ -23552,48 +23708,48 @@ yynewstate: Options: yyS[yypt-0].item.([]*ast.LoadDataOpt), } } - case 2625: + case 2642: { parser.yyVAL.statement = &ast.UnlockTablesStmt{} } - case 2626: + case 2643: { parser.yyVAL.statement = &ast.LockTablesStmt{ TableLocks: yyS[yypt-0].item.([]ast.TableLock), } } - case 2629: + case 2646: { parser.yyVAL.item = ast.TableLock{ Table: yyS[yypt-1].item.(*ast.TableName), Type: yyS[yypt-0].item.(model.TableLockType), } } - case 2630: + case 2647: { parser.yyVAL.item = model.TableLockRead } - case 2631: + case 2648: { parser.yyVAL.item = model.TableLockReadLocal } - case 2632: + case 2649: { parser.yyVAL.item = model.TableLockWrite } - case 2633: + case 2650: { parser.yyVAL.item = model.TableLockWriteLocal } - case 2634: + case 2651: { parser.yyVAL.item = []ast.TableLock{yyS[yypt-0].item.(ast.TableLock)} } - case 2635: + case 2652: { parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.TableLock), yyS[yypt-0].item.(ast.TableLock)) } - case 2636: + case 2653: { parser.yyVAL.statement = &ast.NonTransactionalDMLStmt{ DryRun: yyS[yypt-1].item.(int), @@ -23602,41 +23758,41 @@ yynewstate: DMLStmt: yyS[yypt-0].statement.(ast.ShardableDMLStmt), } } - case 2641: + case 2658: { parser.yyVAL.item = ast.NoDryRun } - case 2642: + case 2659: { parser.yyVAL.item = ast.DryRunSplitDml } - case 2643: + case 2660: { parser.yyVAL.item = ast.DryRunQuery } - case 2644: + case 2661: { parser.yyVAL.item = (*ast.ColumnName)(nil) } - case 2645: + case 2662: { parser.yyVAL.item = yyS[yypt-0].item.(*ast.ColumnName) } - case 2646: + case 2663: { parser.yyVAL.statement = &ast.KillStmt{ ConnectionID: getUint64FromNUM(yyS[yypt-0].item), TiDBExtension: yyS[yypt-1].item.(bool), } } - case 2647: + case 2664: { parser.yyVAL.statement = &ast.KillStmt{ ConnectionID: getUint64FromNUM(yyS[yypt-0].item), TiDBExtension: yyS[yypt-2].item.(bool), } } - case 2648: + case 2665: { parser.yyVAL.statement = &ast.KillStmt{ ConnectionID: getUint64FromNUM(yyS[yypt-0].item), @@ -23644,34 +23800,34 @@ yynewstate: TiDBExtension: yyS[yypt-2].item.(bool), } } - case 2649: + case 2666: { parser.yyVAL.statement = &ast.KillStmt{ TiDBExtension: yyS[yypt-1].item.(bool), Expr: yyS[yypt-0].expr, } } - case 2650: + case 2667: { parser.yyVAL.item = false } - case 2651: + case 2668: { parser.yyVAL.item = true } - case 2652: + case 2669: { parser.yyVAL.statement = &ast.LoadStatsStmt{ Path: yyS[yypt-0].ident, } } - case 2653: + case 2670: { parser.yyVAL.statement = &ast.LockStatsStmt{ Tables: yyS[yypt-0].item.([]*ast.TableName), } } - case 2654: + case 2671: { x := yyS[yypt-2].item.(*ast.TableName) x.PartitionNames = yyS[yypt-0].item.([]model.CIStr) @@ -23679,7 +23835,7 @@ yynewstate: Tables: []*ast.TableName{x}, } } - case 2655: + case 2672: { x := yyS[yypt-4].item.(*ast.TableName) x.PartitionNames = yyS[yypt-1].item.([]model.CIStr) @@ -23687,13 +23843,13 @@ yynewstate: Tables: []*ast.TableName{x}, } } - case 2656: + case 2673: { parser.yyVAL.statement = &ast.UnlockStatsStmt{ Tables: yyS[yypt-0].item.([]*ast.TableName), } } - case 2657: + case 2674: { x := yyS[yypt-2].item.(*ast.TableName) x.PartitionNames = yyS[yypt-0].item.([]model.CIStr) @@ -23701,7 +23857,7 @@ yynewstate: Tables: []*ast.TableName{x}, } } - case 2658: + case 2675: { x := yyS[yypt-4].item.(*ast.TableName) x.PartitionNames = yyS[yypt-1].item.([]model.CIStr) @@ -23709,14 +23865,14 @@ yynewstate: Tables: []*ast.TableName{x}, } } - case 2659: + case 2676: { parser.yyVAL.statement = &ast.DropPlacementPolicyStmt{ IfExists: yyS[yypt-1].item.(bool), PolicyName: model.NewCIStr(yyS[yypt-0].ident), } } - case 2660: + case 2677: { parser.yyVAL.statement = &ast.CreateResourceGroupStmt{ IfNotExists: yyS[yypt-2].item.(bool), @@ -23724,7 +23880,7 @@ yynewstate: ResourceGroupOptionList: yyS[yypt-0].item.([]*ast.ResourceGroupOption), } } - case 2661: + case 2678: { parser.yyVAL.statement = &ast.AlterResourceGroupStmt{ IfExists: yyS[yypt-2].item.(bool), @@ -23732,14 +23888,14 @@ yynewstate: ResourceGroupOptionList: yyS[yypt-0].item.([]*ast.ResourceGroupOption), } } - case 2662: + case 2679: { parser.yyVAL.statement = &ast.DropResourceGroupStmt{ IfExists: yyS[yypt-1].item.(bool), ResourceGroupName: model.NewCIStr(yyS[yypt-0].ident), } } - case 2663: + case 2680: { parser.yyVAL.statement = &ast.CreatePlacementPolicyStmt{ OrReplace: yyS[yypt-5].item.(bool), @@ -23748,7 +23904,7 @@ yynewstate: PlacementOptions: yyS[yypt-0].item.([]*ast.PlacementOption), } } - case 2664: + case 2681: { parser.yyVAL.statement = &ast.AlterPlacementPolicyStmt{ IfExists: yyS[yypt-2].item.(bool), @@ -23756,7 +23912,7 @@ yynewstate: PlacementOptions: yyS[yypt-0].item.([]*ast.PlacementOption), } } - case 2665: + case 2682: { parser.yyVAL.statement = &ast.CreateSequenceStmt{ IfNotExists: yyS[yypt-3].item.(bool), @@ -23765,87 +23921,87 @@ yynewstate: TblOptions: yyS[yypt-0].item.([]*ast.TableOption), } } - case 2666: + case 2683: { parser.yyVAL.item = []*ast.SequenceOption{} } - case 2668: + case 2685: { parser.yyVAL.item = []*ast.SequenceOption{yyS[yypt-0].item.(*ast.SequenceOption)} } - case 2669: + case 2686: { parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.SequenceOption), yyS[yypt-0].item.(*ast.SequenceOption)) } - case 2670: + case 2687: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceOptionIncrementBy, IntValue: yyS[yypt-0].item.(int64)} } - case 2671: + case 2688: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceOptionIncrementBy, IntValue: yyS[yypt-0].item.(int64)} } - case 2672: + case 2689: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceStartWith, IntValue: yyS[yypt-0].item.(int64)} } - case 2673: + case 2690: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceStartWith, IntValue: yyS[yypt-0].item.(int64)} } - case 2674: + case 2691: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceMinValue, IntValue: yyS[yypt-0].item.(int64)} } - case 2675: + case 2692: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoMinValue} } - case 2676: + case 2693: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoMinValue} } - case 2677: + case 2694: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceMaxValue, IntValue: yyS[yypt-0].item.(int64)} } - case 2678: + case 2695: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoMaxValue} } - case 2679: + case 2696: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoMaxValue} } - case 2680: + case 2697: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceCache, IntValue: yyS[yypt-0].item.(int64)} } - case 2681: + case 2698: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoCache} } - case 2682: + case 2699: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoCache} } - case 2683: + case 2700: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceCycle} } - case 2684: + case 2701: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoCycle} } - case 2685: + case 2702: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoCycle} } - case 2687: + case 2704: { parser.yyVAL.item = yyS[yypt-0].item } - case 2688: + case 2705: { unsigned_num := getUint64FromNUM(yyS[yypt-0].item) if unsigned_num > 9223372036854775808 { @@ -23858,14 +24014,14 @@ yynewstate: parser.yyVAL.item = -int64(unsigned_num) } } - case 2689: + case 2706: { parser.yyVAL.statement = &ast.DropSequenceStmt{ IfExists: yyS[yypt-1].item.(bool), Sequences: yyS[yypt-0].item.([]*ast.TableName), } } - case 2690: + case 2707: { parser.yyVAL.statement = &ast.AlterSequenceStmt{ IfExists: yyS[yypt-2].item.(bool), @@ -23873,27 +24029,27 @@ yynewstate: SeqOptions: yyS[yypt-0].item.([]*ast.SequenceOption), } } - case 2691: + case 2708: { parser.yyVAL.item = []*ast.SequenceOption{yyS[yypt-0].item.(*ast.SequenceOption)} } - case 2692: + case 2709: { parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.SequenceOption), yyS[yypt-0].item.(*ast.SequenceOption)) } - case 2694: + case 2711: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceRestart} } - case 2695: + case 2712: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceRestartWith, IntValue: yyS[yypt-0].item.(int64)} } - case 2696: + case 2713: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceRestartWith, IntValue: yyS[yypt-0].item.(int64)} } - case 2697: + case 2714: { x := &ast.IndexAdviseStmt{ Path: yyS[yypt-3].ident, @@ -23910,42 +24066,42 @@ yynewstate: } parser.yyVAL.statement = x } - case 2698: + case 2715: { parser.yyVAL.item = uint64(ast.UnspecifiedSize) } - case 2699: + case 2716: { parser.yyVAL.item = getUint64FromNUM(yyS[yypt-0].item) } - case 2700: + case 2717: { parser.yyVAL.item = nil } - case 2701: + case 2718: { parser.yyVAL.item = &ast.MaxIndexNumClause{ PerTable: yyS[yypt-1].item.(uint64), PerDB: yyS[yypt-0].item.(uint64), } } - case 2702: + case 2719: { parser.yyVAL.item = uint64(ast.UnspecifiedSize) } - case 2703: + case 2720: { parser.yyVAL.item = getUint64FromNUM(yyS[yypt-0].item) } - case 2704: + case 2721: { parser.yyVAL.item = uint64(ast.UnspecifiedSize) } - case 2705: + case 2722: { parser.yyVAL.item = getUint64FromNUM(yyS[yypt-0].item) } - case 2706: + case 2723: { // Parse it but will ignore it switch yyS[yypt-0].ident { @@ -23960,19 +24116,19 @@ yynewstate: } parser.yyVAL.ident = yyS[yypt-0].ident } - case 2707: + case 2724: { parser.yyVAL.item = append([]*ast.RowExpr{}, yyS[yypt-0].item.(*ast.RowExpr)) } - case 2708: + case 2725: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.RowExpr), yyS[yypt-0].item.(*ast.RowExpr)) } - case 2709: + case 2726: { parser.yyVAL.item = &ast.RowExpr{Values: yyS[yypt-0].item.([]ast.ExprNode)} } - case 2710: + case 2727: { x := &ast.PlanReplayerStmt{ Stmt: yyS[yypt-0].statement, @@ -23991,7 +24147,7 @@ yynewstate: parser.yyVAL.statement = x } - case 2711: + case 2728: { x := &ast.PlanReplayerStmt{ Stmt: yyS[yypt-0].statement, @@ -24010,7 +24166,7 @@ yynewstate: parser.yyVAL.statement = x } - case 2712: + case 2729: { x := &ast.PlanReplayerStmt{ Stmt: nil, @@ -24033,7 +24189,7 @@ yynewstate: parser.yyVAL.statement = x } - case 2713: + case 2730: { x := &ast.PlanReplayerStmt{ Stmt: nil, @@ -24056,7 +24212,7 @@ yynewstate: parser.yyVAL.statement = x } - case 2714: + case 2731: { x := &ast.PlanReplayerStmt{ Stmt: nil, @@ -24069,7 +24225,7 @@ yynewstate: } parser.yyVAL.statement = x } - case 2715: + case 2732: { x := &ast.PlanReplayerStmt{ Stmt: nil, @@ -24082,7 +24238,7 @@ yynewstate: } parser.yyVAL.statement = x } - case 2716: + case 2733: { x := &ast.PlanReplayerStmt{ Stmt: nil, @@ -24096,7 +24252,7 @@ yynewstate: parser.yyVAL.statement = x } - case 2717: + case 2734: { x := &ast.PlanReplayerStmt{ Stmt: nil, @@ -24111,7 +24267,7 @@ yynewstate: parser.yyVAL.statement = x } - case 2718: + case 2735: { x := &ast.PlanReplayerStmt{ Stmt: nil, @@ -24126,33 +24282,33 @@ yynewstate: parser.yyVAL.statement = x } - case 2719: + case 2736: { parser.yyVAL.item = nil } - case 2720: + case 2737: { parser.yyVAL.item = yyS[yypt-0].item.(*ast.AsOfClause) } - case 2721: + case 2738: { parser.yyVAL.item = []*ast.StoreParameter{} } - case 2722: + case 2739: { parser.yyVAL.item = yyS[yypt-0].item } - case 2723: + case 2740: { l := yyS[yypt-2].item.([]*ast.StoreParameter) l = append(l, yyS[yypt-0].item.(*ast.StoreParameter)) parser.yyVAL.item = l } - case 2724: + case 2741: { parser.yyVAL.item = []*ast.StoreParameter{yyS[yypt-0].item.(*ast.StoreParameter)} } - case 2725: + case 2742: { x := &ast.StoreParameter{ Paramstatus: yyS[yypt-2].item.(int), @@ -24161,23 +24317,23 @@ yynewstate: } parser.yyVAL.item = x } - case 2726: + case 2743: { parser.yyVAL.item = ast.MODE_IN } - case 2727: + case 2744: { parser.yyVAL.item = ast.MODE_IN } - case 2728: + case 2745: { parser.yyVAL.item = ast.MODE_OUT } - case 2729: + case 2746: { parser.yyVAL.item = ast.MODE_INOUT } - case 2732: + case 2749: { var sel ast.StmtNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -24190,7 +24346,7 @@ yynewstate: } parser.yyVAL.statement = sel } - case 2747: + case 2764: { var sel ast.StmtNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -24203,29 +24359,29 @@ yynewstate: } parser.yyVAL.statement = sel } - case 2749: + case 2766: { parser.yyVAL.statement = yyS[yypt-0].statement } - case 2750: + case 2767: { parser.yyVAL.item = []string{strings.ToLower(yyS[yypt-0].ident)} } - case 2751: + case 2768: { l := yyS[yypt-2].item.([]string) l = append(l, strings.ToLower(yyS[yypt-0].ident)) parser.yyVAL.item = l } - case 2752: + case 2769: { parser.yyVAL.item = nil } - case 2753: + case 2770: { parser.yyVAL.item = yyS[yypt-0].expr } - case 2754: + case 2771: { x := &ast.ProcedureDecl{ DeclNames: yyS[yypt-2].item.([]string), @@ -24236,7 +24392,7 @@ yynewstate: } parser.yyVAL.item = x } - case 2755: + case 2772: { name := strings.ToLower(yyS[yypt-3].ident) parser.yyVAL.item = &ast.ProcedureCursor{ @@ -24244,7 +24400,7 @@ yynewstate: Selectstring: yyS[yypt-0].statement.(ast.StmtNode), } } - case 2756: + case 2773: { parser.yyVAL.item = &ast.ProcedureErrorControl{ ControlHandle: yyS[yypt-4].item.(int), @@ -24252,66 +24408,66 @@ yynewstate: Operate: yyS[yypt-0].statement.(ast.StmtNode), } } - case 2757: + case 2774: { parser.yyVAL.item = ast.PROCEDUR_CONTINUE } - case 2758: + case 2775: { parser.yyVAL.item = ast.PROCEDUR_EXIT } - case 2759: + case 2776: { parser.yyVAL.item = []ast.ErrNode{yyS[yypt-0].statement.(ast.ErrNode)} } - case 2760: + case 2777: { l := yyS[yypt-2].item.([]ast.ErrNode) l = append(l, yyS[yypt-0].statement.(ast.ErrNode)) parser.yyVAL.item = l } - case 2761: + case 2778: { parser.yyVAL.statement = yyS[yypt-0].statement.(ast.ErrNode) } - case 2762: + case 2779: { parser.yyVAL.statement = &ast.ProcedureErrorCon{ ErrorCon: ast.PROCEDUR_SQLWARNING, } } - case 2763: + case 2780: { parser.yyVAL.statement = &ast.ProcedureErrorCon{ ErrorCon: ast.PROCEDUR_NOT_FOUND, } } - case 2764: + case 2781: { parser.yyVAL.statement = &ast.ProcedureErrorCon{ ErrorCon: ast.PROCEDUR_SQLEXCEPTION, } } - case 2765: + case 2782: { parser.yyVAL.statement = &ast.ProcedureErrorVal{ ErrorNum: getUint64FromNUM(yyS[yypt-0].item), } } - case 2766: + case 2783: { parser.yyVAL.statement = &ast.ProcedureErrorState{ CodeStatus: yyS[yypt-0].ident, } } - case 2769: + case 2786: { name := strings.ToLower(yyS[yypt-0].ident) parser.yyVAL.statement = &ast.ProcedureOpenCur{ CurName: name, } } - case 2770: + case 2787: { name := strings.ToLower(yyS[yypt-2].ident) parser.yyVAL.statement = &ast.ProcedureFetchInto{ @@ -24319,62 +24475,62 @@ yynewstate: Variables: yyS[yypt-0].item.([]string), } } - case 2771: + case 2788: { name := strings.ToLower(yyS[yypt-0].ident) parser.yyVAL.statement = &ast.ProcedureCloseCur{ CurName: name, } } - case 2775: + case 2792: { parser.yyVAL.item = []string{strings.ToLower(yyS[yypt-0].ident)} } - case 2776: + case 2793: { l := yyS[yypt-2].item.([]string) l = append(l, strings.ToLower(yyS[yypt-0].ident)) parser.yyVAL.item = l } - case 2777: + case 2794: { parser.yyVAL.item = []ast.DeclNode{} } - case 2778: + case 2795: { parser.yyVAL.item = yyS[yypt-0].item } - case 2779: + case 2796: { parser.yyVAL.item = []ast.DeclNode{yyS[yypt-1].item.(ast.DeclNode)} } - case 2780: + case 2797: { l := yyS[yypt-2].item.([]ast.DeclNode) l = append(l, yyS[yypt-1].item.(ast.DeclNode)) parser.yyVAL.item = l } - case 2781: + case 2798: { parser.yyVAL.item = []ast.StmtNode{} } - case 2782: + case 2799: { l := yyS[yypt-2].item.([]ast.StmtNode) l = append(l, yyS[yypt-1].statement.(ast.StmtNode)) parser.yyVAL.item = l } - case 2783: + case 2800: { parser.yyVAL.item = []ast.StmtNode{yyS[yypt-1].statement.(ast.StmtNode)} } - case 2784: + case 2801: { l := yyS[yypt-2].item.([]ast.StmtNode) l = append(l, yyS[yypt-1].statement.(ast.StmtNode)) parser.yyVAL.item = l } - case 2785: + case 2802: { x := &ast.ProcedureBlock{ ProcedureVars: yyS[yypt-2].item.([]ast.DeclNode), @@ -24382,13 +24538,13 @@ yynewstate: } parser.yyVAL.statement = x } - case 2786: + case 2803: { parser.yyVAL.statement = &ast.ProcedureIfInfo{ IfBody: yyS[yypt-2].statement.(*ast.ProcedureIfBlock), } } - case 2787: + case 2804: { ifBlock := &ast.ProcedureIfBlock{ IfExpr: yyS[yypt-3].expr.(ast.ExprNode), @@ -24399,73 +24555,73 @@ yynewstate: } parser.yyVAL.statement = ifBlock } - case 2788: + case 2805: { parser.yyVAL.statement = nil } - case 2789: + case 2806: { parser.yyVAL.statement = &ast.ProcedureElseIfBlock{ ProcedureIfStmt: yyS[yypt-0].statement.(*ast.ProcedureIfBlock), } } - case 2790: + case 2807: { parser.yyVAL.statement = &ast.ProcedureElseBlock{ ProcedureIfStmts: yyS[yypt-0].item.([]ast.StmtNode), } } - case 2791: + case 2808: { parser.yyVAL.statement = yyS[yypt-0].statement } - case 2792: + case 2809: { parser.yyVAL.statement = yyS[yypt-0].statement } - case 2793: + case 2810: { parser.yyVAL.item = []*ast.SimpleWhenThenStmt{yyS[yypt-0].statement.(*ast.SimpleWhenThenStmt)} } - case 2794: + case 2811: { l := yyS[yypt-1].item.([]*ast.SimpleWhenThenStmt) l = append(l, yyS[yypt-0].statement.(*ast.SimpleWhenThenStmt)) parser.yyVAL.item = l } - case 2795: + case 2812: { parser.yyVAL.item = []*ast.SearchWhenThenStmt{yyS[yypt-0].statement.(*ast.SearchWhenThenStmt)} } - case 2796: + case 2813: { l := yyS[yypt-1].item.([]*ast.SearchWhenThenStmt) l = append(l, yyS[yypt-0].statement.(*ast.SearchWhenThenStmt)) parser.yyVAL.item = l } - case 2797: + case 2814: { parser.yyVAL.statement = &ast.SimpleWhenThenStmt{ Expr: yyS[yypt-2].expr.(ast.ExprNode), ProcedureStmts: yyS[yypt-0].item.([]ast.StmtNode), } } - case 2798: + case 2815: { parser.yyVAL.statement = &ast.SearchWhenThenStmt{ Expr: yyS[yypt-2].expr.(ast.ExprNode), ProcedureStmts: yyS[yypt-0].item.([]ast.StmtNode), } } - case 2799: + case 2816: { parser.yyVAL.item = nil } - case 2800: + case 2817: { parser.yyVAL.item = yyS[yypt-0].item.([]ast.StmtNode) } - case 2801: + case 2818: { caseStmt := &ast.SimpleCaseStmt{ Condition: yyS[yypt-4].expr.(ast.ExprNode), @@ -24476,7 +24632,7 @@ yynewstate: } parser.yyVAL.statement = caseStmt } - case 2802: + case 2819: { caseStmt := &ast.SearchCaseStmt{ WhenCases: yyS[yypt-3].item.([]*ast.SearchWhenThenStmt), @@ -24486,25 +24642,25 @@ yynewstate: } parser.yyVAL.statement = caseStmt } - case 2803: + case 2820: { parser.yyVAL.statement = yyS[yypt-0].statement } - case 2804: + case 2821: { parser.yyVAL.statement = &ast.ProcedureWhileStmt{ Condition: yyS[yypt-4].expr.(ast.ExprNode), Body: yyS[yypt-2].item.([]ast.StmtNode), } } - case 2805: + case 2822: { parser.yyVAL.statement = &ast.ProcedureRepeatStmt{ Body: yyS[yypt-4].item.([]ast.StmtNode), Condition: yyS[yypt-2].expr.(ast.ExprNode), } } - case 2806: + case 2823: { labelBlock := &ast.ProcedureLabelBlock{ LabelName: yyS[yypt-3].ident, @@ -24516,15 +24672,15 @@ yynewstate: } parser.yyVAL.statement = labelBlock } - case 2807: + case 2824: { parser.yyVAL.ident = "" } - case 2808: + case 2825: { parser.yyVAL.ident = yyS[yypt-0].ident } - case 2809: + case 2826: { labelLoop := &ast.ProcedureLabelLoop{ LabelName: yyS[yypt-3].ident, @@ -24536,21 +24692,21 @@ yynewstate: } parser.yyVAL.statement = labelLoop } - case 2810: + case 2827: { parser.yyVAL.statement = &ast.ProcedureJump{ Name: yyS[yypt-0].ident, IsLeave: false, } } - case 2811: + case 2828: { parser.yyVAL.statement = &ast.ProcedureJump{ Name: yyS[yypt-0].ident, IsLeave: true, } } - case 2824: + case 2841: { x := &ast.ProcedureInfo{ IfNotExists: yyS[yypt-5].item.(bool), @@ -24569,38 +24725,38 @@ yynewstate: x.ProcedureParamStr = strings.TrimSpace(parser.src[startOffset:endOffset]) parser.yyVAL.statement = x } - case 2825: + case 2842: { parser.yyVAL.statement = &ast.DropProcedureStmt{ IfExists: yyS[yypt-1].item.(bool), ProcedureName: yyS[yypt-0].item.(*ast.TableName), } } - case 2826: + case 2843: { parser.yyVAL.statement = yyS[yypt-0].item.(*ast.CalibrateResourceStmt) } - case 2827: + case 2844: { parser.yyVAL.item = &ast.CalibrateResourceStmt{} } - case 2828: + case 2845: { parser.yyVAL.item = &ast.CalibrateResourceStmt{ DynamicCalibrateResourceOptionList: yyS[yypt-0].item.([]*ast.DynamicCalibrateResourceOption), } } - case 2829: + case 2846: { parser.yyVAL.item = &ast.CalibrateResourceStmt{ Tp: yyS[yypt-0].item.(ast.CalibrateResourceType), } } - case 2830: + case 2847: { parser.yyVAL.item = []*ast.DynamicCalibrateResourceOption{yyS[yypt-0].item.(*ast.DynamicCalibrateResourceOption)} } - case 2831: + case 2848: { 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) { @@ -24609,7 +24765,7 @@ yynewstate: } parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.DynamicCalibrateResourceOption), yyS[yypt-0].item.(*ast.DynamicCalibrateResourceOption)) } - case 2832: + case 2849: { 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) { @@ -24618,15 +24774,15 @@ yynewstate: } parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.DynamicCalibrateResourceOption), yyS[yypt-0].item.(*ast.DynamicCalibrateResourceOption)) } - case 2833: + case 2850: { parser.yyVAL.item = &ast.DynamicCalibrateResourceOption{Tp: ast.CalibrateStartTime, Ts: yyS[yypt-0].expr.(ast.ExprNode)} } - case 2834: + case 2851: { parser.yyVAL.item = &ast.DynamicCalibrateResourceOption{Tp: ast.CalibrateEndTime, Ts: yyS[yypt-0].expr.(ast.ExprNode)} } - case 2835: + case 2852: { _, err := duration.ParseDuration(yyS[yypt-0].ident) if err != nil { @@ -24635,41 +24791,41 @@ yynewstate: } parser.yyVAL.item = &ast.DynamicCalibrateResourceOption{Tp: ast.CalibrateDuration, StrValue: yyS[yypt-0].ident} } - case 2836: + case 2853: { parser.yyVAL.item = &ast.DynamicCalibrateResourceOption{Tp: ast.CalibrateDuration, Ts: yyS[yypt-1].expr.(ast.ExprNode), Unit: yyS[yypt-0].item.(ast.TimeUnitType)} } - case 2837: + case 2854: { parser.yyVAL.item = ast.TPCC } - case 2838: + case 2855: { parser.yyVAL.item = ast.OLTPREADWRITE } - case 2839: + case 2856: { parser.yyVAL.item = ast.OLTPREADONLY } - case 2840: + case 2857: { parser.yyVAL.item = ast.OLTPWRITEONLY } - case 2841: + case 2858: { parser.yyVAL.item = ast.TPCH10 } - case 2842: + case 2859: { parser.yyVAL.statement = &ast.AddQueryWatchStmt{ QueryWatchOptionList: yyS[yypt-0].item.([]*ast.QueryWatchOption), } } - case 2843: + case 2860: { parser.yyVAL.item = []*ast.QueryWatchOption{yyS[yypt-0].item.(*ast.QueryWatchOption)} } - case 2844: + case 2861: { if !ast.CheckQueryWatchAppend(yyS[yypt-1].item.([]*ast.QueryWatchOption), yyS[yypt-0].item.(*ast.QueryWatchOption)) { yylex.AppendError(yylex.Errorf("Dupliated options specified")) @@ -24677,7 +24833,7 @@ yynewstate: } parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.QueryWatchOption), yyS[yypt-0].item.(*ast.QueryWatchOption)) } - case 2845: + case 2862: { if !ast.CheckQueryWatchAppend(yyS[yypt-2].item.([]*ast.QueryWatchOption), yyS[yypt-0].item.(*ast.QueryWatchOption)) { yylex.AppendError(yylex.Errorf("Dupliated options specified")) @@ -24685,35 +24841,35 @@ yynewstate: } parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.QueryWatchOption), yyS[yypt-0].item.(*ast.QueryWatchOption)) } - case 2846: + case 2863: { parser.yyVAL.item = &ast.QueryWatchOption{Tp: ast.QueryWatchResourceGroup, StrValue: model.NewCIStr(yyS[yypt-0].ident)} } - case 2847: + case 2864: { parser.yyVAL.item = &ast.QueryWatchOption{Tp: ast.QueryWatchResourceGroup, ExprValue: yyS[yypt-0].expr} } - case 2848: + case 2865: { parser.yyVAL.item = &ast.QueryWatchOption{Tp: ast.QueryWatchAction, IntValue: yyS[yypt-0].item.(int32)} } - case 2849: + case 2866: { parser.yyVAL.item = yyS[yypt-0].item.(*ast.QueryWatchOption) } - case 2850: + case 2867: { parser.yyVAL.item = &ast.QueryWatchOption{Tp: ast.QueryWatchType, IntValue: int32(model.WatchSimilar), ExprValue: yyS[yypt-0].expr} } - case 2851: + case 2868: { parser.yyVAL.item = &ast.QueryWatchOption{Tp: ast.QueryWatchType, IntValue: int32(model.WatchPlan), ExprValue: yyS[yypt-0].expr} } - case 2852: + case 2869: { parser.yyVAL.item = &ast.QueryWatchOption{Tp: ast.QueryWatchType, IntValue: yyS[yypt-2].item.(int32), ExprValue: yyS[yypt-0].expr, BoolValue: true} } - case 2853: + case 2870: { parser.yyVAL.statement = &ast.DropQueryWatchStmt{ IntValue: yyS[yypt-0].item.(int64), diff --git a/pkg/parser/parser.y b/pkg/parser/parser.y index f7dd2e859e98f..5c39e5740040d 100644 --- a/pkg/parser/parser.y +++ b/pkg/parser/parser.y @@ -55,6 +55,7 @@ import ( identifier "identifier" asof "AS OF" toTimestamp "TO TIMESTAMP" + toTSO "TO TSO" memberof "MEMBER OF" optionallyEnclosedBy "OPTIONALLY ENCLOSED BY" @@ -336,6 +337,7 @@ import ( backend "BACKEND" backup "BACKUP" backups "BACKUPS" + bdr "BDR" begin "BEGIN" bernoulli "BERNOULLI" binding "BINDING" @@ -473,6 +475,7 @@ import ( level "LEVEL" list "LIST" local "LOCAL" + local_only "LOCAL_ONLY" locked "LOCKED" location "LOCATION" logs "LOGS" @@ -585,6 +588,7 @@ import ( san "SAN" savepoint "SAVEPOINT" second "SECOND" + secondary "SECONDARY" secondaryEngine "SECONDARY_ENGINE" secondaryLoad "SECONDARY_LOAD" secondaryUnload "SECONDARY_UNLOAD" @@ -653,6 +657,7 @@ import ( transaction "TRANSACTION" triggers "TRIGGERS" truncate "TRUNCATE" + tsoType "TSO" ttl "TTL" ttlEnable "TTL_ENABLE" ttlJobInterval "TTL_JOB_INTERVAL" @@ -723,6 +728,7 @@ import ( learner "LEARNER" learnerConstraints "LEARNER_CONSTRAINTS" learners "LEARNERS" + log "LOG" min "MIN" max "MAX" metadata "METADATA" @@ -1092,6 +1098,7 @@ import ( AuthOption "User auth option" AutoRandomOpt "Auto random option" Boolean "Boolean (0, 1, false, true)" + BDRRole "BDR role (none, primary, secondary, local_only)" OptionalBraces "optional braces" CastType "Cast function target type" CharsetOpt "CHARACTER SET option in LOAD DATA" @@ -2975,21 +2982,59 @@ FlashbackToTimestampStmt: "FLASHBACK" "CLUSTER" toTimestamp stringLit { $$ = &ast.FlashBackToTimestampStmt{ - FlashbackTS: ast.NewValueExpr($4, "", ""), + FlashbackTS: ast.NewValueExpr($4, "", ""), + FlashbackTSO: 0, } } | "FLASHBACK" "TABLE" TableNameList toTimestamp stringLit { $$ = &ast.FlashBackToTimestampStmt{ - Tables: $3.([]*ast.TableName), - FlashbackTS: ast.NewValueExpr($5, "", ""), + Tables: $3.([]*ast.TableName), + FlashbackTS: ast.NewValueExpr($5, "", ""), + FlashbackTSO: 0, } } | "FLASHBACK" DatabaseSym DBName toTimestamp stringLit { $$ = &ast.FlashBackToTimestampStmt{ - DBName: model.NewCIStr($3), - FlashbackTS: ast.NewValueExpr($5, "", ""), + DBName: model.NewCIStr($3), + FlashbackTS: ast.NewValueExpr($5, "", ""), + FlashbackTSO: 0, + } + } +| "FLASHBACK" "CLUSTER" toTSO LengthNum + { + if tsoValue, ok := $4.(uint64); ok && tsoValue > 0 { + $$ = &ast.FlashBackToTimestampStmt{ + FlashbackTSO: tsoValue, + } + } else { + yylex.AppendError(yylex.Errorf("Invalid TSO value provided: %d", $4)) + return 1 + } + } +| "FLASHBACK" "TABLE" TableNameList toTSO LengthNum + { + if tsoValue, ok := $5.(uint64); ok && tsoValue > 0 { + $$ = &ast.FlashBackToTimestampStmt{ + Tables: $3.([]*ast.TableName), + FlashbackTSO: tsoValue, + } + } else { + yylex.AppendError(yylex.Errorf("Invalid TSO value provided: %d", $5)) + return 1 + } + } +| "FLASHBACK" DatabaseSym DBName toTSO LengthNum + { + if tsoValue, ok := $5.(uint64); ok && tsoValue > 0 { + $$ = &ast.FlashBackToTimestampStmt{ + DBName: model.NewCIStr($3), + FlashbackTSO: tsoValue, + } + } else { + yylex.AppendError(yylex.Errorf("Invalid TSO value provided: %d", $5)) + return 1 } } @@ -6525,6 +6570,7 @@ UnReservedKeyword: | "AFTER" | "ALWAYS" | "AVG" +| "BDR" | "BEGIN" | "BIT" | "BOOL" @@ -6582,6 +6628,7 @@ UnReservedKeyword: | "INSERT_METHOD" | "LESS" | "LOCAL" +| "LOCAL_ONLY" | "LAST" | "NAMES" | "NVARCHAR" @@ -6621,6 +6668,7 @@ UnReservedKeyword: | "TRACE" | "TRANSACTION" | "TRUNCATE" +| "TSO" | "UNBOUNDED" | "UNKNOWN" | "VALUE" %prec lowerThanValueKeyword @@ -6759,6 +6807,7 @@ UnReservedKeyword: | "STORAGE" | "DISK" | "STATS_SAMPLE_PAGES" +| "SECONDARY" | "SECONDARY_ENGINE" | "SECONDARY_LOAD" | "SECONDARY_UNLOAD" @@ -6947,6 +6996,7 @@ NotKeywordToken: | "INPLACE" | "INSTANT" | "INTERNAL" +| "LOG" | "MIN" | "MAX" | "NOW" @@ -7818,6 +7868,7 @@ FunctionNameConflict: | "HOUR" | "IF" | "INTERVAL" +| "LOG" | "FORMAT" | "LEFT" | "MICROSECOND" @@ -10874,6 +10925,24 @@ AdminStmtLimitOpt: $$ = &ast.LimitSimple{Offset: $4.(uint64), Count: $2.(uint64)} } +BDRRole: + "PRIMARY" + { + $$ = ast.BDRRolePrimary + } +| "SECONDARY" + { + $$ = ast.BDRRoleSecondary + } +| "LOCAL_ONLY" + { + $$ = ast.BDRRoleLocalOnly + } +| "NONE" + { + $$ = ast.BDRRoleNone + } + AdminStmt: "ADMIN" "SHOW" "DDL" { @@ -11090,6 +11159,19 @@ AdminStmt: StatementScope: $3.(ast.StatementScope), } } +| "ADMIN" "SET" "BDR" "ROLE" BDRRole + { + $$ = &ast.AdminStmt{ + Tp: ast.AdminSetBDRRole, + BDRRole: $5.(ast.BDRRole), + } + } +| "ADMIN" "SHOW" "BDR" "ROLE" + { + $$ = &ast.AdminStmt{ + Tp: ast.AdminShowBDRRole, + } + } AdminShowSlow: "RECENT" NUM @@ -11270,11 +11352,18 @@ ShowStmt: } } | "SHOW" "MASTER" "STATUS" + // "SHOW MASTER STATUS" was deprecated in MySQL 8.2.0 in favor of "SHOW BINARY LOG STATUS" { $$ = &ast.ShowStmt{ Tp: ast.ShowMasterStatus, } } +| "SHOW" "BINARY" "LOG" "STATUS" + { + $$ = &ast.ShowStmt{ + Tp: ast.ShowBinlogStatus, + } + } | "SHOW" OptFull "PROCESSLIST" { $$ = &ast.ShowStmt{ @@ -13730,6 +13819,20 @@ CreateBindingStmt: GlobalScope: $2.(bool), } + $$ = x + } +| "CREATE" GlobalScope "BINDING" "USING" BindableStmt + { + startOffset := parser.startOffset(&yyS[yypt]) + hintedStmt := $5 + hintedStmt.SetText(parser.lexer.client, strings.TrimSpace(parser.src[startOffset:])) + + x := &ast.CreateBindingStmt{ + OriginNode: hintedStmt, + HintedNode: hintedStmt, + GlobalScope: $2.(bool), + } + $$ = x } | "CREATE" GlobalScope "BINDING" "FROM" "HISTORY" "USING" "PLAN" "DIGEST" stringLit diff --git a/pkg/parser/parser_test.go b/pkg/parser/parser_test.go index 4c5e5ee39f461..17bfc31a782e6 100644 --- a/pkg/parser/parser_test.go +++ b/pkg/parser/parser_test.go @@ -463,6 +463,67 @@ func RunErrMsgTest(t *testing.T, table []testErrMsgCase) { } } +func TestAdminStmt(t *testing.T) { + table := []testCase{ + {"admin show ddl;", true, "ADMIN SHOW DDL"}, + {"admin show ddl jobs;", true, "ADMIN SHOW DDL JOBS"}, + {"admin show ddl jobs where id > 0;", true, "ADMIN SHOW DDL JOBS WHERE `id`>0"}, + {"admin show ddl jobs 20 where id=0;", true, "ADMIN SHOW DDL JOBS 20 WHERE `id`=0"}, + {"admin show ddl jobs -1;", false, ""}, + {"admin show ddl job queries 1", true, "ADMIN SHOW DDL JOB QUERIES 1"}, + {"admin show ddl job queries 1, 2, 3, 4", true, "ADMIN SHOW DDL JOB QUERIES 1, 2, 3, 4"}, + {"admin show ddl job queries limit 5", true, "ADMIN SHOW DDL JOB QUERIES LIMIT 0, 5"}, + {"admin show ddl job queries limit 5, 10", true, "ADMIN SHOW DDL JOB QUERIES LIMIT 5, 10"}, + {"admin show ddl job queries limit 3 offset 2", true, "ADMIN SHOW DDL JOB QUERIES LIMIT 2, 3"}, + {"admin show ddl job queries limit 22 offset 0", true, "ADMIN SHOW DDL JOB QUERIES LIMIT 0, 22"}, + {"admin show t1 next_row_id", true, "ADMIN SHOW `t1` NEXT_ROW_ID"}, + {"admin check table t1, t2;", true, "ADMIN CHECK TABLE `t1`, `t2`"}, + {"admin check index tableName idxName;", true, "ADMIN CHECK INDEX `tableName` idxName"}, + {"admin check index tableName idxName (1, 2), (4, 5);", true, "ADMIN CHECK INDEX `tableName` idxName (1,2), (4,5)"}, + {"admin checksum table t1, t2;", true, "ADMIN CHECKSUM TABLE `t1`, `t2`"}, + {"admin cancel ddl jobs 1", true, "ADMIN CANCEL DDL JOBS 1"}, + {"admin cancel ddl jobs 1, 2", true, "ADMIN CANCEL DDL JOBS 1, 2"}, + {"admin pause ddl jobs 1, 3", true, "ADMIN PAUSE DDL JOBS 1, 3"}, + {"admin pause ddl jobs 5", true, "ADMIN PAUSE DDL JOBS 5"}, + {"admin pause ddl jobs", false, "ADMIN PAUSE DDL JOBS"}, + {"admin pause ddl jobs str_not_num", false, "ADMIN PAUSE DDL JOBS str_not_num"}, + {"admin resume ddl jobs 1, 2", true, "ADMIN RESUME DDL JOBS 1, 2"}, + {"admin resume ddl jobs 3", true, "ADMIN RESUME DDL JOBS 3"}, + {"admin resume ddl jobs", false, "ADMIN RESUME DDL JOBS"}, + {"admin resume ddl jobs str_not_num", false, "ADMIN RESUME DDL JOBS str_not_num"}, + {"admin recover index t1 idx_a", true, "ADMIN RECOVER INDEX `t1` idx_a"}, + {"admin cleanup index t1 idx_a", true, "ADMIN CLEANUP INDEX `t1` idx_a"}, + {"admin show slow top 3", true, "ADMIN SHOW SLOW TOP 3"}, + {"admin show slow top internal 7", true, "ADMIN SHOW SLOW TOP INTERNAL 7"}, + {"admin show slow top all 9", true, "ADMIN SHOW SLOW TOP ALL 9"}, + {"admin show slow recent 11", true, "ADMIN SHOW SLOW RECENT 11"}, + {"admin reload expr_pushdown_blacklist", true, "ADMIN RELOAD EXPR_PUSHDOWN_BLACKLIST"}, + {"admin plugins disable audit, whitelist", true, "ADMIN PLUGINS DISABLE audit, whitelist"}, + {"admin plugins enable audit, whitelist", true, "ADMIN PLUGINS ENABLE audit, whitelist"}, + {"admin flush bindings", true, "ADMIN FLUSH BINDINGS"}, + {"admin capture bindings", true, "ADMIN CAPTURE BINDINGS"}, + {"admin evolve bindings", true, "ADMIN EVOLVE BINDINGS"}, + {"admin reload bindings", true, "ADMIN RELOAD BINDINGS"}, + {"admin show telemetry", true, "ADMIN SHOW TELEMETRY"}, + {"admin reset telemetry_id", true, "ADMIN RESET TELEMETRY_ID"}, + // This case would be removed once TiDB PR to remove ADMIN RELOAD STATISTICS is merged. + {"admin reload statistics", true, "ADMIN RELOAD STATS_EXTENDED"}, + {"admin reload stats_extended", true, "ADMIN RELOAD STATS_EXTENDED"}, + // Test for 'admin flush plan_cache' + {"admin flush instance plan_cache", true, "ADMIN FLUSH INSTANCE PLAN_CACHE"}, + {"admin flush session plan_cache", true, "ADMIN FLUSH SESSION PLAN_CACHE"}, + // We do not support the global level. We will check it in the later. + {"admin flush global plan_cache", true, "ADMIN FLUSH GLOBAL PLAN_CACHE"}, + // for BDR + {"admin set bdr role none", true, "ADMIN SET BDR ROLE NONE"}, + {"admin set bdr role primary", true, "ADMIN SET BDR ROLE PRIMARY"}, + {"admin set bdr role secondary", true, "ADMIN SET BDR ROLE SECONDARY"}, + {"admin set bdr role local_only", true, "ADMIN SET BDR ROLE LOCAL_ONLY"}, + {"admin show bdr role", true, "ADMIN SHOW BDR ROLE"}, + } + RunTest(t, table, false) +} + func TestDMLStmt(t *testing.T) { table := []testCase{ {"", true, ""}, @@ -817,57 +878,6 @@ func TestDMLStmt(t *testing.T) { {"DELETE t1, t2 FROM t1 INNER JOIN t2 INNER JOIN t3 WHERE t1.id=t2.id AND t2.id=t3.id limit 10;", false, ""}, {"DELETE t1, t2 FROM t1 INNER JOIN t2 INNER JOIN t3 WHERE t1.id=t2.id AND t2.id=t3.id order by t1.id;", false, ""}, - // for admin - {"admin show ddl;", true, "ADMIN SHOW DDL"}, - {"admin show ddl jobs;", true, "ADMIN SHOW DDL JOBS"}, - {"admin show ddl jobs where id > 0;", true, "ADMIN SHOW DDL JOBS WHERE `id`>0"}, - {"admin show ddl jobs 20 where id=0;", true, "ADMIN SHOW DDL JOBS 20 WHERE `id`=0"}, - {"admin show ddl jobs -1;", false, ""}, - {"admin show ddl job queries 1", true, "ADMIN SHOW DDL JOB QUERIES 1"}, - {"admin show ddl job queries 1, 2, 3, 4", true, "ADMIN SHOW DDL JOB QUERIES 1, 2, 3, 4"}, - {"admin show ddl job queries limit 5", true, "ADMIN SHOW DDL JOB QUERIES LIMIT 0, 5"}, - {"admin show ddl job queries limit 5, 10", true, "ADMIN SHOW DDL JOB QUERIES LIMIT 5, 10"}, - {"admin show ddl job queries limit 3 offset 2", true, "ADMIN SHOW DDL JOB QUERIES LIMIT 2, 3"}, - {"admin show ddl job queries limit 22 offset 0", true, "ADMIN SHOW DDL JOB QUERIES LIMIT 0, 22"}, - {"admin show t1 next_row_id", true, "ADMIN SHOW `t1` NEXT_ROW_ID"}, - {"admin check table t1, t2;", true, "ADMIN CHECK TABLE `t1`, `t2`"}, - {"admin check index tableName idxName;", true, "ADMIN CHECK INDEX `tableName` idxName"}, - {"admin check index tableName idxName (1, 2), (4, 5);", true, "ADMIN CHECK INDEX `tableName` idxName (1,2), (4,5)"}, - {"admin checksum table t1, t2;", true, "ADMIN CHECKSUM TABLE `t1`, `t2`"}, - {"admin cancel ddl jobs 1", true, "ADMIN CANCEL DDL JOBS 1"}, - {"admin cancel ddl jobs 1, 2", true, "ADMIN CANCEL DDL JOBS 1, 2"}, - {"admin pause ddl jobs 1, 3", true, "ADMIN PAUSE DDL JOBS 1, 3"}, - {"admin pause ddl jobs 5", true, "ADMIN PAUSE DDL JOBS 5"}, - {"admin pause ddl jobs", false, "ADMIN PAUSE DDL JOBS"}, - {"admin pause ddl jobs str_not_num", false, "ADMIN PAUSE DDL JOBS str_not_num"}, - {"admin resume ddl jobs 1, 2", true, "ADMIN RESUME DDL JOBS 1, 2"}, - {"admin resume ddl jobs 3", true, "ADMIN RESUME DDL JOBS 3"}, - {"admin resume ddl jobs", false, "ADMIN RESUME DDL JOBS"}, - {"admin resume ddl jobs str_not_num", false, "ADMIN RESUME DDL JOBS str_not_num"}, - {"admin recover index t1 idx_a", true, "ADMIN RECOVER INDEX `t1` idx_a"}, - {"admin cleanup index t1 idx_a", true, "ADMIN CLEANUP INDEX `t1` idx_a"}, - {"admin show slow top 3", true, "ADMIN SHOW SLOW TOP 3"}, - {"admin show slow top internal 7", true, "ADMIN SHOW SLOW TOP INTERNAL 7"}, - {"admin show slow top all 9", true, "ADMIN SHOW SLOW TOP ALL 9"}, - {"admin show slow recent 11", true, "ADMIN SHOW SLOW RECENT 11"}, - {"admin reload expr_pushdown_blacklist", true, "ADMIN RELOAD EXPR_PUSHDOWN_BLACKLIST"}, - {"admin plugins disable audit, whitelist", true, "ADMIN PLUGINS DISABLE audit, whitelist"}, - {"admin plugins enable audit, whitelist", true, "ADMIN PLUGINS ENABLE audit, whitelist"}, - {"admin flush bindings", true, "ADMIN FLUSH BINDINGS"}, - {"admin capture bindings", true, "ADMIN CAPTURE BINDINGS"}, - {"admin evolve bindings", true, "ADMIN EVOLVE BINDINGS"}, - {"admin reload bindings", true, "ADMIN RELOAD BINDINGS"}, - {"admin show telemetry", true, "ADMIN SHOW TELEMETRY"}, - {"admin reset telemetry_id", true, "ADMIN RESET TELEMETRY_ID"}, - // This case would be removed once TiDB PR to remove ADMIN RELOAD STATISTICS is merged. - {"admin reload statistics", true, "ADMIN RELOAD STATS_EXTENDED"}, - {"admin reload stats_extended", true, "ADMIN RELOAD STATS_EXTENDED"}, - // Test for 'admin flush plan_cache' - {"admin flush instance plan_cache", true, "ADMIN FLUSH INSTANCE PLAN_CACHE"}, - {"admin flush session plan_cache", true, "ADMIN FLUSH SESSION PLAN_CACHE"}, - // We do not support the global level. We will check it in the later. - {"admin flush global plan_cache", true, "ADMIN FLUSH GLOBAL PLAN_CACHE"}, - // for on duplicate key update {"INSERT INTO t (a,b,c) VALUES (1,2,3),(4,5,6) ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);", true, "INSERT INTO `t` (`a`,`b`,`c`) VALUES (1,2,3),(4,5,6) ON DUPLICATE KEY UPDATE `c`=VALUES(`a`)+VALUES(`b`)"}, {"INSERT INTO t (a,b,c) VALUES (1,2,3),(4,5,6) ON DUPLICATE KEY UPDATE c:=VALUES(a)+VALUES(b);", true, "INSERT INTO `t` (`a`,`b`,`c`) VALUES (1,2,3),(4,5,6) ON DUPLICATE KEY UPDATE `c`=VALUES(`a`)+VALUES(`b`)"}, @@ -1193,6 +1203,7 @@ func TestDBAStmt(t *testing.T) { {`SHOW PROFILE CPU FOR QUERY 2 LIMIT 1,1`, true, "SHOW PROFILE CPU FOR QUERY 2 LIMIT 1,1"}, {`SHOW PROFILE CPU, MEMORY, BLOCK IO, CONTEXT SWITCHES, PAGE FAULTS, IPC, SWAPS, SOURCE FOR QUERY 1 limit 100`, true, "SHOW PROFILE CPU, MEMORY, BLOCK IO, CONTEXT SWITCHES, PAGE FAULTS, IPC, SWAPS, SOURCE FOR QUERY 1 LIMIT 100"}, {`SHOW MASTER STATUS`, true, "SHOW MASTER STATUS"}, + {`SHOW BINARY LOG STATUS`, true, "SHOW BINARY LOG STATUS"}, {`SHOW PRIVILEGES`, true, "SHOW PRIVILEGES"}, // for show character set {"show character set;", true, "SHOW CHARSET"}, @@ -3402,6 +3413,17 @@ func TestDDL(t *testing.T) { {"flashback table to timestamp '2021-05-26 16:45:26'", false, ""}, {"flashback database to timestamp '2021-05-26 16:45:26'", false, ""}, + // for flashback to tso + {"flashback cluster to tso 445494955052105721", true, "FLASHBACK CLUSTER TO TSO 445494955052105721"}, + {"flashback table t to tso 445494955052105722", true, "FLASHBACK TABLE `t` TO TSO 445494955052105722"}, + {"flashback table t,t1 to tso 445494955052105723", true, "FLASHBACK TABLE `t`, `t1` TO TSO 445494955052105723"}, + {"flashback database test to tso 445494955052105724", true, "FLASHBACK DATABASE `test` TO TSO 445494955052105724"}, + {"flashback schema test to tso 445494955052105725", true, "FLASHBACK DATABASE `test` TO TSO 445494955052105725"}, + {"flashback table to tso 445494955052105726", false, ""}, + {"flashback database to tso 445494955052105727", false, ""}, + {"flashback schema test to tso 0", false, ""}, + {"flashback schema test to tso -100", false, ""}, + // for remove partitioning {"alter table t remove partitioning", true, "ALTER TABLE `t` REMOVE PARTITIONING"}, {"alter table db.ident remove partitioning", true, "ALTER TABLE `db`.`ident` REMOVE PARTITIONING"}, diff --git a/pkg/planner/cardinality/row_count_column.go b/pkg/planner/cardinality/row_count_column.go index ee8a6220655de..e5fcde0af830b 100644 --- a/pkg/planner/cardinality/row_count_column.go +++ b/pkg/planner/cardinality/row_count_column.go @@ -191,11 +191,13 @@ func GetColumnRowCount(sctx sessionctx.Context, c *statistics.Column, ranges []* if err != nil { return 0, errors.Trace(err) } - lowEncoded, err := codec.EncodeKey(sc, nil, lowVal) + lowEncoded, err := codec.EncodeKey(sc.TimeZone(), nil, lowVal) + err = sc.HandleError(err) if err != nil { return 0, err } - highEncoded, err := codec.EncodeKey(sc, nil, highVal) + highEncoded, err := codec.EncodeKey(sc.TimeZone(), nil, highVal) + err = sc.HandleError(err) if err != nil { return 0, err } @@ -336,11 +338,13 @@ func columnBetweenRowCount(sctx sessionctx.Context, t *statistics.Table, a, b ty if !ok || c.IsInvalid(sctx, t.Pseudo) { return float64(t.RealtimeCount) / pseudoBetweenRate, nil } - aEncoded, err := codec.EncodeKey(sc, nil, a) + aEncoded, err := codec.EncodeKey(sc.TimeZone(), nil, a) + err = sc.HandleError(err) if err != nil { return 0, err } - bEncoded, err := codec.EncodeKey(sc, nil, b) + bEncoded, err := codec.EncodeKey(sc.TimeZone(), nil, b) + err = sc.HandleError(err) if err != nil { return 0, err } @@ -357,7 +361,8 @@ func ColumnEqualRowCount(sctx sessionctx.Context, t *statistics.Table, value typ if !ok || c.IsInvalid(sctx, t.Pseudo) { return float64(t.RealtimeCount) / pseudoEqualRate, nil } - encodedVal, err := codec.EncodeKey(sctx.GetSessionVars().StmtCtx, nil, value) + encodedVal, err := codec.EncodeKey(sctx.GetSessionVars().StmtCtx.TimeZone(), nil, value) + err = sctx.GetSessionVars().StmtCtx.HandleError(err) if err != nil { return 0, err } diff --git a/pkg/planner/cardinality/row_count_index.go b/pkg/planner/cardinality/row_count_index.go index eef562fd59a40..6c809df236f71 100644 --- a/pkg/planner/cardinality/row_count_index.go +++ b/pkg/planner/cardinality/row_count_index.go @@ -19,6 +19,7 @@ import ( "math" "slices" "strings" + "time" "github.com/pingcap/errors" "github.com/pingcap/failpoint" @@ -130,7 +131,8 @@ func getIndexRowCountForStatsV1(sctx sessionctx.Context, coll *statistics.HistCo var selectivity float64 // use CM Sketch to estimate the equal conditions if rangeVals == nil { - bytes, err := codec.EncodeKey(sc, nil, ran.LowVal[:rangePosition]...) + bytes, err := codec.EncodeKey(sc.TimeZone(), nil, ran.LowVal[:rangePosition]...) + err = sc.HandleError(err) if err != nil { return 0, errors.Trace(err) } @@ -139,14 +141,16 @@ func getIndexRowCountForStatsV1(sctx sessionctx.Context, coll *statistics.HistCo return 0, errors.Trace(err) } } else { - bytes, err := codec.EncodeKey(sc, nil, ran.LowVal[:rangePosition-1]...) + bytes, err := codec.EncodeKey(sc.TimeZone(), nil, ran.LowVal[:rangePosition-1]...) + err = sc.HandleError(err) if err != nil { return 0, errors.Trace(err) } prefixLen := len(bytes) for _, val := range rangeVals { bytes = bytes[:prefixLen] - bytes, err = codec.EncodeKey(sc, bytes, val) + bytes, err = codec.EncodeKey(sc.TimeZone(), bytes, val) + err = sc.HandleError(err) if err != nil { return 0, err } @@ -223,11 +227,13 @@ func getIndexRowCountForStatsV2(sctx sessionctx.Context, idx *statistics.Index, isSingleCol := len(idx.Info.Columns) == 1 for _, indexRange := range indexRanges { var count float64 - lb, err := codec.EncodeKey(sc, nil, indexRange.LowVal...) + lb, err := codec.EncodeKey(sc.TimeZone(), nil, indexRange.LowVal...) + err = sc.HandleError(err) if err != nil { return 0, err } - rb, err := codec.EncodeKey(sc, nil, indexRange.HighVal...) + rb, err := codec.EncodeKey(sc.TimeZone(), nil, indexRange.HighVal...) + err = sc.HandleError(err) if err != nil { return 0, err } @@ -341,7 +347,7 @@ func getIndexRowCountForStatsV2(sctx sessionctx.Context, idx *statistics.Index, return totalCount, nil } -var nullKeyBytes, _ = codec.EncodeKey(nil, nil, types.NewDatum(nil)) +var nullKeyBytes, _ = codec.EncodeKey(time.UTC, nil, types.NewDatum(nil)) func equalRowCountOnIndex(sctx sessionctx.Context, idx *statistics.Index, b []byte, realtimeRowCount int64) (result float64) { if sctx.GetSessionVars().StmtCtx.EnableOptimizerDebugTrace { diff --git a/pkg/planner/cardinality/selectivity.go b/pkg/planner/cardinality/selectivity.go index 02712229441e3..966e892439864 100644 --- a/pkg/planner/cardinality/selectivity.go +++ b/pkg/planner/cardinality/selectivity.go @@ -157,7 +157,7 @@ func Selectivity( slices.Sort(idxIDs) for _, id := range idxIDs { idxStats := coll.Indices[id] - idxCols := findPrefixOfIndexByCol(extractedCols, coll.Idx2ColumnIDs[id], id2Paths[idxStats.ID]) + idxCols := findPrefixOfIndexByCol(ctx, extractedCols, coll.Idx2ColumnIDs[id], id2Paths[idxStats.ID]) if len(idxCols) > 0 { lengths := make([]int, 0, len(idxCols)) for i := 0; i < len(idxCols) && i < len(idxStats.Info.Columns); i++ { @@ -557,7 +557,7 @@ func isColEqCorCol(filter expression.Expression) *expression.Column { // findPrefixOfIndexByCol will find columns in index by checking the unique id or the virtual expression. // So it will return at once no matching column is found. -func findPrefixOfIndexByCol(cols []*expression.Column, idxColIDs []int64, +func findPrefixOfIndexByCol(ctx sessionctx.Context, cols []*expression.Column, idxColIDs []int64, cachedPath *planutil.AccessPath) []*expression.Column { if cachedPath != nil { idxCols := cachedPath.IdxCols @@ -565,7 +565,7 @@ func findPrefixOfIndexByCol(cols []*expression.Column, idxColIDs []int64, idLoop: for _, idCol := range idxCols { for _, col := range cols { - if col.EqualByExprAndID(nil, idCol) { + if col.EqualByExprAndID(ctx, idCol) { retCols = append(retCols, col) continue idLoop } diff --git a/pkg/planner/cardinality/selectivity_test.go b/pkg/planner/cardinality/selectivity_test.go index 9c254512bc275..293ffbb89bb45 100644 --- a/pkg/planner/cardinality/selectivity_test.go +++ b/pkg/planner/cardinality/selectivity_test.go @@ -642,7 +642,7 @@ func generateIntDatum(dimension, num int) ([]types.Datum, error) { data[dimension-k-1].SetInt64(int64(j % num)) j = j / num } - bytes, err := codec.EncodeKey(sc, nil, data...) + bytes, err := codec.EncodeKey(sc.TimeZone(), nil, data...) if err != nil { return nil, err } @@ -1035,7 +1035,7 @@ func TestOrderingIdxSelectivityThreshold(t *testing.T) { require.NoError(t, err) idxValues := make([]types.Datum, 0) for _, val := range colValues { - b, err := codec.EncodeKey(sc, nil, val) + b, err := codec.EncodeKey(sc.TimeZone(), nil, val) require.NoError(t, err) idxValues = append(idxValues, types.NewBytesDatum(b)) } diff --git a/pkg/planner/cardinality/trace.go b/pkg/planner/cardinality/trace.go index 346703a57f981..eb552b36de4c0 100644 --- a/pkg/planner/cardinality/trace.go +++ b/pkg/planner/cardinality/trace.go @@ -37,7 +37,7 @@ import ( // ceTraceExpr appends an expression and related information into CE trace func ceTraceExpr(sctx sessionctx.Context, tableID int64, tp string, expr expression.Expression, rowCount float64) { - exprStr, err := exprToString(expr) + exprStr, err := exprToString(sctx, expr) if err != nil { logutil.BgLogger().Debug("Failed to trace CE of an expression", zap.String("category", "OptimizerTrace"), zap.Any("expression", expr)) @@ -64,7 +64,7 @@ func ceTraceExpr(sctx sessionctx.Context, tableID int64, tp string, expr express // It may be more appropriate to put this in expression package. But currently we only use it for CE trace, // // and it may not be general enough to handle all possible expressions. So we put it here for now. -func exprToString(e expression.Expression) (string, error) { +func exprToString(ctx sessionctx.Context, e expression.Expression) (string, error) { switch expr := e.(type) { case *expression.ScalarFunction: var buffer bytes.Buffer @@ -72,7 +72,7 @@ func exprToString(e expression.Expression) (string, error) { switch expr.FuncName.L { case ast.Cast: for _, arg := range expr.GetArgs() { - argStr, err := exprToString(arg) + argStr, err := exprToString(ctx, arg) if err != nil { return "", err } @@ -82,7 +82,7 @@ func exprToString(e expression.Expression) (string, error) { } default: for i, arg := range expr.GetArgs() { - argStr, err := exprToString(arg) + argStr, err := exprToString(ctx, arg) if err != nil { return "", err } @@ -99,7 +99,7 @@ func exprToString(e expression.Expression) (string, error) { case *expression.CorrelatedColumn: return "", errors.New("tracing for correlated columns not supported now") case *expression.Constant: - value, err := expr.Eval(chunk.Row{}) + value, err := expr.Eval(ctx, chunk.Row{}) if err != nil { return "", err } diff --git a/pkg/planner/cascades/implementation_rules.go b/pkg/planner/cascades/implementation_rules.go index e24602218b063..93e4d8d948576 100644 --- a/pkg/planner/cascades/implementation_rules.go +++ b/pkg/planner/cascades/implementation_rules.go @@ -189,7 +189,7 @@ type ImplTableScan struct { // Match implements ImplementationRule Match interface. func (*ImplTableScan) Match(expr *memo.GroupExpr, prop *property.PhysicalProperty) (matched bool) { ts := expr.ExprNode.(*plannercore.LogicalTableScan) - return prop.IsSortItemEmpty() || (len(prop.SortItems) == 1 && ts.HandleCols != nil && prop.SortItems[0].Col.Equal(nil, ts.HandleCols.GetCol(0))) + return prop.IsSortItemEmpty() || (len(prop.SortItems) == 1 && ts.HandleCols != nil && prop.SortItems[0].Col.EqualColumn(ts.HandleCols.GetCol(0))) } // OnImplement implements ImplementationRule OnImplement interface. diff --git a/pkg/planner/cascades/optimize_test.go b/pkg/planner/cascades/optimize_test.go index 977405b4f2540..8b56f3667b0aa 100644 --- a/pkg/planner/cascades/optimize_test.go +++ b/pkg/planner/cascades/optimize_test.go @@ -175,7 +175,7 @@ func TestPreparePossibleProperties(t *testing.T) { aggProp := preparePossibleProperties(group, propMap) // We only have one prop for Group0 : f require.Len(t, aggProp, 1) - require.True(t, aggProp[0][0].Equal(nil, columnF)) + require.True(t, aggProp[0][0].EqualColumn(columnF)) gatherGroup := group.Equivalents.Front().Value.(*memo.GroupExpr).Children[0] gatherProp, ok := propMap[gatherGroup] @@ -184,7 +184,7 @@ func TestPreparePossibleProperties(t *testing.T) { require.Len(t, gatherProp, 2) for _, prop := range gatherProp { require.Len(t, prop, 1) - require.True(t, prop[0].Equal(nil, columnA) || prop[0].Equal(nil, columnF)) + require.True(t, prop[0].EqualColumn(columnA) || prop[0].EqualColumn(columnF)) } } diff --git a/pkg/planner/cascades/transformation_rules.go b/pkg/planner/cascades/transformation_rules.go index 80c2b7c0a5c18..fad0ea5cdaf8f 100644 --- a/pkg/planner/cascades/transformation_rules.go +++ b/pkg/planner/cascades/transformation_rules.go @@ -331,7 +331,7 @@ func (*PushSelDownTiKVSingleGather) OnTransform(old *memo.ExprIter) (newExprs [] childGroup := old.Children[0].Children[0].Group var pushed, remained []expression.Expression sctx := sg.SCtx() - pushed, remained = expression.PushDownExprs(sctx.GetSessionVars().StmtCtx, sel.Conditions, sctx.GetClient(), kv.TiKV) + pushed, remained = expression.PushDownExprs(sctx, sel.Conditions, sctx.GetClient(), kv.TiKV) if len(pushed) == 0 { return nil, false, false, nil } @@ -549,8 +549,9 @@ func (*PushSelDownProjection) OnTransform(old *memo.ExprIter) (newExprs []*memo. } canBePushed := make([]expression.Expression, 0, len(sel.Conditions)) canNotBePushed := make([]expression.Expression, 0, len(sel.Conditions)) + ctx := sel.SCtx() for _, cond := range sel.Conditions { - substituted, hasFailed, newFilter := expression.ColumnSubstituteImpl(cond, projSchema, proj.Exprs, true) + substituted, hasFailed, newFilter := expression.ColumnSubstituteImpl(ctx, cond, projSchema, proj.Exprs, true) if substituted && !hasFailed && !expression.HasGetSetVarFunc(newFilter) { canBePushed = append(canBePushed, newFilter) } else { @@ -938,8 +939,8 @@ func (*pushDownJoin) predicatePushDown( default: // TODO: Enhance this rule to deal with Semi/SmiAnti Joins. } - leftCond = expression.RemoveDupExprs(sctx, leftCond) - rightCond = expression.RemoveDupExprs(sctx, rightCond) + leftCond = expression.RemoveDupExprs(leftCond) + rightCond = expression.RemoveDupExprs(rightCond) return } @@ -1121,7 +1122,7 @@ func (*EliminateProjection) OnTransform(old *memo.ExprIter) (newExprs []*memo.Gr oldCols := old.GetExpr().Group.Prop.Schema.Columns for i, col := range child.Group.Prop.Schema.Columns { - if !col.Equal(nil, oldCols[i]) { + if !col.EqualColumn(oldCols[i]) { return nil, false, false, nil } } @@ -1168,7 +1169,7 @@ func (*MergeAdjacentProjection) OnTransform(old *memo.ExprIter) (newExprs []*mem replace := make(map[string]*expression.Column) for i, col := range childGroup.Prop.Schema.Columns { if colOrigin, ok := child.Exprs[i].(*expression.Column); ok { - replace[string(col.HashCode(nil))] = colOrigin + replace[string(col.HashCode())] = colOrigin } } @@ -1303,15 +1304,16 @@ func (*PushTopNDownProjection) OnTransform(old *memo.ExprIter) (newExprs []*memo proj := old.Children[0].GetExpr().ExprNode.(*plannercore.LogicalProjection) childGroup := old.Children[0].GetExpr().Children[0] + ctx := topN.SCtx() newTopN := plannercore.LogicalTopN{ Offset: topN.Offset, Count: topN.Count, - }.Init(topN.SCtx(), topN.SelectBlockOffset()) + }.Init(ctx, topN.SelectBlockOffset()) newTopN.ByItems = make([]*util.ByItems, 0, len(topN.ByItems)) for _, by := range topN.ByItems { newTopN.ByItems = append(newTopN.ByItems, &util.ByItems{ - Expr: expression.ColumnSubstitute(by.Expr, old.Children[0].Group.Prop.Schema, proj.Exprs), + Expr: expression.ColumnSubstitute(ctx, by.Expr, old.Children[0].Group.Prop.Schema, proj.Exprs), Desc: by.Desc, }) } @@ -1522,9 +1524,10 @@ func (*MergeAggregationProjection) OnTransform(old *memo.ExprIter) (newExprs []* proj := old.Children[0].GetExpr().ExprNode.(*plannercore.LogicalProjection) projSchema := old.Children[0].GetExpr().Schema() + ctx := oldAgg.SCtx() groupByItems := make([]expression.Expression, len(oldAgg.GroupByItems)) for i, item := range oldAgg.GroupByItems { - groupByItems[i] = expression.ColumnSubstitute(item, projSchema, proj.Exprs) + groupByItems[i] = expression.ColumnSubstitute(ctx, item, projSchema, proj.Exprs) } aggFuncs := make([]*aggregation.AggFuncDesc, len(oldAgg.AggFuncs)) @@ -1532,7 +1535,7 @@ func (*MergeAggregationProjection) OnTransform(old *memo.ExprIter) (newExprs []* aggFuncs[i] = aggFunc.Clone() newArgs := make([]expression.Expression, len(aggFunc.Args)) for j, arg := range aggFunc.Args { - newArgs[j] = expression.ColumnSubstitute(arg, projSchema, proj.Exprs) + newArgs[j] = expression.ColumnSubstitute(ctx, arg, projSchema, proj.Exprs) } aggFuncs[i].Args = newArgs } @@ -1540,7 +1543,7 @@ func (*MergeAggregationProjection) OnTransform(old *memo.ExprIter) (newExprs []* newAgg := plannercore.LogicalAggregation{ GroupByItems: groupByItems, AggFuncs: aggFuncs, - }.Init(oldAgg.SCtx(), oldAgg.SelectBlockOffset()) + }.Init(ctx, oldAgg.SelectBlockOffset()) newAggExpr := memo.NewGroupExpr(newAgg) newAggExpr.SetChildren(old.Children[0].GetExpr().Children...) diff --git a/pkg/planner/core/BUILD.bazel b/pkg/planner/core/BUILD.bazel index 4fdc27e94063b..844335cf3e92b 100644 --- a/pkg/planner/core/BUILD.bazel +++ b/pkg/planner/core/BUILD.bazel @@ -189,7 +189,6 @@ go_test( "enforce_mpp_test.go", "errors_test.go", "exhaust_physical_plans_test.go", - "expression_rewriter_test.go", "expression_test.go", "find_best_task_test.go", "fragment_test.go", @@ -221,7 +220,6 @@ go_test( "preprocess_test.go", "rule_generate_column_substitute_test.go", "rule_join_reorder_dp_test.go", - "rule_join_reorder_test.go", "runtime_filter_generator_test.go", "stringer_test.go", ], @@ -232,7 +230,6 @@ go_test( deps = [ "//pkg/config", "//pkg/domain", - "//pkg/errno", "//pkg/expression", "//pkg/expression/aggregation", "//pkg/infoschema", @@ -251,6 +248,7 @@ go_test( "//pkg/planner/property", "//pkg/planner/util", "//pkg/session", + "//pkg/session/types", "//pkg/sessionctx", "//pkg/sessionctx/variable", "//pkg/sessiontxn", diff --git a/pkg/planner/core/binary_plan_test.go b/pkg/planner/core/binary_plan_test.go index 55959a7d0f647..268510d156d6c 100644 --- a/pkg/planner/core/binary_plan_test.go +++ b/pkg/planner/core/binary_plan_test.go @@ -377,23 +377,6 @@ func TestDecodeBinaryPlan(t *testing.T) { } } -func TestInvalidDecodeBinaryPlan(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - - str1 := "some random bytes" - str2 := base64.StdEncoding.EncodeToString([]byte(str1)) - str3 := base64.StdEncoding.EncodeToString(snappy.Encode(nil, []byte(str1))) - - tk.MustQuery(`select tidb_decode_binary_plan('` + str1 + `')`).Check(testkit.Rows("")) - tk.MustQuery("show warnings").Check(testkit.Rows("Warning 1105 illegal base64 data at input byte 4")) - tk.MustQuery(`select tidb_decode_binary_plan('` + str2 + `')`).Check(testkit.Rows("")) - tk.MustQuery("show warnings").Check(testkit.Rows("Warning 1105 snappy: corrupt input")) - tk.MustQuery(`select tidb_decode_binary_plan('` + str3 + `')`).Check(testkit.Rows("")) - tk.MustQuery("show warnings").Check(testkit.Rows("Warning 1105 proto: illegal wireType 7")) -} - func TestUnnecessaryBinaryPlanInSlowLog(t *testing.T) { originCfg := config.GetGlobalConfig() newCfg := *originCfg diff --git a/pkg/planner/core/casetest/BUILD.bazel b/pkg/planner/core/casetest/BUILD.bazel index 037ae24961c47..c14b6876896cc 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 = 21, + shard_count = 18, deps = [ "//pkg/domain", "//pkg/parser", 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 2dc6c93121651..7dc03ab5a1154 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 @@ -681,21 +681,20 @@ "└─ExchangeSender_79 8000.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection_10 8000.00 mpp[tiflash] test.o.o_id, Column#6", " └─Projection_78 8000.00 mpp[tiflash] Column#6, test.o.o_id", - " └─HashAgg_77 8000.00 mpp[tiflash] group by:Column#27, funcs:sum(Column#25)->Column#6, funcs:firstrow(Column#26)->test.o.o_id", - " └─Projection_81 9990.00 mpp[tiflash] cast(Column#7, decimal(20,0) BINARY)->Column#25, Column#8->Column#26, test.o.o_id->Column#27", - " └─ExchangeReceiver_73 9990.00 mpp[tiflash] ", - " └─ExchangeSender_72 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.o.o_id, collate: binary]", - " └─HashJoin_71 9990.00 mpp[tiflash] inner join, equal:[eq(test.c.c_id, test.o.c_id)]", - " ├─ExchangeReceiver_34(Build) 8000.00 mpp[tiflash] ", - " │ └─ExchangeSender_33 8000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Projection_29 8000.00 mpp[tiflash] Column#7, Column#8, test.o.o_id, test.o.c_id", - " │ └─HashAgg_30 8000.00 mpp[tiflash] group by:test.o.c_id, test.o.o_id, funcs:sum(Column#9)->Column#7, funcs:firstrow(test.o.o_id)->Column#8, funcs:firstrow(test.o.o_id)->test.o.o_id, funcs:firstrow(test.o.c_id)->test.o.c_id", - " │ └─ExchangeReceiver_32 8000.00 mpp[tiflash] ", - " │ └─ExchangeSender_31 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.o.o_id, collate: binary], [name: test.o.c_id, collate: binary]", - " │ └─HashAgg_21 8000.00 mpp[tiflash] group by:test.o.c_id, test.o.o_id, funcs:count(1)->Column#9", - " │ └─TableFullScan_28 10000.00 mpp[tiflash] table:o keep order:false, stats:pseudo", - " └─Selection_19(Probe) 9990.00 mpp[tiflash] not(isnull(test.c.c_id))", - " └─TableFullScan_18 10000.00 mpp[tiflash] table:c pushed down filter:empty, keep order:false, stats:pseudo" + " └─HashAgg_77 8000.00 mpp[tiflash] group by:test.o.o_id, funcs:sum(Column#7)->Column#6, funcs:firstrow(Column#8)->test.o.o_id", + " └─ExchangeReceiver_73 9990.00 mpp[tiflash] ", + " └─ExchangeSender_72 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.o.o_id, collate: binary]", + " └─HashJoin_71 9990.00 mpp[tiflash] inner join, equal:[eq(test.c.c_id, test.o.c_id)]", + " ├─ExchangeReceiver_34(Build) 8000.00 mpp[tiflash] ", + " │ └─ExchangeSender_33 8000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", + " │ └─Projection_29 8000.00 mpp[tiflash] Column#7, Column#8, test.o.o_id, test.o.c_id", + " │ └─HashAgg_30 8000.00 mpp[tiflash] group by:test.o.c_id, test.o.o_id, funcs:sum(Column#9)->Column#7, funcs:firstrow(test.o.o_id)->Column#8, funcs:firstrow(test.o.o_id)->test.o.o_id, funcs:firstrow(test.o.c_id)->test.o.c_id", + " │ └─ExchangeReceiver_32 8000.00 mpp[tiflash] ", + " │ └─ExchangeSender_31 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.o.o_id, collate: binary], [name: test.o.c_id, collate: binary]", + " │ └─HashAgg_21 8000.00 mpp[tiflash] group by:test.o.c_id, test.o.o_id, funcs:count(1)->Column#9", + " │ └─TableFullScan_28 10000.00 mpp[tiflash] table:o keep order:false, stats:pseudo", + " └─Selection_19(Probe) 9990.00 mpp[tiflash] not(isnull(test.c.c_id))", + " └─TableFullScan_18 10000.00 mpp[tiflash] table:c pushed down filter:empty, keep order:false, stats:pseudo" ], "Warn": null }, @@ -706,21 +705,20 @@ "└─ExchangeSender_79 8000.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection_10 8000.00 mpp[tiflash] test.o.c_id, Column#6", " └─Projection_78 8000.00 mpp[tiflash] Column#6, test.o.c_id", - " └─HashAgg_77 8000.00 mpp[tiflash] group by:Column#23, funcs:sum(Column#21)->Column#6, funcs:firstrow(Column#22)->test.o.c_id", - " └─Projection_81 9990.00 mpp[tiflash] cast(Column#7, decimal(20,0) BINARY)->Column#21, Column#8->Column#22, test.o.c_id->Column#23", - " └─ExchangeReceiver_73 9990.00 mpp[tiflash] ", - " └─ExchangeSender_72 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.o.c_id, collate: binary]", - " └─HashJoin_71 9990.00 mpp[tiflash] inner join, equal:[eq(test.c.c_id, test.o.c_id)]", - " ├─ExchangeReceiver_34(Build) 8000.00 mpp[tiflash] ", - " │ └─ExchangeSender_33 8000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Projection_29 8000.00 mpp[tiflash] Column#7, Column#8, test.o.c_id", - " │ └─HashAgg_30 8000.00 mpp[tiflash] group by:test.o.c_id, funcs:sum(Column#9)->Column#7, funcs:firstrow(test.o.c_id)->Column#8, funcs:firstrow(test.o.c_id)->test.o.c_id", - " │ └─ExchangeReceiver_32 8000.00 mpp[tiflash] ", - " │ └─ExchangeSender_31 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.o.c_id, collate: binary]", - " │ └─HashAgg_21 8000.00 mpp[tiflash] group by:test.o.c_id, funcs:count(1)->Column#9", - " │ └─TableFullScan_28 10000.00 mpp[tiflash] table:o keep order:false, stats:pseudo", - " └─Selection_19(Probe) 9990.00 mpp[tiflash] not(isnull(test.c.c_id))", - " └─TableFullScan_18 10000.00 mpp[tiflash] table:c pushed down filter:empty, keep order:false, stats:pseudo" + " └─HashAgg_77 8000.00 mpp[tiflash] group by:test.o.c_id, funcs:sum(Column#7)->Column#6, funcs:firstrow(Column#8)->test.o.c_id", + " └─ExchangeReceiver_73 9990.00 mpp[tiflash] ", + " └─ExchangeSender_72 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.o.c_id, collate: binary]", + " └─HashJoin_71 9990.00 mpp[tiflash] inner join, equal:[eq(test.c.c_id, test.o.c_id)]", + " ├─ExchangeReceiver_34(Build) 8000.00 mpp[tiflash] ", + " │ └─ExchangeSender_33 8000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", + " │ └─Projection_29 8000.00 mpp[tiflash] Column#7, Column#8, test.o.c_id", + " │ └─HashAgg_30 8000.00 mpp[tiflash] group by:test.o.c_id, funcs:sum(Column#9)->Column#7, funcs:firstrow(test.o.c_id)->Column#8, funcs:firstrow(test.o.c_id)->test.o.c_id", + " │ └─ExchangeReceiver_32 8000.00 mpp[tiflash] ", + " │ └─ExchangeSender_31 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.o.c_id, collate: binary]", + " │ └─HashAgg_21 8000.00 mpp[tiflash] group by:test.o.c_id, funcs:count(1)->Column#9", + " │ └─TableFullScan_28 10000.00 mpp[tiflash] table:o keep order:false, stats:pseudo", + " └─Selection_19(Probe) 9990.00 mpp[tiflash] not(isnull(test.c.c_id))", + " └─TableFullScan_18 10000.00 mpp[tiflash] table:c pushed down filter:empty, keep order:false, stats:pseudo" ], "Warn": null }, @@ -733,21 +731,20 @@ " └─ExchangeSender 10.00 mpp[tiflash] ExchangeType: PassThrough", " └─TopN 10.00 mpp[tiflash] Column#7, offset:0, count:10", " └─Projection 16000.00 mpp[tiflash] Column#9, Column#7", - " └─HashAgg 16000.00 mpp[tiflash] group by:Column#38, funcs:sum(Column#36)->Column#9, funcs:firstrow(Column#37)->Column#7", - " └─Projection 16000.00 mpp[tiflash] cast(Column#10, decimal(20,0) BINARY)->Column#36, Column#11->Column#37, Column#7->Column#38", - " └─ExchangeReceiver 16000.00 mpp[tiflash] ", - " └─ExchangeSender 16000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#7, collate: binary]", - " └─Union 16000.00 mpp[tiflash] ", - " ├─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, funcs:sum(Column#30)->Column#10, funcs:firstrow(test.t.a)->Column#11, funcs:firstrow(test.t.a)->Column#7", - " │ └─ExchangeReceiver 8000.00 mpp[tiflash] ", - " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary]", - " │ └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, funcs:count(1)->Column#30", - " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, funcs:sum(Column#33)->Column#10, funcs:firstrow(test.t.a)->Column#11, funcs:firstrow(test.t.a)->Column#7", - " └─ExchangeReceiver 8000.00 mpp[tiflash] ", - " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, funcs:count(1)->Column#33", - " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" + " └─HashAgg 16000.00 mpp[tiflash] group by:Column#7, funcs:sum(Column#10)->Column#9, funcs:firstrow(Column#11)->Column#7", + " └─ExchangeReceiver 16000.00 mpp[tiflash] ", + " └─ExchangeSender 16000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#7, collate: binary]", + " └─Union 16000.00 mpp[tiflash] ", + " ├─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, funcs:sum(Column#30)->Column#10, funcs:firstrow(test.t.a)->Column#11, funcs:firstrow(test.t.a)->Column#7", + " │ └─ExchangeReceiver 8000.00 mpp[tiflash] ", + " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary]", + " │ └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, funcs:count(1)->Column#30", + " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, funcs:sum(Column#33)->Column#10, funcs:firstrow(test.t.a)->Column#11, funcs:firstrow(test.t.a)->Column#7", + " └─ExchangeReceiver 8000.00 mpp[tiflash] ", + " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary]", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.a, funcs:count(1)->Column#33", + " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ], "Warn": null } diff --git a/pkg/planner/core/casetest/index/BUILD.bazel b/pkg/planner/core/casetest/index/BUILD.bazel index 648f2e993d7ff..96df3221e09ff 100644 --- a/pkg/planner/core/casetest/index/BUILD.bazel +++ b/pkg/planner/core/casetest/index/BUILD.bazel @@ -9,15 +9,12 @@ go_test( ], data = glob(["testdata/**"]), flaky = True, - shard_count = 14, deps = [ - "//pkg/sessionctx/variable", "//pkg/testkit", "//pkg/testkit/testdata", "//pkg/testkit/testmain", "//pkg/testkit/testsetup", "//pkg/util", - "@com_github_stretchr_testify//require", "@org_uber_go_goleak//:goleak", ], ) diff --git a/pkg/planner/core/casetest/index/index_test.go b/pkg/planner/core/casetest/index/index_test.go index eea129788efa1..e1445b64a8ffc 100644 --- a/pkg/planner/core/casetest/index/index_test.go +++ b/pkg/planner/core/casetest/index/index_test.go @@ -16,318 +16,13 @@ package index import ( "fmt" - "strings" "testing" - "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/testkit" "github.com/pingcap/tidb/pkg/testkit/testdata" "github.com/pingcap/tidb/pkg/util" - "github.com/stretchr/testify/require" ) -func TestIndexJoinUniqueCompositeIndex(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - - tk.MustExec("set tidb_cost_model_version=2") - tk.MustExec("use test") - tk.MustExec("drop table if exists t1, t2") - tk.Session().GetSessionVars().EnableClusteredIndex = variable.ClusteredIndexDefModeIntOnly - tk.MustExec("create table t1(a int not null, c int not null)") - tk.MustExec("create table t2(a int not null, b int not null, c int not null, primary key(a,b))") - tk.MustExec("insert into t1 values(1,1)") - tk.MustExec("insert into t2 values(1,1,1),(1,2,1)") - tk.MustExec("analyze table t1,t2") - - var input []string - var output []struct { - SQL string - Plan []string - } - integrationSuiteData := GetIntegrationSuiteData() - integrationSuiteData.LoadTestCases(t, &input, &output) - for i, tt := range input { - testdata.OnRecord(func() { - output[i].SQL = tt - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery(tt).Rows()) - }) - tk.MustQuery(tt).Check(testkit.Rows(output[i].Plan...)) - } -} - -func TestIndexMergeFromComposedDNFCondition(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - - tk.MustExec("use test") - tk.MustExec("drop table if exists t2") - tk.MustExec("create table t2(pk int primary key, a json, b json, c int, d int, e int, index idx(c, " + - "(cast(a as signed array))), index idx2((cast(b as signed array)), c), index idx3(c, d), index idx4(d));") - - var input []string - var output []struct { - SQL string - Plan []string - } - integrationSuiteData := GetIntegrationSuiteData() - integrationSuiteData.LoadTestCases(t, &input, &output) - - for i, tt := range input { - testdata.OnRecord(func() { - output[i].SQL = tt - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery(tt).Rows()) - }) - tk.MustQuery(tt).Check(testkit.Rows(output[i].Plan...)) - } -} - -func TestIndexMergeFromComposedCNFCondition(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(pk int primary key, a json, b json, c int, d int, index idx((cast(a as signed array))), index idx2((cast(b as signed array))));") - tk.MustExec("create table t2(pk int primary key, a json, b json, c int, d int, index idx(c, (cast(a as signed array))), index idx2((cast(b as signed array)), c), index idx3(c, d), index idx4(d));") - - var input []string - var output []struct { - SQL string - Plan []string - } - integrationSuiteData := GetIntegrationSuiteData() - integrationSuiteData.LoadTestCases(t, &input, &output) - - for i, tt := range input { - testdata.OnRecord(func() { - output[i].SQL = tt - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery(tt).Rows()) - }) - tk.MustQuery(tt).Check(testkit.Rows(output[i].Plan...)) - } -} - -func TestIndexMerge(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(a int, b int, c int, unique index(a), unique index(b), primary key(c))") - - var input []string - var output []struct { - SQL string - Plan []string - } - integrationSuiteData := GetIntegrationSuiteData() - integrationSuiteData.LoadTestCases(t, &input, &output) - for i, tt := range input { - testdata.OnRecord(func() { - output[i].SQL = tt - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery(tt).Rows()) - }) - tk.MustQuery(tt).Check(testkit.Rows(output[i].Plan...)) - } -} - -// for issue #14822 and #38258 -func TestIndexJoinTableRange(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - - tk.MustExec("use test") - tk.MustExec("drop table if exists t1, t2") - tk.MustExec("create table t1(a int, b int, primary key (a), key idx_t1_b (b))") - tk.MustExec("create table t2(a int, b int, primary key (a), key idx_t1_b (b))") - tk.MustExec("create table t3(a int, b int, c int)") - tk.MustExec("create table t4(a int, b int, c int, primary key (a, b) clustered)") - - var input []string - var output []struct { - SQL string - Plan []string - } - integrationSuiteData := GetIntegrationSuiteData() - integrationSuiteData.LoadTestCases(t, &input, &output) - for i, tt := range input { - testdata.OnRecord(func() { - output[i].SQL = tt - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery(tt).Rows()) - }) - tk.MustQuery(tt).Check(testkit.Rows(output[i].Plan...)) - } -} - -func TestIndexJoinInnerIndexNDV(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("set tidb_cost_model_version=2") - tk.MustExec("drop table if exists t1, t2") - tk.MustExec("create table t1(a int not null, b int not null, c int not null)") - tk.MustExec("create table t2(a int not null, b int not null, c int not null, index idx1(a,b), index idx2(c))") - tk.MustExec("insert into t1 values(1,1,1),(1,1,1),(1,1,1)") - tk.MustExec("insert into t2 values(1,1,1),(1,1,2),(1,1,3)") - tk.MustExec("analyze table t1, t2") - - var input []string - var output []struct { - SQL string - Plan []string - } - integrationSuiteData := GetIntegrationSuiteData() - integrationSuiteData.LoadTestCases(t, &input, &output) - for i, tt := range input { - testdata.OnRecord(func() { - output[i].SQL = tt - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery(tt).Rows()) - }) - tk.MustQuery(tt).Check(testkit.Rows(output[i].Plan...)) - } -} - -func TestIndexMergeSerial(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 (a int, b int, unique key(a), unique key(b))") - tk.MustExec("insert into t value (1, 5), (2, 4), (3, 3), (4, 2), (5, 1)") - tk.MustExec("insert into t value (6, 0), (7, -1), (8, -2), (9, -3), (10, -4)") - tk.MustExec("analyze table t") - - var input []string - var output []struct { - SQL string - Plan []string - Warnings []string - } - integrationSuiteData := GetIntegrationSuiteData() - integrationSuiteData.LoadTestCases(t, &input, &output) - for i, tt := range input { - testdata.OnRecord(func() { - output[i].SQL = tt - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery(tt).Rows()) - output[i].Warnings = testdata.ConvertRowsToStrings(tk.MustQuery("show warnings").Rows()) - }) - tk.MustQuery(tt).Check(testkit.Rows(output[i].Plan...)) - tk.MustQuery("show warnings").Check(testkit.Rows(output[i].Warnings...)) - } -} - -func TestIndexJoinOnClusteredIndex(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("set tidb_cost_model_version=2") - tk.Session().GetSessionVars().EnableClusteredIndex = variable.ClusteredIndexDefModeOn - tk.MustExec("drop table if exists t1") - tk.MustExec("create table t (a int, b varchar(20), c decimal(40,10), d int, primary key(a,b), key(c))") - tk.MustExec(`insert into t values (1,"111",1.1,11), (2,"222",2.2,12), (3,"333",3.3,13)`) - tk.MustExec("analyze table t") - - var input []string - var output []struct { - SQL string - Plan []string - Res []string - } - integrationSuiteData := GetIntegrationSuiteData() - integrationSuiteData.LoadTestCases(t, &input, &output) - for i, tt := range input { - testdata.OnRecord(func() { - output[i].SQL = tt - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery("explain format = 'brief' " + tt).Rows()) - output[i].Res = testdata.ConvertRowsToStrings(tk.MustQuery(tt).Rows()) - }) - tk.MustQuery("explain format = 'brief'" + tt).Check(testkit.Rows(output[i].Plan...)) - tk.MustQuery(tt).Check(testkit.Rows(output[i].Res...)) - } -} - -func TestIndexMergeWithCorrelatedColumns(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test;") - - tk.MustExec("set tidb_cost_model_version=2") - tk.MustExec("drop table if exists t1, t2;") - tk.MustExec("create table t1(c1 int, c2 int, c3 int, primary key(c1), key(c2));") - tk.MustExec("insert into t1 values(1, 1, 1);") - tk.MustExec("insert into t1 values(2, 2, 2);") - tk.MustExec("create table t2(c1 int, c2 int, c3 int);") - tk.MustExec("insert into t2 values(1, 1, 1);") - tk.MustExec("insert into t2 values(2, 2, 2);") - - tk.MustExec("drop table if exists tt1, tt2;") - tk.MustExec("create table tt1 (c_int int, c_str varchar(40), c_datetime datetime, c_decimal decimal(12, 6), primary key(c_int), key(c_int), key(c_str), unique key(c_decimal), key(c_datetime));") - tk.MustExec("create table tt2 like tt1 ;") - tk.MustExec(`insert into tt1 (c_int, c_str, c_datetime, c_decimal) values (6, 'sharp payne', '2020-06-07 10:40:39', 6.117000) , - (7, 'objective kare', '2020-02-05 18:47:26', 1.053000) , - (8, 'thirsty pasteur', '2020-01-02 13:06:56', 2.506000) , - (9, 'blissful wilbur', '2020-06-04 11:34:04', 9.144000) , - (10, 'reverent mclean', '2020-02-12 07:36:26', 7.751000) ;`) - tk.MustExec(`insert into tt2 (c_int, c_str, c_datetime, c_decimal) values (6, 'beautiful joliot', '2020-01-16 01:44:37', 5.627000) , - (7, 'hopeful blackburn', '2020-05-23 21:44:20', 7.890000) , - (8, 'ecstatic davinci', '2020-02-01 12:27:17', 5.648000) , - (9, 'hopeful lewin', '2020-05-05 05:58:25', 7.288000) , - (10, 'sharp jennings', '2020-01-28 04:35:03', 9.758000) ;`) - - var input []string - var output []struct { - SQL string - Plan []string - Res []string - } - integrationSuiteData := GetIntegrationSuiteData() - integrationSuiteData.LoadTestCases(t, &input, &output) - for i, tt := range input { - testdata.OnRecord(func() { - output[i].SQL = tt - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery("explain format=brief " + tt).Rows()) - output[i].Res = testdata.ConvertRowsToStrings(tk.MustQuery(tt).Rows()) - }) - tk.MustQuery("explain format=brief " + tt).Check(testkit.Rows(output[i].Plan...)) - tk.MustQuery(tt).Check(testkit.Rows(output[i].Res...)) - } -} - -func TestIndexJoinRangeFallback(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("drop table if exists t1, t2") - tk.MustExec("create table t1(a int, b int, c varchar(10), d varchar(10), index idx_a_b_c_d(a, b, c(2), d(2)))") - tk.MustExec("create table t2(e int, f int, g varchar(10), h varchar(10))") - - var input []string - var output []struct { - SQL string - Plan []string - Warn []string - } - integrationSuiteData := GetIntegrationSuiteData() - integrationSuiteData.LoadTestCases(t, &input, &output) - for i, tt := range input { - setStmt := strings.HasPrefix(tt, "set") - testdata.OnRecord(func() { - output[i].SQL = tt - if !setStmt { - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery(tt).Rows()) - output[i].Warn = testdata.ConvertSQLWarnToStrings(tk.Session().GetSessionVars().StmtCtx.GetWarnings()) - } - }) - if setStmt { - tk.MustExec(tt) - } else { - tk.MustQuery(tt).Check(testkit.Rows(output[i].Plan...)) - require.Equal(t, output[i].Warn, testdata.ConvertSQLWarnToStrings(tk.Session().GetSessionVars().StmtCtx.GetWarnings())) - } - } -} - func TestNullConditionForPrefixIndex(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) @@ -383,89 +78,3 @@ func TestNullConditionForPrefixIndex(t *testing.T) { " └─StreamAgg_9 1.00 cop[tikv] funcs:count(1)->Column#7", " └─IndexRangeScan_16 99.90 cop[tikv] table:t1, index:idx2(c1, c2) range:[\"0xfff\" -inf,\"0xfff\" +inf], keep order:false, stats:pseudo")) } - -func TestHeuristicIndexSelection(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("set tidb_cost_model_version=2") - tk.MustExec("drop table if exists t1, t2") - tk.MustExec("create table t1(a int, b int, c int, d int, e int, f int, g int, primary key (a), unique key c_d_e (c, d, e), unique key f (f), unique key f_g (f, g), key g (g))") - tk.MustExec("create table t2(a int, b int, c int, d int, unique index idx_a (a), unique index idx_b_c (b, c), unique index idx_b_c_a_d (b, c, a, d))") - tk.MustExec("create table t3(a bigint, b varchar(255), c bigint, primary key(a, b) clustered)") - tk.MustExec("create table t4(a bigint, b varchar(255), c bigint, primary key(a, b) nonclustered)") - - // Default RPC encoding may cause statistics explain result differ and then the test unstable. - tk.MustExec("set @@tidb_enable_chunk_rpc = on") - - var input []string - var output []struct { - SQL string - Plan []string - Warnings []string - } - integrationSuiteData := GetIntegrationSuiteData() - integrationSuiteData.LoadTestCases(t, &input, &output) - for i, tt := range input { - testdata.OnRecord(func() { - output[i].SQL = tt - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery("explain format = 'verbose' " + tt).Rows()) - output[i].Warnings = testdata.ConvertRowsToStrings(tk.MustQuery("show warnings").Rows()) - }) - tk.MustQuery("explain format = 'verbose' " + tt).Check(testkit.Rows(output[i].Plan...)) - tk.MustQuery("show warnings").Check(testkit.Rows(output[i].Warnings...)) - } -} - -func TestLimitIndexLookUpKeepOrder(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("set tidb_cost_model_version=2") - tk.MustExec("drop table if exists t;") - tk.MustExec("create table t(a int, b int, c int, d int, index idx(a,b,c));") - - var input []string - var output []struct { - SQL string - Plan []string - } - integrationSuiteData := GetIntegrationSuiteData() - integrationSuiteData.LoadTestCases(t, &input, &output) - for i, tt := range input { - testdata.OnRecord(func() { - output[i].SQL = tt - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery(tt).Rows()) - }) - tk.MustQuery(tt).Check(testkit.Rows(output[i].Plan...)) - } -} - -func TestAccessPathOnClusterIndex(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.Session().GetSessionVars().EnableClusteredIndex = variable.ClusteredIndexDefModeOn - tk.MustExec("drop table if exists t1") - tk.MustExec("create table t1 (a int, b varchar(20), c decimal(40,10), d int, primary key(a,b), key(c))") - tk.MustExec(`insert into t1 values (1,"111",1.1,11), (2,"222",2.2,12), (3,"333",3.3,13)`) - tk.MustExec("analyze table t1") - - var input []string - var output []struct { - SQL string - Plan []string - Res []string - } - integrationSuiteData := GetIntegrationSuiteData() - integrationSuiteData.LoadTestCases(t, &input, &output) - for i, tt := range input { - testdata.OnRecord(func() { - output[i].SQL = tt - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery("explain format='brief' " + tt).Rows()) - output[i].Res = testdata.ConvertRowsToStrings(tk.MustQuery(tt).Sort().Rows()) - }) - tk.MustQuery("explain format='brief' " + tt).Check(testkit.Rows(output[i].Plan...)) - tk.MustQuery(tt).Sort().Check(testkit.Rows(output[i].Res...)) - } -} diff --git a/pkg/planner/core/casetest/index/testdata/integration_suite_in.json b/pkg/planner/core/casetest/index/testdata/integration_suite_in.json index c7dac835f37b3..5bc6d2c672129 100644 --- a/pkg/planner/core/casetest/index/testdata/integration_suite_in.json +++ b/pkg/planner/core/casetest/index/testdata/integration_suite_in.json @@ -1,134 +1,4 @@ [ - { - "name": "TestIndexJoinInnerIndexNDV", - "cases": [ - // t2 should use idx2 instead of idx1, since idx2 has larger NDV. - "explain format = 'brief' select /*+ inl_join(t2) */ * from t1, t2 where t1.a = t2.a and t1.b = t2.b and t1.c = t2.c" - ] - }, - { - "name": "TestIndexJoinUniqueCompositeIndex", - "cases": [ - // Row count of IndexScan should be 2. - "explain format = 'brief' select /*+ TIDB_INLJ(t2) */ * from t1 join t2 on t1.a = t2.a and t1.c = t2.c", - // Row count of IndexScan should be 2. - "explain format = 'brief' select /*+ TIDB_INLJ(t2) */ * from t1 join t2 on t1.a = t2.a and t1.c <= t2.b", - // Row count of IndexScan should be 1. - "explain format = 'brief' select /*+ TIDB_INLJ(t2) */ * from t1 join t2 on t1.a = t2.a and t2.b = 1" - ] - }, - { - "name": "TestIndexMerge", - "cases": [ - "explain format = 'brief' select /*+ USE_INDEX_MERGE(t, a, b) */ * from t where a = 1 or b = 2", - "explain format = 'brief' select /*+ USE_INDEX_MERGE(t, A, B) */ * from t where a = 1 or b = 2", - "explain format = 'brief' select /*+ USE_INDEX_MERGE(t, primary) */ * from t where 1 or t.c", - "explain format = 'brief' select /*+ USE_INDEX_MERGE(t, a, b, c) */ * from t where 1 or t.a = 1 or t.b = 2" - ] - }, - { - "name": "TestIndexJoinTableRange", - "cases": [ - "desc format = 'brief' select /*+ TIDB_INLJ(t2)*/ * from t1, t2 where t1.a = t2.a and t1.b = t2.b", - "desc format = 'brief' select /*+ TIDB_INLJ(t2)*/ * from t1, t2 where t1.a = t2.a and t1.b = t2.a and t1.b = t2.b", - "desc format = 'brief' select /*+ INL_JOIN(t4) */ * from t3 join t4 on t3.a = t4.a where t4.b = 1", - "desc format = 'brief' select /*+ INL_JOIN(t4) */ * from t3 join t4 on t3.b = t4.b where t4.a = 1" - ] - }, - { - "name": "TestAccessPathOnClusterIndex", - "cases": [ - "select * from t1", - "select * from t1 where t1.a >= 1 and t1.a < 4", - "select * from t1 where t1.a = 1 and t1.b < \"333\"", - "select t1.a, t1.b, t1.c from t1 where t1.c = 3.3", - "select t1.b, t1.c from t1 where t1.c = 2.2", - "select /*+ use_index(t1, c) */ * from t1", - "select * from t1 use index(c) where t1.c in (2.2, 3.3)", - "select * from t1 where t1.a = 1 order by b", - "select * from t1 order by a, b limit 1", - "select /*+ use_index_merge(t1 primary, c) */ * from t1 where t1.a >= 1 or t1.c = 2.2", - "select /*+ use_index_merge(t1 primary, c) */ * from t1 where t1.a = 1 and t1.b = '111' or t1.c = 3.3" - ] - }, - { - "name": "TestIndexJoinOnClusteredIndex", - "cases": [ - "select /*+ inl_join(t1, t2) */ * from t t1 join t t2 on t1.a = t2.a", - "select /*+ inl_merge_join(t1, t2) */ * from t t1 join t t2 on t1.a = t2.a", - "select /*+ inl_hash_join(t1, t2) */ * from t t1 join t t2 on t1.a = t2.a", - "select /*+ inl_join(t1, t2) */ * from t t1 join t t2 on t1.a = t2.a and t1.b = t2.b", - "select /*+ inl_join(t1, t2) */ * from t t1 join t t2 on t1.c = t2.c", - "select /*+ inl_merge_join(t1,t2) */ t2.a, t2.c, t2.d from t t1 left join t t2 on t1.a = t2.c;" - ] - }, - { - "name": "TestHeuristicIndexSelection", - "cases": [ - "select * from t1 where a = 3 or a = 5", - "select f, g from t1 where f = 2 and g in (3, 4, 5)", - "select * from t1 where c = 1 and (d = 2 or d = 3) and e in (4, 5)", - "select f, g from t1 where f = 2 and g > 3", - "select a, b, c from t2 where a = 1 and b = 2 and c in (1, 2, 3, 4, 5)", - "select * from t3 where (a = 1 or a = 3) and b = 'xx'", - "select * from t4 where (a = 1 or a = 3) and b = 'xx'", - "select a, b from t3 where (a = 1 or a = 3) and b = 'xx'", - "select a, b from t4 where (a = 1 or a = 3) and b = 'xx'", - "update t1 set b = 2 where a = 4 or a = 6", - "delete from t1 where f = 2 and g in (3, 4)", - "insert into t3 select a, b, c from t1 where f = 2", - "replace into t3 select a, b, c from t1 where a = 3" - ] - }, - { - "name": "TestIndexMergeWithCorrelatedColumns", - "cases": [ - "select * from t2 where c1 < all(select /*+ use_index_merge(t1) */ c1 from t1 where (c1 = 10 and c1 = t2.c3 or c2 = 1 and c2 = t2.c3) and substring(c3, 10)) order by c1;", - "select * from t2 where c1 < all(select /*+ use_index_merge(t1) */ c1 from t1 where (c1 = 10 and c1 = t2.c3 or c2 = 1 and c2 = t2.c3) and reverse(c3)) order by c1;", - "select * from t2 where c1 < all(select /*+ use_index_merge(t1) */ c1 from t1 where (c1 >= 10 and c1 = t2.c3 or c2 = 1 and c2 = t2.c3) and substring(c3, 10)) order by c1;", - // Test correlated column in IndexPath.TableFilters. - "select c_int from tt1 where c_decimal < all (select /*+ use_index_merge(tt2) */ c_decimal from tt2 where tt1.c_int = tt2.c_int and tt1.c_datetime > tt2.c_datetime and tt2.c_decimal = 9.060 or tt2.c_str <= 'interesting shtern' and tt1.c_int = tt2.c_int) order by 1;", - // Test correlated column in TablePath.TableFilters. - "select c_int from tt1 where c_decimal > all (select /*+ use_index_merge(tt2) */ c_decimal from tt2 where tt2.c_int = 7 and tt2.c_int < tt1.c_decimal or tt2.c_str >= 'zzzzzzzzzzzzzzzzzzz' and tt1.c_int = tt2.c_int) order by 1;" - ] - }, - { - "name": "TestIndexMergeSerial", - "cases": [ - "desc format='brief' select /*+ use_index_merge(t) */ * from t where a =1 or (b=1 and b+2>1)", - "desc format='brief' select /*+ use_index_merge(t) */ * from t where a =1 or (b=1 and length(b)=1)", - "desc format='brief' select /*+ use_index_merge(t) */ * from t where (a=1 and length(a)=1) or (b=1 and length(b)=1)", - "desc format='brief' select /*+ use_index_merge(t) */ * from t where (a=1 and length(b)=1) or (b=1 and length(a)=1)" - ] - }, - { - "name": "TestLimitIndexLookUpKeepOrder", - "cases": [ - "desc format = 'brief' select * from t where a = 1 and b > 2 and b < 10 and d = 10 order by b,c limit 10", - "desc format = 'brief' select * from t where a = 1 and b > 2 and b < 10 and d = 10 order by b desc, c desc limit 10" - ] - }, - { - "name": "TestIndexJoinRangeFallback", - "cases": [ - "set @@tidb_opt_range_max_size = 0", - "explain format='brief' select /*+ inl_join(t1) */ * from t1 join t2 on t1.b = t2.e and t1.d = t2.g where t1.a in (1, 3) and t1.c in ('aaa', 'bbb')", - "set @@tidb_opt_range_max_size = 2900", - "explain format='brief' select /*+ inl_join(t1) */ * from t1 join t2 on t1.b = t2.e and t1.d = t2.g where t1.a in (1, 3) and t1.c in ('aaa', 'bbb')", - "set @@tidb_opt_range_max_size = 2300", - "explain format='brief' select /*+ inl_join(t1) */ * from t1 join t2 on t1.b = t2.e and t1.d = t2.g where t1.a in (1, 3) and t1.c in ('aaa', 'bbb')", - "set @@tidb_opt_range_max_size = 700", - "explain format='brief' select /*+ inl_join(t1) */ * from t1 join t2 on t1.b = t2.e and t1.d = t2.g where t1.a in (1, 3) and t1.c in ('aaa', 'bbb')", - "set @@tidb_opt_range_max_size = 0", - "explain format='brief' select /*+ inl_join(t1) */ * from t1 join t2 on t1.a = t2.e where t1.b > 1 and t1.b < 10", - "set @@tidb_opt_range_max_size = 300", - "explain format='brief' select /*+ inl_join(t1) */ * from t1 join t2 on t1.a = t2.e where t1.b > 1 and t1.b < 10", - "set @@tidb_opt_range_max_size = 0", - "explain format='brief' select /*+ inl_join(t1) */ * from t1 join t2 on t1.a = t2.e where t1.b > t2.f and t1.b < t2.f + 10", - "set @@tidb_opt_range_max_size = 300", - "explain format='brief' select /*+ inl_join(t1) */ * from t1 join t2 on t1.a = t2.e where t1.b > t2.f and t1.b < t2.f + 10" - ] - }, { "name": "TestNullConditionForPrefixIndex", "cases": [ @@ -149,30 +19,5 @@ "select b from t3 where a = 1 and b is not null", "select b from t3 where a = 1 and b is null" ] - }, - { - "name": "TestIndexMergeFromComposedCNFCondition", - "cases": [ - "explain select /*+ use_index_merge(t1, idx2, idx) */ * from t1 where 1 member of (a) and 2 member of (b); -- 1: AND index merge from multi member mv index predicate, since member of is single partial path, it can be merged with outer index merge.", - "explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where 1 member of (a) and c=1 and 2 member of (b); -- 2: AND index merge from multi complicated mv index", - "explain select /*+ use_index_merge(t2, idx2, idx, idx4) */ * from t2 where 1 member of (a) and c=1 and 2 member of (b) and d=3; -- 3: AND index merge from multi complicated mv indexes and normal indexes", - "explain select /*+ use_index_merge(t2, idx2, idx, idx3) */ * from t2 where json_contains(a, '[1, 2, 3]') and c=1 and 2 member of (b) and d=3; -- 4: AND index merge from multi complicated mv indexes (json_contains (intersection))and normal indexes", - "explain select /*+ use_index_merge(t2, idx2, idx, idx3) */ * from t2 where json_overlaps(a, '[1, 2, 3]') and c=1 and 2 member of (b) and d=3; -- 5: AND index merge from multi complicated mv indexes (json_overlap (intersection))and normal indexes", - "explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where 1 member of (a) and c=1 and c=2; -- 6: AND index merge from multi complicated mv indexes (empty range)" - ] - }, - { - "name": "TestIndexMergeFromComposedDNFCondition", - "cases": [ - "explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where (1 member of (a) and c=1) or (2 member of (b) and c=1); -- 1: OR index merge from multi complicated mv index (memberof)", - "explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where (1 member of (a) and c=1) or (2 member of (b) and c=1); -- 2: OR index merge from multi complicated mv index (memberof)", - "explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where (1 member of (a) and c=1 and d=2) or (2 member of (b) and c=3 and d=2); -- 3: OR index merge from multi complicated mv index (memberof),while each DNF item contains redundant condition, which should be remained as table filters", - "explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where ( json_contains(a, '[1, 2, 3]') and c=1 and d=2) or (2 member of (b) and c=3 and d=2); -- 4: OR index merge from multi complicated mv index (memberof),make full use of DNF item's condition even if the predicate is intersection case (json_contains)", - "explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where ( json_overlaps(a, '[1, 2, 3]') and c=1 and d=2) or (2 member of (b) and c=3 and d=2); -- 5: OR index merge from multi complicated mv index (memberof),make full use of DNF item's condition even if the predicate is intersection case (json_contains)", - "explain select /*+ use_index_merge(t2, idx2, idx, idx4) */ * from t2 where ( json_contains(a, '[1, 2, 3]') and d=2) or (2 member of (b) and c=3 and d=2); -- 6: OR index merge from multi complicated mv index (memberof),make full use of other DNF items even if one of the DNF items fails", - "explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where (1 member of (a) and 1 member of (b) and c=3) or (3 member of (b) and c=4); -- 7: OR index merge from multi complicated mv index (memberof),each DNF item can be more complicated like a another embedded CNF member-of composition.", - "explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where (1 member of (a) and 1 member of (b) and c=3) or (3 member of (b) and c=4) or e=1; -- 8: OR index merge from multi complicated mv index (memberof), each DNF item should be strict or lax used as index partial path.", - "explain select /*+ use_index_merge(t2, idx2, idx, idx4) */ * from t2 where (1 member of (a) and 1 member of (b) and c=3) or (3 member of (b) and c=4) or d=1; -- 9: OR index merge from multi complicated mv index (memberof), each DNF item should be strict or lax used as index partial path, specify the index in index merge hint" - ] } ] diff --git a/pkg/planner/core/casetest/index/testdata/integration_suite_out.json b/pkg/planner/core/casetest/index/testdata/integration_suite_out.json index ce8eace0ab9b7..990012c0ba2f0 100644 --- a/pkg/planner/core/casetest/index/testdata/integration_suite_out.json +++ b/pkg/planner/core/casetest/index/testdata/integration_suite_out.json @@ -1,879 +1,4 @@ [ - { - "Name": "TestIndexJoinInnerIndexNDV", - "Cases": [ - { - "SQL": "explain format = 'brief' select /*+ inl_join(t2) */ * from t1, t2 where t1.a = t2.a and t1.b = t2.b and t1.c = t2.c", - "Plan": [ - "IndexJoin 3.00 root inner join, inner:IndexLookUp, outer key:test.t1.c, inner key:test.t2.c, equal cond:eq(test.t1.a, test.t2.a), eq(test.t1.b, test.t2.b), eq(test.t1.c, test.t2.c)", - "├─TableReader(Build) 3.00 root data:TableFullScan", - "│ └─TableFullScan 3.00 cop[tikv] table:t1 keep order:false", - "└─IndexLookUp(Probe) 3.00 root ", - " ├─IndexRangeScan(Build) 3.00 cop[tikv] table:t2, index:idx2(c) range: decided by [eq(test.t2.c, test.t1.c)], keep order:false", - " └─TableRowIDScan(Probe) 3.00 cop[tikv] table:t2 keep order:false" - ] - } - ] - }, - { - "Name": "TestIndexJoinUniqueCompositeIndex", - "Cases": [ - { - "SQL": "explain format = 'brief' select /*+ TIDB_INLJ(t2) */ * from t1 join t2 on t1.a = t2.a and t1.c = t2.c", - "Plan": [ - "IndexJoin 2.00 root inner join, inner:IndexLookUp, outer key:test.t1.a, inner key:test.t2.a, equal cond:eq(test.t1.a, test.t2.a), eq(test.t1.c, test.t2.c)", - "├─TableReader(Build) 1.00 root data:TableFullScan", - "│ └─TableFullScan 1.00 cop[tikv] table:t1 keep order:false", - "└─IndexLookUp(Probe) 2.00 root ", - " ├─IndexRangeScan(Build) 2.00 cop[tikv] table:t2, index:PRIMARY(a, b) range: decided by [eq(test.t2.a, test.t1.a)], keep order:false", - " └─TableRowIDScan(Probe) 2.00 cop[tikv] table:t2 keep order:false" - ] - }, - { - "SQL": "explain format = 'brief' select /*+ TIDB_INLJ(t2) */ * from t1 join t2 on t1.a = t2.a and t1.c <= t2.b", - "Plan": [ - "IndexJoin 2.00 root inner join, inner:IndexLookUp, outer key:test.t1.a, inner key:test.t2.a, equal cond:eq(test.t1.a, test.t2.a), other cond:le(test.t1.c, test.t2.b)", - "├─TableReader(Build) 1.00 root data:TableFullScan", - "│ └─TableFullScan 1.00 cop[tikv] table:t1 keep order:false", - "└─IndexLookUp(Probe) 2.00 root ", - " ├─IndexRangeScan(Build) 2.00 cop[tikv] table:t2, index:PRIMARY(a, b) range: decided by [eq(test.t2.a, test.t1.a) le(test.t1.c, test.t2.b)], keep order:false", - " └─TableRowIDScan(Probe) 2.00 cop[tikv] table:t2 keep order:false" - ] - }, - { - "SQL": "explain format = 'brief' select /*+ TIDB_INLJ(t2) */ * from t1 join t2 on t1.a = t2.a and t2.b = 1", - "Plan": [ - "IndexJoin 1.00 root inner join, inner:IndexLookUp, outer key:test.t1.a, inner key:test.t2.a, equal cond:eq(test.t1.a, test.t2.a)", - "├─TableReader(Build) 1.00 root data:TableFullScan", - "│ └─TableFullScan 1.00 cop[tikv] table:t1 keep order:false", - "└─IndexLookUp(Probe) 1.00 root ", - " ├─IndexRangeScan(Build) 1.00 cop[tikv] table:t2, index:PRIMARY(a, b) range: decided by [eq(test.t2.a, test.t1.a) eq(test.t2.b, 1)], keep order:false", - " └─TableRowIDScan(Probe) 1.00 cop[tikv] table:t2 keep order:false" - ] - } - ] - }, - { - "Name": "TestIndexMerge", - "Cases": [ - { - "SQL": "explain format = 'brief' select /*+ USE_INDEX_MERGE(t, a, b) */ * from t where a = 1 or b = 2", - "Plan": [ - "IndexMerge 2.00 root type: union", - "├─IndexRangeScan(Build) 1.00 cop[tikv] table:t, index:a(a) range:[1,1], keep order:false, stats:pseudo", - "├─IndexRangeScan(Build) 1.00 cop[tikv] table:t, index:b(b) range:[2,2], keep order:false, stats:pseudo", - "└─TableRowIDScan(Probe) 2.00 cop[tikv] table:t keep order:false, stats:pseudo" - ] - }, - { - "SQL": "explain format = 'brief' select /*+ USE_INDEX_MERGE(t, A, B) */ * from t where a = 1 or b = 2", - "Plan": [ - "IndexMerge 2.00 root type: union", - "├─IndexRangeScan(Build) 1.00 cop[tikv] table:t, index:a(a) range:[1,1], keep order:false, stats:pseudo", - "├─IndexRangeScan(Build) 1.00 cop[tikv] table:t, index:b(b) range:[2,2], keep order:false, stats:pseudo", - "└─TableRowIDScan(Probe) 2.00 cop[tikv] table:t keep order:false, stats:pseudo" - ] - }, - { - "SQL": "explain format = 'brief' select /*+ USE_INDEX_MERGE(t, primary) */ * from t where 1 or t.c", - "Plan": [ - "TableReader 10000.00 root data:TableFullScan", - "└─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" - ] - }, - { - "SQL": "explain format = 'brief' select /*+ USE_INDEX_MERGE(t, a, b, c) */ * from t where 1 or t.a = 1 or t.b = 2", - "Plan": [ - "TableReader 10000.00 root data:Selection", - "└─Selection 10000.00 cop[tikv] or(1, or(eq(test.t.a, 1), eq(test.t.b, 2)))", - " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" - ] - } - ] - }, - { - "Name": "TestIndexJoinTableRange", - "Cases": [ - { - "SQL": "desc format = 'brief' select /*+ TIDB_INLJ(t2)*/ * from t1, t2 where t1.a = t2.a and t1.b = t2.b", - "Plan": [ - "IndexJoin 12487.50 root inner join, inner:TableReader, outer key:test.t1.a, inner key:test.t2.a, equal cond:eq(test.t1.a, test.t2.a), eq(test.t1.b, test.t2.b)", - "├─IndexReader(Build) 9990.00 root index:IndexFullScan", - "│ └─IndexFullScan 9990.00 cop[tikv] table:t1, index:idx_t1_b(b) keep order:false, stats:pseudo", - "└─TableReader(Probe) 9980.01 root data:Selection", - " └─Selection 9980.01 cop[tikv] not(isnull(test.t2.b))", - " └─TableRangeScan 9990.00 cop[tikv] table:t2 range: decided by [test.t1.a], keep order:false, stats:pseudo" - ] - }, - { - "SQL": "desc format = 'brief' select /*+ TIDB_INLJ(t2)*/ * from t1, t2 where t1.a = t2.a and t1.b = t2.a and t1.b = t2.b", - "Plan": [ - "IndexJoin 12487.50 root inner join, inner:TableReader, outer key:test.t1.a, test.t1.b, inner key:test.t2.a, test.t2.a, equal cond:eq(test.t1.a, test.t2.a), eq(test.t1.b, test.t2.a), eq(test.t1.b, test.t2.b)", - "├─IndexReader(Build) 9990.00 root index:IndexFullScan", - "│ └─IndexFullScan 9990.00 cop[tikv] table:t1, index:idx_t1_b(b) keep order:false, stats:pseudo", - "└─TableReader(Probe) 9980.01 root data:Selection", - " └─Selection 9980.01 cop[tikv] not(isnull(test.t2.b))", - " └─TableRangeScan 9990.00 cop[tikv] table:t2 range: decided by [test.t1.a test.t1.b], keep order:false, stats:pseudo" - ] - }, - { - "SQL": "desc format = 'brief' select /*+ INL_JOIN(t4) */ * from t3 join t4 on t3.a = t4.a where t4.b = 1", - "Plan": [ - "Projection 12.50 root test.t3.a, test.t3.b, test.t3.c, test.t4.a, test.t4.b, test.t4.c", - "└─IndexJoin 12.50 root inner join, inner:TableReader, outer key:test.t3.a, inner key:test.t4.a, equal cond:eq(test.t3.a, test.t4.a)", - " ├─TableReader(Build) 9990.00 root data:Selection", - " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t3.a))", - " │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo", - " └─TableReader(Probe) 9.99 root data:Selection", - " └─Selection 9.99 cop[tikv] eq(test.t4.b, 1)", - " └─TableRangeScan 9990.00 cop[tikv] table:t4 range: decided by [eq(test.t4.a, test.t3.a) eq(test.t4.b, 1)], keep order:false, stats:pseudo" - ] - }, - { - "SQL": "desc format = 'brief' select /*+ INL_JOIN(t4) */ * from t3 join t4 on t3.b = t4.b where t4.a = 1", - "Plan": [ - "Projection 12.50 root test.t3.a, test.t3.b, test.t3.c, test.t4.a, test.t4.b, test.t4.c", - "└─IndexJoin 12.50 root inner join, inner:TableReader, outer key:test.t3.b, inner key:test.t4.b, equal cond:eq(test.t3.b, test.t4.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", - " └─TableReader(Probe) 9.99 root data:Selection", - " └─Selection 9.99 cop[tikv] eq(test.t4.a, 1)", - " └─TableRangeScan 9990.00 cop[tikv] table:t4 range: decided by [eq(test.t4.b, test.t3.b) eq(test.t4.a, 1)], keep order:false, stats:pseudo" - ] - } - ] - }, - { - "Name": "TestAccessPathOnClusterIndex", - "Cases": [ - { - "SQL": "select * from t1", - "Plan": [ - "TableReader 3.00 root data:TableFullScan", - "└─TableFullScan 3.00 cop[tikv] table:t1 keep order:false" - ], - "Res": [ - "1 111 1.1000000000 11", - "2 222 2.2000000000 12", - "3 333 3.3000000000 13" - ] - }, - { - "SQL": "select * from t1 where t1.a >= 1 and t1.a < 4", - "Plan": [ - "TableReader 3.00 root data:TableRangeScan", - "└─TableRangeScan 3.00 cop[tikv] table:t1 range:[1,4), keep order:false" - ], - "Res": [ - "1 111 1.1000000000 11", - "2 222 2.2000000000 12", - "3 333 3.3000000000 13" - ] - }, - { - "SQL": "select * from t1 where t1.a = 1 and t1.b < \"333\"", - "Plan": [ - "TableReader 0.82 root data:TableRangeScan", - "└─TableRangeScan 0.82 cop[tikv] table:t1 range:[1 -inf,1 \"333\"), keep order:false" - ], - "Res": [ - "1 111 1.1000000000 11" - ] - }, - { - "SQL": "select t1.a, t1.b, t1.c from t1 where t1.c = 3.3", - "Plan": [ - "IndexReader 1.00 root index:IndexRangeScan", - "└─IndexRangeScan 1.00 cop[tikv] table:t1, index:c(c) range:[3.3000000000,3.3000000000], keep order:false" - ], - "Res": [ - "3 333 3.3000000000" - ] - }, - { - "SQL": "select t1.b, t1.c from t1 where t1.c = 2.2", - "Plan": [ - "IndexReader 1.00 root index:IndexRangeScan", - "└─IndexRangeScan 1.00 cop[tikv] table:t1, index:c(c) range:[2.2000000000,2.2000000000], keep order:false" - ], - "Res": [ - "222 2.2000000000" - ] - }, - { - "SQL": "select /*+ use_index(t1, c) */ * from t1", - "Plan": [ - "IndexLookUp 3.00 root ", - "├─IndexFullScan(Build) 3.00 cop[tikv] table:t1, index:c(c) keep order:false", - "└─TableRowIDScan(Probe) 3.00 cop[tikv] table:t1 keep order:false" - ], - "Res": [ - "1 111 1.1000000000 11", - "2 222 2.2000000000 12", - "3 333 3.3000000000 13" - ] - }, - { - "SQL": "select * from t1 use index(c) where t1.c in (2.2, 3.3)", - "Plan": [ - "IndexLookUp 2.00 root ", - "├─IndexRangeScan(Build) 2.00 cop[tikv] table:t1, index:c(c) range:[2.2000000000,2.2000000000], [3.3000000000,3.3000000000], keep order:false", - "└─TableRowIDScan(Probe) 2.00 cop[tikv] table:t1 keep order:false" - ], - "Res": [ - "2 222 2.2000000000 12", - "3 333 3.3000000000 13" - ] - }, - { - "SQL": "select * from t1 where t1.a = 1 order by b", - "Plan": [ - "TableReader 1.00 root data:TableRangeScan", - "└─TableRangeScan 1.00 cop[tikv] table:t1 range:[1,1], keep order:true" - ], - "Res": [ - "1 111 1.1000000000 11" - ] - }, - { - "SQL": "select * from t1 order by a, b limit 1", - "Plan": [ - "Limit 1.00 root offset:0, count:1", - "└─TableReader 1.00 root data:Limit", - " └─Limit 1.00 cop[tikv] offset:0, count:1", - " └─TableFullScan 1.00 cop[tikv] table:t1 keep order:true" - ], - "Res": [ - "1 111 1.1000000000 11" - ] - }, - { - "SQL": "select /*+ use_index_merge(t1 primary, c) */ * from t1 where t1.a >= 1 or t1.c = 2.2", - "Plan": [ - "IndexMerge 3.00 root type: union", - "├─TableRangeScan(Build) 3.00 cop[tikv] table:t1 range:[1,+inf], keep order:false", - "├─IndexRangeScan(Build) 1.00 cop[tikv] table:t1, index:c(c) range:[2.2000000000,2.2000000000], keep order:false", - "└─TableRowIDScan(Probe) 3.00 cop[tikv] table:t1 keep order:false" - ], - "Res": [ - "1 111 1.1000000000 11", - "2 222 2.2000000000 12", - "3 333 3.3000000000 13" - ] - }, - { - "SQL": "select /*+ use_index_merge(t1 primary, c) */ * from t1 where t1.a = 1 and t1.b = '111' or t1.c = 3.3", - "Plan": [ - "IndexMerge 1.67 root type: union", - "├─TableRangeScan(Build) 1.00 cop[tikv] table:t1 range:[1 \"111\",1 \"111\"], keep order:false", - "├─IndexRangeScan(Build) 1.00 cop[tikv] table:t1, index:c(c) range:[3.3000000000,3.3000000000], keep order:false", - "└─TableRowIDScan(Probe) 1.67 cop[tikv] table:t1 keep order:false" - ], - "Res": [ - "1 111 1.1000000000 11", - "3 333 3.3000000000 13" - ] - } - ] - }, - { - "Name": "TestIndexJoinOnClusteredIndex", - "Cases": [ - { - "SQL": "select /*+ inl_join(t1, t2) */ * from t t1 join t t2 on t1.a = t2.a", - "Plan": [ - "IndexJoin 3.00 root inner join, inner:TableReader, outer key:test.t.a, inner key:test.t.a, equal cond:eq(test.t.a, test.t.a)", - "├─TableReader(Build) 3.00 root data:TableFullScan", - "│ └─TableFullScan 3.00 cop[tikv] table:t1 keep order:false", - "└─TableReader(Probe) 3.00 root data:TableRangeScan", - " └─TableRangeScan 3.00 cop[tikv] table:t2 range: decided by [eq(test.t.a, test.t.a)], keep order:false" - ], - "Res": [ - "1 111 1.1000000000 11 1 111 1.1000000000 11", - "2 222 2.2000000000 12 2 222 2.2000000000 12", - "3 333 3.3000000000 13 3 333 3.3000000000 13" - ] - }, - { - "SQL": "select /*+ inl_merge_join(t1, t2) */ * from t t1 join t t2 on t1.a = t2.a", - "Plan": [ - "IndexMergeJoin 3.00 root inner join, inner:TableReader, outer key:test.t.a, inner key:test.t.a", - "├─TableReader(Build) 3.00 root data:TableFullScan", - "│ └─TableFullScan 3.00 cop[tikv] table:t1 keep order:false", - "└─TableReader(Probe) 3.00 root data:TableRangeScan", - " └─TableRangeScan 3.00 cop[tikv] table:t2 range: decided by [eq(test.t.a, test.t.a)], keep order:true" - ], - "Res": [ - "1 111 1.1000000000 11 1 111 1.1000000000 11", - "2 222 2.2000000000 12 2 222 2.2000000000 12", - "3 333 3.3000000000 13 3 333 3.3000000000 13" - ] - }, - { - "SQL": "select /*+ inl_hash_join(t1, t2) */ * from t t1 join t t2 on t1.a = t2.a", - "Plan": [ - "IndexHashJoin 3.00 root inner join, inner:TableReader, outer key:test.t.a, inner key:test.t.a, equal cond:eq(test.t.a, test.t.a)", - "├─TableReader(Build) 3.00 root data:TableFullScan", - "│ └─TableFullScan 3.00 cop[tikv] table:t1 keep order:false", - "└─TableReader(Probe) 3.00 root data:TableRangeScan", - " └─TableRangeScan 3.00 cop[tikv] table:t2 range: decided by [eq(test.t.a, test.t.a)], keep order:false" - ], - "Res": [ - "1 111 1.1000000000 11 1 111 1.1000000000 11", - "2 222 2.2000000000 12 2 222 2.2000000000 12", - "3 333 3.3000000000 13 3 333 3.3000000000 13" - ] - }, - { - "SQL": "select /*+ inl_join(t1, t2) */ * from t t1 join t t2 on t1.a = t2.a and t1.b = t2.b", - "Plan": [ - "IndexJoin 3.00 root inner join, inner:TableReader, outer key:test.t.a, test.t.b, inner key:test.t.a, test.t.b, equal cond:eq(test.t.a, test.t.a), eq(test.t.b, test.t.b)", - "├─TableReader(Build) 3.00 root data:TableFullScan", - "│ └─TableFullScan 3.00 cop[tikv] table:t1 keep order:false", - "└─TableReader(Probe) 3.00 root data:TableRangeScan", - " └─TableRangeScan 3.00 cop[tikv] table:t2 range: decided by [eq(test.t.a, test.t.a) eq(test.t.b, test.t.b)], keep order:false" - ], - "Res": [ - "1 111 1.1000000000 11 1 111 1.1000000000 11", - "2 222 2.2000000000 12 2 222 2.2000000000 12", - "3 333 3.3000000000 13 3 333 3.3000000000 13" - ] - }, - { - "SQL": "select /*+ inl_join(t1, t2) */ * from t t1 join t t2 on t1.c = t2.c", - "Plan": [ - "IndexJoin 3.00 root inner join, inner:IndexLookUp, outer key:test.t.c, inner key:test.t.c, equal cond:eq(test.t.c, test.t.c)", - "├─TableReader(Build) 3.00 root data:Selection", - "│ └─Selection 3.00 cop[tikv] not(isnull(test.t.c))", - "│ └─TableFullScan 3.00 cop[tikv] table:t1 keep order:false", - "└─IndexLookUp(Probe) 3.00 root ", - " ├─Selection(Build) 3.00 cop[tikv] not(isnull(test.t.c))", - " │ └─IndexRangeScan 3.00 cop[tikv] table:t2, index:c(c) range: decided by [eq(test.t.c, test.t.c)], keep order:false", - " └─TableRowIDScan(Probe) 3.00 cop[tikv] table:t2 keep order:false" - ], - "Res": [ - "1 111 1.1000000000 11 1 111 1.1000000000 11", - "2 222 2.2000000000 12 2 222 2.2000000000 12", - "3 333 3.3000000000 13 3 333 3.3000000000 13" - ] - }, - { - "SQL": "select /*+ inl_merge_join(t1,t2) */ t2.a, t2.c, t2.d from t t1 left join t t2 on t1.a = t2.c;", - "Plan": [ - "IndexMergeJoin 3.00 root left outer join, inner:Projection, outer key:Column#9, inner key:test.t.c", - "├─Projection(Build) 3.00 root cast(test.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", - "└─Projection(Probe) 3.00 root test.t.a, test.t.c, test.t.d", - " └─IndexLookUp 3.00 root ", - " ├─IndexRangeScan(Build) 3.00 cop[tikv] table:t2, index:c(c) range: decided by [eq(test.t.c, Column#9)], keep order:true", - " └─TableRowIDScan(Probe) 3.00 cop[tikv] table:t2 keep order:false" - ], - "Res": [ - " ", - " ", - " " - ] - } - ] - }, - { - "Name": "TestHeuristicIndexSelection", - "Cases": [ - { - "SQL": "select * from t1 where a = 3 or a = 5", - "Plan": [ - "Batch_Point_Get_5 2.00 887.04 root table:t1 handle:[3 5], keep order:false, desc:false" - ], - "Warnings": [ - "Note 1105 handle of t1 is selected since the path only has point ranges" - ] - }, - { - "SQL": "select f, g from t1 where f = 2 and g in (3, 4, 5)", - "Plan": [ - "Batch_Point_Get_5 3.00 380.16 root table:t1, index:f_g(f, g) keep order:false, desc:false" - ], - "Warnings": [ - "Note 1105 unique index f_g of t1 is selected since the path only has point ranges with single scan" - ] - }, - { - "SQL": "select * from t1 where c = 1 and (d = 2 or d = 3) and e in (4, 5)", - "Plan": [ - "Batch_Point_Get_5 4.00 1774.08 root table:t1, index:c_d_e(c, d, e) keep order:false, desc:false" - ], - "Warnings": [ - "Note 1105 unique index c_d_e of t1 is selected since the path only has point ranges with double scan" - ] - }, - { - "SQL": "select f, g from t1 where f = 2 and g > 3", - "Plan": [ - "IndexReader_6 33.33 733.82 root index:IndexRangeScan_5", - "└─IndexRangeScan_5 33.33 6783.33 cop[tikv] table:t1, index:f_g(f, g) range:(2 3,2 +inf], keep order:false, stats:pseudo" - ], - "Warnings": [ - "Note 1105 unique index f_g of t1 is selected since the path only fetches limited number of rows with single scan" - ] - }, - { - "SQL": "select a, b, c from t2 where a = 1 and b = 2 and c in (1, 2, 3, 4, 5)", - "Plan": [ - "Selection_6 0.01 289.88 root eq(test.t2.b, 2), in(test.t2.c, 1, 2, 3, 4, 5)", - "└─Point_Get_5 1.00 190.08 root table:t2, index:idx_a(a) " - ], - "Warnings": [ - "Note 1105 unique index idx_a of t2 is selected since the path only has point ranges with double scan" - ] - }, - { - "SQL": "select * from t3 where (a = 1 or a = 3) and b = 'xx'", - "Plan": [ - "Batch_Point_Get_5 2.00 1449.36 root table:t3, clustered index:PRIMARY(a, b) keep order:false, desc:false" - ], - "Warnings": [ - "Note 1105 handle of t3 is selected since the path only has point ranges" - ] - }, - { - "SQL": "select * from t4 where (a = 1 or a = 3) and b = 'xx'", - "Plan": [ - "Batch_Point_Get_5 2.00 1449.36 root table:t4, index:PRIMARY(a, b) keep order:false, desc:false" - ], - "Warnings": [ - "Note 1105 unique index PRIMARY of t4 is selected since the path only has point ranges with double scan" - ] - }, - { - "SQL": "select a, b from t3 where (a = 1 or a = 3) and b = 'xx'", - "Plan": [ - "Batch_Point_Get_5 2.00 1322.64 root table:t3, clustered index:PRIMARY(a, b) keep order:false, desc:false" - ], - "Warnings": [ - "Note 1105 handle of t3 is selected since the path only has point ranges" - ] - }, - { - "SQL": "select a, b from t4 where (a = 1 or a = 3) and b = 'xx'", - "Plan": [ - "Batch_Point_Get_5 2.00 1322.64 root table:t4, index:PRIMARY(a, b) keep order:false, desc:false" - ], - "Warnings": [ - "Note 1105 unique index PRIMARY of t4 is selected since the path only has point ranges with single scan" - ] - }, - { - "SQL": "update t1 set b = 2 where a = 4 or a = 6", - "Plan": [ - "Update_4 N/A N/A root N/A", - "└─Batch_Point_Get_6 2.00 887.04 root table:t1 handle:[4 6], keep order:false, desc:false" - ], - "Warnings": [ - "Note 1105 handle of t1 is selected since the path only has point ranges" - ] - }, - { - "SQL": "delete from t1 where f = 2 and g in (3, 4)", - "Plan": [ - "Delete_4 N/A N/A root N/A", - "└─Selection_7 2.00 493.42 root in(test.t1.g, 3, 4)", - " └─Point_Get_6 1.00 443.52 root table:t1, index:f(f) " - ], - "Warnings": [ - "Note 1105 unique index f of t1 is selected since the path only has point ranges with double scan" - ] - }, - { - "SQL": "insert into t3 select a, b, c from t1 where f = 2", - "Plan": [ - "Insert_1 N/A N/A root N/A", - "└─Projection_6 1.00 253.74 root test.t1.a, test.t1.b, test.t1.c", - " └─Point_Get_7 1.00 253.44 root table:t1, index:f(f) " - ], - "Warnings": [ - "Note 1105 unique index f of t1 is selected since the path only has point ranges with double scan" - ] - }, - { - "SQL": "replace into t3 select a, b, c from t1 where a = 3", - "Plan": [ - "Insert_1 N/A N/A root N/A", - "└─Point_Get_7 1.00 190.08 root table:t1 handle:3" - ], - "Warnings": [ - "Note 1105 handle of t1 is selected since the path only has point ranges" - ] - } - ] - }, - { - "Name": "TestIndexMergeWithCorrelatedColumns", - "Cases": [ - { - "SQL": "select * from t2 where c1 < all(select /*+ use_index_merge(t1) */ c1 from t1 where (c1 = 10 and c1 = t2.c3 or c2 = 1 and c2 = t2.c3) and substring(c3, 10)) order by c1;", - "Plan": [ - "Sort 10000.00 root test.t2.c1", - "└─Projection 10000.00 root test.t2.c1, test.t2.c2, test.t2.c3", - " └─Apply 10000.00 root CARTESIAN inner join, other cond:or(and(lt(test.t2.c1, Column#8), if(ne(Column#9, 0), NULL, 1)), or(eq(Column#10, 0), if(isnull(test.t2.c1), NULL, 0)))", - " ├─TableReader(Build) 10000.00 root data:TableFullScan", - " │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", - " └─StreamAgg(Probe) 10000.00 root funcs:min(test.t1.c1)->Column#8, funcs:sum(0)->Column#9, funcs:count(1)->Column#10", - " └─IndexMerge 63.35 root type: union", - " ├─Selection(Build) 10000.00 cop[tikv] eq(10, test.t2.c3)", - " │ └─TableRangeScan 10000.00 cop[tikv] table:t1 range:[10,10], keep order:false, stats:pseudo", - " ├─Selection(Build) 80000.00 cop[tikv] eq(1, test.t2.c3)", - " │ └─IndexRangeScan 100000.00 cop[tikv] table:t1, index:c2(c2) range:[1,1], keep order:false, stats:pseudo", - " └─Selection(Probe) 63.35 cop[tikv] or(and(eq(test.t1.c1, 10), eq(10, test.t2.c3)), and(eq(test.t1.c2, 1), eq(1, test.t2.c3))), substring(cast(test.t1.c3, var_string(20)), 10)", - " └─TableRowIDScan 89992.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Res": [ - "1 1 1", - "2 2 2" - ] - }, - { - "SQL": "select * from t2 where c1 < all(select /*+ use_index_merge(t1) */ c1 from t1 where (c1 = 10 and c1 = t2.c3 or c2 = 1 and c2 = t2.c3) and reverse(c3)) order by c1;", - "Plan": [ - "Sort 10000.00 root test.t2.c1", - "└─Projection 10000.00 root test.t2.c1, test.t2.c2, test.t2.c3", - " └─Apply 10000.00 root CARTESIAN inner join, other cond:or(and(lt(test.t2.c1, Column#8), if(ne(Column#9, 0), NULL, 1)), or(eq(Column#10, 0), if(isnull(test.t2.c1), NULL, 0)))", - " ├─TableReader(Build) 10000.00 root data:TableFullScan", - " │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", - " └─StreamAgg(Probe) 10000.00 root funcs:min(test.t1.c1)->Column#8, funcs:sum(0)->Column#9, funcs:count(1)->Column#10", - " └─IndexMerge 63.35 root type: union", - " ├─Selection(Build) 10000.00 cop[tikv] eq(10, test.t2.c3)", - " │ └─TableRangeScan 10000.00 cop[tikv] table:t1 range:[10,10], keep order:false, stats:pseudo", - " ├─Selection(Build) 80000.00 cop[tikv] eq(1, test.t2.c3)", - " │ └─IndexRangeScan 100000.00 cop[tikv] table:t1, index:c2(c2) range:[1,1], keep order:false, stats:pseudo", - " └─Selection(Probe) 63.35 cop[tikv] or(and(eq(test.t1.c1, 10), eq(10, test.t2.c3)), and(eq(test.t1.c2, 1), eq(1, test.t2.c3))), reverse(cast(test.t1.c3, var_string(20)))", - " └─TableRowIDScan 89992.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Res": [ - "2 2 2" - ] - }, - { - "SQL": "select * from t2 where c1 < all(select /*+ use_index_merge(t1) */ c1 from t1 where (c1 >= 10 and c1 = t2.c3 or c2 = 1 and c2 = t2.c3) and substring(c3, 10)) order by c1;", - "Plan": [ - "Sort 10000.00 root test.t2.c1", - "└─Projection 10000.00 root test.t2.c1, test.t2.c2, test.t2.c3", - " └─Apply 10000.00 root CARTESIAN inner join, other cond:or(and(lt(test.t2.c1, Column#8), if(ne(Column#9, 0), NULL, 1)), or(eq(Column#10, 0), if(isnull(test.t2.c1), NULL, 0)))", - " ├─TableReader(Build) 10000.00 root data:TableFullScan", - " │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", - " └─StreamAgg(Probe) 10000.00 root funcs:min(test.t1.c1)->Column#8, funcs:sum(0)->Column#9, funcs:count(1)->Column#10", - " └─IndexMerge 30263.46 root type: union", - " ├─Selection(Build) 33333.33 cop[tikv] eq(test.t1.c1, test.t2.c3)", - " │ └─TableRangeScan 33333333.33 cop[tikv] table:t1 range:[10,+inf], keep order:false, stats:pseudo", - " ├─Selection(Build) 80000.00 cop[tikv] eq(1, test.t2.c3)", - " │ └─IndexRangeScan 100000.00 cop[tikv] table:t1, index:c2(c2) range:[1,1], keep order:false, stats:pseudo", - " └─Selection(Probe) 30263.46 cop[tikv] or(and(ge(test.t1.c1, 10), eq(test.t1.c1, test.t2.c3)), and(eq(test.t1.c2, 1), eq(1, test.t2.c3))), substring(cast(test.t1.c3, var_string(20)), 10)", - " └─TableRowIDScan 33386666.67 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Res": [ - "1 1 1", - "2 2 2" - ] - }, - { - "SQL": "select c_int from tt1 where c_decimal < all (select /*+ use_index_merge(tt2) */ c_decimal from tt2 where tt1.c_int = tt2.c_int and tt1.c_datetime > tt2.c_datetime and tt2.c_decimal = 9.060 or tt2.c_str <= 'interesting shtern' and tt1.c_int = tt2.c_int) order by 1;", - "Plan": [ - "Projection 10000.00 root test.tt1.c_int", - "└─Apply 10000.00 root CARTESIAN inner join, other cond:or(and(lt(test.tt1.c_decimal, Column#9), if(ne(Column#10, 0), NULL, 1)), or(eq(Column#11, 0), if(isnull(test.tt1.c_decimal), NULL, 0)))", - " ├─TableReader(Build) 10000.00 root data:TableFullScan", - " │ └─TableFullScan 10000.00 cop[tikv] table:tt1 keep order:true, stats:pseudo", - " └─StreamAgg(Probe) 10000.00 root funcs:min(Column#14)->Column#9, funcs:sum(Column#15)->Column#10, funcs:count(1)->Column#11", - " └─Projection 11.05 root test.tt2.c_decimal->Column#14, cast(isnull(test.tt2.c_decimal), decimal(20,0) BINARY)->Column#15", - " └─IndexMerge 11.05 root type: union", - " ├─Selection(Build) 10.00 cop[tikv] eq(test.tt1.c_int, test.tt2.c_int)", - " │ └─IndexRangeScan 10000.00 cop[tikv] table:tt2, index:c_decimal(c_decimal) range:[9.060000,9.060000], keep order:false, stats:pseudo", - " ├─Selection(Build) 33233.33 cop[tikv] eq(test.tt1.c_int, test.tt2.c_int)", - " │ └─IndexRangeScan 33233333.33 cop[tikv] table:tt2, index:c_str(c_str) range:[-inf,\"interesting shtern\"], keep order:false, stats:pseudo", - " └─Selection(Probe) 11.05 cop[tikv] or(and(eq(test.tt1.c_int, test.tt2.c_int), and(gt(test.tt1.c_datetime, test.tt2.c_datetime), eq(test.tt2.c_decimal, 9.060))), and(le(test.tt2.c_str, \"interesting shtern\"), eq(test.tt1.c_int, test.tt2.c_int)))", - " └─TableRowIDScan 33243.33 cop[tikv] table:tt2 keep order:false, stats:pseudo" - ], - "Res": [ - "7", - "8", - "10" - ] - }, - { - "SQL": "select c_int from tt1 where c_decimal > all (select /*+ use_index_merge(tt2) */ c_decimal from tt2 where tt2.c_int = 7 and tt2.c_int < tt1.c_decimal or tt2.c_str >= 'zzzzzzzzzzzzzzzzzzz' and tt1.c_int = tt2.c_int) order by 1;", - "Plan": [ - "Projection 10000.00 root test.tt1.c_int", - "└─Apply 10000.00 root CARTESIAN inner join, other cond:or(and(gt(test.tt1.c_decimal, Column#9), if(ne(Column#10, 0), NULL, 1)), or(eq(Column#11, 0), if(isnull(test.tt1.c_decimal), NULL, 0)))", - " ├─TableReader(Build) 10000.00 root data:TableFullScan", - " │ └─TableFullScan 10000.00 cop[tikv] table:tt1 keep order:true, stats:pseudo", - " └─StreamAgg(Probe) 10000.00 root funcs:max(Column#14)->Column#9, funcs:sum(Column#15)->Column#10, funcs:count(1)->Column#11", - " └─Projection 17.91 root test.tt2.c_decimal->Column#14, cast(isnull(test.tt2.c_decimal), decimal(20,0) BINARY)->Column#15", - " └─IndexMerge 17.91 root type: union", - " ├─Selection(Build) 10000.00 cop[tikv] lt(7, test.tt1.c_decimal)", - " │ └─TableRangeScan 10000.00 cop[tikv] table:tt2 range:[7,7], keep order:false, stats:pseudo", - " ├─Selection(Build) 33333.33 cop[tikv] eq(test.tt1.c_int, test.tt2.c_int)", - " │ └─IndexRangeScan 33333333.33 cop[tikv] table:tt2, index:c_str(c_str) range:[\"zzzzzzzzzzzzzzzzzzz\",+inf], keep order:false, stats:pseudo", - " └─Selection(Probe) 17.91 cop[tikv] or(and(eq(test.tt2.c_int, 7), lt(7, test.tt1.c_decimal)), and(ge(test.tt2.c_str, \"zzzzzzzzzzzzzzzzzzz\"), eq(test.tt1.c_int, test.tt2.c_int)))", - " └─TableRowIDScan 43330.00 cop[tikv] table:tt2 keep order:false, stats:pseudo" - ], - "Res": [ - "6", - "7", - "8", - "9" - ] - } - ] - }, - { - "Name": "TestIndexMergeSerial", - "Cases": [ - { - "SQL": "desc format='brief' select /*+ use_index_merge(t) */ * from t where a =1 or (b=1 and b+2>1)", - "Plan": [ - "IndexMerge 8.00 root type: union", - "├─IndexRangeScan(Build) 1.00 cop[tikv] table:t, index:a(a) range:[1,1], keep order:false", - "├─Selection(Build) 1.00 cop[tikv] 1", - "│ └─IndexRangeScan 1.00 cop[tikv] table:t, index:b(b) range:[1,1], keep order:false", - "└─TableRowIDScan(Probe) 8.00 cop[tikv] table:t keep order:false" - ], - "Warnings": null - }, - { - "SQL": "desc format='brief' select /*+ use_index_merge(t) */ * from t where a =1 or (b=1 and length(b)=1)", - "Plan": [ - "IndexMerge 8.00 root type: union", - "├─IndexRangeScan(Build) 1.00 cop[tikv] table:t, index:a(a) range:[1,1], keep order:false", - "├─Selection(Build) 1.00 cop[tikv] 1", - "│ └─IndexRangeScan 1.00 cop[tikv] table:t, index:b(b) range:[1,1], keep order:false", - "└─TableRowIDScan(Probe) 8.00 cop[tikv] table:t keep order:false" - ], - "Warnings": null - }, - { - "SQL": "desc format='brief' select /*+ use_index_merge(t) */ * from t where (a=1 and length(a)=1) or (b=1 and length(b)=1)", - "Plan": [ - "IndexMerge 8.00 root type: union", - "├─Selection(Build) 1.00 cop[tikv] 1", - "│ └─IndexRangeScan 1.00 cop[tikv] table:t, index:a(a) range:[1,1], keep order:false", - "├─Selection(Build) 1.00 cop[tikv] 1", - "│ └─IndexRangeScan 1.00 cop[tikv] table:t, index:b(b) range:[1,1], keep order:false", - "└─TableRowIDScan(Probe) 8.00 cop[tikv] table:t keep order:false" - ], - "Warnings": null - }, - { - "SQL": "desc format='brief' select /*+ use_index_merge(t) */ * from t where (a=1 and length(b)=1) or (b=1 and length(a)=1)", - "Plan": [ - "IndexMerge 0.29 root type: union", - "├─IndexRangeScan(Build) 1.00 cop[tikv] table:t, index:a(a) range:[1,1], keep order:false", - "├─IndexRangeScan(Build) 1.00 cop[tikv] table:t, index:b(b) range:[1,1], keep order:false", - "└─Selection(Probe) 0.29 cop[tikv] or(and(eq(test.t.a, 1), eq(length(cast(test.t.b, var_string(20))), 1)), and(eq(test.t.b, 1), eq(length(cast(test.t.a, var_string(20))), 1)))", - " └─TableRowIDScan 1.90 cop[tikv] table:t keep order:false" - ], - "Warnings": null - } - ] - }, - { - "Name": "TestLimitIndexLookUpKeepOrder", - "Cases": [ - { - "SQL": "desc format = 'brief' select * from t where a = 1 and b > 2 and b < 10 and d = 10 order by b,c limit 10", - "Plan": [ - "Limit 0.00 root offset:0, count:10", - "└─Projection 0.00 root test.t.a, test.t.b, test.t.c, test.t.d", - " └─IndexLookUp 0.00 root ", - " ├─IndexRangeScan(Build) 2.50 cop[tikv] table:t, index:idx(a, b, c) range:(1 2,1 10), keep order:true, stats:pseudo", - " └─Selection(Probe) 0.00 cop[tikv] eq(test.t.d, 10)", - " └─TableRowIDScan 2.50 cop[tikv] table:t keep order:false, stats:pseudo" - ] - }, - { - "SQL": "desc format = 'brief' select * from t where a = 1 and b > 2 and b < 10 and d = 10 order by b desc, c desc limit 10", - "Plan": [ - "Limit 0.00 root offset:0, count:10", - "└─Projection 0.00 root test.t.a, test.t.b, test.t.c, test.t.d", - " └─IndexLookUp 0.00 root ", - " ├─IndexRangeScan(Build) 2.50 cop[tikv] table:t, index:idx(a, b, c) range:(1 2,1 10), keep order:true, desc, stats:pseudo", - " └─Selection(Probe) 0.00 cop[tikv] eq(test.t.d, 10)", - " └─TableRowIDScan 2.50 cop[tikv] table:t keep order:false, stats:pseudo" - ] - } - ] - }, - { - "Name": "TestIndexJoinRangeFallback", - "Cases": [ - { - "SQL": "set @@tidb_opt_range_max_size = 0", - "Plan": null, - "Warn": null - }, - { - "SQL": "explain format='brief' select /*+ inl_join(t1) */ * from t1 join t2 on t1.b = t2.e and t1.d = t2.g where t1.a in (1, 3) and t1.c in ('aaa', 'bbb')", - "Plan": [ - "IndexJoin 0.50 root inner join, inner:IndexLookUp, outer key:test.t2.e, test.t2.g, inner key:test.t1.b, test.t1.d, equal cond:eq(test.t2.e, test.t1.b), eq(test.t2.g, test.t1.d)", - "├─TableReader(Build) 9980.01 root data:Selection", - "│ └─Selection 9980.01 cop[tikv] not(isnull(test.t2.e)), not(isnull(test.t2.g))", - "│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", - "└─IndexLookUp(Probe) 0.50 root ", - " ├─Selection(Build) 249.50 cop[tikv] not(isnull(test.t1.b)), not(isnull(test.t1.d))", - " │ └─IndexRangeScan 250.00 cop[tikv] table:t1, index:idx_a_b_c_d(a, b, c, d) range: decided by [eq(test.t1.b, test.t2.e) eq(test.t1.d, test.t2.g) in(test.t1.a, 1, 3) in(test.t1.c, aaa, bbb)], keep order:false, stats:pseudo", - " └─Selection(Probe) 0.50 cop[tikv] in(test.t1.c, \"aaa\", \"bbb\")", - " └─TableRowIDScan 249.50 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Warn": null - }, - { - "SQL": "set @@tidb_opt_range_max_size = 2900", - "Plan": null, - "Warn": null - }, - { - "SQL": "explain format='brief' select /*+ inl_join(t1) */ * from t1 join t2 on t1.b = t2.e and t1.d = t2.g where t1.a in (1, 3) and t1.c in ('aaa', 'bbb')", - "Plan": [ - "IndexJoin 0.50 root inner join, inner:IndexLookUp, outer key:test.t2.e, inner key:test.t1.b, equal cond:eq(test.t2.e, test.t1.b), eq(test.t2.g, test.t1.d)", - "├─TableReader(Build) 9980.01 root data:Selection", - "│ └─Selection 9980.01 cop[tikv] not(isnull(test.t2.e)), not(isnull(test.t2.g))", - "│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", - "└─IndexLookUp(Probe) 0.50 root ", - " ├─Selection(Build) 249.50 cop[tikv] not(isnull(test.t1.b)), not(isnull(test.t1.d))", - " │ └─IndexRangeScan 250.00 cop[tikv] table:t1, index:idx_a_b_c_d(a, b, c, d) range: decided by [eq(test.t1.b, test.t2.e) in(test.t1.a, 1, 3) in(test.t1.c, aaa, bbb)], keep order:false, stats:pseudo", - " └─Selection(Probe) 0.50 cop[tikv] in(test.t1.c, \"aaa\", \"bbb\")", - " └─TableRowIDScan 249.50 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Warn": [ - "Memory capacity of 2900 bytes for 'tidb_opt_range_max_size' exceeded when building ranges. Less accurate ranges such as full range are chosen" - ] - }, - { - "SQL": "set @@tidb_opt_range_max_size = 2300", - "Plan": null, - "Warn": null - }, - { - "SQL": "explain format='brief' select /*+ inl_join(t1) */ * from t1 join t2 on t1.b = t2.e and t1.d = t2.g where t1.a in (1, 3) and t1.c in ('aaa', 'bbb')", - "Plan": [ - "IndexJoin 0.50 root inner join, inner:IndexLookUp, outer key:test.t2.e, inner key:test.t1.b, equal cond:eq(test.t2.e, test.t1.b), eq(test.t2.g, test.t1.d)", - "├─TableReader(Build) 9980.01 root data:Selection", - "│ └─Selection 9980.01 cop[tikv] not(isnull(test.t2.e)), not(isnull(test.t2.g))", - "│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", - "└─IndexLookUp(Probe) 0.50 root ", - " ├─Selection(Build) 249.50 cop[tikv] not(isnull(test.t1.b)), not(isnull(test.t1.d))", - " │ └─IndexRangeScan 250.00 cop[tikv] table:t1, index:idx_a_b_c_d(a, b, c, d) range: decided by [eq(test.t1.b, test.t2.e) in(test.t1.a, 1, 3)], keep order:false, stats:pseudo", - " └─Selection(Probe) 0.50 cop[tikv] in(test.t1.c, \"aaa\", \"bbb\")", - " └─TableRowIDScan 249.50 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Warn": [ - "Memory capacity of 2300 bytes for 'tidb_opt_range_max_size' exceeded when building ranges. Less accurate ranges such as full range are chosen" - ] - }, - { - "SQL": "set @@tidb_opt_range_max_size = 700", - "Plan": null, - "Warn": null - }, - { - "SQL": "explain format='brief' select /*+ inl_join(t1) */ * from t1 join t2 on t1.b = t2.e and t1.d = t2.g where t1.a in (1, 3) and t1.c in ('aaa', 'bbb')", - "Plan": [ - "HashJoin 0.05 root inner join, equal:[eq(test.t1.b, test.t2.e) eq(test.t1.d, test.t2.g)]", - "├─IndexLookUp(Build) 0.04 root ", - "│ ├─Selection(Build) 19.96 cop[tikv] not(isnull(test.t1.b)), not(isnull(test.t1.d))", - "│ │ └─IndexRangeScan 20.00 cop[tikv] table:t1, index:idx_a_b_c_d(a, b, c, d) range:[1,1], [3,3], keep order:false, stats:pseudo", - "│ └─Selection(Probe) 0.04 cop[tikv] in(test.t1.c, \"aaa\", \"bbb\")", - "│ └─TableRowIDScan 19.96 cop[tikv] table:t1 keep order:false, stats:pseudo", - "└─TableReader(Probe) 9980.01 root data:Selection", - " └─Selection 9980.01 cop[tikv] not(isnull(test.t2.e)), not(isnull(test.t2.g))", - " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" - ], - "Warn": [ - "Memory capacity of 700 bytes for 'tidb_opt_range_max_size' exceeded when building ranges. Less accurate ranges such as full range are chosen", - "[planner:1815]Optimizer Hint /*+ INL_JOIN(t1) */ or /*+ TIDB_INLJ(t1) */ is inapplicable" - ] - }, - { - "SQL": "set @@tidb_opt_range_max_size = 0", - "Plan": null, - "Warn": null - }, - { - "SQL": "explain format='brief' select /*+ inl_join(t1) */ * from t1 join t2 on t1.a = t2.e where t1.b > 1 and t1.b < 10", - "Plan": [ - "IndexJoin 312.19 root inner join, inner:IndexLookUp, outer key:test.t2.e, inner key:test.t1.a, equal cond:eq(test.t2.e, test.t1.a)", - "├─TableReader(Build) 9990.00 root data:Selection", - "│ └─Selection 9990.00 cop[tikv] not(isnull(test.t2.e))", - "│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", - "└─IndexLookUp(Probe) 312.19 root ", - " ├─Selection(Build) 312.19 cop[tikv] not(isnull(test.t1.a))", - " │ └─IndexRangeScan 312.50 cop[tikv] table:t1, index:idx_a_b_c_d(a, b, c, d) range: decided by [eq(test.t1.a, test.t2.e) gt(test.t1.b, 1) lt(test.t1.b, 10)], keep order:false, stats:pseudo", - " └─TableRowIDScan(Probe) 312.19 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Warn": null - }, - { - "SQL": "set @@tidb_opt_range_max_size = 300", - "Plan": null, - "Warn": null - }, - { - "SQL": "explain format='brief' select /*+ inl_join(t1) */ * from t1 join t2 on t1.a = t2.e where t1.b > 1 and t1.b < 10", - "Plan": [ - "IndexJoin 312.19 root inner join, inner:IndexLookUp, outer key:test.t2.e, inner key:test.t1.a, equal cond:eq(test.t2.e, test.t1.a)", - "├─TableReader(Build) 9990.00 root data:Selection", - "│ └─Selection 9990.00 cop[tikv] not(isnull(test.t2.e))", - "│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", - "└─IndexLookUp(Probe) 312.19 root ", - " ├─Selection(Build) 312.19 cop[tikv] gt(test.t1.b, 1), lt(test.t1.b, 10), not(isnull(test.t1.a))", - " │ └─IndexRangeScan 12500.00 cop[tikv] table:t1, index:idx_a_b_c_d(a, b, c, d) range: decided by [eq(test.t1.a, test.t2.e)], keep order:false, stats:pseudo", - " └─TableRowIDScan(Probe) 312.19 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Warn": [ - "Memory capacity of 300 bytes for 'tidb_opt_range_max_size' exceeded when building ranges. Less accurate ranges such as full range are chosen" - ] - }, - { - "SQL": "set @@tidb_opt_range_max_size = 0", - "Plan": null, - "Warn": null - }, - { - "SQL": "explain format='brief' select /*+ inl_join(t1) */ * from t1 join t2 on t1.a = t2.e where t1.b > t2.f and t1.b < t2.f + 10", - "Plan": [ - "IndexJoin 12475.01 root inner join, inner:IndexLookUp, outer key:test.t2.e, inner key:test.t1.a, equal cond:eq(test.t2.e, test.t1.a), other cond:gt(test.t1.b, test.t2.f), lt(test.t1.b, plus(test.t2.f, 10))", - "├─TableReader(Build) 9980.01 root data:Selection", - "│ └─Selection 9980.01 cop[tikv] not(isnull(test.t2.e)), not(isnull(test.t2.f))", - "│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", - "└─IndexLookUp(Probe) 12475.01 root ", - " ├─Selection(Build) 12475.01 cop[tikv] not(isnull(test.t1.a)), not(isnull(test.t1.b))", - " │ └─IndexRangeScan 12500.00 cop[tikv] table:t1, index:idx_a_b_c_d(a, b, c, d) range: decided by [eq(test.t1.a, test.t2.e) lt(test.t1.b, plus(test.t2.f, 10)) gt(test.t1.b, test.t2.f)], keep order:false, stats:pseudo", - " └─TableRowIDScan(Probe) 12475.01 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Warn": null - }, - { - "SQL": "set @@tidb_opt_range_max_size = 300", - "Plan": null, - "Warn": null - }, - { - "SQL": "explain format='brief' select /*+ inl_join(t1) */ * from t1 join t2 on t1.a = t2.e where t1.b > t2.f and t1.b < t2.f + 10", - "Plan": [ - "IndexJoin 12475.01 root inner join, inner:IndexLookUp, outer key:test.t2.e, inner key:test.t1.a, equal cond:eq(test.t2.e, test.t1.a), other cond:gt(test.t1.b, test.t2.f), lt(test.t1.b, plus(test.t2.f, 10))", - "├─TableReader(Build) 9980.01 root data:Selection", - "│ └─Selection 9980.01 cop[tikv] not(isnull(test.t2.e)), not(isnull(test.t2.f))", - "│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", - "└─IndexLookUp(Probe) 12475.01 root ", - " ├─Selection(Build) 12475.01 cop[tikv] not(isnull(test.t1.a)), not(isnull(test.t1.b))", - " │ └─IndexRangeScan 12500.00 cop[tikv] table:t1, index:idx_a_b_c_d(a, b, c, d) range: decided by [eq(test.t1.a, test.t2.e)], keep order:false, stats:pseudo", - " └─TableRowIDScan(Probe) 12475.01 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Warn": [ - "Memory capacity of 300 bytes for 'tidb_opt_range_max_size' exceeded when building ranges. Less accurate ranges such as full range are chosen" - ] - } - ] - }, { "Name": "TestNullConditionForPrefixIndex", "Cases": [ @@ -1075,160 +200,5 @@ "Result": null } ] - }, - { - "Name": "TestIndexMergeFromComposedCNFCondition", - "Cases": [ - { - "SQL": "explain select /*+ use_index_merge(t1, idx2, idx) */ * from t1 where 1 member of (a) and 2 member of (b); -- 1: AND index merge from multi member mv index predicate, since member of is single partial path, it can be merged with outer index merge.", - "Plan": [ - "IndexMerge_8 10.00 root type: intersection", - "├─IndexRangeScan_5(Build) 10.00 cop[tikv] table:t1, index:idx(cast(`a` as signed array)) range:[1,1], keep order:false, stats:pseudo", - "├─IndexRangeScan_6(Build) 10.00 cop[tikv] table:t1, index:idx2(cast(`b` as signed array)) range:[2,2], keep order:false, stats:pseudo", - "└─TableRowIDScan_7(Probe) 10.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ] - }, - { - "SQL": "explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where 1 member of (a) and c=1 and 2 member of (b); -- 2: AND index merge from multi complicated mv index", - "Plan": [ - "IndexMerge_8 0.10 root type: intersection", - "├─IndexRangeScan_5(Build) 0.10 cop[tikv] table:t2, index:idx(c, cast(`a` as signed array)) range:[1 1,1 1], keep order:false, stats:pseudo", - "├─IndexRangeScan_6(Build) 0.10 cop[tikv] table:t2, index:idx2(cast(`b` as signed array), c) range:[2 1,2 1], keep order:false, stats:pseudo", - "└─TableRowIDScan_7(Probe) 0.10 cop[tikv] table:t2 keep order:false, stats:pseudo" - ] - }, - { - "SQL": "explain select /*+ use_index_merge(t2, idx2, idx, idx4) */ * from t2 where 1 member of (a) and c=1 and 2 member of (b) and d=3; -- 3: AND index merge from multi complicated mv indexes and normal indexes", - "Plan": [ - "IndexMerge_9 0.10 root type: intersection", - "├─IndexRangeScan_5(Build) 10.00 cop[tikv] table:t2, index:idx4(d) range:[3,3], keep order:false, stats:pseudo", - "├─IndexRangeScan_6(Build) 0.10 cop[tikv] table:t2, index:idx(c, cast(`a` as signed array)) range:[1 1,1 1], keep order:false, stats:pseudo", - "├─IndexRangeScan_7(Build) 0.10 cop[tikv] table:t2, index:idx2(cast(`b` as signed array), c) range:[2 1,2 1], keep order:false, stats:pseudo", - "└─TableRowIDScan_8(Probe) 0.10 cop[tikv] table:t2 keep order:false, stats:pseudo" - ] - }, - { - "SQL": "explain select /*+ use_index_merge(t2, idx2, idx, idx3) */ * from t2 where json_contains(a, '[1, 2, 3]') and c=1 and 2 member of (b) and d=3; -- 4: AND index merge from multi complicated mv indexes (json_contains (intersection))and normal indexes", - "Plan": [ - "IndexMerge_11 0.10 root type: intersection", - "├─IndexRangeScan_5(Build) 0.10 cop[tikv] table:t2, index:idx3(c, d) range:[1 3,1 3], keep order:false, stats:pseudo", - "├─IndexRangeScan_6(Build) 0.10 cop[tikv] table:t2, index:idx(c, cast(`a` as signed array)) range:[1 1,1 1], keep order:false, stats:pseudo", - "├─IndexRangeScan_7(Build) 0.10 cop[tikv] table:t2, index:idx(c, cast(`a` as signed array)) range:[1 2,1 2], keep order:false, stats:pseudo", - "├─IndexRangeScan_8(Build) 0.10 cop[tikv] table:t2, index:idx(c, cast(`a` as signed array)) range:[1 3,1 3], keep order:false, stats:pseudo", - "├─IndexRangeScan_9(Build) 0.10 cop[tikv] table:t2, index:idx2(cast(`b` as signed array), c) range:[2 1,2 1], keep order:false, stats:pseudo", - "└─TableRowIDScan_10(Probe) 0.10 cop[tikv] table:t2 keep order:false, stats:pseudo" - ] - }, - { - "SQL": "explain select /*+ use_index_merge(t2, idx2, idx, idx3) */ * from t2 where json_overlaps(a, '[1, 2, 3]') and c=1 and 2 member of (b) and d=3; -- 5: AND index merge from multi complicated mv indexes (json_overlap (intersection))and normal indexes", - "Plan": [ - "Selection_5 0.06 root json_overlaps(test.t2.a, cast(\"[1, 2, 3]\", json BINARY))", - "└─IndexMerge_9 0.10 root type: intersection", - " ├─IndexRangeScan_6(Build) 0.10 cop[tikv] table:t2, index:idx3(c, d) range:[1 3,1 3], keep order:false, stats:pseudo", - " ├─IndexRangeScan_7(Build) 0.10 cop[tikv] table:t2, index:idx2(cast(`b` as signed array), c) range:[2 1,2 1], keep order:false, stats:pseudo", - " └─TableRowIDScan_8(Probe) 0.10 cop[tikv] table:t2 keep order:false, stats:pseudo" - ] - }, - { - "SQL": "explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where 1 member of (a) and c=1 and c=2; -- 6: AND index merge from multi complicated mv indexes (empty range)", - "Plan": [ - "TableDual_5 0.00 root rows:0" - ] - } - ] - }, - { - "Name": "TestIndexMergeFromComposedDNFCondition", - "Cases": [ - { - "SQL": "explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where (1 member of (a) and c=1) or (2 member of (b) and c=1); -- 1: OR index merge from multi complicated mv index (memberof)", - "Plan": [ - "IndexMerge_8 0.10 root type: union", - "├─IndexRangeScan_5(Build) 0.10 cop[tikv] table:t2, index:idx(c, cast(`a` as signed array)) range:[1 1,1 1], keep order:false, stats:pseudo", - "├─IndexRangeScan_6(Build) 0.10 cop[tikv] table:t2, index:idx2(cast(`b` as signed array), c) range:[2 1,2 1], keep order:false, stats:pseudo", - "└─TableRowIDScan_7(Probe) 0.10 cop[tikv] table:t2 keep order:false, stats:pseudo" - ] - }, - { - "SQL": "explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where (1 member of (a) and c=1) or (2 member of (b) and c=1); -- 2: OR index merge from multi complicated mv index (memberof)", - "Plan": [ - "IndexMerge_8 0.10 root type: union", - "├─IndexRangeScan_5(Build) 0.10 cop[tikv] table:t2, index:idx(c, cast(`a` as signed array)) range:[1 1,1 1], keep order:false, stats:pseudo", - "├─IndexRangeScan_6(Build) 0.10 cop[tikv] table:t2, index:idx2(cast(`b` as signed array), c) range:[2 1,2 1], keep order:false, stats:pseudo", - "└─TableRowIDScan_7(Probe) 0.10 cop[tikv] table:t2 keep order:false, stats:pseudo" - ] - }, - { - "SQL": "explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where (1 member of (a) and c=1 and d=2) or (2 member of (b) and c=3 and d=2); -- 3: OR index merge from multi complicated mv index (memberof),while each DNF item contains redundant condition, which should be remained as table filters", - "Plan": [ - "IndexMerge_9 0.10 root type: union", - "├─IndexRangeScan_5(Build) 0.10 cop[tikv] table:t2, index:idx(c, cast(`a` as signed array)) range:[1 1,1 1], keep order:false, stats:pseudo", - "├─IndexRangeScan_6(Build) 0.10 cop[tikv] table:t2, index:idx2(cast(`b` as signed array), c) range:[2 3,2 3], keep order:false, stats:pseudo", - "└─Selection_8(Probe) 0.10 cop[tikv] or(and(json_memberof(cast(1, json BINARY), test.t2.a), and(eq(test.t2.c, 1), eq(test.t2.d, 2))), and(json_memberof(cast(2, json BINARY), test.t2.b), and(eq(test.t2.c, 3), eq(test.t2.d, 2))))", - " └─TableRowIDScan_7 0.10 cop[tikv] table:t2 keep order:false, stats:pseudo" - ] - }, - { - "SQL": "explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where ( json_contains(a, '[1, 2, 3]') and c=1 and d=2) or (2 member of (b) and c=3 and d=2); -- 4: OR index merge from multi complicated mv index (memberof),make full use of DNF item's condition even if the predicate is intersection case (json_contains)", - "Plan": [ - "IndexMerge_9 0.01 root type: union", - "├─IndexRangeScan_5(Build) 10.00 cop[tikv] table:t2, index:idx(c, cast(`a` as signed array)) range:[1,1], keep order:false, stats:pseudo", - "├─IndexRangeScan_6(Build) 0.10 cop[tikv] table:t2, index:idx2(cast(`b` as signed array), c) range:[2 3,2 3], keep order:false, stats:pseudo", - "└─Selection_8(Probe) 0.01 cop[tikv] or(and(json_contains(test.t2.a, cast(\"[1, 2, 3]\", json BINARY)), and(eq(test.t2.c, 1), eq(test.t2.d, 2))), and(json_memberof(cast(2, json BINARY), test.t2.b), and(eq(test.t2.c, 3), eq(test.t2.d, 2))))", - " └─TableRowIDScan_7 10.00 cop[tikv] table:t2 keep order:false, stats:pseudo" - ] - }, - { - "SQL": "explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where ( json_overlaps(a, '[1, 2, 3]') and c=1 and d=2) or (2 member of (b) and c=3 and d=2); -- 5: OR index merge from multi complicated mv index (memberof),make full use of DNF item's condition even if the predicate is intersection case (json_contains)", - "Plan": [ - "Selection_5 0.08 root or(and(json_overlaps(test.t2.a, cast(\"[1, 2, 3]\", json BINARY)), and(eq(test.t2.c, 1), eq(test.t2.d, 2))), and(json_memberof(cast(2, json BINARY), test.t2.b), and(eq(test.t2.c, 3), eq(test.t2.d, 2))))", - "└─IndexMerge_11 0.10 root type: union", - " ├─IndexRangeScan_6(Build) 0.10 cop[tikv] table:t2, index:idx(c, cast(`a` as signed array)) range:[1 1,1 1], keep order:false, stats:pseudo", - " ├─IndexRangeScan_7(Build) 0.10 cop[tikv] table:t2, index:idx(c, cast(`a` as signed array)) range:[1 2,1 2], keep order:false, stats:pseudo", - " ├─IndexRangeScan_8(Build) 0.10 cop[tikv] table:t2, index:idx(c, cast(`a` as signed array)) range:[1 3,1 3], keep order:false, stats:pseudo", - " ├─IndexRangeScan_9(Build) 0.10 cop[tikv] table:t2, index:idx2(cast(`b` as signed array), c) range:[2 3,2 3], keep order:false, stats:pseudo", - " └─TableRowIDScan_10(Probe) 0.10 cop[tikv] table:t2 keep order:false, stats:pseudo" - ] - }, - { - "SQL": "explain select /*+ use_index_merge(t2, idx2, idx, idx4) */ * from t2 where ( json_contains(a, '[1, 2, 3]') and d=2) or (2 member of (b) and c=3 and d=2); -- 6: OR index merge from multi complicated mv index (memberof),make full use of other DNF items even if one of the DNF items fails", - "Plan": [ - "IndexMerge_9 0.01 root type: union", - "├─IndexRangeScan_5(Build) 10.00 cop[tikv] table:t2, index:idx4(d) range:[2,2], keep order:false, stats:pseudo", - "├─IndexRangeScan_6(Build) 0.10 cop[tikv] table:t2, index:idx2(cast(`b` as signed array), c) range:[2 3,2 3], keep order:false, stats:pseudo", - "└─Selection_8(Probe) 0.01 cop[tikv] or(and(json_contains(test.t2.a, cast(\"[1, 2, 3]\", json BINARY)), eq(test.t2.d, 2)), and(json_memberof(cast(2, json BINARY), test.t2.b), and(eq(test.t2.c, 3), eq(test.t2.d, 2))))", - " └─TableRowIDScan_7 10.00 cop[tikv] table:t2 keep order:false, stats:pseudo" - ] - }, - { - "SQL": "explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where (1 member of (a) and 1 member of (b) and c=3) or (3 member of (b) and c=4); -- 7: OR index merge from multi complicated mv index (memberof),each DNF item can be more complicated like a another embedded CNF member-of composition.", - "Plan": [ - "IndexMerge_9 0.10 root type: union", - "├─IndexRangeScan_5(Build) 0.10 cop[tikv] table:t2, index:idx(c, cast(`a` as signed array)) range:[3 1,3 1], keep order:false, stats:pseudo", - "├─IndexRangeScan_6(Build) 0.10 cop[tikv] table:t2, index:idx2(cast(`b` as signed array), c) range:[3 4,3 4], keep order:false, stats:pseudo", - "└─Selection_8(Probe) 0.10 cop[tikv] or(and(json_memberof(cast(1, json BINARY), test.t2.a), and(json_memberof(cast(1, json BINARY), test.t2.b), eq(test.t2.c, 3))), and(json_memberof(cast(3, json BINARY), test.t2.b), eq(test.t2.c, 4)))", - " └─TableRowIDScan_7 0.10 cop[tikv] table:t2 keep order:false, stats:pseudo" - ] - }, - { - "SQL": "explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where (1 member of (a) and 1 member of (b) and c=3) or (3 member of (b) and c=4) or e=1; -- 8: OR index merge from multi complicated mv index (memberof), each DNF item should be strict or lax used as index partial path.", - "Plan": [ - "TableReader_7 25.98 root data:Selection_6", - "└─Selection_6 25.98 cop[tikv] or(and(json_memberof(cast(1, json BINARY), test.t2.a), and(json_memberof(cast(1, json BINARY), test.t2.b), eq(test.t2.c, 3))), or(and(json_memberof(cast(3, json BINARY), test.t2.b), eq(test.t2.c, 4)), eq(test.t2.e, 1)))", - " └─TableFullScan_5 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" - ] - }, - { - "SQL": "explain select /*+ use_index_merge(t2, idx2, idx, idx4) */ * from t2 where (1 member of (a) and 1 member of (b) and c=3) or (3 member of (b) and c=4) or d=1; -- 9: OR index merge from multi complicated mv index (memberof), each DNF item should be strict or lax used as index partial path, specify the index in index merge hint", - "Plan": [ - "IndexMerge_10 0.03 root type: union", - "├─IndexRangeScan_5(Build) 10.00 cop[tikv] table:t2, index:idx4(d) range:[1,1], keep order:false, stats:pseudo", - "├─IndexRangeScan_6(Build) 0.10 cop[tikv] table:t2, index:idx(c, cast(`a` as signed array)) range:[3 1,3 1], keep order:false, stats:pseudo", - "├─IndexRangeScan_7(Build) 0.10 cop[tikv] table:t2, index:idx2(cast(`b` as signed array), c) range:[3 4,3 4], keep order:false, stats:pseudo", - "└─Selection_9(Probe) 0.03 cop[tikv] or(and(json_memberof(cast(1, json BINARY), test.t2.a), and(json_memberof(cast(1, json BINARY), test.t2.b), eq(test.t2.c, 3))), or(and(json_memberof(cast(3, json BINARY), test.t2.b), eq(test.t2.c, 4)), eq(test.t2.d, 1)))", - " └─TableRowIDScan_8 10.00 cop[tikv] table:t2 keep order:false, stats:pseudo" - ] - } - ] } ] diff --git a/pkg/planner/core/casetest/integration_test.go b/pkg/planner/core/casetest/integration_test.go index 04e2f0c2bc9a3..2df7a1222e758 100644 --- a/pkg/planner/core/casetest/integration_test.go +++ b/pkg/planner/core/casetest/integration_test.go @@ -143,62 +143,6 @@ func TestIsolationReadDoNotFilterSystemDB(t *testing.T) { } } -func TestPartitionPruningForInExpr(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") - 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(11) not null, b int) partition by range (a) (partition p0 values less than (4), partition p1 values less than(10), partition p2 values less than maxvalue);") - tk.MustExec("insert into t values (1, 1),(10, 10),(11, 11)") - - var input []string - var output []struct { - SQL string - Plan []string - } - integrationSuiteData := GetIntegrationSuiteData() - integrationSuiteData.LoadTestCases(t, &input, &output) - for i, tt := range input { - testdata.OnRecord(func() { - output[i].SQL = tt - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery(tt).Rows()) - }) - tk.MustQuery(tt).Check(testkit.Rows(output[i].Plan...)) - } -} - -func TestPartitionExplain(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") - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec(`create table pt (id int, c int, key i_id(id), key i_c(c)) partition by range (c) ( -partition p0 values less than (4), -partition p1 values less than (7), -partition p2 values less than (10))`) - - tk.MustExec("set @@tidb_enable_index_merge = 1;") - - var input []string - var output []struct { - SQL string - Plan []string - } - integrationSuiteData := GetIntegrationSuiteData() - integrationSuiteData.LoadTestCases(t, &input, &output) - for i, tt := range input { - testdata.OnRecord(func() { - output[i].SQL = tt - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery("explain " + tt).Rows()) - }) - tk.MustQuery("explain " + tt).Check(testkit.Rows(output[i].Plan...)) - } -} - func TestMergeContinuousSelections(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) @@ -432,11 +376,3 @@ func TestFixControl45132(t *testing.T) { tk.MustExec(`set @@tidb_opt_fix_control = "45132:0"`) tk.MustHavePlan(`select * from t where a=2`, `TableFullScan`) } - -func TestIssue41957(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec(`use test`) - tk.MustExec("CREATE TABLE `github_events` (\n `id` bigint(20) NOT NULL DEFAULT '0',\n `type` varchar(29) NOT NULL DEFAULT 'Event',\n `created_at` datetime NOT NULL DEFAULT '1970-01-01 00:00:00',\n `repo_id` bigint(20) NOT NULL DEFAULT '0',\n `repo_name` varchar(140) NOT NULL DEFAULT '',\n `actor_id` bigint(20) NOT NULL DEFAULT '0',\n `actor_login` varchar(40) NOT NULL DEFAULT '',\n `language` varchar(26) NOT NULL DEFAULT '',\n `additions` bigint(20) NOT NULL DEFAULT '0',\n `deletions` bigint(20) NOT NULL DEFAULT '0',\n `action` varchar(11) NOT NULL DEFAULT '',\n `number` int(11) NOT NULL DEFAULT '0',\n `commit_id` varchar(40) NOT NULL DEFAULT '',\n `comment_id` bigint(20) NOT NULL DEFAULT '0',\n `org_login` varchar(40) NOT NULL DEFAULT '',\n `org_id` bigint(20) NOT NULL DEFAULT '0',\n `state` varchar(6) NOT NULL DEFAULT '',\n `closed_at` datetime NOT NULL DEFAULT '1970-01-01 00:00:00',\n `comments` int(11) NOT NULL DEFAULT '0',\n `pr_merged_at` datetime NOT NULL DEFAULT '1970-01-01 00:00:00',\n `pr_merged` tinyint(1) NOT NULL DEFAULT '0',\n `pr_changed_files` int(11) NOT NULL DEFAULT '0',\n `pr_review_comments` int(11) NOT NULL DEFAULT '0',\n `pr_or_issue_id` bigint(20) NOT NULL DEFAULT '0',\n `event_day` date NOT NULL,\n `event_month` date NOT NULL,\n `event_year` int(11) NOT NULL,\n `push_size` int(11) NOT NULL DEFAULT '0',\n `push_distinct_size` int(11) NOT NULL DEFAULT '0',\n `creator_user_login` varchar(40) NOT NULL DEFAULT '',\n `creator_user_id` bigint(20) NOT NULL DEFAULT '0',\n `pr_or_issue_created_at` datetime NOT NULL DEFAULT '1970-01-01 00:00:00',\n KEY `index_github_events_on_id` (`id`),\n KEY `index_github_events_on_created_at` (`created_at`),\n KEY `index_github_events_on_repo_id_type_action_month_actor_login` (`repo_id`,`type`,`action`,`event_month`,`actor_login`),\n KEY `index_ge_on_repo_id_type_action_pr_merged_created_at_add_del` (`repo_id`,`type`,`action`,`pr_merged`,`created_at`,`additions`,`deletions`),\n KEY `index_ge_on_creator_id_type_action_merged_created_at_add_del` (`creator_user_id`,`type`,`action`,`pr_merged`,`created_at`,`additions`,`deletions`),\n KEY `index_ge_on_actor_id_type_action_created_at_repo_id_commits` (`actor_id`,`type`,`action`,`created_at`,`repo_id`,`push_distinct_size`),\n KEY `index_ge_on_repo_id_type_action_created_at_number_pdsize_psize` (`repo_id`,`type`,`action`,`created_at`,`number`,`push_distinct_size`,`push_size`),\n KEY `index_ge_on_repo_id_type_action_created_at_actor_login` (`repo_id`,`type`,`action`,`created_at`,`actor_login`),\n KEY `index_ge_on_repo_name_type` (`repo_name`,`type`),\n KEY `index_ge_on_actor_login_type` (`actor_login`,`type`),\n KEY `index_ge_on_org_login_type` (`org_login`,`type`),\n KEY `index_ge_on_language` (`language`),\n KEY `index_ge_on_org_id_type` (`org_id`,`type`),\n KEY `index_ge_on_actor_login_lower` ((lower(`actor_login`))),\n KEY `index_ge_on_repo_name_lower` ((lower(`repo_name`))),\n KEY `index_ge_on_language_lower` ((lower(`language`))),\n KEY `index_ge_on_type_action` (`type`,`action`) /*!80000 INVISIBLE */,\n KEY `index_ge_on_repo_id_type_created_at` (`repo_id`,`type`,`created_at`),\n KEY `index_ge_on_repo_id_created_at` (`repo_id`,`created_at`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\nPARTITION BY LIST COLUMNS(`type`)\n(PARTITION `push_event` VALUES IN ('PushEvent'),\n PARTITION `create_event` VALUES IN ('CreateEvent'),\n PARTITION `pull_request_event` VALUES IN ('PullRequestEvent'),\n PARTITION `watch_event` VALUES IN ('WatchEvent'),\n PARTITION `issue_comment_event` VALUES IN ('IssueCommentEvent'),\n PARTITION `issues_event` VALUES IN ('IssuesEvent'),\n PARTITION `delete_event` VALUES IN ('DeleteEvent'),\n PARTITION `fork_event` VALUES IN ('ForkEvent'),\n PARTITION `pull_request_review_comment_event` VALUES IN ('PullRequestReviewCommentEvent'),\n PARTITION `pull_request_review_event` VALUES IN ('PullRequestReviewEvent'),\n PARTITION `gollum_event` VALUES IN ('GollumEvent'),\n PARTITION `release_event` VALUES IN ('ReleaseEvent'),\n PARTITION `member_event` VALUES IN ('MemberEvent'),\n PARTITION `commit_comment_event` VALUES IN ('CommitCommentEvent'),\n PARTITION `public_event` VALUES IN ('PublicEvent'),\n PARTITION `gist_event` VALUES IN ('GistEvent'),\n PARTITION `follow_event` VALUES IN ('FollowEvent'),\n PARTITION `event` VALUES IN ('Event'),\n PARTITION `download_event` VALUES IN ('DownloadEvent'),\n PARTITION `team_add_event` VALUES IN ('TeamAddEvent'),\n PARTITION `fork_apply_event` VALUES IN ('ForkApplyEvent'))\n") - tk.MustQuery("SELECT\n repo_id, GROUP_CONCAT(\n DISTINCT actor_login\n ORDER BY cnt DESC\n SEPARATOR ','\n ) AS actor_logins\nFROM (\n SELECT\n ge.repo_id AS repo_id,\n ge.actor_login AS actor_login,\n COUNT(*) AS cnt\n FROM github_events ge\n WHERE\n type = 'PullRequestEvent' AND action = 'opened'\n AND (ge.created_at >= DATE_SUB(NOW(), INTERVAL 1 DAY) AND ge.created_at <= NOW())\n GROUP BY ge.repo_id, ge.actor_login\n ORDER BY cnt DESC\n) sub\nGROUP BY repo_id").Check(testkit.Rows()) -} diff --git a/pkg/planner/core/casetest/physicalplantest/BUILD.bazel b/pkg/planner/core/casetest/physicalplantest/BUILD.bazel index 63eb84c1bafb4..5281d694291c3 100644 --- a/pkg/planner/core/casetest/physicalplantest/BUILD.bazel +++ b/pkg/planner/core/casetest/physicalplantest/BUILD.bazel @@ -10,7 +10,7 @@ go_test( data = glob(["testdata/**"]), flaky = True, race = "on", - shard_count = 50, + shard_count = 30, deps = [ "//pkg/config", "//pkg/domain", @@ -23,7 +23,6 @@ go_test( "//pkg/planner/core", "//pkg/planner/core/internal", "//pkg/sessionctx/stmtctx", - "//pkg/sessionctx/variable", "//pkg/testkit", "//pkg/testkit/external", "//pkg/testkit/testdata", diff --git a/pkg/planner/core/casetest/physicalplantest/physical_plan_test.go b/pkg/planner/core/casetest/physicalplantest/physical_plan_test.go index 667aec2ca725f..ba29c00fee313 100644 --- a/pkg/planner/core/casetest/physicalplantest/physical_plan_test.go +++ b/pkg/planner/core/casetest/physicalplantest/physical_plan_test.go @@ -32,7 +32,6 @@ import ( "github.com/pingcap/tidb/pkg/planner/core" "github.com/pingcap/tidb/pkg/planner/core/internal" "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" - "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/testkit" "github.com/pingcap/tidb/pkg/testkit/external" "github.com/pingcap/tidb/pkg/testkit/testdata" @@ -52,56 +51,6 @@ func assertSameHints(t *testing.T, expected, actual []*ast.TableOptimizerHint) { require.ElementsMatch(t, expectedStr, actualStr) } -func doTestPushdownDistinct(t *testing.T, vars, input []string, output []struct { - SQL string - Plan []string - Result []string -}) { - 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, b int, c int, index(c))") - tk.MustExec("insert into t values (1, 1, 1), (1, 1, 3), (1, 2, 3), (2, 1, 3), (1, 2, NULL);") - - tk.MustExec("drop table if exists pt") - tk.MustExec(`CREATE TABLE pt (a int, b int) PARTITION BY RANGE (a) ( - PARTITION p0 VALUES LESS THAN (2), - PARTITION p1 VALUES LESS THAN (100) - );`) - - tk.MustExec("drop table if exists tc;") - tk.MustExec("CREATE TABLE `tc`(`timestamp` timestamp NULL DEFAULT NULL, KEY `idx_timestamp` (`timestamp`)) PARTITION BY RANGE ( UNIX_TIMESTAMP(`timestamp`) ) (PARTITION `p2020072312` VALUES LESS THAN (1595480400),PARTITION `p2020072313` VALUES LESS THAN (1595484000));") - - tk.MustExec("drop table if exists ta") - tk.MustExec("create table ta(a int);") - tk.MustExec("insert into ta values(1), (1);") - tk.MustExec("drop table if exists tb") - tk.MustExec("create table tb(a int);") - tk.MustExec("insert into tb values(1), (1);") - - tk.MustExec("set session sql_mode=''") - tk.MustExec(fmt.Sprintf("set session %s=1", variable.TiDBHashAggPartialConcurrency)) - tk.MustExec(fmt.Sprintf("set session %s=1", variable.TiDBHashAggFinalConcurrency)) - - tk.MustExec(`set @@tidb_partition_prune_mode='` + string(variable.Static) + `'`) - - for _, v := range vars { - tk.MustExec(v) - } - - for i, ts := range input { - testdata.OnRecord(func() { - output[i].SQL = ts - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery("explain format = 'brief' " + ts).Rows()) - output[i].Result = testdata.ConvertRowsToStrings(tk.MustQuery(ts).Sort().Rows()) - }) - tk.MustQuery("explain format = 'brief' " + ts).Check(testkit.Rows(output[i].Plan...)) - tk.MustQuery(ts).Sort().Check(testkit.Rows(output[i].Result...)) - } -} - func TestRefine(t *testing.T) { store := testkit.CreateMockStore(t) @@ -196,144 +145,6 @@ func TestRuleColumnPruningLogicalApply(t *testing.T) { } } -func TestINMJHint(t *testing.T) { - var ( - input []string - output []struct { - SQL string - Plan []string - Result []string - } - ) - planSuiteData := GetPlanSuiteData() - planSuiteData.LoadTestCases(t, &input, &output) - 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 primary key, b int not null)") - tk.MustExec("create table t2(a int primary key, b int not null)") - tk.MustExec("insert into t1 values(1,1),(2,2)") - tk.MustExec("insert into t2 values(1,1),(2,1)") - - for i, ts := range input { - testdata.OnRecord(func() { - output[i].SQL = ts - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery("explain format = 'brief' " + ts).Rows()) - output[i].Result = testdata.ConvertRowsToStrings(tk.MustQuery(ts).Sort().Rows()) - }) - tk.MustQuery("explain format = 'brief' " + ts).Check(testkit.Rows(output[i].Plan...)) - tk.MustQuery(ts).Sort().Check(testkit.Rows(output[i].Result...)) - } -} - -func TestEliminateMaxOneRow(t *testing.T) { - var ( - input []string - output []struct { - SQL string - Plan []string - Result []string - } - ) - planSuiteData := GetPlanSuiteData() - planSuiteData.LoadTestCases(t, &input, &output) - 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("drop table if exists t3;") - tk.MustExec("create table t1(a int(11) DEFAULT NULL, b int(11) DEFAULT NULL, UNIQUE KEY idx_a (a))") - tk.MustExec("create table t2(a int(11) DEFAULT NULL, b int(11) DEFAULT NULL)") - tk.MustExec("create table t3(a int(11) DEFAULT NULL, b int(11) DEFAULT NULL, c int(11) DEFAULT NULL, UNIQUE KEY idx_abc (a, b, c))") - - for i, ts := range input { - testdata.OnRecord(func() { - output[i].SQL = ts - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery("explain format = 'brief' " + ts).Rows()) - output[i].Result = testdata.ConvertRowsToStrings(tk.MustQuery(ts).Sort().Rows()) - }) - tk.MustQuery("explain format = 'brief' " + ts).Check(testkit.Rows(output[i].Plan...)) - tk.MustQuery(ts).Check(testkit.Rows(output[i].Result...)) - } -} - -func TestIndexJoinUnionScan(t *testing.T) { - store := testkit.CreateMockStore(t) - - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("set tidb_cost_model_version=2") - tk.MustExec("create table t (a int primary key, b int, index idx(a))") - tk.MustExec("create table tt (a int primary key) partition by range (a) (partition p0 values less than (100), partition p1 values less than (200))") - tk.MustExec(`set @@tidb_partition_prune_mode='` + string(variable.Static) + `'`) - - var input [][]string - var output []struct { - SQL []string - Plan []string - } - planSuiteData := GetPlanSuiteData() - planSuiteData.LoadTestCases(t, &input, &output) - - for i, ts := range input { - tk.MustExec("begin") - for j, tt := range ts { - if j != len(ts)-1 { - tk.MustExec(tt) - } - testdata.OnRecord(func() { - output[i].SQL = ts - if j == len(ts)-1 { - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery(tt).Rows()) - } - }) - if j == len(ts)-1 { - tk.MustQuery(tt).Check(testkit.Rows(output[i].Plan...)) - } - } - tk.MustExec("rollback") - } -} - -func TestMergeJoinUnionScan(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("create table t1 (c_int int, c_str varchar(40), primary key (c_int))") - tk.MustExec("create table t2 (c_int int, c_str varchar(40), primary key (c_int))") - tk.MustExec("insert into t1 (`c_int`, `c_str`) values (11, 'keen williamson'), (10, 'gracious hermann')") - tk.MustExec("insert into t2 (`c_int`, `c_str`) values (10, 'gracious hermann')") - - var input [][]string - var output []struct { - SQL []string - Plan []string - } - planSuiteData := GetPlanSuiteData() - planSuiteData.LoadTestCases(t, &input, &output) - - for i, ts := range input { - tk.MustExec("begin") - for j, tt := range ts { - if j != len(ts)-1 { - tk.MustExec(tt) - } - testdata.OnRecord(func() { - output[i].SQL = ts - if j == len(ts)-1 { - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery(tt).Rows()) - } - }) - if j == len(ts)-1 { - tk.MustQuery(tt).Check(testkit.Rows(output[i].Plan...)) - } - } - tk.MustExec("rollback") - } -} - func TestSemiJoinToInner(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) @@ -1052,364 +863,131 @@ func TestAggToCopHint(t *testing.T) { } } -func TestLimitToCopHint(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("set tidb_cost_model_version=2") - tk.MustExec("drop table if exists tn") - tk.MustExec("create table tn(a int, b int, c int, d int, key (a, b, c, d))") - tk.MustExec(`set tidb_opt_limit_push_down_threshold=0`) - +func TestGroupConcatOrderby(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") var ( input []string output []struct { - SQL string - Plan []string - Warning []string + SQL string + Plan []string + Result []string } ) - planSuiteData := GetPlanSuiteData() planSuiteData.LoadTestCases(t, &input, &output) + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("drop table if exists test;") + tk.MustExec("create table test(id int, name int)") + tk.MustExec("insert into test values(1, 10);") + tk.MustExec("insert into test values(1, 20);") + tk.MustExec("insert into test values(1, 30);") + tk.MustExec("insert into test values(2, 20);") + tk.MustExec("insert into test values(3, 200);") + tk.MustExec("insert into test values(3, 500);") + + tk.MustExec("drop table if exists ptest;") + tk.MustExec("CREATE TABLE ptest (id int,name int) PARTITION BY RANGE ( id ) " + + "(PARTITION `p0` VALUES LESS THAN (2), PARTITION `p1` VALUES LESS THAN (11))") + tk.MustExec("insert into ptest select * from test;") + tk.MustExec(fmt.Sprintf("set session tidb_opt_distinct_agg_push_down = %v", 1)) + tk.MustExec(fmt.Sprintf("set session tidb_opt_agg_push_down = %v", 1)) for i, ts := range input { testdata.OnRecord(func() { output[i].SQL = ts output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery("explain format = 'brief' " + ts).Rows()) + output[i].Result = testdata.ConvertRowsToStrings(tk.MustQuery(ts).Sort().Rows()) }) tk.MustQuery("explain format = 'brief' " + ts).Check(testkit.Rows(output[i].Plan...)) - - comment := fmt.Sprintf("case:%v sql:%s", i, ts) - warnings := tk.Session().GetSessionVars().StmtCtx.GetWarnings() - testdata.OnRecord(func() { - if len(warnings) > 0 { - output[i].Warning = make([]string, len(warnings)) - for j, warning := range warnings { - output[i].Warning[j] = warning.Err.Error() - } - } - }) - if len(output[i].Warning) == 0 { - require.Len(t, warnings, 0) - } else { - require.Len(t, warnings, len(output[i].Warning), comment) - for j, warning := range warnings { - require.Equal(t, stmtctx.WarnLevelWarning, warning.Level, comment) - require.Equal(t, output[i].Warning[j], warning.Err.Error(), comment) - } - } + tk.MustQuery(ts).Check(testkit.Rows(output[i].Result...)) } } -func TestCTEMergeHint(t *testing.T) { +func TestIndexHint(t *testing.T) { store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) tk.MustExec("use test") - tk.MustExec("drop table if exists tc") - tk.MustExec("drop table if exists te") - tk.MustExec("drop table if exists t1") - tk.MustExec("drop table if exists t2") - tk.MustExec("drop table if exists t3") - tk.MustExec("drop table if exists t4") - tk.MustExec("drop view if exists v") - tk.MustExec("create table tc(a int)") - tk.MustExec("create table te(c int)") - tk.MustExec("create table t1(a int)") - tk.MustExec("create table t2(b int)") - tk.MustExec("create table t3(c int)") - tk.MustExec("create table t4(d int)") - tk.MustExec("insert into tc values (1), (5), (10), (15), (20), (30), (50);") - tk.MustExec("insert into te values (1), (5), (10), (25), (40), (60), (100);") - tk.MustExec("insert into t1 values (1), (5), (10), (25), (40), (60), (100);") - tk.MustExec("insert into t2 values (1), (5), (10), (25), (40), (60), (100);") - tk.MustExec("insert into t3 values (1), (5), (10), (25), (40), (60), (100);") - tk.MustExec("insert into t4 values (1), (5), (10), (25), (40), (60), (100);") - tk.MustExec("analyze table tc;") - tk.MustExec("analyze table te;") - tk.MustExec("analyze table t1;") - tk.MustExec("analyze table t2;") - tk.MustExec("analyze table t3;") - tk.MustExec("analyze table t4;") - tk.MustExec("create definer='root'@'localhost' view v as select * from tc") - var ( - input []string - output []struct { - SQL string - Plan []string - Warning []string - } - ) + var input []string + var output []struct { + SQL string + Best string + HasWarn bool + Hints string + } planSuiteData := GetPlanSuiteData() planSuiteData.LoadTestCases(t, &input, &output) + ctx := context.Background() + p := parser.New() + is := infoschema.MockInfoSchema([]*model.TableInfo{core.MockSignedTable(), core.MockUnsignedTable()}) - for i, ts := range input { - testdata.OnRecord(func() { - output[i].SQL = ts - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery("explain format = 'brief' " + ts).Rows()) - }) - tk.MustQuery("explain format = 'brief' " + ts).Check(testkit.Rows(output[i].Plan...)) + for i, test := range input { + comment := fmt.Sprintf("case:%v sql:%s", i, test) + tk.Session().GetSessionVars().StmtCtx.SetWarnings(nil) - comment := fmt.Sprintf("case:%v sql:%s", i, ts) - warnings := tk.Session().GetSessionVars().StmtCtx.GetWarnings() + stmt, err := p.ParseOneStmt(test, "", "") + require.NoError(t, err, comment) + + p, _, err := planner.Optimize(ctx, tk.Session(), stmt, is) + require.NoError(t, err) testdata.OnRecord(func() { - if len(warnings) > 0 { - output[i].Warning = make([]string, len(warnings)) - for j, warning := range warnings { - output[i].Warning[j] = warning.Err.Error() - } - } + output[i].SQL = test + output[i].Best = core.ToString(p) + output[i].HasWarn = len(tk.Session().GetSessionVars().StmtCtx.GetWarnings()) > 0 + output[i].Hints = hint.RestoreOptimizerHints(core.GenHintsFromPhysicalPlan(p)) }) - if len(output[i].Warning) == 0 { - require.Len(t, warnings, 0) + require.Equal(t, output[i].Best, core.ToString(p), comment) + warnings := tk.Session().GetSessionVars().StmtCtx.GetWarnings() + if output[i].HasWarn { + require.Len(t, warnings, 1, comment) } else { - require.Len(t, warnings, len(output[i].Warning), comment) - for j, warning := range warnings { - require.Equal(t, stmtctx.WarnLevelWarning, warning.Level, comment) - require.Equal(t, output[i].Warning[j], warning.Err.Error(), comment) - } + require.Len(t, warnings, 0, comment) } + hints := core.GenHintsFromPhysicalPlan(p) + + // test the new genHints code + flat := core.FlattenPhysicalPlan(p, false) + newHints := core.GenHintsFromFlatPlan(flat) + assertSameHints(t, hints, newHints) + + require.Equal(t, output[i].Hints, hint.RestoreOptimizerHints(hints), comment) } } -func TestForceInlineCTE(t *testing.T) { +func TestIndexMergeHint(t *testing.T) { store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) tk.MustExec("use test") tk.MustExec("set tidb_cost_model_version=2") - tk.MustExec("drop table if exists t;") - tk.MustExec("CREATE TABLE `t` (`a` int(11));") - tk.MustExec("insert into t values (1), (5), (10), (15), (20), (30), (50);") - var ( - input []string - output []struct { - SQL string - Plan []string - Warning []string - } - ) + var input []string + var output []struct { + SQL string + Best string + HasWarn bool + Hints string + } planSuiteData := GetPlanSuiteData() planSuiteData.LoadTestCases(t, &input, &output) + ctx := context.Background() + p := parser.New() + is := infoschema.MockInfoSchema([]*model.TableInfo{core.MockSignedTable(), core.MockUnsignedTable()}) - for i, ts := range input { - testdata.OnRecord(func() { - output[i].SQL = ts - }) - if strings.HasPrefix(ts, "set") { - tk.MustExec(ts) - continue - } - testdata.OnRecord(func() { - output[i].SQL = ts - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery("explain format='brief' " + ts).Rows()) - }) - tk.MustQuery("explain format='brief' " + ts).Check(testkit.Rows(output[i].Plan...)) - - comment := fmt.Sprintf("case:%v sql:%s", i, ts) - warnings := tk.Session().GetSessionVars().StmtCtx.GetWarnings() - testdata.OnRecord(func() { - if len(warnings) > 0 { - output[i].Warning = make([]string, len(warnings)) - for j, warning := range warnings { - output[i].Warning[j] = warning.Err.Error() - } - } - }) - if len(output[i].Warning) == 0 { - require.Len(t, warnings, 0) - } else { - require.Len(t, warnings, len(output[i].Warning), comment) - for j, warning := range warnings { - require.Equal(t, stmtctx.WarnLevelWarning, warning.Level, comment) - require.Equal(t, output[i].Warning[j], warning.Err.Error(), comment) - } - } - } -} - -func TestSingleConsumerCTE(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` (`a` int(11));") - tk.MustExec("create table t1 (c1 int primary key, c2 int, index c2 (c2));") - tk.MustExec("create table t2 (c1 int unique, c2 int);") - tk.MustExec("insert into t values (1), (5), (10), (15), (20), (30), (50);") - - var ( - input []string - output []struct { - SQL string - Plan []string - Warning []string - } - ) - planSuiteData := GetPlanSuiteData() - planSuiteData.LoadTestCases(t, &input, &output) - - for i, ts := range input { - testdata.OnRecord(func() { - output[i].SQL = ts - }) - if strings.HasPrefix(ts, "set") { - tk.MustExec(ts) - continue - } - testdata.OnRecord(func() { - output[i].SQL = ts - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery("explain format='brief' " + ts).Rows()) - }) - tk.MustQuery("explain format='brief' " + ts).Check(testkit.Rows(output[i].Plan...)) - } -} - -func TestPushdownDistinctEnableAggPushDownDisable(t *testing.T) { - var ( - input []string - output []struct { - SQL string - Plan []string - Result []string - } - ) - planSuiteData := GetPlanSuiteData() - planSuiteData.LoadTestCases(t, &input, &output) - vars := []string{ - fmt.Sprintf("set @@session.%s = 1", variable.TiDBOptDistinctAggPushDown), - "set session tidb_opt_agg_push_down = 0", - "set tidb_cost_model_version=2", - } - doTestPushdownDistinct(t, vars, input, output) -} - -func TestGroupConcatOrderby(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") - var ( - input []string - output []struct { - SQL string - Plan []string - Result []string - } - ) - planSuiteData := GetPlanSuiteData() - planSuiteData.LoadTestCases(t, &input, &output) - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("drop table if exists test;") - tk.MustExec("create table test(id int, name int)") - tk.MustExec("insert into test values(1, 10);") - tk.MustExec("insert into test values(1, 20);") - tk.MustExec("insert into test values(1, 30);") - tk.MustExec("insert into test values(2, 20);") - tk.MustExec("insert into test values(3, 200);") - tk.MustExec("insert into test values(3, 500);") - - tk.MustExec("drop table if exists ptest;") - tk.MustExec("CREATE TABLE ptest (id int,name int) PARTITION BY RANGE ( id ) " + - "(PARTITION `p0` VALUES LESS THAN (2), PARTITION `p1` VALUES LESS THAN (11))") - tk.MustExec("insert into ptest select * from test;") - tk.MustExec(fmt.Sprintf("set session tidb_opt_distinct_agg_push_down = %v", 1)) - tk.MustExec(fmt.Sprintf("set session tidb_opt_agg_push_down = %v", 1)) - - for i, ts := range input { - testdata.OnRecord(func() { - output[i].SQL = ts - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery("explain format = 'brief' " + ts).Rows()) - output[i].Result = testdata.ConvertRowsToStrings(tk.MustQuery(ts).Sort().Rows()) - }) - tk.MustQuery("explain format = 'brief' " + ts).Check(testkit.Rows(output[i].Plan...)) - tk.MustQuery(ts).Check(testkit.Rows(output[i].Result...)) - } -} - -func TestIndexHint(t *testing.T) { - store := testkit.CreateMockStore(t) - - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - - var input []string - var output []struct { - SQL string - Best string - HasWarn bool - Hints string - } - planSuiteData := GetPlanSuiteData() - planSuiteData.LoadTestCases(t, &input, &output) - ctx := context.Background() - p := parser.New() - is := infoschema.MockInfoSchema([]*model.TableInfo{core.MockSignedTable(), core.MockUnsignedTable()}) - - for i, test := range input { - comment := fmt.Sprintf("case:%v sql:%s", i, test) - tk.Session().GetSessionVars().StmtCtx.SetWarnings(nil) - - stmt, err := p.ParseOneStmt(test, "", "") - require.NoError(t, err, comment) - - p, _, err := planner.Optimize(ctx, tk.Session(), stmt, is) - require.NoError(t, err) - testdata.OnRecord(func() { - output[i].SQL = test - output[i].Best = core.ToString(p) - output[i].HasWarn = len(tk.Session().GetSessionVars().StmtCtx.GetWarnings()) > 0 - output[i].Hints = hint.RestoreOptimizerHints(core.GenHintsFromPhysicalPlan(p)) - }) - require.Equal(t, output[i].Best, core.ToString(p), comment) - warnings := tk.Session().GetSessionVars().StmtCtx.GetWarnings() - if output[i].HasWarn { - require.Len(t, warnings, 1, comment) - } else { - require.Len(t, warnings, 0, comment) - } - hints := core.GenHintsFromPhysicalPlan(p) - - // test the new genHints code - flat := core.FlattenPhysicalPlan(p, false) - newHints := core.GenHintsFromFlatPlan(flat) - assertSameHints(t, hints, newHints) - - require.Equal(t, output[i].Hints, hint.RestoreOptimizerHints(hints), comment) - } -} - -func TestIndexMergeHint(t *testing.T) { - store := testkit.CreateMockStore(t) - - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("set tidb_cost_model_version=2") - - var input []string - var output []struct { - SQL string - Best string - HasWarn bool - Hints string - } - planSuiteData := GetPlanSuiteData() - planSuiteData.LoadTestCases(t, &input, &output) - ctx := context.Background() - p := parser.New() - is := infoschema.MockInfoSchema([]*model.TableInfo{core.MockSignedTable(), core.MockUnsignedTable()}) - - for i, test := range input { - comment := fmt.Sprintf("case:%v sql:%s", i, test) - tk.Session().GetSessionVars().StmtCtx.SetWarnings(nil) - stmt, err := p.ParseOneStmt(test, "", "") - require.NoError(t, err, comment) - sctx := tk.Session() - err = executor.ResetContextOfStmt(sctx, stmt) - require.NoError(t, err) - p, _, err := planner.Optimize(ctx, tk.Session(), stmt, is) - require.NoError(t, err) + for i, test := range input { + comment := fmt.Sprintf("case:%v sql:%s", i, test) + tk.Session().GetSessionVars().StmtCtx.SetWarnings(nil) + stmt, err := p.ParseOneStmt(test, "", "") + require.NoError(t, err, comment) + sctx := tk.Session() + err = executor.ResetContextOfStmt(sctx, stmt) + require.NoError(t, err) + p, _, err := planner.Optimize(ctx, tk.Session(), stmt, is) + require.NoError(t, err) testdata.OnRecord(func() { output[i].SQL = test output[i].Best = core.ToString(p) @@ -1511,382 +1089,89 @@ func TestInlineProjection(t *testing.T) { output[i].Plan = core.ToString(p) output[i].Hints = hint.RestoreOptimizerHints(core.GenHintsFromPhysicalPlan(p)) }) - require.Equal(t, output[i].Plan, core.ToString(p), comment) - hints := core.GenHintsFromPhysicalPlan(p) - - // test the new genHints code - flat := core.FlattenPhysicalPlan(p, false) - newHints := core.GenHintsFromFlatPlan(flat) - assertSameHints(t, hints, newHints) - - require.Equal(t, output[i].Hints, hint.RestoreOptimizerHints(hints), comment) - } -} - -func TestIndexJoinHint(t *testing.T) { - store := testkit.CreateMockStore(t) - - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("set tidb_cost_model_version=2") - tk.MustExec(`drop table if exists test.t1, test.t2, test.t;`) - tk.MustExec(`create table test.t1(a bigint, b bigint, index idx_a(a), index idx_b(b));`) - tk.MustExec(`create table test.t2(a bigint, b bigint, index idx_a(a), index idx_b(b));`) - tk.MustExec("CREATE TABLE `t` ( `a` bigint(20) NOT NULL, `b` tinyint(1) DEFAULT NULL, `c` datetime DEFAULT NULL, `d` int(10) unsigned DEFAULT NULL, `e` varchar(20) DEFAULT NULL, `f` double DEFAULT NULL, `g` decimal(30,5) DEFAULT NULL, `h` float DEFAULT NULL, `i` date DEFAULT NULL, `j` timestamp NULL DEFAULT NULL, PRIMARY KEY (`a`), UNIQUE KEY `b` (`b`), KEY `c` (`c`,`d`,`e`), KEY `f` (`f`), KEY `g` (`g`,`h`), KEY `g_2` (`g`), UNIQUE KEY `g_3` (`g`), KEY `i` (`i`) );") - - var input []string - var output []struct { - SQL string - Plan string - } - - is := domain.GetDomain(tk.Session()).InfoSchema() - p := parser.New() - ctx := context.Background() - - planSuiteData := GetPlanSuiteData() - planSuiteData.LoadTestCases(t, &input, &output) - for i, tt := range input { - comment := fmt.Sprintf("case:%v sql: %s", i, tt) - stmt, err := p.ParseOneStmt(tt, "", "") - require.NoError(t, err, comment) - p, _, err := planner.Optimize(ctx, tk.Session(), stmt, is) - require.NoError(t, err, comment) - testdata.OnRecord(func() { - output[i].SQL = tt - output[i].Plan = core.ToString(p) - }) - require.Equal(t, output[i].Plan, core.ToString(p), comment) - } -} - -func TestNominalSort(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - var input []string - var output []struct { - SQL string - Plan []string - Result []string - } - tk.MustExec("create table t (a int, b int, index idx_a(a), index idx_b(b))") - tk.MustExec("insert into t values(1, 1)") - tk.MustExec("insert into t values(1, 2)") - tk.MustExec("insert into t values(2, 4)") - tk.MustExec("insert into t values(3, 5)") - planSuiteData := GetPlanSuiteData() - planSuiteData.LoadTestCases(t, &input, &output) - for i, ts := range input { - testdata.OnRecord(func() { - output[i].SQL = ts - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery("explain format = 'brief' " + ts).Rows()) - output[i].Result = testdata.ConvertRowsToStrings(tk.MustQuery(ts).Rows()) - }) - tk.MustQuery("explain format = 'brief' " + ts).Check(testkit.Rows(output[i].Plan...)) - tk.MustQuery(ts).Check(testkit.Rows(output[i].Result...)) - } -} - -func TestHintFromDiffDatabase(t *testing.T) { - store := testkit.CreateMockStore(t) - - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec(`drop table if exists test.t1`) - tk.MustExec(`create table test.t1(a bigint, index idx_a(a));`) - tk.MustExec(`create table test.t2(a bigint, index idx_a(a));`) - tk.MustExec("drop database if exists test2") - tk.MustExec("create database test2") - tk.MustExec("use test2") - - var input []string - var output []struct { - SQL string - Plan string - } - is := domain.GetDomain(tk.Session()).InfoSchema() - p := parser.New() - ctx := context.Background() - - planSuiteData := GetPlanSuiteData() - planSuiteData.LoadTestCases(t, &input, &output) - for i, tt := range input { - comment := fmt.Sprintf("case:%v sql: %s", i, tt) - stmt, err := p.ParseOneStmt(tt, "", "") - require.NoError(t, err, comment) - p, _, err := planner.Optimize(ctx, tk.Session(), stmt, is) - require.NoError(t, err, comment) - testdata.OnRecord(func() { - output[i].SQL = tt - output[i].Plan = core.ToString(p) - }) - require.Equal(t, output[i].Plan, core.ToString(p), comment) - } -} - -func TestNthPlanHintWithExplain(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec(`drop table if exists test.tt`) - tk.MustExec(`create table test.tt (a int,b int, index(a), index(b));`) - tk.MustExec("insert into tt values (1, 1), (2, 2), (3, 4)") - tk.MustExec(`set @@tidb_partition_prune_mode='` + string(variable.Static) + `'`) - - var input []string - var output []struct { - SQL string - Plan []string - } - planSuiteData := GetPlanSuiteData() - planSuiteData.LoadTestCases(t, &input, &output) - for i, ts := range input { - testdata.OnRecord(func() { - output[i].SQL = ts - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery("explain format = 'brief' " + ts).Rows()) - }) - tk.MustQuery("explain format = 'brief' " + ts).Check(testkit.Rows(output[i].Plan...)) - } - - // This assertion makes sure a query with or without nth_plan() hint output exactly the same plan(including plan ID). - // The query below is the same as queries in the testdata except for nth_plan() hint. - // Currently, its output is the same as the second test case in the testdata, which is `output[1]`. If this doesn't - // hold in the future, you may need to modify this. - tk.MustQuery("explain format = 'brief' select * from test.tt where a=1 and b=1").Check(testkit.Rows(output[1].Plan...)) -} - -func TestEnumIndex(t *testing.T) { - var ( - input []string - output []struct { - SQL string - Plan []string - Result []string - } - ) - planSuiteData := GetPlanSuiteData() - planSuiteData.LoadTestCases(t, &input, &output) - 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(e enum('c','b','a',''), index idx(e))") - tk.MustExec("insert ignore into t values(0),(1),(2),(3),(4);") - - for i, ts := range input { - testdata.OnRecord(func() { - output[i].SQL = ts - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery("explain format='brief'" + ts).Rows()) - output[i].Result = testdata.ConvertRowsToStrings(tk.MustQuery(ts).Sort().Rows()) - }) - tk.MustQuery("explain format='brief' " + ts).Check(testkit.Rows(output[i].Plan...)) - tk.MustQuery(ts).Sort().Check(testkit.Rows(output[i].Result...)) - } -} - -func TestIssue27233(t *testing.T) { - var ( - input []string - output []struct { - SQL string - Plan []string - Result []string - } - ) - planSuiteData := GetPlanSuiteData() - planSuiteData.LoadTestCases(t, &input, &output) - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("drop table if exists t") - tk.MustExec("CREATE TABLE `PK_S_MULTI_31` (\n `COL1` tinyint(45) NOT NULL,\n `COL2` tinyint(45) NOT NULL,\n PRIMARY KEY (`COL1`,`COL2`) /*T![clustered_index] NONCLUSTERED */\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;") - tk.MustExec("insert into PK_S_MULTI_31 values(122,100),(124,-22),(124,34),(127,103);") - - for i, ts := range input { - testdata.OnRecord(func() { - output[i].SQL = ts - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery("explain format='brief'" + ts).Rows()) - output[i].Result = testdata.ConvertRowsToStrings(tk.MustQuery(ts).Sort().Rows()) - }) - tk.MustQuery("explain format='brief' " + ts).Check(testkit.Rows(output[i].Plan...)) - tk.MustQuery(ts).Sort().Check(testkit.Rows(output[i].Result...)) - } -} - -func TestSelectionPartialPushDown(t *testing.T) { - var ( - input []string - output []struct { - SQL string - Plan []string - } - ) - planSuiteData := GetPlanSuiteData() - planSuiteData.LoadTestCases(t, &input, &output) - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("drop table if exists t1, t2") - tk.MustExec("create table t1(a int, b int as (a+1) virtual)") - tk.MustExec("create table t2(a int, b int as (a+1) virtual, c int, key idx_a(a))") - - for i, ts := range input { - testdata.OnRecord(func() { - output[i].SQL = ts - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery("explain format='brief'" + ts).Rows()) - }) - tk.MustQuery("explain format='brief' " + ts).Check(testkit.Rows(output[i].Plan...)) + require.Equal(t, output[i].Plan, core.ToString(p), comment) + hints := core.GenHintsFromPhysicalPlan(p) + + // test the new genHints code + flat := core.FlattenPhysicalPlan(p, false) + newHints := core.GenHintsFromFlatPlan(flat) + assertSameHints(t, hints, newHints) + + require.Equal(t, output[i].Hints, hint.RestoreOptimizerHints(hints), comment) } } -func TestIssue28316(t *testing.T) { - var ( - input []string - output []struct { - SQL string - Plan []string - } - ) - planSuiteData := GetPlanSuiteData() - planSuiteData.LoadTestCases(t, &input, &output) +func TestIndexJoinHint(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(a int)") + tk.MustExec("set tidb_cost_model_version=2") + tk.MustExec(`drop table if exists test.t1, test.t2, test.t;`) + tk.MustExec(`create table test.t1(a bigint, b bigint, index idx_a(a), index idx_b(b));`) + tk.MustExec(`create table test.t2(a bigint, b bigint, index idx_a(a), index idx_b(b));`) + tk.MustExec("CREATE TABLE `t` ( `a` bigint(20) NOT NULL, `b` tinyint(1) DEFAULT NULL, `c` datetime DEFAULT NULL, `d` int(10) unsigned DEFAULT NULL, `e` varchar(20) DEFAULT NULL, `f` double DEFAULT NULL, `g` decimal(30,5) DEFAULT NULL, `h` float DEFAULT NULL, `i` date DEFAULT NULL, `j` timestamp NULL DEFAULT NULL, PRIMARY KEY (`a`), UNIQUE KEY `b` (`b`), KEY `c` (`c`,`d`,`e`), KEY `f` (`f`), KEY `g` (`g`,`h`), KEY `g_2` (`g`), UNIQUE KEY `g_3` (`g`), KEY `i` (`i`) );") - for i, ts := range input { - testdata.OnRecord(func() { - output[i].SQL = ts - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery("explain format='brief'" + ts).Rows()) - }) - tk.MustQuery("explain format='brief' " + ts).Check(testkit.Rows(output[i].Plan...)) + var input []string + var output []struct { + SQL string + Plan string } -} -func TestSkewDistinctAgg(t *testing.T) { - var ( - input []string - output []struct { - SQL string - Plan []string - } - ) + is := domain.GetDomain(tk.Session()).InfoSchema() + p := parser.New() + ctx := context.Background() + planSuiteData := GetPlanSuiteData() planSuiteData.LoadTestCases(t, &input, &output) - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("set tidb_cost_model_version=2") - tk.MustExec("drop table if exists t") - tk.MustExec("CREATE TABLE `t` (`a` int(11), `b` int(11), `c` int(11), `d` date)") - tk.MustExec("insert into t (a,b,c,d) value(1,4,5,'2019-06-01')") - tk.MustExec("insert into t (a,b,c,d) value(2,null,1,'2019-07-01')") - tk.MustExec("insert into t (a,b,c,d) value(3,4,5,'2019-08-01')") - tk.MustExec("insert into t (a,b,c,d) value(3,6,2,'2019-09-01')") - tk.MustExec("insert into t (a,b,c,d) value(10,4,null,'2020-06-01')") - tk.MustExec("insert into t (a,b,c,d) value(20,null,1,'2020-07-01')") - tk.MustExec("insert into t (a,b,c,d) value(30,4,5,'2020-08-01')") - tk.MustExec("insert into t (a,b,c,d) value(30,6,5,'2020-09-01')") - tk.MustQuery("select date_format(d,'%Y') as df, sum(a), count(b), count(distinct c) " + - "from t group by date_format(d,'%Y') order by df;").Check( - testkit.Rows("2019 9 3 3", "2020 90 3 2")) - tk.MustExec("set @@tidb_opt_skew_distinct_agg=1") - tk.MustQuery("select date_format(d,'%Y') as df, sum(a), count(b), count(distinct c) " + - "from t group by date_format(d,'%Y') order by df;").Check( - testkit.Rows("2019 9 3 3", "2020 90 3 2")) - tk.MustQuery("select count(distinct b), sum(c) from t group by a order by 1,2;").Check( - testkit.Rows("0 1", "0 1", "1 ", "1 5", "2 7", "2 10")) - tk.MustQuery("select count(distinct b) from t group by date_format(d,'%Y') order by 1;").Check( - testkit.Rows("2", "2")) - tk.MustQuery("select count(a), count(distinct b), max(b) from t group by date_format(d,'%Y') order by 1,2,3;").Check( - testkit.Rows("4 2 6", "4 2 6")) - tk.MustQuery("select count(a), count(distinct b), max(b) from t group by date_format(d,'%Y'),c order by 1,2,3;").Check( - testkit.Rows("1 0 ", "1 0 ", "1 1 4", "1 1 6", "2 1 4", "2 2 6")) - tk.MustQuery("select avg(distinct b), count(a), sum(b) from t group by date_format(d,'%Y'),c order by 1,2,3;").Check( - testkit.Rows(" 1 ", " 1 ", "4.0000 1 4", "4.0000 2 8", "5.0000 2 10", "6.0000 1 6")) - - for i, ts := range input { + for i, tt := range input { + comment := fmt.Sprintf("case:%v sql: %s", i, tt) + stmt, err := p.ParseOneStmt(tt, "", "") + require.NoError(t, err, comment) + p, _, err := planner.Optimize(ctx, tk.Session(), stmt, is) + require.NoError(t, err, comment) testdata.OnRecord(func() { - output[i].SQL = ts - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery("explain format='brief' " + ts).Rows()) + output[i].SQL = tt + output[i].Plan = core.ToString(p) }) - tk.MustQuery("explain format='brief' " + ts).Check(testkit.Rows(output[i].Plan...)) + require.Equal(t, output[i].Plan, core.ToString(p), comment) } } -func TestHJBuildAndProbeHint(t *testing.T) { - var ( - input []string - output []struct { - SQL string - Plan []string - Result []string - Warning []string - } - ) - planSuiteData := GetPlanSuiteData() - planSuiteData.LoadTestCases(t, &input, &output) +func TestHintFromDiffDatabase(t *testing.T) { store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) tk.MustExec("use test") - tk.MustExec("set tidb_cost_model_version=2") - tk.MustExec("drop table if exists t1, t2, t3") - tk.MustExec("create table t1(a int primary key, b int not null)") - tk.MustExec("create table t2(a int primary key, b int not null)") - tk.MustExec("create table t3(a int primary key, b int not null)") - tk.MustExec("insert into t1 values(1,1),(2,2)") - tk.MustExec("insert into t2 values(1,1),(2,1)") - tk.MustExec("insert into t3 values(1,1),(2,1)") + tk.MustExec(`drop table if exists test.t1`) + tk.MustExec(`create table test.t1(a bigint, index idx_a(a));`) + tk.MustExec(`create table test.t2(a bigint, index idx_a(a));`) + tk.MustExec("drop database if exists test2") + tk.MustExec("create database test2") + tk.MustExec("use test2") - for i, ts := range input { - testdata.OnRecord(func() { - output[i].SQL = ts - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery("explain format = 'brief' " + ts).Rows()) - output[i].Result = testdata.ConvertRowsToStrings(tk.MustQuery(ts).Sort().Rows()) - output[i].Warning = testdata.ConvertRowsToStrings(tk.MustQuery("show warnings").Rows()) - }) - tk.MustQuery("explain format = 'brief' " + ts).Check(testkit.Rows(output[i].Plan...)) - tk.MustQuery(ts).Sort().Check(testkit.Rows(output[i].Result...)) - tk.MustQuery("show warnings").Check(testkit.Rows(output[i].Warning...)) + var input []string + var output []struct { + SQL string + Plan string } -} + is := domain.GetDomain(tk.Session()).InfoSchema() + p := parser.New() + ctx := context.Background() -func TestHJBuildAndProbeHint4StaticPartitionTable(t *testing.T) { - var ( - input []string - output []struct { - SQL string - Plan []string - Result []string - Warning []string - } - ) planSuiteData := GetPlanSuiteData() planSuiteData.LoadTestCases(t, &input, &output) - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("set tidb_cost_model_version=2") - tk.MustExec("drop table if exists t1, t2, t3") - tk.MustExec(`create table t1(a int, b int) partition by hash(a) partitions 4`) - tk.MustExec(`create table t2(a int, b int) partition by hash(a) partitions 5`) - tk.MustExec(`create table t3(a int, b int) partition by hash(b) partitions 3`) - tk.MustExec("insert into t1 values(1,1),(2,2)") - tk.MustExec("insert into t2 values(1,1),(2,1)") - tk.MustExec("insert into t3 values(1,1),(2,1)") - tk.MustExec(`set @@tidb_partition_prune_mode="static"`) - - for i, ts := range input { + for i, tt := range input { + comment := fmt.Sprintf("case:%v sql: %s", i, tt) + stmt, err := p.ParseOneStmt(tt, "", "") + require.NoError(t, err, comment) + p, _, err := planner.Optimize(ctx, tk.Session(), stmt, is) + require.NoError(t, err, comment) testdata.OnRecord(func() { - output[i].SQL = ts - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery("explain format = 'brief' " + ts).Rows()) - output[i].Result = testdata.ConvertRowsToStrings(tk.MustQuery(ts).Sort().Rows()) - output[i].Warning = testdata.ConvertRowsToStrings(tk.MustQuery("show warnings").Rows()) + output[i].SQL = tt + output[i].Plan = core.ToString(p) }) - tk.MustQuery("explain format = 'brief' " + ts).Check(testkit.Rows(output[i].Plan...)) - tk.MustQuery(ts).Sort().Check(testkit.Rows(output[i].Result...)) + require.Equal(t, output[i].Plan, core.ToString(p), comment) } } @@ -2023,77 +1308,6 @@ func TestMPPSinglePartitionType(t *testing.T) { } } -func TestNoDecorrelateHint(t *testing.T) { - var ( - input []string - output []struct { - SQL string - Plan []string - Result []string - Warning []string - } - ) - planSuiteData := GetPlanSuiteData() - planSuiteData.LoadTestCases(t, &input, &output) - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("set tidb_cost_model_version=2") - tk.MustExec("drop table if exists t1, t2") - tk.MustExec("create table t1(a int, b int)") - tk.MustExec("create table t2(a int primary key, b int)") - tk.MustExec("create table t3(a int, b int)") - tk.MustExec("insert into t1 values(1,1),(2,2)") - tk.MustExec("insert into t2 values(1,1),(2,1)") - tk.MustExec("insert into t3 values(1,1),(2,1)") - - tk.MustExec("create table ta(id int, code int, name varchar(20), index idx_ta_id(id),index idx_ta_name(name), index idx_ta_code(code))") - tk.MustExec("create table tb(id int, code int, name varchar(20), index idx_tb_id(id),index idx_tb_name(name))") - tk.MustExec("create table tc(id int, code int, name varchar(20), index idx_tc_id(id),index idx_tc_name(name))") - tk.MustExec("create table td(id int, code int, name varchar(20), index idx_tc_id(id),index idx_tc_name(name))") - - for i, ts := range input { - testdata.OnRecord(func() { - output[i].SQL = ts - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery("explain format = 'brief' " + ts).Rows()) - output[i].Result = testdata.ConvertRowsToStrings(tk.MustQuery(ts).Sort().Rows()) - output[i].Warning = testdata.ConvertRowsToStrings(tk.MustQuery("show warnings").Rows()) - }) - tk.MustQuery("explain format = 'brief' " + ts).Check(testkit.Rows(output[i].Plan...)) - tk.MustQuery(ts).Sort().Check(testkit.Rows(output[i].Result...)) - tk.MustQuery("show warnings").Check(testkit.Rows(output[i].Warning...)) - } -} - -func TestCountStarForTikv(t *testing.T) { - var ( - input []string - output []struct { - SQL string - Plan []string - Warning []string - } - ) - planSuiteData := GetPlanSuiteData() - planSuiteData.LoadTestCases(t, &input, &output) - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - - tk.MustExec("use test") - tk.MustExec("set tidb_cost_model_version=1") - tk.MustExec("create table t (a int(11) not null, b varchar(10) not null, c date not null, d char(1) not null, e bigint not null, f datetime not null, g bool not null, h bool )") - tk.MustExec("create table t_pick_row_id (a char(20) not null)") - - // tikv - for i, ts := range input { - testdata.OnRecord(func() { - output[i].SQL = ts - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery("explain format = 'brief' " + ts).Rows()) - }) - tk.MustQuery("explain format = 'brief' " + ts).Check(testkit.Rows(output[i].Plan...)) - } -} - func TestCountStarForTiFlash(t *testing.T) { var ( input []string @@ -2209,66 +1423,3 @@ func TestHashAggPushdownToTiFlashCompute(t *testing.T) { tk.MustQuery("explain format = 'brief' " + ts).Check(testkit.Rows(output[i].Plan...)) } } - -func TestIndexMergeOrderPushDown(t *testing.T) { - var ( - input []string - output []struct { - SQL string - Plan []string - Warning []string - } - ) - planSuiteData := GetPlanSuiteData() - planSuiteData.LoadTestCases(t, &input, &output) - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - - tk.MustExec("use test") - tk.MustExec("set tidb_cost_model_version=1") - tk.MustExec("create table t (a int, b int, c int, index idx(a, c), index idx2(b, c))") - tk.MustExec("create table tcommon (a int, b int, c int, primary key(a, c), index idx2(b, c))") - tk.MustExec("create table thash(a int, b int, c int, index idx_ac(a, c), index idx_bc(b, c)) PARTITION BY HASH (`a`) PARTITIONS 4") - - for i, ts := range input { - testdata.OnRecord(func() { - output[i].SQL = ts - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery("explain format = 'brief' " + ts).Rows()) - output[i].Warning = testdata.ConvertRowsToStrings(tk.MustQuery("show warnings").Rows()) - }) - tk.MustQuery("explain format = 'brief' " + ts).Check(testkit.Rows(output[i].Plan...)) - tk.MustQuery("show warnings").Check(testkit.Rows(output[i].Warning...)) - } -} - -func TestIndexMergeSinkLimit(t *testing.T) { - var ( - input []string - output []struct { - SQL string - Plan []string - Warning []string - } - ) - planSuiteData := GetPlanSuiteData() - planSuiteData.LoadTestCases(t, &input, &output) - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - - tk.MustExec("use test") - tk.MustExec("set tidb_cost_model_version=1") - tk.MustExec(" CREATE TABLE `t2` ( `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL, `c` int(11) DEFAULT NULL, KEY `a` (`a`), KEY `b` (`b`)) ") - tk.MustExec("insert into t2 values(1,2,1),(2,1,1),(3,3,1)") - tk.MustExec("create table t(a int, j json, index kj((cast(j as signed array))))") - tk.MustExec("insert into t values(1, '[1,2,3]')") - - for i, ts := range input { - testdata.OnRecord(func() { - output[i].SQL = ts - output[i].Plan = testdata.ConvertRowsToStrings(tk.MustQuery(ts).Rows()) - output[i].Warning = testdata.ConvertRowsToStrings(tk.MustQuery("show warnings").Rows()) - }) - tk.MustQuery(ts).Check(testkit.Rows(output[i].Plan...)) - tk.MustQuery("show warnings").Check(testkit.Rows(output[i].Warning...)) - } -} diff --git a/pkg/planner/core/casetest/physicalplantest/testdata/plan_suite_in.json b/pkg/planner/core/casetest/physicalplantest/testdata/plan_suite_in.json index c9602ec23e885..a4d6a105b6001 100644 --- a/pkg/planner/core/casetest/physicalplantest/testdata/plan_suite_in.json +++ b/pkg/planner/core/casetest/physicalplantest/testdata/plan_suite_in.json @@ -447,41 +447,6 @@ "select /*+ HASH_JOIN(@sel_2 t1@sel_2, t2@sel_2), MERGE_JOIN(@sel_1 t1@sel_1, t2@sel_1) */ * from (select t1.a, t1.b from t t1, t t2 where t1.a = t2.a) t1, t t2 where t1.b = t2.b" ] }, - { - "name": "TestIndexJoinUnionScan", - "cases": [ - [ - "insert into t values(1, 1)", - // Test Index Join + UnionScan + TableScan. - "explain format = 'brief' select /*+ TIDB_INLJ(t2) */ * from t t1, t t2 where t1.a = t2.a" - ], - [ - "insert into t values(1, 1)", - // Test Index Join + UnionScan + DoubleRead. - "explain format = 'brief' select /*+ TIDB_INLJ(t2) */ * from t t1, t t2 where t1.a = t2.b" - ], - [ - "insert into t values(1, 1)", - // Test Index Join + UnionScan + IndexScan. - "explain format = 'brief' select /*+ TIDB_INLJ(t2) */ t1.a , t2.b from t t1, t t2 where t1.a = t2.b" - ], - [ - "insert into tt values(1)", - "explain format = 'brief' select /*+ TIDB_INLJ(t2) */ * from tt t1, tt t2 where t1.a = t2.a" - ] - ] - }, - { - "name": "TestMergeJoinUnionScan", - "cases": [ - [ - "insert into t2 values (11, 'amazing merkle')", - "insert into t2 values (12, 'amazing merkle')", - // Test Merge Join + UnionScan + TableScan. - "explain format = 'brief' select /*+ MERGE_JOIN(t1,t2) */ * from t1, t2 where t1.c_int = t2.c_int and t1.c_int = t2.c_int order by t1.c_int, t2.c_str;" - ] - ] - }, { "name": "TestSemiJoinToInner", "cases": [ @@ -508,95 +473,6 @@ "select /*+ AGG_TO_COP(), HASH_AGG(), HASH_JOIN(t1), USE_INDEX(t1), USE_INDEX(t2) */ sum(t1.a) from ta t1, ta t2 where t1.a = t2.b group by t1.a" ] }, - { - "name": "TestLimitToCopHint", - "cases": [ - "select /*+ LIMIT_TO_COP() */ * from tn where a = 1 and b > 10 and b < 20 and c > 50 order by d limit 1", - "select * from tn where a = 1 and b > 10 and b < 20 and c > 50 order by d limit 1", - "select /*+ LIMIT_TO_COP() */ a from tn where a div 2 order by a limit 1", - "select /*+ LIMIT_TO_COP() */ a from tn where a > 10 limit 1" - ] - }, - { - "name": "TestCTEMergeHint", - "cases": [ - "with cte as (select /*+ MERGE() */ * from tc where tc.a < 60) select * from cte where cte.a <18", - "with cte as (select * from tc where tc.a < 60) select * from cte c1, cte c2 where c1.a <18", - "with cte as (select /*+ MERGE() */ * from v) select * from cte", - "WITH cte1 AS (SELECT /*+ MERGE() */ a FROM tc), cte2 AS (SELECT /*+ MERGE()*/ c FROM te) SELECT * FROM cte1 JOIN cte2 WHERE cte1.a = cte2.c;", - "WITH cte1 AS (SELECT a FROM tc), cte2 AS (SELECT /*+ MERGE() */ c FROM te) SELECT * FROM cte1 JOIN cte2 WHERE cte1.a = cte2.c;", - "with recursive cte1(c1) as (select 1 union select /*+ MERGE() */ c1 + 1 c1 from cte1 where c1 < 100) select * from cte1;", - "WITH cte1 AS (SELECT * FROM t1) SELECT /*+ MERGE() */ * FROM cte1 join t2 on cte1.a = t2.b;", - "with cte1 as (with cte3 as (select /*+ MERGE() */ * from t1),cte4 as (select /*+ MERGE() */ * from t2) select /*+ MERGE() */ * from cte3,cte4) ,cte2 as (select /*+ MERGE() */ * from t3) select * from cte1,cte2;", - "with cte1 as (select * from tc), cte2 as (with cte3 as (select /*+ MERGE() */ * from te) ,cte4 as (select * from tc) select * from cte3,cte4) select * from cte2;", - "with cte1 as (with cte2 as (select /*+ MERGE() */ * from te) ,cte3 as (select /*+ MERGE() */ * from tc) select /*+ MERGE() */ * from cte2,cte3) select * from cte1;", - "with cte1 as (select * from t1), cte2 as (with cte3 as (with cte5 as (select * from t2),cte6 as (select * from t3) select * from cte5,cte6) ,cte4 as (select * from t4) select * from cte3,cte4) select * from cte1,cte2;", - "with cte1 as (select /*+ MERGE() */ * from t1), cte2 as (with cte3 as (with cte5 as (select * from t2),cte6 as (select * from t3) select * from cte5,cte6) ,cte4 as (select * from t4) select * from cte3,cte4) select * from cte1,cte2;", - "with cte1 as (select * from t1), cte2 as (with cte3 as (with cte5 as (select * from t2),cte6 as (select * from t3) select * from cte5,cte6) ,cte4 as (select /*+ MERGE() */ * from t4) select * from cte3,cte4) select * from cte1,cte2;", - "with cte1 as (select * from t1), cte2 as (with cte3 as (with cte5 as (select * from t2),cte6 as (select /*+ MERGE() */ * from t3) select * from cte5,cte6) ,cte4 as (select * from t4) select * from cte3,cte4) select * from cte1,cte2;", - "with cte2 as (with cte4 as (select * from tc) select * from te, cte4) select * from cte2;", - "with cte2 as (with cte4 as (select /*+ merge() */ * from tc) select * from te, cte4) select * from cte2;", - "with cte1 as (with cte2 as (with cte3 as (select /*+ MERGE() */ * from t2) select /*+ MERGE() */ * from cte3) select * from cte2,(select /*+ MERGE() */ * from t1) ttt) select * from cte1;", - "with cte1 as (with cte2 as (with cte3 as (select /*+ MERGE() */ * from t2) select /*+ MERGE() */ * from cte3) select * from cte2,(select * from t1) ttt) select * from cte1,(select /*+ MERGE() */ * from t3) ttw;", - "with cte1 as (with cte2 as (with cte3 as (select /*+ MERGE() */ * from t2) select /*+ MERGE() */ * from cte3) select * from cte2,(select * from t1) ttt) select * from cte1,(select * from t3) ttw;" - ] - }, - { - "name": "TestForceInlineCTE", - "cases": [ - "set tidb_opt_force_inline_cte=1; -- enable force inline CTE", - "with cte as (select * from t) select * from cte; -- inline", - "with cte as (select /*+ MERGE() */ * from t) select * from cte; -- inline", - "with cte as (select * from t) select * from cte cte1, cte cte2; -- inline CTEs is used by multi consumers", - "with cte1 as (select * from t), cte2 as (select a from cte1 group by a) select * from cte1, cte2; -- multi inline CTEs", - "with recursive cte1(c1) as (select 1 union select c1 + 1 c1 from cte1 where c1 < 100) select * from cte1; -- Recursive CTE can not be inlined", - "with cte1 as (with cte2 as (select * from t) select * from cte2) select * from cte1; -- non-recursive 'cte2' definition inside another non-recursive 'cte1'", - "with recursive cte2(c1) as (with cte1 as (select * from t) select a c1 from cte1 union select c1+1 c1 from cte2 where c1 < 100) select * from cte2; -- non-recursive 'cte1' inside recursive 'cte2'", - "with cte1 as (with recursive cte2(c1) as (select 1 union select c1 + 1 c1 from cte2 where c1 < 100) select * from cte2) select * from cte1; -- recursive 'cte2' inside non-recursive 'cte1'", - "set tidb_opt_force_inline_cte=0; -- disable force inline CTE", - "with cte as (select * from t) select * from cte; -- inlined by single consumer", - "with cte as (select /*+ MERGE() */ * from t) select * from cte; -- inline, merge hint override session variable", - "with recursive cte1(c1) as (select 1 union select /*+ MERGE() */ c1 + 1 c1 from cte1 where c1 < 100) select * from cte1; -- Recursive CTE can not be inlined", - "with cte1 as (with cte2 as (select * from t) select * from cte2) select * from cte1; -- non-recursive 'cte2' definition inside another non-recursive 'cte1'", - "with recursive cte2(c1) as (with cte1 as (select * from t) select a c1 from cte1 union select c1+1 c1 from cte2 where c1 < 100) select * from cte2; -- non-recursive 'cte1' inside recursive 'cte2'", - "with cte1 as (with recursive cte2(c1) as (select 1 union select c1 + 1 c1 from cte2 where c1 < 100) select * from cte2) select * from cte1; -- recursive 'cte2' inside non-recursive 'cte1'" - ] - }, - { - "name": "TestSingleConsumerCTE", - "cases": [ - "with recursive cte1(c1) as (select c1 from t1 union select c1 from t2 limit 1) select * from cte1; -- non-recursive limit, inline cte1", - "with recursive cte1(c1) as (select c1 from t1 union select c1 from t2 limit 100 offset 100) select * from cte1; -- non-recursive limit, inline cte1", - "with recursive cte1(c1) as (select c1 from t1 union select c1 from t2 limit 0 offset 0) select * from cte1; -- non-recursive limit, inline cte1", - "with cte1 as (select 1), cte2 as (select 2) select * from cte1 union (with cte2 as (select 3) select * from cte2 union all select * from cte2) -- inline cte1, not inline cte2", - "with base1 as (WITH RECURSIVE cte(a) AS (with tmp as (select 1 as a) SELECT a from tmp UNION SELECT a+1 FROM cte) SELECT * FROM cte) select * from base1; -- issue #43318", - "with cte as (select 1) select * from cte; -- inline cte", - "with cte1 as (select 1), cte2 as (select 2) select * from cte1 union select * from cte2; -- inline cte1, cte2", - "with cte as (select 1) select * from cte union select * from cte; -- cannot be inlined", - "with cte as (with cte as (select 1) select * from cte) select * from cte; -- inline nested cte", - "with cte as (with cte as (select 1) select * from cte) select * from cte a, cte b; -- inline inner cte, cannot be inlined outer cte", - "with cte1 as (select 1), cte2 as (with cte3 as (select * from cte1) select * from cte3) select * from cte1, cte2; -- inline cte2, cte3, cannot be inlined cte1", - "with cte1 as (select 1), cte2 as (with cte3 as (select * from cte1) select * from cte3) select * from cte2; -- inline cte1, cte2, cte3", - "with cte1 as (select 1), cte2 as (select * from cte1) select * from cte2 a, cte2 b; -- inline cte1, cannot be inlined cte2", - "with recursive cte(a) as (select 1 union select a from cte) select * from cte; -- recursive cte cannot be inlined", - "with x as (select * from (select a from t for update) s) select * from x where a = 1;", - "set tidb_opt_force_inline_cte=1; -- enable force inline CTE", - "with cte as (select 1) select * from cte union select * from cte; -- force inline cte while multi-consumer", - "set tidb_opt_force_inline_cte=0; -- disable force inline CTE", - "with cte as (select 1) select /*+ MERGE() */ * from cte union select * from cte; -- firstly inline cte, secondly cannot be inlined", - "with a as (select 8 as id from dual),maxa as (select max(id) as max_id from a),b as (with recursive temp as (select 1 as lvl from dual union all select lvl+1 from temp, maxa where lvl < max_id)select * from temp) select * from b; -- issue #47711, maxa cannot be inlined because it contains agg and in the recursive part of cte temp", - "with a as (select count(*) from t1), b as (select 2 as bb from a), c as (with recursive tmp as (select 1 as res from t1 union all select res+1 from tmp,b where res+1 < bb) select * from tmp) select * from c; -- inline a, cannot be inline b because b indirectly contains agg and in the recursive part of cte tmp", - "with a as (select count(*) from t1), b as (select 2 as bb from a), c as (with recursive tmp as (select bb as res from b union all select res+1 from tmp where res +1 < 10) select * from tmp) select * from c; -- inline a, b, cannot be inline tmp, c" - ] - }, - { - "name": "TestPushdownDistinctEnableAggPushDownDisable", - "cases": [ - "select /*+ HASH_AGG(), AGG_TO_COP() */ sum(distinct b) from pt;", - "select /*+ HASH_AGG(), AGG_TO_COP() */ count(distinct a) from (select * from ta union all select * from tb) t;", - "select distinct DATE_FORMAT(timestamp, '%Y-%m-%d %H') as tt from tc ;" - ] - }, { "name": "TestGroupConcatOrderby", "cases": [ @@ -606,21 +482,6 @@ "select /*+ agg_to_cop */ group_concat(distinct name order by name desc) from ptest;" ] }, - { - "name": "TestNominalSort", - "cases": [ - "select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by t1.a", - "select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by t1.a+1", - "select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by t1.a-1", - "select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by -t1.a", - "select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by -t1.a+3", - "select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 1+t1.a", - "select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 1-t1.a", - "select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 1-t1.a+3", - "select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 1+t1.a+3", - "select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 3*t1.a" - ] - }, { "name": "TestInlineProjection", "cases":[ @@ -642,89 +503,6 @@ "select /*+ inl_hash_join(test.t1) */ * from test.t2 join test.t1 on test.t2.a = test.t1.a" ] }, - { - "name": "TestNthPlanHintWithExplain", - "cases": [ - "select /*+nth_plan(1)*/ * from test.tt where a=1 and b=1", - "select /*+nth_plan(2)*/ * from test.tt where a=1 and b=1;", - "select /*+nth_plan(3)*/ * from test.tt where a=1 and b=1;", - "select /*+nth_plan(2)*/ * from test.tt where a=1 and b=1;", - "select * from test.tt where a=1 and b=1" - ] - }, - { - "name": "TestINMJHint", - "cases": [ - "select /*+ inl_merge_join(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ inl_hash_join(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ inl_join(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b" - ] - }, - { - "name": "TestEliminateMaxOneRow", - "cases": [ - "select a from t2 where t2.a < (select t1.a from t1 where t1.a = t2.a);", - "select a from t2 where t2.a < (select t1.a from t1 where t1.b = t2.b and t1.a is null);", - "select a from t2 where t2.a < (select t3.a from t3 where t3.a = t2.a);" - ] - }, - { - "name": "TestEnumIndex", - "cases": [ - "select e from t where e = 'b'", - "select e from t where e != 'b'", - "select e from t where e > 'b'", - "select e from t where e >= 'b'", - "select e from t where e < 'b'", - "select e from t where e <= 'b'", - "select e from t where e = 2", - "select e from t where e != 2", - "select e from t where e > 2", - "select e from t where e >= 2", - "select e from t where e < 2", - "select e from t where e <= 2", - - // Out of range - "select e from t where e > ''", - "select e from t where e > 'd'", - "select e from t where e > -1", - "select e from t where e > 5", - - // zero-value - "select e from t where e = ''", - "select e from t where e != ''" - ] - }, - { - "name": "TestIssue27233", - "cases": [ - "SELECT col2 FROM PK_S_MULTI_31 AS T1 WHERE (SELECT count(DISTINCT COL1, COL2) FROM PK_S_MULTI_31 AS T2 WHERE T2.COL1>T1.COL1)>2 order by col2;" - ] - }, - { - "name": "TestSelectionPartialPushDown", - "cases": [ - // Make sure row_count(tikv_selection) == row_count(table_reader) and row_count(table_reader) > row_count(tidb_selection) - "select * from t1 where a > 1 and b > 1", - // Make sure row_count(tikv_selection) == row_count(index_lookup) and row_count(index_lookup) > row_count(tidb_selection) - "select * from t2 use index(idx_a) where a > 1 and b > 1 and c > 1" - ] - }, - { - "name": "TestIssue28316", - "cases": [ - "select * from t where t.a < 3 and t.a < 3" - ] - }, - { - "name": "TestSkewDistinctAgg", - "cases": [ - "select date_format(d,'%Y') as df, sum(a), count(b), count(distinct c) from t group by date_format(d,'%Y')", - "select d, a, count(*), count(b), count(distinct c) from t group by d, a", - "select d, sum(a), count(b), avg(distinct c) from t group by d" - ] - }, { "name": "TestMPPSinglePartitionType", "cases": [ @@ -775,153 +553,6 @@ "select * from t where exists (select /*+ SEMI_JOIN_REWRITE() */ 1 from t t1 where t1.a > t.a)" ] }, - { - "name": "TestHJBuildAndProbeHint", - "cases": [ - // Test for different join type - // inner join - "select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - - "select /*+ hash_join_build(t2), hash_join_probe(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_probe(t2), hash_join_build(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - - // outer join - "select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 right join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 right join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 right join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 right join t2 on t1.a=t2.a and t1.b=t2.b", - - // straight_join - "select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 straight_join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 straight_join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 straight_join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 straight_join t2 on t1.a=t2.a and t1.b=t2.b", - - // cross join - "select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 cross join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 cross join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 cross join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 cross join t2 on t1.a=t2.a and t1.b=t2.b", - - // semi join - "select /*+ hash_join_build(t1) */ * from t1 where t1.a in (select t2.a from t2 where t1.b = t2.b)", - "select /*+ hash_join_probe(t1) */ * from t1 where t1.a in (select t2.a from t2 where t1.b = t2.b)", - "select /*+ hash_join_build(t2@sel_2) */ * from t1 where t1.a in (select t2.a from t2 where t1.b = t2.b)", - "select /*+ hash_join_probe(t2@sel_2) */ * from t1 where t1.a in (select t2.a from t2 where t1.b = t2.b)", - - // anti semi join - "select /*+ hash_join_build(t1) */ * from t1 where t1.a not in (select t2.a from t2 where t1.b = t2.b)", - "select /*+ hash_join_probe(t1) */ * from t1 where t1.a not in (select t2.a from t2 where t1.b = t2.b)", - "select /*+ hash_join_build(t2@sel_2) */ * from t1 where t1.a not in (select t2.a from t2 where t1.b = t2.b)", - "select /*+ hash_join_probe(t2@sel_2) */ * from t1 where t1.a not in (select t2.a from t2 where t1.b = t2.b)", - - // left outer semi join - "select /*+ hash_join_build(t1) */ sum(t1.a in (select a from t2)) from t1", - "select /*+ hash_join_probe(t1) */ sum(t1.a in (select a from t2)) from t1", - "select /*+ hash_join_build(t2@sel_2) */ sum(t1.a in (select a from t2)) from t1", - "select /*+ hash_join_probe(t2@sel_2) */ sum(t1.a in (select a from t2)) from t1", - - // anti left outer semi join - "select /*+ hash_join_build(t1) */ sum(t1.a not in (select a from t2)) from t1", - "select /*+ hash_join_probe(t1) */ sum(t1.a not in (select a from t2)) from t1", - "select /*+ hash_join_build(t2@sel_2) */ sum(t1.a not in (select a from t2)) from t1", - "select /*+ hash_join_probe(t2@sel_2) */ sum(t1.a not in (select a from t2)) from t1", - - // Hint scope - // The same table name appear in the hint - "select /*+ hash_join_probe(t2, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_build(t1, t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - - // The undefined table name appear in the hint - "select /*+ hash_join_probe(tt) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_build(tt) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - - // The alias appear in the hint - "select /*+ hash_join_probe(tt) */ tt.a, t2.a from t1 as tt join t2 on tt.a=t2.a and tt.b=t2.b", - "select /*+ hash_join_build(tt) */ tt.a, t2.a from t1 as tt join t2 on tt.a=t2.a and tt.b=t2.b", - - // The hints are conflict - "select /*+ hash_join_probe(t2, t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_build(t1, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_build(t1) hash_join_probe(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_build(t2) hash_join_probe(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - - // Combine with other hints - "select /*+ hash_join_build(t1) leading(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a", - "select /*+ hash_join_build(t1) leading(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a", - "select /*+ hash_join_probe(t1) leading(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a", - "select /*+ hash_join_probe(t1) leading(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a", - - "select /*+ hash_join_build(t1) straight_join() */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a", - "select /*+ hash_join_build(t1) straight_join() */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a", - "select /*+ hash_join_probe(t1) straight_join() */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a", - "select /*+ hash_join_probe(t1) straight_join() */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a", - - "select /*+ hash_join_build(t2) hash_join(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_probe(t2) hash_join(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_build(t2) hash_join(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_probe(t2) hash_join(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_build(t2) hash_join(t2, t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_probe(t2) hash_join(t2, t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - - "select /*+ hash_join_build(t2) INL_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_probe(t2) INL_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_build(t1) INL_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_probe(t1) INL_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - - "select /*+ hash_join_build(t2) INL_HASH_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_probe(t2) INL_HASH_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_build(t1) INL_HASH_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_probe(t1) INL_HASH_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - - "select /*+ hash_join_build(t2) merge_join(t1, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_probe(t2) merge_join(t1, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_build(t1) merge_join(t1, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_probe(t1) merge_join(t1, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - - "SELECT * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.a = t1.a);", - "SELECT /*+ hash_join_probe(t1) */ * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.a = t1.a);", - "SELECT /*+ hash_join_probe(t2@sel_2) */ * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.a = t1.a);", - "SELECT /*+ hash_join_probe(t1) */ * FROM t1 WHERE EXISTS (SELECT /*+ SEMI_JOIN_REWRITE() */ 1 FROM t2 WHERE t2.a = t1.a);", - "SELECT /*+ hash_join_probe(t2@sel_2) */ * FROM t1 WHERE EXISTS (SELECT /*+ SEMI_JOIN_REWRITE() */ 1 FROM t2 WHERE t2.a = t1.a);", - "SELECT /*+ hash_join_build(t1) */ * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.a = t1.a);", - "SELECT /*+ hash_join_build(t2@sel_2) */ * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.a = t1.a);", - "SELECT /*+ hash_join_build(t1) */ * FROM t1 WHERE EXISTS (SELECT /*+ SEMI_JOIN_REWRITE() */ 1 FROM t2 WHERE t2.a = t1.a);", - "SELECT /*+ hash_join_build(t2@sel_2) */ * FROM t1 WHERE EXISTS (SELECT /*+ SEMI_JOIN_REWRITE() */ 1 FROM t2 WHERE t2.a = t1.a);", - - "SELECT t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2);", - "SELECT /*+ hash_join_build(t1) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2);", - "SELECT /*+ hash_join_probe(t1) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2);", - "SELECT /*+ hash_join_build(t2@sel_2) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2);", - "SELECT /*+ hash_join_probe(t2@sel_2) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2);", - "SELECT /*+ USE_TOJA(TRUE) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2);", - "SELECT /*+ USE_TOJA(TRUE) hash_join_build(t1) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2);", - "SELECT /*+ USE_TOJA(TRUE) hash_join_probe(t1) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2);", - "SELECT /*+ USE_TOJA(TRUE) hash_join_build(t2@sel_2) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2);", - "SELECT /*+ USE_TOJA(TRUE) hash_join_probe(t2@sel_2) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2);", - "SELECT /*+ USE_TOJA(false) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2);", - "SELECT /*+ USE_TOJA(false) hash_join_build(t1) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2);", - "SELECT /*+ USE_TOJA(false) hash_join_probe(t1) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2);", - "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);", - "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);" - ] - }, - { - "name": "TestHJBuildAndProbeHint4StaticPartitionTable", - "cases": [ - "select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b" - ] - }, { "name": "TestHJBuildAndProbeHint4DynamicPartitionTable", "cases": [ @@ -940,74 +571,6 @@ "select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b" ] }, - { - "name": "TestNoDecorrelateHint", - "cases": [ - "select /*+ no_decorrelate() */ * from t1", - "select * from t1, (select /*+ no_decorrelate() */ * from t2) n", - "select a+1, b-1 from (select /*+ no_decorrelate() */ * from t1) n", - "select exists (select /*+ semi_join_rewrite(), no_decorrelate() */ * from t1 where t1.a=t3.a) from t3", - - "select t1.a from t1 where t1.a in (select t2.b from t2 where t2.a = t1.b)", - "select t1.a from t1 where t1.a in (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b)", - - "select t1.a from t1 where t1.a = any (select t2.b from t2 where t2.a = t1.b)", - "select t1.a from t1 where t1.a = any (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b)", - - "select t1.a, t1.a != any (select t2.b from t2 where t2.a = t1.b) from t1", - "select t1.a, t1.a != any (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b) from t1", - - "select t1.a, t1.a > all (select t2.b from t2 where t2.a = t1.b) from t1", - "select t1.a, t1.a > all (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b) from t1", - - "select t1.a, (select t2.b from t2 where t2.a = t1.b) from t1", - "select t1.a, (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b) from t1", - - "select t1.a, t1.b not in (select t3.b from t3) from t1", - "select t1.a, t1.b not in (select /*+ no_decorrelate() */ t3.b from t3) from t1", - - "select exists (select t3.b from t3 where t3.a = t1.b limit 2) from t1", - "select exists (select /*+ no_decorrelate() */ t3.b from t3 where t3.a = t1.b limit 2) from t1", - - "select t1.a, (select sum(t1.a) from t2 where t2.a = 10) from t1", - "select t1.a, (select /*+ no_decorrelate() */ sum(t1.a) from t2 where t2.a = 10) from t1", - - "select (select count(t3.a) from t3 where t3.b = t1.b) from t1;", - "select (select /*+ no_decorrelate() */ count(t3.a) from t3 where t3.b = t1.b) from t1;", - - "SELECT ta.NAME,(SELECT sum(tb.CODE) FROM tb WHERE ta.id = tb.id) tb_sum_code FROM ta WHERE ta.NAME LIKE 'chad999%'", - "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%'", - - "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%'", - "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%'", - "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%'", - "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%'", - - "SELECT ta.id, 'split' as flag FROM ta WHERE ta.NAME ='chad999' and (select max(tb.code) from tb where ta.id=tb.id ) > 900", - "SELECT ta.id, 'split' as flag FROM ta WHERE ta.NAME ='chad999' and (select /*+ no_decorrelate() */ max(tb.code) from tb where ta.id=tb.id ) > 900", - - "SELECT ta.NAME FROM ta WHERE EXISTS (select 1 from tb where ta.code = tb.code and tb.NAME LIKE 'chad9%') AND (select max(id) from tc where ta.name=tc.name and tc.name like 'chad99%') > 100 and (select max(id) from td where ta.id=td.id and td.name like 'chad999%') > 100", - "SELECT ta.NAME FROM ta WHERE EXISTS (select /*+ semi_join_rewrite() */ 1 from tb where ta.code = tb.code and tb.NAME LIKE 'chad9%') AND (select /*+ no_decorrelate() */ max(id) from tc where ta.name=tc.name and tc.name like 'chad99%') > 100 and (select /*+ no_decorrelate() */ max(id) from td where ta.id=td.id and td.name like 'chad999%') > 100", - "SELECT ta.NAME FROM ta WHERE EXISTS (select /*+ no_decorrelate() */ 1 from tb where ta.code = tb.code and tb.NAME LIKE 'chad9%') AND (select /*+ no_decorrelate() */ max(id) from tc where ta.name=tc.name and tc.name like 'chad99%') > 100 and (select /*+ no_decorrelate() */ max(id) from td where ta.id=td.id and td.name like 'chad999%') > 100" - - ] - }, - { - "name": "TestCountStarForTikv", - "cases": [ - "select count(*) from t", - "select count(1), count(3.1415), count(0), count(null) from t -- shouldn't be rewritten", - "select count(*) from t where a=1", - "select count(*) from t_pick_row_id", - "select t.b, t.c from (select count(*) as c from t) a, t where a.c=t.a -- shouldn't be rewritten", - "select * from t outTable where outTable.a > (select count(*) from t inn where inn.a = outTable.b) -- shouldn't be rewritten", - "select count(*) from t t1, t t2 where t1.a=t2.e -- shouldn't be rewritten", - "select count(distinct 1) from t -- shouldn't be rewritten", - "select count(1), count(a), count(b) from t -- shouldn't be rewritten", - "select a, count(*) from t group by a -- shouldn't be rewritten", - "select sum(a) from t -- sum shouldn't be rewritten" - ] - }, { "name": "TestCountStarForTiFlash", "cases": [ @@ -1031,40 +594,5 @@ "select /*+ agg_to_cop() hash_agg() */ count(1) from tbl_15 ;", "select /*+ agg_to_cop() stream_agg() */ avg( tbl_16.col_100 ) as r0 from tbl_16 where tbl_16.col_100 in ( 10672141 ) or tbl_16.col_104 in ( 'yfEG1t!*b' ,'C1*bqx_qyO' ,'vQ^yUpKHr&j#~' ) group by tbl_16.col_100 order by r0 limit 20 ;" ] - }, - { - "name": "TestIndexMergeOrderPushDown", - "cases": [ - "select * from t where a = 1 or b = 1 order by c limit 2", - "select * from t where a = 1 or b in (1, 2, 3) order by c limit 2", - "select * from t where a in (1, 2, 3) or b = 1 order by c limit 2", - "select * from t where a in (1, 2, 3) or b in (1, 2, 3) order by c limit 2", - "select * from t where (a = 1 and c = 2) or (b = 1) order by c limit 2", - "select * from t where (a = 1 and c = 2) or b in (1, 2, 3) order by c limit 2", - "select * from t where (a = 1 and c = 2) or (b in (1, 2, 3) and c = 3) order by c limit 2", - "select * from t where (a = 1 or b = 2) and c = 3 order by c limit 2", - "select * from t where (a = 1 or b = 2) and c in (1, 2, 3) order by c limit 2", - "select * from t where (a = 1 or b = 2) and c in (1, 2, 3) order by b limit 2", - "select * from tcommon where a = 1 or b = 1 order by c limit 2", - "select * from tcommon where (a = 1 and c = 2) or (b = 1) order by c limit 2", - "select * from thash use index(idx_ac, idx_bc) where a = 1 or b = 1 order by c limit 2" - ] - }, - { - "name": "TestIndexMergeSinkLimit", - "cases": [ - "explain format = 'brief' select /*+ use_index_merge(t2, a, b) */ * from t2 where a=1 or b=1 and c=1 limit 2; -- test sink limit to table side of union index merge case, because of table side selection", - "explain format = 'brief' select /*+ use_index_merge(t2, a, b) */ * from t2 where a=1 and b=1 and c=1 limit 2; -- test sink limit to table side of intersection index merge case, because of table side selection", - "select /*+ use_index_merge(t2, a, b) */ * from t2 where a=1 and b=1 and c=1 limit 2", - "explain format = 'brief' select /*+ use_index_merge(t2, a, b) */ * from t2 where a=1 or b=1 limit 2; -- test sink limit to index side of union index merge case, because of table side is pure table scan", - "explain format = 'brief' select /*+ use_index_merge(t2, a, b) */ * from t2 where a=1 and b=1 limit 2; -- test sink limit to table side of intersection index merge case, because of intersection case special", - "select /*+ use_index_merge(t2, a, b) */ * from t2 where a=1 and b=1 limit 2", - "explain format = 'brief' select /*+ use_index(t, kj) */ * from t where (1 member of (j)) limit 1; -- index merge union case, sink limit into index side and embed another one inside index merge reader", - "explain format = 'brief' select /*+ use_index(t, kj) */ * from t where json_contains(j, '[1, 2, 3]') limit 1; -- index merge intersection case, embedding limit into index merge reader", - "explain format = 'brief' select /*+ use_index(t, kj) */ * from t where json_overlaps(j, '[1, 2, 3]') limit 1; -- index merge union case, sink limit above selection above index merge reader, because json_overlaps can't be pushed down", - "explain format = 'brief' select /*+ use_index(t, kj) */ * from t where (1 member of (j) and a=1 ) limit 1; -- index merge union case, sink limit to table side, because selection exists on table side", - "explain format = 'brief' select /*+ use_index(t, kj) */ * from t where json_contains(j, '[1, 2, 3]') and a=1 limit 1; -- index merge intersection case, sink limit to table side because selection exists on table side", - "explain format = 'brief' select /*+ use_index(t, kj) */ * from t where json_overlaps(j, '[1, 2, 3]') and a=1 limit 1; -- index merge union case, sink limit above selection above index merge reader, because json_overlaps can't be pushed down" - ] } ] 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 12aa76b84c9d9..234706233bd4e 100644 --- a/pkg/planner/core/casetest/physicalplantest/testdata/plan_suite_out.json +++ b/pkg/planner/core/casetest/physicalplantest/testdata/plan_suite_out.json @@ -2171,11 +2171,11 @@ }, { "SQL": "select a from t where c_str like ''", - "Best": "IndexReader(Index(t.c_d_e_str)[[\"\",\"\"]])->Projection" + "Best": "IndexReader(Index(t.c_d_e_str)[[\"\",\"\"]]->Sel([like(test.t.c_str, , 92)]))->Projection" }, { "SQL": "select a from t where c_str like 'abc'", - "Best": "IndexReader(Index(t.c_d_e_str)[[\"abc\",\"abc\"]])->Projection" + "Best": "IndexReader(Index(t.c_d_e_str)[[\"abc\",\"abc\"]]->Sel([like(test.t.c_str, abc, 92)]))->Projection" }, { "SQL": "select a from t where c_str not like 'abc'", @@ -2191,7 +2191,7 @@ }, { "SQL": "select a from t where c_str like 'abc%'", - "Best": "IndexReader(Index(t.c_d_e_str)[[\"abc\",\"abd\")])->Projection" + "Best": "IndexReader(Index(t.c_d_e_str)[[\"abc\",\"abd\")]->Sel([like(test.t.c_str, abc%, 92)]))->Projection" }, { "SQL": "select a from t where c_str like 'abc_'", @@ -2203,23 +2203,23 @@ }, { "SQL": "select a from t where c_str like 'abc\\_' escape ''", - "Best": "IndexReader(Index(t.c_d_e_str)[[\"abc_\",\"abc_\"]])->Projection" + "Best": "IndexReader(Index(t.c_d_e_str)[[\"abc_\",\"abc_\"]]->Sel([like(test.t.c_str, abc\\_, 92)]))->Projection" }, { "SQL": "select a from t where c_str like 'abc\\_'", - "Best": "IndexReader(Index(t.c_d_e_str)[[\"abc_\",\"abc_\"]])->Projection" + "Best": "IndexReader(Index(t.c_d_e_str)[[\"abc_\",\"abc_\"]]->Sel([like(test.t.c_str, abc\\_, 92)]))->Projection" }, { "SQL": "select a from t where c_str like 'abc\\\\_'", - "Best": "IndexReader(Index(t.c_d_e_str)[[\"abc_\",\"abc_\"]])->Projection" + "Best": "IndexReader(Index(t.c_d_e_str)[[\"abc_\",\"abc_\"]]->Sel([like(test.t.c_str, abc\\_, 92)]))->Projection" }, { "SQL": "select a from t where c_str like 'abc\\_%'", - "Best": "IndexReader(Index(t.c_d_e_str)[[\"abc_\",\"abc`\")])->Projection" + "Best": "IndexReader(Index(t.c_d_e_str)[[\"abc_\",\"abc`\")]->Sel([like(test.t.c_str, abc\\_%, 92)]))->Projection" }, { "SQL": "select a from t where c_str like 'abc=_%' escape '='", - "Best": "IndexReader(Index(t.c_d_e_str)[[\"abc_\",\"abc`\")])->Projection" + "Best": "IndexReader(Index(t.c_d_e_str)[[\"abc_\",\"abc`\")]->Sel([like(test.t.c_str, abc=_%, 61)]))->Projection" }, { "SQL": "select a from t where c_str like 'abc\\__'", @@ -2227,7 +2227,7 @@ }, { "SQL": "select a from t where c_str like 123", - "Best": "IndexReader(Index(t.c_d_e_str)[[\"123\",\"123\"]])->Projection" + "Best": "IndexReader(Index(t.c_d_e_str)[[\"123\",\"123\"]]->Sel([like(test.t.c_str, 123, 92)]))->Projection" }, { "SQL": "select a from t where c = 1.9 and d > 3", @@ -2539,104 +2539,6 @@ } ] }, - { - "Name": "TestIndexJoinUnionScan", - "Cases": [ - { - "SQL": [ - "insert into t values(1, 1)", - "explain format = 'brief' select /*+ TIDB_INLJ(t2) */ * from t t1, t t2 where t1.a = t2.a" - ], - "Plan": [ - "IndexJoin 12500.00 root inner join, inner:UnionScan, outer key:test.t.a, inner key:test.t.a, equal cond:eq(test.t.a, test.t.a)", - "├─UnionScan(Build) 10000.00 root ", - "│ └─TableReader 10000.00 root data:TableFullScan", - "│ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", - "└─UnionScan(Probe) 10000.00 root ", - " └─TableReader 10000.00 root data:TableRangeScan", - " └─TableRangeScan 10000.00 cop[tikv] table:t2 range: decided by [test.t.a], keep order:false, stats:pseudo" - ] - }, - { - "SQL": [ - "insert into t values(1, 1)", - "explain format = 'brief' select /*+ TIDB_INLJ(t2) */ * from t t1, t t2 where t1.a = t2.b" - ], - "Plan": [ - "Projection 12487.50 root test.t.a, test.t.b, test.t.a, test.t.b", - "└─HashJoin 12487.50 root inner join, equal:[eq(test.t.b, test.t.a)]", - " ├─UnionScan(Build) 9990.00 root not(isnull(test.t.b))", - " │ └─TableReader 9990.00 root data:Selection", - " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t.b))", - " │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", - " └─UnionScan(Probe) 10000.00 root ", - " └─TableReader 10000.00 root data:TableFullScan", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ] - }, - { - "SQL": [ - "insert into t values(1, 1)", - "explain format = 'brief' select /*+ TIDB_INLJ(t2) */ t1.a , t2.b from t t1, t t2 where t1.a = t2.b" - ], - "Plan": [ - "Projection 12487.50 root test.t.a, test.t.b", - "└─HashJoin 12487.50 root inner join, equal:[eq(test.t.b, test.t.a)]", - " ├─UnionScan(Build) 10000.00 root ", - " │ └─TableReader 10000.00 root data:TableFullScan", - " │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", - " └─UnionScan(Probe) 9990.00 root not(isnull(test.t.b))", - " └─TableReader 9990.00 root data:Selection", - " └─Selection 9990.00 cop[tikv] not(isnull(test.t.b))", - " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" - ] - }, - { - "SQL": [ - "insert into tt values(1)", - "explain format = 'brief' select /*+ TIDB_INLJ(t2) */ * from tt t1, tt t2 where t1.a = t2.a" - ], - "Plan": [ - "HashJoin 25000.00 root inner join, equal:[eq(test.tt.a, test.tt.a)]", - "├─PartitionUnion(Build) 20000.00 root ", - "│ ├─UnionScan 10000.00 root ", - "│ │ └─TableReader 10000.00 root data:TableFullScan", - "│ │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo", - "│ └─UnionScan 10000.00 root ", - "│ └─TableReader 10000.00 root data:TableFullScan", - "│ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p1 keep order:false, stats:pseudo", - "└─PartitionUnion(Probe) 20000.00 root ", - " ├─UnionScan 10000.00 root ", - " │ └─TableReader 10000.00 root data:TableFullScan", - " │ └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p0 keep order:false, stats:pseudo", - " └─UnionScan 10000.00 root ", - " └─TableReader 10000.00 root data:TableFullScan", - " └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p1 keep order:false, stats:pseudo" - ] - } - ] - }, - { - "Name": "TestMergeJoinUnionScan", - "Cases": [ - { - "SQL": [ - "insert into t2 values (11, 'amazing merkle')", - "insert into t2 values (12, 'amazing merkle')", - "explain format = 'brief' select /*+ MERGE_JOIN(t1,t2) */ * from t1, t2 where t1.c_int = t2.c_int and t1.c_int = t2.c_int order by t1.c_int, t2.c_str;" - ], - "Plan": [ - "Sort 12500.00 root test.t1.c_int, test.t2.c_str", - "└─MergeJoin 12500.00 root inner join, left key:test.t1.c_int, right key:test.t2.c_int", - " ├─UnionScan(Build) 10000.00 root ", - " │ └─TableReader 10000.00 root data:TableFullScan", - " │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:true, stats:pseudo", - " └─TableReader(Probe) 10000.00 root data:TableFullScan", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo" - ] - } - ] - }, { "Name": "TestSemiJoinToInner", "Cases": [ @@ -2697,4722 +2599,778 @@ ] }, { - "Name": "TestLimitToCopHint", + "Name": "TestGroupConcatOrderby", "Cases": [ { - "SQL": "select /*+ LIMIT_TO_COP() */ * from tn where a = 1 and b > 10 and b < 20 and c > 50 order by d limit 1", + "SQL": "select /*+ agg_to_cop */ group_concat(name ORDER BY name desc SEPARATOR '++'), group_concat(id ORDER BY name desc, id asc SEPARATOR '--') from test;", "Plan": [ - "TopN 0.83 root test.tn.d, offset:0, count:1", - "└─IndexReader 0.83 root index:TopN", - " └─TopN 0.83 cop[tikv] test.tn.d, offset:0, count:1", - " └─Selection 0.83 cop[tikv] gt(test.tn.c, 50)", - " └─IndexRangeScan 2.50 cop[tikv] table:tn, index:a(a, b, c, d) range:(1 10,1 20), keep order:false, stats:pseudo" + "HashAgg 1.00 root funcs:group_concat(Column#6 order by Column#7 desc separator \"++\")->Column#4, funcs:group_concat(Column#8 order by Column#9 desc, Column#10 separator \"--\")->Column#5", + "└─Projection 10000.00 root cast(test.test.name, var_string(20))->Column#6, test.test.name->Column#7, cast(test.test.id, var_string(20))->Column#8, test.test.name->Column#9, test.test.id->Column#10", + " └─TableReader 10000.00 root data:TableFullScan", + " └─TableFullScan 10000.00 cop[tikv] table:test keep order:false, stats:pseudo" ], - "Warning": null + "Result": [ + "500++200++30++20++20++10 3--3--1--1--2--1" + ] }, { - "SQL": "select * from tn where a = 1 and b > 10 and b < 20 and c > 50 order by d limit 1", + "SQL": "select /*+ agg_to_cop */ group_concat(name ORDER BY name desc SEPARATOR '++'), group_concat(id ORDER BY name desc, id asc SEPARATOR '--') from ptest;", "Plan": [ - "TopN 0.83 root test.tn.d, offset:0, count:1", - "└─IndexReader 0.83 root index:TopN", - " └─TopN 0.83 cop[tikv] test.tn.d, offset:0, count:1", - " └─Selection 0.83 cop[tikv] gt(test.tn.c, 50)", - " └─IndexRangeScan 2.50 cop[tikv] table:tn, index:a(a, b, c, d) range:(1 10,1 20), keep order:false, stats:pseudo" + "HashAgg 1.00 root funcs:group_concat(Column#6 order by Column#7 desc separator \"++\")->Column#4, funcs:group_concat(Column#8 order by Column#9 desc, Column#10 separator \"--\")->Column#5", + "└─Projection 10000.00 root cast(test.ptest.name, var_string(20))->Column#6, test.ptest.name->Column#7, cast(test.ptest.id, var_string(20))->Column#8, test.ptest.name->Column#9, test.ptest.id->Column#10", + " └─TableReader 10000.00 root partition:all data:TableFullScan", + " └─TableFullScan 10000.00 cop[tikv] table:ptest keep order:false, stats:pseudo" ], - "Warning": null + "Result": [ + "500++200++30++20++20++10 3--3--1--1--2--1" + ] }, { - "SQL": "select /*+ LIMIT_TO_COP() */ a from tn where a div 2 order by a limit 1", + "SQL": "select /*+ agg_to_cop */ group_concat(distinct name order by name desc) from test;", "Plan": [ - "Limit 1.00 root offset:0, count:1", - "└─Selection 1.00 root intdiv(test.tn.a, 2)", - " └─IndexReader 1.00 root index:IndexFullScan", - " └─IndexFullScan 1.00 cop[tikv] table:tn, index:a(a, b, c, d) keep order:true, stats:pseudo" + "HashAgg 1.00 root funcs:group_concat(distinct Column#5 order by Column#6 desc separator \",\")->Column#4", + "└─Projection 10000.00 root cast(test.test.name, var_string(20))->Column#5, test.test.name->Column#6", + " └─TableReader 10000.00 root data:TableFullScan", + " └─TableFullScan 10000.00 cop[tikv] table:test keep order:false, stats:pseudo" ], - "Warning": [ - "Scalar function 'intdiv'(signature: IntDivideInt, return type: bigint(20)) is not supported to push down to storage layer now.", - "[planner:1815]Optimizer Hint LIMIT_TO_COP is inapplicable" + "Result": [ + "500,200,30,20,10" ] }, { - "SQL": "select /*+ LIMIT_TO_COP() */ a from tn where a > 10 limit 1", + "SQL": "select /*+ agg_to_cop */ group_concat(distinct name order by name desc) from ptest;", "Plan": [ - "Limit 1.00 root offset:0, count:1", - "└─IndexReader 1.00 root index:Limit", - " └─Limit 1.00 cop[tikv] offset:0, count:1", - " └─IndexRangeScan 1.00 cop[tikv] table:tn, index:a(a, b, c, d) range:(10,+inf], keep order:false, stats:pseudo" + "HashAgg 1.00 root funcs:group_concat(distinct Column#5 order by Column#6 desc separator \",\")->Column#4", + "└─Projection 10000.00 root cast(test.ptest.name, var_string(20))->Column#5, test.ptest.name->Column#6", + " └─TableReader 10000.00 root partition:all data:TableFullScan", + " └─TableFullScan 10000.00 cop[tikv] table:ptest keep order:false, stats:pseudo" ], - "Warning": null + "Result": [ + "500,200,30,20,10" + ] } ] }, { - "Name": "TestCTEMergeHint", + "Name": "TestInlineProjection", "Cases": [ { - "SQL": "with cte as (select /*+ MERGE() */ * from tc where tc.a < 60) select * from cte where cte.a <18", - "Plan": [ - "TableReader 4.00 root data:Selection", - "└─Selection 4.00 cop[tikv] lt(test.tc.a, 18), lt(test.tc.a, 60)", - " └─TableFullScan 7.00 cop[tikv] table:tc keep order:false" - ], - "Warning": null + "SQL": "select /*+ HASH_JOIN(t1) */ t1.b, t2.b from t1, t2 where t1.a = t2.a;", + "Plan": "LeftHashJoin{TableReader(Table(t1)->Sel([not(isnull(test.t1.a))]))->TableReader(Table(t2)->Sel([not(isnull(test.t2.a))]))}(test.t1.a,test.t2.a)", + "Hints": "hash_join(@`sel_1` `test`.`t1`), use_index(@`sel_1` `test`.`t1` ), use_index(@`sel_1` `test`.`t2` )" }, { - "SQL": "with cte as (select * from tc where tc.a < 60) select * from cte c1, cte c2 where c1.a <18", - "Plan": [ - "Projection 39.20 root test.tc.a, test.tc.a", - "└─HashJoin 39.20 root CARTESIAN inner join", - " ├─Selection(Build) 5.60 root lt(test.tc.a, 18)", - " │ └─CTEFullScan 7.00 root CTE:cte AS c1 data:CTE_0", - " └─CTEFullScan(Probe) 7.00 root CTE:cte AS c2 data:CTE_0", - "CTE_0 7.00 root Non-Recursive CTE", - "└─TableReader(Seed Part) 7.00 root data:Selection", - " └─Selection 7.00 cop[tikv] lt(test.tc.a, 60), or(lt(test.tc.a, 18), 1)", - " └─TableFullScan 7.00 cop[tikv] table:tc keep order:false" - ], - "Warning": null + "SQL": "select /*+ HASH_JOIN(t1) */ t1.b, t2.b from t1 inner join t2 on t1.a = t2.a;", + "Plan": "LeftHashJoin{TableReader(Table(t1)->Sel([not(isnull(test.t1.a))]))->TableReader(Table(t2)->Sel([not(isnull(test.t2.a))]))}(test.t1.a,test.t2.a)", + "Hints": "hash_join(@`sel_1` `test`.`t1`), use_index(@`sel_1` `test`.`t1` ), use_index(@`sel_1` `test`.`t2` )" }, { - "SQL": "with cte as (select /*+ MERGE() */ * from v) select * from cte", - "Plan": [ - "TableReader 7.00 root data:TableFullScan", - "└─TableFullScan 7.00 cop[tikv] table:tc keep order:false" - ], - "Warning": null + "SQL": "select /*+ HASH_JOIN(t1) */ t1.b, t2.b from t1 left outer join t2 on t1.a = t2.a;", + "Plan": "LeftHashJoin{TableReader(Table(t1))->TableReader(Table(t2)->Sel([not(isnull(test.t2.a))]))}(test.t1.a,test.t2.a)", + "Hints": "hash_join(@`sel_1` `test`.`t1`), use_index(@`sel_1` `test`.`t1` ), use_index(@`sel_1` `test`.`t2` )" }, { - "SQL": "WITH cte1 AS (SELECT /*+ MERGE() */ a FROM tc), cte2 AS (SELECT /*+ MERGE()*/ c FROM te) SELECT * FROM cte1 JOIN cte2 WHERE cte1.a = cte2.c;", - "Plan": [ - "HashJoin 7.00 root inner join, equal:[eq(test.tc.a, test.te.c)]", - "├─TableReader(Build) 7.00 root data:Selection", - "│ └─Selection 7.00 cop[tikv] not(isnull(test.te.c))", - "│ └─TableFullScan 7.00 cop[tikv] table:te keep order:false", - "└─TableReader(Probe) 7.00 root data:Selection", - " └─Selection 7.00 cop[tikv] not(isnull(test.tc.a))", - " └─TableFullScan 7.00 cop[tikv] table:tc keep order:false" - ], - "Warning": null + "SQL": "select /*+ HASH_JOIN(t1) */ t1.b, t2.b from t1 right outer join t2 on t1.a = t2.a;", + "Plan": "RightHashJoin{TableReader(Table(t1)->Sel([not(isnull(test.t1.a))]))->TableReader(Table(t2))}(test.t1.a,test.t2.a)", + "Hints": "hash_join(@`sel_1` `test`.`t1`), use_index(@`sel_1` `test`.`t1` ), use_index(@`sel_1` `test`.`t2` )" }, { - "SQL": "WITH cte1 AS (SELECT a FROM tc), cte2 AS (SELECT /*+ MERGE() */ c FROM te) SELECT * FROM cte1 JOIN cte2 WHERE cte1.a = cte2.c;", - "Plan": [ - "HashJoin 7.00 root inner join, equal:[eq(test.tc.a, test.te.c)]", - "├─TableReader(Build) 7.00 root data:Selection", - "│ └─Selection 7.00 cop[tikv] not(isnull(test.te.c))", - "│ └─TableFullScan 7.00 cop[tikv] table:te keep order:false", - "└─TableReader(Probe) 7.00 root data:Selection", - " └─Selection 7.00 cop[tikv] not(isnull(test.tc.a))", - " └─TableFullScan 7.00 cop[tikv] table:tc keep order:false" - ], - "Warning": null + "SQL": "select 1 from (select /*+ HASH_JOIN(t1) */ t1.a in (select t2.a from t2) from t1) x;", + "Plan": "LeftHashJoin{IndexReader(Index(t1.idx_a)[[NULL,+inf]])->IndexReader(Index(t2.idx_a)[[NULL,+inf]])}->Projection", + "Hints": "hash_join(@`sel_2` `test`.`t1`), use_index(@`sel_2` `test`.`t1` `idx_a`), no_order_index(@`sel_2` `test`.`t1` `idx_a`), use_index(@`sel_3` `test`.`t2` `idx_a`), no_order_index(@`sel_3` `test`.`t2` `idx_a`)" }, { - "SQL": "with recursive cte1(c1) as (select 1 union select /*+ MERGE() */ c1 + 1 c1 from cte1 where c1 < 100) select * from cte1;", - "Plan": [ - "CTEFullScan 2.00 root CTE:cte1 data:CTE_0", - "CTE_0 2.00 root Recursive CTE", - "├─Projection(Seed Part) 1.00 root 1->Column#2", - "│ └─TableDual 1.00 root rows:1", - "└─Projection(Recursive Part) 0.80 root cast(plus(Column#3, 1), bigint(1) BINARY)->Column#5", - " └─Selection 0.80 root lt(Column#3, 100)", - " └─CTETable 1.00 root Scan on CTE_0" - ], - "Warning": [ - "[planner:1815]Recursive CTE cte1 can not be inlined by merge() or tidb_opt_force_inline_cte." - ] + "SQL": "select 1 from (select /*+ HASH_JOIN(t1) */ t1.a not in (select t2.a from t2) from t1) x;", + "Plan": "LeftHashJoin{IndexReader(Index(t1.idx_a)[[NULL,+inf]])->IndexReader(Index(t2.idx_a)[[NULL,+inf]])}->Projection", + "Hints": "hash_join(@`sel_2` `test`.`t1`), use_index(@`sel_2` `test`.`t1` `idx_a`), no_order_index(@`sel_2` `test`.`t1` `idx_a`), use_index(@`sel_3` `test`.`t2` `idx_a`), no_order_index(@`sel_3` `test`.`t2` `idx_a`)" }, { - "SQL": "WITH cte1 AS (SELECT * FROM t1) SELECT /*+ MERGE() */ * FROM cte1 join t2 on cte1.a = t2.b;", - "Plan": [ - "HashJoin 7.00 root inner join, equal:[eq(test.t1.a, test.t2.b)]", - "├─TableReader(Build) 7.00 root data:Selection", - "│ └─Selection 7.00 cop[tikv] not(isnull(test.t2.b))", - "│ └─TableFullScan 7.00 cop[tikv] table:t2 keep order:false", - "└─TableReader(Probe) 7.00 root data:Selection", - " └─Selection 7.00 cop[tikv] not(isnull(test.t1.a))", - " └─TableFullScan 7.00 cop[tikv] table:t1 keep order:false" - ], - "Warning": [ - "[planner:1815]Hint merge() is inapplicable. Please check whether the hint is used in the right place, you should use this hint inside the CTE." - ] + "SQL": "select /*+ INL_JOIN(t1) */ t1.b, t2.b from t1 inner join t2 on t1.a = t2.a;", + "Plan": "IndexJoin{IndexLookUp(Index(t1.idx_a)[[NULL,NULL]]->Sel([not(isnull(test.t1.a))]), Table(t1))->TableReader(Table(t2)->Sel([not(isnull(test.t2.a))]))}(test.t2.a,test.t1.a)", + "Hints": "inl_join(@`sel_1` `test`.`t1`), use_index(@`sel_1` `test`.`t1` `idx_a`), no_order_index(@`sel_1` `test`.`t1` `idx_a`), use_index(@`sel_1` `test`.`t2` )" }, { - "SQL": "with cte1 as (with cte3 as (select /*+ MERGE() */ * from t1),cte4 as (select /*+ MERGE() */ * from t2) select /*+ MERGE() */ * from cte3,cte4) ,cte2 as (select /*+ MERGE() */ * from t3) select * from cte1,cte2;", - "Plan": [ - "HashJoin 343.00 root CARTESIAN inner join", - "├─TableReader(Build) 7.00 root data:TableFullScan", - "│ └─TableFullScan 7.00 cop[tikv] table:t3 keep order:false", - "└─HashJoin(Probe) 49.00 root CARTESIAN inner join", - " ├─TableReader(Build) 7.00 root data:TableFullScan", - " │ └─TableFullScan 7.00 cop[tikv] table:t2 keep order:false", - " └─TableReader(Probe) 7.00 root data:TableFullScan", - " └─TableFullScan 7.00 cop[tikv] table:t1 keep order:false" - ], - "Warning": null + "SQL": "select /*+ INL_HASH_JOIN(t1) */ t1.b, t2.b from t1 inner join t2 on t1.a = t2.a;", + "Plan": "IndexHashJoin{IndexLookUp(Index(t1.idx_a)[[NULL,NULL]]->Sel([not(isnull(test.t1.a))]), Table(t1))->TableReader(Table(t2)->Sel([not(isnull(test.t2.a))]))}(test.t2.a,test.t1.a)", + "Hints": "inl_hash_join(@`sel_1` `test`.`t1`), use_index(@`sel_1` `test`.`t1` `idx_a`), no_order_index(@`sel_1` `test`.`t1` `idx_a`), use_index(@`sel_1` `test`.`t2` )" }, { - "SQL": "with cte1 as (select * from tc), cte2 as (with cte3 as (select /*+ MERGE() */ * from te) ,cte4 as (select * from tc) select * from cte3,cte4) select * from cte2;", - "Plan": [ - "HashJoin 49.00 root CARTESIAN inner join", - "├─TableReader(Build) 7.00 root data:TableFullScan", - "│ └─TableFullScan 7.00 cop[tikv] table:tc keep order:false", - "└─TableReader(Probe) 7.00 root data:TableFullScan", - " └─TableFullScan 7.00 cop[tikv] table:te keep order:false" - ], - "Warning": null + "SQL": "select /*+ INL_MERGE_JOIN(t1) */ t1.b, t2.b from t1 inner join t2 on t1.a = t2.a;", + "Plan": "IndexMergeJoin{IndexLookUp(Index(t1.idx_a)[[NULL,NULL]]->Sel([not(isnull(test.t1.a))]), Table(t1))->Projection->TableReader(Table(t2)->Sel([not(isnull(test.t2.a))]))}(test.t2.a,test.t1.a)", + "Hints": "inl_merge_join(@`sel_1` `test`.`t1`), use_index(@`sel_1` `test`.`t1` `idx_a`), order_index(@`sel_1` `test`.`t1` `idx_a`), use_index(@`sel_1` `test`.`t2` )" }, { - "SQL": "with cte1 as (with cte2 as (select /*+ MERGE() */ * from te) ,cte3 as (select /*+ MERGE() */ * from tc) select /*+ MERGE() */ * from cte2,cte3) select * from cte1;", - "Plan": [ - "HashJoin 49.00 root CARTESIAN inner join", - "├─TableReader(Build) 7.00 root data:TableFullScan", - "│ └─TableFullScan 7.00 cop[tikv] table:tc keep order:false", - "└─TableReader(Probe) 7.00 root data:TableFullScan", - " └─TableFullScan 7.00 cop[tikv] table:te keep order:false" - ], - "Warning": null - }, + "SQL": "select /*+ MERGE_JOIN(t1) */ t1.b, t2.b from t1 inner join t2 on t1.a = t2.a;", + "Plan": "MergeInnerJoin{IndexLookUp(Index(t1.idx_a)[[-inf,+inf]], Table(t1))->Projection->IndexLookUp(Index(t2.idx_a)[[-inf,+inf]], Table(t2))->Projection}(test.t1.a,test.t2.a)", + "Hints": "merge_join(@`sel_1` `test`.`t1`), use_index(@`sel_1` `test`.`t1` `idx_a`), order_index(@`sel_1` `test`.`t1` `idx_a`), use_index(@`sel_1` `test`.`t2` `idx_a`), order_index(@`sel_1` `test`.`t2` `idx_a`)" + } + ] + }, + { + "Name": "TestHintFromDiffDatabase", + "Cases": [ + { + "SQL": "select /*+ inl_hash_join(test.t1) */ * from test.t2 join test.t1 on test.t2.a = test.t1.a", + "Plan": "IndexHashJoin{IndexReader(Index(t2.idx_a)[[-inf,+inf]])->IndexReader(Index(t1.idx_a)[[NULL,NULL]]->Sel([not(isnull(test.t1.a))]))}(test.t2.a,test.t1.a)" + } + ] + }, + { + "Name": "TestMPPSinglePartitionType", + "Cases": [ { - "SQL": "with cte1 as (select * from t1), cte2 as (with cte3 as (with cte5 as (select * from t2),cte6 as (select * from t3) select * from cte5,cte6) ,cte4 as (select * from t4) select * from cte3,cte4) select * from cte1,cte2;", + "SQL": "select * from employee where deptid>1", "Plan": [ - "HashJoin 2401.00 root CARTESIAN inner join", - "├─HashJoin(Build) 49.00 root CARTESIAN inner join", - "│ ├─TableReader(Build) 7.00 root data:TableFullScan", - "│ │ └─TableFullScan 7.00 cop[tikv] table:t4 keep order:false", - "│ └─TableReader(Probe) 7.00 root data:TableFullScan", - "│ └─TableFullScan 7.00 cop[tikv] table:t3 keep order:false", - "└─HashJoin(Probe) 49.00 root CARTESIAN inner join", - " ├─TableReader(Build) 7.00 root data:TableFullScan", - " │ └─TableFullScan 7.00 cop[tikv] table:t2 keep order:false", - " └─TableReader(Probe) 7.00 root data:TableFullScan", - " └─TableFullScan 7.00 cop[tikv] table:t1 keep order:false" - ], - "Warning": null + "TableReader 3333.33 root MppVersion: 2, data:ExchangeSender", + "└─ExchangeSender 3333.33 mpp[tiflash] ExchangeType: PassThrough", + " └─Selection 3333.33 mpp[tiflash] gt(test.employee.deptid, 1)", + " └─TableFullScan 10000.00 mpp[tiflash] table:employee pushed down filter:empty, keep order:false, stats:pseudo" + ] }, { - "SQL": "with cte1 as (select /*+ MERGE() */ * from t1), cte2 as (with cte3 as (with cte5 as (select * from t2),cte6 as (select * from t3) select * from cte5,cte6) ,cte4 as (select * from t4) select * from cte3,cte4) select * from cte1,cte2;", + "SQL": "select deptid+5, empid*10 from employee where deptid>1", "Plan": [ - "HashJoin 2401.00 root CARTESIAN inner join", - "├─HashJoin(Build) 49.00 root CARTESIAN inner join", - "│ ├─TableReader(Build) 7.00 root data:TableFullScan", - "│ │ └─TableFullScan 7.00 cop[tikv] table:t4 keep order:false", - "│ └─TableReader(Probe) 7.00 root data:TableFullScan", - "│ └─TableFullScan 7.00 cop[tikv] table:t3 keep order:false", - "└─HashJoin(Probe) 49.00 root CARTESIAN inner join", - " ├─TableReader(Build) 7.00 root data:TableFullScan", - " │ └─TableFullScan 7.00 cop[tikv] table:t2 keep order:false", - " └─TableReader(Probe) 7.00 root data:TableFullScan", - " └─TableFullScan 7.00 cop[tikv] table:t1 keep order:false" - ], - "Warning": null + "TableReader 3333.33 root MppVersion: 2, data:ExchangeSender", + "└─ExchangeSender 3333.33 mpp[tiflash] ExchangeType: PassThrough", + " └─Projection 3333.33 mpp[tiflash] plus(test.employee.deptid, 5)->Column#5, mul(test.employee.empid, 10)->Column#6", + " └─Selection 3333.33 mpp[tiflash] gt(test.employee.deptid, 1)", + " └─TableFullScan 10000.00 mpp[tiflash] table:employee pushed down filter:empty, keep order:false, stats:pseudo" + ] }, { - "SQL": "with cte1 as (select * from t1), cte2 as (with cte3 as (with cte5 as (select * from t2),cte6 as (select * from t3) select * from cte5,cte6) ,cte4 as (select /*+ MERGE() */ * from t4) select * from cte3,cte4) select * from cte1,cte2;", + "SQL": "select count(*) from employee group by deptid+1", "Plan": [ - "HashJoin 2401.00 root CARTESIAN inner join", - "├─HashJoin(Build) 49.00 root CARTESIAN inner join", - "│ ├─TableReader(Build) 7.00 root data:TableFullScan", - "│ │ └─TableFullScan 7.00 cop[tikv] table:t4 keep order:false", - "│ └─TableReader(Probe) 7.00 root data:TableFullScan", - "│ └─TableFullScan 7.00 cop[tikv] table:t3 keep order:false", - "└─HashJoin(Probe) 49.00 root CARTESIAN inner join", - " ├─TableReader(Build) 7.00 root data:TableFullScan", - " │ └─TableFullScan 7.00 cop[tikv] table:t2 keep order:false", - " └─TableReader(Probe) 7.00 root data:TableFullScan", - " └─TableFullScan 7.00 cop[tikv] table:t1 keep order:false" - ], - "Warning": null + "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", + "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", + " └─Projection 8000.00 mpp[tiflash] Column#5", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#12, funcs:sum(Column#13)->Column#5", + " └─ExchangeReceiver 8000.00 mpp[tiflash] ", + " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#12, collate: binary]", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#14, funcs:count(1)->Column#13", + " └─Projection 10000.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#14", + " └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" + ] }, { - "SQL": "with cte1 as (select * from t1), cte2 as (with cte3 as (with cte5 as (select * from t2),cte6 as (select /*+ MERGE() */ * from t3) select * from cte5,cte6) ,cte4 as (select * from t4) select * from cte3,cte4) select * from cte1,cte2;", + "SQL": "select count(distinct deptid) a from employee", "Plan": [ - "HashJoin 2401.00 root CARTESIAN inner join", - "├─HashJoin(Build) 49.00 root CARTESIAN inner join", - "│ ├─TableReader(Build) 7.00 root data:TableFullScan", - "│ │ └─TableFullScan 7.00 cop[tikv] table:t4 keep order:false", - "│ └─TableReader(Probe) 7.00 root data:TableFullScan", - "│ └─TableFullScan 7.00 cop[tikv] table:t3 keep order:false", - "└─HashJoin(Probe) 49.00 root CARTESIAN inner join", - " ├─TableReader(Build) 7.00 root data:TableFullScan", - " │ └─TableFullScan 7.00 cop[tikv] table:t2 keep order:false", - " └─TableReader(Probe) 7.00 root data:TableFullScan", - " └─TableFullScan 7.00 cop[tikv] table:t1 keep order:false" - ], - "Warning": null + "TableReader 1.00 root MppVersion: 2, data:ExchangeSender", + "└─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", + " └─Projection 1.00 mpp[tiflash] Column#5", + " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#7)->Column#5", + " └─ExchangeReceiver 1.00 mpp[tiflash] ", + " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#7", + " └─ExchangeReceiver 1.00 mpp[tiflash] ", + " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary]", + " └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, ", + " └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" + ] }, { - "SQL": "with cte2 as (with cte4 as (select * from tc) select * from te, cte4) select * from cte2;", + "SQL": "select * from employee join employee e1 using(deptid)", "Plan": [ - "HashJoin 49.00 root CARTESIAN inner join", - "├─TableReader(Build) 7.00 root data:TableFullScan", - "│ └─TableFullScan 7.00 cop[tikv] table:tc keep order:false", - "└─TableReader(Probe) 7.00 root data:TableFullScan", - " └─TableFullScan 7.00 cop[tikv] table:te keep order:false" - ], - "Warning": null + "TableReader 12487.50 root MppVersion: 2, data:ExchangeSender", + "└─ExchangeSender 12487.50 mpp[tiflash] ExchangeType: PassThrough", + " └─Projection 12487.50 mpp[tiflash] test.employee.deptid, test.employee.empid, test.employee.salary, test.employee.empid, test.employee.salary", + " └─HashJoin 12487.50 mpp[tiflash] inner join, equal:[eq(test.employee.deptid, test.employee.deptid)]", + " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", + " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", + " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.employee.deptid))", + " │ └─TableFullScan 10000.00 mpp[tiflash] table:employee pushed down filter:empty, keep order:false, stats:pseudo", + " └─Selection(Probe) 9990.00 mpp[tiflash] not(isnull(test.employee.deptid))", + " └─TableFullScan 10000.00 mpp[tiflash] table:e1 pushed down filter:empty, keep order:false, stats:pseudo" + ] }, { - "SQL": "with cte2 as (with cte4 as (select /*+ merge() */ * from tc) select * from te, cte4) select * from cte2;", + "SQL": "select count(distinct a) from (select count(distinct deptid) a from employee) x", "Plan": [ - "HashJoin 49.00 root CARTESIAN inner join", - "├─TableReader(Build) 7.00 root data:TableFullScan", - "│ └─TableFullScan 7.00 cop[tikv] table:tc keep order:false", - "└─TableReader(Probe) 7.00 root data:TableFullScan", - " └─TableFullScan 7.00 cop[tikv] table:te keep order:false" - ], - "Warning": null + "TableReader 1.00 root MppVersion: 2, data:ExchangeSender", + "└─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", + " └─Projection 1.00 mpp[tiflash] Column#6", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct Column#5)->Column#6", + " └─Projection 1.00 mpp[tiflash] Column#5", + " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#8)->Column#5", + " └─ExchangeReceiver 1.00 mpp[tiflash] ", + " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#8", + " └─ExchangeReceiver 1.00 mpp[tiflash] ", + " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary]", + " └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, ", + " └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" + ] }, { - "SQL": "with cte1 as (with cte2 as (with cte3 as (select /*+ MERGE() */ * from t2) select /*+ MERGE() */ * from cte3) select * from cte2,(select /*+ MERGE() */ * from t1) ttt) select * from cte1;", + "SQL": "select count(a) from (select count(distinct deptid) a, count(distinct empid) b from employee) x group by b+1", "Plan": [ - "HashJoin 49.00 root CARTESIAN inner join", - "├─TableReader(Build) 7.00 root data:TableFullScan", - "│ └─TableFullScan 7.00 cop[tikv] table:t1 keep order:false", - "└─TableReader(Probe) 7.00 root data:TableFullScan", - " └─TableFullScan 7.00 cop[tikv] table:t2 keep order:false" - ], - "Warning": [ - "[planner:1815]Hint merge() is inapplicable. Please check whether the hint is used in the right place, you should use this hint inside the CTE.", - "[planner:1815]Hint merge() is inapplicable. Please check whether the hint is used in the right place, you should use this hint inside the CTE." + "TableReader 1.00 root MppVersion: 2, data:ExchangeSender", + "└─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", + " └─Projection 1.00 mpp[tiflash] Column#7", + " └─HashAgg 1.00 mpp[tiflash] group by:Column#12, funcs:sum(Column#13)->Column#7", + " └─ExchangeReceiver 1.00 mpp[tiflash] ", + " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#12, collate: binary]", + " └─HashAgg 1.00 mpp[tiflash] group by:Column#15, funcs:count(Column#14)->Column#13", + " └─Projection 1.00 mpp[tiflash] Column#5->Column#14, plus(Column#6, 1)->Column#15", + " └─Projection 1.00 mpp[tiflash] Column#5, Column#6", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#5, funcs:count(distinct test.employee.empid)->Column#6", + " └─ExchangeReceiver 1.00 mpp[tiflash] ", + " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", + " └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, test.employee.empid, ", + " └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" ] }, { - "SQL": "with cte1 as (with cte2 as (with cte3 as (select /*+ MERGE() */ * from t2) select /*+ MERGE() */ * from cte3) select * from cte2,(select * from t1) ttt) select * from cte1,(select /*+ MERGE() */ * from t3) ttw;", + "SQL": "select count(a) from (select count(distinct deptid) a, count(distinct empid) b from employee) x group by b", "Plan": [ - "HashJoin 343.00 root CARTESIAN inner join", - "├─TableReader(Build) 7.00 root data:TableFullScan", - "│ └─TableFullScan 7.00 cop[tikv] table:t3 keep order:false", - "└─HashJoin(Probe) 49.00 root CARTESIAN inner join", - " ├─TableReader(Build) 7.00 root data:TableFullScan", - " │ └─TableFullScan 7.00 cop[tikv] table:t1 keep order:false", - " └─TableReader(Probe) 7.00 root data:TableFullScan", - " └─TableFullScan 7.00 cop[tikv] table:t2 keep order:false" - ], - "Warning": [ - "[planner:1815]Hint merge() is inapplicable. Please check whether the hint is used in the right place, you should use this hint inside the CTE." + "TableReader 1.00 root MppVersion: 2, data:ExchangeSender", + "└─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", + " └─Projection 1.00 mpp[tiflash] Column#7", + " └─HashAgg 1.00 mpp[tiflash] group by:Column#6, funcs:count(Column#5)->Column#7", + " └─Projection 1.00 mpp[tiflash] Column#5, Column#6", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#5, funcs:count(distinct test.employee.empid)->Column#6", + " └─ExchangeReceiver 1.00 mpp[tiflash] ", + " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", + " └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, test.employee.empid, ", + " └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" ] }, { - "SQL": "with cte1 as (with cte2 as (with cte3 as (select /*+ MERGE() */ * from t2) select /*+ MERGE() */ * from cte3) select * from cte2,(select * from t1) ttt) select * from cte1,(select * from t3) ttw;", + "SQL": "select * from employee join (select count(distinct deptid) a, count(distinct empid) b from employee) e1", "Plan": [ - "HashJoin 343.00 root CARTESIAN inner join", - "├─TableReader(Build) 7.00 root data:TableFullScan", - "│ └─TableFullScan 7.00 cop[tikv] table:t3 keep order:false", - "└─HashJoin(Probe) 49.00 root CARTESIAN inner join", - " ├─TableReader(Build) 7.00 root data:TableFullScan", - " │ └─TableFullScan 7.00 cop[tikv] table:t1 keep order:false", - " └─TableReader(Probe) 7.00 root data:TableFullScan", - " └─TableFullScan 7.00 cop[tikv] table:t2 keep order:false" - ], - "Warning": null - } - ] - }, - { - "Name": "TestForceInlineCTE", - "Cases": [ - { - "SQL": "set tidb_opt_force_inline_cte=1; -- enable force inline CTE", - "Plan": null, - "Warning": null - }, - { - "SQL": "with cte as (select * from t) select * from cte; -- inline", - "Plan": [ - "TableReader 10000.00 root data:TableFullScan", - "└─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "with cte as (select /*+ MERGE() */ * from t) select * from cte; -- inline", - "Plan": [ - "TableReader 10000.00 root data:TableFullScan", - "└─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "with cte as (select * from t) select * from cte cte1, cte cte2; -- inline CTEs is used by multi consumers", - "Plan": [ - "HashJoin 100000000.00 root CARTESIAN inner join", - "├─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", - " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "with cte1 as (select * from t), cte2 as (select a from cte1 group by a) select * from cte1, cte2; -- multi inline CTEs", - "Plan": [ - "HashJoin 80000000.00 root CARTESIAN inner join", - "├─HashAgg(Build) 8000.00 root group by:test.t.a, funcs:firstrow(test.t.a)->test.t.a", - "│ └─TableReader 8000.00 root data:HashAgg", - "│ └─HashAgg 8000.00 cop[tikv] group by:test.t.a, ", - "│ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo", - "└─TableReader(Probe) 10000.00 root data:TableFullScan", - " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "with recursive cte1(c1) as (select 1 union select c1 + 1 c1 from cte1 where c1 < 100) select * from cte1; -- Recursive CTE can not be inlined", - "Plan": [ - "CTEFullScan 2.00 root CTE:cte1 data:CTE_0", - "CTE_0 2.00 root Recursive CTE", - "├─Projection(Seed Part) 1.00 root 1->Column#2", - "│ └─TableDual 1.00 root rows:1", - "└─Projection(Recursive Part) 0.80 root cast(plus(Column#3, 1), bigint(1) BINARY)->Column#5", - " └─Selection 0.80 root lt(Column#3, 100)", - " └─CTETable 1.00 root Scan on CTE_0" - ], - "Warning": [ - "[planner:1815]Recursive CTE cte1 can not be inlined by merge() or tidb_opt_force_inline_cte." - ] - }, - { - "SQL": "with cte1 as (with cte2 as (select * from t) select * from cte2) select * from cte1; -- non-recursive 'cte2' definition inside another non-recursive 'cte1'", - "Plan": [ - "TableReader 10000.00 root data:TableFullScan", - "└─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "with recursive cte2(c1) as (with cte1 as (select * from t) select a c1 from cte1 union select c1+1 c1 from cte2 where c1 < 100) select * from cte2; -- non-recursive 'cte1' inside recursive 'cte2'", - "Plan": [ - "CTEFullScan 8001.00 root CTE:cte2 data:CTE_0", - "CTE_0 8001.00 root Recursive CTE", - "├─TableReader(Seed Part) 10000.00 root data:TableFullScan", - "│ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo", - "└─Projection(Recursive Part) 8000.00 root cast(plus(test.t.a, 1), int(11))->test.t.a", - " └─Selection 8000.00 root lt(test.t.a, 100)", - " └─CTETable 10000.00 root Scan on CTE_0" - ], - "Warning": [ - "[planner:1815]Recursive CTE cte2 can not be inlined by merge() or tidb_opt_force_inline_cte." - ] - }, - { - "SQL": "with cte1 as (with recursive cte2(c1) as (select 1 union select c1 + 1 c1 from cte2 where c1 < 100) select * from cte2) select * from cte1; -- recursive 'cte2' inside non-recursive 'cte1'", - "Plan": [ - "CTEFullScan 2.00 root CTE:cte2 data:CTE_2", - "CTE_2 2.00 root Recursive CTE", - "├─Projection(Seed Part) 1.00 root 1->Column#9", - "│ └─TableDual 1.00 root rows:1", - "└─Projection(Recursive Part) 0.80 root cast(plus(Column#10, 1), bigint(1) BINARY)->Column#12", - " └─Selection 0.80 root lt(Column#10, 100)", - " └─CTETable 1.00 root Scan on CTE_2" - ], - "Warning": [ - "[planner:1815]Recursive CTE cte2 can not be inlined by merge() or tidb_opt_force_inline_cte.", - "[planner:1815]Recursive CTE cte2 can not be inlined by merge() or tidb_opt_force_inline_cte." - ] - }, - { - "SQL": "set tidb_opt_force_inline_cte=0; -- disable force inline CTE", - "Plan": null, - "Warning": null - }, - { - "SQL": "with cte as (select * from t) select * from cte; -- inlined by single consumer", - "Plan": [ - "TableReader 10000.00 root data:TableFullScan", - "└─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "with cte as (select /*+ MERGE() */ * from t) select * from cte; -- inline, merge hint override session variable", - "Plan": [ - "TableReader 10000.00 root data:TableFullScan", - "└─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "with recursive cte1(c1) as (select 1 union select /*+ MERGE() */ c1 + 1 c1 from cte1 where c1 < 100) select * from cte1; -- Recursive CTE can not be inlined", - "Plan": [ - "CTEFullScan 2.00 root CTE:cte1 data:CTE_0", - "CTE_0 2.00 root Recursive CTE", - "├─Projection(Seed Part) 1.00 root 1->Column#2", - "│ └─TableDual 1.00 root rows:1", - "└─Projection(Recursive Part) 0.80 root cast(plus(Column#3, 1), bigint(1) BINARY)->Column#5", - " └─Selection 0.80 root lt(Column#3, 100)", - " └─CTETable 1.00 root Scan on CTE_0" - ], - "Warning": [ - "[planner:1815]Recursive CTE cte1 can not be inlined by merge() or tidb_opt_force_inline_cte." - ] - }, - { - "SQL": "with cte1 as (with cte2 as (select * from t) select * from cte2) select * from cte1; -- non-recursive 'cte2' definition inside another non-recursive 'cte1'", - "Plan": [ - "TableReader 10000.00 root data:TableFullScan", - "└─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "with recursive cte2(c1) as (with cte1 as (select * from t) select a c1 from cte1 union select c1+1 c1 from cte2 where c1 < 100) select * from cte2; -- non-recursive 'cte1' inside recursive 'cte2'", - "Plan": [ - "CTEFullScan 8001.00 root CTE:cte2 data:CTE_0", - "CTE_0 8001.00 root Recursive CTE", - "├─TableReader(Seed Part) 10000.00 root data:TableFullScan", - "│ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo", - "└─Projection(Recursive Part) 8000.00 root cast(plus(test.t.a, 1), int(11))->test.t.a", - " └─Selection 8000.00 root lt(test.t.a, 100)", - " └─CTETable 10000.00 root Scan on CTE_0" - ], - "Warning": null - }, - { - "SQL": "with cte1 as (with recursive cte2(c1) as (select 1 union select c1 + 1 c1 from cte2 where c1 < 100) select * from cte2) select * from cte1; -- recursive 'cte2' inside non-recursive 'cte1'", - "Plan": [ - "CTEFullScan 2.00 root CTE:cte2 data:CTE_2", - "CTE_2 2.00 root Recursive CTE", - "├─Projection(Seed Part) 1.00 root 1->Column#9", - "│ └─TableDual 1.00 root rows:1", - "└─Projection(Recursive Part) 0.80 root cast(plus(Column#10, 1), bigint(1) BINARY)->Column#12", - " └─Selection 0.80 root lt(Column#10, 100)", - " └─CTETable 1.00 root Scan on CTE_2" - ], - "Warning": null - } - ] - }, - { - "Name": "TestSingleConsumerCTE", - "Cases": [ - { - "SQL": "with recursive cte1(c1) as (select c1 from t1 union select c1 from t2 limit 1) select * from cte1; -- non-recursive limit, inline cte1", - "Plan": [ - "Limit 1.00 root offset:0, count:1", - "└─HashAgg 1.00 root group by:Column#18, funcs:firstrow(Column#18)->Column#18", - " └─Union 20000.00 root ", - " ├─TableReader 10000.00 root data:TableFullScan", - " │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", - " └─IndexReader 10000.00 root index:IndexFullScan", - " └─IndexFullScan 10000.00 cop[tikv] table:t2, index:c1(c1) keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "with recursive cte1(c1) as (select c1 from t1 union select c1 from t2 limit 100 offset 100) select * from cte1; -- non-recursive limit, inline cte1", - "Plan": [ - "Limit 100.00 root offset:100, count:100", - "└─HashAgg 200.00 root group by:Column#18, funcs:firstrow(Column#18)->Column#18", - " └─Union 20000.00 root ", - " ├─TableReader 10000.00 root data:TableFullScan", - " │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", - " └─IndexReader 10000.00 root index:IndexFullScan", - " └─IndexFullScan 10000.00 cop[tikv] table:t2, index:c1(c1) keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "with recursive cte1(c1) as (select c1 from t1 union select c1 from t2 limit 0 offset 0) select * from cte1; -- non-recursive limit, inline cte1", - "Plan": [ - "TableDual 0.00 root rows:0" - ], - "Warning": null - }, - { - "SQL": "with cte1 as (select 1), cte2 as (select 2) select * from cte1 union (with cte2 as (select 3) select * from cte2 union all select * from cte2) -- inline cte1, not inline cte2", - "Plan": [ - "HashAgg 3.00 root group by:Column#9, funcs:firstrow(Column#9)->Column#9", - "└─Union 3.00 root ", - " ├─Projection 1.00 root 1->Column#9", - " │ └─TableDual 1.00 root rows:1", - " └─Union 2.00 root ", - " ├─CTEFullScan 1.00 root CTE:cte2 data:CTE_2", - " └─CTEFullScan 1.00 root CTE:cte2 data:CTE_2", - "CTE_2 1.00 root Non-Recursive CTE", - "└─Projection(Seed Part) 1.00 root 3->Column#5", - " └─TableDual 1.00 root rows:1" - ], - "Warning": null - }, - { - "SQL": "with base1 as (WITH RECURSIVE cte(a) AS (with tmp as (select 1 as a) SELECT a from tmp UNION SELECT a+1 FROM cte) SELECT * FROM cte) select * from base1; -- issue #43318", - "Plan": [ - "CTEFullScan 2.00 root CTE:cte data:CTE_3", - "CTE_3 2.00 root Recursive CTE", - "├─Projection(Seed Part) 1.00 root 1->Column#15", - "│ └─TableDual 1.00 root rows:1", - "└─Projection(Recursive Part) 1.00 root cast(plus(Column#16, 1), bigint(1) BINARY)->Column#18", - " └─CTETable 1.00 root Scan on CTE_3" - ], - "Warning": null - }, - { - "SQL": "with cte as (select 1) select * from cte; -- inline cte", - "Plan": [ - "Projection 1.00 root 1->Column#3", - "└─TableDual 1.00 root rows:1" - ], - "Warning": null - }, - { - "SQL": "with cte1 as (select 1), cte2 as (select 2) select * from cte1 union select * from cte2; -- inline cte1, cte2", - "Plan": [ - "HashAgg 2.00 root group by:Column#7, funcs:firstrow(Column#7)->Column#7", - "└─Union 2.00 root ", - " ├─Projection 1.00 root 1->Column#7", - " │ └─TableDual 1.00 root rows:1", - " └─Projection 1.00 root 2->Column#7", - " └─TableDual 1.00 root rows:1" - ], - "Warning": null - }, - { - "SQL": "with cte as (select 1) select * from cte union select * from cte; -- cannot be inlined", - "Plan": [ - "HashAgg 2.00 root group by:Column#4, funcs:firstrow(Column#4)->Column#4", - "└─Union 2.00 root ", - " ├─CTEFullScan 1.00 root CTE:cte data:CTE_0", - " └─CTEFullScan 1.00 root CTE:cte data:CTE_0", - "CTE_0 1.00 root Non-Recursive CTE", - "└─Projection(Seed Part) 1.00 root 1->Column#1", - " └─TableDual 1.00 root rows:1" - ], - "Warning": null - }, - { - "SQL": "with cte as (with cte as (select 1) select * from cte) select * from cte; -- inline nested cte", - "Plan": [ - "Projection 1.00 root 1->Column#7", - "└─TableDual 1.00 root rows:1" - ], - "Warning": null - }, - { - "SQL": "with cte as (with cte as (select 1) select * from cte) select * from cte a, cte b; -- inline inner cte, cannot be inlined outer cte", - "Plan": [ - "HashJoin 1.00 root CARTESIAN inner join", - "├─CTEFullScan(Build) 1.00 root CTE:cte AS b data:CTE_0", - "└─CTEFullScan(Probe) 1.00 root CTE:cte AS a data:CTE_0", - "CTE_0 1.00 root Non-Recursive CTE", - "└─Projection(Seed Part) 1.00 root 1->Column#3", - " └─TableDual 1.00 root rows:1" - ], - "Warning": null - }, - { - "SQL": "with cte1 as (select 1), cte2 as (with cte3 as (select * from cte1) select * from cte3) select * from cte1, cte2; -- inline cte2, cte3, cannot be inlined cte1", - "Plan": [ - "HashJoin 1.00 root CARTESIAN inner join", - "├─CTEFullScan(Build) 1.00 root CTE:cte1 data:CTE_0", - "└─CTEFullScan(Probe) 1.00 root CTE:cte1 data:CTE_0", - "CTE_0 1.00 root Non-Recursive CTE", - "└─Projection(Seed Part) 1.00 root 1->Column#1", - " └─TableDual 1.00 root rows:1" - ], - "Warning": null - }, - { - "SQL": "with cte1 as (select 1), cte2 as (with cte3 as (select * from cte1) select * from cte3) select * from cte2; -- inline cte1, cte2, cte3", - "Plan": [ - "Projection 1.00 root 1->Column#12", - "└─TableDual 1.00 root rows:1" - ], - "Warning": null - }, - { - "SQL": "with cte1 as (select 1), cte2 as (select * from cte1) select * from cte2 a, cte2 b; -- inline cte1, cannot be inlined cte2", - "Plan": [ - "HashJoin 1.00 root CARTESIAN inner join", - "├─CTEFullScan(Build) 1.00 root CTE:cte2 AS b data:CTE_1", - "└─CTEFullScan(Probe) 1.00 root CTE:cte2 AS a data:CTE_1", - "CTE_1 1.00 root Non-Recursive CTE", - "└─Projection(Seed Part) 1.00 root 1->Column#3", - " └─TableDual 1.00 root rows:1" - ], - "Warning": null - }, - { - "SQL": "with recursive cte(a) as (select 1 union select a from cte) select * from cte; -- recursive cte cannot be inlined", - "Plan": [ - "CTEFullScan 2.00 root CTE:cte data:CTE_0", - "CTE_0 2.00 root Recursive CTE", - "├─Projection(Seed Part) 1.00 root 1->Column#2", - "│ └─TableDual 1.00 root rows:1", - "└─CTETable(Recursive Part) 1.00 root Scan on CTE_0" - ], - "Warning": null - }, - { - "SQL": "with x as (select * from (select a from t for update) s) select * from x where a = 1;", - "Plan": [ - "Projection 10.00 root test.t.a", - "└─SelectLock 10.00 root for update 0", - " └─TableReader 10.00 root data:Selection", - " └─Selection 10.00 cop[tikv] eq(test.t.a, 1)", - " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "set tidb_opt_force_inline_cte=1; -- enable force inline CTE", - "Plan": null, - "Warning": null - }, - { - "SQL": "with cte as (select 1) select * from cte union select * from cte; -- force inline cte while multi-consumer", - "Plan": [ - "HashAgg 2.00 root group by:Column#6, funcs:firstrow(Column#6)->Column#6", - "└─Union 2.00 root ", - " ├─Projection 1.00 root 1->Column#6", - " │ └─TableDual 1.00 root rows:1", - " └─Projection 1.00 root 1->Column#6", - " └─TableDual 1.00 root rows:1" - ], - "Warning": null - }, - { - "SQL": "set tidb_opt_force_inline_cte=0; -- disable force inline CTE", - "Plan": null, - "Warning": null - }, - { - "SQL": "with cte as (select 1) select /*+ MERGE() */ * from cte union select * from cte; -- firstly inline cte, secondly cannot be inlined", - "Plan": [ - "HashAgg 2.00 root group by:Column#4, funcs:firstrow(Column#4)->Column#4", - "└─Union 2.00 root ", - " ├─CTEFullScan 1.00 root CTE:cte data:CTE_0", - " └─CTEFullScan 1.00 root CTE:cte data:CTE_0", - "CTE_0 1.00 root Non-Recursive CTE", - "└─Projection(Seed Part) 1.00 root 1->Column#1", - " └─TableDual 1.00 root rows:1" - ], - "Warning": null - }, - { - "SQL": "with a as (select 8 as id from dual),maxa as (select max(id) as max_id from a),b as (with recursive temp as (select 1 as lvl from dual union all select lvl+1 from temp, maxa where lvl < max_id)select * from temp) select * from b; -- issue #47711, maxa cannot be inlined because it contains agg and in the recursive part of cte temp", - "Plan": [ - "CTEFullScan 1.64 root CTE:temp data:CTE_4", - "CTE_4 1.64 root Recursive CTE", - "├─Projection(Seed Part) 1.00 root 1->Column#14", - "│ └─TableDual 1.00 root rows:1", - "└─Projection(Recursive Part) 0.64 root cast(plus(Column#15, 1), bigint(1) BINARY)->Column#18", - " └─HashJoin 0.64 root CARTESIAN inner join, other cond:lt(Column#15, Column#16)", - " ├─Selection(Build) 0.80 root not(isnull(Column#16))", - " │ └─CTEFullScan 1.00 root CTE:maxa data:CTE_1", - " └─Selection(Probe) 0.80 root not(isnull(Column#15))", - " └─CTETable 1.00 root Scan on CTE_4", - "CTE_1 1.00 root Non-Recursive CTE", - "└─StreamAgg(Seed Part) 1.00 root funcs:max(Column#3)->Column#4", - " └─Projection 1.00 root 8->Column#3", - " └─TableDual 1.00 root rows:1" - ], - "Warning": null - }, - { - "SQL": "with a as (select count(*) from t1), b as (select 2 as bb from a), c as (with recursive tmp as (select 1 as res from t1 union all select res+1 from tmp,b where res+1 < bb) select * from tmp) select * from c; -- inline a, cannot be inline b because b indirectly contains agg and in the recursive part of cte tmp", - "Plan": [ - "CTEFullScan 20000.00 root CTE:tmp data:CTE_4", - "CTE_4 20000.00 root Recursive CTE", - "├─Projection(Seed Part) 10000.00 root 1->Column#26", - "│ └─TableReader 10000.00 root data:TableFullScan", - "│ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", - "└─Projection(Recursive Part) 10000.00 root cast(plus(Column#27, 1), bigint(1) BINARY)->Column#30", - " └─HashJoin 10000.00 root CARTESIAN inner join, other cond:lt(plus(Column#27, 1), Column#28)", - " ├─CTEFullScan(Build) 1.00 root CTE:b data:CTE_1", - " └─CTETable(Probe) 10000.00 root Scan on CTE_4", - "CTE_1 1.00 root Non-Recursive CTE", - "└─Projection(Seed Part) 1.00 root 2->Column#8", - " └─HashAgg 1.00 root funcs:count(Column#37)->Column#35", - " └─TableReader 1.00 root data:HashAgg", - " └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#37", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "with a as (select count(*) from t1), b as (select 2 as bb from a), c as (with recursive tmp as (select bb as res from b union all select res+1 from tmp where res +1 < 10) select * from tmp) select * from c; -- inline a, b, cannot be inline tmp, c", - "Plan": [ - "CTEFullScan 1.80 root CTE:tmp data:CTE_4", - "CTE_4 1.80 root Recursive CTE", - "├─Projection(Seed Part) 1.00 root 2->Column#37", - "│ └─HashAgg 1.00 root funcs:count(Column#46)->Column#44", - "│ └─TableReader 1.00 root data:HashAgg", - "│ └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#46", - "│ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", - "└─Projection(Recursive Part) 0.80 root cast(plus(Column#38, 1), bigint(1) BINARY)->Column#40", - " └─Selection 0.80 root lt(plus(Column#38, 1), 10)", - " └─CTETable 1.00 root Scan on CTE_4" - ], - "Warning": null - } - ] - }, - { - "Name": "TestPushdownDistinctEnableAggPushDownDisable", - "Cases": [ - { - "SQL": "select /*+ HASH_AGG(), AGG_TO_COP() */ sum(distinct b) from pt;", - "Plan": [ - "HashAgg 1.00 root funcs:sum(distinct Column#9)->Column#4", - "└─Projection 16000.00 root cast(test.pt.b, decimal(10,0) BINARY)->Column#9", - " └─PartitionUnion 16000.00 root ", - " ├─HashAgg 8000.00 root group by:test.pt.b, funcs:firstrow(test.pt.b)->test.pt.b, funcs:firstrow(test.pt.b)->test.pt.b", - " │ └─TableReader 8000.00 root data:HashAgg", - " │ └─HashAgg 8000.00 cop[tikv] group by:test.pt.b, ", - " │ └─TableFullScan 10000.00 cop[tikv] table:pt, partition:p0 keep order:false, stats:pseudo", - " └─HashAgg 8000.00 root group by:test.pt.b, funcs:firstrow(test.pt.b)->test.pt.b, funcs:firstrow(test.pt.b)->test.pt.b", - " └─TableReader 8000.00 root data:HashAgg", - " └─HashAgg 8000.00 cop[tikv] group by:test.pt.b, ", - " └─TableFullScan 10000.00 cop[tikv] table:pt, partition:p1 keep order:false, stats:pseudo" - ], - "Result": [ - "" - ] - }, - { - "SQL": "select /*+ HASH_AGG(), AGG_TO_COP() */ count(distinct a) from (select * from ta union all select * from tb) t;", - "Plan": [ - "HashAgg 1.00 root funcs:count(distinct Column#5)->Column#6", - "└─Union 20000.00 root ", - " ├─TableReader 10000.00 root data:TableFullScan", - " │ └─TableFullScan 10000.00 cop[tikv] table:ta keep order:false, stats:pseudo", - " └─TableReader 10000.00 root data:TableFullScan", - " └─TableFullScan 10000.00 cop[tikv] table:tb keep order:false, stats:pseudo" - ], - "Result": [ - "1" - ] - }, - { - "SQL": "select distinct DATE_FORMAT(timestamp, '%Y-%m-%d %H') as tt from tc ;", - "Plan": [ - "HashAgg 16000.00 root group by:Column#5, funcs:firstrow(Column#6)->Column#3", - "└─PartitionUnion 16000.00 root ", - " ├─HashAgg 8000.00 root group by:Column#7, funcs:firstrow(Column#7)->Column#6, funcs:firstrow(Column#7)->Column#5", - " │ └─IndexReader 8000.00 root index:HashAgg", - " │ └─HashAgg 8000.00 cop[tikv] group by:date_format(test.tc.timestamp, \"%Y-%m-%d %H\"), ", - " │ └─IndexFullScan 10000.00 cop[tikv] table:tc, partition:p2020072312, index:idx_timestamp(timestamp) keep order:false, stats:pseudo", - " └─HashAgg 8000.00 root group by:Column#10, funcs:firstrow(Column#10)->Column#6, funcs:firstrow(Column#10)->Column#5", - " └─IndexReader 8000.00 root index:HashAgg", - " └─HashAgg 8000.00 cop[tikv] group by:date_format(test.tc.timestamp, \"%Y-%m-%d %H\"), ", - " └─IndexFullScan 10000.00 cop[tikv] table:tc, partition:p2020072313, index:idx_timestamp(timestamp) keep order:false, stats:pseudo" - ], - "Result": null - } - ] - }, - { - "Name": "TestGroupConcatOrderby", - "Cases": [ - { - "SQL": "select /*+ agg_to_cop */ group_concat(name ORDER BY name desc SEPARATOR '++'), group_concat(id ORDER BY name desc, id asc SEPARATOR '--') from test;", - "Plan": [ - "HashAgg 1.00 root funcs:group_concat(Column#6 order by Column#7 desc separator \"++\")->Column#4, funcs:group_concat(Column#8 order by Column#9 desc, Column#10 separator \"--\")->Column#5", - "└─Projection 10000.00 root cast(test.test.name, var_string(20))->Column#6, test.test.name->Column#7, cast(test.test.id, var_string(20))->Column#8, test.test.name->Column#9, test.test.id->Column#10", - " └─TableReader 10000.00 root data:TableFullScan", - " └─TableFullScan 10000.00 cop[tikv] table:test keep order:false, stats:pseudo" - ], - "Result": [ - "500++200++30++20++20++10 3--3--1--1--2--1" - ] - }, - { - "SQL": "select /*+ agg_to_cop */ group_concat(name ORDER BY name desc SEPARATOR '++'), group_concat(id ORDER BY name desc, id asc SEPARATOR '--') from ptest;", - "Plan": [ - "HashAgg 1.00 root funcs:group_concat(Column#6 order by Column#7 desc separator \"++\")->Column#4, funcs:group_concat(Column#8 order by Column#9 desc, Column#10 separator \"--\")->Column#5", - "└─Projection 10000.00 root cast(test.ptest.name, var_string(20))->Column#6, test.ptest.name->Column#7, cast(test.ptest.id, var_string(20))->Column#8, test.ptest.name->Column#9, test.ptest.id->Column#10", - " └─TableReader 10000.00 root partition:all data:TableFullScan", - " └─TableFullScan 10000.00 cop[tikv] table:ptest keep order:false, stats:pseudo" - ], - "Result": [ - "500++200++30++20++20++10 3--3--1--1--2--1" - ] - }, - { - "SQL": "select /*+ agg_to_cop */ group_concat(distinct name order by name desc) from test;", - "Plan": [ - "HashAgg 1.00 root funcs:group_concat(distinct Column#5 order by Column#6 desc separator \",\")->Column#4", - "└─Projection 10000.00 root cast(test.test.name, var_string(20))->Column#5, test.test.name->Column#6", - " └─TableReader 10000.00 root data:TableFullScan", - " └─TableFullScan 10000.00 cop[tikv] table:test keep order:false, stats:pseudo" - ], - "Result": [ - "500,200,30,20,10" - ] - }, - { - "SQL": "select /*+ agg_to_cop */ group_concat(distinct name order by name desc) from ptest;", - "Plan": [ - "HashAgg 1.00 root funcs:group_concat(distinct Column#5 order by Column#6 desc separator \",\")->Column#4", - "└─Projection 10000.00 root cast(test.ptest.name, var_string(20))->Column#5, test.ptest.name->Column#6", - " └─TableReader 10000.00 root partition:all data:TableFullScan", - " └─TableFullScan 10000.00 cop[tikv] table:ptest keep order:false, stats:pseudo" - ], - "Result": [ - "500,200,30,20,10" - ] - } - ] - }, - { - "Name": "TestNominalSort", - "Cases": [ - { - "SQL": "select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by t1.a", - "Plan": [ - "MergeJoin 12487.50 root inner join, left key:test.t.a, right key:test.t.b", - "├─IndexReader(Build) 9990.00 root index:IndexFullScan", - "│ └─IndexFullScan 9990.00 cop[tikv] table:t2, index:idx_b(b) keep order:true, stats:pseudo", - "└─IndexReader(Probe) 9990.00 root index:IndexFullScan", - " └─IndexFullScan 9990.00 cop[tikv] table:t1, index:idx_a(a) keep order:true, stats:pseudo" - ], - "Result": [ - "1", - "1", - "2" - ] - }, - { - "SQL": "select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by t1.a+1", - "Plan": [ - "Projection 12487.50 root test.t.a", - "└─Projection 12487.50 root test.t.a, plus(test.t.a, 1)->Column#7", - " └─MergeJoin 12487.50 root inner join, left key:test.t.a, right key:test.t.b", - " ├─IndexReader(Build) 9990.00 root index:IndexFullScan", - " │ └─IndexFullScan 9990.00 cop[tikv] table:t2, index:idx_b(b) keep order:true, stats:pseudo", - " └─IndexReader(Probe) 9990.00 root index:IndexFullScan", - " └─IndexFullScan 9990.00 cop[tikv] table:t1, index:idx_a(a) keep order:true, stats:pseudo" - ], - "Result": [ - "1", - "1", - "2" - ] - }, - { - "SQL": "select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by t1.a-1", - "Plan": [ - "Projection 12487.50 root test.t.a", - "└─Projection 12487.50 root test.t.a, minus(test.t.a, 1)->Column#7", - " └─MergeJoin 12487.50 root inner join, left key:test.t.a, right key:test.t.b", - " ├─IndexReader(Build) 9990.00 root index:IndexFullScan", - " │ └─IndexFullScan 9990.00 cop[tikv] table:t2, index:idx_b(b) keep order:true, stats:pseudo", - " └─IndexReader(Probe) 9990.00 root index:IndexFullScan", - " └─IndexFullScan 9990.00 cop[tikv] table:t1, index:idx_a(a) keep order:true, stats:pseudo" - ], - "Result": [ - "1", - "1", - "2" - ] - }, - { - "SQL": "select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by -t1.a", - "Plan": [ - "Projection 12487.50 root test.t.a", - "└─Projection 12487.50 root test.t.a, unaryminus(test.t.a)->Column#7", - " └─MergeJoin 12487.50 root inner join, left key:test.t.a, right key:test.t.b", - " ├─IndexReader(Build) 9990.00 root index:IndexFullScan", - " │ └─IndexFullScan 9990.00 cop[tikv] table:t2, index:idx_b(b) keep order:true, desc, stats:pseudo", - " └─IndexReader(Probe) 9990.00 root index:IndexFullScan", - " └─IndexFullScan 9990.00 cop[tikv] table:t1, index:idx_a(a) keep order:true, desc, stats:pseudo" - ], - "Result": [ - "2", - "1", - "1" - ] - }, - { - "SQL": "select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by -t1.a+3", - "Plan": [ - "Projection 12487.50 root test.t.a", - "└─Projection 12487.50 root test.t.a, plus(unaryminus(test.t.a), 3)->Column#7", - " └─MergeJoin 12487.50 root inner join, left key:test.t.a, right key:test.t.b", - " ├─IndexReader(Build) 9990.00 root index:IndexFullScan", - " │ └─IndexFullScan 9990.00 cop[tikv] table:t2, index:idx_b(b) keep order:true, desc, stats:pseudo", - " └─IndexReader(Probe) 9990.00 root index:IndexFullScan", - " └─IndexFullScan 9990.00 cop[tikv] table:t1, index:idx_a(a) keep order:true, desc, stats:pseudo" - ], - "Result": [ - "2", - "1", - "1" - ] - }, - { - "SQL": "select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 1+t1.a", - "Plan": [ - "Projection 12487.50 root test.t.a", - "└─Projection 12487.50 root test.t.a, plus(1, test.t.a)->Column#7", - " └─MergeJoin 12487.50 root inner join, left key:test.t.a, right key:test.t.b", - " ├─IndexReader(Build) 9990.00 root index:IndexFullScan", - " │ └─IndexFullScan 9990.00 cop[tikv] table:t2, index:idx_b(b) keep order:true, stats:pseudo", - " └─IndexReader(Probe) 9990.00 root index:IndexFullScan", - " └─IndexFullScan 9990.00 cop[tikv] table:t1, index:idx_a(a) keep order:true, stats:pseudo" - ], - "Result": [ - "1", - "1", - "2" - ] - }, - { - "SQL": "select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 1-t1.a", - "Plan": [ - "Projection 12487.50 root test.t.a", - "└─Projection 12487.50 root test.t.a, minus(1, test.t.a)->Column#7", - " └─MergeJoin 12487.50 root inner join, left key:test.t.a, right key:test.t.b", - " ├─IndexReader(Build) 9990.00 root index:IndexFullScan", - " │ └─IndexFullScan 9990.00 cop[tikv] table:t2, index:idx_b(b) keep order:true, desc, stats:pseudo", - " └─IndexReader(Probe) 9990.00 root index:IndexFullScan", - " └─IndexFullScan 9990.00 cop[tikv] table:t1, index:idx_a(a) keep order:true, desc, stats:pseudo" - ], - "Result": [ - "2", - "1", - "1" - ] - }, - { - "SQL": "select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 1-t1.a+3", - "Plan": [ - "Projection 12487.50 root test.t.a", - "└─Projection 12487.50 root test.t.a, plus(minus(1, test.t.a), 3)->Column#7", - " └─MergeJoin 12487.50 root inner join, left key:test.t.a, right key:test.t.b", - " ├─IndexReader(Build) 9990.00 root index:IndexFullScan", - " │ └─IndexFullScan 9990.00 cop[tikv] table:t2, index:idx_b(b) keep order:true, desc, stats:pseudo", - " └─IndexReader(Probe) 9990.00 root index:IndexFullScan", - " └─IndexFullScan 9990.00 cop[tikv] table:t1, index:idx_a(a) keep order:true, desc, stats:pseudo" - ], - "Result": [ - "2", - "1", - "1" - ] - }, - { - "SQL": "select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 1+t1.a+3", - "Plan": [ - "Projection 12487.50 root test.t.a", - "└─Projection 12487.50 root test.t.a, plus(plus(1, test.t.a), 3)->Column#7", - " └─MergeJoin 12487.50 root inner join, left key:test.t.a, right key:test.t.b", - " ├─IndexReader(Build) 9990.00 root index:IndexFullScan", - " │ └─IndexFullScan 9990.00 cop[tikv] table:t2, index:idx_b(b) keep order:true, stats:pseudo", - " └─IndexReader(Probe) 9990.00 root index:IndexFullScan", - " └─IndexFullScan 9990.00 cop[tikv] table:t1, index:idx_a(a) keep order:true, stats:pseudo" - ], - "Result": [ - "1", - "1", - "2" - ] - }, - { - "SQL": "select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 3*t1.a", - "Plan": [ - "Projection 12487.50 root test.t.a", - "└─Sort 12487.50 root Column#7", - " └─Projection 12487.50 root test.t.a, mul(3, test.t.a)->Column#7", - " └─MergeJoin 12487.50 root inner join, left key:test.t.a, right key:test.t.b", - " ├─IndexReader(Build) 9990.00 root index:IndexFullScan", - " │ └─IndexFullScan 9990.00 cop[tikv] table:t2, index:idx_b(b) keep order:true, stats:pseudo", - " └─IndexReader(Probe) 9990.00 root index:IndexFullScan", - " └─IndexFullScan 9990.00 cop[tikv] table:t1, index:idx_a(a) keep order:true, stats:pseudo" - ], - "Result": [ - "1", - "1", - "2" - ] - } - ] - }, - { - "Name": "TestInlineProjection", - "Cases": [ - { - "SQL": "select /*+ HASH_JOIN(t1) */ t1.b, t2.b from t1, t2 where t1.a = t2.a;", - "Plan": "LeftHashJoin{TableReader(Table(t1)->Sel([not(isnull(test.t1.a))]))->TableReader(Table(t2)->Sel([not(isnull(test.t2.a))]))}(test.t1.a,test.t2.a)", - "Hints": "hash_join(@`sel_1` `test`.`t1`), use_index(@`sel_1` `test`.`t1` ), use_index(@`sel_1` `test`.`t2` )" - }, - { - "SQL": "select /*+ HASH_JOIN(t1) */ t1.b, t2.b from t1 inner join t2 on t1.a = t2.a;", - "Plan": "LeftHashJoin{TableReader(Table(t1)->Sel([not(isnull(test.t1.a))]))->TableReader(Table(t2)->Sel([not(isnull(test.t2.a))]))}(test.t1.a,test.t2.a)", - "Hints": "hash_join(@`sel_1` `test`.`t1`), use_index(@`sel_1` `test`.`t1` ), use_index(@`sel_1` `test`.`t2` )" - }, - { - "SQL": "select /*+ HASH_JOIN(t1) */ t1.b, t2.b from t1 left outer join t2 on t1.a = t2.a;", - "Plan": "LeftHashJoin{TableReader(Table(t1))->TableReader(Table(t2)->Sel([not(isnull(test.t2.a))]))}(test.t1.a,test.t2.a)", - "Hints": "hash_join(@`sel_1` `test`.`t1`), use_index(@`sel_1` `test`.`t1` ), use_index(@`sel_1` `test`.`t2` )" - }, - { - "SQL": "select /*+ HASH_JOIN(t1) */ t1.b, t2.b from t1 right outer join t2 on t1.a = t2.a;", - "Plan": "RightHashJoin{TableReader(Table(t1)->Sel([not(isnull(test.t1.a))]))->TableReader(Table(t2))}(test.t1.a,test.t2.a)", - "Hints": "hash_join(@`sel_1` `test`.`t1`), use_index(@`sel_1` `test`.`t1` ), use_index(@`sel_1` `test`.`t2` )" - }, - { - "SQL": "select 1 from (select /*+ HASH_JOIN(t1) */ t1.a in (select t2.a from t2) from t1) x;", - "Plan": "LeftHashJoin{IndexReader(Index(t1.idx_a)[[NULL,+inf]])->IndexReader(Index(t2.idx_a)[[NULL,+inf]])}->Projection", - "Hints": "hash_join(@`sel_2` `test`.`t1`), use_index(@`sel_2` `test`.`t1` `idx_a`), no_order_index(@`sel_2` `test`.`t1` `idx_a`), use_index(@`sel_3` `test`.`t2` `idx_a`), no_order_index(@`sel_3` `test`.`t2` `idx_a`)" - }, - { - "SQL": "select 1 from (select /*+ HASH_JOIN(t1) */ t1.a not in (select t2.a from t2) from t1) x;", - "Plan": "LeftHashJoin{IndexReader(Index(t1.idx_a)[[NULL,+inf]])->IndexReader(Index(t2.idx_a)[[NULL,+inf]])}->Projection", - "Hints": "hash_join(@`sel_2` `test`.`t1`), use_index(@`sel_2` `test`.`t1` `idx_a`), no_order_index(@`sel_2` `test`.`t1` `idx_a`), use_index(@`sel_3` `test`.`t2` `idx_a`), no_order_index(@`sel_3` `test`.`t2` `idx_a`)" - }, - { - "SQL": "select /*+ INL_JOIN(t1) */ t1.b, t2.b from t1 inner join t2 on t1.a = t2.a;", - "Plan": "IndexJoin{IndexLookUp(Index(t1.idx_a)[[NULL,NULL]]->Sel([not(isnull(test.t1.a))]), Table(t1))->TableReader(Table(t2)->Sel([not(isnull(test.t2.a))]))}(test.t2.a,test.t1.a)", - "Hints": "inl_join(@`sel_1` `test`.`t1`), use_index(@`sel_1` `test`.`t1` `idx_a`), no_order_index(@`sel_1` `test`.`t1` `idx_a`), use_index(@`sel_1` `test`.`t2` )" - }, - { - "SQL": "select /*+ INL_HASH_JOIN(t1) */ t1.b, t2.b from t1 inner join t2 on t1.a = t2.a;", - "Plan": "IndexHashJoin{IndexLookUp(Index(t1.idx_a)[[NULL,NULL]]->Sel([not(isnull(test.t1.a))]), Table(t1))->TableReader(Table(t2)->Sel([not(isnull(test.t2.a))]))}(test.t2.a,test.t1.a)", - "Hints": "inl_hash_join(@`sel_1` `test`.`t1`), use_index(@`sel_1` `test`.`t1` `idx_a`), no_order_index(@`sel_1` `test`.`t1` `idx_a`), use_index(@`sel_1` `test`.`t2` )" - }, - { - "SQL": "select /*+ INL_MERGE_JOIN(t1) */ t1.b, t2.b from t1 inner join t2 on t1.a = t2.a;", - "Plan": "IndexMergeJoin{IndexLookUp(Index(t1.idx_a)[[NULL,NULL]]->Sel([not(isnull(test.t1.a))]), Table(t1))->Projection->TableReader(Table(t2)->Sel([not(isnull(test.t2.a))]))}(test.t2.a,test.t1.a)", - "Hints": "inl_merge_join(@`sel_1` `test`.`t1`), use_index(@`sel_1` `test`.`t1` `idx_a`), order_index(@`sel_1` `test`.`t1` `idx_a`), use_index(@`sel_1` `test`.`t2` )" - }, - { - "SQL": "select /*+ MERGE_JOIN(t1) */ t1.b, t2.b from t1 inner join t2 on t1.a = t2.a;", - "Plan": "MergeInnerJoin{IndexLookUp(Index(t1.idx_a)[[-inf,+inf]], Table(t1))->Projection->IndexLookUp(Index(t2.idx_a)[[-inf,+inf]], Table(t2))->Projection}(test.t1.a,test.t2.a)", - "Hints": "merge_join(@`sel_1` `test`.`t1`), use_index(@`sel_1` `test`.`t1` `idx_a`), order_index(@`sel_1` `test`.`t1` `idx_a`), use_index(@`sel_1` `test`.`t2` `idx_a`), order_index(@`sel_1` `test`.`t2` `idx_a`)" - } - ] - }, - { - "Name": "TestHintFromDiffDatabase", - "Cases": [ - { - "SQL": "select /*+ inl_hash_join(test.t1) */ * from test.t2 join test.t1 on test.t2.a = test.t1.a", - "Plan": "IndexHashJoin{IndexReader(Index(t2.idx_a)[[-inf,+inf]])->IndexReader(Index(t1.idx_a)[[NULL,NULL]]->Sel([not(isnull(test.t1.a))]))}(test.t2.a,test.t1.a)" - } - ] - }, - { - "Name": "TestNthPlanHintWithExplain", - "Cases": [ - { - "SQL": "select /*+nth_plan(1)*/ * from test.tt where a=1 and b=1", - "Plan": [ - "TableReader 0.01 root data:Selection", - "└─Selection 0.01 cop[tikv] eq(test.tt.a, 1), eq(test.tt.b, 1)", - " └─TableFullScan 10000.00 cop[tikv] table:tt keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select /*+nth_plan(2)*/ * from test.tt where a=1 and b=1;", - "Plan": [ - "IndexLookUp 0.01 root ", - "├─IndexRangeScan(Build) 10.00 cop[tikv] table:tt, index:a(a) range:[1,1], keep order:false, stats:pseudo", - "└─Selection(Probe) 0.01 cop[tikv] eq(test.tt.b, 1)", - " └─TableRowIDScan 10.00 cop[tikv] table:tt keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select /*+nth_plan(3)*/ * from test.tt where a=1 and b=1;", - "Plan": [ - "IndexLookUp 0.01 root ", - "├─IndexRangeScan(Build) 10.00 cop[tikv] table:tt, index:b(b) range:[1,1], keep order:false, stats:pseudo", - "└─Selection(Probe) 0.01 cop[tikv] eq(test.tt.a, 1)", - " └─TableRowIDScan 10.00 cop[tikv] table:tt keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select /*+nth_plan(2)*/ * from test.tt where a=1 and b=1;", - "Plan": [ - "IndexLookUp 0.01 root ", - "├─IndexRangeScan(Build) 10.00 cop[tikv] table:tt, index:a(a) range:[1,1], keep order:false, stats:pseudo", - "└─Selection(Probe) 0.01 cop[tikv] eq(test.tt.b, 1)", - " └─TableRowIDScan 10.00 cop[tikv] table:tt keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select * from test.tt where a=1 and b=1", - "Plan": [ - "IndexLookUp 0.01 root ", - "├─IndexRangeScan(Build) 10.00 cop[tikv] table:tt, index:a(a) range:[1,1], keep order:false, stats:pseudo", - "└─Selection(Probe) 0.01 cop[tikv] eq(test.tt.b, 1)", - " └─TableRowIDScan 10.00 cop[tikv] table:tt keep order:false, stats:pseudo" - ] - } - ] - }, - { - "Name": "TestINMJHint", - "Cases": [ - { - "SQL": "select /*+ inl_merge_join(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "IndexMergeJoin 12500.00 root left outer join, inner:TableReader, outer key:test.t1.a, inner key:test.t2.a, other cond:eq(test.t1.b, test.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", - " └─TableRangeScan 10000.00 cop[tikv] table:t2 range: decided by [test.t1.a], keep order:true, stats:pseudo" - ], - "Result": [ - "1 1", - "2 " - ] - }, - { - "SQL": "select /*+ inl_hash_join(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "IndexHashJoin 12500.00 root left outer join, inner:TableReader, outer key:test.t1.a, inner key:test.t2.a, equal cond:eq(test.t1.a, test.t2.a), eq(test.t1.b, test.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", - " └─TableRangeScan 10000.00 cop[tikv] table:t2 range: decided by [test.t1.a], keep order:false, stats:pseudo" - ], - "Result": [ - "1 1", - "2 " - ] - }, - { - "SQL": "select /*+ inl_join(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "IndexJoin 12500.00 root left outer join, inner:TableReader, outer key:test.t1.a, inner key:test.t2.a, equal cond:eq(test.t1.a, test.t2.a), eq(test.t1.b, test.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", - " └─TableRangeScan 10000.00 cop[tikv] table:t2 range: decided by [test.t1.a], keep order:false, stats:pseudo" - ], - "Result": [ - "1 1", - "2 " - ] - }, - { - "SQL": "select /*+ hash_join(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root left outer join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1", - "2 " - ] - } - ] - }, - { - "Name": "TestEliminateMaxOneRow", - "Cases": [ - { - "SQL": "select a from t2 where t2.a < (select t1.a from t1 where t1.a = t2.a);", - "Plan": [ - "HashJoin 9990.00 root inner join, equal:[eq(test.t2.a, test.t1.a)], other cond:lt(test.t2.a, test.t1.a)", - "├─IndexReader(Build) 7992.00 root index:Selection", - "│ └─Selection 7992.00 cop[tikv] lt(test.t1.a, test.t1.a)", - "│ └─IndexFullScan 9990.00 cop[tikv] table:t1, index:idx_a(a) keep order:false, stats:pseudo", - "└─TableReader(Probe) 7992.00 root data:Selection", - " └─Selection 7992.00 cop[tikv] lt(test.t2.a, test.t2.a), not(isnull(test.t2.a))", - " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" - ], - "Result": null - }, - { - "SQL": "select a from t2 where t2.a < (select t1.a from t1 where t1.b = t2.b and t1.a is null);", - "Plan": [ - "Projection 9990.00 root test.t2.a", - "└─Apply 9990.00 root CARTESIAN inner join, other cond:lt(test.t2.a, test.t1.a)", - " ├─TableReader(Build) 9990.00 root data:Selection", - " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t2.a))", - " │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", - " └─Selection(Probe) 7992.00 root not(isnull(test.t1.a))", - " └─MaxOneRow 9990.00 root ", - " └─IndexLookUp 9.99 root ", - " ├─IndexRangeScan(Build) 9990.00 cop[tikv] table:t1, index:idx_a(a) range:[NULL,NULL], keep order:false, stats:pseudo", - " └─Selection(Probe) 9.99 cop[tikv] eq(test.t1.b, test.t2.b)", - " └─TableRowIDScan 9990.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": null - }, - { - "SQL": "select a from t2 where t2.a < (select t3.a from t3 where t3.a = t2.a);", - "Plan": [ - "Projection 9990.00 root test.t2.a", - "└─Apply 9990.00 root CARTESIAN inner join, other cond:lt(test.t2.a, test.t3.a)", - " ├─TableReader(Build) 9990.00 root data:Selection", - " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t2.a))", - " │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", - " └─Selection(Probe) 7992.00 root not(isnull(test.t3.a))", - " └─MaxOneRow 9990.00 root ", - " └─IndexReader 19980.00 root index:IndexRangeScan", - " └─IndexRangeScan 19980.00 cop[tikv] table:t3, index:idx_abc(a, b, c) range: decided by [eq(test.t3.a, test.t2.a)], keep order:false, stats:pseudo" - ], - "Result": null - } - ] - }, - { - "Name": "TestEnumIndex", - "Cases": [ - { - "SQL": "select e from t where e = 'b'", - "Plan": [ - "IndexReader 10.00 root index:IndexRangeScan", - "└─IndexRangeScan 10.00 cop[tikv] table:t, index:idx(e) range:[\"b\",\"b\"], keep order:false, stats:pseudo" - ], - "Result": [ - "b" - ] - }, - { - "SQL": "select e from t where e != 'b'", - "Plan": [ - "IndexReader 40.00 root index:IndexRangeScan", - "└─IndexRangeScan 40.00 cop[tikv] table:t, index:idx(e) range:[\"\",\"\"], [\"c\",\"c\"], [\"a\",\"a\"], [\"\",\"\"], keep order:false, stats:pseudo" - ], - "Result": [ - "", - "", - "a", - "c" - ] - }, - { - "SQL": "select e from t where e > 'b'", - "Plan": [ - "IndexReader 10.00 root index:IndexRangeScan", - "└─IndexRangeScan 10.00 cop[tikv] table:t, index:idx(e) range:[\"c\",\"c\"], keep order:false, stats:pseudo" - ], - "Result": [ - "c" - ] - }, - { - "SQL": "select e from t where e >= 'b'", - "Plan": [ - "IndexReader 20.00 root index:IndexRangeScan", - "└─IndexRangeScan 20.00 cop[tikv] table:t, index:idx(e) range:[\"c\",\"c\"], [\"b\",\"b\"], keep order:false, stats:pseudo" - ], - "Result": [ - "b", - "c" - ] - }, - { - "SQL": "select e from t where e < 'b'", - "Plan": [ - "IndexReader 30.00 root index:IndexRangeScan", - "└─IndexRangeScan 30.00 cop[tikv] table:t, index:idx(e) range:[\"\",\"\"], [\"a\",\"a\"], [\"\",\"\"], keep order:false, stats:pseudo" - ], - "Result": [ - "", - "", - "a" - ] - }, - { - "SQL": "select e from t where e <= 'b'", - "Plan": [ - "IndexReader 40.00 root index:IndexRangeScan", - "└─IndexRangeScan 40.00 cop[tikv] table:t, index:idx(e) range:[\"\",\"\"], [\"b\",\"b\"], [\"a\",\"a\"], [\"\",\"\"], keep order:false, stats:pseudo" - ], - "Result": [ - "", - "", - "a", - "b" - ] - }, - { - "SQL": "select e from t where e = 2", - "Plan": [ - "IndexReader 10.00 root index:IndexRangeScan", - "└─IndexRangeScan 10.00 cop[tikv] table:t, index:idx(e) range:[\"b\",\"b\"], keep order:false, stats:pseudo" - ], - "Result": [ - "b" - ] - }, - { - "SQL": "select e from t where e != 2", - "Plan": [ - "IndexReader 6656.67 root index:IndexRangeScan", - "└─IndexRangeScan 6656.67 cop[tikv] table:t, index:idx(e) range:[-inf,\"b\"), (\"b\",+inf], keep order:false, stats:pseudo" - ], - "Result": [ - "", - "", - "a", - "c" - ] - }, - { - "SQL": "select e from t where e > 2", - "Plan": [ - "IndexReader 3333.33 root index:IndexRangeScan", - "└─IndexRangeScan 3333.33 cop[tikv] table:t, index:idx(e) range:(\"b\",+inf], keep order:false, stats:pseudo" - ], - "Result": [ - "", - "a" - ] - }, - { - "SQL": "select e from t where e >= 2", - "Plan": [ - "IndexReader 3333.33 root index:IndexRangeScan", - "└─IndexRangeScan 3333.33 cop[tikv] table:t, index:idx(e) range:[\"b\",+inf], keep order:false, stats:pseudo" - ], - "Result": [ - "", - "a", - "b" - ] - }, - { - "SQL": "select e from t where e < 2", - "Plan": [ - "IndexReader 3323.33 root index:IndexRangeScan", - "└─IndexRangeScan 3323.33 cop[tikv] table:t, index:idx(e) range:[-inf,\"b\"), keep order:false, stats:pseudo" - ], - "Result": [ - "", - "c" - ] - }, - { - "SQL": "select e from t where e <= 2", - "Plan": [ - "IndexReader 3323.33 root index:IndexRangeScan", - "└─IndexRangeScan 3323.33 cop[tikv] table:t, index:idx(e) range:[-inf,\"b\"], keep order:false, stats:pseudo" - ], - "Result": [ - "", - "b", - "c" - ] - }, - { - "SQL": "select e from t where e > ''", - "Plan": [ - "IndexReader 30.00 root index:IndexRangeScan", - "└─IndexRangeScan 30.00 cop[tikv] table:t, index:idx(e) range:[\"c\",\"c\"], [\"b\",\"b\"], [\"a\",\"a\"], keep order:false, stats:pseudo" - ], - "Result": [ - "a", - "b", - "c" - ] - }, - { - "SQL": "select e from t where e > 'd'", - "Plan": [ - "TableDual 0.00 root rows:0" - ], - "Result": null - }, - { - "SQL": "select e from t where e > -1", - "Plan": [ - "IndexReader 3333.33 root index:IndexRangeScan", - "└─IndexRangeScan 3333.33 cop[tikv] table:t, index:idx(e) range:[\"\",+inf], keep order:false, stats:pseudo" - ], - "Result": [ - "", - "", - "a", - "b", - "c" - ] - }, - { - "SQL": "select e from t where e > 5", - "Plan": [ - "IndexReader 3333.33 root index:IndexRangeScan", - "└─IndexRangeScan 3333.33 cop[tikv] table:t, index:idx(e) range:(\"\",+inf], keep order:false, stats:pseudo" - ], - "Result": null - }, - { - "SQL": "select e from t where e = ''", - "Plan": [ - "IndexReader 20.00 root index:IndexRangeScan", - "└─IndexRangeScan 20.00 cop[tikv] table:t, index:idx(e) range:[\"\",\"\"], [\"\",\"\"], keep order:false, stats:pseudo" - ], - "Result": [ - "", - "" - ] - }, - { - "SQL": "select e from t where e != ''", - "Plan": [ - "IndexReader 30.00 root index:IndexRangeScan", - "└─IndexRangeScan 30.00 cop[tikv] table:t, index:idx(e) range:[\"c\",\"c\"], [\"b\",\"b\"], [\"a\",\"a\"], keep order:false, stats:pseudo" - ], - "Result": [ - "a", - "b", - "c" - ] - } - ] - }, - { - "Name": "TestIssue27233", - "Cases": [ - { - "SQL": "SELECT col2 FROM PK_S_MULTI_31 AS T1 WHERE (SELECT count(DISTINCT COL1, COL2) FROM PK_S_MULTI_31 AS T2 WHERE T2.COL1>T1.COL1)>2 order by col2;", - "Plan": [ - "Sort 0.80 root test.pk_s_multi_31.col2", - "└─Projection 0.80 root test.pk_s_multi_31.col2", - " └─Selection 0.80 root gt(Column#7, 2)", - " └─HashAgg 1.00 root group by:test.pk_s_multi_31.col1, test.pk_s_multi_31.col2, funcs:firstrow(test.pk_s_multi_31.col2)->test.pk_s_multi_31.col2, funcs:count(distinct test.pk_s_multi_31.col1, test.pk_s_multi_31.col2)->Column#7", - " └─HashJoin 100000000.00 root CARTESIAN left outer join, other cond:gt(test.pk_s_multi_31.col1, test.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", - " └─IndexFullScan 10000.00 cop[tikv] table:T1, index:PRIMARY(COL1, COL2) keep order:false, stats:pseudo" - ], - "Result": [ - "100" - ] - } - ] - }, - { - "Name": "TestSelectionPartialPushDown", - "Cases": [ - { - "SQL": "select * from t1 where a > 1 and b > 1", - "Plan": [ - "Selection 1111.11 root gt(test.t1.b, 1)", - "└─TableReader 3333.33 root data:Selection", - " └─Selection 3333.33 cop[tikv] gt(test.t1.a, 1)", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select * from t2 use index(idx_a) where a > 1 and b > 1 and c > 1", - "Plan": [ - "Selection 370.37 root gt(test.t2.b, 1)", - "└─IndexLookUp 1111.11 root ", - " ├─IndexRangeScan(Build) 3333.33 cop[tikv] table:t2, index:idx_a(a) range:(1,+inf], keep order:false, stats:pseudo", - " └─Selection(Probe) 1111.11 cop[tikv] gt(test.t2.c, 1)", - " └─TableRowIDScan 3333.33 cop[tikv] table:t2 keep order:false, stats:pseudo" - ] - } - ] - }, - { - "Name": "TestIssue28316", - "Cases": [ - { - "SQL": "select * from t where t.a < 3 and t.a < 3", - "Plan": [ - "TableReader 3323.33 root data:Selection", - "└─Selection 3323.33 cop[tikv] lt(test.t.a, 3)", - " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" - ] - } - ] - }, - { - "Name": "TestSkewDistinctAgg", - "Cases": [ - { - "SQL": "select date_format(d,'%Y') as df, sum(a), count(b), count(distinct c) from t group by date_format(d,'%Y')", - "Plan": [ - "Projection 8000.00 root date_format(test.t.d, %Y)->Column#9, Column#6, cast(Column#13, bigint(21) BINARY)->Column#7, Column#8", - "└─HashAgg 8000.00 root group by:Column#23, funcs:sum(Column#19)->Column#6, funcs:sum(Column#20)->Column#13, funcs:count(Column#21)->Column#8, funcs:firstrow(Column#22)->test.t.d", - " └─Projection 8000.00 root Column#11->Column#19, cast(Column#12, decimal(20,0) BINARY)->Column#20, test.t.c->Column#21, test.t.d->Column#22, date_format(test.t.d, %Y)->Column#23", - " └─HashAgg 8000.00 root group by:Column#14, test.t.c, funcs:sum(Column#15)->Column#11, funcs:count(Column#16)->Column#12, funcs:firstrow(test.t.c)->test.t.c, funcs:firstrow(Column#18)->test.t.d", - " └─TableReader 8000.00 root data:HashAgg", - " └─HashAgg 8000.00 cop[tikv] group by:date_format(test.t.d, \"%Y\"), test.t.c, funcs:sum(test.t.a)->Column#15, funcs:count(test.t.b)->Column#16, funcs:firstrow(test.t.d)->Column#18", - " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select d, a, count(*), count(b), count(distinct c) from t group by d, a", - "Plan": [ - "Projection 8000.00 root test.t.d, test.t.a, cast(Column#10, bigint(21) BINARY)->Column#6, cast(Column#12, bigint(21) BINARY)->Column#7, Column#8", - "└─HashAgg 8000.00 root group by:Column#23, Column#24, funcs:sum(Column#18)->Column#10, funcs:sum(Column#19)->Column#12, funcs:count(Column#20)->Column#8, funcs:firstrow(Column#21)->test.t.a, funcs:firstrow(Column#22)->test.t.d", - " └─Projection 8000.00 root cast(Column#9, decimal(20,0) BINARY)->Column#18, cast(Column#11, decimal(20,0) BINARY)->Column#19, test.t.c->Column#20, test.t.a->Column#21, test.t.d->Column#22, test.t.d->Column#23, test.t.a->Column#24", - " └─HashAgg 8000.00 root group by:test.t.a, test.t.c, test.t.d, funcs:count(Column#13)->Column#9, funcs:count(Column#14)->Column#11, funcs:firstrow(test.t.c)->test.t.c, funcs:firstrow(test.t.a)->test.t.a, funcs:firstrow(test.t.d)->test.t.d", - " └─TableReader 8000.00 root data:HashAgg", - " └─HashAgg 8000.00 cop[tikv] group by:test.t.a, test.t.c, test.t.d, funcs:count(1)->Column#13, funcs:count(test.t.b)->Column#14", - " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select d, sum(a), count(b), avg(distinct c) from t group by d", - "Plan": [ - "Projection 8000.00 root test.t.d, Column#6, cast(Column#11, bigint(21) BINARY)->Column#7, Column#8", - "└─HashAgg 8000.00 root group by:Column#20, funcs:sum(Column#16)->Column#6, funcs:sum(Column#17)->Column#11, funcs:avg(Column#18)->Column#8, funcs:firstrow(Column#19)->test.t.d", - " └─Projection 8000.00 root Column#9->Column#16, cast(Column#10, decimal(20,0) BINARY)->Column#17, cast(test.t.c, decimal(10,0) BINARY)->Column#18, test.t.d->Column#19, test.t.d->Column#20", - " └─HashAgg 8000.00 root group by:test.t.c, test.t.d, funcs:sum(Column#12)->Column#9, funcs:count(Column#13)->Column#10, funcs:firstrow(test.t.c)->test.t.c, funcs:firstrow(test.t.d)->test.t.d", - " └─TableReader 8000.00 root data:HashAgg", - " └─HashAgg 8000.00 cop[tikv] group by:test.t.c, test.t.d, funcs:sum(test.t.a)->Column#12, funcs:count(test.t.b)->Column#13", - " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" - ] - } - ] - }, - { - "Name": "TestMPPSinglePartitionType", - "Cases": [ - { - "SQL": "select * from employee where deptid>1", - "Plan": [ - "TableReader 3333.33 root MppVersion: 2, data:ExchangeSender", - "└─ExchangeSender 3333.33 mpp[tiflash] ExchangeType: PassThrough", - " └─Selection 3333.33 mpp[tiflash] gt(test.employee.deptid, 1)", - " └─TableFullScan 10000.00 mpp[tiflash] table:employee pushed down filter:empty, keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select deptid+5, empid*10 from employee where deptid>1", - "Plan": [ - "TableReader 3333.33 root MppVersion: 2, data:ExchangeSender", - "└─ExchangeSender 3333.33 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 3333.33 mpp[tiflash] plus(test.employee.deptid, 5)->Column#5, mul(test.employee.empid, 10)->Column#6", - " └─Selection 3333.33 mpp[tiflash] gt(test.employee.deptid, 1)", - " └─TableFullScan 10000.00 mpp[tiflash] table:employee pushed down filter:empty, keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select count(*) from employee group by deptid+1", - "Plan": [ - "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", - "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] Column#5", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#12, funcs:sum(Column#13)->Column#5", - " └─ExchangeReceiver 8000.00 mpp[tiflash] ", - " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#12, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#14, funcs:count(1)->Column#13", - " └─Projection 10000.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#14", - " └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select count(distinct deptid) a from employee", - "Plan": [ - "TableReader 1.00 root MppVersion: 2, data:ExchangeSender", - "└─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 1.00 mpp[tiflash] Column#5", - " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#7)->Column#5", - " └─ExchangeReceiver 1.00 mpp[tiflash] ", - " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#7", - " └─ExchangeReceiver 1.00 mpp[tiflash] ", - " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary]", - " └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, ", - " └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select * from employee join employee e1 using(deptid)", - "Plan": [ - "TableReader 12487.50 root MppVersion: 2, data:ExchangeSender", - "└─ExchangeSender 12487.50 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 12487.50 mpp[tiflash] test.employee.deptid, test.employee.empid, test.employee.salary, test.employee.empid, test.employee.salary", - " └─HashJoin 12487.50 mpp[tiflash] inner join, equal:[eq(test.employee.deptid, test.employee.deptid)]", - " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", - " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.employee.deptid))", - " │ └─TableFullScan 10000.00 mpp[tiflash] table:employee pushed down filter:empty, keep order:false, stats:pseudo", - " └─Selection(Probe) 9990.00 mpp[tiflash] not(isnull(test.employee.deptid))", - " └─TableFullScan 10000.00 mpp[tiflash] table:e1 pushed down filter:empty, keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select count(distinct a) from (select count(distinct deptid) a from employee) x", - "Plan": [ - "TableReader 1.00 root MppVersion: 2, data:ExchangeSender", - "└─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 1.00 mpp[tiflash] Column#6", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct Column#5)->Column#6", - " └─Projection 1.00 mpp[tiflash] Column#5", - " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#8)->Column#5", - " └─ExchangeReceiver 1.00 mpp[tiflash] ", - " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#8", - " └─ExchangeReceiver 1.00 mpp[tiflash] ", - " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary]", - " └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, ", - " └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select count(a) from (select count(distinct deptid) a, count(distinct empid) b from employee) x group by b+1", - "Plan": [ - "TableReader 1.00 root MppVersion: 2, data:ExchangeSender", - "└─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 1.00 mpp[tiflash] Column#7", - " └─HashAgg 1.00 mpp[tiflash] group by:Column#12, funcs:sum(Column#13)->Column#7", - " └─ExchangeReceiver 1.00 mpp[tiflash] ", - " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#12, collate: binary]", - " └─HashAgg 1.00 mpp[tiflash] group by:Column#15, funcs:count(Column#14)->Column#13", - " └─Projection 1.00 mpp[tiflash] Column#5->Column#14, plus(Column#6, 1)->Column#15", - " └─Projection 1.00 mpp[tiflash] Column#5, Column#6", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#5, funcs:count(distinct test.employee.empid)->Column#6", - " └─ExchangeReceiver 1.00 mpp[tiflash] ", - " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, test.employee.empid, ", - " └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select count(a) from (select count(distinct deptid) a, count(distinct empid) b from employee) x group by b", - "Plan": [ - "TableReader 1.00 root MppVersion: 2, data:ExchangeSender", - "└─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 1.00 mpp[tiflash] Column#7", - " └─HashAgg 1.00 mpp[tiflash] group by:Column#6, funcs:count(Column#5)->Column#7", - " └─Projection 1.00 mpp[tiflash] Column#5, Column#6", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#5, funcs:count(distinct test.employee.empid)->Column#6", - " └─ExchangeReceiver 1.00 mpp[tiflash] ", - " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, test.employee.empid, ", - " └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select * from employee join (select count(distinct deptid) a, count(distinct empid) b from employee) e1", - "Plan": [ - "TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", - "└─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 10000.00 mpp[tiflash] CARTESIAN inner join", - " ├─ExchangeReceiver(Build) 1.00 mpp[tiflash] ", - " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Projection 1.00 mpp[tiflash] Column#9, Column#10", - " │ └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#9, funcs:count(distinct test.employee.empid)->Column#10", - " │ └─ExchangeReceiver 1.00 mpp[tiflash] ", - " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " │ └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, test.employee.empid, ", - " │ └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo", - " └─TableFullScan(Probe) 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select * from employee e1 join (select count(distinct deptid) a from employee) e2 on e1.deptid = e2.a", - "Plan": [ - "TableReader 1.25 root MppVersion: 2, data:ExchangeSender", - "└─ExchangeSender 1.25 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 1.25 mpp[tiflash] inner join, equal:[eq(test.employee.deptid, Column#9)]", - " ├─ExchangeReceiver(Build) 1.00 mpp[tiflash] ", - " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Projection 1.00 mpp[tiflash] Column#9", - " │ └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#10)->Column#9", - " │ └─ExchangeReceiver 1.00 mpp[tiflash] ", - " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " │ └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#10", - " │ └─ExchangeReceiver 1.00 mpp[tiflash] ", - " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary]", - " │ └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, ", - " │ └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo", - " └─Selection(Probe) 9990.00 mpp[tiflash] not(isnull(test.employee.deptid))", - " └─TableFullScan 10000.00 mpp[tiflash] table:e1 pushed down filter:empty, keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select * from (select count(distinct deptid) a from employee) e1 join employee e2 on e1.a = e2.deptid", - "Plan": [ - "TableReader 1.25 root MppVersion: 2, data:ExchangeSender", - "└─ExchangeSender 1.25 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 1.25 mpp[tiflash] Column#5, test.employee.empid, test.employee.deptid, test.employee.salary", - " └─HashJoin 1.25 mpp[tiflash] inner join, equal:[eq(test.employee.deptid, Column#5)]", - " ├─ExchangeReceiver(Build) 1.00 mpp[tiflash] ", - " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Projection 1.00 mpp[tiflash] Column#5", - " │ └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#10)->Column#5", - " │ └─ExchangeReceiver 1.00 mpp[tiflash] ", - " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " │ └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#10", - " │ └─ExchangeReceiver 1.00 mpp[tiflash] ", - " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary]", - " │ └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, ", - " │ └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo", - " └─Selection(Probe) 9990.00 mpp[tiflash] not(isnull(test.employee.deptid))", - " └─TableFullScan 10000.00 mpp[tiflash] table:e2 pushed down filter:empty, keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select * from (select count(distinct deptid) a from employee) e1 join (select count(distinct deptid) b from employee) e2 on e1.a=e2.b", - "Plan": [ - "TableReader 1.00 root MppVersion: 2, data:ExchangeSender", - "└─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 1.00 mpp[tiflash] inner join, equal:[eq(Column#5, Column#10)]", - " ├─ExchangeReceiver(Build) 1.00 mpp[tiflash] ", - " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Projection 1.00 mpp[tiflash] Column#5", - " │ └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#11)->Column#5", - " │ └─ExchangeReceiver 1.00 mpp[tiflash] ", - " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " │ └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#11", - " │ └─ExchangeReceiver 1.00 mpp[tiflash] ", - " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary]", - " │ └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, ", - " │ └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo", - " └─Projection(Probe) 1.00 mpp[tiflash] Column#10", - " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#12)->Column#10", - " └─ExchangeReceiver 1.00 mpp[tiflash] ", - " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#12", - " └─ExchangeReceiver 1.00 mpp[tiflash] ", - " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary]", - " └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, ", - " └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select * from employee e1 join employee e2 on e1.deptid = e2.deptid", - "Plan": [ - "TableReader 12487.50 root MppVersion: 2, data:ExchangeSender", - "└─ExchangeSender 12487.50 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 12487.50 mpp[tiflash] inner join, equal:[eq(test.employee.deptid, test.employee.deptid)]", - " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", - " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.employee.deptid))", - " │ └─TableFullScan 10000.00 mpp[tiflash] table:e1 pushed down filter:empty, keep order:false, stats:pseudo", - " └─Selection(Probe) 9990.00 mpp[tiflash] not(isnull(test.employee.deptid))", - " └─TableFullScan 10000.00 mpp[tiflash] table:e2 pushed down filter:empty, keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select * from (select deptid+1 d, count(empid) a from employee group by d) e1 join employee e2 on e1.d = e2.deptid", - "Plan": [ - "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", - "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] Column#6, Column#5, test.employee.empid, test.employee.deptid, test.employee.salary", - " └─HashJoin 8000.00 mpp[tiflash] inner join, equal:[eq(test.employee.deptid, Column#6)]", - " ├─ExchangeReceiver(Build) 6400.00 mpp[tiflash] ", - " │ └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Projection 6400.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#6, Column#5", - " │ └─Selection 6400.00 mpp[tiflash] not(isnull(plus(test.employee.deptid, 1)))", - " │ └─Projection 8000.00 mpp[tiflash] Column#5, test.employee.deptid", - " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#13, funcs:sum(Column#14)->Column#5, funcs:firstrow(Column#15)->test.employee.deptid", - " │ └─ExchangeReceiver 8000.00 mpp[tiflash] ", - " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#13, collate: binary]", - " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#27, funcs:count(Column#25)->Column#14, funcs:firstrow(Column#26)->Column#15", - " │ └─Projection 10000.00 mpp[tiflash] test.employee.empid->Column#25, test.employee.deptid->Column#26, plus(test.employee.deptid, 1)->Column#27", - " │ └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo", - " └─Selection(Probe) 9990.00 mpp[tiflash] not(isnull(test.employee.deptid))", - " └─TableFullScan 10000.00 mpp[tiflash] table:e2 pushed down filter:empty, keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select * from employee e1 join (select deptid+1 d, count(empid) a from employee group by d) e2 on e1.deptid = e2.d", - "Plan": [ - "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", - "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 8000.00 mpp[tiflash] inner join, equal:[eq(test.employee.deptid, Column#10)]", - " ├─ExchangeReceiver(Build) 6400.00 mpp[tiflash] ", - " │ └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Projection 6400.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#10, Column#9", - " │ └─Selection 6400.00 mpp[tiflash] not(isnull(plus(test.employee.deptid, 1)))", - " │ └─Projection 8000.00 mpp[tiflash] Column#9, test.employee.deptid", - " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#13, funcs:sum(Column#14)->Column#9, funcs:firstrow(Column#15)->test.employee.deptid", - " │ └─ExchangeReceiver 8000.00 mpp[tiflash] ", - " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#13, collate: binary]", - " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#27, funcs:count(Column#25)->Column#14, funcs:firstrow(Column#26)->Column#15", - " │ └─Projection 10000.00 mpp[tiflash] test.employee.empid->Column#25, test.employee.deptid->Column#26, plus(test.employee.deptid, 1)->Column#27", - " │ └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo", - " └─Selection(Probe) 9990.00 mpp[tiflash] not(isnull(test.employee.deptid))", - " └─TableFullScan 10000.00 mpp[tiflash] table:e1 pushed down filter:empty, keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select * from (select deptid+1 d, count(empid) a from employee group by d) e1 join (select deptid+1 d, count(empid) a from employee group by d) e2 on e1.d = e2.d", - "Plan": [ - "TableReader 6400.00 root MppVersion: 2, data:ExchangeSender", - "└─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 6400.00 mpp[tiflash] inner join, equal:[eq(Column#6, Column#12)]", - " ├─ExchangeReceiver(Build) 6400.00 mpp[tiflash] ", - " │ └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─Projection 6400.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#6, Column#5", - " │ └─Selection 6400.00 mpp[tiflash] not(isnull(plus(test.employee.deptid, 1)))", - " │ └─Projection 8000.00 mpp[tiflash] Column#5, test.employee.deptid", - " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#17, funcs:sum(Column#18)->Column#5, funcs:firstrow(Column#19)->test.employee.deptid", - " │ └─ExchangeReceiver 8000.00 mpp[tiflash] ", - " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#17, collate: binary]", - " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#43, funcs:count(Column#41)->Column#18, funcs:firstrow(Column#42)->Column#19", - " │ └─Projection 10000.00 mpp[tiflash] test.employee.empid->Column#41, test.employee.deptid->Column#42, plus(test.employee.deptid, 1)->Column#43", - " │ └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo", - " └─Projection(Probe) 6400.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#12, Column#11", - " └─Selection 6400.00 mpp[tiflash] not(isnull(plus(test.employee.deptid, 1)))", - " └─Projection 8000.00 mpp[tiflash] Column#11, test.employee.deptid", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#20, funcs:sum(Column#21)->Column#11, funcs:firstrow(Column#22)->test.employee.deptid", - " └─ExchangeReceiver 8000.00 mpp[tiflash] ", - " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#20, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#46, funcs:count(Column#44)->Column#21, funcs:firstrow(Column#45)->Column#22", - " └─Projection 10000.00 mpp[tiflash] test.employee.empid->Column#44, test.employee.deptid->Column#45, plus(test.employee.deptid, 1)->Column#46", - " └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" - ] - }, - { - "SQL": "set tidb_broadcast_join_threshold_count=1", - "Plan": null - }, - { - "SQL": "set tidb_broadcast_join_threshold_size=1", - "Plan": null - }, - { - "SQL": "select * from (select count(distinct deptid) a from employee) e1 join employee e2 on e1.a = e2.deptid", - "Plan": [ - "Projection 1.25 root Column#5, test.employee.empid, test.employee.deptid, test.employee.salary", - "└─HashJoin 1.25 root inner join, equal:[eq(test.employee.deptid, Column#5)]", - " ├─TableReader(Build) 1.00 root MppVersion: 2, data:ExchangeSender", - " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " │ └─Projection 1.00 mpp[tiflash] Column#5", - " │ └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#12)->Column#5", - " │ └─ExchangeReceiver 1.00 mpp[tiflash] ", - " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " │ └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#12", - " │ └─ExchangeReceiver 1.00 mpp[tiflash] ", - " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary]", - " │ └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, ", - " │ └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo", - " └─TableReader(Probe) 9990.00 root MppVersion: 2, data:ExchangeSender", - " └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Selection 9990.00 mpp[tiflash] not(isnull(test.employee.deptid))", - " └─TableFullScan 10000.00 mpp[tiflash] table:e2 pushed down filter:empty, keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select * from (select count(distinct deptid) a from employee) e1 join (select count(distinct deptid) b from employee) e2 on e1.a=e2.b", - "Plan": [ - "HashJoin 1.00 root inner join, equal:[eq(Column#5, Column#10)]", - "├─TableReader(Build) 1.00 root MppVersion: 2, data:ExchangeSender", - "│ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - "│ └─Projection 1.00 mpp[tiflash] Column#10", - "│ └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#16)->Column#10", - "│ └─ExchangeReceiver 1.00 mpp[tiflash] ", - "│ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - "│ └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#16", - "│ └─ExchangeReceiver 1.00 mpp[tiflash] ", - "│ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary]", - "│ └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, ", - "│ └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo", - "└─TableReader(Probe) 1.00 root MppVersion: 2, data:ExchangeSender", - " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 1.00 mpp[tiflash] Column#5", - " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#15)->Column#5", - " └─ExchangeReceiver 1.00 mpp[tiflash] ", - " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", - " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#15", - " └─ExchangeReceiver 1.00 mpp[tiflash] ", - " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary]", - " └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, ", - " └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select * from employee e1 join employee e2 on e1.deptid = e2.deptid", - "Plan": [ - "TableReader 12487.50 root MppVersion: 2, data:ExchangeSender", - "└─ExchangeSender 12487.50 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 12487.50 mpp[tiflash] inner join, equal:[eq(test.employee.deptid, test.employee.deptid)]", - " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", - " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary]", - " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.employee.deptid))", - " │ └─TableFullScan 10000.00 mpp[tiflash] table:e1 pushed down filter:empty, keep order:false, stats:pseudo", - " └─ExchangeReceiver(Probe) 9990.00 mpp[tiflash] ", - " └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary]", - " └─Selection 9990.00 mpp[tiflash] not(isnull(test.employee.deptid))", - " └─TableFullScan 10000.00 mpp[tiflash] table:e2 pushed down filter:empty, keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select * from (select deptid+1 d, count(empid) a from employee group by d) e1 join employee e2 on e1.d = e2.deptid", - "Plan": [ - "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", - "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] Column#6, Column#5, test.employee.empid, test.employee.deptid, test.employee.salary", - " └─HashJoin 8000.00 mpp[tiflash] inner join, equal:[eq(test.employee.deptid, Column#6)]", - " ├─ExchangeReceiver(Build) 6400.00 mpp[tiflash] ", - " │ └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#6, collate: binary]", - " │ └─Projection 6400.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#6, Column#5", - " │ └─Selection 6400.00 mpp[tiflash] not(isnull(plus(test.employee.deptid, 1)))", - " │ └─Projection 8000.00 mpp[tiflash] Column#5, test.employee.deptid", - " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#13, funcs:sum(Column#14)->Column#5, funcs:firstrow(Column#15)->test.employee.deptid", - " │ └─ExchangeReceiver 8000.00 mpp[tiflash] ", - " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#13, collate: binary]", - " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#29, funcs:count(Column#27)->Column#14, funcs:firstrow(Column#28)->Column#15", - " │ └─Projection 10000.00 mpp[tiflash] test.employee.empid->Column#27, test.employee.deptid->Column#28, plus(test.employee.deptid, 1)->Column#29", - " │ └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo", - " └─ExchangeReceiver(Probe) 9990.00 mpp[tiflash] ", - " └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#26, collate: binary]", - " └─Projection 9990.00 mpp[tiflash] test.employee.empid, test.employee.deptid, test.employee.salary, cast(test.employee.deptid, bigint(20))->Column#26", - " └─Selection 9990.00 mpp[tiflash] not(isnull(test.employee.deptid))", - " └─TableFullScan 10000.00 mpp[tiflash] table:e2 pushed down filter:empty, keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select * from employee e1 join (select deptid+1 d, count(empid) a from employee group by d) e2 on e1.deptid = e2.d", - "Plan": [ - "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", - "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] test.employee.empid, test.employee.deptid, test.employee.salary, Column#10, Column#9", - " └─HashJoin 8000.00 mpp[tiflash] inner join, equal:[eq(test.employee.deptid, Column#10)]", - " ├─ExchangeReceiver(Build) 6400.00 mpp[tiflash] ", - " │ └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#10, collate: binary]", - " │ └─Projection 6400.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#10, Column#9", - " │ └─Selection 6400.00 mpp[tiflash] not(isnull(plus(test.employee.deptid, 1)))", - " │ └─Projection 8000.00 mpp[tiflash] Column#9, test.employee.deptid", - " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#13, funcs:sum(Column#14)->Column#9, funcs:firstrow(Column#15)->test.employee.deptid", - " │ └─ExchangeReceiver 8000.00 mpp[tiflash] ", - " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#13, collate: binary]", - " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#29, funcs:count(Column#27)->Column#14, funcs:firstrow(Column#28)->Column#15", - " │ └─Projection 10000.00 mpp[tiflash] test.employee.empid->Column#27, test.employee.deptid->Column#28, plus(test.employee.deptid, 1)->Column#29", - " │ └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo", - " └─ExchangeReceiver(Probe) 9990.00 mpp[tiflash] ", - " └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#26, collate: binary]", - " └─Projection 9990.00 mpp[tiflash] test.employee.empid, test.employee.deptid, test.employee.salary, cast(test.employee.deptid, bigint(20))->Column#26", - " └─Selection 9990.00 mpp[tiflash] not(isnull(test.employee.deptid))", - " └─TableFullScan 10000.00 mpp[tiflash] table:e1 pushed down filter:empty, keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select * from (select deptid+1 d, count(empid) a from employee group by d) e1 join (select deptid+1 d, count(empid) a from employee group by d) e2 on e1.d = e2.d", - "Plan": [ - "TableReader 6400.00 root MppVersion: 2, data:ExchangeSender", - "└─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 6400.00 mpp[tiflash] inner join, equal:[eq(Column#6, Column#12)]", - " ├─ExchangeReceiver(Build) 6400.00 mpp[tiflash] ", - " │ └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#6, collate: binary]", - " │ └─Projection 6400.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#6, Column#5", - " │ └─Selection 6400.00 mpp[tiflash] not(isnull(plus(test.employee.deptid, 1)))", - " │ └─Projection 8000.00 mpp[tiflash] Column#5, test.employee.deptid", - " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#17, funcs:sum(Column#18)->Column#5, funcs:firstrow(Column#19)->test.employee.deptid", - " │ └─ExchangeReceiver 8000.00 mpp[tiflash] ", - " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#17, collate: binary]", - " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#43, funcs:count(Column#41)->Column#18, funcs:firstrow(Column#42)->Column#19", - " │ └─Projection 10000.00 mpp[tiflash] test.employee.empid->Column#41, test.employee.deptid->Column#42, plus(test.employee.deptid, 1)->Column#43", - " │ └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo", - " └─ExchangeReceiver(Probe) 6400.00 mpp[tiflash] ", - " └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#12, collate: binary]", - " └─Projection 6400.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#12, Column#11", - " └─Selection 6400.00 mpp[tiflash] not(isnull(plus(test.employee.deptid, 1)))", - " └─Projection 8000.00 mpp[tiflash] Column#11, test.employee.deptid", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#20, funcs:sum(Column#21)->Column#11, funcs:firstrow(Column#22)->test.employee.deptid", - " └─ExchangeReceiver 8000.00 mpp[tiflash] ", - " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#20, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#46, funcs:count(Column#44)->Column#21, funcs:firstrow(Column#45)->Column#22", - " └─Projection 10000.00 mpp[tiflash] test.employee.empid->Column#44, test.employee.deptid->Column#45, plus(test.employee.deptid, 1)->Column#46", - " └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" - ] - } - ] - }, - { - "Name": "TestSemiJoinRewriteHints", - "Cases": [ - { - "SQL": "select /*+ SEMI_JOIN_REWRITE() */ * from t", - "Plan": [ - "TableReader 10000.00 root data:TableFullScan", - "└─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" - ], - "Warning": "[planner:1815]The SEMI_JOIN_REWRITE hint is not used correctly, maybe it's not in a subquery or the subquery is not EXISTS clause." - }, - { - "SQL": "select * from t where a > (select /*+ SEMI_JOIN_REWRITE() */ min(b) from t t1 where t1.c = t.c)", - "Plan": [ - "HashJoin 7992.00 root inner join, equal:[eq(test.t.c, test.t.c)], other cond:gt(test.t.a, Column#9)", - "├─Selection(Build) 6393.60 root not(isnull(Column#9))", - "│ └─HashAgg 7992.00 root group by:test.t.c, funcs:min(Column#10)->Column#9, funcs:firstrow(test.t.c)->test.t.c", - "│ └─TableReader 7992.00 root data:HashAgg", - "│ └─HashAgg 7992.00 cop[tikv] group by:test.t.c, funcs:min(test.t.b)->Column#10", - "│ └─Selection 9990.00 cop[tikv] not(isnull(test.t.c))", - "│ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", - "└─TableReader(Probe) 9980.01 root data:Selection", - " └─Selection 9980.01 cop[tikv] not(isnull(test.t.a)), not(isnull(test.t.c))", - " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" - ], - "Warning": "[planner:1815]The SEMI_JOIN_REWRITE hint is not used correctly, maybe it's not in a subquery or the subquery is not EXISTS clause." - }, - { - "SQL": "select * from t where exists (select /*+ SEMI_JOIN_REWRITE() */ 1 from t t1 where t1.a=t.a)", - "Plan": [ - "HashJoin 9990.00 root inner join, equal:[eq(test.t.a, test.t.a)]", - "├─HashAgg(Build) 7992.00 root group by:test.t.a, funcs:firstrow(test.t.a)->test.t.a", - "│ └─TableReader 7992.00 root data:HashAgg", - "│ └─HashAgg 7992.00 cop[tikv] group by:test.t.a, ", - "│ └─Selection 9990.00 cop[tikv] not(isnull(test.t.a))", - "│ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", - "└─TableReader(Probe) 9990.00 root data:Selection", - " └─Selection 9990.00 cop[tikv] not(isnull(test.t.a))", - " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" - ], - "Warning": "" - }, - { - "SQL": "select * from t where exists (select /*+ SEMI_JOIN_REWRITE() */ t.b from t t1 where t1.a=t.a)", - "Plan": [ - "HashJoin 9990.00 root inner join, equal:[eq(test.t.a, test.t.a)]", - "├─HashAgg(Build) 7992.00 root group by:test.t.a, funcs:firstrow(test.t.a)->test.t.a", - "│ └─TableReader 7992.00 root data:HashAgg", - "│ └─HashAgg 7992.00 cop[tikv] group by:test.t.a, ", - "│ └─Selection 9990.00 cop[tikv] not(isnull(test.t.a))", - "│ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", - "└─TableReader(Probe) 9990.00 root data:Selection", - " └─Selection 9990.00 cop[tikv] not(isnull(test.t.a))", - " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" - ], - "Warning": "" - }, - { - "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)]", - "├─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", - " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" - ], - "Warning": "[planner:1815]SEMI_JOIN_REWRITE() is inapplicable for LeftOuterSemiJoin." - }, - { - "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)", - "├─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", - "└─TableReader(Probe) 9990.00 root data:Selection", - " └─Selection 9990.00 cop[tikv] not(isnull(test.t.a))", - " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" - ], - "Warning": "[planner:1815]SEMI_JOIN_REWRITE() is inapplicable for SemiJoin with left conditions or other conditions." - } - ] - }, - { - "Name": "TestHJBuildAndProbeHint", - "Cases": [ - { - "SQL": "select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_build(t2), hash_join_probe(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_probe(t2), hash_join_build(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root left outer join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1", - "2 " - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root left outer join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1", - "2 " - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root left outer join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1", - "2 " - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root left outer join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1", - "2 " - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 right join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root right outer join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1", - " 2" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 right join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root right outer join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1", - " 2" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 right join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root right outer join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1", - " 2" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 right join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root right outer join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1", - " 2" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 straight_join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 straight_join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 straight_join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 straight_join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 cross join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 cross join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 cross join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 cross join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_build(t1) */ * from t1 where t1.a in (select t2.a from t2 where t1.b = t2.b)", - "Plan": [ - "HashJoin 8000.00 root semi join, equal:[eq(test.t1.b, test.t2.b) eq(test.t1.a, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": [ - "Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for semi join, please check the hint" - ] - }, - { - "SQL": "select /*+ hash_join_probe(t1) */ * from t1 where t1.a in (select t2.a from t2 where t1.b = t2.b)", - "Plan": [ - "HashJoin 8000.00 root semi join, equal:[eq(test.t1.b, test.t2.b) eq(test.t1.a, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": [ - "Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for semi join, please check the hint" - ] - }, - { - "SQL": "select /*+ hash_join_build(t2@sel_2) */ * from t1 where t1.a in (select t2.a from t2 where t1.b = t2.b)", - "Plan": [ - "HashJoin 8000.00 root semi join, equal:[eq(test.t1.b, test.t2.b) eq(test.t1.a, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": [ - "Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for semi join, please check the hint" - ] - }, - { - "SQL": "select /*+ hash_join_probe(t2@sel_2) */ * from t1 where t1.a in (select t2.a from t2 where t1.b = t2.b)", - "Plan": [ - "HashJoin 8000.00 root semi join, equal:[eq(test.t1.b, test.t2.b) eq(test.t1.a, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": [ - "Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for semi join, please check the hint" - ] - }, - { - "SQL": "select /*+ hash_join_build(t1) */ * from t1 where t1.a not in (select t2.a from t2 where t1.b = t2.b)", - "Plan": [ - "HashJoin 8000.00 root anti semi join, equal:[eq(test.t1.b, test.t2.b) eq(test.t1.a, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "2 2" - ], - "Warning": [ - "Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for anti semi join, please check the hint" - ] - }, - { - "SQL": "select /*+ hash_join_probe(t1) */ * from t1 where t1.a not in (select t2.a from t2 where t1.b = t2.b)", - "Plan": [ - "HashJoin 8000.00 root anti semi join, equal:[eq(test.t1.b, test.t2.b) eq(test.t1.a, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "2 2" - ], - "Warning": [ - "Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for anti semi join, please check the hint" - ] - }, - { - "SQL": "select /*+ hash_join_build(t2@sel_2) */ * from t1 where t1.a not in (select t2.a from t2 where t1.b = t2.b)", - "Plan": [ - "HashJoin 8000.00 root anti semi join, equal:[eq(test.t1.b, test.t2.b) eq(test.t1.a, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "2 2" - ], - "Warning": [ - "Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for anti semi join, please check the hint" - ] - }, - { - "SQL": "select /*+ hash_join_probe(t2@sel_2) */ * from t1 where t1.a not in (select t2.a from t2 where t1.b = t2.b)", - "Plan": [ - "HashJoin 8000.00 root anti semi join, equal:[eq(test.t1.b, test.t2.b) eq(test.t1.a, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "2 2" - ], - "Warning": [ - "Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for anti semi join, please check the hint" - ] - }, - { - "SQL": "select /*+ hash_join_build(t1) */ sum(t1.a in (select a from t2)) from t1", - "Plan": [ - "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:test.t1.a, right key:test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo" - ], - "Result": [ - "2" - ], - "Warning": [ - "Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for left outer semi join, please check the hint", - "Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for left outer semi join, please check the hint" - ] - }, - { - "SQL": "select /*+ hash_join_probe(t1) */ sum(t1.a in (select a from t2)) from t1", - "Plan": [ - "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:test.t1.a, right key:test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo" - ], - "Result": [ - "2" - ], - "Warning": [ - "Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for left outer semi join, please check the hint", - "Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for left outer semi join, please check the hint" - ] - }, - { - "SQL": "select /*+ hash_join_build(t2@sel_2) */ sum(t1.a in (select a from t2)) from t1", - "Plan": [ - "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:test.t1.a, right key:test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo" - ], - "Result": [ - "2" - ], - "Warning": [ - "Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for left outer semi join, please check the hint", - "Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for left outer semi join, please check the hint" - ] - }, - { - "SQL": "select /*+ hash_join_probe(t2@sel_2) */ sum(t1.a in (select a from t2)) from t1", - "Plan": [ - "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:test.t1.a, right key:test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo" - ], - "Result": [ - "2" - ], - "Warning": [ - "Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for left outer semi join, please check the hint", - "Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for left outer semi join, please check the hint" - ] - }, - { - "SQL": "select /*+ hash_join_build(t1) */ sum(t1.a not in (select a from t2)) from t1", - "Plan": [ - "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:test.t1.a, right key:test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo" - ], - "Result": [ - "0" - ], - "Warning": [ - "Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for anti left outer semi join, please check the hint", - "Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for anti left outer semi join, please check the hint" - ] - }, - { - "SQL": "select /*+ hash_join_probe(t1) */ sum(t1.a not in (select a from t2)) from t1", - "Plan": [ - "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:test.t1.a, right key:test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo" - ], - "Result": [ - "0" - ], - "Warning": [ - "Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for anti left outer semi join, please check the hint", - "Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for anti left outer semi join, please check the hint" - ] - }, - { - "SQL": "select /*+ hash_join_build(t2@sel_2) */ sum(t1.a not in (select a from t2)) from t1", - "Plan": [ - "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:test.t1.a, right key:test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo" - ], - "Result": [ - "0" - ], - "Warning": [ - "Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for anti left outer semi join, please check the hint", - "Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for anti left outer semi join, please check the hint" - ] - }, - { - "SQL": "select /*+ hash_join_probe(t2@sel_2) */ sum(t1.a not in (select a from t2)) from t1", - "Plan": [ - "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:test.t1.a, right key:test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo" - ], - "Result": [ - "0" - ], - "Warning": [ - "Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for anti left outer semi join, please check the hint", - "Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for anti left outer semi join, please check the hint" - ] - }, - { - "SQL": "select /*+ hash_join_probe(t2, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": [ - "Warning 1815 There are no matching table names for (t2) in optimizer hint /*+ HASH_JOIN_PROBE(t2, t2) */. Maybe you can use the table alias name" - ] - }, - { - "SQL": "select /*+ hash_join_build(t1, t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": [ - "Warning 1815 There are no matching table names for (t1) in optimizer hint /*+ HASH_JOIN_BUILD(t1, t1) */. Maybe you can use the table alias name" - ] - }, - { - "SQL": "select /*+ hash_join_probe(tt) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": [ - "Warning 1815 There are no matching table names for (tt) in optimizer hint /*+ HASH_JOIN_PROBE(tt) */. Maybe you can use the table alias name" - ] - }, - { - "SQL": "select /*+ hash_join_build(tt) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": [ - "Warning 1815 There are no matching table names for (tt) in optimizer hint /*+ HASH_JOIN_BUILD(tt) */. Maybe you can use the table alias name" - ] - }, - { - "SQL": "select /*+ hash_join_probe(tt) */ tt.a, t2.a from t1 as tt join t2 on tt.a=t2.a and tt.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:tt keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_build(tt) */ tt.a, t2.a from t1 as tt join t2 on tt.a=t2.a and tt.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.t2.b)]", - "├─TableReader(Build) 10000.00 root data:TableFullScan", - "│ └─TableFullScan 10000.00 cop[tikv] table:tt keep order:false, stats:pseudo", - "└─TableReader(Probe) 10000.00 root data:TableFullScan", - " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_probe(t2, t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": [ - "Warning 1815 Join hints conflict after join reorder phase, you can only specify one type of join" - ] - }, - { - "SQL": "select /*+ hash_join_build(t1, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": [ - "Warning 1815 Join hints conflict after join reorder phase, you can only specify one type of join" - ] - }, - { - "SQL": "select /*+ hash_join_build(t1) hash_join_probe(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": [ - "Warning 1815 Join hints are conflict, you can only specify one type of join" - ] - }, - { - "SQL": "select /*+ hash_join_build(t2) hash_join_probe(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": [ - "Warning 1815 Join hints are conflict, you can only specify one type of join" - ] - }, - { - "SQL": "select /*+ hash_join_build(t1) leading(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a", - "Plan": [ - "HashJoin 15625.00 root inner join, equal:[eq(test.t2.a, test.t3.a)]", - "├─TableReader(Build) 10000.00 root data:TableFullScan", - "│ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo", - "└─HashJoin(Probe) 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_build(t1) leading(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a", - "Plan": [ - "Projection 15625.00 root test.t1.a, test.t2.a", - "└─HashJoin 15625.00 root inner join, equal:[eq(test.t2.a, test.t3.a)]", - " ├─TableReader(Build) 10000.00 root data:TableFullScan", - " │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo", - " └─HashJoin(Probe) 12500.00 root inner join, equal:[eq(test.t2.a, test.t1.a) eq(test.t2.b, test.t1.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", - " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_probe(t1) leading(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a", - "Plan": [ - "HashJoin 15625.00 root inner join, equal:[eq(test.t2.a, test.t3.a)]", - "├─TableReader(Build) 10000.00 root data:TableFullScan", - "│ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo", - "└─HashJoin(Probe) 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_probe(t1) leading(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a", - "Plan": [ - "Projection 15625.00 root test.t1.a, test.t2.a", - "└─HashJoin 15625.00 root inner join, equal:[eq(test.t2.a, test.t3.a)]", - " ├─TableReader(Build) 10000.00 root data:TableFullScan", - " │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo", - " └─HashJoin(Probe) 12500.00 root inner join, equal:[eq(test.t2.a, test.t1.a) eq(test.t2.b, test.t1.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_build(t1) straight_join() */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a", - "Plan": [ - "HashJoin 15625.00 root inner join, equal:[eq(test.t2.a, test.t3.a)]", - "├─TableReader(Build) 10000.00 root data:TableFullScan", - "│ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo", - "└─HashJoin(Probe) 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_build(t1) straight_join() */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a", - "Plan": [ - "HashJoin 15625.00 root inner join, equal:[eq(test.t2.a, test.t3.a)]", - "├─TableReader(Build) 10000.00 root data:TableFullScan", - "│ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo", - "└─HashJoin(Probe) 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_probe(t1) straight_join() */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a", - "Plan": [ - "HashJoin 15625.00 root inner join, equal:[eq(test.t2.a, test.t3.a)]", - "├─TableReader(Build) 10000.00 root data:TableFullScan", - "│ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo", - "└─HashJoin(Probe) 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_probe(t1) straight_join() */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a", - "Plan": [ - "HashJoin 15625.00 root inner join, equal:[eq(test.t2.a, test.t3.a)]", - "├─TableReader(Build) 10000.00 root data:TableFullScan", - "│ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo", - "└─HashJoin(Probe) 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_build(t2) hash_join(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": [ - "Warning 1815 Join hints are conflict, you can only specify one type of join" - ] - }, - { - "SQL": "select /*+ hash_join_probe(t2) hash_join(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": [ - "Warning 1815 Join hints are conflict, you can only specify one type of join" - ] - }, - { - "SQL": "select /*+ hash_join_build(t2) hash_join(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": [ - "Warning 1815 Join hints conflict after join reorder phase, you can only specify one type of join" - ] - }, - { - "SQL": "select /*+ hash_join_probe(t2) hash_join(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": [ - "Warning 1815 Join hints conflict after join reorder phase, you can only specify one type of join" - ] - }, - { - "SQL": "select /*+ hash_join_build(t2) hash_join(t2, t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": [ - "Warning 1815 Join hints are conflict, you can only specify one type of join" - ] - }, - { - "SQL": "select /*+ hash_join_probe(t2) hash_join(t2, t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": [ - "Warning 1815 Join hints are conflict, you can only specify one type of join" - ] - }, - { - "SQL": "select /*+ hash_join_build(t2) INL_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": [ - "Warning 1815 Join hints conflict after join reorder phase, you can only specify one type of join" - ] - }, - { - "SQL": "select /*+ hash_join_probe(t2) INL_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": [ - "Warning 1815 Join hints conflict after join reorder phase, you can only specify one type of join" - ] - }, - { - "SQL": "select /*+ hash_join_build(t1) INL_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": [ - "Warning 1815 Join hints are conflict, you can only specify one type of join" - ] - }, - { - "SQL": "select /*+ hash_join_probe(t1) INL_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": [ - "Warning 1815 Join hints are conflict, you can only specify one type of join" - ] - }, - { - "SQL": "select /*+ hash_join_build(t2) INL_HASH_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": [ - "Warning 1815 Join hints conflict after join reorder phase, you can only specify one type of join" - ] - }, - { - "SQL": "select /*+ hash_join_probe(t2) INL_HASH_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": [ - "Warning 1815 Join hints conflict after join reorder phase, you can only specify one type of join" - ] - }, - { - "SQL": "select /*+ hash_join_build(t1) INL_HASH_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": [ - "Warning 1815 Join hints are conflict, you can only specify one type of join" - ] - }, - { - "SQL": "select /*+ hash_join_probe(t1) INL_HASH_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": [ - "Warning 1815 Join hints are conflict, you can only specify one type of join" - ] - }, - { - "SQL": "select /*+ hash_join_build(t2) merge_join(t1, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": [ - "Warning 1815 Join hints are conflict, you can only specify one type of join" - ] - }, - { - "SQL": "select /*+ hash_join_probe(t2) merge_join(t1, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": [ - "Warning 1815 Join hints are conflict, you can only specify one type of join" - ] - }, - { - "SQL": "select /*+ hash_join_build(t1) merge_join(t1, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": [ - "Warning 1815 Join hints are conflict, you can only specify one type of join" - ] - }, - { - "SQL": "select /*+ hash_join_probe(t1) merge_join(t1, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": [ - "Warning 1815 Join hints are conflict, you can only specify one type of join" - ] - }, - { - "SQL": "SELECT * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.a = t1.a);", - "Plan": [ - "MergeJoin 8000.00 root semi join, left key:test.t1.a, right key:test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo" - ], - "Result": [ - "1 1", - "2 2" - ], - "Warning": null - }, - { - "SQL": "SELECT /*+ hash_join_probe(t1) */ * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.a = t1.a);", - "Plan": [ - "MergeJoin 8000.00 root semi join, left key:test.t1.a, right key:test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo" - ], - "Result": [ - "1 1", - "2 2" - ], - "Warning": [ - "Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for semi join, please check the hint" - ] - }, - { - "SQL": "SELECT /*+ hash_join_probe(t2@sel_2) */ * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.a = t1.a);", - "Plan": [ - "MergeJoin 8000.00 root semi join, left key:test.t1.a, right key:test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo" - ], - "Result": [ - "1 1", - "2 2" - ], - "Warning": [ - "Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for semi join, please check the hint" - ] - }, - { - "SQL": "SELECT /*+ hash_join_probe(t1) */ * FROM t1 WHERE EXISTS (SELECT /*+ SEMI_JOIN_REWRITE() */ 1 FROM t2 WHERE t2.a = t1.a);", - "Plan": [ - "HashJoin 10000.00 root inner join, equal:[eq(test.t1.a, test.t2.a)]", - "├─StreamAgg(Build) 8000.00 root group by:test.t2.a, funcs:firstrow(test.t2.a)->test.t2.a", - "│ └─TableReader 8000.00 root data:StreamAgg", - "│ └─StreamAgg 8000.00 cop[tikv] group by:test.t2.a, ", - "│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:true, stats:pseudo", - "└─TableReader(Probe) 10000.00 root data:TableFullScan", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1", - "2 2" - ], - "Warning": null - }, - { - "SQL": "SELECT /*+ hash_join_probe(t2@sel_2) */ * FROM t1 WHERE EXISTS (SELECT /*+ SEMI_JOIN_REWRITE() */ 1 FROM t2 WHERE t2.a = t1.a);", - "Plan": [ - "HashJoin 10000.00 root inner join, 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", - "└─StreamAgg(Probe) 8000.00 root group by:test.t2.a, funcs:firstrow(test.t2.a)->test.t2.a", - " └─TableReader 8000.00 root data:StreamAgg", - " └─StreamAgg 8000.00 cop[tikv] group by:test.t2.a, ", - " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:true, stats:pseudo" - ], - "Result": [ - "1 1", - "2 2" - ], - "Warning": null - }, - { - "SQL": "SELECT /*+ hash_join_build(t1) */ * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.a = t1.a);", - "Plan": [ - "MergeJoin 8000.00 root semi join, left key:test.t1.a, right key:test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo" - ], - "Result": [ - "1 1", - "2 2" - ], - "Warning": [ - "Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for semi join, please check the hint" - ] - }, - { - "SQL": "SELECT /*+ hash_join_build(t2@sel_2) */ * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.a = t1.a);", - "Plan": [ - "MergeJoin 8000.00 root semi join, left key:test.t1.a, right key:test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo" - ], - "Result": [ - "1 1", - "2 2" - ], - "Warning": [ - "Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for semi join, please check the hint" - ] - }, - { - "SQL": "SELECT /*+ hash_join_build(t1) */ * FROM t1 WHERE EXISTS (SELECT /*+ SEMI_JOIN_REWRITE() */ 1 FROM t2 WHERE t2.a = t1.a);", - "Plan": [ - "HashJoin 10000.00 root inner join, 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", - "└─StreamAgg(Probe) 8000.00 root group by:test.t2.a, funcs:firstrow(test.t2.a)->test.t2.a", - " └─TableReader 8000.00 root data:StreamAgg", - " └─StreamAgg 8000.00 cop[tikv] group by:test.t2.a, ", - " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:true, stats:pseudo" - ], - "Result": [ - "1 1", - "2 2" - ], - "Warning": null - }, - { - "SQL": "SELECT /*+ hash_join_build(t2@sel_2) */ * FROM t1 WHERE EXISTS (SELECT /*+ SEMI_JOIN_REWRITE() */ 1 FROM t2 WHERE t2.a = t1.a);", - "Plan": [ - "HashJoin 10000.00 root inner join, equal:[eq(test.t1.a, test.t2.a)]", - "├─StreamAgg(Build) 8000.00 root group by:test.t2.a, funcs:firstrow(test.t2.a)->test.t2.a", - "│ └─TableReader 8000.00 root data:StreamAgg", - "│ └─StreamAgg 8000.00 cop[tikv] group by:test.t2.a, ", - "│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:true, stats:pseudo", - "└─TableReader(Probe) 10000.00 root data:TableFullScan", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1", - "2 2" - ], - "Warning": null - }, - { - "SQL": "SELECT t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2);", - "Plan": [ - "MergeJoin 12500.00 root inner join, left key:test.t1.a, right key:test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo" - ], - "Result": [ - "1 1", - "2 2" - ], - "Warning": null - }, - { - "SQL": "SELECT /*+ hash_join_build(t1) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2);", - "Plan": [ - "HashJoin 12500.00 root inner join, 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", - "└─TableReader(Probe) 10000.00 root data:TableFullScan", - " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1", - "2 2" - ], - "Warning": null - }, - { - "SQL": "SELECT /*+ hash_join_probe(t1) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2);", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1", - "2 2" - ], - "Warning": null - }, - { - "SQL": "SELECT /*+ hash_join_build(t2@sel_2) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2);", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1", - "2 2" - ], - "Warning": null - }, - { - "SQL": "SELECT /*+ hash_join_probe(t2@sel_2) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2);", - "Plan": [ - "HashJoin 12500.00 root inner join, 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", - "└─TableReader(Probe) 10000.00 root data:TableFullScan", - " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1", - "2 2" - ], - "Warning": null - }, - { - "SQL": "SELECT /*+ USE_TOJA(TRUE) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2);", - "Plan": [ - "MergeJoin 12500.00 root inner join, left key:test.t1.a, right key:test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo" - ], - "Result": [ - "1 1", - "2 2" - ], - "Warning": null - }, - { - "SQL": "SELECT /*+ USE_TOJA(TRUE) hash_join_build(t1) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2);", - "Plan": [ - "HashJoin 12500.00 root inner join, 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", - "└─TableReader(Probe) 10000.00 root data:TableFullScan", - " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1", - "2 2" - ], - "Warning": null - }, - { - "SQL": "SELECT /*+ USE_TOJA(TRUE) hash_join_probe(t1) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2);", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1", - "2 2" - ], - "Warning": null - }, - { - "SQL": "SELECT /*+ USE_TOJA(TRUE) hash_join_build(t2@sel_2) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2);", - "Plan": [ - "HashJoin 12500.00 root inner join, equal:[eq(test.t1.a, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1", - "2 2" - ], - "Warning": null - }, - { - "SQL": "SELECT /*+ USE_TOJA(TRUE) hash_join_probe(t2@sel_2) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2);", - "Plan": [ - "HashJoin 12500.00 root inner join, 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", - "└─TableReader(Probe) 10000.00 root data:TableFullScan", - " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1", - "2 2" - ], - "Warning": null - }, - { - "SQL": "SELECT /*+ USE_TOJA(false) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2);", - "Plan": [ - "MergeJoin 8000.00 root semi join, left key:test.t1.a, right key:test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo" - ], - "Result": [ - "1 1", - "2 2" - ], - "Warning": null - }, - { - "SQL": "SELECT /*+ USE_TOJA(false) hash_join_build(t1) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2);", - "Plan": [ - "MergeJoin 8000.00 root semi join, left key:test.t1.a, right key:test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo" - ], - "Result": [ - "1 1", - "2 2" - ], - "Warning": [ - "Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for semi join, please check the hint" - ] - }, - { - "SQL": "SELECT /*+ USE_TOJA(false) hash_join_probe(t1) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2);", - "Plan": [ - "MergeJoin 8000.00 root semi join, left key:test.t1.a, right key:test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo" - ], - "Result": [ - "1 1", - "2 2" - ], - "Warning": [ - "Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for semi join, please check the hint" - ] - }, - { - "SQL": "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);", - "Plan": [ - "MergeJoin 8000.00 root semi join, left key:test.t1.a, right key:test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo" - ], - "Result": [ - "1 1", - "2 2" - ], - "Warning": [ - "Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for semi join, please check the hint" - ] - }, - { - "SQL": "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);", - "Plan": [ - "MergeJoin 8000.00 root semi join, left key:test.t1.a, right key:test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo" - ], - "Result": [ - "1 1", - "2 2" - ], - "Warning": [ - "Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for semi join, please check the hint" - ] - } - ] - }, - { - "Name": "TestHJBuildAndProbeHint4StaticPartitionTable", - "Cases": [ - { - "SQL": "select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 49900.05 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.t2.b)]", - "├─PartitionUnion(Build) 49900.05 root ", - "│ ├─TableReader 9980.01 root data:Selection", - "│ │ └─Selection 9980.01 cop[tikv] not(isnull(test.t2.a)), not(isnull(test.t2.b))", - "│ │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo", - "│ ├─TableReader 9980.01 root data:Selection", - "│ │ └─Selection 9980.01 cop[tikv] not(isnull(test.t2.a)), not(isnull(test.t2.b))", - "│ │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p1 keep order:false, stats:pseudo", - "│ ├─TableReader 9980.01 root data:Selection", - "│ │ └─Selection 9980.01 cop[tikv] not(isnull(test.t2.a)), not(isnull(test.t2.b))", - "│ │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p2 keep order:false, stats:pseudo", - "│ ├─TableReader 9980.01 root data:Selection", - "│ │ └─Selection 9980.01 cop[tikv] not(isnull(test.t2.a)), not(isnull(test.t2.b))", - "│ │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p3 keep order:false, stats:pseudo", - "│ └─TableReader 9980.01 root data:Selection", - "│ └─Selection 9980.01 cop[tikv] not(isnull(test.t2.a)), not(isnull(test.t2.b))", - "│ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo", - "└─PartitionUnion(Probe) 39920.04 root ", - " ├─TableReader 9980.01 root data:Selection", - " │ └─Selection 9980.01 cop[tikv] not(isnull(test.t1.a)), not(isnull(test.t1.b))", - " │ └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p0 keep order:false, stats:pseudo", - " ├─TableReader 9980.01 root data:Selection", - " │ └─Selection 9980.01 cop[tikv] not(isnull(test.t1.a)), not(isnull(test.t1.b))", - " │ └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p1 keep order:false, stats:pseudo", - " ├─TableReader 9980.01 root data:Selection", - " │ └─Selection 9980.01 cop[tikv] not(isnull(test.t1.a)), not(isnull(test.t1.b))", - " │ └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p2 keep order:false, stats:pseudo", - " └─TableReader 9980.01 root data:Selection", - " └─Selection 9980.01 cop[tikv] not(isnull(test.t1.a)), not(isnull(test.t1.b))", - " └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p3 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 49900.05 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.t2.b)]", - "├─PartitionUnion(Build) 39920.04 root ", - "│ ├─TableReader 9980.01 root data:Selection", - "│ │ └─Selection 9980.01 cop[tikv] not(isnull(test.t1.a)), not(isnull(test.t1.b))", - "│ │ └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p0 keep order:false, stats:pseudo", - "│ ├─TableReader 9980.01 root data:Selection", - "│ │ └─Selection 9980.01 cop[tikv] not(isnull(test.t1.a)), not(isnull(test.t1.b))", - "│ │ └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p1 keep order:false, stats:pseudo", - "│ ├─TableReader 9980.01 root data:Selection", - "│ │ └─Selection 9980.01 cop[tikv] not(isnull(test.t1.a)), not(isnull(test.t1.b))", - "│ │ └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p2 keep order:false, stats:pseudo", - "│ └─TableReader 9980.01 root data:Selection", - "│ └─Selection 9980.01 cop[tikv] not(isnull(test.t1.a)), not(isnull(test.t1.b))", - "│ └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p3 keep order:false, stats:pseudo", - "└─PartitionUnion(Probe) 49900.05 root ", - " ├─TableReader 9980.01 root data:Selection", - " │ └─Selection 9980.01 cop[tikv] not(isnull(test.t2.a)), not(isnull(test.t2.b))", - " │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo", - " ├─TableReader 9980.01 root data:Selection", - " │ └─Selection 9980.01 cop[tikv] not(isnull(test.t2.a)), not(isnull(test.t2.b))", - " │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p1 keep order:false, stats:pseudo", - " ├─TableReader 9980.01 root data:Selection", - " │ └─Selection 9980.01 cop[tikv] not(isnull(test.t2.a)), not(isnull(test.t2.b))", - " │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p2 keep order:false, stats:pseudo", - " ├─TableReader 9980.01 root data:Selection", - " │ └─Selection 9980.01 cop[tikv] not(isnull(test.t2.a)), not(isnull(test.t2.b))", - " │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p3 keep order:false, stats:pseudo", - " └─TableReader 9980.01 root data:Selection", - " └─Selection 9980.01 cop[tikv] not(isnull(test.t2.a)), not(isnull(test.t2.b))", - " └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 49900.05 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.t2.b)]", - "├─PartitionUnion(Build) 39920.04 root ", - "│ ├─TableReader 9980.01 root data:Selection", - "│ │ └─Selection 9980.01 cop[tikv] not(isnull(test.t1.a)), not(isnull(test.t1.b))", - "│ │ └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p0 keep order:false, stats:pseudo", - "│ ├─TableReader 9980.01 root data:Selection", - "│ │ └─Selection 9980.01 cop[tikv] not(isnull(test.t1.a)), not(isnull(test.t1.b))", - "│ │ └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p1 keep order:false, stats:pseudo", - "│ ├─TableReader 9980.01 root data:Selection", - "│ │ └─Selection 9980.01 cop[tikv] not(isnull(test.t1.a)), not(isnull(test.t1.b))", - "│ │ └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p2 keep order:false, stats:pseudo", - "│ └─TableReader 9980.01 root data:Selection", - "│ └─Selection 9980.01 cop[tikv] not(isnull(test.t1.a)), not(isnull(test.t1.b))", - "│ └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p3 keep order:false, stats:pseudo", - "└─PartitionUnion(Probe) 49900.05 root ", - " ├─TableReader 9980.01 root data:Selection", - " │ └─Selection 9980.01 cop[tikv] not(isnull(test.t2.a)), not(isnull(test.t2.b))", - " │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo", - " ├─TableReader 9980.01 root data:Selection", - " │ └─Selection 9980.01 cop[tikv] not(isnull(test.t2.a)), not(isnull(test.t2.b))", - " │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p1 keep order:false, stats:pseudo", - " ├─TableReader 9980.01 root data:Selection", - " │ └─Selection 9980.01 cop[tikv] not(isnull(test.t2.a)), not(isnull(test.t2.b))", - " │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p2 keep order:false, stats:pseudo", - " ├─TableReader 9980.01 root data:Selection", - " │ └─Selection 9980.01 cop[tikv] not(isnull(test.t2.a)), not(isnull(test.t2.b))", - " │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p3 keep order:false, stats:pseudo", - " └─TableReader 9980.01 root data:Selection", - " └─Selection 9980.01 cop[tikv] not(isnull(test.t2.a)), not(isnull(test.t2.b))", - " └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 49900.05 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.t2.b)]", - "├─PartitionUnion(Build) 49900.05 root ", - "│ ├─TableReader 9980.01 root data:Selection", - "│ │ └─Selection 9980.01 cop[tikv] not(isnull(test.t2.a)), not(isnull(test.t2.b))", - "│ │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo", - "│ ├─TableReader 9980.01 root data:Selection", - "│ │ └─Selection 9980.01 cop[tikv] not(isnull(test.t2.a)), not(isnull(test.t2.b))", - "│ │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p1 keep order:false, stats:pseudo", - "│ ├─TableReader 9980.01 root data:Selection", - "│ │ └─Selection 9980.01 cop[tikv] not(isnull(test.t2.a)), not(isnull(test.t2.b))", - "│ │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p2 keep order:false, stats:pseudo", - "│ ├─TableReader 9980.01 root data:Selection", - "│ │ └─Selection 9980.01 cop[tikv] not(isnull(test.t2.a)), not(isnull(test.t2.b))", - "│ │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p3 keep order:false, stats:pseudo", - "│ └─TableReader 9980.01 root data:Selection", - "│ └─Selection 9980.01 cop[tikv] not(isnull(test.t2.a)), not(isnull(test.t2.b))", - "│ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo", - "└─PartitionUnion(Probe) 39920.04 root ", - " ├─TableReader 9980.01 root data:Selection", - " │ └─Selection 9980.01 cop[tikv] not(isnull(test.t1.a)), not(isnull(test.t1.b))", - " │ └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p0 keep order:false, stats:pseudo", - " ├─TableReader 9980.01 root data:Selection", - " │ └─Selection 9980.01 cop[tikv] not(isnull(test.t1.a)), not(isnull(test.t1.b))", - " │ └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p1 keep order:false, stats:pseudo", - " ├─TableReader 9980.01 root data:Selection", - " │ └─Selection 9980.01 cop[tikv] not(isnull(test.t1.a)), not(isnull(test.t1.b))", - " │ └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p2 keep order:false, stats:pseudo", - " └─TableReader 9980.01 root data:Selection", - " └─Selection 9980.01 cop[tikv] not(isnull(test.t1.a)), not(isnull(test.t1.b))", - " └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p3 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": null - } - ] - }, - { - "Name": "TestHJBuildAndProbeHint4DynamicPartitionTable", - "Cases": [ - { - "SQL": "select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12475.01 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.t2.b)]", - "├─TableReader(Build) 9980.01 root partition:all data:Selection", - "│ └─Selection 9980.01 cop[tikv] not(isnull(test.t2.a)), not(isnull(test.t2.b))", - "│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", - "└─TableReader(Probe) 9980.01 root partition:all data:Selection", - " └─Selection 9980.01 cop[tikv] not(isnull(test.t1.a)), not(isnull(test.t1.b))", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12475.01 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.t2.b)]", - "├─TableReader(Build) 9980.01 root partition:all data:Selection", - "│ └─Selection 9980.01 cop[tikv] not(isnull(test.t1.a)), not(isnull(test.t1.b))", - "│ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", - "└─TableReader(Probe) 9980.01 root partition:all data:Selection", - " └─Selection 9980.01 cop[tikv] not(isnull(test.t2.a)), not(isnull(test.t2.b))", - " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12475.01 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.t2.b)]", - "├─TableReader(Build) 9980.01 root partition:all data:Selection", - "│ └─Selection 9980.01 cop[tikv] not(isnull(test.t1.a)), not(isnull(test.t1.b))", - "│ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", - "└─TableReader(Probe) 9980.01 root partition:all data:Selection", - " └─Selection 9980.01 cop[tikv] not(isnull(test.t2.a)), not(isnull(test.t2.b))", - " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "HashJoin 12475.01 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.t2.b)]", - "├─TableReader(Build) 9980.01 root partition:all data:Selection", - "│ └─Selection 9980.01 cop[tikv] not(isnull(test.t2.a)), not(isnull(test.t2.b))", - "│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", - "└─TableReader(Probe) 9980.01 root partition:all data:Selection", - " └─Selection 9980.01 cop[tikv] not(isnull(test.t1.a)), not(isnull(test.t1.b))", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1" - ], - "Warning": null - } - ] - }, - { - "Name": "TestHJBuildAndProbeHint4TiFlash", - "Cases": [ - { - "SQL": "select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "TableReader 12500.00 root MppVersion: 2, data:ExchangeSender", - "└─ExchangeSender 12500.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 12500.00 mpp[tiflash] test.t1.a, test.t2.a", - " └─HashJoin 12500.00 mpp[tiflash] inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.t2.b)]", - " ├─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", - " └─TableFullScan(Probe) 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "TableReader 12500.00 root MppVersion: 2, data:ExchangeSender", - "└─ExchangeSender 12500.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 12500.00 mpp[tiflash] test.t1.a, test.t2.a", - " └─HashJoin 12500.00 mpp[tiflash] inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.t2.b)]", - " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", - " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─TableFullScan 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo", - " └─TableFullScan(Probe) 10000.00 mpp[tiflash] table:t2 keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "TableReader 12500.00 root MppVersion: 2, data:ExchangeSender", - "└─ExchangeSender 12500.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 12500.00 mpp[tiflash] test.t1.a, test.t2.a", - " └─HashJoin 12500.00 mpp[tiflash] inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.t2.b)]", - " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", - " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", - " │ └─TableFullScan 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo", - " └─TableFullScan(Probe) 10000.00 mpp[tiflash] table:t2 keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", - "Plan": [ - "TableReader 12500.00 root MppVersion: 2, data:ExchangeSender", - "└─ExchangeSender 12500.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 12500.00 mpp[tiflash] test.t1.a, test.t2.a", - " └─HashJoin 12500.00 mpp[tiflash] inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.t2.b)]", - " ├─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", - " └─TableFullScan(Probe) 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" - ], - "Warning": null - } - ] - }, - { - "Name": "TestNoDecorrelateHint", - "Cases": [ - { - "SQL": "select /*+ no_decorrelate() */ * from t1", - "Plan": [ - "TableReader 10000.00 root data:TableFullScan", - "└─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1", - "2 2" - ], - "Warning": [ - "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." + "TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", + "└─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", + " └─HashJoin 10000.00 mpp[tiflash] CARTESIAN inner join", + " ├─ExchangeReceiver(Build) 1.00 mpp[tiflash] ", + " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", + " │ └─Projection 1.00 mpp[tiflash] Column#9, Column#10", + " │ └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#9, funcs:count(distinct test.employee.empid)->Column#10", + " │ └─ExchangeReceiver 1.00 mpp[tiflash] ", + " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", + " │ └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, test.employee.empid, ", + " │ └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo", + " └─TableFullScan(Probe) 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" ] }, { - "SQL": "select * from t1, (select /*+ no_decorrelate() */ * from t2) n", + "SQL": "select * from employee e1 join (select count(distinct deptid) a from employee) e2 on e1.deptid = e2.a", "Plan": [ - "HashJoin 100000000.00 root CARTESIAN inner join", - "├─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" - ], - "Result": [ - "1 1 1 1", - "1 1 2 1", - "2 2 1 1", - "2 2 2 1" - ], - "Warning": [ - "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." + "TableReader 1.25 root MppVersion: 2, data:ExchangeSender", + "└─ExchangeSender 1.25 mpp[tiflash] ExchangeType: PassThrough", + " └─HashJoin 1.25 mpp[tiflash] inner join, equal:[eq(test.employee.deptid, Column#9)]", + " ├─ExchangeReceiver(Build) 1.00 mpp[tiflash] ", + " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", + " │ └─Projection 1.00 mpp[tiflash] Column#9", + " │ └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#10)->Column#9", + " │ └─ExchangeReceiver 1.00 mpp[tiflash] ", + " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", + " │ └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#10", + " │ └─ExchangeReceiver 1.00 mpp[tiflash] ", + " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary]", + " │ └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, ", + " │ └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo", + " └─Selection(Probe) 9990.00 mpp[tiflash] not(isnull(test.employee.deptid))", + " └─TableFullScan 10000.00 mpp[tiflash] table:e1 pushed down filter:empty, keep order:false, stats:pseudo" ] }, { - "SQL": "select a+1, b-1 from (select /*+ no_decorrelate() */ * from t1) n", + "SQL": "select * from (select count(distinct deptid) a from employee) e1 join employee e2 on e1.a = e2.deptid", "Plan": [ - "Projection 10000.00 root plus(test.t1.a, 1)->Column#4, minus(test.t1.b, 1)->Column#5", - "└─TableReader 10000.00 root data:TableFullScan", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "2 0", - "3 1" - ], - "Warning": [ - "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." + "TableReader 1.25 root MppVersion: 2, data:ExchangeSender", + "└─ExchangeSender 1.25 mpp[tiflash] ExchangeType: PassThrough", + " └─Projection 1.25 mpp[tiflash] Column#5, test.employee.empid, test.employee.deptid, test.employee.salary", + " └─HashJoin 1.25 mpp[tiflash] inner join, equal:[eq(test.employee.deptid, Column#5)]", + " ├─ExchangeReceiver(Build) 1.00 mpp[tiflash] ", + " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", + " │ └─Projection 1.00 mpp[tiflash] Column#5", + " │ └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#10)->Column#5", + " │ └─ExchangeReceiver 1.00 mpp[tiflash] ", + " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", + " │ └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#10", + " │ └─ExchangeReceiver 1.00 mpp[tiflash] ", + " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary]", + " │ └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, ", + " │ └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo", + " └─Selection(Probe) 9990.00 mpp[tiflash] not(isnull(test.employee.deptid))", + " └─TableFullScan 10000.00 mpp[tiflash] table:e2 pushed down filter:empty, keep order:false, stats:pseudo" ] }, { - "SQL": "select exists (select /*+ semi_join_rewrite(), no_decorrelate() */ * from t1 where t1.a=t3.a) from t3", + "SQL": "select * from (select count(distinct deptid) a from employee) e1 join (select count(distinct deptid) b from employee) e2 on e1.a=e2.b", "Plan": [ - "HashJoin 10000.00 root left outer semi join, equal:[eq(test.t3.a, 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", - " └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo" - ], - "Result": [ - "1", - "1" - ], - "Warning": [ - "Warning 1815 NO_DECORRELATE() and SEMI_JOIN_REWRITE() are in conflict. Both will be ineffective." + "TableReader 1.00 root MppVersion: 2, data:ExchangeSender", + "└─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", + " └─HashJoin 1.00 mpp[tiflash] inner join, equal:[eq(Column#5, Column#10)]", + " ├─ExchangeReceiver(Build) 1.00 mpp[tiflash] ", + " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", + " │ └─Projection 1.00 mpp[tiflash] Column#5", + " │ └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#11)->Column#5", + " │ └─ExchangeReceiver 1.00 mpp[tiflash] ", + " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", + " │ └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#11", + " │ └─ExchangeReceiver 1.00 mpp[tiflash] ", + " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary]", + " │ └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, ", + " │ └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo", + " └─Projection(Probe) 1.00 mpp[tiflash] Column#10", + " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#12)->Column#10", + " └─ExchangeReceiver 1.00 mpp[tiflash] ", + " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#12", + " └─ExchangeReceiver 1.00 mpp[tiflash] ", + " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary]", + " └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, ", + " └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" ] }, { - "SQL": "select t1.a from t1 where t1.a in (select t2.b from t2 where t2.a = t1.b)", - "Plan": [ - "HashJoin 7984.01 root semi join, equal:[eq(test.t1.b, test.t2.a) eq(test.t1.a, test.t2.b)]", - "├─TableReader(Build) 9990.00 root data:Selection", - "│ └─Selection 9990.00 cop[tikv] not(isnull(test.t2.b))", - "│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", - "└─TableReader(Probe) 9980.01 root data:Selection", - " └─Selection 9980.01 cop[tikv] not(isnull(test.t1.a)), not(isnull(test.t1.b))", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1" - ], - "Warning": null - }, - { - "SQL": "select t1.a from t1 where t1.a in (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b)", - "Plan": [ - "Projection 9990.00 root test.t1.a", - "└─Apply 9990.00 root semi join, equal:[eq(test.t1.a, test.t2.b)]", - " ├─TableReader(Build) 9990.00 root data:Selection", - " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t1.a))", - " │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", - " └─TableReader(Probe) 99800.10 root data:Selection", - " └─Selection 99800.10 cop[tikv] not(isnull(test.t2.b))", - " └─TableRangeScan 9990.00 cop[tikv] table:t2 range: decided by [eq(test.t2.a, test.t1.b)], keep order:false, stats:pseudo" - ], - "Result": [ - "1" - ], - "Warning": null - }, - { - "SQL": "select t1.a from t1 where t1.a = any (select t2.b from t2 where t2.a = t1.b)", - "Plan": [ - "Projection 8000.00 root test.t1.a", - "└─Selection 8000.00 root Column#6", - " └─HashJoin 10000.00 root left outer semi join, equal:[eq(test.t1.b, test.t2.a)], other cond:eq(test.t1.a, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1" - ], - "Warning": null - }, - { - "SQL": "select t1.a from t1 where t1.a = any (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b)", - "Plan": [ - "Projection 8000.00 root test.t1.a", - "└─Selection 8000.00 root Column#6", - " └─Apply 10000.00 root CARTESIAN left outer semi join, other cond:eq(test.t1.a, test.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", - " └─TableRangeScan 10000.00 cop[tikv] table:t2 range: decided by [eq(test.t2.a, test.t1.b)], keep order:false, stats:pseudo" - ], - "Result": [ - "1" - ], - "Warning": null - }, - { - "SQL": "select t1.a, t1.a != any (select t2.b from t2 where t2.a = t1.b) from t1", - "Plan": [ - "Projection 10000.00 root test.t1.a, and(or(or(gt(Column#9, 1), ne(test.t1.a, Column#8)), if(ne(Column#10, 0), , 0)), and(ne(Column#11, 0), if(isnull(test.t1.a), , 1)))->Column#12", - "└─Apply 10000.00 root CARTESIAN inner join", - " ├─TableReader(Build) 10000.00 root data:TableFullScan", - " │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", - " └─StreamAgg(Probe) 10000.00 root funcs:max(Column#14)->Column#8, funcs:count(distinct Column#15)->Column#9, funcs:sum(Column#16)->Column#10, funcs:count(1)->Column#11", - " └─Projection 10000.00 root test.t2.b->Column#14, test.t2.b->Column#15, cast(isnull(test.t2.b), decimal(20,0) BINARY)->Column#16", - " └─TableReader 10000.00 root data:TableRangeScan", - " └─TableRangeScan 10000.00 cop[tikv] table:t2 range: decided by [eq(test.t2.a, test.t1.b)], keep order:false, stats:pseudo" - ], - "Result": [ - "1 0", - "2 1" - ], - "Warning": null - }, - { - "SQL": "select t1.a, t1.a != any (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b) from t1", + "SQL": "select * from employee e1 join employee e2 on e1.deptid = e2.deptid", "Plan": [ - "Projection 10000.00 root test.t1.a, and(or(or(gt(Column#9, 1), ne(test.t1.a, Column#8)), if(ne(Column#10, 0), , 0)), and(ne(Column#11, 0), if(isnull(test.t1.a), , 1)))->Column#12", - "└─Apply 10000.00 root CARTESIAN inner join", - " ├─TableReader(Build) 10000.00 root data:TableFullScan", - " │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", - " └─StreamAgg(Probe) 10000.00 root funcs:max(Column#14)->Column#8, funcs:count(distinct Column#15)->Column#9, funcs:sum(Column#16)->Column#10, funcs:count(1)->Column#11", - " └─Projection 10000.00 root test.t2.b->Column#14, test.t2.b->Column#15, cast(isnull(test.t2.b), decimal(20,0) BINARY)->Column#16", - " └─TableReader 10000.00 root data:TableRangeScan", - " └─TableRangeScan 10000.00 cop[tikv] table:t2 range: decided by [eq(test.t2.a, test.t1.b)], keep order:false, stats:pseudo" - ], - "Result": [ - "1 0", - "2 1" - ], - "Warning": null + "TableReader 12487.50 root MppVersion: 2, data:ExchangeSender", + "└─ExchangeSender 12487.50 mpp[tiflash] ExchangeType: PassThrough", + " └─HashJoin 12487.50 mpp[tiflash] inner join, equal:[eq(test.employee.deptid, test.employee.deptid)]", + " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", + " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", + " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.employee.deptid))", + " │ └─TableFullScan 10000.00 mpp[tiflash] table:e1 pushed down filter:empty, keep order:false, stats:pseudo", + " └─Selection(Probe) 9990.00 mpp[tiflash] not(isnull(test.employee.deptid))", + " └─TableFullScan 10000.00 mpp[tiflash] table:e2 pushed down filter:empty, keep order:false, stats:pseudo" + ] }, { - "SQL": "select t1.a, t1.a > all (select t2.b from t2 where t2.a = t1.b) from t1", + "SQL": "select * from (select deptid+1 d, count(empid) a from employee group by d) e1 join employee e2 on e1.d = e2.deptid", "Plan": [ - "Projection 10000.00 root test.t1.a, or(and(gt(test.t1.a, Column#8), if(ne(Column#9, 0), , 1)), or(eq(Column#10, 0), if(isnull(test.t1.a), , 0)))->Column#11", - "└─Apply 10000.00 root CARTESIAN inner join", - " ├─TableReader(Build) 10000.00 root data:TableFullScan", - " │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", - " └─StreamAgg(Probe) 10000.00 root funcs:max(Column#19)->Column#8, funcs:sum(Column#20)->Column#9, funcs:count(1)->Column#10", - " └─Projection 10000.00 root test.t2.b->Column#19, cast(isnull(test.t2.b), decimal(20,0) BINARY)->Column#20", - " └─TableReader 10000.00 root data:TableRangeScan", - " └─TableRangeScan 10000.00 cop[tikv] table:t2 range: decided by [eq(test.t2.a, test.t1.b)], keep order:false, stats:pseudo" - ], - "Result": [ - "1 0", - "2 1" - ], - "Warning": null + "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", + "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", + " └─Projection 8000.00 mpp[tiflash] Column#6, Column#5, test.employee.empid, test.employee.deptid, test.employee.salary", + " └─HashJoin 8000.00 mpp[tiflash] inner join, equal:[eq(test.employee.deptid, Column#6)]", + " ├─ExchangeReceiver(Build) 6400.00 mpp[tiflash] ", + " │ └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", + " │ └─Projection 6400.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#6, Column#5", + " │ └─Selection 6400.00 mpp[tiflash] not(isnull(plus(test.employee.deptid, 1)))", + " │ └─Projection 8000.00 mpp[tiflash] Column#5, test.employee.deptid", + " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#13, funcs:sum(Column#14)->Column#5, funcs:firstrow(Column#15)->test.employee.deptid", + " │ └─ExchangeReceiver 8000.00 mpp[tiflash] ", + " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#13, collate: binary]", + " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#27, funcs:count(Column#25)->Column#14, funcs:firstrow(Column#26)->Column#15", + " │ └─Projection 10000.00 mpp[tiflash] test.employee.empid->Column#25, test.employee.deptid->Column#26, plus(test.employee.deptid, 1)->Column#27", + " │ └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo", + " └─Selection(Probe) 9990.00 mpp[tiflash] not(isnull(test.employee.deptid))", + " └─TableFullScan 10000.00 mpp[tiflash] table:e2 pushed down filter:empty, keep order:false, stats:pseudo" + ] }, { - "SQL": "select t1.a, t1.a > all (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b) from t1", + "SQL": "select * from employee e1 join (select deptid+1 d, count(empid) a from employee group by d) e2 on e1.deptid = e2.d", "Plan": [ - "Projection 10000.00 root test.t1.a, or(and(gt(test.t1.a, Column#8), if(ne(Column#9, 0), , 1)), or(eq(Column#10, 0), if(isnull(test.t1.a), , 0)))->Column#11", - "└─Apply 10000.00 root CARTESIAN inner join", - " ├─TableReader(Build) 10000.00 root data:TableFullScan", - " │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", - " └─StreamAgg(Probe) 10000.00 root funcs:max(Column#19)->Column#8, funcs:sum(Column#20)->Column#9, funcs:count(1)->Column#10", - " └─Projection 10000.00 root test.t2.b->Column#19, cast(isnull(test.t2.b), decimal(20,0) BINARY)->Column#20", - " └─TableReader 10000.00 root data:TableRangeScan", - " └─TableRangeScan 10000.00 cop[tikv] table:t2 range: decided by [eq(test.t2.a, test.t1.b)], keep order:false, stats:pseudo" - ], - "Result": [ - "1 0", - "2 1" - ], - "Warning": null + "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", + "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", + " └─HashJoin 8000.00 mpp[tiflash] inner join, equal:[eq(test.employee.deptid, Column#10)]", + " ├─ExchangeReceiver(Build) 6400.00 mpp[tiflash] ", + " │ └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", + " │ └─Projection 6400.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#10, Column#9", + " │ └─Selection 6400.00 mpp[tiflash] not(isnull(plus(test.employee.deptid, 1)))", + " │ └─Projection 8000.00 mpp[tiflash] Column#9, test.employee.deptid", + " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#13, funcs:sum(Column#14)->Column#9, funcs:firstrow(Column#15)->test.employee.deptid", + " │ └─ExchangeReceiver 8000.00 mpp[tiflash] ", + " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#13, collate: binary]", + " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#27, funcs:count(Column#25)->Column#14, funcs:firstrow(Column#26)->Column#15", + " │ └─Projection 10000.00 mpp[tiflash] test.employee.empid->Column#25, test.employee.deptid->Column#26, plus(test.employee.deptid, 1)->Column#27", + " │ └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo", + " └─Selection(Probe) 9990.00 mpp[tiflash] not(isnull(test.employee.deptid))", + " └─TableFullScan 10000.00 mpp[tiflash] table:e1 pushed down filter:empty, keep order:false, stats:pseudo" + ] }, { - "SQL": "select t1.a, (select t2.b from t2 where t2.a = t1.b) from t1", + "SQL": "select * from (select deptid+1 d, count(empid) a from employee group by d) e1 join (select deptid+1 d, count(empid) a from employee group by d) e2 on e1.d = e2.d", "Plan": [ - "HashJoin 12500.00 root left outer join, equal:[eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 1", - "2 1" - ], - "Warning": null + "TableReader 6400.00 root MppVersion: 2, data:ExchangeSender", + "└─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: PassThrough", + " └─HashJoin 6400.00 mpp[tiflash] inner join, equal:[eq(Column#6, Column#12)]", + " ├─ExchangeReceiver(Build) 6400.00 mpp[tiflash] ", + " │ └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", + " │ └─Projection 6400.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#6, Column#5", + " │ └─Selection 6400.00 mpp[tiflash] not(isnull(plus(test.employee.deptid, 1)))", + " │ └─Projection 8000.00 mpp[tiflash] Column#5, test.employee.deptid", + " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#17, funcs:sum(Column#18)->Column#5, funcs:firstrow(Column#19)->test.employee.deptid", + " │ └─ExchangeReceiver 8000.00 mpp[tiflash] ", + " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#17, collate: binary]", + " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#43, funcs:count(Column#41)->Column#18, funcs:firstrow(Column#42)->Column#19", + " │ └─Projection 10000.00 mpp[tiflash] test.employee.empid->Column#41, test.employee.deptid->Column#42, plus(test.employee.deptid, 1)->Column#43", + " │ └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo", + " └─Projection(Probe) 6400.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#12, Column#11", + " └─Selection 6400.00 mpp[tiflash] not(isnull(plus(test.employee.deptid, 1)))", + " └─Projection 8000.00 mpp[tiflash] Column#11, test.employee.deptid", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#20, funcs:sum(Column#21)->Column#11, funcs:firstrow(Column#22)->test.employee.deptid", + " └─ExchangeReceiver 8000.00 mpp[tiflash] ", + " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#20, collate: binary]", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#46, funcs:count(Column#44)->Column#21, funcs:firstrow(Column#45)->Column#22", + " └─Projection 10000.00 mpp[tiflash] test.employee.empid->Column#44, test.employee.deptid->Column#45, plus(test.employee.deptid, 1)->Column#46", + " └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" + ] }, { - "SQL": "select t1.a, (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b) from t1", - "Plan": [ - "Projection 10000.00 root test.t1.a, test.t2.b", - "└─Apply 10000.00 root CARTESIAN left outer join", - " ├─TableReader(Build) 10000.00 root data:TableFullScan", - " │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", - " └─MaxOneRow(Probe) 10000.00 root ", - " └─TableReader 2000.00 root data:TableRangeScan", - " └─TableRangeScan 2000.00 cop[tikv] table:t2 range: decided by [eq(test.t2.a, test.t1.b)], keep order:false, stats:pseudo" - ], - "Result": [ - "1 1", - "2 1" - ], - "Warning": null + "SQL": "set tidb_broadcast_join_threshold_count=1", + "Plan": null }, { - "SQL": "select t1.a, t1.b not in (select t3.b from t3) from t1", - "Plan": [ - "HashJoin 10000.00 root Null-aware anti left outer semi join, equal:[eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 0", - "2 1" - ], - "Warning": null + "SQL": "set tidb_broadcast_join_threshold_size=1", + "Plan": null }, { - "SQL": "select t1.a, t1.b not in (select /*+ no_decorrelate() */ t3.b from t3) from t1", + "SQL": "select * from (select count(distinct deptid) a from employee) e1 join employee e2 on e1.a = e2.deptid", "Plan": [ - "HashJoin 10000.00 root Null-aware anti left outer semi join, equal:[eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 0", - "2 1" - ], - "Warning": [ - "Warning 1815 NO_DECORRELATE() is inapplicable because there are no correlated columns." + "Projection 1.25 root Column#5, test.employee.empid, test.employee.deptid, test.employee.salary", + "└─HashJoin 1.25 root inner join, equal:[eq(test.employee.deptid, Column#5)]", + " ├─TableReader(Build) 1.00 root MppVersion: 2, data:ExchangeSender", + " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", + " │ └─Projection 1.00 mpp[tiflash] Column#5", + " │ └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#12)->Column#5", + " │ └─ExchangeReceiver 1.00 mpp[tiflash] ", + " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", + " │ └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#12", + " │ └─ExchangeReceiver 1.00 mpp[tiflash] ", + " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary]", + " │ └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, ", + " │ └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo", + " └─TableReader(Probe) 9990.00 root MppVersion: 2, data:ExchangeSender", + " └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: PassThrough", + " └─Selection 9990.00 mpp[tiflash] not(isnull(test.employee.deptid))", + " └─TableFullScan 10000.00 mpp[tiflash] table:e2 pushed down filter:empty, keep order:false, stats:pseudo" ] }, { - "SQL": "select exists (select t3.b from t3 where t3.a = t1.b limit 2) from t1", + "SQL": "select * from (select count(distinct deptid) a from employee) e1 join (select count(distinct deptid) b from employee) e2 on e1.a=e2.b", "Plan": [ - "HashJoin 10000.00 root left outer semi join, equal:[eq(test.t1.b, test.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", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1", - "1" - ], - "Warning": null + "HashJoin 1.00 root inner join, equal:[eq(Column#5, Column#10)]", + "├─TableReader(Build) 1.00 root MppVersion: 2, data:ExchangeSender", + "│ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", + "│ └─Projection 1.00 mpp[tiflash] Column#10", + "│ └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#16)->Column#10", + "│ └─ExchangeReceiver 1.00 mpp[tiflash] ", + "│ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", + "│ └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#16", + "│ └─ExchangeReceiver 1.00 mpp[tiflash] ", + "│ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary]", + "│ └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, ", + "│ └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo", + "└─TableReader(Probe) 1.00 root MppVersion: 2, data:ExchangeSender", + " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", + " └─Projection 1.00 mpp[tiflash] Column#5", + " └─HashAgg 1.00 mpp[tiflash] funcs:sum(Column#15)->Column#5", + " └─ExchangeReceiver 1.00 mpp[tiflash] ", + " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough, Compression: FAST", + " └─HashAgg 1.00 mpp[tiflash] funcs:count(distinct test.employee.deptid)->Column#15", + " └─ExchangeReceiver 1.00 mpp[tiflash] ", + " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary]", + " └─HashAgg 1.00 mpp[tiflash] group by:test.employee.deptid, ", + " └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" + ] }, { - "SQL": "select exists (select /*+ no_decorrelate() */ t3.b from t3 where t3.a = t1.b limit 2) from t1", + "SQL": "select * from employee e1 join employee e2 on e1.deptid = e2.deptid", "Plan": [ - "Projection 10000.00 root Column#10", - "└─Apply 10000.00 root CARTESIAN left outer semi join", - " ├─TableReader(Build) 10000.00 root data:TableFullScan", - " │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", - " └─Limit(Probe) 20000.00 root offset:0, count:2", - " └─TableReader 20000.00 root data:Limit", - " └─Limit 20000.00 cop[tikv] offset:0, count:2", - " └─Selection 20000.00 cop[tikv] eq(test.t3.a, test.t1.b)", - " └─TableFullScan 20000000.00 cop[tikv] table:t3 keep order:false, stats:pseudo" - ], - "Result": [ - "1", - "1" - ], - "Warning": null + "TableReader 12487.50 root MppVersion: 2, data:ExchangeSender", + "└─ExchangeSender 12487.50 mpp[tiflash] ExchangeType: PassThrough", + " └─HashJoin 12487.50 mpp[tiflash] inner join, equal:[eq(test.employee.deptid, test.employee.deptid)]", + " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", + " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary]", + " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.employee.deptid))", + " │ └─TableFullScan 10000.00 mpp[tiflash] table:e1 pushed down filter:empty, keep order:false, stats:pseudo", + " └─ExchangeReceiver(Probe) 9990.00 mpp[tiflash] ", + " └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.employee.deptid, collate: binary]", + " └─Selection 9990.00 mpp[tiflash] not(isnull(test.employee.deptid))", + " └─TableFullScan 10000.00 mpp[tiflash] table:e2 pushed down filter:empty, keep order:false, stats:pseudo" + ] }, { - "SQL": "select t1.a, (select sum(t1.a) from t2 where t2.a = 10) from t1", + "SQL": "select * from (select deptid+1 d, count(empid) a from employee group by d) e1 join employee e2 on e1.d = e2.deptid", "Plan": [ - "Projection 1.00 root test.t1.a, Column#6->Column#11", - "└─HashJoin 1.00 root CARTESIAN left outer join", - " ├─Point_Get(Build) 1.00 root table:t2 handle:10", - " └─HashAgg(Probe) 1.00 root funcs:sum(Column#13)->Column#6, funcs:firstrow(Column#14)->test.t1.a", - " └─TableReader 1.00 root data:HashAgg", - " └─HashAgg 1.00 cop[tikv] funcs:sum(test.t1.a)->Column#13, funcs:firstrow(test.t1.a)->Column#14", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "1 3" - ], - "Warning": null + "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", + "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", + " └─Projection 8000.00 mpp[tiflash] Column#6, Column#5, test.employee.empid, test.employee.deptid, test.employee.salary", + " └─HashJoin 8000.00 mpp[tiflash] inner join, equal:[eq(test.employee.deptid, Column#6)]", + " ├─ExchangeReceiver(Build) 6400.00 mpp[tiflash] ", + " │ └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#6, collate: binary]", + " │ └─Projection 6400.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#6, Column#5", + " │ └─Selection 6400.00 mpp[tiflash] not(isnull(plus(test.employee.deptid, 1)))", + " │ └─Projection 8000.00 mpp[tiflash] Column#5, test.employee.deptid", + " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#13, funcs:sum(Column#14)->Column#5, funcs:firstrow(Column#15)->test.employee.deptid", + " │ └─ExchangeReceiver 8000.00 mpp[tiflash] ", + " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#13, collate: binary]", + " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#29, funcs:count(Column#27)->Column#14, funcs:firstrow(Column#28)->Column#15", + " │ └─Projection 10000.00 mpp[tiflash] test.employee.empid->Column#27, test.employee.deptid->Column#28, plus(test.employee.deptid, 1)->Column#29", + " │ └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo", + " └─ExchangeReceiver(Probe) 9990.00 mpp[tiflash] ", + " └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#26, collate: binary]", + " └─Projection 9990.00 mpp[tiflash] test.employee.empid, test.employee.deptid, test.employee.salary, cast(test.employee.deptid, bigint(20))->Column#26", + " └─Selection 9990.00 mpp[tiflash] not(isnull(test.employee.deptid))", + " └─TableFullScan 10000.00 mpp[tiflash] table:e2 pushed down filter:empty, keep order:false, stats:pseudo" + ] }, { - "SQL": "select t1.a, (select /*+ no_decorrelate() */ sum(t1.a) from t2 where t2.a = 10) from t1", + "SQL": "select * from employee e1 join (select deptid+1 d, count(empid) a from employee group by d) e2 on e1.deptid = e2.d", "Plan": [ - "Projection 1.00 root test.t1.a, Column#9->Column#11", - "└─Apply 1.00 root CARTESIAN left outer join", - " ├─HashAgg(Build) 1.00 root funcs:sum(Column#14)->Column#6, funcs:firstrow(Column#15)->test.t1.a", - " │ └─Projection 10000.00 root cast(test.t1.a, decimal(10,0) BINARY)->Column#14, test.t1.a->Column#15", - " │ └─TableReader 10000.00 root data:TableFullScan", - " │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", - " └─MaxOneRow(Probe) 1.00 root ", - " └─Projection 1.00 root Column#6->Column#9", - " └─Point_Get 1.00 root table:t2 handle:10" - ], - "Result": [ - "1 " - ], - "Warning": null + "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", + "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", + " └─Projection 8000.00 mpp[tiflash] test.employee.empid, test.employee.deptid, test.employee.salary, Column#10, Column#9", + " └─HashJoin 8000.00 mpp[tiflash] inner join, equal:[eq(test.employee.deptid, Column#10)]", + " ├─ExchangeReceiver(Build) 6400.00 mpp[tiflash] ", + " │ └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#10, collate: binary]", + " │ └─Projection 6400.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#10, Column#9", + " │ └─Selection 6400.00 mpp[tiflash] not(isnull(plus(test.employee.deptid, 1)))", + " │ └─Projection 8000.00 mpp[tiflash] Column#9, test.employee.deptid", + " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#13, funcs:sum(Column#14)->Column#9, funcs:firstrow(Column#15)->test.employee.deptid", + " │ └─ExchangeReceiver 8000.00 mpp[tiflash] ", + " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#13, collate: binary]", + " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#29, funcs:count(Column#27)->Column#14, funcs:firstrow(Column#28)->Column#15", + " │ └─Projection 10000.00 mpp[tiflash] test.employee.empid->Column#27, test.employee.deptid->Column#28, plus(test.employee.deptid, 1)->Column#29", + " │ └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo", + " └─ExchangeReceiver(Probe) 9990.00 mpp[tiflash] ", + " └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#26, collate: binary]", + " └─Projection 9990.00 mpp[tiflash] test.employee.empid, test.employee.deptid, test.employee.salary, cast(test.employee.deptid, bigint(20))->Column#26", + " └─Selection 9990.00 mpp[tiflash] not(isnull(test.employee.deptid))", + " └─TableFullScan 10000.00 mpp[tiflash] table:e1 pushed down filter:empty, keep order:false, stats:pseudo" + ] }, { - "SQL": "select (select count(t3.a) from t3 where t3.b = t1.b) from t1;", + "SQL": "select * from (select deptid+1 d, count(empid) a from employee group by d) e1 join (select deptid+1 d, count(empid) a from employee group by d) e2 on e1.d = e2.d", "Plan": [ - "Projection 10000.00 root ifnull(Column#10, 0)->Column#10", - "└─HashJoin 10000.00 root left outer join, equal:[eq(test.t1.b, test.t3.b)]", - " ├─HashAgg(Build) 7992.00 root group by:test.t3.b, funcs:count(Column#11)->Column#10, funcs:firstrow(test.t3.b)->test.t3.b", - " │ └─TableReader 7992.00 root data:HashAgg", - " │ └─HashAgg 7992.00 cop[tikv] group by:test.t3.b, funcs:count(test.t3.a)->Column#11", - " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t3.b))", - " │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo", - " └─TableReader(Probe) 10000.00 root data:TableFullScan", - " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" - ], - "Result": [ - "0", - "2" - ], - "Warning": null - }, + "TableReader 6400.00 root MppVersion: 2, data:ExchangeSender", + "└─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: PassThrough", + " └─HashJoin 6400.00 mpp[tiflash] inner join, equal:[eq(Column#6, Column#12)]", + " ├─ExchangeReceiver(Build) 6400.00 mpp[tiflash] ", + " │ └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#6, collate: binary]", + " │ └─Projection 6400.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#6, Column#5", + " │ └─Selection 6400.00 mpp[tiflash] not(isnull(plus(test.employee.deptid, 1)))", + " │ └─Projection 8000.00 mpp[tiflash] Column#5, test.employee.deptid", + " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#17, funcs:sum(Column#18)->Column#5, funcs:firstrow(Column#19)->test.employee.deptid", + " │ └─ExchangeReceiver 8000.00 mpp[tiflash] ", + " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#17, collate: binary]", + " │ └─HashAgg 8000.00 mpp[tiflash] group by:Column#43, funcs:count(Column#41)->Column#18, funcs:firstrow(Column#42)->Column#19", + " │ └─Projection 10000.00 mpp[tiflash] test.employee.empid->Column#41, test.employee.deptid->Column#42, plus(test.employee.deptid, 1)->Column#43", + " │ └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo", + " └─ExchangeReceiver(Probe) 6400.00 mpp[tiflash] ", + " └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#12, collate: binary]", + " └─Projection 6400.00 mpp[tiflash] plus(test.employee.deptid, 1)->Column#12, Column#11", + " └─Selection 6400.00 mpp[tiflash] not(isnull(plus(test.employee.deptid, 1)))", + " └─Projection 8000.00 mpp[tiflash] Column#11, test.employee.deptid", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#20, funcs:sum(Column#21)->Column#11, funcs:firstrow(Column#22)->test.employee.deptid", + " └─ExchangeReceiver 8000.00 mpp[tiflash] ", + " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#20, collate: binary]", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#46, funcs:count(Column#44)->Column#21, funcs:firstrow(Column#45)->Column#22", + " └─Projection 10000.00 mpp[tiflash] test.employee.empid->Column#44, test.employee.deptid->Column#45, plus(test.employee.deptid, 1)->Column#46", + " └─TableFullScan 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" + ] + } + ] + }, + { + "Name": "TestSemiJoinRewriteHints", + "Cases": [ { - "SQL": "select (select /*+ no_decorrelate() */ count(t3.a) from t3 where t3.b = t1.b) from t1;", + "SQL": "select /*+ SEMI_JOIN_REWRITE() */ * from t", "Plan": [ - "Projection 10000.00 root Column#10", - "└─Apply 10000.00 root CARTESIAN left outer join", - " ├─TableReader(Build) 10000.00 root data:TableFullScan", - " │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", - " └─MaxOneRow(Probe) 10000.00 root ", - " └─StreamAgg 10000.00 root funcs:count(Column#12)->Column#10", - " └─TableReader 10000.00 root data:StreamAgg", - " └─StreamAgg 10000.00 cop[tikv] funcs:count(test.t3.a)->Column#12", - " └─Selection 100000.00 cop[tikv] eq(test.t3.b, test.t1.b)", - " └─TableFullScan 100000000.00 cop[tikv] table:t3 keep order:false, stats:pseudo" - ], - "Result": [ - "0", - "2" + "TableReader 10000.00 root data:TableFullScan", + "└─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" ], - "Warning": null + "Warning": "[planner:1815]The SEMI_JOIN_REWRITE hint is not used correctly, maybe it's not in a subquery or the subquery is not EXISTS clause." }, { - "SQL": "SELECT ta.NAME,(SELECT sum(tb.CODE) FROM tb WHERE ta.id = tb.id) tb_sum_code FROM ta WHERE ta.NAME LIKE 'chad999%'", + "SQL": "select * from t where a > (select /*+ SEMI_JOIN_REWRITE() */ min(b) from t t1 where t1.c = t.c)", "Plan": [ - "HashJoin 250.00 root left outer join, equal:[eq(test.ta.id, test.tb.id)]", - "├─TableReader(Build) 250.00 root data:Selection", - "│ └─Selection 250.00 cop[tikv] like(test.ta.name, \"chad999%\", 92)", - "│ └─TableFullScan 10000.00 cop[tikv] table:ta keep order:false, stats:pseudo", - "└─HashAgg(Probe) 7992.00 root group by:test.tb.id, funcs:sum(Column#19)->Column#13, funcs:firstrow(test.tb.id)->test.tb.id", - " └─TableReader 7992.00 root data:HashAgg", - " └─HashAgg 7992.00 cop[tikv] group by:test.tb.id, funcs:sum(test.tb.code)->Column#19", - " └─Selection 9990.00 cop[tikv] not(isnull(test.tb.id))", - " └─TableFullScan 10000.00 cop[tikv] table:tb keep order:false, stats:pseudo" + "HashJoin 7992.00 root inner join, equal:[eq(test.t.c, test.t.c)], other cond:gt(test.t.a, Column#9)", + "├─Selection(Build) 6393.60 root not(isnull(Column#9))", + "│ └─HashAgg 7992.00 root group by:test.t.c, funcs:min(Column#10)->Column#9, funcs:firstrow(test.t.c)->test.t.c", + "│ └─TableReader 7992.00 root data:HashAgg", + "│ └─HashAgg 7992.00 cop[tikv] group by:test.t.c, funcs:min(test.t.b)->Column#10", + "│ └─Selection 9990.00 cop[tikv] not(isnull(test.t.c))", + "│ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", + "└─TableReader(Probe) 9980.01 root data:Selection", + " └─Selection 9980.01 cop[tikv] not(isnull(test.t.a)), not(isnull(test.t.c))", + " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" ], - "Result": null, - "Warning": null + "Warning": "[planner:1815]The SEMI_JOIN_REWRITE hint is not used correctly, maybe it's not in a subquery or the subquery is not EXISTS clause." }, { - "SQL": "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%'", + "SQL": "select * from t where exists (select /*+ SEMI_JOIN_REWRITE() */ 1 from t t1 where t1.a=t.a)", "Plan": [ - "Projection 250.00 root test.ta.name, Column#13", - "└─Apply 250.00 root CARTESIAN left outer join", - " ├─TableReader(Build) 250.00 root data:Selection", - " │ └─Selection 250.00 cop[tikv] like(test.ta.name, \"chad999%\", 92)", - " │ └─TableFullScan 10000.00 cop[tikv] table:ta keep order:false, stats:pseudo", - " └─MaxOneRow(Probe) 250.00 root ", - " └─StreamAgg 250.00 root funcs:sum(Column#21)->Column#13", - " └─Projection 2500.00 root cast(test.tb.code, decimal(10,0) BINARY)->Column#21", - " └─IndexLookUp 2500.00 root ", - " ├─IndexRangeScan(Build) 2500.00 cop[tikv] table:tb, index:idx_tb_id(id) range: decided by [eq(test.ta.id, test.tb.id)], keep order:false, stats:pseudo", - " └─TableRowIDScan(Probe) 2500.00 cop[tikv] table:tb keep order:false, stats:pseudo" + "HashJoin 9990.00 root inner join, equal:[eq(test.t.a, test.t.a)]", + "├─HashAgg(Build) 7992.00 root group by:test.t.a, funcs:firstrow(test.t.a)->test.t.a", + "│ └─TableReader 7992.00 root data:HashAgg", + "│ └─HashAgg 7992.00 cop[tikv] group by:test.t.a, ", + "│ └─Selection 9990.00 cop[tikv] not(isnull(test.t.a))", + "│ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", + "└─TableReader(Probe) 9990.00 root data:Selection", + " └─Selection 9990.00 cop[tikv] not(isnull(test.t.a))", + " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" ], - "Result": null, - "Warning": null + "Warning": "" }, { - "SQL": "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%'", + "SQL": "select * from t where exists (select /*+ SEMI_JOIN_REWRITE() */ t.b from t t1 where t1.a=t.a)", "Plan": [ - "HashJoin 250.00 root left outer join, equal:[eq(test.ta.id, test.tb.id)]", - "├─TableReader(Build) 250.00 root data:Selection", - "│ └─Selection 250.00 cop[tikv] like(test.ta.name, \"chad999%\", 92)", - "│ └─TableFullScan 10000.00 cop[tikv] table:ta keep order:false, stats:pseudo", - "└─HashAgg(Probe) 6387.21 root group by:Column#39, funcs:sum(Column#37)->Column#18, funcs:firstrow(Column#38)->test.tb.id", - " └─Projection 7984.01 root cast(test.tb.code, decimal(10,0) BINARY)->Column#37, test.tb.id->Column#38, test.tb.id->Column#39", - " └─HashJoin 7984.01 root semi join, equal:[eq(test.tb.name, test.tc.name)]", - " ├─TableReader(Build) 7992.00 root data:Selection", - " │ └─Selection 7992.00 cop[tikv] like(cast(test.tc.code, var_string(20)), \"999%\", 92), not(isnull(test.tc.name))", - " │ └─TableFullScan 10000.00 cop[tikv] table:tc keep order:false, stats:pseudo", - " └─TableReader(Probe) 9980.01 root data:Selection", - " └─Selection 9980.01 cop[tikv] not(isnull(test.tb.id)), not(isnull(test.tb.name))", - " └─TableFullScan 10000.00 cop[tikv] table:tb keep order:false, stats:pseudo" + "HashJoin 9990.00 root inner join, equal:[eq(test.t.a, test.t.a)]", + "├─HashAgg(Build) 7992.00 root group by:test.t.a, funcs:firstrow(test.t.a)->test.t.a", + "│ └─TableReader 7992.00 root data:HashAgg", + "│ └─HashAgg 7992.00 cop[tikv] group by:test.t.a, ", + "│ └─Selection 9990.00 cop[tikv] not(isnull(test.t.a))", + "│ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", + "└─TableReader(Probe) 9990.00 root data:Selection", + " └─Selection 9990.00 cop[tikv] not(isnull(test.t.a))", + " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" ], - "Result": null, - "Warning": null - }, - { - "SQL": "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%'", - "Plan": [ - "Projection 250.00 root test.ta.name, Column#18", - "└─Apply 250.00 root CARTESIAN left outer join", - " ├─TableReader(Build) 250.00 root data:Selection", - " │ └─Selection 250.00 cop[tikv] like(test.ta.name, \"chad999%\", 92)", - " │ └─TableFullScan 10000.00 cop[tikv] table:ta keep order:false, stats:pseudo", - " └─MaxOneRow(Probe) 250.00 root ", - " └─StreamAgg 250.00 root funcs:sum(Column#33)->Column#18", - " └─Projection 1998.00 root cast(test.tb.code, decimal(10,0) BINARY)->Column#33", - " └─IndexHashJoin 1998.00 root semi join, inner:IndexLookUp, outer key:test.tb.name, inner key:test.tc.name, equal cond:eq(test.tb.name, test.tc.name)", - " ├─IndexLookUp(Build) 2497.50 root ", - " │ ├─IndexRangeScan(Build) 2500.00 cop[tikv] table:tb, index:idx_tb_id(id) range: decided by [eq(test.ta.id, test.tb.id)], keep order:false, stats:pseudo", - " │ └─Selection(Probe) 2497.50 cop[tikv] not(isnull(test.tb.name))", - " │ └─TableRowIDScan 2500.00 cop[tikv] table:tb keep order:false, stats:pseudo", - " └─IndexLookUp(Probe) 3121.87 root ", - " ├─Selection(Build) 3902.34 cop[tikv] not(isnull(test.tc.name))", - " │ └─IndexRangeScan 3906.25 cop[tikv] table:tc, index:idx_tc_name(name) range: decided by [eq(test.tc.name, test.tb.name)], keep order:false, stats:pseudo", - " └─Selection(Probe) 3121.87 cop[tikv] like(cast(test.tc.code, var_string(20)), \"999%\", 92)", - " └─TableRowIDScan 3902.34 cop[tikv] table:tc keep order:false, stats:pseudo" - ], - "Result": null, - "Warning": null - }, - { - "SQL": "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%'", - "Plan": [ - "HashJoin 250.00 root left outer join, equal:[eq(test.ta.id, test.tb.id)]", - "├─TableReader(Build) 250.00 root data:Selection", - "│ └─Selection 250.00 cop[tikv] like(test.ta.name, \"chad999%\", 92)", - "│ └─TableFullScan 10000.00 cop[tikv] table:ta keep order:false, stats:pseudo", - "└─HashAgg(Probe) 7992.00 root group by:Column#28, funcs:sum(Column#26)->Column#18, funcs:firstrow(Column#27)->test.tb.id", - " └─Projection 9990.00 root cast(test.tb.code, decimal(10,0) BINARY)->Column#26, test.tb.id->Column#27, test.tb.id->Column#28", - " └─Apply 9990.00 root CARTESIAN semi join", - " ├─TableReader(Build) 9990.00 root data:Selection", - " │ └─Selection 9990.00 cop[tikv] not(isnull(test.tb.id))", - " │ └─TableFullScan 10000.00 cop[tikv] table:tb keep order:false, stats:pseudo", - " └─IndexLookUp(Probe) 79920.00 root ", - " ├─IndexRangeScan(Build) 99900.00 cop[tikv] table:tc, index:idx_tc_name(name) range: decided by [eq(test.tb.name, test.tc.name)], keep order:false, stats:pseudo", - " └─Selection(Probe) 79920.00 cop[tikv] like(cast(test.tc.code, var_string(20)), \"999%\", 92)", - " └─TableRowIDScan 99900.00 cop[tikv] table:tc keep order:false, stats:pseudo" - ], - "Result": null, - "Warning": null - }, - { - "SQL": "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%'", - "Plan": [ - "Projection 250.00 root test.ta.name, Column#18", - "└─Apply 250.00 root CARTESIAN left outer join", - " ├─TableReader(Build) 250.00 root data:Selection", - " │ └─Selection 250.00 cop[tikv] like(test.ta.name, \"chad999%\", 92)", - " │ └─TableFullScan 10000.00 cop[tikv] table:ta keep order:false, stats:pseudo", - " └─MaxOneRow(Probe) 250.00 root ", - " └─StreamAgg 250.00 root funcs:sum(Column#22)->Column#18", - " └─Projection 2500.00 root cast(test.tb.code, decimal(10,0) BINARY)->Column#22", - " └─Apply 2500.00 root CARTESIAN semi join", - " ├─IndexLookUp(Build) 2500.00 root ", - " │ ├─IndexRangeScan(Build) 2500.00 cop[tikv] table:tb, index:idx_tb_id(id) range: decided by [eq(test.ta.id, test.tb.id)], keep order:false, stats:pseudo", - " │ └─TableRowIDScan(Probe) 2500.00 cop[tikv] table:tb keep order:false, stats:pseudo", - " └─IndexLookUp(Probe) 20000.00 root ", - " ├─IndexRangeScan(Build) 25000.00 cop[tikv] table:tc, index:idx_tc_name(name) range: decided by [eq(test.tb.name, test.tc.name)], keep order:false, stats:pseudo", - " └─Selection(Probe) 20000.00 cop[tikv] like(cast(test.tc.code, var_string(20)), \"999%\", 92)", - " └─TableRowIDScan 25000.00 cop[tikv] table:tc keep order:false, stats:pseudo" - ], - "Result": null, - "Warning": null + "Warning": "" }, { - "SQL": "SELECT ta.id, 'split' as flag FROM ta WHERE ta.NAME ='chad999' and (select max(tb.code) from tb where ta.id=tb.id ) > 900", + "SQL": "select exists(select /*+ SEMI_JOIN_REWRITE() */ * from t t1 where t1.a=t.a) from t", "Plan": [ - "Projection 9.99 root test.ta.id, split->Column#10", - "└─HashJoin 9.99 root inner join, equal:[eq(test.ta.id, test.tb.id)]", - " ├─IndexLookUp(Build) 9.99 root ", - " │ ├─IndexRangeScan(Build) 10.00 cop[tikv] table:ta, index:idx_ta_name(name) range:[\"chad999\",\"chad999\"], keep order:false, stats:pseudo", - " │ └─Selection(Probe) 9.99 cop[tikv] not(isnull(test.ta.id))", - " │ └─TableRowIDScan 10.00 cop[tikv] table:ta keep order:false, stats:pseudo", - " └─Selection(Probe) 6393.60 root gt(Column#9, 900)", - " └─HashAgg 7992.00 root group by:test.tb.id, funcs:max(Column#19)->Column#9, funcs:firstrow(test.tb.id)->test.tb.id", - " └─TableReader 7992.00 root data:HashAgg", - " └─HashAgg 7992.00 cop[tikv] group by:test.tb.id, funcs:max(test.tb.code)->Column#19", - " └─Selection 9990.00 cop[tikv] not(isnull(test.tb.id))", - " └─TableFullScan 10000.00 cop[tikv] table:tb keep order:false, stats:pseudo" + "HashJoin 10000.00 root left outer semi join, 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", + " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" ], - "Result": null, - "Warning": null - }, - { - "SQL": "SELECT ta.id, 'split' as flag FROM ta WHERE ta.NAME ='chad999' and (select /*+ no_decorrelate() */ max(tb.code) from tb where ta.id=tb.id ) > 900", - "Plan": [ - "Projection 10.00 root test.ta.id, split->Column#10", - "└─Apply 10.00 root CARTESIAN inner join", - " ├─IndexLookUp(Build) 10.00 root ", - " │ ├─IndexRangeScan(Build) 10.00 cop[tikv] table:ta, index:idx_ta_name(name) range:[\"chad999\",\"chad999\"], keep order:false, stats:pseudo", - " │ └─TableRowIDScan(Probe) 10.00 cop[tikv] table:ta keep order:false, stats:pseudo", - " └─Selection(Probe) 8.00 root gt(Column#9, 900)", - " └─MaxOneRow 10.00 root ", - " └─StreamAgg 10.00 root funcs:max(test.tb.code)->Column#9", - " └─TopN 10.00 root test.tb.code:desc, offset:0, count:1", - " └─IndexLookUp 10.00 root ", - " ├─IndexRangeScan(Build) 100.00 cop[tikv] table:tb, index:idx_tb_id(id) range: decided by [eq(test.ta.id, test.tb.id)], keep order:false, stats:pseudo", - " └─TopN(Probe) 10.00 cop[tikv] test.tb.code:desc, offset:0, count:1", - " └─Selection 99.90 cop[tikv] not(isnull(test.tb.code))", - " └─TableRowIDScan 100.00 cop[tikv] table:tb keep order:false, stats:pseudo" - ], - "Result": null, - "Warning": null - }, - { - "SQL": "SELECT ta.NAME FROM ta WHERE EXISTS (select 1 from tb where ta.code = tb.code and tb.NAME LIKE 'chad9%') AND (select max(id) from tc where ta.name=tc.name and tc.name like 'chad99%') > 100 and (select max(id) from td where ta.id=td.id and td.name like 'chad999%') > 100", - "Plan": [ - "HashJoin 159.84 root inner join, equal:[eq(test.ta.id, test.td.id)]", - "├─Selection(Build) 159.84 root gt(Column#19, 100)", - "│ └─HashAgg 199.80 root group by:test.td.id, funcs:max(Column#32)->Column#19, funcs:firstrow(test.td.id)->test.td.id", - "│ └─TableReader 199.80 root data:HashAgg", - "│ └─HashAgg 199.80 cop[tikv] group by:test.td.id, funcs:max(test.td.id)->Column#32", - "│ └─Selection 249.75 cop[tikv] like(test.td.name, \"chad999%\", 92), not(isnull(test.td.id))", - "│ └─TableFullScan 10000.00 cop[tikv] table:td keep order:false, stats:pseudo", - "└─HashJoin(Probe) 200.00 root inner join, equal:[eq(test.ta.name, test.tc.name)]", - " ├─Selection(Build) 160.00 root gt(Column#14, 100)", - " │ └─HashAgg 200.00 root group by:test.tc.name, funcs:max(Column#24)->Column#14, funcs:firstrow(test.tc.name)->test.tc.name", - " │ └─TableReader 200.00 root data:HashAgg", - " │ └─HashAgg 200.00 cop[tikv] group by:test.tc.name, funcs:max(test.tc.id)->Column#24", - " │ └─Selection 250.00 cop[tikv] like(test.tc.name, \"chad99%\", 92), not(isnull(test.tc.name))", - " │ └─TableFullScan 10000.00 cop[tikv] table:tc keep order:false, stats:pseudo", - " └─HashJoin(Probe) 7976.02 root semi join, equal:[eq(test.ta.code, test.tb.code)]", - " ├─TableReader(Build) 249.75 root data:Selection", - " │ └─Selection 249.75 cop[tikv] like(test.tb.name, \"chad9%\", 92), not(isnull(test.tb.code))", - " │ └─TableFullScan 10000.00 cop[tikv] table:tb keep order:false, stats:pseudo", - " └─TableReader(Probe) 9970.03 root data:Selection", - " └─Selection 9970.03 cop[tikv] not(isnull(test.ta.code)), not(isnull(test.ta.id)), not(isnull(test.ta.name))", - " └─TableFullScan 10000.00 cop[tikv] table:ta keep order:false, stats:pseudo" - ], - "Result": null, - "Warning": null - }, - { - "SQL": "SELECT ta.NAME FROM ta WHERE EXISTS (select /*+ semi_join_rewrite() */ 1 from tb where ta.code = tb.code and tb.NAME LIKE 'chad9%') AND (select /*+ no_decorrelate() */ max(id) from tc where ta.name=tc.name and tc.name like 'chad99%') > 100 and (select /*+ no_decorrelate() */ max(id) from td where ta.id=td.id and td.name like 'chad999%') > 100", - "Plan": [ - "Projection 249.75 root test.ta.name", - "└─Apply 249.75 root CARTESIAN inner join", - " ├─Apply(Build) 249.75 root CARTESIAN inner join", - " │ ├─IndexHashJoin(Build) 249.75 root inner join, inner:IndexLookUp, outer key:test.tb.code, inner key:test.ta.code, equal cond:eq(test.tb.code, test.ta.code)", - " │ │ ├─HashAgg(Build) 199.80 root group by:test.tb.code, funcs:firstrow(test.tb.code)->test.tb.code", - " │ │ │ └─TableReader 249.75 root data:Selection", - " │ │ │ └─Selection 249.75 cop[tikv] like(test.tb.name, \"chad9%\", 92), not(isnull(test.tb.code))", - " │ │ │ └─TableFullScan 10000.00 cop[tikv] table:tb keep order:false, stats:pseudo", - " │ │ └─IndexLookUp(Probe) 249.75 root ", - " │ │ ├─Selection(Build) 249.75 cop[tikv] not(isnull(test.ta.code))", - " │ │ │ └─IndexRangeScan 250.00 cop[tikv] table:ta, index:idx_ta_code(code) range: decided by [eq(test.ta.code, test.tb.code)], keep order:false, stats:pseudo", - " │ │ └─TableRowIDScan(Probe) 249.75 cop[tikv] table:ta keep order:false, stats:pseudo", - " │ └─Selection(Probe) 199.80 root gt(Column#14, 100)", - " │ └─MaxOneRow 249.75 root ", - " │ └─StreamAgg 249.75 root funcs:max(test.tc.id)->Column#14", - " │ └─TopN 62.38 root test.tc.id:desc, offset:0, count:1", - " │ └─IndexLookUp 62.38 root ", - " │ ├─Selection(Build) 62.44 cop[tikv] eq(test.ta.name, test.tc.name)", - " │ │ └─IndexRangeScan 62437.50 cop[tikv] table:tc, index:idx_tc_name(name) range:[\"chad99\",\"chad9:\"), keep order:false, stats:pseudo", - " │ └─TopN(Probe) 62.38 cop[tikv] test.tc.id:desc, offset:0, count:1", - " │ └─Selection 62.38 cop[tikv] not(isnull(test.tc.id))", - " │ └─TableRowIDScan 62.44 cop[tikv] table:tc keep order:false, stats:pseudo", - " └─Selection(Probe) 199.80 root gt(Column#19, 100)", - " └─MaxOneRow 249.75 root ", - " └─StreamAgg 249.75 root funcs:max(test.td.id)->Column#19", - " └─Limit 62.38 root offset:0, count:1", - " └─Projection 62.38 root test.td.id, test.td.name", - " └─IndexLookUp 62.38 root ", - " ├─Selection(Build) 2495.00 cop[tikv] eq(test.ta.id, test.td.id)", - " │ └─IndexFullScan 2495002.50 cop[tikv] table:td, index:idx_tc_id(id) keep order:true, desc, stats:pseudo", - " └─Selection(Probe) 62.38 cop[tikv] like(test.td.name, \"chad999%\", 92)", - " └─TableRowIDScan 2495.00 cop[tikv] table:td keep order:false, stats:pseudo" - ], - "Result": null, - "Warning": null + "Warning": "[planner:1815]SEMI_JOIN_REWRITE() is inapplicable for LeftOuterSemiJoin." }, { - "SQL": "SELECT ta.NAME FROM ta WHERE EXISTS (select /*+ no_decorrelate() */ 1 from tb where ta.code = tb.code and tb.NAME LIKE 'chad9%') AND (select /*+ no_decorrelate() */ max(id) from tc where ta.name=tc.name and tc.name like 'chad99%') > 100 and (select /*+ no_decorrelate() */ max(id) from td where ta.id=td.id and td.name like 'chad999%') > 100", - "Plan": [ - "Projection 10000.00 root test.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", - " │ │ ├─TableReader(Build) 10000.00 root data:TableFullScan", - " │ │ │ └─TableFullScan 10000.00 cop[tikv] table:ta keep order:false, stats:pseudo", - " │ │ └─TableReader(Probe) 2500.00 root data:Selection", - " │ │ └─Selection 2500.00 cop[tikv] eq(test.ta.code, test.tb.code), like(test.tb.name, \"chad9%\", 92)", - " │ │ └─TableFullScan 100000000.00 cop[tikv] table:tb keep order:false, stats:pseudo", - " │ └─Selection(Probe) 8000.00 root gt(Column#14, 100)", - " │ └─MaxOneRow 10000.00 root ", - " │ └─StreamAgg 10000.00 root funcs:max(test.tc.id)->Column#14", - " │ └─TopN 2497.50 root test.tc.id:desc, offset:0, count:1", - " │ └─IndexLookUp 2497.50 root ", - " │ ├─Selection(Build) 2500.00 cop[tikv] eq(test.ta.name, test.tc.name)", - " │ │ └─IndexRangeScan 2500000.00 cop[tikv] table:tc, index:idx_tc_name(name) range:[\"chad99\",\"chad9:\"), keep order:false, stats:pseudo", - " │ └─TopN(Probe) 2497.50 cop[tikv] test.tc.id:desc, offset:0, count:1", - " │ └─Selection 2497.50 cop[tikv] not(isnull(test.tc.id))", - " │ └─TableRowIDScan 2500.00 cop[tikv] table:tc keep order:false, stats:pseudo", - " └─Selection(Probe) 8000.00 root gt(Column#19, 100)", - " └─MaxOneRow 10000.00 root ", - " └─StreamAgg 10000.00 root funcs:max(test.td.id)->Column#19", - " └─Limit 2497.50 root offset:0, count:1", - " └─Projection 2497.50 root test.td.id, test.td.name", - " └─IndexLookUp 2497.50 root ", - " ├─Selection(Build) 99900.00 cop[tikv] eq(test.ta.id, test.td.id)", - " │ └─IndexFullScan 99900000.00 cop[tikv] table:td, index:idx_tc_id(id) keep order:true, desc, stats:pseudo", - " └─Selection(Probe) 2497.50 cop[tikv] like(test.td.name, \"chad999%\", 92)", - " └─TableRowIDScan 99900.00 cop[tikv] table:td keep order:false, stats:pseudo" - ], - "Result": null, - "Warning": null + "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)", + "├─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", + "└─TableReader(Probe) 9990.00 root data:Selection", + " └─Selection 9990.00 cop[tikv] not(isnull(test.t.a))", + " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" + ], + "Warning": "[planner:1815]SEMI_JOIN_REWRITE() is inapplicable for SemiJoin with left conditions or other conditions." } ] }, { - "Name": "TestCountStarForTikv", + "Name": "TestHJBuildAndProbeHint4DynamicPartitionTable", "Cases": [ { - "SQL": "select count(*) from t", + "SQL": "select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", "Plan": [ - "StreamAgg 1.00 root funcs:count(Column#12)->Column#10", - "└─TableReader 1.00 root data:StreamAgg", - " └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#12", - " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" + "HashJoin 12475.01 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.t2.b)]", + "├─TableReader(Build) 9980.01 root partition:all data:Selection", + "│ └─Selection 9980.01 cop[tikv] not(isnull(test.t2.a)), not(isnull(test.t2.b))", + "│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", + "└─TableReader(Probe) 9980.01 root partition:all data:Selection", + " └─Selection 9980.01 cop[tikv] not(isnull(test.t1.a)), not(isnull(test.t1.b))", + " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" ], - "Warning": null - }, - { - "SQL": "select count(1), count(3.1415), count(0), count(null) from t -- shouldn't be rewritten", - "Plan": [ - "StreamAgg 1.00 root funcs:count(Column#18)->Column#10, funcs:count(Column#19)->Column#11, funcs:count(Column#20)->Column#12, funcs:count(Column#21)->Column#13", - "└─TableReader 1.00 root data:StreamAgg", - " └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#18, funcs:count(3.1415)->Column#19, funcs:count(0)->Column#20, funcs:count(NULL)->Column#21", - " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" + "Result": [ + "1 1" ], "Warning": null }, { - "SQL": "select count(*) from t where a=1", + "SQL": "select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", "Plan": [ - "StreamAgg 1.00 root funcs:count(Column#12)->Column#10", - "└─TableReader 1.00 root data:StreamAgg", - " └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#12", - " └─Selection 10.00 cop[tikv] eq(test.t.a, 1)", - " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" + "HashJoin 12475.01 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.t2.b)]", + "├─TableReader(Build) 9980.01 root partition:all data:Selection", + "│ └─Selection 9980.01 cop[tikv] not(isnull(test.t1.a)), not(isnull(test.t1.b))", + "│ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", + "└─TableReader(Probe) 9980.01 root partition:all data:Selection", + " └─Selection 9980.01 cop[tikv] not(isnull(test.t2.a)), not(isnull(test.t2.b))", + " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" ], - "Warning": null - }, - { - "SQL": "select count(*) from t_pick_row_id", - "Plan": [ - "StreamAgg 1.00 root funcs:count(Column#5)->Column#3", - "└─TableReader 1.00 root data:StreamAgg", - " └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#5", - " └─TableFullScan 10000.00 cop[tikv] table:t_pick_row_id keep order:false, stats:pseudo" + "Result": [ + "1 1" ], "Warning": null }, { - "SQL": "select t.b, t.c from (select count(*) as c from t) a, t where a.c=t.a -- shouldn't be rewritten", + "SQL": "select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", "Plan": [ - "HashJoin 1.25 root inner join, equal:[eq(test.t.a, Column#10)]", - "├─StreamAgg(Build) 1.00 root funcs:count(Column#21)->Column#10", - "│ └─TableReader 1.00 root data:StreamAgg", - "│ └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#21", - "│ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo", - "└─TableReader(Probe) 10000.00 root data:TableFullScan", - " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" + "HashJoin 12475.01 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.t2.b)]", + "├─TableReader(Build) 9980.01 root partition:all data:Selection", + "│ └─Selection 9980.01 cop[tikv] not(isnull(test.t1.a)), not(isnull(test.t1.b))", + "│ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", + "└─TableReader(Probe) 9980.01 root partition:all data:Selection", + " └─Selection 9980.01 cop[tikv] not(isnull(test.t2.a)), not(isnull(test.t2.b))", + " └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo" ], - "Warning": null - }, - { - "SQL": "select * from t outTable where outTable.a > (select count(*) from t inn where inn.a = outTable.b) -- shouldn't be rewritten", - "Plan": [ - "Projection 10000.00 root test.t.a, test.t.b, test.t.c, test.t.d, test.t.e, test.t.f, test.t.g, test.t.h", - "└─Apply 10000.00 root CARTESIAN inner join, other cond:gt(test.t.a, Column#19)", - " ├─TableReader(Build) 10000.00 root data:TableFullScan", - " │ └─TableFullScan 10000.00 cop[tikv] table:outTable keep order:false, stats:pseudo", - " └─StreamAgg(Probe) 10000.00 root funcs:count(Column#21)->Column#19", - " └─TableReader 10000.00 root data:StreamAgg", - " └─StreamAgg 10000.00 cop[tikv] funcs:count(1)->Column#21", - " └─Selection 80000000.00 cop[tikv] eq(cast(test.t.a, double BINARY), cast(test.t.b, double BINARY))", - " └─TableFullScan 100000000.00 cop[tikv] table:inn keep order:false, stats:pseudo" + "Result": [ + "1 1" ], "Warning": null }, { - "SQL": "select count(*) from t t1, t t2 where t1.a=t2.e -- shouldn't be rewritten", + "SQL": "select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", "Plan": [ - "HashAgg 1.00 root funcs:count(1)->Column#19", - "└─HashJoin 12500.00 root inner join, equal:[eq(test.t.a, test.t.e)]", - " ├─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", + "HashJoin 12475.01 root inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.t2.b)]", + "├─TableReader(Build) 9980.01 root partition:all data:Selection", + "│ └─Selection 9980.01 cop[tikv] not(isnull(test.t2.a)), not(isnull(test.t2.b))", + "│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", + "└─TableReader(Probe) 9980.01 root partition:all data:Selection", + " └─Selection 9980.01 cop[tikv] not(isnull(test.t1.a)), not(isnull(test.t1.b))", " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" ], + "Result": [ + "1 1" + ], "Warning": null - }, + } + ] + }, + { + "Name": "TestHJBuildAndProbeHint4TiFlash", + "Cases": [ { - "SQL": "select count(distinct 1) from t -- shouldn't be rewritten", + "SQL": "select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", "Plan": [ - "StreamAgg 1.00 root funcs:count(distinct 1)->Column#10", - "└─TableReader 10000.00 root data:TableFullScan", - " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" + "TableReader 12500.00 root MppVersion: 2, data:ExchangeSender", + "└─ExchangeSender 12500.00 mpp[tiflash] ExchangeType: PassThrough", + " └─Projection 12500.00 mpp[tiflash] test.t1.a, test.t2.a", + " └─HashJoin 12500.00 mpp[tiflash] inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.t2.b)]", + " ├─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", + " └─TableFullScan(Probe) 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" ], "Warning": null }, { - "SQL": "select count(1), count(a), count(b) from t -- shouldn't be rewritten", + "SQL": "select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", "Plan": [ - "StreamAgg 1.00 root funcs:count(Column#16)->Column#10, funcs:count(Column#17)->Column#11, funcs:count(Column#18)->Column#12", - "└─TableReader 1.00 root data:StreamAgg", - " └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#16, funcs:count(test.t.a)->Column#17, funcs:count(test.t.b)->Column#18", - " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" + "TableReader 12500.00 root MppVersion: 2, data:ExchangeSender", + "└─ExchangeSender 12500.00 mpp[tiflash] ExchangeType: PassThrough", + " └─Projection 12500.00 mpp[tiflash] test.t1.a, test.t2.a", + " └─HashJoin 12500.00 mpp[tiflash] inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.t2.b)]", + " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", + " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", + " │ └─TableFullScan 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo", + " └─TableFullScan(Probe) 10000.00 mpp[tiflash] table:t2 keep order:false, stats:pseudo" ], "Warning": null }, { - "SQL": "select a, count(*) from t group by a -- shouldn't be rewritten", + "SQL": "select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", "Plan": [ - "Projection 8000.00 root test.t.a, Column#10", - "└─HashAgg 8000.00 root group by:test.t.a, funcs:count(1)->Column#10, funcs:firstrow(test.t.a)->test.t.a", - " └─TableReader 10000.00 root data:TableFullScan", - " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" + "TableReader 12500.00 root MppVersion: 2, data:ExchangeSender", + "└─ExchangeSender 12500.00 mpp[tiflash] ExchangeType: PassThrough", + " └─Projection 12500.00 mpp[tiflash] test.t1.a, test.t2.a", + " └─HashJoin 12500.00 mpp[tiflash] inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.t2.b)]", + " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", + " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", + " │ └─TableFullScan 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo", + " └─TableFullScan(Probe) 10000.00 mpp[tiflash] table:t2 keep order:false, stats:pseudo" ], "Warning": null }, { - "SQL": "select sum(a) from t -- sum shouldn't be rewritten", + "SQL": "select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b", "Plan": [ - "StreamAgg 1.00 root funcs:sum(Column#12)->Column#10", - "└─TableReader 1.00 root data:StreamAgg", - " └─StreamAgg 1.00 cop[tikv] funcs:sum(test.t.a)->Column#12", - " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" + "TableReader 12500.00 root MppVersion: 2, data:ExchangeSender", + "└─ExchangeSender 12500.00 mpp[tiflash] ExchangeType: PassThrough", + " └─Projection 12500.00 mpp[tiflash] test.t1.a, test.t2.a", + " └─HashJoin 12500.00 mpp[tiflash] inner join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.t2.b)]", + " ├─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", + " └─TableFullScan(Probe) 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" ], "Warning": null } @@ -7663,338 +3621,5 @@ "Warning": null } ] - }, - { - "Name": "TestIndexMergeOrderPushDown", - "Cases": [ - { - "SQL": "select * from t where a = 1 or b = 1 order by c limit 2", - "Plan": [ - "Projection 2.00 root test.t.a, test.t.b, test.t.c", - "└─IndexMerge 2.00 root type: union, limit embedded(offset:0, count:2)", - " ├─Limit(Build) 1.00 cop[tikv] offset:0, count:2", - " │ └─IndexRangeScan 1.00 cop[tikv] table:t, index:idx(a, c) range:[1,1], keep order:true, stats:pseudo", - " ├─Limit(Build) 1.00 cop[tikv] offset:0, count:2", - " │ └─IndexRangeScan 1.00 cop[tikv] table:t, index:idx2(b, c) range:[1,1], keep order:true, stats:pseudo", - " └─TableRowIDScan(Probe) 2.00 cop[tikv] table:t keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "select * from t where a = 1 or b in (1, 2, 3) order by c limit 2", - "Plan": [ - "TopN 2.00 root test.t.c, offset:0, count:2", - "└─IndexMerge 2.00 root type: union", - " ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t, index:idx(a, c) range:[1,1], keep order:false, stats:pseudo", - " ├─IndexRangeScan(Build) 30.00 cop[tikv] table:t, index:idx2(b, c) range:[1,1], [2,2], [3,3], keep order:false, stats:pseudo", - " └─TopN(Probe) 2.00 cop[tikv] test.t.c, offset:0, count:2", - " └─TableRowIDScan 39.97 cop[tikv] table:t keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "select * from t where a in (1, 2, 3) or b = 1 order by c limit 2", - "Plan": [ - "TopN 2.00 root test.t.c, offset:0, count:2", - "└─IndexMerge 2.00 root type: union", - " ├─IndexRangeScan(Build) 30.00 cop[tikv] table:t, index:idx(a, c) range:[1,1], [2,2], [3,3], keep order:false, stats:pseudo", - " ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t, index:idx2(b, c) range:[1,1], keep order:false, stats:pseudo", - " └─TopN(Probe) 2.00 cop[tikv] test.t.c, offset:0, count:2", - " └─TableRowIDScan 39.97 cop[tikv] table:t keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "select * from t where a in (1, 2, 3) or b in (1, 2, 3) order by c limit 2", - "Plan": [ - "TopN 2.00 root test.t.c, offset:0, count:2", - "└─IndexMerge 2.00 root type: union", - " ├─IndexRangeScan(Build) 30.00 cop[tikv] table:t, index:idx(a, c) range:[1,1], [2,2], [3,3], keep order:false, stats:pseudo", - " ├─IndexRangeScan(Build) 30.00 cop[tikv] table:t, index:idx2(b, c) range:[1,1], [2,2], [3,3], keep order:false, stats:pseudo", - " └─TopN(Probe) 2.00 cop[tikv] test.t.c, offset:0, count:2", - " └─TableRowIDScan 59.91 cop[tikv] table:t keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "select * from t where (a = 1 and c = 2) or (b = 1) order by c limit 2", - "Plan": [ - "Projection 2.00 root test.t.a, test.t.b, test.t.c", - "└─IndexMerge 2.00 root type: union, limit embedded(offset:0, count:2)", - " ├─Limit(Build) 0.02 cop[tikv] offset:0, count:2", - " │ └─IndexRangeScan 0.02 cop[tikv] table:t, index:idx(a, c) range:[1 2,1 2], keep order:true, stats:pseudo", - " ├─Limit(Build) 1.98 cop[tikv] offset:0, count:2", - " │ └─IndexRangeScan 1.98 cop[tikv] table:t, index:idx2(b, c) range:[1,1], keep order:true, stats:pseudo", - " └─TableRowIDScan(Probe) 2.00 cop[tikv] table:t keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "select * from t where (a = 1 and c = 2) or b in (1, 2, 3) order by c limit 2", - "Plan": [ - "TopN 2.00 root test.t.c, offset:0, count:2", - "└─IndexMerge 2.00 root type: union", - " ├─IndexRangeScan(Build) 0.10 cop[tikv] table:t, index:idx(a, c) range:[1 2,1 2], keep order:false, stats:pseudo", - " ├─IndexRangeScan(Build) 30.00 cop[tikv] table:t, index:idx2(b, c) range:[1,1], [2,2], [3,3], keep order:false, stats:pseudo", - " └─TopN(Probe) 2.00 cop[tikv] test.t.c, offset:0, count:2", - " └─TableRowIDScan 30.10 cop[tikv] table:t keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "select * from t where (a = 1 and c = 2) or (b in (1, 2, 3) and c = 3) order by c limit 2", - "Plan": [ - "TopN 0.40 root test.t.c, offset:0, count:2", - "└─IndexMerge 0.40 root type: union", - " ├─IndexRangeScan(Build) 0.10 cop[tikv] table:t, index:idx(a, c) range:[1 2,1 2], keep order:false, stats:pseudo", - " ├─IndexRangeScan(Build) 0.30 cop[tikv] table:t, index:idx2(b, c) range:[1 3,1 3], [2 3,2 3], [3 3,3 3], keep order:false, stats:pseudo", - " └─TopN(Probe) 0.40 cop[tikv] test.t.c, offset:0, count:2", - " └─TableRowIDScan 0.40 cop[tikv] table:t keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "select * from t where (a = 1 or b = 2) and c = 3 order by c limit 2", - "Plan": [ - "TopN 0.02 root test.t.c, offset:0, count:2", - "└─IndexMerge 0.02 root type: union", - " ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t, index:idx(a, c) range:[1,1], keep order:false, stats:pseudo", - " ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t, index:idx2(b, c) range:[2,2], keep order:false, stats:pseudo", - " └─TopN(Probe) 0.02 cop[tikv] test.t.c, offset:0, count:2", - " └─Selection 0.02 cop[tikv] eq(test.t.c, 3)", - " └─TableRowIDScan 19.99 cop[tikv] table:t keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "select * from t where (a = 1 or b = 2) and c in (1, 2, 3) order by c limit 2", - "Plan": [ - "TopN 0.06 root test.t.c, offset:0, count:2", - "└─IndexMerge 0.06 root type: union", - " ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t, index:idx(a, c) range:[1,1], keep order:false, stats:pseudo", - " ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t, index:idx2(b, c) range:[2,2], keep order:false, stats:pseudo", - " └─TopN(Probe) 0.06 cop[tikv] test.t.c, offset:0, count:2", - " └─Selection 0.06 cop[tikv] in(test.t.c, 1, 2, 3)", - " └─TableRowIDScan 19.99 cop[tikv] table:t keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "select * from t where (a = 1 or b = 2) and c in (1, 2, 3) order by b limit 2", - "Plan": [ - "TopN 0.06 root test.t.b, offset:0, count:2", - "└─IndexMerge 0.06 root type: union", - " ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t, index:idx(a, c) range:[1,1], keep order:false, stats:pseudo", - " ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t, index:idx2(b, c) range:[2,2], keep order:false, stats:pseudo", - " └─TopN(Probe) 0.06 cop[tikv] test.t.b, offset:0, count:2", - " └─Selection 0.06 cop[tikv] in(test.t.c, 1, 2, 3)", - " └─TableRowIDScan 19.99 cop[tikv] table:t keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "select * from tcommon where a = 1 or b = 1 order by c limit 2", - "Plan": [ - "IndexMerge 2.00 root type: union, limit embedded(offset:0, count:2)", - "├─Limit(Build) 1.00 cop[tikv] offset:0, count:2", - "│ └─TableRangeScan 1.00 cop[tikv] table:tcommon range:[1,1], keep order:true, stats:pseudo", - "├─Limit(Build) 1.00 cop[tikv] offset:0, count:2", - "│ └─IndexRangeScan 1.00 cop[tikv] table:tcommon, index:idx2(b, c) range:[1,1], keep order:true, stats:pseudo", - "└─TableRowIDScan(Probe) 2.00 cop[tikv] table:tcommon keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "select * from tcommon where (a = 1 and c = 2) or (b = 1) order by c limit 2", - "Plan": [ - "IndexMerge 2.00 root type: union, limit embedded(offset:0, count:2)", - "├─Limit(Build) 0.18 cop[tikv] offset:0, count:2", - "│ └─TableRangeScan 0.18 cop[tikv] table:tcommon range:[1 2,1 2], keep order:true, stats:pseudo", - "├─Limit(Build) 1.82 cop[tikv] offset:0, count:2", - "│ └─IndexRangeScan 1.82 cop[tikv] table:tcommon, index:idx2(b, c) range:[1,1], keep order:true, stats:pseudo", - "└─TableRowIDScan(Probe) 2.00 cop[tikv] table:tcommon keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "select * from thash use index(idx_ac, idx_bc) where a = 1 or b = 1 order by c limit 2", - "Plan": [ - "TopN 2.00 root test.thash.c, offset:0, count:2", - "└─PartitionUnion 8.00 root ", - " ├─Projection 2.00 root test.thash.a, test.thash.b, test.thash.c", - " │ └─IndexMerge 2.00 root type: union, limit embedded(offset:0, count:2)", - " │ ├─Limit(Build) 1.00 cop[tikv] offset:0, count:2", - " │ │ └─IndexRangeScan 1.00 cop[tikv] table:thash, partition:p0, index:idx_ac(a, c) range:[1,1], keep order:true, stats:pseudo", - " │ ├─Limit(Build) 1.00 cop[tikv] offset:0, count:2", - " │ │ └─IndexRangeScan 1.00 cop[tikv] table:thash, partition:p0, index:idx_bc(b, c) range:[1,1], keep order:true, stats:pseudo", - " │ └─TableRowIDScan(Probe) 2.00 cop[tikv] table:thash, partition:p0 keep order:false, stats:pseudo", - " ├─Projection 2.00 root test.thash.a, test.thash.b, test.thash.c", - " │ └─IndexMerge 2.00 root type: union, limit embedded(offset:0, count:2)", - " │ ├─Limit(Build) 1.00 cop[tikv] offset:0, count:2", - " │ │ └─IndexRangeScan 1.00 cop[tikv] table:thash, partition:p1, index:idx_ac(a, c) range:[1,1], keep order:true, stats:pseudo", - " │ ├─Limit(Build) 1.00 cop[tikv] offset:0, count:2", - " │ │ └─IndexRangeScan 1.00 cop[tikv] table:thash, partition:p1, index:idx_bc(b, c) range:[1,1], keep order:true, stats:pseudo", - " │ └─TableRowIDScan(Probe) 2.00 cop[tikv] table:thash, partition:p1 keep order:false, stats:pseudo", - " ├─Projection 2.00 root test.thash.a, test.thash.b, test.thash.c", - " │ └─IndexMerge 2.00 root type: union, limit embedded(offset:0, count:2)", - " │ ├─Limit(Build) 1.00 cop[tikv] offset:0, count:2", - " │ │ └─IndexRangeScan 1.00 cop[tikv] table:thash, partition:p2, index:idx_ac(a, c) range:[1,1], keep order:true, stats:pseudo", - " │ ├─Limit(Build) 1.00 cop[tikv] offset:0, count:2", - " │ │ └─IndexRangeScan 1.00 cop[tikv] table:thash, partition:p2, index:idx_bc(b, c) range:[1,1], keep order:true, stats:pseudo", - " │ └─TableRowIDScan(Probe) 2.00 cop[tikv] table:thash, partition:p2 keep order:false, stats:pseudo", - " └─Projection 2.00 root test.thash.a, test.thash.b, test.thash.c", - " └─IndexMerge 2.00 root type: union, limit embedded(offset:0, count:2)", - " ├─Limit(Build) 1.00 cop[tikv] offset:0, count:2", - " │ └─IndexRangeScan 1.00 cop[tikv] table:thash, partition:p3, index:idx_ac(a, c) range:[1,1], keep order:true, stats:pseudo", - " ├─Limit(Build) 1.00 cop[tikv] offset:0, count:2", - " │ └─IndexRangeScan 1.00 cop[tikv] table:thash, partition:p3, index:idx_bc(b, c) range:[1,1], keep order:true, stats:pseudo", - " └─TableRowIDScan(Probe) 2.00 cop[tikv] table:thash, partition:p3 keep order:false, stats:pseudo" - ], - "Warning": [ - "Warning 1105 disable dynamic pruning due to thash has no global stats" - ] - } - ] - }, - { - "Name": "TestIndexMergeSinkLimit", - "Cases": [ - { - "SQL": "explain format = 'brief' select /*+ use_index_merge(t2, a, b) */ * from t2 where a=1 or b=1 and c=1 limit 2; -- test sink limit to table side of union index merge case, because of table side selection", - "Plan": [ - "Limit 2.00 root offset:0, count:2", - "└─IndexMerge 0.00 root type: union", - " ├─IndexRangeScan(Build) 2.00 cop[tikv] table:t2, index:a(a) range:[1,1], keep order:false, stats:pseudo", - " ├─IndexRangeScan(Build) 2.00 cop[tikv] table:t2, index:b(b) range:[1,1], keep order:false, stats:pseudo", - " └─Limit(Probe) 0.00 cop[tikv] offset:0, count:2", - " └─Selection 0.00 cop[tikv] or(eq(test.t2.a, 1), and(eq(test.t2.b, 1), eq(test.t2.c, 1)))", - " └─TableRowIDScan 3.99 cop[tikv] table:t2 keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "explain format = 'brief' select /*+ use_index_merge(t2, a, b) */ * from t2 where a=1 and b=1 and c=1 limit 2; -- test sink limit to table side of intersection index merge case, because of table side selection", - "Plan": [ - "Limit 0.00 root offset:0, count:2", - "└─IndexMerge 0.01 root type: intersection", - " ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t2, index:a(a) range:[1,1], keep order:false, stats:pseudo", - " ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t2, index:b(b) range:[1,1], keep order:false, stats:pseudo", - " └─Limit(Probe) 0.01 cop[tikv] offset:0, count:2", - " └─Selection 0.01 cop[tikv] eq(test.t2.c, 1)", - " └─TableRowIDScan 0.01 cop[tikv] table:t2 keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "select /*+ use_index_merge(t2, a, b) */ * from t2 where a=1 and b=1 and c=1 limit 2", - "Plan": null, - "Warning": null - }, - { - "SQL": "explain format = 'brief' select /*+ use_index_merge(t2, a, b) */ * from t2 where a=1 or b=1 limit 2; -- test sink limit to index side of union index merge case, because of table side is pure table scan", - "Plan": [ - "IndexMerge 2.00 root type: union, limit embedded(offset:0, count:2)", - "├─Limit(Build) 1.00 cop[tikv] offset:0, count:2", - "│ └─IndexRangeScan 1.00 cop[tikv] table:t2, index:a(a) range:[1,1], keep order:false, stats:pseudo", - "├─Limit(Build) 1.00 cop[tikv] offset:0, count:2", - "│ └─IndexRangeScan 1.00 cop[tikv] table:t2, index:b(b) range:[1,1], keep order:false, stats:pseudo", - "└─TableRowIDScan(Probe) 2.00 cop[tikv] table:t2 keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "explain format = 'brief' select /*+ use_index_merge(t2, a, b) */ * from t2 where a=1 and b=1 limit 2; -- test sink limit to table side of intersection index merge case, because of intersection case special", - "Plan": [ - "IndexMerge 0.01 root type: intersection, limit embedded(offset:0, count:2)", - "├─IndexRangeScan(Build) 10.00 cop[tikv] table:t2, index:a(a) range:[1,1], keep order:false, stats:pseudo", - "├─IndexRangeScan(Build) 10.00 cop[tikv] table:t2, index:b(b) range:[1,1], keep order:false, stats:pseudo", - "└─TableRowIDScan(Probe) 0.01 cop[tikv] table:t2 keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "select /*+ use_index_merge(t2, a, b) */ * from t2 where a=1 and b=1 limit 2", - "Plan": null, - "Warning": null - }, - { - "SQL": "explain format = 'brief' select /*+ use_index(t, kj) */ * from t where (1 member of (j)) limit 1; -- index merge union case, sink limit into index side and embed another one inside index merge reader", - "Plan": [ - "IndexMerge 0.00 root type: union, limit embedded(offset:0, count:1)", - "├─Limit(Build) 0.00 cop[tikv] offset:0, count:1", - "│ └─IndexRangeScan 0.00 cop[tikv] table:t, index:kj(cast(`j` as signed array)) range:[1,1], keep order:false, stats:pseudo", - "└─TableRowIDScan(Probe) 0.00 cop[tikv] table:t keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "explain format = 'brief' select /*+ use_index(t, kj) */ * from t where json_contains(j, '[1, 2, 3]') limit 1; -- index merge intersection case, embedding limit into index merge reader", - "Plan": [ - "IndexMerge 0.00 root type: intersection, limit embedded(offset:0, count:1)", - "├─IndexRangeScan(Build) 0.00 cop[tikv] table:t, index:kj(cast(`j` as signed array)) range:[1,1], keep order:false, stats:pseudo", - "├─IndexRangeScan(Build) 0.00 cop[tikv] table:t, index:kj(cast(`j` as signed array)) range:[2,2], keep order:false, stats:pseudo", - "├─IndexRangeScan(Build) 0.00 cop[tikv] table:t, index:kj(cast(`j` as signed array)) range:[3,3], keep order:false, stats:pseudo", - "└─TableRowIDScan(Probe) 0.00 cop[tikv] table:t keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "explain format = 'brief' select /*+ use_index(t, kj) */ * from t where json_overlaps(j, '[1, 2, 3]') limit 1; -- index merge union case, sink limit above selection above index merge reader, because json_overlaps can't be pushed down", - "Plan": [ - "Limit 1.00 root offset:0, count:1", - "└─Selection 1.00 root json_overlaps(test.t.j, cast(\"[1, 2, 3]\", json BINARY))", - " └─IndexMerge 0.00 root type: union", - " ├─IndexRangeScan(Build) 0.00 cop[tikv] table:t, index:kj(cast(`j` as signed array)) range:[1,1], keep order:false, stats:pseudo", - " ├─IndexRangeScan(Build) 0.00 cop[tikv] table:t, index:kj(cast(`j` as signed array)) range:[2,2], keep order:false, stats:pseudo", - " ├─IndexRangeScan(Build) 0.00 cop[tikv] table:t, index:kj(cast(`j` as signed array)) range:[3,3], keep order:false, stats:pseudo", - " └─TableRowIDScan(Probe) 0.00 cop[tikv] table:t keep order:false, stats:pseudo" - ], - "Warning": [ - "Warning 1105 Scalar function 'json_overlaps'(signature: Unspecified, return type: bigint(20)) is not supported to push down to storage layer now." - ] - }, - { - "SQL": "explain format = 'brief' select /*+ use_index(t, kj) */ * from t where (1 member of (j) and a=1 ) limit 1; -- index merge union case, sink limit to table side, because selection exists on table side", - "Plan": [ - "Limit 1.00 root offset:0, count:1", - "└─IndexMerge 0.00 root type: union", - " ├─IndexRangeScan(Build) 1.25 cop[tikv] table:t, index:kj(cast(`j` as signed array)) range:[1,1], keep order:false, stats:pseudo", - " └─Limit(Probe) 0.00 cop[tikv] offset:0, count:1", - " └─Selection 0.00 cop[tikv] eq(test.t.a, 1)", - " └─TableRowIDScan 1.25 cop[tikv] table:t keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "explain format = 'brief' select /*+ use_index(t, kj) */ * from t where json_contains(j, '[1, 2, 3]') and a=1 limit 1; -- index merge intersection case, sink limit to table side because selection exists on table side", - "Plan": [ - "Limit 1.00 root offset:0, count:1", - "└─IndexMerge 0.00 root type: intersection", - " ├─IndexRangeScan(Build) 1.25 cop[tikv] table:t, index:kj(cast(`j` as signed array)) range:[1,1], keep order:false, stats:pseudo", - " ├─IndexRangeScan(Build) 1.25 cop[tikv] table:t, index:kj(cast(`j` as signed array)) range:[2,2], keep order:false, stats:pseudo", - " ├─IndexRangeScan(Build) 1.25 cop[tikv] table:t, index:kj(cast(`j` as signed array)) range:[3,3], keep order:false, stats:pseudo", - " └─Limit(Probe) 0.00 cop[tikv] offset:0, count:1", - " └─Selection 0.00 cop[tikv] eq(test.t.a, 1)", - " └─TableRowIDScan 1.25 cop[tikv] table:t keep order:false, stats:pseudo" - ], - "Warning": null - }, - { - "SQL": "explain format = 'brief' select /*+ use_index(t, kj) */ * from t where json_overlaps(j, '[1, 2, 3]') and a=1 limit 1; -- index merge union case, sink limit above selection above index merge reader, because json_overlaps can't be pushed down", - "Plan": [ - "Limit 1.00 root offset:0, count:1", - "└─Selection 1.00 root json_overlaps(test.t.j, cast(\"[1, 2, 3]\", json BINARY))", - " └─IndexMerge 1.00 root type: union", - " ├─IndexRangeScan(Build) 1.00 cop[tikv] table:t, index:kj(cast(`j` as signed array)) range:[1,1], keep order:false, stats:pseudo", - " ├─IndexRangeScan(Build) 1.00 cop[tikv] table:t, index:kj(cast(`j` as signed array)) range:[2,2], keep order:false, stats:pseudo", - " ├─IndexRangeScan(Build) 1.00 cop[tikv] table:t, index:kj(cast(`j` as signed array)) range:[3,3], keep order:false, stats:pseudo", - " └─Selection(Probe) 1.00 cop[tikv] eq(test.t.a, 1)", - " └─TableRowIDScan 1.00 cop[tikv] table:t keep order:false, stats:pseudo" - ], - "Warning": [ - "Warning 1105 Scalar function 'json_overlaps'(signature: Unspecified, return type: bigint(20)) is not supported to push down to storage layer now." - ] - } - ] } ] diff --git a/pkg/planner/core/casetest/planstats/BUILD.bazel b/pkg/planner/core/casetest/planstats/BUILD.bazel index c789c86065f71..dab3681d43653 100644 --- a/pkg/planner/core/casetest/planstats/BUILD.bazel +++ b/pkg/planner/core/casetest/planstats/BUILD.bazel @@ -21,7 +21,7 @@ go_test( "//pkg/sessionctx", "//pkg/sessionctx/stmtctx", "//pkg/statistics", - "//pkg/statistics/handle/util", + "//pkg/statistics/handle/types", "//pkg/table", "//pkg/testkit", "//pkg/testkit/testdata", diff --git a/pkg/planner/core/casetest/planstats/plan_stats_test.go b/pkg/planner/core/casetest/planstats/plan_stats_test.go index f3ca791622b8e..87e1c488d21b6 100644 --- a/pkg/planner/core/casetest/planstats/plan_stats_test.go +++ b/pkg/planner/core/casetest/planstats/plan_stats_test.go @@ -32,7 +32,7 @@ import ( "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/statistics" - utilstats "github.com/pingcap/tidb/pkg/statistics/handle/util" + "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" @@ -268,7 +268,7 @@ func TestPlanStatsLoadTimeout(t *testing.T) { neededColumn := model.TableItemID{TableID: tableInfo.ID, ID: tableInfo.Columns[0].ID, IsIndex: false} resultCh := make(chan stmtctx.StatsLoadResult, 1) timeout := time.Duration(1<<63 - 1) - task := &utilstats.NeededItemTask{ + task := &types.NeededItemTask{ TableItemID: neededColumn, ResultCh: resultCh, ToTimeout: time.Now().Local().Add(timeout), diff --git a/pkg/planner/core/casetest/testdata/integration_suite_in.json b/pkg/planner/core/casetest/testdata/integration_suite_in.json index 09cde7a829609..49896add29e01 100644 --- a/pkg/planner/core/casetest/testdata/integration_suite_in.json +++ b/pkg/planner/core/casetest/testdata/integration_suite_in.json @@ -1,42 +1,4 @@ [ - { - "name": "TestPartitionPruningForInExpr", - "cases": [ - "explain format = 'brief' select * from t where a in (1, 2,'11')", - "explain format = 'brief' select * from t where a in (17, null)", - "explain format = 'brief' select * from t where a in (16, 'abc')", - "explain format = 'brief' select * from t where a in (15, 0.12, 3.47)", - "explain format = 'brief' select * from t where a in (0.12, 3.47)", - "explain format = 'brief' select * from t where a in (14, floor(3.47))", - "explain format = 'brief' select * from t where b in (3, 4)" - ] - }, - { - "name": "TestPartitionExplain", - "cases": [ - // Table reader - "select * from pt where c > 10", - "select * from pt where c > 8", - "select * from pt where c < 2 or c >= 9", - // Index reader - "select c from pt", - "select c from pt where c > 10", - "select c from pt where c > 8", - "select c from pt where c < 2 or c >= 9", - // Index Lookup - "select /*+ use_index(pt, i_id) */ * from pt", - "select /*+ use_index(pt, i_id) */ * from pt where id < 4 and c > 10", - "select /*+ use_index(pt, i_id) */ * from pt where id < 10 and c > 8", - "select /*+ use_index(pt, i_id) */ * from pt where id < 10 and c < 2 or c >= 9", - // Partition selection - "select * from pt partition (p0) where c > 8", - "select c from pt partition (p0, p2) where c > 8", - "select /*+ use_index(pt, i_id) */ * from pt partition (p1, p2) where c < 3 and id = 5", - // Index Merge - "select * from pt where id = 4 or c < 7", - "select * from pt where id > 4 or c = 7" - ] - }, { "name": "TestIssue31240", "cases": [ diff --git a/pkg/planner/core/casetest/testdata/integration_suite_out.json b/pkg/planner/core/casetest/testdata/integration_suite_out.json index 7df363a498e8b..d3118b0eb5195 100644 --- a/pkg/planner/core/casetest/testdata/integration_suite_out.json +++ b/pkg/planner/core/casetest/testdata/integration_suite_out.json @@ -1,197 +1,4 @@ [ - { - "Name": "TestPartitionPruningForInExpr", - "Cases": [ - { - "SQL": "explain format = 'brief' select * from t where a in (1, 2,'11')", - "Plan": [ - "TableReader 30.00 root partition:p0,p2 data:Selection", - "└─Selection 30.00 cop[tikv] in(test.t.a, 1, 2, 11)", - " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" - ] - }, - { - "SQL": "explain format = 'brief' select * from t where a in (17, null)", - "Plan": [ - "TableReader 10.00 root partition:p0,p2 data:Selection", - "└─Selection 10.00 cop[tikv] in(test.t.a, 17, NULL)", - " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" - ] - }, - { - "SQL": "explain format = 'brief' select * from t where a in (16, 'abc')", - "Plan": [ - "TableReader 20.00 root partition:p0,p2 data:Selection", - "└─Selection 20.00 cop[tikv] in(test.t.a, 16, 0)", - " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" - ] - }, - { - "SQL": "explain format = 'brief' select * from t where a in (15, 0.12, 3.47)", - "Plan": [ - "TableReader 10.00 root partition:p2 data:Selection", - "└─Selection 10.00 cop[tikv] or(eq(test.t.a, 15), 0)", - " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" - ] - }, - { - "SQL": "explain format = 'brief' select * from t where a in (0.12, 3.47)", - "Plan": [ - "TableDual 0.00 root rows:0" - ] - }, - { - "SQL": "explain format = 'brief' select * from t where a in (14, floor(3.47))", - "Plan": [ - "TableReader 20.00 root partition:p0,p2 data:Selection", - "└─Selection 20.00 cop[tikv] in(test.t.a, 14, 3)", - " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" - ] - }, - { - "SQL": "explain format = 'brief' select * from t where b in (3, 4)", - "Plan": [ - "TableReader 20.00 root partition:all data:Selection", - "└─Selection 20.00 cop[tikv] in(test.t.b, 3, 4)", - " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo" - ] - } - ] - }, - { - "Name": "TestPartitionExplain", - "Cases": [ - { - "SQL": "select * from pt where c > 10", - "Plan": [ - "TableReader_7 3333.33 root partition:dual data:Selection_6", - "└─Selection_6 3333.33 cop[tikv] gt(test.pt.c, 10)", - " └─TableFullScan_5 10000.00 cop[tikv] table:pt keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select * from pt where c > 8", - "Plan": [ - "TableReader_7 3333.33 root partition:p2 data:Selection_6", - "└─Selection_6 3333.33 cop[tikv] gt(test.pt.c, 8)", - " └─TableFullScan_5 10000.00 cop[tikv] table:pt keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select * from pt where c < 2 or c >= 9", - "Plan": [ - "TableReader_7 6656.67 root partition:p0,p2 data:Selection_6", - "└─Selection_6 6656.67 cop[tikv] or(lt(test.pt.c, 2), ge(test.pt.c, 9))", - " └─TableFullScan_5 10000.00 cop[tikv] table:pt keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select c from pt", - "Plan": [ - "IndexReader_7 10000.00 root partition:all index:IndexFullScan_6", - "└─IndexFullScan_6 10000.00 cop[tikv] table:pt, index:i_c(c) keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select c from pt where c > 10", - "Plan": [ - "IndexReader_6 3333.33 root partition:dual index:IndexRangeScan_5", - "└─IndexRangeScan_5 3333.33 cop[tikv] table:pt, index:i_c(c) range:(10,+inf], keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select c from pt where c > 8", - "Plan": [ - "IndexReader_6 3333.33 root partition:p2 index:IndexRangeScan_5", - "└─IndexRangeScan_5 3333.33 cop[tikv] table:pt, index:i_c(c) range:(8,+inf], keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select c from pt where c < 2 or c >= 9", - "Plan": [ - "IndexReader_6 6656.67 root partition:p0,p2 index:IndexRangeScan_5", - "└─IndexRangeScan_5 6656.67 cop[tikv] table:pt, index:i_c(c) range:[-inf,2), [9,+inf], keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select /*+ use_index(pt, i_id) */ * from pt", - "Plan": [ - "IndexLookUp_6 10000.00 root partition:all ", - "├─IndexFullScan_4(Build) 10000.00 cop[tikv] table:pt, index:i_id(id) keep order:false, stats:pseudo", - "└─TableRowIDScan_5(Probe) 10000.00 cop[tikv] table:pt keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select /*+ use_index(pt, i_id) */ * from pt where id < 4 and c > 10", - "Plan": [ - "IndexLookUp_8 1107.78 root partition:dual ", - "├─IndexRangeScan_5(Build) 3323.33 cop[tikv] table:pt, index:i_id(id) range:[-inf,4), keep order:false, stats:pseudo", - "└─Selection_7(Probe) 1107.78 cop[tikv] gt(test.pt.c, 10)", - " └─TableRowIDScan_6 3323.33 cop[tikv] table:pt keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select /*+ use_index(pt, i_id) */ * from pt where id < 10 and c > 8", - "Plan": [ - "IndexLookUp_8 1107.78 root partition:p2 ", - "├─IndexRangeScan_5(Build) 3323.33 cop[tikv] table:pt, index:i_id(id) range:[-inf,10), keep order:false, stats:pseudo", - "└─Selection_7(Probe) 1107.78 cop[tikv] gt(test.pt.c, 8)", - " └─TableRowIDScan_6 3323.33 cop[tikv] table:pt keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select /*+ use_index(pt, i_id) */ * from pt where id < 10 and c < 2 or c >= 9", - "Plan": [ - "IndexLookUp_8 5325.33 root partition:p0,p2 ", - "├─IndexFullScan_5(Build) 10000.00 cop[tikv] table:pt, index:i_id(id) keep order:false, stats:pseudo", - "└─Selection_7(Probe) 5325.33 cop[tikv] or(and(lt(test.pt.id, 10), lt(test.pt.c, 2)), ge(test.pt.c, 9))", - " └─TableRowIDScan_6 10000.00 cop[tikv] table:pt keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select * from pt partition (p0) where c > 8", - "Plan": [ - "TableReader_7 3333.33 root partition:dual data:Selection_6", - "└─Selection_6 3333.33 cop[tikv] gt(test.pt.c, 8)", - " └─TableFullScan_5 10000.00 cop[tikv] table:pt keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select c from pt partition (p0, p2) where c > 8", - "Plan": [ - "IndexReader_6 3333.33 root partition:p2 index:IndexRangeScan_5", - "└─IndexRangeScan_5 3333.33 cop[tikv] table:pt, index:i_c(c) range:(8,+inf], keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select /*+ use_index(pt, i_id) */ * from pt partition (p1, p2) where c < 3 and id = 5", - "Plan": [ - "IndexLookUp_8 3.32 root partition:dual ", - "├─IndexRangeScan_5(Build) 10.00 cop[tikv] table:pt, index:i_id(id) range:[5,5], keep order:false, stats:pseudo", - "└─Selection_7(Probe) 3.32 cop[tikv] lt(test.pt.c, 3)", - " └─TableRowIDScan_6 10.00 cop[tikv] table:pt keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select * from pt where id = 4 or c < 7", - "Plan": [ - "IndexMerge_11 3330.01 root partition:all type: union", - "├─IndexRangeScan_8(Build) 10.00 cop[tikv] table:pt, index:i_id(id) range:[4,4], keep order:false, stats:pseudo", - "├─IndexRangeScan_9(Build) 3323.33 cop[tikv] table:pt, index:i_c(c) range:[-inf,7), keep order:false, stats:pseudo", - "└─TableRowIDScan_10(Probe) 3330.01 cop[tikv] table:pt keep order:false, stats:pseudo" - ] - }, - { - "SQL": "select * from pt where id > 4 or c = 7", - "Plan": [ - "IndexMerge_11 3340.00 root partition:all type: union", - "├─IndexRangeScan_8(Build) 3333.33 cop[tikv] table:pt, index:i_id(id) range:(4,+inf], keep order:false, stats:pseudo", - "├─IndexRangeScan_9(Build) 10.00 cop[tikv] table:pt, index:i_c(c) range:[7,7], keep order:false, stats:pseudo", - "└─TableRowIDScan_10(Probe) 3340.00 cop[tikv] table:pt keep order:false, stats:pseudo" - ] - } - ] - }, { "Name": "TestIssue31240", "Cases": [ diff --git a/pkg/planner/core/cbo_test.go b/pkg/planner/core/cbo_test.go index 3ede953e2d1d7..f925c9f621fc9 100644 --- a/pkg/planner/core/cbo_test.go +++ b/pkg/planner/core/cbo_test.go @@ -17,7 +17,6 @@ package core_test import ( "context" "fmt" - "strings" "testing" "github.com/pingcap/tidb/pkg/planner" @@ -27,57 +26,6 @@ import ( "github.com/stretchr/testify/require" ) -func TestExplainCostTrace(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("create table t (a int)") - tk.MustExec("insert into t values (1)") - - tk.MustExec("set tidb_cost_model_version=2") - tk.MustQuery("explain format='cost_trace' select * from t").Check(testkit.Rows( - `TableReader_5 10000.00 177906.67 ((scan(10000*logrowsize(32)*tikv_scan_factor(40.7))) + (net(10000*rowsize(16)*tidb_kv_net_factor(3.96))))/15.00 root data:TableFullScan_4`, - `└─TableFullScan_4 10000.00 2035000.00 scan(10000*logrowsize(32)*tikv_scan_factor(40.7)) cop[tikv] table:t keep order:false, stats:pseudo`)) - tk.MustQuery("explain analyze format='cost_trace' select * from t").CheckAt([]int{0, 1, 2, 3, 4}, [][]interface{}{ - {"TableReader_5", "10000.00", "177906.67", "((scan(10000*logrowsize(32)*tikv_scan_factor(40.7))) + (net(10000*rowsize(16)*tidb_kv_net_factor(3.96))))/15.00", "1"}, - {"└─TableFullScan_4", "10000.00", "2035000.00", "scan(10000*logrowsize(32)*tikv_scan_factor(40.7))", "1"}, - }) - - tk.MustExec("set tidb_cost_model_version=1") - tk.MustQuery("explain format='cost_trace' select * from t").Check(testkit.Rows( - // cost trace on model ver1 is not supported - `TableReader_5 10000.00 34418.00 N/A root data:TableFullScan_4`, - `└─TableFullScan_4 10000.00 435000.00 N/A cop[tikv] table:t keep order:false, stats:pseudo`, - )) - tk.MustQuery("explain analyze format='cost_trace' select * from t").CheckAt([]int{0, 1, 2, 3, 4}, [][]interface{}{ - {"TableReader_5", "10000.00", "34418.00", "N/A", "1"}, - {"└─TableFullScan_4", "10000.00", "435000.00", "N/A", "1"}, - }) -} - -func TestExplainAnalyze(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("set sql_mode='STRICT_TRANS_TABLES'") // disable only full group by - tk.MustExec("create table t1(a int, b int, c int, key idx(a, b))") - tk.MustExec("create table t2(a int, b int)") - tk.MustExec("insert into t1 values (1, 1, 1), (2, 2, 2), (3, 3, 3), (4, 4, 4), (5, 5, 5)") - tk.MustExec("insert into t2 values (2, 22), (3, 33), (5, 55), (233, 2), (333, 3), (3434, 5)") - tk.MustExec("analyze table t1, t2") - rs := tk.MustQuery("explain analyze select t1.a, t1.b, sum(t1.c) from t1 join t2 on t1.a = t2.b where t1.a > 1") - require.Len(t, rs.Rows(), 10) - for _, row := range rs.Rows() { - require.Len(t, row, 9) - execInfo := row[5].(string) - require.Contains(t, execInfo, "time") - require.Contains(t, execInfo, "loops") - if strings.Contains(row[0].(string), "Reader") || strings.Contains(row[0].(string), "IndexLookUp") { - require.Contains(t, execInfo, "cop_task") - } - } -} - func constructInsertSQL(i, n int) string { sql := "insert into t (a,b,c,e)values " for j := 0; j < n; j++ { @@ -205,31 +153,3 @@ func BenchmarkOptimize(b *testing.B) { }) } } - -func TestIssue9805(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 ( - id bigint primary key, - a bigint not null, - b varchar(100) not null, - c varchar(10) not null, - d bigint as (a % 30) not null, - key (d, b, c) - ) - `) - tk.MustExec(` - create table t2 ( - id varchar(50) primary key, - a varchar(100) unique, - b datetime, - c varchar(45), - d int not null unique auto_increment - ) - `) - // Test when both tables are empty, EXPLAIN ANALYZE for IndexLookUp would not panic. - tk.MustQuery("explain analyze select /*+ TIDB_INLJ(t2) */ t1.id, t2.a from t1 join t2 on t1.a = t2.d where t1.b = 't2' and t1.d = 4") -} diff --git a/pkg/planner/core/common_plans.go b/pkg/planner/core/common_plans.go index 648b5c373b2d7..88e36c8ca1d01 100644 --- a/pkg/planner/core/common_plans.go +++ b/pkg/planner/core/common_plans.go @@ -1443,3 +1443,8 @@ func IsPointGetWithPKOrUniqueKeyByAutoCommit(ctx sessionctx.Context, p Plan) (bo func IsAutoCommitTxn(ctx sessionctx.Context) bool { return ctx.GetSessionVars().IsAutocommit() && !ctx.GetSessionVars().InTxn() } + +// AdminShowBDRRole represents a show bdr role plan. +type AdminShowBDRRole struct { + baseSchemaProducer +} diff --git a/pkg/planner/core/exhaust_physical_plans.go b/pkg/planner/core/exhaust_physical_plans.go index 0df49021d55bb..60d45efe68139 100644 --- a/pkg/planner/core/exhaust_physical_plans.go +++ b/pkg/planner/core/exhaust_physical_plans.go @@ -81,7 +81,7 @@ func findMaxPrefixLen(candidates [][]*expression.Column, keys []*expression.Colu for _, candidateKeys := range candidates { matchedLen := 0 for i := range keys { - if !(i < len(candidateKeys) && keys[i].Equal(nil, candidateKeys[i])) { + if !(i < len(candidateKeys) && keys[i].EqualColumn(candidateKeys[i])) { break } matchedLen++ @@ -669,7 +669,7 @@ func (p *LogicalJoin) constructIndexMergeJoin( outerCompareFuncs := make([]expression.CompareFunc, 0, len(join.OuterJoinKeys)) for i := range join.KeyOff2IdxOff { - if isOuterKeysPrefix && !prop.SortItems[i].Col.Equal(nil, join.OuterJoinKeys[keyOff2KeyOffOrderByIdx[i]]) { + if isOuterKeysPrefix && !prop.SortItems[i].Col.EqualColumn(join.OuterJoinKeys[keyOff2KeyOffOrderByIdx[i]]) { isOuterKeysPrefix = false } compareFuncs = append(compareFuncs, expression.GetCmpFunction(p.SCtx(), join.OuterJoinKeys[i], join.InnerJoinKeys[i])) @@ -678,7 +678,7 @@ func (p *LogicalJoin) constructIndexMergeJoin( // canKeepOuterOrder means whether the prop items are the prefix of the outer join keys. canKeepOuterOrder := len(prop.SortItems) <= len(join.OuterJoinKeys) for i := 0; canKeepOuterOrder && i < len(prop.SortItems); i++ { - if !prop.SortItems[i].Col.Equal(nil, join.OuterJoinKeys[keyOff2KeyOffOrderByIdx[i]]) { + if !prop.SortItems[i].Col.EqualColumn(join.OuterJoinKeys[keyOff2KeyOffOrderByIdx[i]]) { canKeepOuterOrder = false } } @@ -896,7 +896,7 @@ func (p *LogicalJoin) buildIndexJoinInner2TableScan( return nil } for i, key := range innerJoinKeys { - if !key.Equal(nil, pkCol) { + if !key.EqualColumn(pkCol) { keyOff2IdxOff[i] = -1 continue } @@ -1459,7 +1459,7 @@ func (cwc *ColWithCmpFuncManager) CompareRow(lhs, rhs chunk.Row) int { func (cwc *ColWithCmpFuncManager) BuildRangesByRow(ctx sessionctx.Context, row chunk.Row) ([]*ranger.Range, error) { exprs := make([]expression.Expression, len(cwc.OpType)) for i, opType := range cwc.OpType { - constantArg, err := cwc.opArg[i].Eval(row) + constantArg, err := cwc.opArg[i].Eval(ctx, row) if err != nil { return nil, err } @@ -1582,10 +1582,10 @@ loopOtherConds: } var funcName string var anotherArg expression.Expression - if lCol, ok := sf.GetArgs()[0].(*expression.Column); ok && lCol.Equal(nil, nextCol) { + if lCol, ok := sf.GetArgs()[0].(*expression.Column); ok && lCol.EqualColumn(nextCol) { anotherArg = sf.GetArgs()[1] funcName = sf.FuncName.L - } else if rCol, ok := sf.GetArgs()[1].(*expression.Column); ok && rCol.Equal(nil, nextCol) { + } else if rCol, ok := sf.GetArgs()[1].(*expression.Column); ok && rCol.EqualColumn(nextCol) { anotherArg = sf.GetArgs()[0] // The column manager always build expression in the form of col op arg1. // So we need use the symmetric one of the current function. @@ -1622,7 +1622,7 @@ func (ijHelper *indexJoinBuildHelper) removeUselessEqAndInFunc(idxCols []*expres ijHelper.curPossibleUsedKeys = append(ijHelper.curPossibleUsedKeys, idxCols[idxColPos]) continue } - if notKeyColPos < len(notKeyEqAndIn) && ijHelper.curNotUsedIndexCols[notKeyColPos].Equal(nil, idxCols[idxColPos]) { + if notKeyColPos < len(notKeyEqAndIn) && ijHelper.curNotUsedIndexCols[notKeyColPos].EqualColumn(idxCols[idxColPos]) { notKeyColPos++ continue } @@ -2360,16 +2360,17 @@ func canExprsInJoinPushdown(p *LogicalJoin, storeType kv.StoreType) bool { } equalExprs = append(equalExprs, eqCondition) } - if !expression.CanExprsPushDown(p.SCtx().GetSessionVars().StmtCtx, equalExprs, p.SCtx().GetClient(), storeType) { + ctx := p.SCtx() + if !expression.CanExprsPushDown(ctx, equalExprs, p.SCtx().GetClient(), storeType) { return false } - if !expression.CanExprsPushDown(p.SCtx().GetSessionVars().StmtCtx, p.LeftConditions, p.SCtx().GetClient(), storeType) { + if !expression.CanExprsPushDown(ctx, p.LeftConditions, p.SCtx().GetClient(), storeType) { return false } - if !expression.CanExprsPushDown(p.SCtx().GetSessionVars().StmtCtx, p.RightConditions, p.SCtx().GetClient(), storeType) { + if !expression.CanExprsPushDown(ctx, p.RightConditions, p.SCtx().GetClient(), storeType) { return false } - if !expression.CanExprsPushDown(p.SCtx().GetSessionVars().StmtCtx, p.OtherConditions, p.SCtx().GetClient(), storeType) { + if !expression.CanExprsPushDown(ctx, p.OtherConditions, p.SCtx().GetClient(), storeType) { return false } return true @@ -2632,14 +2633,15 @@ func (p *LogicalProjection) exhaustPhysicalPlans(prop *property.PhysicalProperty } newProps := []*property.PhysicalProperty{newProp} // generate a mpp task candidate if mpp mode is allowed - if newProp.TaskTp != property.MppTaskType && p.SCtx().GetSessionVars().IsMPPAllowed() && p.canPushToCop(kv.TiFlash) && - expression.CanExprsPushDown(p.SCtx().GetSessionVars().StmtCtx, p.Exprs, p.SCtx().GetClient(), kv.TiFlash) { + ctx := p.SCtx() + if newProp.TaskTp != property.MppTaskType && ctx.GetSessionVars().IsMPPAllowed() && p.canPushToCop(kv.TiFlash) && + expression.CanExprsPushDown(ctx, p.Exprs, ctx.GetClient(), kv.TiFlash) { mppProp := newProp.CloneEssentialFields() mppProp.TaskTp = property.MppTaskType newProps = append(newProps, mppProp) } - if newProp.TaskTp != property.CopSingleReadTaskType && p.SCtx().GetSessionVars().AllowProjectionPushDown && p.canPushToCop(kv.TiKV) && - expression.CanExprsPushDown(p.SCtx().GetSessionVars().StmtCtx, p.Exprs, p.SCtx().GetClient(), kv.TiKV) && !expression.ContainVirtualColumn(p.Exprs) { + if newProp.TaskTp != property.CopSingleReadTaskType && ctx.GetSessionVars().AllowProjectionPushDown && p.canPushToCop(kv.TiKV) && + expression.CanExprsPushDown(ctx, p.Exprs, ctx.GetClient(), kv.TiKV) && !expression.ContainVirtualColumn(p.Exprs) { copProp := newProp.CloneEssentialFields() copProp.TaskTp = property.CopSingleReadTaskType newProps = append(newProps, copProp) @@ -2740,7 +2742,7 @@ func MatchItems(p *property.PhysicalProperty, items []*util.ByItems) bool { } for i, col := range p.SortItems { sortItem := items[i] - if sortItem.Desc != col.Desc || !sortItem.Expr.Equal(nil, col.Col) { + if sortItem.Desc != col.Desc || !col.Col.EqualColumn(sortItem.Expr) { return false } } @@ -2868,12 +2870,13 @@ func (lw *LogicalWindow) tryToGetMppWindows(prop *property.PhysicalProperty) []P } if lw.Frame != nil && lw.Frame.Type == ast.Ranges { - if _, err := expression.ExpressionsToPBList(lw.SCtx().GetSessionVars().StmtCtx, lw.Frame.Start.CalcFuncs, lw.SCtx().GetClient()); err != nil { + ctx := lw.SCtx() + if _, err := expression.ExpressionsToPBList(ctx, lw.Frame.Start.CalcFuncs, lw.SCtx().GetClient()); err != nil { lw.SCtx().GetSessionVars().RaiseWarningWhenMPPEnforced( "MPP mode may be blocked because window function frame can't be pushed down, because " + err.Error()) return nil } - if _, err := expression.ExpressionsToPBList(lw.SCtx().GetSessionVars().StmtCtx, lw.Frame.End.CalcFuncs, lw.SCtx().GetClient()); err != nil { + if _, err := expression.ExpressionsToPBList(ctx, lw.Frame.End.CalcFuncs, lw.SCtx().GetClient()); err != nil { lw.SCtx().GetSessionVars().RaiseWarningWhenMPPEnforced( "MPP mode may be blocked because window function frame can't be pushed down, because " + err.Error()) return nil @@ -3244,7 +3247,9 @@ func (la *LogicalAggregation) tryToGetMppHashAggs(prop *property.PhysicalPropert finalAggAdjust := func(aggFuncs []*aggregation.AggFuncDesc) { for i, agg := range aggFuncs { if agg.Mode == aggregation.FinalMode && agg.Name == ast.AggFuncCount { + oldFT := agg.RetTp aggFuncs[i], _ = aggregation.NewAggFuncDesc(la.SCtx(), ast.AggFuncSum, agg.Args, false) + aggFuncs[i].TypeInfer4FinalCount(oldFT) } } } @@ -3486,7 +3491,7 @@ func (p *LogicalSelection) canPushDown(storeTp kv.StoreType) bool { return !expression.ContainVirtualColumn(p.Conditions) && p.canPushToCop(storeTp) && expression.CanExprsPushDown( - p.SCtx().GetSessionVars().StmtCtx, + p.SCtx(), p.Conditions, p.SCtx().GetClient(), storeTp) diff --git a/pkg/planner/core/explain.go b/pkg/planner/core/explain.go index a0d7afa09f4b9..3991d6a0863c8 100644 --- a/pkg/planner/core/explain.go +++ b/pkg/planner/core/explain.go @@ -27,6 +27,7 @@ import ( "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/planner/property" "github.com/pingcap/tidb/pkg/planner/util" + "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/statistics" "github.com/pingcap/tidb/pkg/types" @@ -221,7 +222,7 @@ func (p *PhysicalTableScan) OperatorInfo(normalized bool) string { if normalized { buffer.Write(expression.SortedExplainNormalizedExpressionList(p.lateMaterializationFilterCondition)) } else { - buffer.Write(expression.SortedExplainExpressionList(p.lateMaterializationFilterCondition)) + buffer.Write(expression.SortedExplainExpressionList(p.SCtx(), p.lateMaterializationFilterCondition)) } } else { buffer.WriteString("empty") @@ -352,12 +353,12 @@ func (p *PhysicalIndexMergeReader) ExplainInfo() string { // ExplainInfo implements Plan interface. func (p *PhysicalUnionScan) ExplainInfo() string { - return string(expression.SortedExplainExpressionList(p.Conditions)) + return string(expression.SortedExplainExpressionList(p.SCtx(), p.Conditions)) } // ExplainInfo implements Plan interface. func (p *PhysicalSelection) ExplainInfo() string { - exprStr := string(expression.SortedExplainExpressionList(p.Conditions)) + exprStr := string(expression.SortedExplainExpressionList(p.SCtx(), p.Conditions)) if p.TiFlashFineGrainedShuffleStreamCount > 0 { exprStr += fmt.Sprintf(", stream_count: %d", p.TiFlashFineGrainedShuffleStreamCount) } @@ -424,7 +425,7 @@ func (p *PhysicalTableDual) ExplainInfo() string { // ExplainInfo implements Plan interface. func (p *PhysicalSort) ExplainInfo() string { buffer := bytes.NewBufferString("") - buffer = explainByItems(buffer, p.ByItems) + buffer = explainByItems(p.SCtx(), buffer, p.ByItems) if p.TiFlashFineGrainedShuffleStreamCount > 0 { fmt.Fprintf(buffer, ", stream_count: %d", p.TiFlashFineGrainedShuffleStreamCount) } @@ -466,13 +467,15 @@ func (p *basePhysicalAgg) ExplainInfo() string { func (p *basePhysicalAgg) explainInfo(normalized bool) string { sortedExplainExpressionList := expression.SortedExplainExpressionList if normalized { - sortedExplainExpressionList = expression.SortedExplainNormalizedExpressionList + sortedExplainExpressionList = func(_ sessionctx.Context, exprs []expression.Expression) []byte { + return expression.SortedExplainNormalizedExpressionList(exprs) + } } builder := &strings.Builder{} if len(p.GroupByItems) > 0 { builder.WriteString("group by:") - builder.Write(sortedExplainExpressionList(p.GroupByItems)) + builder.Write(sortedExplainExpressionList(p.SCtx(), p.GroupByItems)) builder.WriteString(", ") } for i := 0; i < len(p.AggFuncs); i++ { @@ -481,9 +484,9 @@ func (p *basePhysicalAgg) explainInfo(normalized bool) string { if normalized { colName = p.schema.Columns[i].ExplainNormalizedInfo() } else { - colName = p.schema.Columns[i].ExplainInfo() + colName = p.schema.Columns[i].ExplainInfo(p.SCtx()) } - builder.WriteString(aggregation.ExplainAggFunc(p.AggFuncs[i], normalized)) + builder.WriteString(aggregation.ExplainAggFunc(p.SCtx(), p.AggFuncs[i], normalized)) builder.WriteString("->") builder.WriteString(colName) if i+1 < len(p.AggFuncs) { @@ -514,7 +517,9 @@ func (p *PhysicalIndexMergeJoin) ExplainInfo() string { func (p *PhysicalIndexJoin) explainInfo(normalized bool, isIndexMergeJoin bool) string { sortedExplainExpressionList := expression.SortedExplainExpressionList if normalized { - sortedExplainExpressionList = expression.SortedExplainNormalizedExpressionList + sortedExplainExpressionList = func(_ sessionctx.Context, exprs []expression.Expression) []byte { + return expression.SortedExplainNormalizedExpressionList(exprs) + } } buffer := bytes.NewBufferString(p.JoinType.String()) @@ -526,11 +531,11 @@ func (p *PhysicalIndexJoin) explainInfo(normalized bool, isIndexMergeJoin bool) } if len(p.OuterJoinKeys) > 0 { buffer.WriteString(", outer key:") - buffer.Write(expression.ExplainColumnList(p.OuterJoinKeys)) + buffer.Write(expression.ExplainColumnList(p.SCtx(), p.OuterJoinKeys)) } if len(p.InnerJoinKeys) > 0 { buffer.WriteString(", inner key:") - buffer.Write(expression.ExplainColumnList(p.InnerJoinKeys)) + buffer.Write(expression.ExplainColumnList(p.SCtx(), p.InnerJoinKeys)) } if len(p.OuterHashKeys) > 0 && !isIndexMergeJoin { @@ -543,19 +548,19 @@ func (p *PhysicalIndexJoin) explainInfo(normalized bool, isIndexMergeJoin bool) exprs = append(exprs, expr) } buffer.WriteString(", equal cond:") - buffer.Write(sortedExplainExpressionList(exprs)) + buffer.Write(sortedExplainExpressionList(p.SCtx(), exprs)) } if len(p.LeftConditions) > 0 { buffer.WriteString(", left cond:") - buffer.Write(sortedExplainExpressionList(p.LeftConditions)) + buffer.Write(sortedExplainExpressionList(p.SCtx(), p.LeftConditions)) } if len(p.RightConditions) > 0 { buffer.WriteString(", right cond:") - buffer.Write(sortedExplainExpressionList(p.RightConditions)) + buffer.Write(sortedExplainExpressionList(p.SCtx(), p.RightConditions)) } if len(p.OtherConditions) > 0 { buffer.WriteString(", other cond:") - buffer.Write(sortedExplainExpressionList(p.OtherConditions)) + buffer.Write(sortedExplainExpressionList(p.SCtx(), p.OtherConditions)) } return buffer.String() } @@ -583,7 +588,9 @@ func (p *PhysicalHashJoin) ExplainNormalizedInfo() string { func (p *PhysicalHashJoin) explainInfo(normalized bool) string { sortedExplainExpressionList := expression.SortedExplainExpressionList if normalized { - sortedExplainExpressionList = expression.SortedExplainNormalizedExpressionList + sortedExplainExpressionList = func(_ sessionctx.Context, exprs []expression.Expression) []byte { + return expression.SortedExplainNormalizedExpressionList(exprs) + } } buffer := new(strings.Builder) @@ -645,11 +652,11 @@ func (p *PhysicalHashJoin) explainInfo(normalized bool) string { } if len(p.RightConditions) > 0 { buffer.WriteString(", right cond:") - buffer.Write(sortedExplainExpressionList(p.RightConditions)) + buffer.Write(sortedExplainExpressionList(p.SCtx(), p.RightConditions)) } if len(p.OtherConditions) > 0 { buffer.WriteString(", other cond:") - buffer.Write(sortedExplainExpressionList(p.OtherConditions)) + buffer.Write(sortedExplainExpressionList(p.SCtx(), p.OtherConditions)) } if p.TiFlashFineGrainedShuffleStreamCount > 0 { fmt.Fprintf(buffer, ", stream_count: %d", p.TiFlashFineGrainedShuffleStreamCount) @@ -676,17 +683,19 @@ func (p *PhysicalMergeJoin) ExplainInfo() string { func (p *PhysicalMergeJoin) explainInfo(normalized bool) string { sortedExplainExpressionList := expression.SortedExplainExpressionList if normalized { - sortedExplainExpressionList = expression.SortedExplainNormalizedExpressionList + sortedExplainExpressionList = func(_ sessionctx.Context, exprs []expression.Expression) []byte { + return expression.SortedExplainNormalizedExpressionList(exprs) + } } buffer := bytes.NewBufferString(p.JoinType.String()) if len(p.LeftJoinKeys) > 0 { fmt.Fprintf(buffer, ", left key:%s", - expression.ExplainColumnList(p.LeftJoinKeys)) + expression.ExplainColumnList(p.SCtx(), p.LeftJoinKeys)) } if len(p.RightJoinKeys) > 0 { fmt.Fprintf(buffer, ", right key:%s", - expression.ExplainColumnList(p.RightJoinKeys)) + expression.ExplainColumnList(p.SCtx(), p.RightJoinKeys)) } if len(p.LeftConditions) > 0 { if normalized { @@ -697,11 +706,11 @@ func (p *PhysicalMergeJoin) explainInfo(normalized bool) string { } if len(p.RightConditions) > 0 { fmt.Fprintf(buffer, ", right cond:%s", - sortedExplainExpressionList(p.RightConditions)) + sortedExplainExpressionList(p.SCtx(), p.RightConditions)) } if len(p.OtherConditions) > 0 { fmt.Fprintf(buffer, ", other cond:%s", - sortedExplainExpressionList(p.OtherConditions)) + sortedExplainExpressionList(p.SCtx(), p.OtherConditions)) } return buffer.String() } @@ -716,11 +725,7 @@ func explainPartitionBy(buffer *bytes.Buffer, partitionBy []property.SortItem, n if len(partitionBy) > 0 { buffer.WriteString("partition by ") for i, item := range partitionBy { - if normalized { - fmt.Fprintf(buffer, "%s", item.Col.ExplainNormalizedInfo()) - } else { - fmt.Fprintf(buffer, "%s", item.Col.ExplainInfo()) - } + fmt.Fprintf(buffer, "%s", item.Col.ColumnExplainInfo(normalized)) if i+1 < len(partitionBy) { buffer.WriteString(", ") } @@ -742,7 +747,7 @@ func (p *PhysicalTopN) ExplainInfo() string { if len(p.GetPartitionBy()) > 0 { buffer.WriteString("order by ") } - buffer = explainByItems(buffer, p.ByItems) + buffer = explainByItems(p.SCtx(), buffer, p.ByItems) } fmt.Fprintf(buffer, ", offset:%v, count:%v", p.Offset, p.Count) return buffer.String() @@ -766,7 +771,7 @@ func (p *PhysicalTopN) ExplainNormalizedInfo() string { return buffer.String() } -func (*PhysicalWindow) formatFrameBound(buffer *bytes.Buffer, bound *FrameBound) { +func (p *PhysicalWindow) formatFrameBound(buffer *bytes.Buffer, bound *FrameBound) { if bound.Type == ast.CurrentRow { buffer.WriteString("current row") return @@ -774,14 +779,15 @@ func (*PhysicalWindow) formatFrameBound(buffer *bytes.Buffer, bound *FrameBound) if bound.UnBounded { buffer.WriteString("unbounded") } else if len(bound.CalcFuncs) > 0 { + ctx := p.SCtx() sf := bound.CalcFuncs[0].(*expression.ScalarFunction) switch sf.FuncName.L { case ast.DateAdd, ast.DateSub: // For `interval '2:30' minute_second`. - fmt.Fprintf(buffer, "interval %s %s", sf.GetArgs()[1].ExplainInfo(), sf.GetArgs()[2].ExplainInfo()) + fmt.Fprintf(buffer, "interval %s %s", sf.GetArgs()[1].ExplainInfo(ctx), sf.GetArgs()[2].ExplainInfo(ctx)) case ast.Plus, ast.Minus: // For `1 preceding` of range frame. - fmt.Fprintf(buffer, "%s", sf.GetArgs()[1].ExplainInfo()) + fmt.Fprintf(buffer, "%s", sf.GetArgs()[1].ExplainInfo(ctx)) } } else { fmt.Fprintf(buffer, "%d", bound.Num) @@ -808,11 +814,12 @@ func (p *PhysicalWindow) ExplainInfo() string { buffer.WriteString(" ") } buffer.WriteString("order by ") + ctx := p.SCtx() for i, item := range p.OrderBy { if item.Desc { - fmt.Fprintf(buffer, "%s desc", item.Col.ExplainInfo()) + fmt.Fprintf(buffer, "%s desc", item.Col.ExplainInfo(ctx)) } else { - fmt.Fprintf(buffer, "%s", item.Col.ExplainInfo()) + fmt.Fprintf(buffer, "%s", item.Col.ExplainInfo(ctx)) } if i+1 < len(p.OrderBy) { @@ -873,15 +880,15 @@ func (p *LogicalJoin) ExplainInfo() string { } if len(p.LeftConditions) > 0 { fmt.Fprintf(buffer, ", left cond:%s", - expression.SortedExplainExpressionList(p.LeftConditions)) + expression.SortedExplainExpressionList(p.SCtx(), p.LeftConditions)) } if len(p.RightConditions) > 0 { fmt.Fprintf(buffer, ", right cond:%s", - expression.SortedExplainExpressionList(p.RightConditions)) + expression.SortedExplainExpressionList(p.SCtx(), p.RightConditions)) } if len(p.OtherConditions) > 0 { fmt.Fprintf(buffer, ", other cond:%s", - expression.SortedExplainExpressionList(p.OtherConditions)) + expression.SortedExplainExpressionList(p.SCtx(), p.OtherConditions)) } return buffer.String() } @@ -891,12 +898,12 @@ func (p *LogicalAggregation) ExplainInfo() string { buffer := bytes.NewBufferString("") if len(p.GroupByItems) > 0 { fmt.Fprintf(buffer, "group by:%s, ", - expression.SortedExplainExpressionList(p.GroupByItems)) + expression.SortedExplainExpressionList(p.SCtx(), p.GroupByItems)) } if len(p.AggFuncs) > 0 { buffer.WriteString("funcs:") for i, agg := range p.AggFuncs { - buffer.WriteString(aggregation.ExplainAggFunc(agg, false)) + buffer.WriteString(aggregation.ExplainAggFunc(p.SCtx(), agg, false)) if i+1 < len(p.AggFuncs) { buffer.WriteString(", ") } @@ -912,7 +919,7 @@ func (p *LogicalProjection) ExplainInfo() string { // ExplainInfo implements Plan interface. func (p *LogicalSelection) ExplainInfo() string { - return string(expression.SortedExplainExpressionList(p.Conditions)) + return string(expression.SortedExplainExpressionList(p.SCtx(), p.Conditions)) } // ExplainInfo implements Plan interface. @@ -960,7 +967,7 @@ func (p *PhysicalExchangeSender) ExplainInfo() string { fmt.Fprintf(buffer, ", Compression: %s", p.CompressionMode.Name()) } if p.ExchangeType == tipb.ExchangeType_Hash { - fmt.Fprintf(buffer, ", Hash Cols: %s", property.ExplainColumnList(p.HashCols)) + fmt.Fprintf(buffer, ", Hash Cols: %s", property.ExplainColumnList(p.SCtx(), p.HashCols)) } if len(p.Tasks) > 0 { fmt.Fprintf(buffer, ", tasks: [") @@ -990,17 +997,17 @@ func (p *PhysicalExchangeReceiver) ExplainInfo() (res string) { func (p *LogicalUnionScan) ExplainInfo() string { buffer := bytes.NewBufferString("") fmt.Fprintf(buffer, "conds:%s", - expression.SortedExplainExpressionList(p.conditions)) + expression.SortedExplainExpressionList(p.SCtx(), p.conditions)) fmt.Fprintf(buffer, ", handle:%s", p.handleCols) return buffer.String() } -func explainByItems(buffer *bytes.Buffer, byItems []*util.ByItems) *bytes.Buffer { +func explainByItems(ctx sessionctx.Context, buffer *bytes.Buffer, byItems []*util.ByItems) *bytes.Buffer { for i, item := range byItems { if item.Desc { - fmt.Fprintf(buffer, "%s:desc", item.Expr.ExplainInfo()) + fmt.Fprintf(buffer, "%s:desc", item.Expr.ExplainInfo(ctx)) } else { - fmt.Fprintf(buffer, "%s", item.Expr.ExplainInfo()) + fmt.Fprintf(buffer, "%s", item.Expr.ExplainInfo(ctx)) } if i+1 < len(byItems) { @@ -1028,7 +1035,7 @@ func explainNormalizedByItems(buffer *bytes.Buffer, byItems []*util.ByItems) *by // ExplainInfo implements Plan interface. func (p *LogicalSort) ExplainInfo() string { buffer := bytes.NewBufferString("") - return explainByItems(buffer, p.ByItems).String() + return explainByItems(p.SCtx(), buffer, p.ByItems).String() } // ExplainInfo implements Plan interface. @@ -1038,7 +1045,7 @@ func (lt *LogicalTopN) ExplainInfo() string { if len(lt.GetPartitionBy()) > 0 && len(lt.ByItems) > 0 { buffer.WriteString("order by ") } - buffer = explainByItems(buffer, lt.ByItems) + buffer = explainByItems(lt.SCtx(), buffer, lt.ByItems) fmt.Fprintf(buffer, ", offset:%v, count:%v", lt.Offset, lt.Count) return buffer.String() } diff --git a/pkg/planner/core/expression_rewriter.go b/pkg/planner/core/expression_rewriter.go index 4868da790c7c5..612988845c869 100644 --- a/pkg/planner/core/expression_rewriter.go +++ b/pkg/planner/core/expression_rewriter.go @@ -59,7 +59,7 @@ func evalAstExpr(sctx sessionctx.Context, expr ast.ExprNode) (types.Datum, error if err != nil { return types.Datum{}, err } - return newExpr.Eval(chunk.Row{}) + return newExpr.Eval(sctx, chunk.Row{}) } // rewriteAstExpr rewrites ast expression directly. @@ -1849,7 +1849,7 @@ func (er *expressionRewriter) patternLikeOrIlikeToExpression(v *ast.PatternLikeO isPatternExactMatch := false // Treat predicate 'like' or 'ilike' the same way as predicate '=' when it is an exact match and new collation is not enabled. if patExpression, ok := er.ctxStack[l-1].(*expression.Constant); ok && !collate.NewCollationEnabled() { - patString, isNull, err := patExpression.EvalString(nil, chunk.Row{}) + patString, isNull, err := patExpression.EvalString(er.sctx, chunk.Row{}) if err != nil { er.err = err return diff --git a/pkg/planner/core/expression_rewriter_test.go b/pkg/planner/core/expression_rewriter_test.go deleted file mode 100644 index 503a6538c3b77..0000000000000 --- a/pkg/planner/core/expression_rewriter_test.go +++ /dev/null @@ -1,423 +0,0 @@ -// Copyright 2018 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_test - -import ( - "testing" - - "github.com/pingcap/tidb/pkg/parser/mysql" - "github.com/pingcap/tidb/pkg/parser/terror" - plannercore "github.com/pingcap/tidb/pkg/planner/core" - "github.com/pingcap/tidb/pkg/testkit" - "github.com/stretchr/testify/require" -) - -func TestIfNullEliminateColName(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(a int not null, b int not null)") - rs, err := tk.Exec("select ifnull(a,b) from t") - require.NoError(t, err) - fields := rs.Fields() - require.Greater(t, len(fields), 0) - require.Equal(t, "ifnull(a,b)", rs.Fields()[0].Column.Name.L) - require.NoError(t, rs.Close()) - - tk.MustExec("drop table if exists t") - tk.MustExec("create table t(e int not null, b int)") - tk.MustExec("insert into t values(1, 1)") - tk.MustExec("create table t1(e int not null, b int)") - tk.MustExec("insert into t1 values(1, 1)") - rows := tk.MustQuery("select b from t where ifnull(e, b)") - rows.Check(testkit.Rows("1")) - rows = tk.MustQuery("select b from t1 where ifnull(e, b)") - rows.Check(testkit.Rows("1")) -} - -func TestBinaryOpFunction(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(a int, b int, c int);") - tk.MustExec("INSERT INTO t VALUES (1, 2, 3), (NULL, 2, 3 ), (1, NULL, 3),(1, 2, NULL),(NULL, 2, 3+1), (1, NULL, 3+1), (1, 2+1, NULL),(NULL, 2, 3-1), (1, NULL, 3-1), (1, 2-1, NULL)") - tk.MustQuery("SELECT * FROM t WHERE (a,b,c) <= (1,2,3) order by b").Check(testkit.Rows("1 1 ", "1 2 3")) - tk.MustQuery("SELECT * FROM t WHERE (a,b,c) > (1,2,3) order by b").Check(testkit.Rows("1 3 ")) -} - -func TestDefaultFunction(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( - a varchar(10) default 'def', - b varchar(10), - c int default '10', - d double default '3.14', - e datetime default '20180101', - f datetime default current_timestamp, - g date default current_date);`) - tk.MustExec("insert into t1(a, b, c, d) values ('1', '1', 1, 1)") - tk.MustExec("set @@timestamp = 1321009871") - defer tk.MustExec("set @@timestamp = DEFAULT") - tk.MustExec("set @@time_zone = '+00:00'") - defer tk.MustExec("set @@time_zone = DEFAULT") - tk.MustQuery(`select - default(a) as defa, - default(b) as defb, - default(c) as defc, - default(d) as defd, - default(e) as defe, - default(f) as deff, - default(g) as defg - from t1`).Check(testkit.RowsWithSep("|", "def||10|3.14|2018-01-01 00:00:00|2011-11-11 11:11:11|2011-11-11")) - require.EqualError(t, tk.ExecToErr("select default(x) from t1"), "[planner:1054]Unknown column 'x' in 'field list'") - - tk.MustQuery("select default(a0) from (select a as a0 from t1) as t0").Check(testkit.Rows("def")) - require.EqualError(t, tk.ExecToErr("select default(a0) from (select a+1 as a0 from t1) as t0"), "[table:1364]Field 'a0' doesn't have a default value") - - tk.MustExec("create table t2(a varchar(10), b varchar(10))") - tk.MustExec("insert into t2 values ('1', '1')") - require.EqualError(t, tk.ExecToErr("select default(a) from t1, t2"), "[expression:1052]Column 'a' in field list is ambiguous") - - tk.MustQuery("select default(t1.a) from t1, t2").Check(testkit.Rows("def")) - - tk.MustExec(`create table t3( - a datetime default current_timestamp, - b timestamp default current_timestamp, - c timestamp(6) default current_timestamp(6), - d varchar(20) default 'current_timestamp')`) - tk.MustExec("insert into t3 values ()") - tk.MustQuery(`select - default(a) as defa, - default(b) as defb, - default(c) as defc, - default(d) as defd - from t3`).Check(testkit.RowsWithSep("|", "2011-11-11 11:11:11|2011-11-11 11:11:11|2011-11-11 11:11:11.000000|current_timestamp")) - - tk.MustExec(`create table t4(a int default 1, b varchar(5))`) - tk.MustExec(`insert into t4 values (0, 'B'), (1, 'B'), (2, 'B')`) - tk.MustExec(`create table t5(d int default 0, e varchar(5))`) - tk.MustExec(`insert into t5 values (5, 'B')`) - - tk.MustQuery(`select a from t4 where a > (select default(d) from t5 where t4.b = t5.e)`).Check(testkit.Rows("1", "2")) - tk.MustQuery(`select a from t4 where a > (select default(a) from t5 where t4.b = t5.e)`).Check(testkit.Rows("2")) - - tk.MustExec("prepare stmt from 'select default(a) from t1';") - tk.MustQuery("execute stmt").Check(testkit.Rows("def")) - tk.MustExec("alter table t1 modify a varchar(10) default 'DEF'") - tk.MustQuery("execute stmt").Check(testkit.Rows("DEF")) - - tk.MustExec("update t1 set c = c + default(c)") - tk.MustQuery("select c from t1").Check(testkit.Rows("11")) - - tk.MustExec("create table t6(a int default -1, b int)") - tk.MustExec(`insert into t6 values (0, 0), (1, 1), (2, 2)`) - tk.MustExec("create table t7(a int default 1, b int)") - tk.MustExec(`insert into t7 values (0, 0), (1, 1), (2, 2)`) - - tk.MustQuery(`select a from t6 where a > (select default(a) from t7 where t6.a = t7.a)`).Check(testkit.Rows("2")) - tk.MustQuery(`select a, default(a) from t6 where a > (select default(a) from t7 where t6.a = t7.a)`).Check(testkit.Rows("2 -1")) - - tk.MustExec("create table t8(a int default 1, b int default -1)") - tk.MustExec(`insert into t8 values (0, 0), (1, 1)`) - - tk.MustQuery(`select a, a from t8 order by default(a)`).Check(testkit.Rows("0 0", "1 1")) - tk.MustQuery(`select a from t8 order by default(b)`).Check(testkit.Rows("0", "1")) - tk.MustQuery(`select a from t8 order by default(b) * a`).Check(testkit.Rows("1", "0")) -} - -func TestCompareSubquery(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("drop table if exists s") - tk.MustExec("create table t(a int, b int)") - tk.MustExec("create table s(a int, b int)") - tk.MustExec("insert into t values(1, null), (2, null)") - - // Test empty checker. - tk.MustQuery("select a != any (select a from s) from t").Check(testkit.Rows( - "0", - "0", - )) - tk.MustQuery("select b != any (select a from s) from t").Check(testkit.Rows( - "0", - "0", - )) - tk.MustQuery("select a = all (select a from s) from t").Check(testkit.Rows( - "1", - "1", - )) - tk.MustQuery("select b = all (select a from s) from t").Check(testkit.Rows( - "1", - "1", - )) - tk.MustQuery("select * from t where a != any (select a from s)").Check(testkit.Rows()) - tk.MustQuery("select * from t where b != any (select a from s)").Check(testkit.Rows()) - tk.MustQuery("select * from t where a = all (select a from s)").Check(testkit.Rows( - "1 ", - "2 ", - )) - tk.MustQuery("select * from t where b = all (select a from s)").Check(testkit.Rows( - "1 ", - "2 ", - )) - // Test outer null checker. - tk.MustQuery("select b != any (select a from t t2) from t t1").Check(testkit.Rows( - "", - "", - )) - tk.MustQuery("select b = all (select a from t t2) from t t1").Check(testkit.Rows( - "", - "", - )) - tk.MustQuery("select * from t t1 where b != any (select a from t t2)").Check(testkit.Rows()) - tk.MustQuery("select * from t t1 where b = all (select a from t t2)").Check(testkit.Rows()) - - tk.MustExec("delete from t where a = 2") - tk.MustQuery("select b != any (select a from t t2) from t t1").Check(testkit.Rows( - "", - )) - tk.MustQuery("select b = all (select a from t t2) from t t1").Check(testkit.Rows( - "", - )) - tk.MustQuery("select * from t t1 where b != any (select a from t t2)").Check(testkit.Rows()) - tk.MustQuery("select * from t t1 where b = all (select a from t t2)").Check(testkit.Rows()) - - // Test inner null checker. - tk.MustExec("insert into t values(null, 1)") - tk.MustQuery("select b != any (select a from t t2) from t t1").Check(testkit.Rows( - "", - "", - )) - tk.MustQuery("select b = all (select a from t t2) from t t1").Check(testkit.Rows( - "", - "", - )) - tk.MustQuery("select * from t t1 where b != any (select a from t t2)").Check(testkit.Rows()) - tk.MustQuery("select * from t t1 where b = all (select a from t t2)").Check(testkit.Rows()) - - tk.MustExec("delete from t where b = 1") - tk.MustExec("insert into t values(null, 2)") - tk.MustQuery("select b != any (select a from t t2) from t t1").Check(testkit.Rows( - "", - "1", - )) - tk.MustQuery("select b = all (select a from t t2) from t t1").Check(testkit.Rows( - "", - "0", - )) - tk.MustQuery("select * from t t1 where b != any (select a from t t2)").Check(testkit.Rows( - " 2", - )) - tk.MustQuery("select * from t t1 where b = all (select a from t t2)").Check(testkit.Rows()) - - // for issue 20059 - tk.MustExec("DROP TABLE IF EXISTS `t`") - tk.MustExec("CREATE TABLE `t` ( `a` int(11) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;") - tk.MustExec("INSERT INTO `t` VALUES (1);") - tk.MustExec("DROP TABLE IF EXISTS `table_40_utf8_4`;") - tk.MustExec("CREATE TABLE `table_40_utf8_4` (`col_tinyint_key_unsigned` tinyint(4) DEFAULT NULL, `col_bit64_key_signed` bit(64) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;") - tk.MustExec("INSERT INTO `table_40_utf8_4` VALUES (31, -18);") - tk.MustQuery("select count(1) from table_40_utf8_4 where ( select count(1) from t where table_40_utf8_4.col_bit64_key_signed!=table_40_utf8_4.col_tinyint_key_unsigned)").Check(testkit.Rows("1")) -} - -func TestCheckFullGroupBy(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(a int, b int)") - tk.MustQuery("select t1.a, (select max(t2.b) from t t2) from t t1").Check(testkit.Rows()) - err := tk.ExecToErr("select t1.a, (select t2.a, max(t2.b) from t t2) from t t1") - require.True(t, terror.ErrorEqual(err, plannercore.ErrMixOfGroupFuncAndFields)) -} - -func TestPatternLikeToExpression(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustQuery("select 0 like 'a string';").Check(testkit.Rows("0")) - tk.MustQuery("select 0.0 like 'a string';").Check(testkit.Rows("0")) - tk.MustQuery("select 0 like '0.00';").Check(testkit.Rows("0")) - tk.MustQuery("select cast(\"2011-5-3\" as datetime) like \"2011-05-03\";").Check(testkit.Rows("0")) - tk.MustQuery("select 1 like '1';").Check(testkit.Rows("1")) - tk.MustQuery("select 0 like '0';").Check(testkit.Rows("1")) - tk.MustQuery("select 0.00 like '0.00';").Check(testkit.Rows("1")) -} - -func TestExpressionRewriterIssue(t *testing.T) { - // Issue20007 - 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 (c_int int, c_str varchar(40), c_datetime datetime, primary key(c_int));") - tk.MustExec("create table t2 (c_int int, c_str varchar(40), c_datetime datetime, primary key (c_datetime)) partition by range (to_days(c_datetime)) ( partition p0 values less than (to_days('2020-02-01')), partition p1 values less than (to_days('2020-04-01')), partition p2 values less than (to_days('2020-06-01')), partition p3 values less than maxvalue);") - tk.MustExec("insert into t1 (c_int, c_str, c_datetime) values (1, 'xenodochial bassi', '2020-04-29 03:22:51'), (2, 'epic wiles', '2020-01-02 23:29:51'), (3, 'silly burnell', '2020-02-25 07:43:07');") - tk.MustExec("insert into t2 (c_int, c_str, c_datetime) values (1, 'trusting matsumoto', '2020-01-07 00:57:18'), (2, 'pedantic boyd', '2020-06-08 23:12:16'), (null, 'strange hypatia', '2020-05-23 17:45:27');") - // Test 10 times. - for i := 0; i < 10; i++ { - tk.MustQuery("select * from t1 where c_int != any (select c_int from t2 where t1.c_str <= t2.c_str); ").Check( - testkit.Rows("2 epic wiles 2020-01-02 23:29:51", "3 silly burnell 2020-02-25 07:43:07")) - } - - // Issue9869 - tk.MustExec("drop table if exists t1;") - tk.MustExec("create table t1(a int, b bigint unsigned);") - tk.MustExec("insert into t1 (a, b) values (1,4572794622775114594), (2,18196094287899841997),(3,11120436154190595086);") - tk.MustQuery("select (case t1.a when 0 then 0 else t1.b end), cast(t1.b as signed) from t1;").Check( - testkit.Rows("4572794622775114594 4572794622775114594", "18196094287899841997 -250649785809709619", "11120436154190595086 -7326307919518956530")) - - // Issue17652 - tk.MustExec("drop table if exists t;") - tk.MustExec("create table t(x bigint unsigned);") - tk.MustExec("insert into t values( 9999999703771440633);") - tk.MustQuery("select ifnull(max(x), 0) from t").Check(testkit.Rows("9999999703771440633")) - // Issue22818 - tk.MustExec("drop table if exists t;") - tk.MustExec("create table t(a time);") - tk.MustExec("insert into t values(\"23:22:22\");") - tk.MustQuery("select * from t where a between \"23:22:22\" and \"23:22:22\"").Check(testkit.Rows("23:22:22")) - // Issue24705 - tk.MustExec("drop table if exists t1,t2;") - tk.MustExec("create table t1 (c_int int, c_str varchar(40) character set utf8 collate utf8_general_ci);") - tk.MustExec("create table t2 (c_int int, c_str varchar(40) character set utf8 collate utf8_unicode_ci);") - err := tk.ExecToErr("select * from t1 where c_str < any (select c_str from t2 where c_int between 6 and 9);") - require.EqualError(t, err, "[expression:1267]Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '<'") -} - -func TestCompareMultiFieldsInSubquery(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test;") - tk.MustExec("drop table if exists t1, t2, t3, t4;") - tk.MustExec("CREATE TABLE t1(c1 int, c2 int);") - tk.MustExec("CREATE TABLE t2(c1 int, c2 int);") - tk.MustExec("CREATE TABLE t3(c1 int, c2 int);") - tk.MustExec("CREATE TABLE t4(c1 int, c2 int);") - tk.MustExec("INSERT INTO t1 VALUES (0, 0), (NULL, NULL);") - tk.MustExec("INSERT INTO t2 VALUES (0, 0), (NULL, NULL);") - tk.MustExec("INSERT INTO t3 VALUES (1, 2);") - // issue #13551 and #21674 - tk.MustQuery("SELECT * FROM t2 WHERE (SELECT c1, c2 FROM t2 LIMIT 1) = ANY (SELECT c1, c2 FROM t1);").Check(testkit.Rows("0 0", " ")) - tk.MustQuery("SELECT * FROM t2 WHERE (SELECT c1 FROM t2 LIMIT 1) = ANY (SELECT c1 FROM t1);").Check(testkit.Rows("0 0", " ")) - tk.MustQuery("SELECT * FROM t2 WHERE (SELECT c1, c2 FROM t2 order by c1 LIMIT 1) = ANY (SELECT c1, c2 FROM t1);").Check(testkit.Rows()) - - tk.MustQuery("SELECT * FROM t3 WHERE (SELECT c1 FROM t3 LIMIT 1) != ALL(SELECT c1 FROM t4);").Check(testkit.Rows("1 2")) - tk.MustQuery("SELECT * FROM t3 WHERE (SELECT c1, c2 FROM t3 LIMIT 1) != ALL(SELECT c1, c2 FROM t4);").Check(testkit.Rows("1 2")) - tk.MustExec("INSERT INTO t4 VALUES (1, 3);") - tk.MustQuery("SELECT * FROM t3 WHERE (SELECT c1 FROM t3 LIMIT 1) != ALL(SELECT c1 FROM t4);").Check(testkit.Rows()) - tk.MustQuery("SELECT * FROM t3 WHERE (SELECT c1, c2 FROM t3 LIMIT 1) != ALL(SELECT c1, c2 FROM t4);").Check(testkit.Rows("1 2")) - tk.MustExec("INSERT INTO t4 VALUES (1, 2);") - tk.MustQuery("SELECT * FROM t3 WHERE (SELECT c1 FROM t3 LIMIT 1) != ALL(SELECT c1 FROM t4);").Check(testkit.Rows()) - tk.MustQuery("SELECT * FROM t3 WHERE (SELECT c1, c2 FROM t3 LIMIT 1) != ALL(SELECT c1, c2 FROM t4);").Check(testkit.Rows()) -} - -func TestBetweenExprCollation(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(a char(10) charset latin1 collate latin1_bin, c char(10) collate utf8mb4_general_ci);") - tk.MustExec("insert into t1 values ('a', 'B');") - tk.MustExec("insert into t1 values ('c', 'D');") - tk.MustQuery("select * from t1 where a between 'B' and c;").Check(testkit.Rows("c D")) - tk.MustQuery("explain select * from t1 where 'a' between 'g' and 'f';").Check(testkit.Rows("TableDual_6 0.00 root rows:0")) - tk.MustGetErrMsg("select * from t1 where a between 'B' collate utf8mb4_general_ci and c collate utf8mb4_unicode_ci;", "[expression:1270]Illegal mix of collations (latin1_bin,IMPLICIT), (utf8mb4_general_ci,EXPLICIT), (utf8mb4_unicode_ci,EXPLICIT) for operation 'BETWEEN'") -} - -func TestInsertOnDuplicateLazyMoreThan1Row(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("DROP TABLE if exists t1, t2, source;") - tk.MustExec("CREATE TABLE t1(a INTEGER PRIMARY KEY);") - tk.MustExec("CREATE TABLE t2(a INTEGER);") - tk.MustExec("CREATE TABLE source (b INTEGER);") - tk.MustExec("INSERT INTO t1 VALUES (1);") - tk.MustExec("INSERT INTO t2 VALUES (1);") - tk.MustExec("INSERT INTO source VALUES (1),(1);") - // the on duplicate is not triggered by t1's primary key. - tk.MustGetErrCode("INSERT INTO t1 (a) VALUES (1) ON DUPLICATE KEY UPDATE a= (SELECT b FROM source);", mysql.ErrSubqueryNo1Row) - // the on duplicate is not triggered. - tk.MustExec("INSERT INTO t2 (a) VALUES (1) ON DUPLICATE KEY UPDATE a= (SELECT b FROM source);") - tk.MustExec("DROP TABLE if exists t1, t2, source;") -} - -func TestConvertIfNullToCast(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(cnotnull tinyint not null, cnull tinyint null);") - tk.MustExec("INSERT INTO t1 VALUES(1, 1);") - tk.MustQuery("select CAST(IFNULL(cnull, '1') AS DATE), CAST(IFNULL(cnotnull, '1') AS DATE) from t1;").Check(testkit.Rows(" ")) - tk.MustQuery("explain format=\"brief\" select IFNULL(cnotnull, '1') from t1;").Check(testkit.Rows( - "Projection 10000.00 root cast(test.t1.cnotnull, varchar(4) BINARY CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#4]\n" + - "[└─TableReader 10000.00 root data:TableFullScan]\n" + - "[ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", - )) -} - -func TestColResolutionPriBetweenOuterAndNatureJoin(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test;") - tk.MustExec("DROP TABLE if exists t0;") - tk.MustExec("DROP VIEW if exists t0;") - tk.MustExec("CREATE TABLE t0(c0 TEXT(328) );") - tk.MustExec("CREATE definer='root'@'localhost' VIEW v0(c0) AS SELECT 'c' FROM t0;") - tk.MustExec("INSERT INTO t0 VALUES (-12);") - tk.MustQuery("SELECT v0.c0 AS c0 FROM v0 NATURAL RIGHT JOIN t0 WHERE (1 !=((v0.c0)REGEXP(-7)));").Check(testkit.Rows()) - tk.MustQuery("SELECT COUNT(v0.c0) AS c0 FROM v0 WHERE EXISTS(SELECT v0.c0 AS c0 FROM v0 NATURAL RIGHT JOIN t0 WHERE (1 !=((v0.c0)REGEXP(-7))));").Check(testkit.Rows("0")) -} - -func TestColResolutionSubqueryWithUnionAll(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("DROP TABLE if exists t;") - tk.MustExec("create table t1(a int);") - tk.MustExec("create table t2(a int);") - tk.MustExec("create table t(a int);") - tk.MustQuery("select * from t where exists ( select a from ( select a from t1 union all select a from t2) u where t.a=u.a);").Check(testkit.Rows()) -} - -func TestDefaultCollationForUTF8MB4(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test;") - tk.MustExec(`set @a = 'xx'`) - // utf8mb4_bin - tk.MustQuery("select * from information_schema.COLLATIONS where IS_DEFAULT='Yes' and CHARACTER_SET_NAME='utf8mb4'").Check(testkit.Rows("utf8mb4_bin utf8mb4 46 Yes Yes 1")) - tk.MustQuery("select collation(_utf8mb4'12345')").Check(testkit.Rows("utf8mb4_bin")) - tk.MustQuery("select collation(_utf8mb4'xxx' collate utf8mb4_general_ci);").Check(testkit.Rows("utf8mb4_general_ci")) - tk.MustQuery("select collation(_utf8mb4'@a')").Check(testkit.Rows("utf8mb4_bin")) - tk.MustQuery("select collation(_utf8mb4'@a' collate utf8mb4_general_ci);").Check(testkit.Rows("utf8mb4_general_ci")) - // utf8mb4_0900_ai_ci - tk.MustExec("set @@session.default_collation_for_utf8mb4='utf8mb4_0900_ai_ci'") - tk.MustQuery("select * from information_schema.COLLATIONS where IS_DEFAULT='Yes' and CHARACTER_SET_NAME='utf8mb4'").Check(testkit.Rows("utf8mb4_bin utf8mb4 46 Yes Yes 1")) - tk.MustQuery("select collation(_utf8mb4'12345')").Check(testkit.Rows("utf8mb4_0900_ai_ci")) - tk.MustQuery("select collation(_utf8mb4'12345' collate utf8mb4_general_ci);").Check(testkit.Rows("utf8mb4_general_ci")) - tk.MustQuery("select collation(_utf8mb4'@a')").Check(testkit.Rows("utf8mb4_0900_ai_ci")) - tk.MustQuery("select collation(_utf8mb4'@a' collate utf8mb4_general_ci);").Check(testkit.Rows("utf8mb4_general_ci")) -} diff --git a/pkg/planner/core/find_best_task.go b/pkg/planner/core/find_best_task.go index dd19f6e2d0ed4..c2b469d46d043 100644 --- a/pkg/planner/core/find_best_task.go +++ b/pkg/planner/core/find_best_task.go @@ -33,7 +33,6 @@ import ( "github.com/pingcap/tidb/pkg/planner/util" "github.com/pingcap/tidb/pkg/planner/util/fixcontrol" "github.com/pingcap/tidb/pkg/sessionctx" - "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/statistics" "github.com/pingcap/tidb/pkg/types" tidbutil "github.com/pingcap/tidb/pkg/util" @@ -405,7 +404,10 @@ func getTaskPlanCost(t task, op *physicalOptimizeOp) (float64, bool, error) { } // use the new cost interface - var taskType property.TaskType + var ( + taskType property.TaskType + indexPartialCost float64 + ) switch t.(type) { case *rootTask: taskType = property.RootTaskType @@ -442,6 +444,20 @@ func getTaskPlanCost(t task, op *physicalOptimizeOp) (float64, bool, error) { taskType = property.MppTaskType } } + + // Detail reason ref about comment in function `convertToIndexMergeScan` + // for cop task with {indexPlan=nil, tablePlan=xxx, idxMergePartPlans=[x,x,x], indexPlanFinished=true} we should + // plus the partial index plan cost into the final cost. Because t.plan() the below code used only calculate the + // cost about table plan. + if cop.indexPlanFinished && len(cop.idxMergePartPlans) != 0 { + for _, partialScan := range cop.idxMergePartPlans { + partialCost, err := getPlanCost(partialScan, taskType, NewDefaultPlanCostOption().WithOptimizeTracer(op)) + if err != nil { + return 0, false, err + } + indexPartialCost += partialCost + } + } case *mppTask: taskType = property.MppTaskType default: @@ -449,6 +465,7 @@ func getTaskPlanCost(t task, op *physicalOptimizeOp) (float64, bool, error) { } if t.plan() == nil { // It's a very special case for index merge case. + // t.plan() == nil in index merge COP case, it means indexPlanFinished is false in other words. cost := 0.0 copTsk := t.(*copTask) for _, partialScan := range copTsk.idxMergePartPlans { @@ -461,7 +478,7 @@ func getTaskPlanCost(t task, op *physicalOptimizeOp) (float64, bool, error) { return cost, false, nil } cost, err := getPlanCost(t.plan(), taskType, NewDefaultPlanCostOption().WithOptimizeTracer(op)) - return cost, false, err + return cost + indexPartialCost, false, err } type physicalOptimizeOp struct { @@ -771,7 +788,7 @@ func (ds *DataSource) isMatchProp(path *util.AccessPath, prop *property.Physical if path.IsIntHandlePath { pkCol := ds.getPKIsHandleCol() if len(prop.SortItems) == 1 && pkCol != nil { - isMatchProp = prop.SortItems[0].Col.Equal(nil, pkCol) + isMatchProp = prop.SortItems[0].Col.EqualColumn(pkCol) if path.StoreType == kv.TiFlash { isMatchProp = isMatchProp && !prop.SortItems[0].Desc } @@ -799,7 +816,7 @@ func (ds *DataSource) isMatchProp(path *util.AccessPath, prop *property.Physical for _, sortItem := range prop.SortItems { found := false for ; i < len(path.IdxCols); i++ { - if path.IdxColLens[i] == types.UnspecifiedLength && sortItem.Col.Equal(nil, path.IdxCols[i]) { + if path.IdxColLens[i] == types.UnspecifiedLength && sortItem.Col.EqualColumn(path.IdxCols[i]) { found = true i++ break @@ -837,15 +854,15 @@ func (ds *DataSource) isMatchPropForIndexMerge(path *util.AccessPath, prop *prop func (ds *DataSource) getTableCandidate(path *util.AccessPath, prop *property.PhysicalProperty) *candidatePath { candidate := &candidatePath{path: path} candidate.isMatchProp = ds.isMatchProp(path, prop) - candidate.accessCondsColMap = util.ExtractCol2Len(path.AccessConds, nil, nil) + candidate.accessCondsColMap = util.ExtractCol2Len(ds.SCtx(), path.AccessConds, nil, nil) return candidate } func (ds *DataSource) getIndexCandidate(path *util.AccessPath, prop *property.PhysicalProperty) *candidatePath { candidate := &candidatePath{path: path} candidate.isMatchProp = ds.isMatchProp(path, prop) - candidate.accessCondsColMap = util.ExtractCol2Len(path.AccessConds, path.IdxCols, path.IdxColLens) - candidate.indexCondsColMap = util.ExtractCol2Len(append(path.AccessConds, path.IndexFilters...), path.FullIdxCols, path.FullIdxColLens) + candidate.accessCondsColMap = util.ExtractCol2Len(ds.SCtx(), path.AccessConds, path.IdxCols, path.IdxColLens) + candidate.indexCondsColMap = util.ExtractCol2Len(ds.SCtx(), append(path.AccessConds, path.IndexFilters...), path.FullIdxCols, path.FullIdxColLens) return candidate } @@ -1374,6 +1391,11 @@ func (ds *DataSource) convertToIndexMergeScan(prop *property.PhysicalProperty, c if remainingFilters != nil { cop.rootTaskConds = remainingFilters } + // after we lift the limitation of intersection and cop-type task in the code in this + // function above, we could set its index plan finished as true once we found its table + // plan is pure table scan below. + // And this will cause cost underestimation when we estimate the cost of the entire cop + // task plan in function `getTaskPlanCost`. if prop.TaskTp == property.RootTaskType { cop.indexPlanFinished = true task = cop.convertToRootTask(ds.SCtx()) @@ -1500,7 +1522,6 @@ func setIndexMergeTableScanHandleCols(ds *DataSource, ts *PhysicalTableScan) (er // Filters that cannot be pushed to TiKV are also returned, and an extra Selection above IndexMergeReader will be constructed later. func (ds *DataSource) buildIndexMergeTableScan(tableFilters []expression.Expression, totalRowCount float64, matchProp bool) (PhysicalPlan, []expression.Expression, bool, error) { - sessVars := ds.SCtx().GetSessionVars() ts := PhysicalTableScan{ Table: ds.tableInfo, Columns: slices.Clone(ds.Columns), @@ -1527,7 +1548,7 @@ func (ds *DataSource) buildIndexMergeTableScan(tableFilters []expression.Express } var currentTopPlan PhysicalPlan = ts if len(tableFilters) > 0 { - pushedFilters, remainingFilters := extractFiltersForIndexMerge(sessVars.StmtCtx, ds.SCtx().GetClient(), tableFilters) + pushedFilters, remainingFilters := extractFiltersForIndexMerge(ds.SCtx(), ds.SCtx().GetClient(), tableFilters) pushedFilters1, remainingFilters1 := SplitSelCondsWithVirtualColumn(pushedFilters) pushedFilters = pushedFilters1 remainingFilters = append(remainingFilters, remainingFilters1...) @@ -1593,22 +1614,22 @@ func (ds *DataSource) buildIndexMergeTableScan(tableFilters []expression.Express // // But the new Selection should exclude the exprs that can NOT be pushed to ALL the storage engines. // Because these exprs have already been put in another Selection(check rule_predicate_push_down). -func extractFiltersForIndexMerge(sc *stmtctx.StatementContext, client kv.Client, filters []expression.Expression) (pushed []expression.Expression, remaining []expression.Expression) { +func extractFiltersForIndexMerge(ctx sessionctx.Context, client kv.Client, filters []expression.Expression) (pushed []expression.Expression, remaining []expression.Expression) { for _, expr := range filters { - if expression.CanExprsPushDown(sc, []expression.Expression{expr}, client, kv.TiKV) { + if expression.CanExprsPushDown(ctx, []expression.Expression{expr}, client, kv.TiKV) { pushed = append(pushed, expr) continue } - if expression.CanExprsPushDown(sc, []expression.Expression{expr}, client, kv.UnSpecified) { + if expression.CanExprsPushDown(ctx, []expression.Expression{expr}, client, kv.UnSpecified) { remaining = append(remaining, expr) } } return } -func isIndexColsCoveringCol(col *expression.Column, indexCols []*expression.Column, idxColLens []int, ignoreLen bool) bool { +func isIndexColsCoveringCol(sctx sessionctx.Context, col *expression.Column, indexCols []*expression.Column, idxColLens []int, ignoreLen bool) bool { for i, indexCol := range indexCols { - if indexCol == nil || !col.EqualByExprAndID(nil, indexCol) { + if indexCol == nil || !col.EqualByExprAndID(sctx, indexCol) { continue } if ignoreLen || idxColLens[i] == types.UnspecifiedLength || idxColLens[i] == col.RetType.GetFlen() { @@ -1625,8 +1646,8 @@ func (ds *DataSource) indexCoveringColumn(column *expression.Column, indexColumn if column.ID == model.ExtraHandleID { return true } - coveredByPlainIndex := isIndexColsCoveringCol(column, indexColumns, idxColLens, ignoreLen) - coveredByClusteredIndex := isIndexColsCoveringCol(column, ds.commonHandleCols, ds.commonHandleLens, ignoreLen) + coveredByPlainIndex := isIndexColsCoveringCol(ds.SCtx(), column, indexColumns, idxColLens, ignoreLen) + coveredByClusteredIndex := isIndexColsCoveringCol(ds.SCtx(), column, ds.commonHandleCols, ds.commonHandleLens, ignoreLen) if !coveredByPlainIndex && !coveredByClusteredIndex { return false } @@ -1921,10 +1942,10 @@ func (is *PhysicalIndexScan) addPushedDownSelection(copTask *copTask, p *DataSou tableConds, copTask.rootTaskConds = SplitSelCondsWithVirtualColumn(tableConds) var newRootConds []expression.Expression - indexConds, newRootConds = expression.PushDownExprs(is.SCtx().GetSessionVars().StmtCtx, indexConds, is.SCtx().GetClient(), kv.TiKV) + indexConds, newRootConds = expression.PushDownExprs(is.SCtx(), indexConds, is.SCtx().GetClient(), kv.TiKV) copTask.rootTaskConds = append(copTask.rootTaskConds, newRootConds...) - tableConds, newRootConds = expression.PushDownExprs(is.SCtx().GetSessionVars().StmtCtx, tableConds, is.SCtx().GetClient(), kv.TiKV) + tableConds, newRootConds = expression.PushDownExprs(is.SCtx(), tableConds, is.SCtx().GetClient(), kv.TiKV) copTask.rootTaskConds = append(copTask.rootTaskConds, newRootConds...) if indexConds != nil { @@ -1983,12 +2004,12 @@ func SplitSelCondsWithVirtualColumn(conds []expression.Expression) (withoutVirt return withoutVirt, withVirt } -func matchIndicesProp(idxCols []*expression.Column, colLens []int, propItems []property.SortItem) bool { +func matchIndicesProp(sctx sessionctx.Context, idxCols []*expression.Column, colLens []int, propItems []property.SortItem) bool { if len(idxCols) < len(propItems) { return false } for i, item := range propItems { - if colLens[i] != types.UnspecifiedLength || !item.Col.EqualByExprAndID(nil, idxCols[i]) { + if colLens[i] != types.UnspecifiedLength || !item.Col.EqualByExprAndID(sctx, idxCols[i]) { return false } } @@ -2423,7 +2444,7 @@ func (ds *DataSource) convertToBatchPointGet(prop *property.PhysicalProperty, ca func (ts *PhysicalTableScan) addPushedDownSelectionToMppTask(mpp *mppTask, stats *property.StatsInfo) *mppTask { filterCondition, rootTaskConds := SplitSelCondsWithVirtualColumn(ts.filterCondition) var newRootConds []expression.Expression - filterCondition, newRootConds = expression.PushDownExprs(ts.SCtx().GetSessionVars().StmtCtx, filterCondition, ts.SCtx().GetClient(), ts.StoreType) + filterCondition, newRootConds = expression.PushDownExprs(ts.SCtx(), filterCondition, ts.SCtx().GetClient(), ts.StoreType) mpp.rootTaskConds = append(rootTaskConds, newRootConds...) ts.filterCondition = filterCondition @@ -2439,7 +2460,7 @@ func (ts *PhysicalTableScan) addPushedDownSelectionToMppTask(mpp *mppTask, stats func (ts *PhysicalTableScan) addPushedDownSelection(copTask *copTask, stats *property.StatsInfo) { ts.filterCondition, copTask.rootTaskConds = SplitSelCondsWithVirtualColumn(ts.filterCondition) var newRootConds []expression.Expression - ts.filterCondition, newRootConds = expression.PushDownExprs(ts.SCtx().GetSessionVars().StmtCtx, ts.filterCondition, ts.SCtx().GetClient(), ts.StoreType) + ts.filterCondition, newRootConds = expression.PushDownExprs(ts.SCtx(), ts.filterCondition, ts.SCtx().GetClient(), ts.StoreType) copTask.rootTaskConds = append(copTask.rootTaskConds, newRootConds...) // Add filter condition to table plan now. diff --git a/pkg/planner/core/fragment.go b/pkg/planner/core/fragment.go index c74598eba0c0f..06745c5e26fcb 100644 --- a/pkg/planner/core/fragment.go +++ b/pkg/planner/core/fragment.go @@ -142,13 +142,14 @@ func AllocMPPQueryID() uint64 { } func (e *mppTaskGenerator) generateMPPTasks(s *PhysicalExchangeSender) ([]*Fragment, error) { - mppVersion := e.ctx.GetSessionVars().ChooseMppVersion() tidbTask := &kv.MPPTask{ - StartTs: e.startTS, - GatherID: e.gatherID, - MppQueryID: e.mppQueryID, - ID: -1, - MppVersion: mppVersion, + StartTs: e.startTS, + GatherID: e.gatherID, + MppQueryID: e.mppQueryID, + ID: -1, + MppVersion: e.ctx.GetSessionVars().ChooseMppVersion(), + SessionID: e.ctx.GetSessionVars().ConnectionID, + SessionAlias: e.ctx.GetSessionVars().SessionAlias, } _, frags, err := e.generateMPPTasksForExchangeSender(s) if err != nil { @@ -183,6 +184,10 @@ func (e *mppTaskGenerator) constructMPPTasksByChildrenTasks(tasks []*kv.MPPTask, cteAddrMap[addr] = struct{}{} } } + + mppVersion := e.ctx.GetSessionVars().ChooseMppVersion() + sessionID := e.ctx.GetSessionVars().ConnectionID + sessionAlias := e.ctx.GetSessionVars().SessionAlias for _, task := range tasks { addr := task.Meta.GetAddress() // for upper fragment, the task num is equal to address num covered by lower tasks @@ -193,13 +198,15 @@ func (e *mppTaskGenerator) constructMPPTasksByChildrenTasks(tasks []*kv.MPPTask, } if !ok { mppTask := &kv.MPPTask{ - Meta: &mppAddr{addr: addr}, - ID: AllocMPPTaskID(e.ctx), - GatherID: e.gatherID, - MppQueryID: e.mppQueryID, - StartTs: e.startTS, - TableID: -1, - MppVersion: e.ctx.GetSessionVars().ChooseMppVersion(), + Meta: &mppAddr{addr: addr}, + ID: AllocMPPTaskID(e.ctx), + GatherID: e.gatherID, + MppQueryID: e.mppQueryID, + StartTs: e.startTS, + TableID: -1, + MppVersion: mppVersion, + SessionID: sessionID, + SessionAlias: sessionAlias, } newTasks = append(newTasks, mppTask) addressMap[addr] = struct{}{} @@ -580,18 +587,23 @@ func (e *mppTaskGenerator) constructMPPTasksImpl(ctx context.Context, ts *Physic return nil, errors.Trace(err) } + mppVersion := e.ctx.GetSessionVars().ChooseMppVersion() + sessionID := e.ctx.GetSessionVars().ConnectionID + sessionAlias := e.ctx.GetSessionVars().SessionAlias tasks := make([]*kv.MPPTask, 0, len(metas)) for _, meta := range metas { task := &kv.MPPTask{ Meta: meta, ID: AllocMPPTaskID(e.ctx), - MppVersion: e.ctx.GetSessionVars().ChooseMppVersion(), StartTs: e.startTS, GatherID: e.gatherID, MppQueryID: e.mppQueryID, TableID: ts.Table.ID, PartitionTableIDs: allPartitionsIDs, TiFlashStaticPrune: tiFlashStaticPrune, + MppVersion: mppVersion, + SessionID: sessionID, + SessionAlias: sessionAlias, } tasks = append(tasks, task) } diff --git a/pkg/planner/core/handle_cols.go b/pkg/planner/core/handle_cols.go index 13c07443501f9..9c36ab5843da8 100644 --- a/pkg/planner/core/handle_cols.go +++ b/pkg/planner/core/handle_cols.go @@ -72,7 +72,8 @@ type CommonHandleCols struct { func (cb *CommonHandleCols) buildHandleByDatumsBuffer(datumBuf []types.Datum) (kv.Handle, error) { tablecodec.TruncateIndexValues(cb.tblInfo, cb.idxInfo, datumBuf) - handleBytes, err := codec.EncodeKey(cb.sc, nil, datumBuf...) + handleBytes, err := codec.EncodeKey(cb.sc.TimeZone(), nil, datumBuf...) + err = cb.sc.HandleError(err) if err != nil { return nil, err } @@ -163,7 +164,7 @@ func (cb *CommonHandleCols) String() string { if i != 0 { b.WriteByte(',') } - b.WriteString(col.ExplainInfo()) + b.WriteString(col.ColumnExplainInfo(false)) } b.WriteByte(']') return b.String() @@ -268,7 +269,7 @@ func (*IntHandleCols) IsInt() bool { // String implements the kv.HandleCols interface. func (ib *IntHandleCols) String() string { - return ib.col.ExplainInfo() + return ib.col.ColumnExplainInfo(false) } // GetCol implements the kv.HandleCols interface. diff --git a/pkg/planner/core/hashcode.go b/pkg/planner/core/hashcode.go index c7854fe5cb7d1..073e8afa1c9c2 100644 --- a/pkg/planner/core/hashcode.go +++ b/pkg/planner/core/hashcode.go @@ -47,7 +47,7 @@ func (p *LogicalProjection) HashCode() []byte { result = encodeIntAsUint32(result, p.SelectBlockOffset()) result = encodeIntAsUint32(result, len(p.Exprs)) for _, expr := range p.Exprs { - exprHashCode := expr.HashCode(p.SCtx().GetSessionVars().StmtCtx) + exprHashCode := expr.HashCode() result = encodeIntAsUint32(result, len(exprHashCode)) result = append(result, exprHashCode...) } @@ -76,7 +76,7 @@ func (p *LogicalSelection) HashCode() []byte { condHashCodes := make([][]byte, len(p.Conditions)) for i, expr := range p.Conditions { - condHashCodes[i] = expr.HashCode(p.SCtx().GetSessionVars().StmtCtx) + condHashCodes[i] = expr.HashCode() } // Sort the conditions, so `a > 1 and a < 100` can equal to `a < 100 and a > 1`. slices.SortFunc(condHashCodes, func(i, j []byte) int { return bytes.Compare(i, j) }) diff --git a/pkg/planner/core/hints.go b/pkg/planner/core/hints.go index b73045caa1de6..2eafe2aefe6ee 100644 --- a/pkg/planner/core/hints.go +++ b/pkg/planner/core/hints.go @@ -108,7 +108,10 @@ func getJoinHints(sctx sessionctx.Context, joinType string, parentOffset int, no } var dbName, tableName *model.CIStr if blockOffset != parentOffset { - blockAsNames := *(sctx.GetSessionVars().PlannerSelectBlockAsName.Load()) + var blockAsNames []ast.HintTable + if p := sctx.GetSessionVars().PlannerSelectBlockAsName.Load(); p != nil { + blockAsNames = *p + } if blockOffset >= len(blockAsNames) { continue } diff --git a/pkg/planner/core/indexmerge_path.go b/pkg/planner/core/indexmerge_path.go index d4eb85f3004e3..f62622d8081dd 100644 --- a/pkg/planner/core/indexmerge_path.go +++ b/pkg/planner/core/indexmerge_path.go @@ -124,7 +124,7 @@ func (ds *DataSource) generateNormalIndexPartialPaths4DNF(dnfItems []expression. cnfItems := expression.SplitCNFItems(item) pushedDownCNFItems := make([]expression.Expression, 0, len(cnfItems)) for _, cnfItem := range cnfItems { - if expression.CanExprsPushDown(ds.SCtx().GetSessionVars().StmtCtx, + if expression.CanExprsPushDown(ds.SCtx(), []expression.Expression{cnfItem}, ds.SCtx().GetClient(), kv.TiKV, @@ -166,7 +166,7 @@ func (ds *DataSource) generateNormalIndexPartialPaths4DNF(dnfItems []expression. partialPath.TableFilters = nil } // If any partial path's index filter cannot be pushed to TiKV, we should keep the whole DNF filter. - if len(partialPath.IndexFilters) != 0 && !expression.CanExprsPushDown(ds.SCtx().GetSessionVars().StmtCtx, partialPath.IndexFilters, ds.SCtx().GetClient(), kv.TiKV) { + if len(partialPath.IndexFilters) != 0 && !expression.CanExprsPushDown(ds.SCtx(), partialPath.IndexFilters, ds.SCtx().GetClient(), kv.TiKV) { needSelection = true // Clear IndexFilter, the whole filter will be put in indexMergePath.TableFilters. partialPath.IndexFilters = nil @@ -199,7 +199,7 @@ func (ds *DataSource) generateIndexMergeOrPaths(filters []expression.Expression) pushedDownCNFItems := make([]expression.Expression, 0, len(cnfItems)) for _, cnfItem := range cnfItems { - if expression.CanExprsPushDown(ds.SCtx().GetSessionVars().StmtCtx, + if expression.CanExprsPushDown(ds.SCtx(), []expression.Expression{cnfItem}, ds.SCtx().GetClient(), kv.TiKV, @@ -429,12 +429,12 @@ func (ds *DataSource) buildIndexMergeOrPath( shouldKeepCurrentFilter = true } // If any partial path's index filter cannot be pushed to TiKV, we should keep the whole DNF filter. - if len(path.IndexFilters) != 0 && !expression.CanExprsPushDown(ds.SCtx().GetSessionVars().StmtCtx, path.IndexFilters, ds.SCtx().GetClient(), kv.TiKV) { + if len(path.IndexFilters) != 0 && !expression.CanExprsPushDown(ds.SCtx(), path.IndexFilters, ds.SCtx().GetClient(), kv.TiKV) { shouldKeepCurrentFilter = true // Clear IndexFilter, the whole filter will be put in indexMergePath.TableFilters. path.IndexFilters = nil } - if len(path.TableFilters) != 0 && !expression.CanExprsPushDown(ds.SCtx().GetSessionVars().StmtCtx, path.TableFilters, ds.SCtx().GetClient(), kv.TiKV) { + if len(path.TableFilters) != 0 && !expression.CanExprsPushDown(ds.SCtx(), path.TableFilters, ds.SCtx().GetClient(), kv.TiKV) { shouldKeepCurrentFilter = true path.TableFilters = nil } @@ -531,7 +531,7 @@ func (ds *DataSource) generateIndexMergeAndPaths(normalPathCnt int, usedAccessMa // since idx2's access cond has already been covered by idx1. containRelation := true for _, access := range originalPath.AccessConds { - if _, ok := usedAccessMap[string(access.HashCode(ds.SCtx().GetSessionVars().StmtCtx))]; !ok { + if _, ok := usedAccessMap[string(access.HashCode())]; !ok { // some condition is not covered in previous mv index partial path, use it! containRelation = false break @@ -542,8 +542,8 @@ func (ds *DataSource) generateIndexMergeAndPaths(normalPathCnt int, usedAccessMa } // for this picked normal index, mark its access conds. for _, access := range originalPath.AccessConds { - if _, ok := usedAccessMap[string(access.HashCode(ds.SCtx().GetSessionVars().StmtCtx))]; !ok { - usedAccessMap[string(access.HashCode(ds.SCtx().GetSessionVars().StmtCtx))] = access + if _, ok := usedAccessMap[string(access.HashCode())]; !ok { + usedAccessMap[string(access.HashCode())] = access } } } @@ -570,7 +570,7 @@ func (ds *DataSource) generateIndexMergeAndPaths(normalPathCnt int, usedAccessMa coveredConds = append(coveredConds, path.AccessConds...) for i, cond := range path.IndexFilters { // IndexFilters can be covered by partial path if it can be pushed down to TiKV. - if !expression.CanExprsPushDown(ds.SCtx().GetSessionVars().StmtCtx, []expression.Expression{cond}, ds.SCtx().GetClient(), kv.TiKV) { + if !expression.CanExprsPushDown(ds.SCtx(), []expression.Expression{cond}, ds.SCtx().GetClient(), kv.TiKV) { path.IndexFilters = append(path.IndexFilters[:i], path.IndexFilters[i+1:]...) notCoveredConds = append(notCoveredConds, cond) } else { @@ -586,11 +586,11 @@ func (ds *DataSource) generateIndexMergeAndPaths(normalPathCnt int, usedAccessMa // avoid wrong deduplication. notCoveredHashCodeSet := make(map[string]struct{}) for _, cond := range notCoveredConds { - hashCode := string(cond.HashCode(ds.SCtx().GetSessionVars().StmtCtx)) + hashCode := string(cond.HashCode()) notCoveredHashCodeSet[hashCode] = struct{}{} } for _, cond := range coveredConds { - hashCode := string(cond.HashCode(ds.SCtx().GetSessionVars().StmtCtx)) + hashCode := string(cond.HashCode()) if _, ok := notCoveredHashCodeSet[hashCode]; !ok { hashCodeSet[hashCode] = struct{}{} } @@ -603,7 +603,7 @@ func (ds *DataSource) generateIndexMergeAndPaths(normalPathCnt int, usedAccessMa // Remove covered filters from finalFilters and deduplicate finalFilters. dedupedFinalFilters := make([]expression.Expression, 0, len(finalFilters)) for _, cond := range finalFilters { - hashCode := string(cond.HashCode(ds.SCtx().GetSessionVars().StmtCtx)) + hashCode := string(cond.HashCode()) if _, ok := hashCodeSet[hashCode]; !ok { dedupedFinalFilters = append(dedupedFinalFilters, cond) hashCodeSet[hashCode] = struct{}{} @@ -778,7 +778,7 @@ func (ds *DataSource) generateMVIndexMergePartialPaths4And(normalPathCnt int, in // And(path1, path2, And(path3, path4)) => And(path1, path2, path3, path4, merge(table-action like filter) if len(partialPaths) == 1 || isIntersection { for _, accessF := range accessFilters { - usedAccessCondsMap[string(accessF.HashCode(ds.SCtx().GetSessionVars().StmtCtx))] = accessF + usedAccessCondsMap[string(accessF.HashCode())] = accessF } mvAndPartialPath = append(mvAndPartialPath, partialPaths...) } @@ -811,7 +811,7 @@ func (ds *DataSource) generateIndexMerge4NormalIndex(regularPathCount int, index // PushDownExprs() will append extra warnings, which is annoying. So we reset warnings here. warnings := stmtCtx.GetWarnings() extraWarnings := stmtCtx.GetExtraWarnings() - _, remaining := expression.PushDownExprs(stmtCtx, indexMergeConds, ds.SCtx().GetClient(), kv.UnSpecified) + _, remaining := expression.PushDownExprs(ds.SCtx(), indexMergeConds, ds.SCtx().GetClient(), kv.UnSpecified) stmtCtx.SetWarnings(warnings) stmtCtx.SetExtraWarnings(extraWarnings) if len(remaining) > 0 { @@ -1065,7 +1065,7 @@ func (ds *DataSource) generateIndexMerge4ComposedIndex(normalPathCnt int, indexM // collect the remained CNF conditions var remainedCNFs []expression.Expression for _, CNFItem := range indexMergeConds { - if _, ok := usedAccessMap[string(CNFItem.HashCode(ds.SCtx().GetSessionVars().StmtCtx))]; !ok { + if _, ok := usedAccessMap[string(CNFItem.HashCode())]; !ok { remainedCNFs = append(remainedCNFs, CNFItem) } } diff --git a/pkg/planner/core/integration_partition_test.go b/pkg/planner/core/integration_partition_test.go index ed2d15bdad374..545a18b900a20 100644 --- a/pkg/planner/core/integration_partition_test.go +++ b/pkg/planner/core/integration_partition_test.go @@ -21,11 +21,8 @@ import ( "strconv" "testing" - "github.com/pingcap/tidb/pkg/parser/auth" - "github.com/pingcap/tidb/pkg/session" "github.com/pingcap/tidb/pkg/testkit" "github.com/pingcap/tidb/pkg/util/benchdaily" - "github.com/stretchr/testify/require" ) func TestListPartitionOrderLimit(t *testing.T) { @@ -144,44 +141,6 @@ func TestListPartitionAgg(t *testing.T) { } } -func TestListPartitionPrivilege(t *testing.T) { - store := testkit.CreateMockStore(t) - - tk := testkit.NewTestKit(t, store) - - se, err := session.CreateSession4Test(store) - require.NoError(t, err) - require.NoError(t, se.Auth(&auth.UserIdentity{Username: "root", Hostname: "%"}, nil, nil, nil)) - tk.SetSession(se) - tk.MustExec("create database list_partition_pri") - tk.MustExec("use list_partition_pri") - tk.MustExec("drop table if exists tlist") - tk.MustExec(`set tidb_enable_list_partition = 1`) - tk.MustExec(`create table tlist (a int) partition by list (a) (partition p0 values in (0), partition p1 values in (1))`) - - tk.MustExec(`create user 'priv_test'@'%'`) - tk.MustExec(`grant select on list_partition_pri.tlist to 'priv_test'`) - - tk1 := testkit.NewTestKit(t, store) - se, err = session.CreateSession4Test(store) - require.NoError(t, err) - require.NoError(t, se.Auth(&auth.UserIdentity{Username: "priv_test", Hostname: "%"}, nil, nil, nil)) - tk1.SetSession(se) - tk1.MustExec(`use list_partition_pri`) - err = tk1.ExecToErr(`alter table tlist truncate partition p0`) - require.Error(t, err) - require.Contains(t, err.Error(), "denied") - err = tk1.ExecToErr(`alter table tlist drop partition p0`) - require.Error(t, err) - require.Contains(t, err.Error(), "denied") - err = tk1.ExecToErr(`alter table tlist add partition (partition p2 values in (2))`) - require.Error(t, err) - require.Contains(t, err.Error(), "denied") - err = tk1.ExecToErr(`insert into tlist values (1)`) - require.Error(t, err) - require.Contains(t, err.Error(), "denied") -} - func TestListPartitionView(t *testing.T) { store := testkit.CreateMockStore(t) diff --git a/pkg/planner/core/integration_test.go b/pkg/planner/core/integration_test.go index b572bec656c94..8c19e618f51db 100644 --- a/pkg/planner/core/integration_test.go +++ b/pkg/planner/core/integration_test.go @@ -23,18 +23,14 @@ import ( "testing" "time" - "github.com/pingcap/errors" "github.com/pingcap/failpoint" "github.com/pingcap/tidb/pkg/config" "github.com/pingcap/tidb/pkg/domain" - "github.com/pingcap/tidb/pkg/errno" "github.com/pingcap/tidb/pkg/expression" "github.com/pingcap/tidb/pkg/infoschema" "github.com/pingcap/tidb/pkg/parser/auth" "github.com/pingcap/tidb/pkg/parser/model" - "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/planner/core" - "github.com/pingcap/tidb/pkg/session" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/table" "github.com/pingcap/tidb/pkg/testkit" @@ -147,95 +143,6 @@ func TestIssue15110(t *testing.T) { tk.MustExec("explain format = 'brief' SELECT count(*) FROM crm_rd_150m dataset_48 WHERE (CASE WHEN (month(dataset_48.customer_first_date)) <= 30 THEN '新客' ELSE NULL END) IS NOT NULL;") } -func TestKeepOrderHintWithBinding(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - - tk.MustExec("use test") - tk.MustExec("set tidb_cost_model_version=2") - tk.MustExec("drop table if exists t1") - tk.MustExec("create table t1(a int, b int, index idx_a(a));") - - // create binding for order_index hint - tk.MustExec("select * from t1 where a<10 order by a limit 1;") - tk.MustQuery("select @@last_plan_from_binding").Check(testkit.Rows("0")) - tk.MustExec("create global binding for select * from t1 where a<10 order by a limit 1 using select /*+ order_index(t1, idx_a) */ * from t1 where a<10 order by a limit 1;") - tk.MustExec("select * from t1 where a<10 order by a limit 1;") - tk.MustQuery("select @@last_plan_from_binding").Check(testkit.Rows("1")) - res := tk.MustQuery("show global bindings").Rows() - require.Equal(t, res[0][0], "select * from `test` . `t1` where `a` < ? order by `a` limit ?") - require.Equal(t, res[0][1], "SELECT /*+ order_index(`t1` `idx_a`)*/ * FROM `test`.`t1` WHERE `a` < 10 ORDER BY `a` LIMIT 1") - - tk.MustExec("drop global binding for select * from t1 where a<10 order by a limit 1;") - tk.MustExec("select * from t1 where a<10 order by a limit 1;") - tk.MustQuery("select @@last_plan_from_binding").Check(testkit.Rows("0")) - res = tk.MustQuery("show global bindings").Rows() - require.Equal(t, len(res), 0) - - // create binding for no_order_index hint - tk.MustExec("create global binding for select * from t1 where a<10 order by a limit 1 using select /*+ no_order_index(t1, idx_a) */ * from t1 where a<10 order by a limit 1;") - tk.MustExec("select * from t1 where a<10 order by a limit 1;") - tk.MustQuery("select @@last_plan_from_binding").Check(testkit.Rows("1")) - res = tk.MustQuery("show global bindings").Rows() - require.Equal(t, res[0][0], "select * from `test` . `t1` where `a` < ? order by `a` limit ?") - require.Equal(t, res[0][1], "SELECT /*+ no_order_index(`t1` `idx_a`)*/ * FROM `test`.`t1` WHERE `a` < 10 ORDER BY `a` LIMIT 1") - - tk.MustExec("drop global binding for select * from t1 where a<10 order by a limit 1;") - tk.MustExec("select * from t1 where a<10 order by a limit 1;") - tk.MustQuery("select @@last_plan_from_binding").Check(testkit.Rows("0")) - res = tk.MustQuery("show global bindings").Rows() - require.Equal(t, len(res), 0) -} - -func TestViewHintWithBinding(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - - tk.MustExec("use test") - tk.MustExec("set tidb_cost_model_version=2") - tk.MustExec("drop view if exists v, v1") - tk.MustExec("drop table if exists t, t1, t2, t3") - tk.MustExec("create table t(a int, b int);") - tk.MustExec("create table t1(a int, b int);") - tk.MustExec("create table t2(a int, b int);") - tk.MustExec("create table t3(a int, b int)") - tk.MustExec("create definer='root'@'localhost' view v as select t.a, t.b from t join (select count(*) as a from t1 join t2 join t3 where t1.b=t2.b and t2.a = t3.a group by t2.a) tt on t.a = tt.a;") - tk.MustExec("create definer='root'@'localhost' view v1 as select t.a, t.b from t join (select count(*) as a from t1 join v on t1.b=v.b group by v.a) tt on t.a = tt.a;") - tk.MustExec("create definer='root'@'localhost' view v2 as select t.a, t.b from t join (select count(*) as a from t1 join v1 on t1.b=v1.b group by v1.a) tt on t.a = tt.a;") - - tk.MustExec("select * from v2") - tk.MustQuery("select @@last_plan_from_binding").Check(testkit.Rows("0")) - tk.MustExec("create global binding for select * from v2 using select /*+ qb_name(qb_v_2, v2.v1@sel_2 .v@sel_2 .@sel_2), merge_join(t1@qb_v_2), stream_agg(@qb_v_2), qb_name(qb_v_1, v2. v1@sel_2 .v@sel_2 .@sel_1), merge_join(t@qb_v_1) */ * from v2;") - tk.MustExec("select * from v2") - tk.MustQuery("select @@last_plan_from_binding").Check(testkit.Rows("1")) - res := tk.MustQuery("show global bindings").Rows() - require.Equal(t, res[0][0], "select * from `test` . `v2`") - require.Equal(t, res[0][1], "SELECT /*+ qb_name(`qb_v_2` , `v2`. `v1`@`sel_2`. `v`@`sel_2`. ``@`sel_2`) merge_join(`t1`@`qb_v_2`) stream_agg(@`qb_v_2`) qb_name(`qb_v_1` , `v2`. `v1`@`sel_2`. `v`@`sel_2`. ``@`sel_1`) merge_join(`t`@`qb_v_1`)*/ * FROM `test`.`v2`") - - tk.MustExec("drop global binding for select * from v2") - tk.MustExec("select * from v2") - tk.MustQuery("select @@last_plan_from_binding").Check(testkit.Rows("0")) - res = tk.MustQuery("show global bindings").Rows() - require.Equal(t, len(res), 0) -} - -func TestPartitionPruningWithDateType(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") - 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 datetime) partition by range columns (a) (partition p1 values less than ('20000101'), partition p2 values less than ('2000-10-01'));") - tk.MustExec("insert into t values ('20000201'), ('19000101');") - - // cannot get the statistical information immediately - // tk.MustQuery(`SELECT PARTITION_NAME,TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME = 't';`).Check(testkit.Rows("p1 1", "p2 1")) - str := tk.MustQuery(`desc select * from t where a < '2000-01-01';`).Rows()[0][3].(string) - require.True(t, strings.Contains(str, "partition:p1")) -} - func TestPartitionPruningForEQ(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) @@ -261,21 +168,6 @@ func TestPartitionPruningForEQ(t *testing.T) { require.Equal(t, 0, res[0]) } -func TestErrNoDB(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("create user test") - _, err := tk.Exec("grant select on test1111 to test@'%'") - require.Equal(t, core.ErrNoDB, errors.Cause(err)) - _, err = tk.Exec("grant select on * to test@'%'") - require.Equal(t, core.ErrNoDB, errors.Cause(err)) - _, err = tk.Exec("revoke select on * from test@'%'") - require.Equal(t, core.ErrNoDB, errors.Cause(err)) - tk.MustExec("use test") - tk.MustExec("create table test1111 (id int)") - tk.MustExec("grant select on test1111 to test@'%'") -} - func TestNotReadOnlySQLOnTiFlash(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) @@ -886,52 +778,6 @@ func TestSpacePushDownToTiFlash(t *testing.T) { tk.MustQuery("explain select space(a) from t;").CheckAt([]int{0, 2, 4}, rows) } -func TestExplainAnalyzePointGet(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(a int primary key, b varchar(20))") - tk.MustExec("insert into t values (1,1)") - - res := tk.MustQuery("explain analyze select * from t where a=1;") - checkExplain := func(rpc string) { - resBuff := bytes.NewBufferString("") - for _, row := range res.Rows() { - _, _ = fmt.Fprintf(resBuff, "%s\n", row) - } - explain := resBuff.String() - require.Containsf(t, explain, rpc+":{num_rpc:", "%s", explain) - require.Containsf(t, explain, "total_time:", "%s", explain) - } - checkExplain("Get") - res = tk.MustQuery("explain analyze select * from t where a in (1,2,3);") - checkExplain("BatchGet") -} - -func TestExplainAnalyzeDML(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 (a int, b int, unique index (a));") - tk.MustExec("insert into t values (1,1)") - - res := tk.MustQuery("explain analyze select * from t where a=1;") - checkExplain := func(rpc string) { - resBuff := bytes.NewBufferString("") - for _, row := range res.Rows() { - _, _ = fmt.Fprintf(resBuff, "%s\n", row) - } - explain := resBuff.String() - require.Containsf(t, explain, rpc+":{num_rpc:", "%s", explain) - require.Containsf(t, explain, "total_time:", "%s", explain) - } - checkExplain("Get") - res = tk.MustQuery("explain analyze insert ignore into t values (1,1),(2,2),(3,3),(4,4);") - checkExplain("BatchGet") -} - func TestExplainAnalyzeDML2(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) @@ -1033,66 +879,6 @@ func TestExplainAnalyzeDML2(t *testing.T) { } } -func TestIssue20139(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") - 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, c int) partition by range (id) (partition p0 values less than (4), partition p1 values less than (7))") - tk.MustExec("insert into t values(3, 3), (5, 5)") - plan := tk.MustQuery("explain format = 'brief' select * from t where c = 1 and id = c") - plan.Check(testkit.Rows( - "TableReader 0.01 root partition:p0 data:Selection", - "└─Selection 0.01 cop[tikv] eq(test.t.c, 1), eq(test.t.id, 1)", - " └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo", - )) - tk.MustExec("drop table t") -} - -// Test for issue https://github.com/pingcap/tidb/issues/21607. -func TestConditionColPruneInPhysicalUnionScan(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 (a int, b int);") - tk.MustExec("begin;") - tk.MustExec("insert into t values (1, 2);") - tk.MustQuery("select count(*) from t where b = 1 and b in (3);"). - Check(testkit.Rows("0")) - - tk.MustExec("drop table t;") - tk.MustExec("create table t (a int, b int as (a + 1), c int as (b + 1));") - tk.MustExec("begin;") - tk.MustExec("insert into t (a) values (1);") - tk.MustQuery("select count(*) from t where b = 1 and b in (3);"). - Check(testkit.Rows("0")) - tk.MustQuery("select count(*) from t where c = 1 and c in (3);"). - Check(testkit.Rows("0")) -} - -func TestCreateViewIsolationRead(t *testing.T) { - store := testkit.CreateMockStore(t) - se, err := session.CreateSession4Test(store) - require.NoError(t, err) - require.NoError(t, se.Auth(&auth.UserIdentity{Username: "root", Hostname: "%"}, nil, nil, nil)) - tk := testkit.NewTestKit(t, store) - tk.SetSession(se) - - tk.MustExec("use test;") - tk.MustExec("drop table if exists t;") - tk.MustExec("create table t(a int, b int);") - tk.MustExec("set session tidb_isolation_read_engines='tiflash,tidb';") - // No error for CreateView. - tk.MustExec("create view v0 (a, avg_b) as select a, avg(b) from t group by a;") - tk.MustGetErrMsg("select * from v0;", "[planner:1815]Internal : No access path for table 't' is found with 'tidb_isolation_read_engines' = 'tiflash,tidb', valid values can be 'tikv'.") - tk.MustExec("set session tidb_isolation_read_engines='tikv,tiflash,tidb';") - tk.MustQuery("select * from v0;").Check(testkit.Rows()) -} - func TestConflictReadFromStorage(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") @@ -1127,35 +913,6 @@ func TestConflictReadFromStorage(t *testing.T) { tk.MustQuery("show warnings").Check(testkit.Rows("Warning 1815 Storage hints are conflict, you can only specify one storage type of table test.t")) } -func TestSelectIgnoreTemporaryTableInView(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - - tk.Session().Auth(&auth.UserIdentity{Username: "root", Hostname: "localhost", CurrentUser: true, AuthUsername: "root", AuthHostname: "%"}, nil, []byte("012345678901234567890"), nil) - tk.MustExec("create table t1 (a int, b int)") - tk.MustExec("create table t2 (c int, d int)") - tk.MustExec("create view v1 as select * from t1 order by a limit 5") - tk.MustExec("create view v2 as select * from ((select * from t1) union (select * from t2)) as tt order by a, b limit 5") - tk.MustExec("create view v3 as select * from v1 order by a limit 5") - tk.MustExec("create view v4 as select * from t1, t2 where t1.a = t2.c order by a, b limit 5") - tk.MustExec("create view v5 as select * from (select * from t1) as t1 order by a limit 5") - - tk.MustExec("insert into t1 values (1, 2), (3, 4)") - tk.MustExec("insert into t2 values (3, 5), (6, 7)") - - tk.MustExec("create temporary table t1 (a int, b int)") - tk.MustExec("create temporary table t2 (c int, d int)") - tk.MustQuery("select * from t1").Check(testkit.Rows()) - tk.MustQuery("select * from t2").Check(testkit.Rows()) - - tk.MustQuery("select * from v1").Check(testkit.Rows("1 2", "3 4")) - tk.MustQuery("select * from v2").Check(testkit.Rows("1 2", "3 4", "3 5", "6 7")) - tk.MustQuery("select * from v3").Check(testkit.Rows("1 2", "3 4")) - tk.MustQuery("select * from v4").Check(testkit.Rows("3 4 3 5")) - tk.MustQuery("select * from v5").Check(testkit.Rows("1 2", "3 4")) -} - func TestIssue29503(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) @@ -1173,64 +930,6 @@ func TestIssue29503(t *testing.T) { require.Len(t, res.Rows(), 2) } -func verifyTimestampOutOfRange(tk *testkit.TestKit) { - tk.MustQuery(`select * from t28424 where t != "2038-1-19 3:14:08"`).Sort().Check(testkit.Rows("1970-01-01 00:00:01]\n[2038-01-19 03:14:07")) - tk.MustQuery(`select * from t28424 where t < "2038-1-19 3:14:08"`).Sort().Check(testkit.Rows("1970-01-01 00:00:01]\n[2038-01-19 03:14:07")) - tk.MustQuery(`select * from t28424 where t <= "2038-1-19 3:14:08"`).Sort().Check(testkit.Rows("1970-01-01 00:00:01]\n[2038-01-19 03:14:07")) - tk.MustQuery(`select * from t28424 where t >= "2038-1-19 3:14:08"`).Check(testkit.Rows()) - tk.MustQuery(`select * from t28424 where t > "2038-1-19 3:14:08"`).Check(testkit.Rows()) - tk.MustQuery(`select * from t28424 where t != "1970-1-1 0:0:0"`).Sort().Check(testkit.Rows("1970-01-01 00:00:01]\n[2038-01-19 03:14:07")) - tk.MustQuery(`select * from t28424 where t < "1970-1-1 0:0:0"`).Check(testkit.Rows()) - tk.MustQuery(`select * from t28424 where t <= "1970-1-1 0:0:0"`).Check(testkit.Rows()) - tk.MustQuery(`select * from t28424 where t >= "1970-1-1 0:0:0"`).Sort().Check(testkit.Rows("1970-01-01 00:00:01]\n[2038-01-19 03:14:07")) - tk.MustQuery(`select * from t28424 where t > "1970-1-1 0:0:0"`).Sort().Check(testkit.Rows("1970-01-01 00:00:01]\n[2038-01-19 03:14:07")) -} - -func TestIssue27949(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("drop table if exists t27949") - tk.MustExec("create table t27949 (a int, b int, key(b))") - tk.MustQuery("explain format = 'brief' select * from t27949 where b=1").Check(testkit.Rows("IndexLookUp 10.00 root ", - "├─IndexRangeScan(Build) 10.00 cop[tikv] table:t27949, index:b(b) range:[1,1], keep order:false, stats:pseudo", - "└─TableRowIDScan(Probe) 10.00 cop[tikv] table:t27949 keep order:false, stats:pseudo")) - tk.MustExec("create global binding for select * from t27949 where b=1 using select * from t27949 ignore index(b) where b=1") - tk.MustQuery("explain format = 'brief' select * from t27949 where b=1").Check(testkit.Rows("TableReader 10.00 root data:Selection", - "└─Selection 10.00 cop[tikv] eq(test.t27949.b, 1)", - " └─TableFullScan 10000.00 cop[tikv] table:t27949 keep order:false, stats:pseudo")) - tk.MustExec("set @@sql_select_limit=100") - tk.MustQuery("explain format = 'brief' select * from t27949 where b=1").Check(testkit.Rows("Limit 10.00 root offset:0, count:100", - "└─TableReader 10.00 root data:Limit", - " └─Limit 10.00 cop[tikv] offset:0, count:100", - " └─Selection 10.00 cop[tikv] eq(test.t27949.b, 1)", - " └─TableFullScan 10000.00 cop[tikv] table:t27949 keep order:false, stats:pseudo")) - - tk.MustExec("drop table if exists t") - tk.MustExec("create table t(a int, index idx_a(a));") - tk.MustExec("create binding for select * from t using select * from t use index(idx_a);") - tk.MustExec("select * from t;") - tk.MustQuery("select @@last_plan_from_binding;").Check(testkit.Rows("1")) - tk.MustExec("prepare stmt from 'select * from t';") - tk.MustExec("execute stmt;") - tk.MustQuery("select @@last_plan_from_binding;").Check(testkit.Rows("1")) -} - -func TestIssue30804(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("drop table if exists t1, t2") - tk.MustExec("create table t1(a int, b int)") - tk.MustExec("create table t2(a int, b int)") - // minimal reproduction of https://github.com/pingcap/tidb/issues/30804 - tk.MustExec("select avg(0) over w from t1 window w as (order by (select 1))") - // named window cannot be used in subquery - err := tk.ExecToErr("select avg(0) over w from t1 where b > (select sum(t2.a) over w from t2) window w as (partition by t1.b)") - require.True(t, core.ErrWindowNoSuchWindow.Equal(err)) - tk.MustExec("select avg(0) over w1 from t1 where b > (select sum(t2.a) over w2 from t2 window w2 as (partition by t2.b)) window w1 as (partition by t1.b)") -} - func TestIssue31202(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) tk := testkit.NewTestKit(t, store) @@ -1254,39 +953,6 @@ func TestIssue31202(t *testing.T) { tk.MustExec("drop table if exists t31202") } -func TestNaturalJoinUpdateSameTable(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - - tk.MustExec("create database natural_join_update") - defer tk.MustExec("drop database natural_join_update") - tk.MustExec("use natural_join_update") - tk.MustExec("create table t1(a int, b int)") - tk.MustExec("insert into t1 values (1,1),(2,2)") - tk.MustExec("update t1 as a natural join t1 b SET a.a = 2, b.b = 3") - tk.MustQuery("select * from t1").Sort().Check(testkit.Rows("2 3", "2 3")) - tk.MustExec("drop table t1") - tk.MustExec("create table t1 (a int primary key, b int)") - tk.MustExec("insert into t1 values (1,1),(2,2)") - tk.MustGetErrCode(`update t1 as a natural join t1 b SET a.a = 2, b.b = 3`, mysql.ErrMultiUpdateKeyConflict) - tk.MustExec("drop table t1") - tk.MustExec("create table t1 (a int, b int) partition by hash (a) partitions 3") - tk.MustExec("insert into t1 values (1,1),(2,2)") - tk.MustGetErrCode(`update t1 as a natural join t1 b SET a.a = 2, b.b = 3`, mysql.ErrMultiUpdateKeyConflict) - tk.MustExec("drop table t1") - tk.MustExec("create table t1 (A int, b int) partition by hash (b) partitions 3") - tk.MustExec("insert into t1 values (1,1),(2,2)") - tk.MustGetErrCode(`update t1 as a natural join t1 B SET a.A = 2, b.b = 3`, mysql.ErrMultiUpdateKeyConflict) - _, err := tk.Exec(`update t1 as a natural join t1 B SET a.A = 2, b.b = 3`) - require.Error(t, err) - require.Regexp(t, ".planner:1706.Primary key/partition key update is not allowed since the table is updated both as 'a' and 'B'.", err.Error()) - tk.MustExec("drop table t1") - tk.MustExec("create table t1 (A int, b int) partition by RANGE COLUMNS (b) (partition `pNeg` values less than (0),partition `pPos` values less than MAXVALUE)") - tk.MustExec("insert into t1 values (1,1),(2,2)") - tk.MustGetErrCode(`update t1 as a natural join t1 B SET a.A = 2, b.b = 3`, mysql.ErrMultiUpdateKeyConflict) - tk.MustExec("drop table t1") -} - func TestAggPushToCopForCachedTable(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) @@ -1666,20 +1332,6 @@ func TestLeftShiftPushDownToTiFlash(t *testing.T) { tk.MustQuery("explain select a << b from t;").CheckAt([]int{0, 2, 4}, rows) } -func TestIssue36609(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 t1(a int, b int, c int, d int, index ia(a), index ib(b), index ic(c), index id(d))") - tk.MustExec("create table t2(a int, b int, c int, d int, index ia(a), index ib(b), index ic(c), index id(d))") - tk.MustExec("create table t3(a int, b int, c int, d int, index ia(a), index ib(b), index ic(c), index id(d))") - tk.MustExec("create table t4(a int, b int, c int, d int, index ia(a), index ib(b), index ic(c), index id(d))") - tk.MustExec("create table t5(a int, b int, c int, d int, index ia(a), index ib(b), index ic(c), index id(d))") - tk.MustQuery("select * from t3 straight_join t4 on t3.a = t4.b straight_join t2 on t3.d = t2.c straight_join t1 on t1.a = t2.b straight_join t5 on t4.c = t5.d where t2.b < 100 and t4.a = 10;") - tk.MustQuery("select * from information_schema.statements_summary;") -} - func TestHexIntOrStrPushDownToTiFlash(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) tk := testkit.NewTestKit(t, store) @@ -2255,42 +1907,6 @@ func TestPlanCacheForIndexJoinRangeFallback(t *testing.T) { tk.MustQuery("select @@last_plan_from_cache").Check(testkit.Rows("0")) } -// https://github.com/pingcap/tidb/issues/38295. -// WARN: this test cannot be migrated to tests/integrationtest, because the error message of -// `SELECT t0.c1, t0.c2 FROM t0 GROUP BY MOD(t0.c0, DEFAULT(t0.c2));` is unstable. -func TestIssue38295(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("CREATE TABLE t0(c0 BLOB(298) , c1 BLOB(182) , c2 NUMERIC);") - tk.MustExec("CREATE VIEW v0(c0) AS SELECT t0.c1 FROM t0;") - tk.MustExec("INSERT INTO t0 VALUES (-1, 'a', '2046549365');") - tk.MustExec("CREATE INDEX i0 ON t0(c2);") - tk.MustGetErrCode("SELECT t0.c1, t0.c2 FROM t0 GROUP BY MOD(t0.c0, DEFAULT(t0.c2));", errno.ErrFieldNotInGroupBy) - tk.MustExec("UPDATE t0 SET c2=1413;") -} - -// https://github.com/pingcap/tidb/issues/41273 -func TestIssue41273(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec(`CREATE TABLE t ( - a set('nwbk','r5','1ad3u','van','ir1z','y','9m','f1','z','e6yd','wfev') NOT NULL DEFAULT 'ir1z,f1,e6yd', - b enum('soo2','4s4j','qi9om','8ue','i71o','qon','3','3feh','6o1i','5yebx','d') NOT NULL DEFAULT '8ue', - c varchar(66) DEFAULT '13mdezixgcn', - PRIMARY KEY (a,b) /*T![clustered_index] CLUSTERED */, - UNIQUE KEY ib(b), - KEY ia(a) - )ENGINE=InnoDB DEFAULT CHARSET=ascii COLLATE=ascii_bin;`) - tk.MustExec("INSERT INTO t VALUES('ir1z,f1,e6yd','i71o','13mdezixgcn'),('ir1z,f1,e6yd','d','13mdezixgcn'),('nwbk','8ue','13mdezixgcn');") - expectedRes := []string{"ir1z,f1,e6yd d 13mdezixgcn", "ir1z,f1,e6yd i71o 13mdezixgcn", "nwbk 8ue 13mdezixgcn"} - tk.MustQuery("select * from t where a between 'e6yd' and 'z' or b <> '8ue';").Sort().Check(testkit.Rows(expectedRes...)) - tk.MustQuery("select /*+ use_index_merge(t) */ * from t where a between 'e6yd' and 'z' or b <> '8ue';").Sort().Check(testkit.Rows(expectedRes...)) - // For now tidb doesn't support push set type to TiKV, and column a is a set type, so we shouldn't generate a IndexMerge path. - require.False(t, tk.HasPlanForLastExecution("IndexMerge")) -} - func TestIsIPv4ToTiFlash(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) tk := testkit.NewTestKit(t, store) @@ -2517,74 +2133,6 @@ func TestWindowRangeFramePushDownTiflash(t *testing.T) { " └─TableFullScan_9 10000.00 mpp[tiflash] table:first_range keep order:false, stats:pseudo")) } -func TestIssue46298(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("drop table if exists test.first_range;") - tk.MustExec("create table test.first_range(p int not null, o tinyint not null, v int not null);") - tk.MustExec("insert into test.first_range (p, o, v) values (0, 0, 0), (1, 1, 1), (1, 2, 2), (1, 4, 4), (1, 8, 8), (2, 0, 0), (2, 3, 3), (2, 10, 10), (2, 13, 13), (2, 15, 15), (3, 1, 1), (3, 3, 3), (3, 5, 5), (3, 9, 9), (3, 15, 15), (3, 20, 20), (3, 31, 31);") - tk.MustQuery("select *, first_value(v) over (partition by p order by o range between 3.1 preceding and 2.9 following) as a from test.first_range;") - tk.MustExec(`set @@tidb_enable_pipelined_window_function=0`) - tk.MustQuery("select *, first_value(v) over (partition by p order by o range between 3.1 preceding and 2.9 following) as a from test.first_range;") -} - -func TestIssue45044(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec(`use test`) - tk.MustExec(`set tidb_enable_ordered_result_mode = on`) - tk.MustExec(`create table t1(c1 int)`) - tk.MustQuery(`select * from t1 group by t1.c1 having count(1) > 1 order by count(1) limit 10`).Check(testkit.Rows()) // no error -} - -func TestIssue46177(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec(`use test`) - tk.MustExec(` CREATE TABLE sbtest ( - id int(10) unsigned NOT NULL AUTO_INCREMENT, - k int(10) unsigned NOT NULL DEFAULT '0', - c char(120) NOT NULL DEFAULT '', - pad char(60) NOT NULL DEFAULT '', - PRIMARY KEY (id) /*T![clustered_index] CLUSTERED */, - KEY k (k) -)`) - - // cannot choose the best plan with RangeScan. - tk.MustExec(`set @@tidb_opt_fix_control = '46177:off'`) - tk.MustQuery(`explain format='brief' select row_number() over(order by a.k) from (select * from sbtest where id<10) a`).Check(testkit.Rows( - `Projection 10.00 root Column#6->Column#7`, - `└─Window 10.00 root row_number()->Column#6 over(order by test.sbtest.k rows between current row and current row)`, - ` └─IndexReader 10.00 root index:Selection`, - ` └─Selection 10.00 cop[tikv] lt(test.sbtest.id, 10)`, - ` └─IndexFullScan 10000.00 cop[tikv] table:sbtest, index:k(k) keep order:true, stats:pseudo`)) - - tk.MustExec(`set @@tidb_opt_fix_control = '46177:on'`) - tk.MustQuery(`explain format='brief' select row_number() over(order by a.k) from (select * from sbtest where id<10) a`).Check(testkit.Rows( - `Projection 10.00 root Column#6->Column#7`, - `└─Window 10.00 root row_number()->Column#6 over(order by test.sbtest.k rows between current row and current row)`, - ` └─Sort 10.00 root test.sbtest.k`, - ` └─TableReader 10.00 root data:TableRangeScan`, - ` └─TableRangeScan 10.00 cop[tikv] table:sbtest range:[0,10), keep order:false, stats:pseudo`)) - - // cannot choose the range scan plan. - tk.MustExec(`set @@tidb_opt_fix_control = '46177:off'`) - tk.MustQuery(`explain format='brief' select /*+ stream_agg() */ count(1) from sbtest where id<1 group by k`).Check(testkit.Rows( - `StreamAgg 1.00 root group by:test.sbtest.k, funcs:count(Column#6)->Column#5`, - `└─IndexReader 1.00 root index:StreamAgg`, - ` └─StreamAgg 1.00 cop[tikv] group by:test.sbtest.k, funcs:count(1)->Column#6`, - ` └─Selection 1.00 cop[tikv] lt(test.sbtest.id, 1)`, - ` └─IndexFullScan 10000.00 cop[tikv] table:sbtest, index:k(k) keep order:true, stats:pseudo`)) - - tk.MustExec(`set @@tidb_opt_fix_control = '46177:on'`) - tk.MustQuery(`explain format='brief' select /*+ stream_agg() */ count(1) from sbtest where id<1 group by k`).Check(testkit.Rows( - `StreamAgg 1.00 root group by:test.sbtest.k, funcs:count(1)->Column#5`, - `└─Sort 1.00 root test.sbtest.k`, - ` └─TableReader 1.00 root data:TableRangeScan`, - ` └─TableRangeScan 1.00 cop[tikv] table:sbtest range:[0,1), keep order:false, stats:pseudo`)) -} - // https://github.com/pingcap/tidb/issues/41458 func TestIssue41458(t *testing.T) { store := testkit.CreateMockStore(t) diff --git a/pkg/planner/core/logical_plan_builder.go b/pkg/planner/core/logical_plan_builder.go index 1825b8825a302..579e6cabfb935 100644 --- a/pkg/planner/core/logical_plan_builder.go +++ b/pkg/planner/core/logical_plan_builder.go @@ -221,7 +221,7 @@ func (b *PlanBuilder) buildExpand(p LogicalPlan, gbyItems []expression.Expressio b.optFlag |= flagResolveExpand // Rollup syntax require expand OP to do the data expansion, different data replica supply the different grouping layout. - distinctGbyExprs, gbyExprsRefPos := expression.DeduplicateGbyExpression(b.ctx, gbyItems) + distinctGbyExprs, gbyExprsRefPos := expression.DeduplicateGbyExpression(gbyItems) // build another projection below. proj := LogicalProjection{Exprs: make([]expression.Expression, 0, p.Schema().Len()+len(distinctGbyExprs))}.Init(b.ctx, b.getSelectOffset()) // project: child's output and distinct GbyExprs in advance. (make every group-by item to be a column) @@ -549,7 +549,11 @@ func (b *PlanBuilder) buildResultSetNode(ctx context.Context, node ast.ResultSet } } // `TableName` is not a select block, so we do not need to handle it. - if plannerSelectBlockAsName := *(b.ctx.GetSessionVars().PlannerSelectBlockAsName.Load()); len(plannerSelectBlockAsName) > 0 && !isTableName { + var plannerSelectBlockAsName []ast.HintTable + if p := b.ctx.GetSessionVars().PlannerSelectBlockAsName.Load(); p != nil { + plannerSelectBlockAsName = *p + } + if len(plannerSelectBlockAsName) > 0 && !isTableName { plannerSelectBlockAsName[p.SelectBlockOffset()] = ast.HintTable{DBName: p.OutputNames()[0].DBName, TableName: p.OutputNames()[0].TblName} } // Duplicate column name in one table is not allowed. @@ -622,6 +626,7 @@ func (p *LogicalJoin) ExtractOnCondition( deriveLeft bool, deriveRight bool) (eqCond []*expression.ScalarFunction, leftCond []expression.Expression, rightCond []expression.Expression, otherCond []expression.Expression) { + ctx := p.SCtx() for _, expr := range conditions { // For queries like `select a in (select a from s where s.b = t.b) from t`, // if subquery is empty caused by `s.b = t.b`, the result should always be @@ -634,7 +639,6 @@ func (p *LogicalJoin) ExtractOnCondition( } binop, ok := expr.(*expression.ScalarFunction) if ok && len(binop.GetArgs()) == 2 { - ctx := binop.GetCtx() arg0, lOK := binop.GetArgs()[0].(*expression.Column) arg1, rOK := binop.GetArgs()[1].(*expression.Column) if lOK && rOK { @@ -691,13 +695,13 @@ func (p *LogicalJoin) ExtractOnCondition( // `expr AND leftRelaxedCond AND rightRelaxedCond`. Motivation is to push filters down to // children as much as possible. if deriveLeft { - leftRelaxedCond := expression.DeriveRelaxedFiltersFromDNF(expr, leftSchema) + leftRelaxedCond := expression.DeriveRelaxedFiltersFromDNF(ctx, expr, leftSchema) if leftRelaxedCond != nil { leftCond = append(leftCond, leftRelaxedCond) } } if deriveRight { - rightRelaxedCond := expression.DeriveRelaxedFiltersFromDNF(expr, rightSchema) + rightRelaxedCond := expression.DeriveRelaxedFiltersFromDNF(ctx, expr, rightSchema) if rightRelaxedCond != nil { rightCond = append(rightCond, rightRelaxedCond) } @@ -721,7 +725,10 @@ func extractTableAlias(p Plan, parentOffset int) *hintTableInfo { } } blockOffset := p.SelectBlockOffset() - blockAsNames := *(p.SCtx().GetSessionVars().PlannerSelectBlockAsName.Load()) + var blockAsNames []ast.HintTable + if p := p.SCtx().GetSessionVars().PlannerSelectBlockAsName.Load(); p != nil { + blockAsNames = *p + } // For sub-queries like `(select * from t) t1`, t1 should belong to its surrounding select block. if blockOffset != parentOffset && blockAsNames != nil && blockAsNames[blockOffset].TableName.L != "" { blockOffset = parentOffset @@ -1555,7 +1562,7 @@ func (b *PlanBuilder) buildProjectionField(ctx context.Context, p LogicalPlan, f if b.ctx.GetSessionVars().MapHashCode2UniqueID4ExtendedCol == nil { b.ctx.GetSessionVars().MapHashCode2UniqueID4ExtendedCol = make(map[string]int, 1) } - b.ctx.GetSessionVars().MapHashCode2UniqueID4ExtendedCol[string(expr.HashCode(b.ctx.GetSessionVars().StmtCtx))] = int(newCol.UniqueID) + b.ctx.GetSessionVars().MapHashCode2UniqueID4ExtendedCol[string(expr.HashCode())] = int(newCol.UniqueID) } newCol.SetCoercibility(expr.Coercibility()) return newCol, name, nil @@ -1822,7 +1829,7 @@ func (b *PlanBuilder) buildProjection(ctx context.Context, p LogicalPlan, fields if expression.CheckFuncInExpr(x, ast.AnyValue) { continue } - scalarUniqueID, ok := fds.IsHashCodeRegistered(string(hack.String(x.HashCode(p.SCtx().GetSessionVars().StmtCtx)))) + scalarUniqueID, ok := fds.IsHashCodeRegistered(string(hack.String(x.HashCode()))) if !ok { logutil.BgLogger().Warn("Error occurred while maintaining the functional dependency") continue @@ -1887,7 +1894,7 @@ func (b *PlanBuilder) buildProjection(ctx context.Context, p LogicalPlan, fields case *expression.Column: projectionUniqueIDs.Insert(int(x.UniqueID)) case *expression.ScalarFunction: - scalarUniqueID, ok := fds.IsHashCodeRegistered(string(hack.String(x.HashCode(p.SCtx().GetSessionVars().StmtCtx)))) + scalarUniqueID, ok := fds.IsHashCodeRegistered(string(hack.String(x.HashCode()))) if !ok { logutil.BgLogger().Warn("Error occurred while maintaining the functional dependency") continue @@ -4902,7 +4909,7 @@ func (b *PlanBuilder) tryBuildCTE(ctx context.Context, tn *ast.TableName, asName } for i, col := range lp.schema.Columns { - lp.cte.ColumnMap[string(col.HashCode(nil))] = prevSchema.Columns[i] + lp.cte.ColumnMap[string(col.HashCode())] = prevSchema.Columns[i] } p = lp p.SetOutputNames(cte.seedLP.OutputNames()) @@ -5297,7 +5304,7 @@ func (b *PlanBuilder) buildDataSource(ctx context.Context, tn *ast.TableName, as var err error originVal := b.allowBuildCastArray b.allowBuildCastArray = true - expr, _, err = b.rewrite(ctx, columns[i].GeneratedExpr, ds, nil, true) + expr, _, err = b.rewrite(ctx, columns[i].GeneratedExpr.Clone(), ds, nil, true) b.allowBuildCastArray = originVal if err != nil { return nil, err @@ -6266,7 +6273,7 @@ func (b *PlanBuilder) buildUpdateLists(ctx context.Context, tableList []*ast.Tab } virtualAssignments = append(virtualAssignments, &ast.Assignment{ Column: &ast.ColumnName{Schema: tn.Schema, Table: tn.Name, Name: colInfo.Name}, - Expr: tableVal.Cols()[i].GeneratedExpr, + Expr: tableVal.Cols()[i].GeneratedExpr.Clone(), }) } } diff --git a/pkg/planner/core/logical_plans.go b/pkg/planner/core/logical_plans.go index f243ee8c3515f..30d028cab5739 100644 --- a/pkg/planner/core/logical_plans.go +++ b/pkg/planner/core/logical_plans.go @@ -452,28 +452,29 @@ func (p *LogicalJoin) columnSubstituteAll(schema *expression.Schema, exprs []exp copy(cpOtherConditions, p.OtherConditions) copy(cpEqualConditions, p.EqualConditions) + ctx := p.SCtx() // try to substitute columns in these condition. for i, cond := range cpLeftConditions { - if hasFail, cpLeftConditions[i] = expression.ColumnSubstituteAll(cond, schema, exprs); hasFail { + if hasFail, cpLeftConditions[i] = expression.ColumnSubstituteAll(ctx, cond, schema, exprs); hasFail { return } } for i, cond := range cpRightConditions { - if hasFail, cpRightConditions[i] = expression.ColumnSubstituteAll(cond, schema, exprs); hasFail { + if hasFail, cpRightConditions[i] = expression.ColumnSubstituteAll(ctx, cond, schema, exprs); hasFail { return } } for i, cond := range cpOtherConditions { - if hasFail, cpOtherConditions[i] = expression.ColumnSubstituteAll(cond, schema, exprs); hasFail { + if hasFail, cpOtherConditions[i] = expression.ColumnSubstituteAll(ctx, cond, schema, exprs); hasFail { return } } for i, cond := range cpEqualConditions { var tmp expression.Expression - if hasFail, tmp = expression.ColumnSubstituteAll(cond, schema, exprs); hasFail { + if hasFail, tmp = expression.ColumnSubstituteAll(ctx, cond, schema, exprs); hasFail { return } cpEqualConditions[i] = tmp.(*expression.ScalarFunction) @@ -721,16 +722,10 @@ func (p *LogicalExpand) GenerateGroupingMarks(sourceCols []*expression.Column) [ } func (p *LogicalExpand) trySubstituteExprWithGroupingSetCol(expr expression.Expression) (expression.Expression, bool) { - sc := p.SCtx().GetSessionVars().StmtCtx - sc.CanonicalHashCode = true - defer func() { - sc.CanonicalHashCode = false - }() - // since all the original group items has been projected even single col, // let's check the origin gby expression here, and map it to new gby col. for i, oneExpr := range p.distinctGbyExprs { - if bytes.Equal(expr.HashCode(sc), oneExpr.HashCode(sc)) { + if bytes.Equal(expr.CanonicalHashCode(), oneExpr.CanonicalHashCode()) { // found return p.distinctGroupByCol[i], true } @@ -741,11 +736,6 @@ func (p *LogicalExpand) trySubstituteExprWithGroupingSetCol(expr expression.Expr // CheckGroupingFuncArgsInGroupBy checks whether grouping function args is in grouping items. func (p *LogicalExpand) resolveGroupingFuncArgsInGroupBy(groupingFuncArgs []expression.Expression) ([]*expression.Column, error) { - sc := p.SCtx().GetSessionVars().StmtCtx - sc.CanonicalHashCode = true - defer func() { - sc.CanonicalHashCode = false - }() // build GBYColMap distinctGBYColMap := make(map[int64]struct{}, len(p.distinctGroupByCol)) for _, oneDistinctGBYCol := range p.distinctGroupByCol { @@ -758,7 +748,7 @@ func (p *LogicalExpand) resolveGroupingFuncArgsInGroupBy(groupingFuncArgs []expr // since all the original group items has been projected even single col, // let's check the origin gby expression here, and map it to new gby col. for i, oneExpr := range p.distinctGbyExprs { - if bytes.Equal(oneArg.HashCode(sc), oneExpr.HashCode(sc)) { + if bytes.Equal(oneArg.CanonicalHashCode(), oneExpr.CanonicalHashCode()) { refPos = i break } @@ -877,21 +867,21 @@ func (p *LogicalProjection) ExtractFD() *fd.FDSet { // take c as constant column here. continue case *expression.Constant: - hashCode := string(x.HashCode(p.SCtx().GetSessionVars().StmtCtx)) + hashCode := string(x.HashCode()) var ( ok bool constantUniqueID int ) if constantUniqueID, ok = fds.IsHashCodeRegistered(hashCode); !ok { constantUniqueID = outputColsUniqueIDsArray[idx] - fds.RegisterUniqueID(string(x.HashCode(p.SCtx().GetSessionVars().StmtCtx)), constantUniqueID) + fds.RegisterUniqueID(string(x.HashCode()), constantUniqueID) } fds.AddConstants(intset.NewFastIntSet(constantUniqueID)) case *expression.ScalarFunction: // t1(a,b,c), t2(m,n) // select a, (select c+n from t2 where m=b) from t1; // expr(c+n) contains correlated column , but we can treat it as constant here. - hashCode := string(x.HashCode(p.SCtx().GetSessionVars().StmtCtx)) + hashCode := string(x.HashCode()) var ( ok bool scalarUniqueID int @@ -1037,7 +1027,7 @@ func (la *LogicalAggregation) ExtractFD() *fd.FDSet { // shouldn't be here, interpreted as pos param by plan builder. continue case *expression.ScalarFunction: - hashCode := string(x.HashCode(la.SCtx().GetSessionVars().StmtCtx)) + hashCode := string(x.HashCode()) var ( ok bool scalarUniqueID int @@ -1252,12 +1242,12 @@ func extractConstantCols(conditions []expression.Expression, sctx sessionctx.Con case *expression.Column: constUniqueIDs.Insert(int(x.UniqueID)) case *expression.ScalarFunction: - hashCode := string(x.HashCode(sctx.GetSessionVars().StmtCtx)) + hashCode := string(x.HashCode()) if uniqueID, ok := fds.IsHashCodeRegistered(hashCode); ok { constUniqueIDs.Insert(uniqueID) } else { scalarUniqueID := int(sctx.GetSessionVars().AllocPlanColumnID()) - fds.RegisterUniqueID(string(x.HashCode(sctx.GetSessionVars().StmtCtx)), scalarUniqueID) + fds.RegisterUniqueID(string(x.HashCode()), scalarUniqueID) constUniqueIDs.Insert(scalarUniqueID) } } @@ -1279,12 +1269,12 @@ func extractEquivalenceCols(conditions []expression.Expression, sctx sessionctx. case *expression.Column: lhsUniqueID = int(x.UniqueID) case *expression.ScalarFunction: - hashCode := string(x.HashCode(sctx.GetSessionVars().StmtCtx)) + hashCode := string(x.HashCode()) if uniqueID, ok := fds.IsHashCodeRegistered(hashCode); ok { lhsUniqueID = uniqueID } else { scalarUniqueID := int(sctx.GetSessionVars().AllocPlanColumnID()) - fds.RegisterUniqueID(string(x.HashCode(sctx.GetSessionVars().StmtCtx)), scalarUniqueID) + fds.RegisterUniqueID(string(x.HashCode()), scalarUniqueID) lhsUniqueID = scalarUniqueID } } @@ -1293,12 +1283,12 @@ func extractEquivalenceCols(conditions []expression.Expression, sctx sessionctx. case *expression.Column: rhsUniqueID = int(x.UniqueID) case *expression.ScalarFunction: - hashCode := string(x.HashCode(sctx.GetSessionVars().StmtCtx)) + hashCode := string(x.HashCode()) if uniqueID, ok := fds.IsHashCodeRegistered(hashCode); ok { rhsUniqueID = uniqueID } else { scalarUniqueID := int(sctx.GetSessionVars().AllocPlanColumnID()) - fds.RegisterUniqueID(string(x.HashCode(sctx.GetSessionVars().StmtCtx)), scalarUniqueID) + fds.RegisterUniqueID(string(x.HashCode()), scalarUniqueID) rhsUniqueID = scalarUniqueID } } @@ -1585,9 +1575,10 @@ func (p *LogicalIndexScan) MatchIndexProp(prop *property.PhysicalProperty) (matc if all, _ := prop.AllSameOrder(); !all { return false } + sctx := p.SCtx() for i, col := range p.IdxCols { - if col.Equal(nil, prop.SortItems[0].Col) { - return matchIndicesProp(p.IdxCols[i:], p.IdxColLens[i:], prop.SortItems) + if col.Equal(sctx, prop.SortItems[0].Col) { + return matchIndicesProp(sctx, p.IdxCols[i:], p.IdxColLens[i:], prop.SortItems) } else if i >= p.EqCondCount { break } @@ -1821,7 +1812,7 @@ func (ds *DataSource) fillIndexPath(path *util.AccessPath, conds []expression.Ex if handleCol != nil && !mysql.HasUnsignedFlag(handleCol.RetType.GetFlag()) { alreadyHandle := false for _, col := range path.IdxCols { - if col.ID == model.ExtraHandleID || col.Equal(nil, handleCol) { + if col.ID == model.ExtraHandleID || col.EqualColumn(handleCol) { alreadyHandle = true } } diff --git a/pkg/planner/core/memtable_predicate_extractor_test.go b/pkg/planner/core/memtable_predicate_extractor_test.go index 2c53fa8f2120b..648a65c1301a1 100644 --- a/pkg/planner/core/memtable_predicate_extractor_test.go +++ b/pkg/planner/core/memtable_predicate_extractor_test.go @@ -25,13 +25,13 @@ import ( "time" "github.com/pingcap/tidb/pkg/domain" - "github.com/pingcap/tidb/pkg/errno" "github.com/pingcap/tidb/pkg/expression" "github.com/pingcap/tidb/pkg/parser" "github.com/pingcap/tidb/pkg/parser/ast" "github.com/pingcap/tidb/pkg/planner" plannercore "github.com/pingcap/tidb/pkg/planner/core" "github.com/pingcap/tidb/pkg/session" + sessiontypes "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/testkit" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/hint" @@ -39,7 +39,7 @@ import ( "github.com/stretchr/testify/require" ) -func getLogicalMemTable(t *testing.T, dom *domain.Domain, se session.Session, parser *parser.Parser, sql string) *plannercore.LogicalMemTable { +func getLogicalMemTable(t *testing.T, dom *domain.Domain, se sessiontypes.Session, parser *parser.Parser, sql string) *plannercore.LogicalMemTable { stmt, err := parser.ParseOneStmt(sql, "", "") require.NoError(t, err) @@ -1650,63 +1650,6 @@ func TestColumns(t *testing.T) { } } -func TestPredicateQuery(t *testing.T) { - store := testkit.CreateMockStore(t) - - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("create table t(id int, abctime int,DATETIME_PRECISION int);") - tk.MustExec("create table abclmn(a int);") - tk.MustQuery("select TABLE_NAME from information_schema.columns where table_schema = 'test' and column_name like 'i%'").Check(testkit.Rows("t")) - tk.MustQuery("select TABLE_NAME from information_schema.columns where table_schema = 'TEST' and column_name like 'I%'").Check(testkit.Rows("t")) - tk.MustQuery("select TABLE_NAME from information_schema.columns where table_schema = 'TEST' and column_name like 'ID'").Check(testkit.Rows("t")) - tk.MustQuery("select TABLE_NAME from information_schema.columns where table_schema = 'TEST' and column_name like 'id'").Check(testkit.Rows("t")) - tk.MustQuery("select column_name from information_schema.columns where table_schema = 'TEST' and (column_name like 'i%' or column_name like '%d')").Check(testkit.Rows("id")) - tk.MustQuery("select column_name from information_schema.columns where table_schema = 'TEST' and (column_name like 'abc%' and column_name like '%time')").Check(testkit.Rows("abctime")) - result := tk.MustQuery("select TABLE_NAME, column_name from information_schema.columns where table_schema = 'TEST' and column_name like '%time';") - require.Len(t, result.Rows(), 1) - tk.MustQuery("describe t").Check(testkit.Rows("id int(11) YES ", "abctime int(11) YES ", "DATETIME_PRECISION int(11) YES ")) - tk.MustQuery("describe t id").Check(testkit.Rows("id int(11) YES ")) - tk.MustQuery("describe t ID").Check(testkit.Rows("id int(11) YES ")) - tk.MustGetErrCode("describe t 'I%'", errno.ErrParse) - tk.MustGetErrCode("describe t I%", errno.ErrParse) - - tk.MustQuery("show columns from t like 'abctime'").Check(testkit.RowsWithSep(",", "abctime,int(11),YES,,,")) - tk.MustQuery("show columns from t like 'ABCTIME'").Check(testkit.RowsWithSep(",", "abctime,int(11),YES,,,")) - tk.MustQuery("show columns from t like 'abc%'").Check(testkit.RowsWithSep(",", "abctime,int(11),YES,,,")) - tk.MustQuery("show columns from t like 'ABC%'").Check(testkit.RowsWithSep(",", "abctime,int(11),YES,,,")) - tk.MustQuery("show columns from t like '%ime'").Check(testkit.RowsWithSep(",", "abctime,int(11),YES,,,")) - tk.MustQuery("show columns from t like '%IME'").Check(testkit.RowsWithSep(",", "abctime,int(11),YES,,,")) - tk.MustQuery("show columns in t like '%ime'").Check(testkit.RowsWithSep(",", "abctime,int(11),YES,,,")) - tk.MustQuery("show columns in t like '%IME'").Check(testkit.RowsWithSep(",", "abctime,int(11),YES,,,")) - tk.MustQuery("show fields in t like '%ime'").Check(testkit.RowsWithSep(",", "abctime,int(11),YES,,,")) - tk.MustQuery("show fields in t like '%IME'").Check(testkit.RowsWithSep(",", "abctime,int(11),YES,,,")) - - tk.MustQuery("show columns from t where field like '%time'").Check(testkit.RowsWithSep(",", "abctime,int(11),YES,,,")) - tk.MustQuery("show columns from t where field = 'abctime'").Check(testkit.RowsWithSep(",", "abctime,int(11),YES,,,")) - tk.MustQuery("show columns in t where field = 'abctime'").Check(testkit.RowsWithSep(",", "abctime,int(11),YES,,,")) - tk.MustQuery("show fields from t where field = 'abctime'").Check(testkit.RowsWithSep(",", "abctime,int(11),YES,,,")) - tk.MustQuery("show fields in t where field = 'abctime'").Check(testkit.RowsWithSep(",", "abctime,int(11),YES,,,")) - tk.MustQuery("explain t").Check(testkit.Rows("id int(11) YES ", "abctime int(11) YES ", "DATETIME_PRECISION int(11) YES ")) - - tk.MustGetErrCode("show columns from t like id", errno.ErrBadField) - tk.MustGetErrCode("show columns from t like `id`", errno.ErrBadField) - - tk.MustQuery("show tables like 't'").Check(testkit.Rows("t")) - tk.MustQuery("show tables like 'T'").Check(testkit.Rows("t")) - tk.MustQuery("show tables like 'ABCLMN'").Check(testkit.Rows("abclmn")) - tk.MustQuery("show tables like 'ABC%'").Check(testkit.Rows("abclmn")) - tk.MustQuery("show tables like '%lmn'").Check(testkit.Rows("abclmn")) - tk.MustQuery("show full tables like '%lmn'").Check(testkit.Rows("abclmn BASE TABLE")) - tk.MustGetErrCode("show tables like T", errno.ErrBadField) - tk.MustGetErrCode("show tables like `T`", errno.ErrBadField) - - // For issue46618 - tk.MustExec("create table _bar (id int);") - tk.MustExec("create table bar (id int);") - require.Len(t, tk.MustQuery(`show tables like '\_%'`).Rows(), 1) -} - func TestTikvRegionStatusExtractor(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) diff --git a/pkg/planner/core/optimizer.go b/pkg/planner/core/optimizer.go index 22661ff81779f..c17ddfc8e4f04 100644 --- a/pkg/planner/core/optimizer.go +++ b/pkg/planner/core/optimizer.go @@ -518,12 +518,12 @@ func (p *PhysicalHashJoin) extractUsedCols(parentUsedCols []*expression.Column) func prunePhysicalColumnForHashJoinChild(sctx sessionctx.Context, hashJoin *PhysicalHashJoin, joinUsedCols []*expression.Column, sender *PhysicalExchangeSender) error { var err error - joinUsed := expression.GetUsedList(joinUsedCols, sender.Schema()) + joinUsed := expression.GetUsedList(sctx, joinUsedCols, sender.Schema()) hashCols := make([]*expression.Column, len(sender.HashCols)) for i, mppCol := range sender.HashCols { hashCols[i] = mppCol.Col } - hashUsed := expression.GetUsedList(hashCols, sender.Schema()) + hashUsed := expression.GetUsedList(sctx, hashCols, sender.Schema()) needPrune := false usedExprs := make([]expression.Expression, len(sender.Schema().Columns)) diff --git a/pkg/planner/core/optimizer_test.go b/pkg/planner/core/optimizer_test.go index 5e876d29caecc..2b1088ded1ef6 100644 --- a/pkg/planner/core/optimizer_test.go +++ b/pkg/planner/core/optimizer_test.go @@ -431,6 +431,7 @@ func TestPrunePhysicalColumns(t *testing.T) { ExchangeType: tipb.ExchangeType_PassThrough, } hashJoin := &PhysicalHashJoin{} + hashJoin = hashJoin.Init(sctx, nil, 0) recv := &PhysicalExchangeReceiver{} recv1 := &PhysicalExchangeReceiver{} hashSender := &PhysicalExchangeSender{ diff --git a/pkg/planner/core/pb_to_plan.go b/pkg/planner/core/pb_to_plan.go index 767c7e609501a..a98c5e8afa0ff 100644 --- a/pkg/planner/core/pb_to_plan.go +++ b/pkg/planner/core/pb_to_plan.go @@ -153,7 +153,7 @@ func (b *PBPlanBuilder) buildTableScanSchema(tblInfo *model.TableInfo, columns [ } func (b *PBPlanBuilder) pbToSelection(e *tipb.Executor) (PhysicalPlan, error) { - conds, err := expression.PBToExprs(e.Selection.Conditions, b.tps, b.sctx.GetSessionVars().StmtCtx) + conds, err := expression.PBToExprs(b.sctx, e.Selection.Conditions, b.tps) if err != nil { return nil, err } @@ -165,10 +165,9 @@ func (b *PBPlanBuilder) pbToSelection(e *tipb.Executor) (PhysicalPlan, error) { func (b *PBPlanBuilder) pbToTopN(e *tipb.Executor) (PhysicalPlan, error) { topN := e.TopN - sc := b.sctx.GetSessionVars().StmtCtx byItems := make([]*util.ByItems, 0, len(topN.OrderBy)) for _, item := range topN.OrderBy { - expr, err := expression.PBToExpr(item.Expr, b.tps, sc) + expr, err := expression.PBToExpr(b.sctx, item.Expr, b.tps) if err != nil { return nil, errors.Trace(err) } @@ -230,7 +229,7 @@ func (b *PBPlanBuilder) getAggInfo(executor *tipb.Executor) ([]*aggregation.AggF } aggFuncs = append(aggFuncs, aggFunc) } - groupBys, err := expression.PBToExprs(executor.Aggregation.GetGroupBy(), b.tps, b.sctx.GetSessionVars().StmtCtx) + groupBys, err := expression.PBToExprs(b.sctx, executor.Aggregation.GetGroupBy(), b.tps) if err != nil { return nil, nil, errors.Trace(err) } diff --git a/pkg/planner/core/physical_plan_test.go b/pkg/planner/core/physical_plan_test.go index 7f502ed09acae..40e4985048104 100644 --- a/pkg/planner/core/physical_plan_test.go +++ b/pkg/planner/core/physical_plan_test.go @@ -423,39 +423,6 @@ func testDAGPlanBuilderSplitAvg(t *testing.T, root core.PhysicalPlan) { } } -func TestHJBuildAndProbeHintWithBinding(t *testing.T) { - store := testkit.CreateMockStore(t) - - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("set tidb_cost_model_version=2") - tk.MustExec("drop table if exists t, t1, t2, t3;") - tk.MustExec("create table t(a int, b int, key(a));") - tk.MustExec("create table t1(a int, b int, key(a));") - tk.MustExec("create table t2(a int, b int, key(a));") - tk.MustExec("create table t3(a int, b int, key(a));") - - tk.MustExec("select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b") - tk.MustQuery("select @@last_plan_from_binding").Check(testkit.Rows("0")) - tk.MustExec("create global binding for select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b using select /*+ hash_join_build(t1) */ * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b") - tk.MustExec("select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b") - tk.MustQuery("select @@last_plan_from_binding").Check(testkit.Rows("1")) - res := tk.MustQuery("show global bindings").Rows() - require.Equal(t, res[0][0], "select * from ( `test` . `t1` join `test` . `t2` on `t1` . `a` = `t2` . `a` ) join `test` . `t3` on `t2` . `b` = `t3` . `b`", "SELECT /*+ hash_join_build(t1)*/ * FROM (`test`.`t1` JOIN `test`.`t2` ON `t1`.`a` = `t2`.`a`) JOIN `test`.`t3` ON `t2`.`b` = `t3`.`b`") - - tk.MustExec("create global binding for select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b using select /*+ hash_join_probe(t1) */ * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b") - tk.MustExec("select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b") - tk.MustQuery("select @@last_plan_from_binding").Check(testkit.Rows("1")) - res = tk.MustQuery("show global bindings").Rows() - require.Equal(t, res[0][0], "select * from ( `test` . `t1` join `test` . `t2` on `t1` . `a` = `t2` . `a` ) join `test` . `t3` on `t2` . `b` = `t3` . `b`", "SELECT /*+ hash_join_probe(t1)*/ * FROM (`test`.`t1` JOIN `test`.`t2` ON `t1`.`a` = `t2`.`a`) JOIN `test`.`t3` ON `t2`.`b` = `t3`.`b`") - - tk.MustExec("drop global binding for select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b") - tk.MustExec("select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b") - tk.MustQuery("select @@last_plan_from_binding").Check(testkit.Rows("0")) - res = tk.MustQuery("show global bindings").Rows() - require.Equal(t, len(res), 0) -} - func TestPhysicalPlanMemoryTrace(t *testing.T) { // PhysicalSort ls := core.PhysicalSort{} diff --git a/pkg/planner/core/physical_plans.go b/pkg/planner/core/physical_plans.go index c40ce39b04524..8626ef7e94b3c 100644 --- a/pkg/planner/core/physical_plans.go +++ b/pkg/planner/core/physical_plans.go @@ -937,18 +937,19 @@ func (ts *PhysicalTableScan) IsPartition() (bool, int64) { // mem usage when rebuilding ranges during the execution phase. func (ts *PhysicalTableScan) ResolveCorrelatedColumns() ([]*ranger.Range, error) { access := ts.AccessCondition + ctx := ts.SCtx() if ts.Table.IsCommonHandle { pkIdx := tables.FindPrimaryIndex(ts.Table) idxCols, idxColLens := expression.IndexInfo2PrefixCols(ts.Columns, ts.Schema().Columns, pkIdx) for _, cond := range access { - newCond, err := expression.SubstituteCorCol2Constant(cond) + newCond, err := expression.SubstituteCorCol2Constant(ctx, cond) if err != nil { return nil, err } access = append(access, newCond) } // All of access conditions must be used to build ranges, so we don't limit range memory usage. - res, err := ranger.DetachCondAndBuildRangeForIndex(ts.SCtx(), access, idxCols, idxColLens, 0) + res, err := ranger.DetachCondAndBuildRangeForIndex(ctx, access, idxCols, idxColLens, 0) if err != nil { return nil, err } @@ -957,7 +958,7 @@ func (ts *PhysicalTableScan) ResolveCorrelatedColumns() ([]*ranger.Range, error) var err error pkTP := ts.Table.GetPkColInfo().FieldType // All of access conditions must be used to build ranges, so we don't limit range memory usage. - ts.Ranges, _, _, err = ranger.BuildTableRange(access, ts.SCtx(), &pkTP, 0) + ts.Ranges, _, _, err = ranger.BuildTableRange(access, ctx, &pkTP, 0) if err != nil { return nil, err } diff --git a/pkg/planner/core/plan_cache.go b/pkg/planner/core/plan_cache.go index 3d28ab64ffaea..a696f2eaefbae 100644 --- a/pkg/planner/core/plan_cache.go +++ b/pkg/planner/core/plan_cache.go @@ -57,7 +57,7 @@ func SetParameterValuesIntoSCtx(sctx sessionctx.Context, isNonPrep bool, markers vars := sctx.GetSessionVars() vars.PlanCacheParams.Reset() for i, usingParam := range params { - val, err := usingParam.Eval(chunk.Row{}) + val, err := usingParam.Eval(sctx, chunk.Row{}) if err != nil { return err } @@ -490,7 +490,7 @@ func rebuildRange(p Plan) error { return errors.New("point get for partition table can not use plan cache") } if x.HandleConstant != nil { - dVal, err := convertConstant2Datum(sc, x.HandleConstant, x.handleFieldType) + dVal, err := convertConstant2Datum(sctx, x.HandleConstant, x.handleFieldType) if err != nil { return err } @@ -503,7 +503,7 @@ func rebuildRange(p Plan) error { } for i, param := range x.IndexConstants { if param != nil { - dVal, err := convertConstant2Datum(sc, param, x.ColsFieldType[i]) + dVal, err := convertConstant2Datum(sctx, param, x.ColsFieldType[i]) if err != nil { return err } @@ -556,7 +556,7 @@ func rebuildRange(p Plan) error { } for i, param := range x.HandleParams { if param != nil { - dVal, err := convertConstant2Datum(sc, param, x.HandleType) + dVal, err := convertConstant2Datum(sctx, param, x.HandleType) if err != nil { return err } @@ -573,7 +573,7 @@ func rebuildRange(p Plan) error { } for j, param := range params { if param != nil { - dVal, err := convertConstant2Datum(sc, param, x.IndexColTypes[j]) + dVal, err := convertConstant2Datum(sctx, param, x.IndexColTypes[j]) if err != nil { return err } @@ -614,17 +614,18 @@ func rebuildRange(p Plan) error { return nil } -func convertConstant2Datum(sc *stmtctx.StatementContext, con *expression.Constant, target *types.FieldType) (*types.Datum, error) { - val, err := con.Eval(chunk.Row{}) +func convertConstant2Datum(ctx sessionctx.Context, con *expression.Constant, target *types.FieldType) (*types.Datum, error) { + val, err := con.Eval(ctx, chunk.Row{}) if err != nil { return nil, err } - dVal, err := val.ConvertTo(sc.TypeCtx(), target) + tc := ctx.GetSessionVars().StmtCtx.TypeCtx() + dVal, err := val.ConvertTo(tc, target) if err != nil { return nil, err } // The converted result must be same as original datum. - cmp, err := dVal.Compare(sc.TypeCtx(), &val, collate.GetCollator(target.GetCollate())) + cmp, err := dVal.Compare(tc, &val, collate.GetCollator(target.GetCollate())) if err != nil || cmp != 0 { return nil, errors.New("Convert constant to datum is failed, because the constant has changed after the covert") } diff --git a/pkg/planner/core/plan_cache_test.go b/pkg/planner/core/plan_cache_test.go index f7d10edaf5ea2..a8be4a0413b04 100644 --- a/pkg/planner/core/plan_cache_test.go +++ b/pkg/planner/core/plan_cache_test.go @@ -51,45 +51,6 @@ func TestInitLRUWithSystemVar(t *testing.T) { require.NotNil(t, lru) } -func TestIssue45086(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec(`use test`) - - tk.MustExec(`CREATE TABLE t (a int(11) DEFAULT NULL, b date DEFAULT NULL)`) - tk.MustExec(`INSERT INTO t VALUES (1, current_date())`) - - tk.MustExec(`PREPARE stmt FROM 'SELECT * FROM t WHERE b=current_date()'`) - require.Equal(t, len(tk.MustQuery(`EXECUTE stmt`).Rows()), 1) -} - -func TestPlanCacheSizeSwitch(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - - // default value = 100 - tk.MustQuery(`select @@tidb_prepared_plan_cache_size`).Check(testkit.Rows("100")) - tk.MustQuery(`select @@tidb_session_plan_cache_size`).Check(testkit.Rows("100")) - - // keep the same value when updating any one of them - tk.MustExec(`set @@tidb_prepared_plan_cache_size = 200`) - tk.MustQuery(`select @@tidb_prepared_plan_cache_size`).Check(testkit.Rows("200")) - tk.MustQuery(`select @@tidb_session_plan_cache_size`).Check(testkit.Rows("200")) - tk.MustExec(`set @@tidb_session_plan_cache_size = 300`) - tk.MustQuery(`select @@tidb_prepared_plan_cache_size`).Check(testkit.Rows("300")) - tk.MustQuery(`select @@tidb_session_plan_cache_size`).Check(testkit.Rows("300")) - - tk.MustExec(`set global tidb_prepared_plan_cache_size = 400`) - tk1 := testkit.NewTestKit(t, store) - tk1.MustQuery(`select @@tidb_prepared_plan_cache_size`).Check(testkit.Rows("400")) - tk1.MustQuery(`select @@tidb_session_plan_cache_size`).Check(testkit.Rows("400")) - - tk.MustExec(`set global tidb_session_plan_cache_size = 500`) - tk2 := testkit.NewTestKit(t, store) - tk2.MustQuery(`select @@tidb_prepared_plan_cache_size`).Check(testkit.Rows("500")) - tk2.MustQuery(`select @@tidb_session_plan_cache_size`).Check(testkit.Rows("500")) -} - func TestNonPreparedPlanCachePlanString(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) @@ -119,34 +80,6 @@ func TestNonPreparedPlanCachePlanString(t *testing.T) { tk.MustQuery(`select @@last_plan_from_cache`).Check(testkit.Rows("1")) } -func TestNonPreparedPlanCacheWithExplain(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 tidb_enable_non_prepared_plan_cache=1") - tk.MustExec("select * from t where a=1") // cache this plan - - tk.MustQuery("explain select * from t where a=2").Check(testkit.Rows( - `TableReader_7 10.00 root data:Selection_6`, - `└─Selection_6 10.00 cop[tikv] eq(test.t.a, 2)`, - ` └─TableFullScan_5 10000.00 cop[tikv] table:t keep order:false, stats:pseudo`)) - tk.MustQuery("select @@last_plan_from_cache").Check(testkit.Rows("0")) - - tk.MustQuery("explain format=verbose select * from t where a=2").Check(testkit.Rows( - `TableReader_7 10.00 168975.57 root data:Selection_6`, - `└─Selection_6 10.00 2534000.00 cop[tikv] eq(test.t.a, 2)`, - ` └─TableFullScan_5 10000.00 2035000.00 cop[tikv] table:t keep order:false, stats:pseudo`)) - tk.MustQuery("select @@last_plan_from_cache").Check(testkit.Rows("0")) - - tk.MustQuery("explain analyze select * from t where a=2").CheckAt([]int{0, 1, 2, 3}, [][]interface{}{ - {"TableReader_7", "10.00", "0", "root"}, - {"└─Selection_6", "10.00", "0", "cop[tikv]"}, - {" └─TableFullScan_5", "10000.00", "0", "cop[tikv]"}, - }) - tk.MustQuery("select @@last_plan_from_cache").Check(testkit.Rows("0")) -} - func TestNonPreparedPlanCacheInformationSchema(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) @@ -339,95 +272,6 @@ func TestIssue38533(t *testing.T) { tk.MustQuery("select @@last_plan_from_cache").Check(testkit.Rows("0")) } -func TestPlanCacheGeneratedCols(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec(`set @@tidb_opt_fix_control = "45798:on"`) - tk.MustExec(`create table t1 (a int, info json, city varchar(64) as (JSON_UNQUOTE(JSON_EXTRACT(info, '$.city'))))`) - tk.MustExec(`create table t2 (a int, info json, city varchar(64) as (JSON_UNQUOTE(JSON_EXTRACT(info, '$.city'))) virtual)`) - tk.MustExec(`create table t3 (a int, info json, city varchar(64) as (JSON_UNQUOTE(JSON_EXTRACT(info, '$.city'))) stored)`) - tk.MustExec(`create table t4 (a int, info json, index zips( (CAST(info->'$.zipcode' AS UNSIGNED ARRAY))))`) - - tk.MustExec(`set @a=1`) - tk.MustExec(`set @b=2`) - - tk.MustExec(`prepare s1 from 'select * from t1 where a=?'`) - tk.MustQuery(`show warnings`).Check(testkit.Rows()) // no warning - tk.MustQuery(`execute s1 using @a`).Check(testkit.Rows()) - tk.MustQuery(`execute s1 using @b`).Check(testkit.Rows()) - tk.MustQuery(`select @@last_plan_from_cache`).Check(testkit.Rows(`1`)) // hit cache - - tk.MustExec(`prepare s1 from 'select * from t2 where a=?'`) - tk.MustQuery(`show warnings`).Check(testkit.Rows()) // no warning - tk.MustQuery(`execute s1 using @a`).Check(testkit.Rows()) - tk.MustQuery(`execute s1 using @b`).Check(testkit.Rows()) - tk.MustQuery(`select @@last_plan_from_cache`).Check(testkit.Rows(`1`)) // hit cache - - tk.MustExec(`prepare s1 from 'select * from t3 where a=?'`) - tk.MustQuery(`show warnings`).Check(testkit.Rows()) // no warning - tk.MustQuery(`execute s1 using @a`).Check(testkit.Rows()) - tk.MustQuery(`execute s1 using @b`).Check(testkit.Rows()) - tk.MustQuery(`select @@last_plan_from_cache`).Check(testkit.Rows(`1`)) // hit cache - - tk.MustExec(`prepare s1 from 'select * from t4 where a=?'`) - tk.MustQuery(`show warnings`).Check(testkit.Rows()) // no warning - tk.MustQuery(`execute s1 using @a`).Check(testkit.Rows()) - tk.MustQuery(`execute s1 using @b`).Check(testkit.Rows()) - tk.MustQuery(`select @@last_plan_from_cache`).Check(testkit.Rows(`1`)) // hit cache -} - -func TestPlanCacheGeneratedCols2(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec(`set @@tidb_opt_fix_control = "45798:on"`) - tk.MustExec(`CREATE TABLE t1 ( - ipk varbinary(255) NOT NULL, - i_id varchar(45) DEFAULT NULL, - i_set_id varchar(45) DEFAULT NULL, - p_id varchar(45) DEFAULT NULL, - p_set_id varchar(45) DEFAULT NULL, - m_id bigint(20) DEFAULT NULL, - m_i_id varchar(127) DEFAULT NULL, - m_i_set_id varchar(127) DEFAULT NULL, - d json DEFAULT NULL, - p_sources json DEFAULT NULL, - nslc json DEFAULT NULL, - cl json DEFAULT NULL, - fii json DEFAULT NULL, - fpi json DEFAULT NULL, - PRIMARY KEY (ipk) /*T![clustered_index] CLUSTERED */, - UNIQUE KEY i_id (i_id), - KEY d ((cast(d as char(253) array))), - KEY m_i_id (m_i_id), - KEY m_i_set_id (m_i_set_id), - KEY fpi ((cast(fpi as unsigned array))), - KEY nslc ((cast(nslc as char(1000) array))), - KEY cl ((cast(cl as char(3000) array))), - KEY fii ((cast(fii as unsigned array))), - KEY m_id (m_id), - KEY i_set_id (i_set_id), - KEY m_i_and_m_id (m_i_id,m_id))`) - - tk.MustExec(`CREATE TABLE t2 ( - ipk varbinary(255) NOT NULL, - created_time bigint(20) DEFAULT NULL, - arrival_time bigint(20) DEFAULT NULL, - updated_time bigint(20) DEFAULT NULL, - timestamp_data json DEFAULT NULL, - PRIMARY KEY (ipk) /*T![clustered_index] CLUSTERED */)`) - - tk.MustExec(`prepare stmt from 'select * - from ( t1 left outer join t2 on ( t1 . ipk = t2 . ipk ) ) - where ( t1 . i_id = ? )'`) - tk.MustQuery(`show warnings`).Check(testkit.Rows()) // no warning - tk.MustExec(`set @a='a', @b='b'`) - tk.MustQuery(`execute stmt using @a`).Check(testkit.Rows()) - tk.MustQuery(`execute stmt using @b`).Check(testkit.Rows()) - tk.MustQuery(`select @@last_plan_from_cache`).Check(testkit.Rows(`1`)) // hit cache -} - func TestInvalidRange(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) @@ -511,25 +355,6 @@ func TestIssue38205(t *testing.T) { tk.MustQuery("select @@last_plan_from_cache").Check(testkit.Rows("0")) } -func TestPlanCacheExprBlacklistCompatibility(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("prepare st from 'select * from t where mod(a, 2)=1'") - tk.MustExec("execute st") - tk.MustExec("execute st") - tk.MustQuery("select @@last_plan_from_cache").Check(testkit.Rows("1")) - - tk.MustExec("insert into mysql.expr_pushdown_blacklist(name) values('mod')") - tk.MustExec(`admin reload expr_pushdown_blacklist`) - tk.MustExec("execute st") // no `mod can not be pushed-down` error - tk.MustQuery("select @@last_plan_from_cache").Check(testkit.Rows("0")) // expr blacklist is updated - tk.MustExec("execute st") - tk.MustQuery("select @@last_plan_from_cache").Check(testkit.Rows("1")) -} - func TestIssue40224(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) @@ -1050,41 +875,6 @@ func TestPlanCacheSubquerySPMEffective(t *testing.T) { } } -func TestNonPreparedPlanCacheFieldNames(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec(`use test`) - tk.MustExec("create table t(a int, index(a))") - tk.MustExec("create table tt(a varchar(10))") - tk.MustExec("set tidb_enable_non_prepared_plan_cache=1") - - checkFieldName := func(sql, hit string, fields ...string) { - rs, err := tk.Exec(sql) - require.NoError(t, err) - for i, f := range rs.Fields() { - require.Equal(t, f.Column.Name.L, fields[i]) - } - require.NoError(t, rs.Close()) - tk.MustQuery(`select @@last_plan_from_cache`).Check(testkit.Rows(hit)) - } - - checkFieldName(`select a+1 from t where a<10`, `0`, `a+1`) - checkFieldName(`select a+1 from t where a<20`, `1`, `a+1`) - checkFieldName(`select a+2 from t where a<30`, `0`, `a+2`) // can not hit since field names changed - checkFieldName(`select a+2 from t where a<40`, `1`, `a+2`) - checkFieldName(`select a,a+1 from t where a<30`, `0`, `a`, `a+1`) // can not hit since field names changed - checkFieldName(`select a,a+1 from t where a<40`, `1`, `a`, `a+1`) - checkFieldName(`select a+'123' from tt where a='1'`, `0`, `a+'123'`) - checkFieldName(`select a+'123' from tt where a='2'`, `1`, `a+'123'`) - - checkFieldName(`select 1 from t where a<10`, `0`, `1`) - checkFieldName(`select 1 from t where a<20`, `1`, `1`) - checkFieldName(`select 2 from t where a<10`, `0`, `2`) - checkFieldName(`select 2 from t where a<20`, `1`, `2`) - checkFieldName(`select 1,2 from t where a<10`, `0`, `1`, `2`) - checkFieldName(`select 1,2 from t where a<20`, `1`, `1`, `2`) -} - func TestIssue42125(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) @@ -1402,51 +1192,6 @@ func TestBuiltinFuncFlen(t *testing.T) { } } -func TestNonPreparedPlanCacheBuiltinFuncs(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec(`set tidb_enable_non_prepared_plan_cache=1`) - tk.MustExec(`create table t (a int, b varchar(32), c datetime, key(a))`) - - // normal builtin functions can be supported - supportedCases := []string{ - `select * from t where mod(a, 5) < 2`, - `select * from t where c < now()`, - `select date_format(c, '%Y-%m-%d') from t where a < 10`, - `select str_to_date(b, '%Y-%m-%d') from t where a < 10`, - `select * from t where a-2 < 20`, - `select * from t where a+b > 100`, - } - for _, sql := range supportedCases { - tk.MustExec(sql) - tk.MustExec(sql) - tk.MustQuery(`select @@last_plan_from_cache`).Check(testkit.Rows("1")) - } - - // unsupported cases - unsupportedCases := []string{ - `select * from t where -a > 10`, // '-' cannot support - `select * from t where a < 1 and b like '%abc%'`, // LIKE - `select database() from t`, - } - for _, sql := range unsupportedCases { - tk.MustExec(sql) - tk.MustExec(sql) - tk.MustQuery(`select @@last_plan_from_cache`).Check(testkit.Rows("0")) - } -} - -func TestIssue48165(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec(`create table t(a int)`) - tk.MustExec(`insert into t values(1)`) - tk.MustExec(`prepare s from "select * from t where tidb_parse_tso(a) > unix_timestamp()"`) - tk.MustQuery(`execute s`).Check(testkit.Rows("1")) -} - func BenchmarkPlanCacheInsert(b *testing.B) { store := testkit.CreateMockStore(b) tk := testkit.NewTestKit(b, store) diff --git a/pkg/planner/core/plan_cost_ver2_test.go b/pkg/planner/core/plan_cost_ver2_test.go index a9e2c798dac7d..657092f0e7bf3 100644 --- a/pkg/planner/core/plan_cost_ver2_test.go +++ b/pkg/planner/core/plan_cost_ver2_test.go @@ -53,26 +53,6 @@ func testCostQueries(t *testing.T, tk *testkit.TestKit, queries []string) { } } -func TestCostModelShowFormula(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 @@tidb_cost_model_version=2") - - tk.MustExecToErr("explain format='true_card_cost' select * from t") // 'true_card_cost' must work with 'explain analyze' - plan := tk.MustQuery("explain analyze format='true_card_cost' select * from t where a<3").Rows() - actual := make([][]interface{}, 0, len(plan)) - for _, row := range plan { - actual = append(actual, []interface{}{row[0], row[3]}) // id,costFormula - } - require.Equal(t, actual, [][]interface{}{ - {"TableReader_7", "(((cpu(0*filters(1)*tikv_cpu_factor(49.9))) + (scan(0*logrowsize(32)*tikv_scan_factor(40.7)))) + (net(0*rowsize(16)*tidb_kv_net_factor(3.96))))/15.00"}, - {"└─Selection_6", "(cpu(0*filters(1)*tikv_cpu_factor(49.9))) + (scan(0*logrowsize(32)*tikv_scan_factor(40.7)))"}, - {" └─TableFullScan_5", "scan(0*logrowsize(32)*tikv_scan_factor(40.7))"}, - }) -} - func TestCostModelVer2ScanRowSize(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) diff --git a/pkg/planner/core/plan_test.go b/pkg/planner/core/plan_test.go index 894fc966a9f35..d446b0bf12658 100644 --- a/pkg/planner/core/plan_test.go +++ b/pkg/planner/core/plan_test.go @@ -23,7 +23,6 @@ import ( "github.com/pingcap/tidb/pkg/domain" "github.com/pingcap/tidb/pkg/expression" "github.com/pingcap/tidb/pkg/expression/aggregation" - "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/parser/ast" "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" @@ -471,29 +470,6 @@ func BenchmarkEncodeFlatPlan(b *testing.B) { } } -func TestIssue35090(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test;") - tk.MustExec("drop table if exists p, t;") - tk.MustExec("create table p (id int, c int, key i_id(id), key i_c(c));") - tk.MustExec("create table t (id int);") - tk.MustExec("insert into p values (3,3), (4,4), (6,6), (9,9);") - tk.MustExec("insert into t values (4), (9);") - tk.MustExec("select /*+ INL_JOIN(p) */ * from p, t where p.id = t.id;") - rows := [][]interface{}{ - {"IndexJoin"}, - {"├─TableReader(Build)"}, - {"│ └─Selection"}, - {"│ └─TableFullScan"}, - {"└─IndexLookUp(Probe)"}, - {" ├─Selection(Build)"}, - {" │ └─IndexRangeScan"}, - {" └─TableRowIDScan(Probe)"}, - } - tk.MustQuery("explain analyze format='brief' select /*+ INL_JOIN(p) */ * from p, t where p.id = t.id;").CheckAt([]int{0}, rows) -} - func TestCopPaging(t *testing.T) { store := testkit.CreateMockStore(t) @@ -702,17 +678,6 @@ func TestBuildFinalModeAggregation(t *testing.T) { checkResult(ctx, mixedAggFuncs, groupByItems) } -func TestIssue40857(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 (c1 mediumint(9) DEFAULT '-4747160',c2 year(4) NOT NULL DEFAULT '2075',c3 double DEFAULT '1.1559030660251948',c4 enum('wbv4','eli','d8ym','m3gsx','lz7td','o','d1k7l','y1x','xcxq','bj','n7') DEFAULT 'xcxq',c5 int(11) DEFAULT '255080866',c6 tinyint(1) DEFAULT '1',PRIMARY KEY (c2),KEY `c4d86d54-091c-4307-957b-b164c9652b7f` (c6,c4) );") - tk.MustExec("insert into t values (-4747160, 2075, 722.5719203870632, 'xcxq', 1576824797, 1);") - tk.MustExec("select /*+ stream_agg() */ bit_or(t.c5) as r0 from t where t.c3 in (select c6 from t where not(t.c6 <> 1) and not(t.c3 in(9263.749352636818))) group by t.c1;") - require.Empty(t, tk.Session().LastMessage()) -} - func TestCloneFineGrainedShuffleStreamCount(t *testing.T) { window := &core.PhysicalWindow{} newPlan, err := window.Clone() @@ -742,38 +707,3 @@ func TestCloneFineGrainedShuffleStreamCount(t *testing.T) { require.Equal(t, ok, true) require.Equal(t, sort.TiFlashFineGrainedShuffleStreamCount, newSort.TiFlashFineGrainedShuffleStreamCount) } - -func TestIssue40535(t *testing.T) { - store := testkit.CreateMockStore(t) - var cfg kv.InjectionConfig - tk := testkit.NewTestKit(t, kv.NewInjectedStore(store, &cfg)) - tk.MustExec("use test;") - tk.MustExec("drop table if exists t1; drop table if exists t2;") - tk.MustExec("CREATE TABLE `t1`(`c1` bigint(20) NOT NULL DEFAULT '-2312745469307452950', `c2` datetime DEFAULT '5316-02-03 06:54:49', `c3` tinyblob DEFAULT NULL, PRIMARY KEY (`c1`) /*T![clustered_index] CLUSTERED */) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;") - tk.MustExec("CREATE TABLE `t2`(`c1` set('kn8pu','7et','vekx6','v3','liwrh','q14','1met','nnd5i','5o0','8cz','l') DEFAULT '7et,vekx6,liwrh,q14,1met', `c2` float DEFAULT '1.683167', KEY `k1` (`c2`,`c1`), KEY `k2` (`c2`)) ENGINE=InnoDB DEFAULT CHARSET=gbk COLLATE=gbk_chinese_ci;") - tk.MustExec("(select /*+ agg_to_cop()*/ locate(t1.c3, t1.c3) as r0, t1.c3 as r1 from t1 where not( IsNull(t1.c1)) order by r0,r1) union all (select concat_ws(',', t2.c2, t2.c1) as r0, t2.c1 as r1 from t2 order by r0, r1) order by 1 limit 273;") - require.Empty(t, tk.Session().LastMessage()) -} - -func TestIssue47445(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test;") - tk.MustExec("CREATE TABLE golang1 ( `fcbpdt` CHAR (8) COLLATE utf8_general_ci NOT NULL, `fcbpsq` VARCHAR (20) COLLATE utf8_general_ci NOT NULL, `procst` char (4) COLLATE utf8_general_ci DEFAULT NULL,`cipstx` VARCHAR (105) COLLATE utf8_general_ci DEFAULT NULL, `cipsst` CHAR (4) COLLATE utf8_general_ci DEFAULT NULL, `dyngtg` VARCHAR(4) COLLATE utf8_general_ci DEFAULT NULL, `blncdt` VARCHAR (8) COLLATE utf8_general_ci DEFAULT NULL, PRIMARY KEY ( fcbpdt, fcbpsq ))") - tk.MustExec("insert into golang1 values('20230925','12023092502158016','abc','','','','')") - tk.MustExec("create table golang2 (`sysgrp` varchar(20) NOT NULL,`procst` varchar(8) NOT NULL,`levlid` int(11) NOT NULL,PRIMARY key (procst));") - tk.MustExec("insert into golang2 VALUES('COMMON','ACSC',90)") - tk.MustExec("insert into golang2 VALUES('COMMON','abc',8)") - tk.MustExec("insert into golang2 VALUES('COMMON','CH02',6)") - tk.MustExec("UPDATE golang1 a SET procst =(CASE WHEN ( SELECT levlid FROM golang2 b WHERE b.sysgrp = 'COMMON' AND b.procst = 'ACSC' ) > ( SELECT levlid FROM golang2 c WHERE c.sysgrp = 'COMMON' AND c.procst = a.procst ) THEN 'ACSC' ELSE a.procst END ), cipstx = 'CI010000', cipsst = 'ACSC', dyngtg = 'EAYT', blncdt= '20230925' WHERE fcbpdt = '20230925' AND fcbpsq = '12023092502158016'") - tk.MustQuery("select * from golang1").Check(testkit.Rows("20230925 12023092502158016 ACSC CI010000 ACSC EAYT 20230925")) - tk.MustExec("UPDATE golang1 a SET procst= (SELECT 1 FROM golang2 c WHERE c.procst = a.procst) WHERE fcbpdt = '20230925' AND fcbpsq = '12023092502158016'") - tk.MustQuery("select * from golang1").Check(testkit.Rows("20230925 12023092502158016 1 CI010000 ACSC EAYT 20230925")) -} - -func TestExplainValuesStatement(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - - tk.MustMatchErrMsg("EXPLAIN FORMAT = TRADITIONAL ((VALUES ROW ()) ORDER BY 1)", ".*Unknown table ''.*") -} diff --git a/pkg/planner/core/plan_to_pb.go b/pkg/planner/core/plan_to_pb.go index d6a425f390791..6e5a652ed555a 100644 --- a/pkg/planner/core/plan_to_pb.go +++ b/pkg/planner/core/plan_to_pb.go @@ -38,9 +38,8 @@ func (p *PhysicalExpand) ToPB(ctx sessionctx.Context, storeType kv.StoreType) (* if len(p.LevelExprs) > 0 { return p.toPBV2(ctx, storeType) } - sc := ctx.GetSessionVars().StmtCtx client := ctx.GetClient() - groupingSetsPB, err := p.GroupingSets.ToPB(sc, client) + groupingSetsPB, err := p.GroupingSets.ToPB(ctx, client) if err != nil { return nil, err } @@ -60,11 +59,10 @@ func (p *PhysicalExpand) ToPB(ctx sessionctx.Context, storeType kv.StoreType) (* } func (p *PhysicalExpand) toPBV2(ctx sessionctx.Context, storeType kv.StoreType) (*tipb.Executor, error) { - sc := ctx.GetSessionVars().StmtCtx client := ctx.GetClient() projExprsPB := make([]*tipb.ExprSlice, 0, len(p.LevelExprs)) for _, exprs := range p.LevelExprs { - expressionsPB, err := expression.ExpressionsToPBList(sc, exprs, client) + expressionsPB, err := expression.ExpressionsToPBList(ctx, exprs, client) if err != nil { return nil, err } @@ -88,9 +86,8 @@ func (p *PhysicalExpand) toPBV2(ctx sessionctx.Context, storeType kv.StoreType) // ToPB implements PhysicalPlan ToPB interface. func (p *PhysicalHashAgg) ToPB(ctx sessionctx.Context, storeType kv.StoreType) (*tipb.Executor, error) { - sc := ctx.GetSessionVars().StmtCtx client := ctx.GetClient() - groupByExprs, err := expression.ExpressionsToPBList(sc, p.GroupByItems, client) + groupByExprs, err := expression.ExpressionsToPBList(ctx, p.GroupByItems, client) if err != nil { return nil, err } @@ -124,9 +121,8 @@ func (p *PhysicalHashAgg) ToPB(ctx sessionctx.Context, storeType kv.StoreType) ( // ToPB implements PhysicalPlan ToPB interface. func (p *PhysicalStreamAgg) ToPB(ctx sessionctx.Context, storeType kv.StoreType) (*tipb.Executor, error) { - sc := ctx.GetSessionVars().StmtCtx client := ctx.GetClient() - groupByExprs, err := expression.ExpressionsToPBList(sc, p.GroupByItems, client) + groupByExprs, err := expression.ExpressionsToPBList(ctx, p.GroupByItems, client) if err != nil { return nil, err } @@ -154,9 +150,8 @@ func (p *PhysicalStreamAgg) ToPB(ctx sessionctx.Context, storeType kv.StoreType) // ToPB implements PhysicalPlan ToPB interface. func (p *PhysicalSelection) ToPB(ctx sessionctx.Context, storeType kv.StoreType) (*tipb.Executor, error) { - sc := ctx.GetSessionVars().StmtCtx client := ctx.GetClient() - conditions, err := expression.ExpressionsToPBList(sc, p.Conditions, client) + conditions, err := expression.ExpressionsToPBList(ctx, p.Conditions, client) if err != nil { return nil, err } @@ -177,9 +172,8 @@ func (p *PhysicalSelection) ToPB(ctx sessionctx.Context, storeType kv.StoreType) // ToPB implements PhysicalPlan ToPB interface. func (p *PhysicalProjection) ToPB(ctx sessionctx.Context, storeType kv.StoreType) (*tipb.Executor, error) { - sc := ctx.GetSessionVars().StmtCtx client := ctx.GetClient() - exprs, err := expression.ExpressionsToPBList(sc, p.Exprs, client) + exprs, err := expression.ExpressionsToPBList(ctx, p.Exprs, client) if err != nil { return nil, err } @@ -200,16 +194,15 @@ func (p *PhysicalProjection) ToPB(ctx sessionctx.Context, storeType kv.StoreType // ToPB implements PhysicalPlan ToPB interface. func (p *PhysicalTopN) ToPB(ctx sessionctx.Context, storeType kv.StoreType) (*tipb.Executor, error) { - sc := ctx.GetSessionVars().StmtCtx client := ctx.GetClient() topNExec := &tipb.TopN{ Limit: p.Count, } for _, item := range p.ByItems { - topNExec.OrderBy = append(topNExec.OrderBy, expression.SortByItemToPB(sc, client, item.Expr, item.Desc)) + topNExec.OrderBy = append(topNExec.OrderBy, expression.SortByItemToPB(ctx, client, item.Expr, item.Desc)) } for _, item := range p.PartitionBy { - topNExec.PartitionBy = append(topNExec.PartitionBy, expression.SortByItemToPB(sc, client, item.Col.Clone(), item.Desc)) + topNExec.PartitionBy = append(topNExec.PartitionBy, expression.SortByItemToPB(ctx, client, item.Col.Clone(), item.Desc)) } executorID := "" if storeType == kv.TiFlash { @@ -225,14 +218,13 @@ func (p *PhysicalTopN) ToPB(ctx sessionctx.Context, storeType kv.StoreType) (*ti // ToPB implements PhysicalPlan ToPB interface. func (p *PhysicalLimit) ToPB(ctx sessionctx.Context, storeType kv.StoreType) (*tipb.Executor, error) { - sc := ctx.GetSessionVars().StmtCtx client := ctx.GetClient() limitExec := &tipb.Limit{ Limit: p.Count, } executorID := "" for _, item := range p.PartitionBy { - limitExec.PartitionBy = append(limitExec.PartitionBy, expression.SortByItemToPB(sc, client, item.Col.Clone(), item.Desc)) + limitExec.PartitionBy = append(limitExec.PartitionBy, expression.SortByItemToPB(ctx, client, item.Col.Clone(), item.Desc)) } if storeType == kv.TiFlash { var err error @@ -257,9 +249,8 @@ func (p *PhysicalTableScan) ToPB(ctx sessionctx.Context, storeType kv.StoreType) tsExec.IsFastScan = &(ctx.GetSessionVars().TiFlashFastScan) if len(p.lateMaterializationFilterCondition) > 0 { - sc := ctx.GetSessionVars().StmtCtx client := ctx.GetClient() - conditions, err := expression.ExpressionsToPBList(sc, p.lateMaterializationFilterCondition, client) + conditions, err := expression.ExpressionsToPBList(ctx, p.lateMaterializationFilterCondition, client) if err != nil { return nil, err } @@ -267,7 +258,7 @@ func (p *PhysicalTableScan) ToPB(ctx sessionctx.Context, storeType kv.StoreType) } var err error - tsExec.RuntimeFilterList, err = RuntimeFilterListToPB(p.runtimeFilterList, ctx.GetSessionVars().StmtCtx, ctx.GetClient()) + tsExec.RuntimeFilterList, err = RuntimeFilterListToPB(ctx, p.runtimeFilterList, ctx.GetClient()) if err != nil { return nil, errors.Trace(err) } @@ -297,9 +288,8 @@ func (p *PhysicalTableScan) partitionTableScanToPBForFlash(ctx sessionctx.Contex } if len(p.lateMaterializationFilterCondition) > 0 { - sc := ctx.GetSessionVars().StmtCtx client := ctx.GetClient() - conditions, err := expression.ExpressionsToPBList(sc, p.lateMaterializationFilterCondition, client) + conditions, err := expression.ExpressionsToPBList(ctx, p.lateMaterializationFilterCondition, client) if err != nil { return nil, err } @@ -308,7 +298,7 @@ func (p *PhysicalTableScan) partitionTableScanToPBForFlash(ctx sessionctx.Contex // set runtime filter var err error - ptsExec.RuntimeFilterList, err = RuntimeFilterListToPB(p.runtimeFilterList, ctx.GetSessionVars().StmtCtx, ctx.GetClient()) + ptsExec.RuntimeFilterList, err = RuntimeFilterListToPB(ctx, p.runtimeFilterList, ctx.GetClient()) if err != nil { return nil, errors.Trace(err) } @@ -408,7 +398,7 @@ func (e *PhysicalExchangeSender) ToPB(ctx sessionctx.Context, storeType kv.Store } allFieldTypes = append(allFieldTypes, pbType) } - hashColPb, err := expression.ExpressionsToPBList(ctx.GetSessionVars().StmtCtx, hashCols, ctx.GetClient()) + hashColPb, err := expression.ExpressionsToPBList(ctx, hashCols, ctx.GetClient()) if err != nil { return nil, errors.Trace(err) } @@ -507,7 +497,6 @@ func (p *PhysicalIndexScan) ToPB(_ sessionctx.Context, _ kv.StoreType) (*tipb.Ex // ToPB implements PhysicalPlan ToPB interface. func (p *PhysicalHashJoin) ToPB(ctx sessionctx.Context, storeType kv.StoreType) (*tipb.Executor, error) { - sc := ctx.GetSessionVars().StmtCtx client := ctx.GetClient() if len(p.LeftJoinKeys) > 0 && len(p.LeftNAJoinKeys) > 0 { @@ -542,20 +531,20 @@ func (p *PhysicalHashJoin) ToPB(ctx sessionctx.Context, storeType kv.StoreType) return nil, errors.Trace(err) } - left, err := expression.ExpressionsToPBList(sc, leftKeys, client) + left, err := expression.ExpressionsToPBList(ctx, leftKeys, client) if err != nil { return nil, err } - right, err := expression.ExpressionsToPBList(sc, rightKeys, client) + right, err := expression.ExpressionsToPBList(ctx, rightKeys, client) if err != nil { return nil, err } - leftConditions, err := expression.ExpressionsToPBList(sc, p.LeftConditions, client) + leftConditions, err := expression.ExpressionsToPBList(ctx, p.LeftConditions, client) if err != nil { return nil, err } - rightConditions, err := expression.ExpressionsToPBList(sc, p.RightConditions, client) + rightConditions, err := expression.ExpressionsToPBList(ctx, p.RightConditions, client) if err != nil { return nil, err } @@ -575,11 +564,11 @@ func (p *PhysicalHashJoin) ToPB(ctx sessionctx.Context, storeType kv.StoreType) } else { otherConditionsInJoin = p.OtherConditions } - otherConditions, err := expression.ExpressionsToPBList(sc, otherConditionsInJoin, client) + otherConditions, err := expression.ExpressionsToPBList(ctx, otherConditionsInJoin, client) if err != nil { return nil, err } - otherEqConditions, err := expression.ExpressionsToPBList(sc, otherEqConditionsFromIn, client) + otherEqConditions, err := expression.ExpressionsToPBList(ctx, otherEqConditionsFromIn, client) if err != nil { return nil, err } @@ -622,7 +611,7 @@ func (p *PhysicalHashJoin) ToPB(ctx sessionctx.Context, storeType kv.StoreType) } // runtime filter - rfListPB, err := RuntimeFilterListToPB(p.runtimeFilterList, sc, client) + rfListPB, err := RuntimeFilterListToPB(ctx, p.runtimeFilterList, client) if err != nil { return nil, errors.Trace(err) } @@ -663,7 +652,7 @@ func (fb *FrameBound) ToPB(ctx sessionctx.Context) (*tipb.WindowFrameBound, erro pbBound.Offset = &offset if fb.IsExplicitRange { - rangeFrame, err := expression.ExpressionsToPBList(ctx.GetSessionVars().StmtCtx, fb.CalcFuncs, ctx.GetClient()) + rangeFrame, err := expression.ExpressionsToPBList(ctx, fb.CalcFuncs, ctx.GetClient()) if err != nil { return nil, err } @@ -677,7 +666,6 @@ func (fb *FrameBound) ToPB(ctx sessionctx.Context) (*tipb.WindowFrameBound, erro // ToPB implements PhysicalPlan ToPB interface. func (p *PhysicalWindow) ToPB(ctx sessionctx.Context, storeType kv.StoreType) (*tipb.Executor, error) { - sc := ctx.GetSessionVars().StmtCtx client := ctx.GetClient() windowExec := &tipb.Window{} @@ -687,10 +675,10 @@ func (p *PhysicalWindow) ToPB(ctx sessionctx.Context, storeType kv.StoreType) (* windowExec.FuncDesc = append(windowExec.FuncDesc, aggregation.WindowFuncToPBExpr(ctx, client, desc)) } for _, item := range p.PartitionBy { - windowExec.PartitionBy = append(windowExec.PartitionBy, expression.SortByItemToPB(sc, client, item.Col.Clone(), item.Desc)) + windowExec.PartitionBy = append(windowExec.PartitionBy, expression.SortByItemToPB(ctx, client, item.Col.Clone(), item.Desc)) } for _, item := range p.OrderBy { - windowExec.OrderBy = append(windowExec.OrderBy, expression.SortByItemToPB(sc, client, item.Col.Clone(), item.Desc)) + windowExec.OrderBy = append(windowExec.OrderBy, expression.SortByItemToPB(ctx, client, item.Col.Clone(), item.Desc)) } if p.Frame != nil { @@ -734,12 +722,11 @@ func (p *PhysicalSort) ToPB(ctx sessionctx.Context, storeType kv.StoreType) (*ti return nil, errors.Errorf("sort %s can't convert to pb, because it isn't a partial sort", p.Plan.ExplainID()) } - sc := ctx.GetSessionVars().StmtCtx client := ctx.GetClient() sortExec := &tipb.Sort{} for _, item := range p.ByItems { - sortExec.ByItems = append(sortExec.ByItems, expression.SortByItemToPB(sc, client, item.Expr, item.Desc)) + sortExec.ByItems = append(sortExec.ByItems, expression.SortByItemToPB(ctx, client, item.Expr, item.Desc)) } isPartialSort := p.IsPartialSort sortExec.IsPartialSort = &isPartialSort diff --git a/pkg/planner/core/planbuilder.go b/pkg/planner/core/planbuilder.go index 0dd18c76534cf..febc2dcfb921d 100644 --- a/pkg/planner/core/planbuilder.go +++ b/pkg/planner/core/planbuilder.go @@ -1777,6 +1777,12 @@ func (b *PlanBuilder) buildAdmin(ctx context.Context, as *ast.AdminStmt) (Plan, return &Simple{Statement: as}, nil case ast.AdminFlushPlanCache: return &Simple{Statement: as}, nil + case ast.AdminSetBDRRole: + return &Simple{Statement: as}, nil + case ast.AdminShowBDRRole: + p := &AdminShowBDRRole{} + p.setSchemaAndNames(buildAdminShowBDRRoleFields()) + ret = p default: return nil, ErrUnsupportedType.GenWithStack("Unsupported ast.AdminStmt(%T) for buildAdmin", as) } @@ -3288,6 +3294,12 @@ func buildResumeDDLJobsFields() (*expression.Schema, types.NameSlice) { return buildCommandOnDDLJobsFields() } +func buildAdminShowBDRRoleFields() (*expression.Schema, types.NameSlice) { + schema := newColumnsWithNames(1) + schema.Append(buildColumnWithName("", "BDR_ROLE", mysql.TypeString, 1)) + return schema.col2Schema(), schema.names +} + func buildShowBackupMetaSchema() (*expression.Schema, types.NameSlice) { names := []string{"Database", "Table", "Total_kvs", "Total_bytes", "Time_range_start", "Time_range_end"} ftypes := []byte{mysql.TypeVarchar, mysql.TypeVarchar, mysql.TypeLonglong, mysql.TypeLonglong, mysql.TypeDatetime, mysql.TypeDatetime} @@ -3884,7 +3896,7 @@ func (b *PlanBuilder) resolveGeneratedColumns(ctx context.Context, columns []*ta originalVal := b.allowBuildCastArray b.allowBuildCastArray = true - expr, _, err := b.rewrite(ctx, column.GeneratedExpr, mockPlan, nil, true) + expr, _, err := b.rewrite(ctx, column.GeneratedExpr.Clone(), mockPlan, nil, true) b.allowBuildCastArray = originalVal if err != nil { return igc, err @@ -4590,8 +4602,13 @@ func (b *PlanBuilder) buildSplitRegion(node *ast.SplitRegionStmt) (Plan, error) func (b *PlanBuilder) buildSplitIndexRegion(node *ast.SplitRegionStmt) (Plan, error) { tblInfo := node.Table.TableInfo + if node.IndexName.L == strings.ToLower(mysql.PrimaryKeyName) && + (tblInfo.IsCommonHandle || tblInfo.PKIsHandle) { + return nil, ErrKeyDoesNotExist.FastGen("unable to split clustered index, please split table instead.") + } + indexInfo := tblInfo.FindIndexByName(node.IndexName.L) - if indexInfo == nil || indexInfo.Primary && tblInfo.IsCommonHandle { + if indexInfo == nil { return nil, ErrKeyDoesNotExist.GenWithStackByArgs(node.IndexName, tblInfo.Name) } mockTablePlan := LogicalTableDual{}.Init(b.ctx, b.getSelectOffset()) @@ -4688,7 +4705,7 @@ func (b *PlanBuilder) convertValue(valueItem ast.ExprNode, mockTablePlan Logical if !ok { return d, errors.New("Expect constant values") } - value, err := constant.Eval(chunk.Row{}) + value, err := constant.Eval(b.ctx, chunk.Row{}) if err != nil { return d, err } @@ -5351,6 +5368,9 @@ func buildShowSchema(s *ast.ShowStmt, isView bool, isSequence bool) (schema *exp var names []string var ftypes []byte switch s.Tp { + case ast.ShowBinlogStatus: + names = []string{"File", "Position", "Binlog_Do_DB", "Binlog_Ignore_DB", "Executed_Gtid_Set"} + ftypes = []byte{mysql.TypeVarchar, mysql.TypeLonglong, mysql.TypeVarchar, mysql.TypeVarchar, mysql.TypeVarchar} case ast.ShowProcedureStatus, ast.ShowFunctionStatus: return buildShowProcedureSchema() case ast.ShowTriggers: diff --git a/pkg/planner/core/planbuilder_test.go b/pkg/planner/core/planbuilder_test.go index 81ee1e7bacbe9..365fcccf5d67a 100644 --- a/pkg/planner/core/planbuilder_test.go +++ b/pkg/planner/core/planbuilder_test.go @@ -49,6 +49,7 @@ type visit struct { func TestShow(t *testing.T) { node := &ast.ShowStmt{} tps := []ast.ShowStmtType{ + ast.ShowBinlogStatus, ast.ShowEngines, ast.ShowDatabases, ast.ShowTables, diff --git a/pkg/planner/core/point_get_plan.go b/pkg/planner/core/point_get_plan.go index 68ab03f220ba6..a4f501e308085 100644 --- a/pkg/planner/core/point_get_plan.go +++ b/pkg/planner/core/point_get_plan.go @@ -672,7 +672,7 @@ func newBatchPointGetPlan( if err != nil { return nil } - d, err = con.Eval(chunk.Row{}) + d, err = con.Eval(ctx, chunk.Row{}) if err != nil { return nil } @@ -818,7 +818,7 @@ func newBatchPointGetPlan( if err != nil { return nil } - d, err := con.Eval(chunk.Row{}) + d, err := con.Eval(ctx, chunk.Row{}) if err != nil { return nil } @@ -857,7 +857,7 @@ func newBatchPointGetPlan( if err != nil { return nil } - d, err := con.Eval(chunk.Row{}) + d, err := con.Eval(ctx, chunk.Row{}) if err != nil { return nil } @@ -1403,7 +1403,7 @@ func getNameValuePairs(ctx sessionctx.Context, tbl *model.TableInfo, tblName mod if err != nil { return nil, false } - d, err = con.Eval(chunk.Row{}) + d, err = con.Eval(ctx, chunk.Row{}) if err != nil { return nil, false } @@ -1417,7 +1417,7 @@ func getNameValuePairs(ctx sessionctx.Context, tbl *model.TableInfo, tblName mod if err != nil { return nil, false } - d, err = con.Eval(chunk.Row{}) + d, err = con.Eval(ctx, chunk.Row{}) if err != nil { return nil, false } diff --git a/pkg/planner/core/point_get_plan_test.go b/pkg/planner/core/point_get_plan_test.go index 2d4a5222e5d80..5fd3ed286b19e 100644 --- a/pkg/planner/core/point_get_plan_test.go +++ b/pkg/planner/core/point_get_plan_test.go @@ -16,8 +16,6 @@ package core_test import ( "context" - "fmt" - "strings" "testing" "time" @@ -150,35 +148,6 @@ func TestPointGetPlanCache(t *testing.T) { require.Equal(t, float64(2), hit) } -func TestPointGetForUpdate(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("create table fu (id int primary key, val int)") - tk.MustExec("insert into fu values (6, 6)") - - // In autocommit mode, outside a transaction, "for update" doesn't take effect. - checkUseForUpdate(tk, t, false) - - tk.MustExec("begin") - checkUseForUpdate(tk, t, true) - tk.MustExec("rollback") - - tk.MustExec("set @@session.autocommit = 0") - checkUseForUpdate(tk, t, true) - tk.MustExec("rollback") -} - -func checkUseForUpdate(tk *testkit.TestKit, t *testing.T, expectLock bool) { - res := tk.MustQuery("explain format = 'brief' select * from fu where id = 6 for update") - // Point_Get_1 1.00 root table:fu, handle:6 - opInfo := res.Rows()[0][4] - selectLock := strings.Contains(fmt.Sprintf("%s", opInfo), "lock") - require.Equal(t, expectLock, selectLock) - - tk.MustQuery("select * from fu where id = 6 for update").Check(testkit.Rows("6 6")) -} - // Test that the plan id will be reset before optimization every time. func TestPointGetId(t *testing.T) { store := testkit.CreateMockStore(t) diff --git a/pkg/planner/core/resolve_indices.go b/pkg/planner/core/resolve_indices.go index e43405fb1f6db..e40a107a88612 100644 --- a/pkg/planner/core/resolve_indices.go +++ b/pkg/planner/core/resolve_indices.go @@ -83,6 +83,7 @@ func refine4NeighbourProj(p, childProj *PhysicalProjection) { func (p *PhysicalHashJoin) ResolveIndicesItself() (err error) { lSchema := p.children[0].Schema() rSchema := p.children[1].Schema() + ctx := p.SCtx() for i, fun := range p.EqualConditions { lArg, err := fun.GetArgs()[0].ResolveIndices(lSchema) if err != nil { @@ -94,7 +95,7 @@ func (p *PhysicalHashJoin) ResolveIndicesItself() (err error) { return err } p.RightJoinKeys[i] = rArg.(*expression.Column) - p.EqualConditions[i] = expression.NewFunctionInternal(fun.GetCtx(), fun.FuncName.L, fun.GetType(), lArg, rArg).(*expression.ScalarFunction) + p.EqualConditions[i] = expression.NewFunctionInternal(ctx, fun.FuncName.L, fun.GetType(), lArg, rArg).(*expression.ScalarFunction) } for i, fun := range p.NAEqualConditions { lArg, err := fun.GetArgs()[0].ResolveIndices(lSchema) @@ -107,7 +108,7 @@ func (p *PhysicalHashJoin) ResolveIndicesItself() (err error) { return err } p.RightNAJoinKeys[i] = rArg.(*expression.Column) - p.NAEqualConditions[i] = expression.NewFunctionInternal(fun.GetCtx(), fun.FuncName.L, fun.GetType(), lArg, rArg).(*expression.ScalarFunction) + p.NAEqualConditions[i] = expression.NewFunctionInternal(ctx, fun.FuncName.L, fun.GetType(), lArg, rArg).(*expression.ScalarFunction) } for i, expr := range p.LeftConditions { p.LeftConditions[i], err = expr.ResolveIndices(lSchema) @@ -147,7 +148,7 @@ func (p *PhysicalHashJoin) ResolveIndicesItself() (err error) { // e.g. The schema of child_0 is [col0, col0, col1] // ResolveIndices will only resolve all col0 reference of the current plan to the first col0. for i, j := 0, 0; i < colsNeedResolving && j < len(mergedSchema.Columns); { - if !p.schema.Columns[i].Equal(nil, mergedSchema.Columns[j]) { + if !p.schema.Columns[i].EqualColumn(mergedSchema.Columns[j]) { j++ continue } @@ -233,7 +234,7 @@ func (p *PhysicalMergeJoin) ResolveIndices() (err error) { // e.g. The schema of child_0 is [col0, col0, col1] // ResolveIndices will only resolve all col0 reference of the current plan to the first col0. for i, j := 0, 0; i < colsNeedResolving && j < len(mergedSchema.Columns); { - if !p.schema.Columns[i].Equal(nil, mergedSchema.Columns[j]) { + if !p.schema.Columns[i].EqualColumn(mergedSchema.Columns[j]) { j++ continue } @@ -329,7 +330,7 @@ func (p *PhysicalIndexJoin) ResolveIndices() (err error) { // e.g. The schema of child_0 is [col0, col0, col1] // ResolveIndices will only resolve all col0 reference of the current plan to the first col0. for i, j := 0, 0; i < colsNeedResolving && j < len(mergedSchema.Columns); { - if !p.schema.Columns[i].Equal(nil, mergedSchema.Columns[j]) { + if !p.schema.Columns[i].EqualColumn(mergedSchema.Columns[j]) { j++ continue } @@ -403,7 +404,8 @@ func (p *PhysicalIndexReader) ResolveIndices() (err error) { newCol, err := col.ResolveIndices(p.indexPlan.Schema()) if err != nil { // Check if there is duplicate virtual expression column matched. - newExprCol, isOK := col.ResolveIndicesByVirtualExpr(p.indexPlan.Schema()) + sctx := p.SCtx() + newExprCol, isOK := col.ResolveIndicesByVirtualExpr(sctx, p.indexPlan.Schema()) if isOK { p.OutputColumns[i] = newExprCol.(*expression.Column) continue @@ -483,7 +485,7 @@ func (p *PhysicalSelection) ResolveIndices() (err error) { p.Conditions[i], err = expr.ResolveIndices(p.children[0].Schema()) if err != nil { // Check if there is duplicate virtual expression column matched. - newCond, isOk := expr.ResolveIndicesByVirtualExpr(p.children[0].Schema()) + newCond, isOk := expr.ResolveIndicesByVirtualExpr(p.SCtx(), p.children[0].Schema()) if isOk { p.Conditions[i] = newCond continue @@ -733,7 +735,7 @@ func (p *PhysicalLimit) ResolveIndices() (err error) { // e.g. The schema of child_0 is [col0, col0, col1] // ResolveIndices will only resolve all col0 reference of the current plan to the first col0. for i, j := 0, 0; i < p.schema.Len() && j < p.children[0].Schema().Len(); { - if !p.schema.Columns[i].Equal(nil, p.children[0].Schema().Columns[j]) { + if !p.schema.Columns[i].EqualColumn(p.children[0].Schema().Columns[j]) { j++ continue } diff --git a/pkg/planner/core/rule_aggregation_push_down.go b/pkg/planner/core/rule_aggregation_push_down.go index a1296d41f1dfd..3b7fca21fe3ce 100644 --- a/pkg/planner/core/rule_aggregation_push_down.go +++ b/pkg/planner/core/rule_aggregation_push_down.go @@ -393,13 +393,13 @@ func (*aggregationPushDownSolver) pushAggCrossUnion(agg *LogicalAggregation, uni newAggFunc := aggFunc.Clone() newArgs := make([]expression.Expression, 0, len(newAggFunc.Args)) for _, arg := range newAggFunc.Args { - newArgs = append(newArgs, expression.ColumnSubstitute(arg, unionSchema, expression.Column2Exprs(unionChild.Schema().Columns))) + newArgs = append(newArgs, expression.ColumnSubstitute(ctx, arg, unionSchema, expression.Column2Exprs(unionChild.Schema().Columns))) } newAggFunc.Args = newArgs newAgg.AggFuncs = append(newAgg.AggFuncs, newAggFunc) } for _, gbyExpr := range agg.GroupByItems { - newExpr := expression.ColumnSubstitute(gbyExpr, unionSchema, expression.Column2Exprs(unionChild.Schema().Columns)) + newExpr := expression.ColumnSubstitute(ctx, gbyExpr, unionSchema, expression.Column2Exprs(unionChild.Schema().Columns)) newAgg.GroupByItems = append(newAgg.GroupByItems, newExpr) // TODO: if there is a duplicated first_row function, we can delete it. firstRow, err := aggregation.NewAggFuncDesc(agg.SCtx(), ast.AggFuncFirstRow, []expression.Expression{gbyExpr}, false) @@ -551,10 +551,11 @@ func (a *aggregationPushDownSolver) aggPushDown(p LogicalPlan, opt *logicalOptim // push aggregation across projection // TODO: This optimization is not always reasonable. We have not supported pushing projection to kv layer yet, // so we must do this optimization. + ctx := p.SCtx() noSideEffects := true newGbyItems := make([]expression.Expression, 0, len(agg.GroupByItems)) for _, gbyItem := range agg.GroupByItems { - newGbyItems = append(newGbyItems, expression.ColumnSubstitute(gbyItem, proj.schema, proj.Exprs)) + newGbyItems = append(newGbyItems, expression.ColumnSubstitute(ctx, gbyItem, proj.schema, proj.Exprs)) if ExprsHasSideEffects(newGbyItems) { noSideEffects = false break @@ -569,7 +570,7 @@ func (a *aggregationPushDownSolver) aggPushDown(p LogicalPlan, opt *logicalOptim oldAggFuncsArgs = append(oldAggFuncsArgs, aggFunc.Args) newArgs := make([]expression.Expression, 0, len(aggFunc.Args)) for _, arg := range aggFunc.Args { - newArgs = append(newArgs, expression.ColumnSubstitute(arg, proj.schema, proj.Exprs)) + newArgs = append(newArgs, expression.ColumnSubstitute(ctx, arg, proj.schema, proj.Exprs)) } if ExprsHasSideEffects(newArgs) { noSideEffects = false @@ -581,7 +582,7 @@ func (a *aggregationPushDownSolver) aggPushDown(p LogicalPlan, opt *logicalOptim oldAggOrderItems = append(oldAggOrderItems, aggFunc.OrderByItems) newOrderByItems := make([]expression.Expression, 0, len(aggFunc.OrderByItems)) for _, oby := range aggFunc.OrderByItems { - newOrderByItems = append(newOrderByItems, expression.ColumnSubstitute(oby.Expr, proj.schema, proj.Exprs)) + newOrderByItems = append(newOrderByItems, expression.ColumnSubstitute(ctx, oby.Expr, proj.schema, proj.Exprs)) } if ExprsHasSideEffects(newOrderByItems) { noSideEffects = false diff --git a/pkg/planner/core/rule_column_pruning.go b/pkg/planner/core/rule_column_pruning.go index 93d05d20ad9ce..dfb9e8433b750 100644 --- a/pkg/planner/core/rule_column_pruning.go +++ b/pkg/planner/core/rule_column_pruning.go @@ -76,7 +76,7 @@ func (p *LogicalExpand) PruneColumns(parentUsedCols []*expression.Column, opt *l // Expand need those extra redundant distinct group by columns projected from underlying projection. // distinct GroupByCol must be used by aggregate above, to make sure this, append distinctGroupByCol again. parentUsedCols = append(parentUsedCols, p.distinctGroupByCol...) - used := expression.GetUsedList(parentUsedCols, p.Schema()) + used := expression.GetUsedList(p.SCtx(), parentUsedCols, p.Schema()) prunedColumns := make([]*expression.Column, 0) for i := len(used) - 1; i >= 0; i-- { if !used[i] { @@ -94,7 +94,7 @@ func (p *LogicalExpand) PruneColumns(parentUsedCols []*expression.Column, opt *l // If any expression has SetVar function or Sleep function, we do not prune it. func (p *LogicalProjection) PruneColumns(parentUsedCols []*expression.Column, opt *logicalOptimizeOp, _ LogicalPlan) error { child := p.children[0] - used := expression.GetUsedList(parentUsedCols, p.schema) + used := expression.GetUsedList(p.SCtx(), parentUsedCols, p.schema) prunedColumns := make([]*expression.Column, 0) // for implicit projected cols, once the ancestor doesn't use it, the implicit expr will be automatically pruned here. @@ -121,7 +121,7 @@ func (p *LogicalSelection) PruneColumns(parentUsedCols []*expression.Column, opt // PruneColumns implements LogicalPlan interface. func (la *LogicalAggregation) PruneColumns(parentUsedCols []*expression.Column, opt *logicalOptimizeOp, _ LogicalPlan) error { child := la.children[0] - used := expression.GetUsedList(parentUsedCols, la.Schema()) + used := expression.GetUsedList(la.SCtx(), parentUsedCols, la.Schema()) prunedColumns := make([]*expression.Column, 0) prunedFunctions := make([]*aggregation.AggFuncDesc, 0) prunedGroupByItems := make([]expression.Expression, 0) @@ -216,7 +216,7 @@ func pruneByItems(p LogicalPlan, old []*util.ByItems, opt *logicalOptimizeOp) (b seen := make(map[string]struct{}, len(old)) for _, byItem := range old { pruned := true - hash := string(byItem.Expr.HashCode(nil)) + hash := string(byItem.Expr.HashCode()) _, hashMatch := seen[hash] seen[hash] = struct{}{} cols := expression.ExtractColumns(byItem.Expr) @@ -264,7 +264,7 @@ func (lt *LogicalTopN) PruneColumns(parentUsedCols []*expression.Column, opt *lo // PruneColumns implements LogicalPlan interface. func (p *LogicalUnionAll) PruneColumns(parentUsedCols []*expression.Column, opt *logicalOptimizeOp, _ LogicalPlan) error { - used := expression.GetUsedList(parentUsedCols, p.schema) + used := expression.GetUsedList(p.SCtx(), parentUsedCols, p.schema) hasBeenUsed := false for i := range used { hasBeenUsed = hasBeenUsed || used[i] @@ -275,6 +275,9 @@ func (p *LogicalUnionAll) PruneColumns(parentUsedCols []*expression.Column, opt if !hasBeenUsed { parentUsedCols = make([]*expression.Column, len(p.schema.Columns)) copy(parentUsedCols, p.schema.Columns) + for i := range used { + used[i] = true + } } for _, child := range p.Children() { err := child.PruneColumns(parentUsedCols, opt, p) @@ -284,16 +287,14 @@ func (p *LogicalUnionAll) PruneColumns(parentUsedCols []*expression.Column, opt } prunedColumns := make([]*expression.Column, 0) - if hasBeenUsed { - // keep the schema of LogicalUnionAll same as its children's - used := expression.GetUsedList(p.children[0].Schema().Columns, p.schema) - for i := len(used) - 1; i >= 0; i-- { - if !used[i] { - prunedColumns = append(prunedColumns, p.schema.Columns[i]) - p.schema.Columns = append(p.schema.Columns[:i], p.schema.Columns[i+1:]...) - } + for i := len(used) - 1; i >= 0; i-- { + if !used[i] { + prunedColumns = append(prunedColumns, p.schema.Columns[i]) + p.schema.Columns = append(p.schema.Columns[:i], p.schema.Columns[i+1:]...) } - appendColumnPruneTraceStep(p, prunedColumns, opt) + } + appendColumnPruneTraceStep(p, prunedColumns, opt) + if hasBeenUsed { // It's possible that the child operator adds extra columns to the schema. // Currently, (*LogicalAggregation).PruneColumns() might do this. // But we don't need such columns, so we add an extra Projection to prune this column when this happened. @@ -332,10 +333,10 @@ func (p *LogicalUnionScan) PruneColumns(parentUsedCols []*expression.Column, opt // PruneColumns implements LogicalPlan interface. func (ds *DataSource) PruneColumns(parentUsedCols []*expression.Column, opt *logicalOptimizeOp, _ LogicalPlan) error { - used := expression.GetUsedList(parentUsedCols, ds.schema) + used := expression.GetUsedList(ds.SCtx(), parentUsedCols, ds.schema) exprCols := expression.ExtractColumnsFromExpressions(nil, ds.allConds, nil) - exprUsed := expression.GetUsedList(exprCols, ds.schema) + exprUsed := expression.GetUsedList(ds.SCtx(), exprCols, ds.schema) prunedColumns := make([]*expression.Column, 0) originSchemaColumns := ds.schema.Columns @@ -400,7 +401,7 @@ func (p *LogicalMemTable) PruneColumns(parentUsedCols []*expression.Column, opt return nil } prunedColumns := make([]*expression.Column, 0) - used := expression.GetUsedList(parentUsedCols, p.schema) + used := expression.GetUsedList(p.SCtx(), parentUsedCols, p.schema) for i := len(used) - 1; i >= 0; i-- { if !used[i] && p.schema.Len() > 1 { prunedColumns = append(prunedColumns, p.schema.Columns[i]) @@ -415,7 +416,7 @@ func (p *LogicalMemTable) PruneColumns(parentUsedCols []*expression.Column, opt // PruneColumns implements LogicalPlan interface. func (p *LogicalTableDual) PruneColumns(parentUsedCols []*expression.Column, opt *logicalOptimizeOp, _ LogicalPlan) error { - used := expression.GetUsedList(parentUsedCols, p.Schema()) + used := expression.GetUsedList(p.SCtx(), parentUsedCols, p.Schema()) prunedColumns := make([]*expression.Column, 0) for i := len(used) - 1; i >= 0; i-- { if !used[i] { @@ -540,7 +541,7 @@ func (p *LogicalWindow) PruneColumns(parentUsedCols []*expression.Column, opt *l for _, col := range parentUsedCols { used := false for _, windowColumn := range windowColumns { - if windowColumn.Equal(nil, col) { + if windowColumn.EqualColumn(col) { used = true break } diff --git a/pkg/planner/core/rule_constant_propagation.go b/pkg/planner/core/rule_constant_propagation.go index 0e2d26e5d7379..4c2071fc8610b 100644 --- a/pkg/planner/core/rule_constant_propagation.go +++ b/pkg/planner/core/rule_constant_propagation.go @@ -202,7 +202,7 @@ func (projection *LogicalProjection) pullUpConstantPredicates() []expression.Exp // result predicate : a'=1 replace := make(map[string]*expression.Column) for i, expr := range projection.Exprs { - replace[string(expr.HashCode(nil))] = projection.Schema().Columns[i] + replace[string(expr.HashCode())] = projection.Schema().Columns[i] } result := make([]expression.Expression, 0, len(candidateConstantPredicates)) for _, predicate := range candidateConstantPredicates { @@ -212,7 +212,7 @@ func (projection *LogicalProjection) pullUpConstantPredicates() []expression.Exp if len(columns) != 1 { continue } - if replace[string(columns[0].HashCode(nil))] == nil { + if replace[string(columns[0].HashCode())] == nil { // The column of predicate will not appear on the upper level // This means that this predicate does not apply to the constant propagation optimization rule // For example: select * from t, (select b from s where s.a=1) tmp where t.b=s.b diff --git a/pkg/planner/core/rule_derive_topn_from_window.go b/pkg/planner/core/rule_derive_topn_from_window.go index 2063cd7a0c7b4..4c3f8845381b6 100644 --- a/pkg/planner/core/rule_derive_topn_from_window.go +++ b/pkg/planner/core/rule_derive_topn_from_window.go @@ -57,7 +57,7 @@ func checkPartitionBy(p *LogicalWindow, d *DataSource) bool { } for i, col := range p.PartitionBy { - if !(col.Col.Equal(nil, d.handleCols.GetCol(i))) { + if !(col.Col.EqualColumn(d.handleCols.GetCol(i))) { return false } } diff --git a/pkg/planner/core/rule_eliminate_projection.go b/pkg/planner/core/rule_eliminate_projection.go index 65405cdb87360..36d7dbc82fd8d 100644 --- a/pkg/planner/core/rule_eliminate_projection.go +++ b/pkg/planner/core/rule_eliminate_projection.go @@ -89,7 +89,7 @@ func canProjectionBeEliminatedStrict(p *PhysicalProjection) bool { } for i, expr := range p.Exprs { col, ok := expr.(*expression.Column) - if !ok || !col.Equal(nil, child.Schema().Columns[i]) { + if !ok || !col.EqualColumn(child.Schema().Columns[i]) { return false } } @@ -97,7 +97,7 @@ func canProjectionBeEliminatedStrict(p *PhysicalProjection) bool { } func resolveColumnAndReplace(origin *expression.Column, replace map[string]*expression.Column) { - dst := replace[string(origin.HashCode(nil))] + dst := replace[string(origin.HashCode())] if dst != nil { retType, inOperand := origin.RetType, origin.InOperand *origin = *dst @@ -209,9 +209,10 @@ func (pe *projectionEliminator) eliminate(p LogicalPlan, replace map[string]*exp // eliminate duplicate projection: projection with child projection if isProj { if child, ok := p.Children()[0].(*LogicalProjection); ok && !ExprsHasSideEffects(child.Exprs) { + ctx := p.SCtx() for i := range proj.Exprs { proj.Exprs[i] = ReplaceColumnOfExpr(proj.Exprs[i], child, child.Schema()) - foldedExpr := expression.FoldConstant(proj.Exprs[i]) + foldedExpr := expression.FoldConstant(ctx, proj.Exprs[i]) // the folded expr should have the same null flag with the original expr, especially for the projection under union, so forcing it here. foldedExpr.GetType().SetFlag((foldedExpr.GetType().GetFlag() & ^mysql.NotNullFlag) | (proj.Exprs[i].GetType().GetFlag() & mysql.NotNullFlag)) proj.Exprs[i] = foldedExpr @@ -226,7 +227,7 @@ func (pe *projectionEliminator) eliminate(p LogicalPlan, replace map[string]*exp } exprs := proj.Exprs for i, col := range proj.Schema().Columns { - replace[string(col.HashCode(nil))] = exprs[i].(*expression.Column) + replace[string(col.HashCode())] = exprs[i].(*expression.Column) } appendProjEliminateTraceStep(proj, opt) return p.Children()[0] @@ -297,7 +298,7 @@ func (p *LogicalSelection) ReplaceExprColumns(replace map[string]*expression.Col func (la *LogicalApply) ReplaceExprColumns(replace map[string]*expression.Column) { la.LogicalJoin.ReplaceExprColumns(replace) for _, coCol := range la.CorCols { - dst := replace[string(coCol.Column.HashCode(nil))] + dst := replace[string(coCol.Column.HashCode())] if dst != nil { coCol.Column = *dst } diff --git a/pkg/planner/core/rule_generate_column_substitute.go b/pkg/planner/core/rule_generate_column_substitute.go index f39c5aa5d0d55..5e5cc2b28f12c 100644 --- a/pkg/planner/core/rule_generate_column_substitute.go +++ b/pkg/planner/core/rule_generate_column_substitute.go @@ -117,7 +117,6 @@ func substituteExpression(cond expression.Expression, lp LogicalPlan, exprToColu if !ok { return false } - sctx := lp.SCtx().GetSessionVars().StmtCtx changed := false collectChanged := func(partial bool) { if partial && !changed { @@ -127,7 +126,7 @@ func substituteExpression(cond expression.Expression, lp LogicalPlan, exprToColu defer func() { // If the argument is not changed, hash code doesn't need to recount again. if changed { - expression.ReHashCode(sf, sctx) + expression.ReHashCode(sf) } }() var expr *expression.Expression diff --git a/pkg/planner/core/rule_join_reorder.go b/pkg/planner/core/rule_join_reorder.go index 17e598b9d473c..271778c7c8bdc 100644 --- a/pkg/planner/core/rule_join_reorder.go +++ b/pkg/planner/core/rule_join_reorder.go @@ -306,7 +306,7 @@ func (s *joinReOrderSolver) optimizeRecursive(ctx sessionctx.Context, p LogicalP schemaChanged = true } else { for i, col := range p.Schema().Columns { - if !col.Equal(nil, originalSchema.Columns[i]) { + if !col.EqualColumn(originalSchema.Columns[i]) { schemaChanged = true break } @@ -316,7 +316,8 @@ func (s *joinReOrderSolver) optimizeRecursive(ctx sessionctx.Context, p LogicalP proj := LogicalProjection{ Exprs: expression.Column2Exprs(originalSchema.Columns), }.Init(p.SCtx(), p.SelectBlockOffset()) - proj.SetSchema(originalSchema) + // Clone the schema here, because the schema may be changed by column pruning rules. + proj.SetSchema(originalSchema.Clone()) proj.SetChildren(p) p = proj } @@ -399,7 +400,10 @@ func (s *baseSingleGroupJoinOrderSolver) generateLeadingJoinGroup(curJoinGroup [ var leadingJoinGroup []LogicalPlan leftJoinGroup := make([]LogicalPlan, len(curJoinGroup)) copy(leftJoinGroup, curJoinGroup) - queryBlockNames := *(s.ctx.GetSessionVars().PlannerSelectBlockAsName.Load()) + var queryBlockNames []ast.HintTable + if p := s.ctx.GetSessionVars().PlannerSelectBlockAsName.Load(); p != nil { + queryBlockNames = *p + } for _, hintTbl := range hintInfo.leadingJoinOrder { match := false for i, joinGroup := range leftJoinGroup { diff --git a/pkg/planner/core/rule_join_reorder_test.go b/pkg/planner/core/rule_join_reorder_test.go deleted file mode 100644 index 3298c0d87dbbd..0000000000000 --- a/pkg/planner/core/rule_join_reorder_test.go +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2022 PingCAP, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package core_test - -import ( - "testing" - - "github.com/pingcap/tidb/pkg/testkit" - "github.com/stretchr/testify/require" -) - -func TestJoinOrderHintWithBinding(t *testing.T) { - store := testkit.CreateMockStore(t) - - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("drop table if exists t, t1, t2, t3;") - tk.MustExec("create table t(a int, b int, key(a));") - tk.MustExec("create table t1(a int, b int, key(a));") - tk.MustExec("create table t2(a int, b int, key(a));") - tk.MustExec("create table t3(a int, b int, key(a));") - - tk.MustExec("select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b") - tk.MustQuery("select @@last_plan_from_binding").Check(testkit.Rows("0")) - tk.MustExec("create global binding for select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b using select /*+ straight_join() */ * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b") - tk.MustExec("select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b") - tk.MustQuery("select @@last_plan_from_binding").Check(testkit.Rows("1")) - res := tk.MustQuery("show global bindings").Rows() - require.Equal(t, res[0][0], "select * from ( `test` . `t1` join `test` . `t2` on `t1` . `a` = `t2` . `a` ) join `test` . `t3` on `t2` . `b` = `t3` . `b`", "SELECT /*+ straight_join()*/ * FROM (`test`.`t1` JOIN `test`.`t2` ON `t1`.`a` = `t2`.`a`) JOIN `test`.`t3` ON `t2`.`b` = `t3`.`b`") - - tk.MustExec("drop global binding for select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b") - tk.MustExec("select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b") - tk.MustQuery("select @@last_plan_from_binding").Check(testkit.Rows("0")) - res = tk.MustQuery("show global bindings").Rows() - require.Equal(t, len(res), 0) - - tk.MustExec("create global binding for select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b using select /*+ leading(t3) */ * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b") - tk.MustExec("select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b") - tk.MustQuery("select @@last_plan_from_binding").Check(testkit.Rows("1")) - res = tk.MustQuery("show global bindings").Rows() - require.Equal(t, res[0][0], "select * from ( `test` . `t1` join `test` . `t2` on `t1` . `a` = `t2` . `a` ) join `test` . `t3` on `t2` . `b` = `t3` . `b`") - - tk.MustExec("drop global binding for select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b") - - // test for outer join - tk.MustExec("select * from t1 join t2 on t1.a=t2.a left join t3 on t2.b=t3.b") - tk.MustQuery("select @@last_plan_from_binding").Check(testkit.Rows("0")) - res = tk.MustQuery("show global bindings").Rows() - require.Equal(t, len(res), 0) - - tk.MustExec("create global binding for select * from t1 join t2 on t1.a=t2.a left join t3 on t2.b=t3.b using select /*+ leading(t2) */ * from t1 join t2 on t1.a=t2.a left join t3 on t2.b=t3.b") - tk.MustExec("select * from t1 join t2 on t1.a=t2.a left join t3 on t2.b=t3.b") - tk.MustQuery("select @@last_plan_from_binding").Check(testkit.Rows("1")) - res = tk.MustQuery("show global bindings").Rows() - require.Equal(t, res[0][0], "select * from ( `test` . `t1` join `test` . `t2` on `t1` . `a` = `t2` . `a` ) left join `test` . `t3` on `t2` . `b` = `t3` . `b`") - - tk.MustExec("drop global binding for select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b") -} diff --git a/pkg/planner/core/rule_max_min_eliminate.go b/pkg/planner/core/rule_max_min_eliminate.go index b2b2bc2fabdd8..552b2b5a4f08b 100644 --- a/pkg/planner/core/rule_max_min_eliminate.go +++ b/pkg/planner/core/rule_max_min_eliminate.go @@ -73,7 +73,7 @@ func (a *maxMinEliminator) checkColCanUseIndex(plan LogicalPlan, col *expression // Since table path can contain accessConds of at most one column, // we only need to check if all of the conditions can be pushed down as accessConds // and `col` is the handle column. - if p.handleCols != nil && col.Equal(nil, p.handleCols.GetCol(0)) { + if p.handleCols != nil && col.EqualColumn(p.handleCols.GetCol(0)) { if _, filterConds := ranger.DetachCondsForColumn(p.SCtx(), conditions, col); len(filterConds) != 0 { return false } @@ -91,7 +91,7 @@ func (a *maxMinEliminator) checkColCanUseIndex(plan LogicalPlan, col *expression continue } for i := 0; i <= result.EqCondCount; i++ { - if i < len(indexCols) && col.Equal(nil, indexCols[i]) { + if i < len(indexCols) && col.EqualColumn(indexCols[i]) { return true } } diff --git a/pkg/planner/core/rule_partition_processor.go b/pkg/planner/core/rule_partition_processor.go index f3bfe3eaf3007..d0dda5e8fbf6b 100644 --- a/pkg/planner/core/rule_partition_processor.go +++ b/pkg/planner/core/rule_partition_processor.go @@ -123,7 +123,7 @@ func generateHashPartitionExpr(ctx sessionctx.Context, pi *model.PartitionInfo, if err != nil { return nil, err } - exprs[0].HashCode(ctx.GetSessionVars().StmtCtx) + exprs[0].HashCode() return exprs[0], nil } diff --git a/pkg/planner/core/rule_predicate_push_down.go b/pkg/planner/core/rule_predicate_push_down.go index 9277d3574b2fc..4ac68955acb52 100644 --- a/pkg/planner/core/rule_predicate_push_down.go +++ b/pkg/planner/core/rule_predicate_push_down.go @@ -139,7 +139,7 @@ func (ds *DataSource) PredicatePushDown(predicates []expression.Expression, opt // TODO: remove it to the place building logical plan predicates = ds.AddPrefix4ShardIndexes(ds.SCtx(), predicates) ds.allConds = predicates - ds.pushedDownConds, predicates = expression.PushDownExprs(ds.SCtx().GetSessionVars().StmtCtx, predicates, ds.SCtx().GetClient(), kv.UnSpecified) + ds.pushedDownConds, predicates = expression.PushDownExprs(ds.SCtx(), predicates, ds.SCtx().GetClient(), kv.UnSpecified) appendDataSourcePredicatePushDownTraceStep(ds, opt) return predicates, ds } @@ -234,8 +234,8 @@ func (p *LogicalJoin) PredicatePushDown(predicates []expression.Expression, opt rightCond = append(p.RightConditions, rightPushCond...) p.RightConditions = nil } - leftCond = expression.RemoveDupExprs(p.SCtx(), leftCond) - rightCond = expression.RemoveDupExprs(p.SCtx(), rightCond) + leftCond = expression.RemoveDupExprs(leftCond) + rightCond = expression.RemoveDupExprs(rightCond) leftRet, lCh := p.children[0].PredicatePushDown(leftCond, opt) rightRet, rCh := p.children[1].PredicatePushDown(rightCond, opt) addSelection(p, lCh, leftRet, 0, opt) @@ -350,7 +350,7 @@ func (p *LogicalProjection) appendExpr(expr expression.Expression) *expression.C if col, ok := expr.(*expression.Column); ok { return col } - expr = expression.ColumnSubstitute(expr, p.schema, p.Exprs) + expr = expression.ColumnSubstitute(p.SCtx(), expr, p.schema, p.Exprs) p.Exprs = append(p.Exprs, expr) col := &expression.Column{ @@ -481,8 +481,9 @@ func (p *LogicalProjection) PredicatePushDown(predicates []expression.Expression return predicates, p } } + ctx := p.SCtx() for _, cond := range predicates { - substituted, hasFailed, newFilter := expression.ColumnSubstituteImpl(cond, p.Schema(), p.Exprs, true) + substituted, hasFailed, newFilter := expression.ColumnSubstituteImpl(ctx, cond, p.Schema(), p.Exprs, true) if substituted && !hasFailed && !expression.HasGetSetVarFunc(newFilter) { canBePushed = append(canBePushed, newFilter) } else { @@ -525,7 +526,7 @@ func (la *LogicalAggregation) pushDownPredicatesForAggregation(cond expression.E } } if ok { - newFunc := expression.ColumnSubstitute(cond, la.Schema(), exprsOriginal) + newFunc := expression.ColumnSubstitute(la.SCtx(), cond, la.Schema(), exprsOriginal) condsToPush = append(condsToPush, newFunc) } else { ret = append(ret, cond) @@ -635,19 +636,20 @@ func DeriveOtherConditions( deriveLeft bool, deriveRight bool) ( leftCond []expression.Expression, rightCond []expression.Expression) { isOuterSemi := (p.JoinType == LeftOuterSemiJoin) || (p.JoinType == AntiLeftOuterSemiJoin) + ctx := p.SCtx() for _, expr := range p.OtherConditions { if deriveLeft { - leftRelaxedCond := expression.DeriveRelaxedFiltersFromDNF(expr, leftSchema) + leftRelaxedCond := expression.DeriveRelaxedFiltersFromDNF(ctx, expr, leftSchema) if leftRelaxedCond != nil { leftCond = append(leftCond, leftRelaxedCond) } - notNullExpr := deriveNotNullExpr(expr, leftSchema) + notNullExpr := deriveNotNullExpr(ctx, expr, leftSchema) if notNullExpr != nil { leftCond = append(leftCond, notNullExpr) } } if deriveRight { - rightRelaxedCond := expression.DeriveRelaxedFiltersFromDNF(expr, rightSchema) + rightRelaxedCond := expression.DeriveRelaxedFiltersFromDNF(ctx, expr, rightSchema) if rightRelaxedCond != nil { rightCond = append(rightCond, rightRelaxedCond) } @@ -661,7 +663,7 @@ func DeriveOtherConditions( if isOuterSemi { continue } - notNullExpr := deriveNotNullExpr(expr, rightSchema) + notNullExpr := deriveNotNullExpr(ctx, expr, rightSchema) if notNullExpr != nil { rightCond = append(rightCond, notNullExpr) } @@ -673,12 +675,11 @@ func DeriveOtherConditions( // deriveNotNullExpr generates a new expression `not(isnull(col))` given `col1 op col2`, // in which `col` is in specified schema. Caller guarantees that only one of `col1` or // `col2` is in schema. -func deriveNotNullExpr(expr expression.Expression, schema *expression.Schema) expression.Expression { +func deriveNotNullExpr(ctx sessionctx.Context, expr expression.Expression, schema *expression.Schema) expression.Expression { binop, ok := expr.(*expression.ScalarFunction) if !ok || len(binop.GetArgs()) != 2 { return nil } - ctx := binop.GetCtx() arg0, lOK := binop.GetArgs()[0].(*expression.Column) arg1, rOK := binop.GetArgs()[1].(*expression.Column) if !lOK || !rOK { diff --git a/pkg/planner/core/rule_predicate_simplification.go b/pkg/planner/core/rule_predicate_simplification.go index 00f65638423d2..501c78767012e 100644 --- a/pkg/planner/core/rule_predicate_simplification.go +++ b/pkg/planner/core/rule_predicate_simplification.go @@ -81,7 +81,7 @@ func (s *baseLogicalPlan) predicateSimplification(opt *logicalOptimizeOp) Logica // updateInPredicate applies intersection of an in list with <> value. It returns updated In list and a flag for // a special case if an element in the inlist is not removed to keep the list not empty. -func updateInPredicate(inPredicate expression.Expression, notEQPredicate expression.Expression) (expression.Expression, bool) { +func updateInPredicate(ctx sessionctx.Context, inPredicate expression.Expression, notEQPredicate expression.Expression) (expression.Expression, bool) { _, inPredicateType := findPredicateType(inPredicate) _, notEQPredicateType := findPredicateType(notEQPredicate) if inPredicateType != inListPredicate || notEQPredicateType != notEqualPredicate { @@ -97,7 +97,7 @@ func updateInPredicate(inPredicate expression.Expression, notEQPredicate express var lastValue *expression.Constant for _, element := range v.GetArgs() { value, valueOK := element.(*expression.Constant) - redundantValue := valueOK && value.Equal(v.GetCtx(), notEQValue) + redundantValue := valueOK && value.Equal(ctx, notEQValue) if !redundantValue { newValues = append(newValues, element) } @@ -113,7 +113,7 @@ func updateInPredicate(inPredicate expression.Expression, notEQPredicate express newValues = append(newValues, lastValue) specialCase = true } - newPred := expression.NewFunctionInternal(v.GetCtx(), v.FuncName.L, v.RetType, newValues...) + newPred := expression.NewFunctionInternal(ctx, v.FuncName.L, v.RetType, newValues...) return newPred, specialCase } @@ -131,13 +131,13 @@ func applyPredicateSimplification(sctx sessionctx.Context, predicates []expressi jCol, jType := findPredicateType(jthPredicate) if iCol == jCol { if iType == notEqualPredicate && jType == inListPredicate { - predicates[j], specialCase = updateInPredicate(jthPredicate, ithPredicate) + predicates[j], specialCase = updateInPredicate(sctx, jthPredicate, ithPredicate) sctx.GetSessionVars().StmtCtx.SetSkipPlanCache(errors.New("NE/INList simplification is triggered")) if !specialCase { removeValues = append(removeValues, i) } } else if iType == inListPredicate && jType == notEqualPredicate { - predicates[i], specialCase = updateInPredicate(ithPredicate, jthPredicate) + predicates[i], specialCase = updateInPredicate(sctx, ithPredicate, jthPredicate) sctx.GetSessionVars().StmtCtx.SetSkipPlanCache(errors.New("NE/INList simplification is triggered")) if !specialCase { removeValues = append(removeValues, j) diff --git a/pkg/planner/core/rule_result_reorder.go b/pkg/planner/core/rule_result_reorder.go index ed340f831ed60..95634543e2f20 100644 --- a/pkg/planner/core/rule_result_reorder.go +++ b/pkg/planner/core/rule_result_reorder.go @@ -59,7 +59,7 @@ func (rs *resultReorder) completeSort(lp LogicalPlan) bool { for _, col := range cols { exist := false for _, byItem := range sort.ByItems { - if col.Equal(nil, byItem.Expr) { + if col.EqualColumn(byItem.Expr) { exist = true break } diff --git a/pkg/planner/core/rule_topn_push_down.go b/pkg/planner/core/rule_topn_push_down.go index 7f6716cc17948..7574e741ee6ec 100644 --- a/pkg/planner/core/rule_topn_push_down.go +++ b/pkg/planner/core/rule_topn_push_down.go @@ -133,8 +133,9 @@ func (p *LogicalProjection) pushDownTopN(topN *LogicalTopN, opt *logicalOptimize } } if topN != nil { + ctx := p.SCtx() for _, by := range topN.ByItems { - by.Expr = expression.FoldConstant(expression.ColumnSubstitute(by.Expr, p.schema, p.Exprs)) + by.Expr = expression.FoldConstant(ctx, expression.ColumnSubstitute(ctx, by.Expr, p.schema, p.Exprs)) } // remove meaningless constant sort items. diff --git a/pkg/planner/core/runtime_filter.go b/pkg/planner/core/runtime_filter.go index 4f9339db7a96b..712618d5ffed9 100644 --- a/pkg/planner/core/runtime_filter.go +++ b/pkg/planner/core/runtime_filter.go @@ -20,7 +20,7 @@ import ( "github.com/pingcap/tidb/pkg/expression" "github.com/pingcap/tidb/pkg/kv" - "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" + "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/logutil" @@ -201,10 +201,10 @@ func (rf *RuntimeFilter) Clone() *RuntimeFilter { } // RuntimeFilterListToPB convert runtime filter list to PB list -func RuntimeFilterListToPB(runtimeFilterList []*RuntimeFilter, sc *stmtctx.StatementContext, client kv.Client) ([]*tipb.RuntimeFilter, error) { +func RuntimeFilterListToPB(ctx sessionctx.Context, runtimeFilterList []*RuntimeFilter, client kv.Client) ([]*tipb.RuntimeFilter, error) { result := make([]*tipb.RuntimeFilter, 0, len(runtimeFilterList)) for _, runtimeFilter := range runtimeFilterList { - rfPB, err := runtimeFilter.ToPB(sc, client) + rfPB, err := runtimeFilter.ToPB(ctx, client) if err != nil { return nil, err } @@ -214,8 +214,8 @@ func RuntimeFilterListToPB(runtimeFilterList []*RuntimeFilter, sc *stmtctx.State } // ToPB convert runtime filter to PB -func (rf *RuntimeFilter) ToPB(sc *stmtctx.StatementContext, client kv.Client) (*tipb.RuntimeFilter, error) { - pc := expression.NewPBConverter(client, sc) +func (rf *RuntimeFilter) ToPB(ctx sessionctx.Context, client kv.Client) (*tipb.RuntimeFilter, error) { + pc := expression.NewPBConverter(client, ctx) srcExprListPB := make([]*tipb.Expr, 0, len(rf.srcExprList)) for _, srcExpr := range rf.srcExprList { srcExprPB := pc.ExprToPB(srcExpr) diff --git a/pkg/planner/core/scalar_subq_expression.go b/pkg/planner/core/scalar_subq_expression.go index d4c3d852828b0..c4a83da5040f9 100644 --- a/pkg/planner/core/scalar_subq_expression.go +++ b/pkg/planner/core/scalar_subq_expression.go @@ -104,8 +104,15 @@ func (s *ScalarSubQueryExpr) selfEvaluate() error { return nil } +// EvalWithInnerCtx evaluates expression with inner ctx. +// Deprecated: This function is only used during refactoring, please do not use it in new code. +// TODO: remove this method after refactoring. +func (s *ScalarSubQueryExpr) EvalWithInnerCtx(row chunk.Row) (types.Datum, error) { + return s.Eval(nil, row) +} + // Eval implements the Expression interface. -func (s *ScalarSubQueryExpr) Eval(_ chunk.Row) (types.Datum, error) { +func (s *ScalarSubQueryExpr) Eval(_ sessionctx.Context, _ chunk.Row) (types.Datum, error) { if s.evaled { return s.Value, nil } @@ -201,12 +208,12 @@ func (s *ScalarSubQueryExpr) ResolveIndices(_ *expression.Schema) (expression.Ex } // ResolveIndicesByVirtualExpr implements the Expression interface. -func (s *ScalarSubQueryExpr) ResolveIndicesByVirtualExpr(_ *expression.Schema) (expression.Expression, bool) { +func (s *ScalarSubQueryExpr) ResolveIndicesByVirtualExpr(_ sessionctx.Context, _ *expression.Schema) (expression.Expression, bool) { return s, false } // resolveIndicesByVirtualExpr implements the Expression interface. -func (*ScalarSubQueryExpr) resolveIndicesByVirtualExpr(_ *expression.Schema) bool { +func (*ScalarSubQueryExpr) resolveIndicesByVirtualExpr(_ sessionctx.Context, _ *expression.Schema) bool { return false } @@ -216,7 +223,7 @@ func (s *ScalarSubQueryExpr) RemapColumn(_ map[int64]*expression.Column) (expres } // ExplainInfo implements the Expression interface. -func (s *ScalarSubQueryExpr) ExplainInfo() string { +func (s *ScalarSubQueryExpr) ExplainInfo(sessionctx.Context) string { return s.String() } @@ -226,7 +233,7 @@ func (s *ScalarSubQueryExpr) ExplainNormalizedInfo() string { } // HashCode implements the Expression interface. -func (s *ScalarSubQueryExpr) HashCode(_ *stmtctx.StatementContext) []byte { +func (s *ScalarSubQueryExpr) HashCode() []byte { if len(s.hashcode) != 0 { return s.hashcode } @@ -236,6 +243,11 @@ func (s *ScalarSubQueryExpr) HashCode(_ *stmtctx.StatementContext) []byte { return s.hashcode } +// CanonicalHashCode implements the Expression interface. +func (s *ScalarSubQueryExpr) CanonicalHashCode() []byte { + return s.HashCode() +} + // MemoryUsage implements the Expression interface. func (s *ScalarSubQueryExpr) MemoryUsage() int64 { ret := int64(0) diff --git a/pkg/planner/core/stats.go b/pkg/planner/core/stats.go index 158995d770e2a..f2f928cd712a8 100644 --- a/pkg/planner/core/stats.go +++ b/pkg/planner/core/stats.go @@ -338,7 +338,7 @@ func (ds *DataSource) derivePathStatsAndTryHeuristics() error { if selected == nil && len(uniqueIdxsWithDoubleScan) > 0 { uniqueIdxAccessCols := make([]util.Col2Len, 0, len(uniqueIdxsWithDoubleScan)) for _, uniqueIdx := range uniqueIdxsWithDoubleScan { - uniqueIdxAccessCols = append(uniqueIdxAccessCols, uniqueIdx.GetCol2LenFromAccessConds()) + uniqueIdxAccessCols = append(uniqueIdxAccessCols, uniqueIdx.GetCol2LenFromAccessConds(ds.SCtx())) // Find the unique index with the minimal number of ranges as `uniqueBest`. if uniqueBest == nil || len(uniqueIdx.Ranges) < len(uniqueBest.Ranges) { uniqueBest = uniqueIdx @@ -353,7 +353,7 @@ func (ds *DataSource) derivePathStatsAndTryHeuristics() error { // Hence, for each index in `singleScanIdxs`, we check whether it is better than some index in `uniqueIdxsWithDoubleScan`. // If yes, the index is a refined one. We find the refined index with the minimal number of ranges as `refineBest`. for _, singleScanIdx := range singleScanIdxs { - col2Len := singleScanIdx.GetCol2LenFromAccessConds() + col2Len := singleScanIdx.GetCol2LenFromAccessConds(ds.SCtx()) for _, uniqueIdxCol2Len := range uniqueIdxAccessCols { accessResult, comparable1 := util.CompareCol2Len(col2Len, uniqueIdxCol2Len) if comparable1 && accessResult == 1 { diff --git a/pkg/planner/core/task.go b/pkg/planner/core/task.go index ac61f483fca81..28888fec8068b 100644 --- a/pkg/planner/core/task.go +++ b/pkg/planner/core/task.go @@ -912,7 +912,7 @@ func (p *PhysicalLimit) attach2Task(tasks ...task) task { sunk = p.sinkIntoIndexMerge(t) } } else { - // otherwise, suspend the limit out of index merge reader. + // Otherwise, suspend the limit out of index merge reader. t = cop.convertToRootTask(p.SCtx()) sunk = p.sinkIntoIndexMerge(t) } @@ -1027,7 +1027,7 @@ func (p *PhysicalLimit) sinkIntoIndexMerge(t task) bool { needProj := p.schema.Len() != root.p.Schema().Len() if !needProj { for i := 0; i < p.schema.Len(); i++ { - if !p.schema.Columns[i].Equal(nil, root.p.Schema().Columns[i]) { + if !p.schema.Columns[i].EqualColumn(root.p.Schema().Columns[i]) { needProj = true break } @@ -1111,7 +1111,7 @@ func (p *PhysicalTopN) canExpressionConvertedToPB(storeTp kv.StoreType) bool { for _, item := range p.ByItems { exprs = append(exprs, item.Expr) } - return expression.CanExprsPushDown(p.SCtx().GetSessionVars().StmtCtx, exprs, p.SCtx().GetClient(), storeTp) + return expression.CanExprsPushDown(p.SCtx(), exprs, p.SCtx().GetClient(), storeTp) } // containVirtualColumn checks whether TopN.ByItems contains virtual generated columns. @@ -1212,12 +1212,12 @@ func (p *PhysicalExpand) attach2Task(tasks ...task) task { func (p *PhysicalProjection) attach2Task(tasks ...task) task { t := tasks[0].copy() if cop, ok := t.(*copTask); ok { - if (len(cop.rootTaskConds) == 0 && len(cop.idxMergePartPlans) == 0) && expression.CanExprsPushDown(p.SCtx().GetSessionVars().StmtCtx, p.Exprs, p.SCtx().GetClient(), cop.getStoreType()) { + if (len(cop.rootTaskConds) == 0 && len(cop.idxMergePartPlans) == 0) && expression.CanExprsPushDown(p.SCtx(), p.Exprs, p.SCtx().GetClient(), cop.getStoreType()) { copTask := attachPlan2Task(p, cop) return copTask } } else if mpp, ok := t.(*mppTask); ok { - if expression.CanExprsPushDown(p.SCtx().GetSessionVars().StmtCtx, p.Exprs, p.SCtx().GetClient(), kv.TiFlash) { + if expression.CanExprsPushDown(p.SCtx(), p.Exprs, p.SCtx().GetClient(), kv.TiFlash) { p.SetChildren(mpp.p) mpp.p = p return mpp @@ -1274,8 +1274,7 @@ func (p *PhysicalUnionAll) attach2Task(tasks ...task) task { func (sel *PhysicalSelection) attach2Task(tasks ...task) task { if mppTask, _ := tasks[0].(*mppTask); mppTask != nil { // always push to mpp task. - sc := sel.SCtx().GetSessionVars().StmtCtx - if expression.CanExprsPushDown(sc, sel.Conditions, sel.SCtx().GetClient(), kv.TiFlash) { + if expression.CanExprsPushDown(sel.SCtx(), sel.Conditions, sel.SCtx().GetClient(), kv.TiFlash) { return attachPlan2Task(sel, mppTask.copy()) } } @@ -1302,7 +1301,7 @@ func CheckAggCanPushCop(sctx sessionctx.Context, aggFuncs []*aggregation.AggFunc ret = false break } - if !expression.CanExprsPushDownWithExtraInfo(sc, aggFunc.Args, client, storeType, aggFunc.Name == ast.AggFuncSum) { + if !expression.CanExprsPushDownWithExtraInfo(sctx, aggFunc.Args, client, storeType, aggFunc.Name == ast.AggFuncSum) { reason = "arguments of AggFunc `" + aggFunc.Name + "` contains unsupported exprs" ret = false break @@ -1313,7 +1312,7 @@ func CheckAggCanPushCop(sctx sessionctx.Context, aggFuncs []*aggregation.AggFunc for _, item := range aggFunc.OrderByItems { exprs = append(exprs, item.Expr) } - if !expression.CanExprsPushDownWithExtraInfo(sc, exprs, client, storeType, false) { + if !expression.CanExprsPushDownWithExtraInfo(sctx, exprs, client, storeType, false) { reason = "arguments of AggFunc `" + aggFunc.Name + "` contains unsupported exprs in order-by clause" ret = false break @@ -1330,7 +1329,7 @@ func CheckAggCanPushCop(sctx sessionctx.Context, aggFuncs []*aggregation.AggFunc reason = "groupByItems contain virtual columns, which is not supported now" ret = false } - if ret && !expression.CanExprsPushDown(sc, groupByItems, client, storeType) { + if ret && !expression.CanExprsPushDown(sctx, groupByItems, client, storeType) { reason = "groupByItems contain unsupported exprs" ret = false } diff --git a/pkg/planner/core/tests/prepare/BUILD.bazel b/pkg/planner/core/tests/prepare/BUILD.bazel index 106222cc3069d..970c173c54bf6 100644 --- a/pkg/planner/core/tests/prepare/BUILD.bazel +++ b/pkg/planner/core/tests/prepare/BUILD.bazel @@ -20,6 +20,7 @@ go_test( "//pkg/parser/auth", "//pkg/planner/core", "//pkg/session", + "//pkg/session/types", "//pkg/sessionctx/variable", "//pkg/testkit", "//pkg/testkit/testsetup", diff --git a/pkg/planner/core/tests/prepare/issue/BUILD.bazel b/pkg/planner/core/tests/prepare/issue/BUILD.bazel deleted file mode 100644 index bdfc796445bc9..0000000000000 --- a/pkg/planner/core/tests/prepare/issue/BUILD.bazel +++ /dev/null @@ -1,18 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_test") - -go_test( - name = "issue_test", - timeout = "short", - srcs = [ - "issue_test.go", - "main_test.go", - ], - flaky = True, - deps = [ - "//pkg/parser/auth", - "//pkg/testkit", - "//pkg/testkit/testsetup", - "@com_github_stretchr_testify//require", - "@org_uber_go_goleak//:goleak", - ], -) diff --git a/pkg/planner/core/tests/prepare/issue/issue_test.go b/pkg/planner/core/tests/prepare/issue/issue_test.go deleted file mode 100644 index e3bbb26563855..0000000000000 --- a/pkg/planner/core/tests/prepare/issue/issue_test.go +++ /dev/null @@ -1,127 +0,0 @@ -// Copyright 2018 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 issue - -import ( - "testing" - - "github.com/pingcap/tidb/pkg/parser/auth" - "github.com/pingcap/tidb/pkg/testkit" - "github.com/stretchr/testify/require" -) - -func TestIssueEnablePreparedPlanCache2(t *testing.T) { - // Issue18066 - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec(`set tidb_enable_prepared_plan_cache=1`) - tk.RefreshConnectionID() - require.NoError(t, tk.Session().Auth(&auth.UserIdentity{Username: "root", Hostname: "%"}, nil, nil, nil)) - - tk.MustExec("use test") - tk.MustExec("drop table if exists t") - tk.MustExec("create table t(a int)") - tk.MustExec("prepare stmt from 'select * from t'") - tk.MustQuery("execute stmt").Check(testkit.Rows()) - tk.MustQuery("select EXEC_COUNT,plan_cache_hits, plan_in_cache from information_schema.statements_summary where digest_text='select * from `t`'").Check( - testkit.Rows("1 0 0")) - tk.MustQuery("execute stmt").Check(testkit.Rows()) - tk.MustQuery("select EXEC_COUNT,plan_cache_hits, plan_in_cache from information_schema.statements_summary where digest_text='select * from `t`'").Check( - testkit.Rows("2 1 1")) - tk.MustExec("prepare stmt from 'select * from t'") - tk.MustQuery("execute stmt").Check(testkit.Rows()) - tk.MustQuery("select @@last_plan_from_cache").Check(testkit.Rows("1")) - tk.MustQuery("select EXEC_COUNT, plan_cache_hits, plan_in_cache from information_schema.statements_summary where digest_text='select * from `t`'").Check( - testkit.Rows("3 2 1")) - // TestIssue26873 - tk.MustExec("drop table if exists t") - - tk.MustExec("create table t(a int primary key, b int, c int)") - tk.MustExec("prepare stmt from 'select * from t where a = 2 or a = ?'") - tk.MustExec("set @p = 3") - tk.MustQuery("execute stmt using @p").Check(testkit.Rows()) - tk.MustQuery("select @@last_plan_from_cache").Check(testkit.Rows("0")) - tk.MustQuery("execute stmt using @p").Check(testkit.Rows()) - tk.MustQuery("select @@last_plan_from_cache").Check(testkit.Rows("0")) - // TestIssue29511 - tk.MustExec("drop table if exists t") - - tk.MustExec("CREATE TABLE `t` (`COL1` bigint(20) DEFAULT NULL COMMENT 'WITH DEFAULT', UNIQUE KEY `UK_COL1` (`COL1`))") - tk.MustExec("insert into t values(-3865356285544170443),(9223372036854775807);") - tk.MustExec("prepare stmt from 'select/*+ hash_agg() */ max(col1) from t where col1 = ? and col1 > ?;';") - tk.MustExec("set @a=-3865356285544170443, @b=-4055949188488870713;") - tk.MustQuery("execute stmt using @a,@b;").Check(testkit.Rows("-3865356285544170443")) - // TestIssue23671 - tk.MustExec("drop table if exists t") - - tk.MustExec("create table t (a int, b int, index ab(a, b))") - tk.MustExec("insert into t values (1, 1), (2, 2)") - tk.MustExec("prepare s1 from 'select * from t use index(ab) where a>=? and b>=? and b<=?'") - tk.MustExec("set @a=1, @b=1, @c=1") - tk.MustQuery("execute s1 using @a, @b, @c").Check(testkit.Rows("1 1")) - tk.MustExec("set @a=1, @b=1, @c=10") - tk.MustQuery("execute s1 using @a, @b, @c").Check(testkit.Rows("1 1", "2 2")) - tk.MustQuery("select @@last_plan_from_cache").Check(testkit.Rows("0")) // b>=1 and b<=1 --> b=1 - // TestIssue28920 - tk.MustExec(`drop table if exists UK_GCOL_VIRTUAL_18928`) - tk.MustExec(` - CREATE TABLE UK_GCOL_VIRTUAL_18928 ( - COL102 bigint(20) DEFAULT NULL, - COL103 bigint(20) DEFAULT NULL, - COL1 bigint(20) GENERATED ALWAYS AS (COL102 & 10) VIRTUAL, - COL2 varchar(20) DEFAULT NULL, - COL4 datetime DEFAULT NULL, - COL3 bigint(20) DEFAULT NULL, - COL5 float DEFAULT NULL, - UNIQUE KEY UK_COL1 (COL1))`) - tk.MustExec(`insert into UK_GCOL_VIRTUAL_18928(col102,col2) values("-5175976006730879891", "屘厒镇览錻碛斵大擔觏譨頙硺箄魨搝珄鋧扭趖")`) - tk.MustExec(`prepare stmt from 'SELECT * FROM UK_GCOL_VIRTUAL_18928 WHERE col1 < ? AND col2 != ?'`) - tk.MustExec(`set @a=10, @b="aa"`) - tk.MustQuery(`execute stmt using @a, @b`).Check(testkit.Rows("-5175976006730879891 8 屘厒镇览錻碛斵大擔觏譨頙硺箄魨搝珄鋧扭趖 ")) - - // Issue29296 - tk.MustExec(`drop table if exists UK_MU14722`) - tk.MustExec(`CREATE TABLE UK_MU14722 ( - COL1 tinytext DEFAULT NULL, - COL2 tinyint(16) DEFAULT NULL, - COL3 datetime DEFAULT NULL, - COL4 int(11) DEFAULT NULL, - UNIQUE KEY U_M_COL (COL1(10)), - UNIQUE KEY U_M_COL2 (COL2), - UNIQUE KEY U_M_COL3 (COL3))`) - tk.MustExec(`insert into UK_MU14722 values("輮睅麤敜溺她晁瀪襄頮鹛涓誗钷廔筪惌嶙鎢塴", -121, "3383-02-19 07:58:28" , -639457963), - ("偧孇鱓鼂瘠钻篝醗時鷷聽箌磇砀玸眞扦鸇祈灇", 127, "7902-03-05 08:54:04", -1094128660), - ("浀玡慃淛漉围甧鴎史嬙砊齄w章炢忲噑硓哈樘", -127, "5813-04-16 03:07:20", -333397107), - ("鑝粼啎鸼贖桖弦簼赭蠅鏪鐥蕿捐榥疗耹岜鬓槊", -117, "7753-11-24 10:14:24", 654872077)`) - tk.MustExec(`prepare stmt from 'SELECT * FROM UK_MU14722 WHERE col2 > ? OR col2 BETWEEN ? AND ? ORDER BY COL2 + ? LIMIT 3'`) - tk.MustExec(`set @a=30410, @b=3937, @c=22045, @d=-4374`) - tk.MustQuery(`execute stmt using @a,@b,@c,@d`).Check(testkit.Rows()) - tk.MustExec(`set @a=127, @b=127, @c=127, @d=127`) - tk.MustQuery(`execute stmt using @a,@b,@c,@d`).Check(testkit.Rows(`偧孇鱓鼂瘠钻篝醗時鷷聽箌磇砀玸眞扦鸇祈灇 127 7902-03-05 08:54:04 -1094128660`)) - // TestIssue28246 - tk.MustExec("drop table if exists PK_AUTO_RANDOM9111;") - tk.MustExec("CREATE TABLE `PK_AUTO_RANDOM9111` ( `COL1` bigint(45) NOT NULL , `COL2` varchar(20) DEFAULT NULL, `COL4` datetime DEFAULT NULL, `COL3` bigint(20) DEFAULT NULL, `COL5` float DEFAULT NULL, PRIMARY KEY (`COL1`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;") - tk.MustExec("insert into PK_AUTO_RANDOM9111(col1) values (-9223372036854775808), (9223372036854775807);") - tk.MustExec("set @a=9223372036854775807, @b=1") - tk.MustExec(`prepare stmt from 'select min(col1) from PK_AUTO_RANDOM9111 where col1 > ?;';`) - tk.MustQuery("execute stmt using @a").Check(testkit.Rows("")) - // The plan contains the tableDual, so it will not be cached. - tk.MustQuery("execute stmt using @a").Check(testkit.Rows("")) - tk.MustQuery("select @@last_plan_from_cache").Check(testkit.Rows("0")) - tk.MustQuery("execute stmt using @b").Check(testkit.Rows("9223372036854775807")) - tk.MustQuery("select @@last_plan_from_cache").Check(testkit.Rows("0")) - tk.MustQuery("execute stmt using @a").Check(testkit.Rows("")) - tk.MustQuery("select @@last_plan_from_cache").Check(testkit.Rows("1")) -} diff --git a/pkg/planner/core/tests/prepare/prepare_test.go b/pkg/planner/core/tests/prepare/prepare_test.go index a681bdddc347f..99ace9c81672e 100644 --- a/pkg/planner/core/tests/prepare/prepare_test.go +++ b/pkg/planner/core/tests/prepare/prepare_test.go @@ -34,6 +34,7 @@ import ( "github.com/pingcap/tidb/pkg/parser/auth" "github.com/pingcap/tidb/pkg/planner/core" "github.com/pingcap/tidb/pkg/session" + sessiontypes "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/testkit" "github.com/pingcap/tidb/pkg/util/hint" @@ -104,7 +105,6 @@ func TestRandomFlushPlanCache(t *testing.T) { execStmts = append(execStmts, execStmt) } - rand.Seed(time.Now().Unix()) for i := 0; i < 10; i++ { // Warm up to make sure all the plans are in the cache. for _, execStmt := range execStmts { @@ -636,7 +636,7 @@ func TestPrepareCacheForPartition(t *testing.T) { } } -func newSession(t *testing.T, store kv.Storage, dbName string) session.Session { +func newSession(t *testing.T, store kv.Storage, dbName string) sessiontypes.Session { se, err := session.CreateSession4Test(store) require.NoError(t, err) mustExec(t, se, "create database if not exists "+dbName) @@ -644,7 +644,7 @@ func newSession(t *testing.T, store kv.Storage, dbName string) session.Session { return se } -func mustExec(t *testing.T, se session.Session, sql string) { +func mustExec(t *testing.T, se sessiontypes.Session, sql string) { _, err := se.Execute(context.Background(), sql) require.NoError(t, err) } diff --git a/pkg/planner/core/tiflash_selection_late_materialization.go b/pkg/planner/core/tiflash_selection_late_materialization.go index 2a06ae67376e6..df84a57a74106 100644 --- a/pkg/planner/core/tiflash_selection_late_materialization.go +++ b/pkg/planner/core/tiflash_selection_late_materialization.go @@ -251,7 +251,7 @@ func predicatePushDownToTableScanImpl(sctx sessionctx.Context, physicalSelection if len(selectedConds) == 0 { return } - logutil.BgLogger().Debug("planner: push down conditions to table scan", zap.String("table", physicalTableScan.Table.Name.L), zap.String("conditions", string(expression.SortedExplainExpressionList(selectedConds)))) + logutil.BgLogger().Debug("planner: push down conditions to table scan", zap.String("table", physicalTableScan.Table.Name.L), zap.String("conditions", string(expression.SortedExplainExpressionList(sctx, selectedConds)))) // remove the pushed down conditions from selection removeSpecificExprsFromSelection(physicalSelection, selectedConds) // add the pushed down conditions to table scan diff --git a/pkg/planner/core/util.go b/pkg/planner/core/util.go index d4d085f3d32a2..e3a91cc395e7a 100644 --- a/pkg/planner/core/util.go +++ b/pkg/planner/core/util.go @@ -138,7 +138,7 @@ func (s *logicalSchemaProducer) setSchemaAndNames(schema *expression.Schema, nam // inlineProjection prunes unneeded columns inline a executor. func (s *logicalSchemaProducer) inlineProjection(parentUsedCols []*expression.Column, opt *logicalOptimizeOp) { prunedColumns := make([]*expression.Column, 0) - used := expression.GetUsedList(parentUsedCols, s.Schema()) + used := expression.GetUsedList(s.SCtx(), parentUsedCols, s.Schema()) for i := len(used) - 1; i >= 0; i-- { if !used[i] { prunedColumns = append(prunedColumns, s.Schema().Columns[i]) diff --git a/pkg/planner/optimize.go b/pkg/planner/optimize.go index 67a7da1bff55e..95643fc7d400d 100644 --- a/pkg/planner/optimize.go +++ b/pkg/planner/optimize.go @@ -670,12 +670,12 @@ func getBindRecord(ctx sessionctx.Context, stmt ast.StmtNode) (*bindinfo.BindRec if ctx.Value(bindinfo.SessionBindInfoKeyType) == nil { return nil, "", nil } - stmtNode, normalizedSQL, hash, err := ExtractSelectAndNormalizeDigest(stmt, ctx.GetSessionVars().CurrentDB, true) + stmtNode, normalizedSQL, sqlDigest, err := ExtractSelectAndNormalizeDigest(stmt, ctx.GetSessionVars().CurrentDB, true) if err != nil || stmtNode == nil { return nil, "", err } sessionHandle := ctx.Value(bindinfo.SessionBindInfoKeyType).(*bindinfo.SessionHandle) - bindRecord := sessionHandle.GetBindRecord(hash, normalizedSQL, "") + bindRecord := sessionHandle.GetBindRecord(sqlDigest, normalizedSQL, "") if bindRecord != nil { if bindRecord.HasEnabledBinding() { return bindRecord, metrics.ScopeSession, nil @@ -686,7 +686,7 @@ func getBindRecord(ctx sessionctx.Context, stmt ast.StmtNode) (*bindinfo.BindRec if globalHandle == nil { return nil, "", nil } - bindRecord = globalHandle.GetBindRecord(hash, normalizedSQL, "") + bindRecord = globalHandle.GetBindRecord(sqlDigest, normalizedSQL, "") return bindRecord, metrics.ScopeGlobal, nil } diff --git a/pkg/planner/property/BUILD.bazel b/pkg/planner/property/BUILD.bazel index 90a53db31684e..9dc7c15f92313 100644 --- a/pkg/planner/property/BUILD.bazel +++ b/pkg/planner/property/BUILD.bazel @@ -12,6 +12,7 @@ go_library( visibility = ["//visibility:public"], deps = [ "//pkg/expression", + "//pkg/sessionctx", "//pkg/sessionctx/stmtctx", "//pkg/statistics", "//pkg/util/codec", diff --git a/pkg/planner/property/physical_property.go b/pkg/planner/property/physical_property.go index f572e9edac550..3f793c5eb0c30 100644 --- a/pkg/planner/property/physical_property.go +++ b/pkg/planner/property/physical_property.go @@ -21,6 +21,7 @@ import ( "github.com/pingcap/log" "github.com/pingcap/tidb/pkg/expression" + "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/util/codec" "github.com/pingcap/tidb/pkg/util/collate" @@ -95,7 +96,7 @@ type MPPPartitionColumn struct { } func (partitionCol *MPPPartitionColumn) hashCode(ctx *stmtctx.StatementContext) []byte { - hashcode := partitionCol.Col.HashCode(ctx) + hashcode := partitionCol.Col.HashCode() if partitionCol.CollateID < 0 { // collateId < 0 means new collation is not enabled hashcode = codec.EncodeInt(hashcode, int64(partitionCol.CollateID)) @@ -113,7 +114,7 @@ func (partitionCol *MPPPartitionColumn) Equal(other *MPPPartitionColumn) bool { return false } } - return partitionCol.Col.Equal(nil, other.Col) + return partitionCol.Col.EqualColumn(other.Col) } // MemoryUsage return the memory usage of MPPPartitionColumn @@ -130,11 +131,11 @@ func (partitionCol *MPPPartitionColumn) MemoryUsage() (sum int64) { } // ExplainColumnList generates explain information for a list of columns. -func ExplainColumnList(cols []*MPPPartitionColumn) []byte { +func ExplainColumnList(ctx sessionctx.Context, cols []*MPPPartitionColumn) []byte { buffer := bytes.NewBufferString("") for i, col := range cols { buffer.WriteString("[name: ") - buffer.WriteString(col.Col.ExplainInfo()) + buffer.WriteString(col.Col.ExplainInfo(ctx)) buffer.WriteString(", collate: ") if collate.NewCollationEnabled() { buffer.WriteString(GetCollateNameByIDForPartition(col.CollateID)) @@ -289,8 +290,7 @@ func (p *PhysicalProperty) IsPrefix(prop *PhysicalProperty) bool { return false } for i := range p.SortItems { - if !p.SortItems[i].Col.Equal(nil, - prop.SortItems[i].Col) || p.SortItems[i].Desc != prop.SortItems[i].Desc { + if !p.SortItems[i].Col.EqualColumn(prop.SortItems[i].Col) || p.SortItems[i].Desc != prop.SortItems[i].Desc { return false } } @@ -303,8 +303,8 @@ func (p *PhysicalProperty) IsSortItemAllForPartition() bool { return false } for i := range p.SortItemsForPartition { - if !p.SortItemsForPartition[i].Col.Equal(nil, - p.SortItems[i].Col) || p.SortItemsForPartition[i].Desc != p.SortItems[i].Desc { + if !p.SortItemsForPartition[i].Col.EqualColumn(p.SortItems[i].Col) || + p.SortItemsForPartition[i].Desc != p.SortItems[i].Desc { return false } } @@ -331,7 +331,7 @@ func (p *PhysicalProperty) HashCode() []byte { p.hashcode = codec.EncodeInt(p.hashcode, int64(p.TaskTp)) p.hashcode = codec.EncodeFloat(p.hashcode, p.ExpectedCnt) for _, item := range p.SortItems { - p.hashcode = append(p.hashcode, item.Col.HashCode(nil)...) + p.hashcode = append(p.hashcode, item.Col.HashCode()...) if item.Desc { p.hashcode = codec.EncodeInt(p.hashcode, 1) } else { diff --git a/pkg/planner/util/path.go b/pkg/planner/util/path.go index e0990380c9ff5..52a4011c584b7 100644 --- a/pkg/planner/util/path.go +++ b/pkg/planner/util/path.go @@ -198,7 +198,7 @@ func isColEqExpr(expr expression.Expression, col *expression.Column, checkFn fun return false } if checkFn(f.GetArgs()[1]) { - if col.Equal(nil, c) { + if col.EqualColumn(c) { return true } } @@ -208,7 +208,7 @@ func isColEqExpr(expr expression.Expression, col *expression.Column, checkFn fun return false } if checkFn(f.GetArgs()[0]) { - if col.Equal(nil, c) { + if col.EqualColumn(c) { return true } } @@ -240,22 +240,22 @@ type Col2Len map[int64]int // ExtractCol2Len collects index/table columns with lengths from expressions. If idxCols and idxColLens are not nil, it collects index columns with lengths(maybe prefix lengths). // Otherwise it collects table columns with full lengths. -func ExtractCol2Len(exprs []expression.Expression, idxCols []*expression.Column, idxColLens []int) Col2Len { +func ExtractCol2Len(ctx sessionctx.Context, exprs []expression.Expression, idxCols []*expression.Column, idxColLens []int) Col2Len { col2len := make(Col2Len, len(idxCols)) for _, expr := range exprs { - extractCol2LenFromExpr(expr, idxCols, idxColLens, col2len) + extractCol2LenFromExpr(ctx, expr, idxCols, idxColLens, col2len) } return col2len } -func extractCol2LenFromExpr(expr expression.Expression, idxCols []*expression.Column, idxColLens []int, col2Len Col2Len) { +func extractCol2LenFromExpr(ctx sessionctx.Context, expr expression.Expression, idxCols []*expression.Column, idxColLens []int, col2Len Col2Len) { switch v := expr.(type) { case *expression.Column: if idxCols == nil { col2Len[v.UniqueID] = types.UnspecifiedLength } else { for i, col := range idxCols { - if col != nil && v.EqualByExprAndID(nil, col) { + if col != nil && v.EqualByExprAndID(ctx, col) { col2Len[v.UniqueID] = idxColLens[i] break } @@ -263,7 +263,7 @@ func extractCol2LenFromExpr(expr expression.Expression, idxCols []*expression.Co } case *expression.ScalarFunction: for _, arg := range v.GetArgs() { - extractCol2LenFromExpr(arg, idxCols, idxColLens, col2Len) + extractCol2LenFromExpr(ctx, arg, idxCols, idxColLens, col2Len) } } } @@ -332,9 +332,9 @@ func CompareCol2Len(c1, c2 Col2Len) (int, bool) { } // GetCol2LenFromAccessConds returns columns with lengths from path.AccessConds. -func (path *AccessPath) GetCol2LenFromAccessConds() Col2Len { +func (path *AccessPath) GetCol2LenFromAccessConds(ctx sessionctx.Context) Col2Len { if path.IsTablePath() { - return ExtractCol2Len(path.AccessConds, nil, nil) + return ExtractCol2Len(ctx, path.AccessConds, nil, nil) } - return ExtractCol2Len(path.AccessConds, path.IdxCols, path.IdxColLens) + return ExtractCol2Len(ctx, path.AccessConds, path.IdxCols, path.IdxColLens) } diff --git a/pkg/server/BUILD.bazel b/pkg/server/BUILD.bazel index fbe3f826b0807..86901c1b84b5e 100644 --- a/pkg/server/BUILD.bazel +++ b/pkg/server/BUILD.bazel @@ -63,6 +63,7 @@ go_library( "//pkg/server/metrics", "//pkg/session", "//pkg/session/txninfo", + "//pkg/session/types", "//pkg/sessionctx", "//pkg/sessionctx/sessionstates", "//pkg/sessionctx/stmtctx", @@ -99,6 +100,7 @@ go_library( "//pkg/util/versioninfo", "@com_github_blacktear23_go_proxyprotocol//:go-proxyprotocol", "@com_github_gorilla_mux//:mux", + "@com_github_klauspost_compress//zstd", "@com_github_pingcap_errors//:errors", "@com_github_pingcap_failpoint//:failpoint", "@com_github_pingcap_fn//:fn", diff --git a/pkg/server/conn.go b/pkg/server/conn.go index 1aa95b32a4cda..57d9856f01c03 100644 --- a/pkg/server/conn.go +++ b/pkg/server/conn.go @@ -54,6 +54,7 @@ import ( "time" "unsafe" + "github.com/klauspost/compress/zstd" "github.com/pingcap/errors" "github.com/pingcap/failpoint" "github.com/pingcap/tidb/pkg/config" @@ -113,9 +114,15 @@ const ( connStatusWaitShutdown = 3 // Notified by server to close. ) +var ( + statusCompression = "Compression" + statusCompressionAlgorithm = "Compression_algorithm" + statusCompressionLevel = "Compression_level" +) + // newClientConn creates a *clientConn object. func newClientConn(s *Server) *clientConn { - return &clientConn{ + cc := &clientConn{ server: s, connectionID: s.dom.NextConnID(), collation: mysql.DefaultCollationID, @@ -127,6 +134,8 @@ func newClientConn(s *Server) *clientConn { quit: make(chan struct{}), ppEnabled: s.cfg.ProxyProtocol.Networks != "", } + variable.RegisterStatistics(cc) + return cc } // clientConn represents a connection between server and client, it maintains connection specific state, @@ -323,8 +332,10 @@ func (cc *clientConn) handshake(ctx context.Context) error { // With mysql --compression-algorithms=zlib,zstd both flags are set, the result is Zlib if cc.capability&mysql.ClientCompress > 0 { cc.pkt.SetCompressionAlgorithm(mysql.CompressionZlib) + cc.ctx.SetCompressionAlgorithm(mysql.CompressionZlib) } else if cc.capability&mysql.ClientZstdCompressionAlgorithm > 0 { cc.pkt.SetCompressionAlgorithm(mysql.CompressionZstd) + cc.ctx.SetCompressionAlgorithm(mysql.CompressionZstd) } return err @@ -546,7 +557,7 @@ func (cc *clientConn) readOptionalSSLRequestAndHandshakeResponse(ctx context.Con cc.dbname = resp.DBName cc.collation = resp.Collation cc.attrs = resp.Attrs - cc.pkt.SetZstdLevel(resp.ZstdLevel) + cc.pkt.SetZstdLevel(zstd.EncoderLevelFromZstd(resp.ZstdLevel)) err = cc.handleAuthPlugin(ctx, &resp) if err != nil { @@ -575,7 +586,7 @@ func (cc *clientConn) readOptionalSSLRequestAndHandshakeResponse(ctx context.Con return errors.New("Unknown auth plugin") } - err = cc.openSessionAndDoAuth(resp.Auth, resp.AuthPlugin) + err = cc.openSessionAndDoAuth(resp.Auth, resp.AuthPlugin, resp.ZstdLevel) if err != nil { logutil.Logger(ctx).Warn("open new session or authentication failure", zap.Error(err)) } @@ -716,7 +727,7 @@ func (cc *clientConn) openSession() error { return nil } -func (cc *clientConn) openSessionAndDoAuth(authData []byte, authPlugin string) error { +func (cc *clientConn) openSessionAndDoAuth(authData []byte, authPlugin string, zstdLevel int) error { // Open a context unless this was done before. if ctx := cc.getCtx(); ctx == nil { err := cc.openSession() @@ -744,6 +755,7 @@ func (cc *clientConn) openSessionAndDoAuth(authData []byte, authPlugin string) e return err } cc.ctx.SetPort(port) + cc.ctx.SetCompressionLevel(zstdLevel) if cc.dbname != "" { _, err = cc.useDB(context.Background(), cc.dbname) if err != nil { @@ -2434,7 +2446,7 @@ func (cc *clientConn) handleChangeUser(ctx context.Context, data []byte) error { fakeResp.Auth = newpass } } - if err := cc.openSessionAndDoAuth(fakeResp.Auth, fakeResp.AuthPlugin); err != nil { + if err := cc.openSessionAndDoAuth(fakeResp.Auth, fakeResp.AuthPlugin, fakeResp.ZstdLevel); err != nil { return err } return cc.handleCommonConnectionReset(ctx) @@ -2581,3 +2593,38 @@ func (cc *clientConn) ReadPacket() ([]byte, error) { func (cc *clientConn) Flush(ctx context.Context) error { return cc.flush(ctx) } + +// Stats returns the connection statistics. +func (*clientConn) Stats(vars *variable.SessionVars) (map[string]interface{}, error) { + m := make(map[string]interface{}, 3) + + switch vars.CompressionAlgorithm { + case mysql.CompressionNone: + m[statusCompression] = "OFF" + m[statusCompressionAlgorithm] = "" + m[statusCompressionLevel] = 0 + case mysql.CompressionZlib: + m[statusCompression] = "ON" + m[statusCompressionAlgorithm] = "zlib" + m[statusCompressionLevel] = mysql.ZlibCompressDefaultLevel + case mysql.CompressionZstd: + m[statusCompression] = "ON" + m[statusCompressionAlgorithm] = "zstd" + m[statusCompressionLevel] = vars.CompressionLevel + default: + logutil.BgLogger().Debug( + "unexpected compression algorithm value", + zap.Int("algorithm", vars.CompressionAlgorithm), + ) + m[statusCompression] = "OFF" + m[statusCompressionAlgorithm] = "" + m[statusCompressionLevel] = 0 + } + + return m, nil +} + +// GetScope gets the status variables scope. +func (*clientConn) GetScope(_ string) variable.ScopeFlag { + return variable.ScopeSession +} diff --git a/pkg/server/conn_stmt_params_test.go b/pkg/server/conn_stmt_params_test.go index beaa275692e52..61dd33ffcc935 100644 --- a/pkg/server/conn_stmt_params_test.go +++ b/pkg/server/conn_stmt_params_test.go @@ -214,7 +214,7 @@ func TestParseExecArgs(t *testing.T) { }, nil, types.ErrTruncatedWrongVal, - types.Duration{Duration: types.MinTime, Fsp: types.MaxFsp}, + types.Duration{Duration: types.MinTime, Fsp: 0}, }, { args{ @@ -226,7 +226,7 @@ func TestParseExecArgs(t *testing.T) { }, nil, nil, - types.Duration{Duration: time.Duration(0), Fsp: types.MaxFsp}, + types.Duration{Duration: time.Duration(0), Fsp: 0}, }, // For error test { diff --git a/pkg/server/conn_stmt_test.go b/pkg/server/conn_stmt_test.go index 0cdf29d6d5147..cdfec0f6d0cd7 100644 --- a/pkg/server/conn_stmt_test.go +++ b/pkg/server/conn_stmt_test.go @@ -21,12 +21,6 @@ import ( "crypto/rand" "encoding/binary" "fmt" - "io/fs" - "os" - "path/filepath" - "strconv" - "strings" - "syscall" "testing" "github.com/pingcap/failpoint" @@ -334,25 +328,11 @@ func TestCursorFetchErrorInFetch(t *testing.T) { mysql.CursorTypeReadOnly, 0x1, 0x0, 0x0, 0x0, ))) - // close these disk files to produce error - filepath.Walk("/proc/self/fd", func(path string, info fs.FileInfo, err error) error { - if err != nil { - return nil - } - target, err := os.Readlink(path) - if err != nil { - return nil - } - if strings.HasPrefix(target, tmpStoragePath) { - fd, err := strconv.Atoi(filepath.Base(path)) - require.NoError(t, err) - require.NoError(t, syscall.Close(fd)) - } - return nil - }) - - // it'll get "bad file descriptor", as it has been closed in the test. - require.Error(t, c.Dispatch(ctx, appendUint32(appendUint32([]byte{mysql.ComStmtFetch}, uint32(stmt.ID())), 1024))) + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/util/chunk/get-chunk-error", "return(true)")) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/util/chunk/get-chunk-error")) + }() + require.ErrorContains(t, c.Dispatch(ctx, appendUint32(appendUint32([]byte{mysql.ComStmtFetch}, uint32(stmt.ID())), 1024)), "fail to get chunk for test") // after getting a failed FETCH, the cursor should have been reseted require.False(t, stmt.GetCursorActive()) require.Len(t, tk.Session().GetSessionVars().MemTracker.GetChildrenForTest(), 0) diff --git a/pkg/server/conn_test.go b/pkg/server/conn_test.go index 78b7ecd659f61..802f7f9b2926e 100644 --- a/pkg/server/conn_test.go +++ b/pkg/server/conn_test.go @@ -1617,25 +1617,25 @@ func TestAuthSessionTokenPlugin(t *testing.T) { } err = cc.handleAuthPlugin(ctx, &resp) require.NoError(t, err) - err = cc.openSessionAndDoAuth(resp.Auth, resp.AuthPlugin) + err = cc.openSessionAndDoAuth(resp.Auth, resp.AuthPlugin, resp.ZstdLevel) require.NoError(t, err) // login succeeds even if the password expires now tk.MustExec("ALTER USER auth_session_token PASSWORD EXPIRE") - err = cc.openSessionAndDoAuth([]byte{}, mysql.AuthNativePassword) + err = cc.openSessionAndDoAuth([]byte{}, mysql.AuthNativePassword, 0) require.ErrorContains(t, err, "Your password has expired") - err = cc.openSessionAndDoAuth(resp.Auth, resp.AuthPlugin) + err = cc.openSessionAndDoAuth(resp.Auth, resp.AuthPlugin, resp.ZstdLevel) require.NoError(t, err) // wrong token should fail tokenBytes[0] ^= 0xff - err = cc.openSessionAndDoAuth(resp.Auth, resp.AuthPlugin) + err = cc.openSessionAndDoAuth(resp.Auth, resp.AuthPlugin, resp.ZstdLevel) require.ErrorContains(t, err, "Access denied") tokenBytes[0] ^= 0xff // using the token to auth with another user should fail cc.user = "another_user" - err = cc.openSessionAndDoAuth(resp.Auth, resp.AuthPlugin) + err = cc.openSessionAndDoAuth(resp.Auth, resp.AuthPlugin, resp.ZstdLevel) require.ErrorContains(t, err, "Access denied") } @@ -1999,3 +1999,56 @@ func TestEmptyOrgName(t *testing.T) { testDispatch(t, inputs, 0) } + +func TestStats(t *testing.T) { + var outBuffer bytes.Buffer + + store := testkit.CreateMockStore(t) + cfg := serverutil.NewTestConfig() + cfg.Port = 0 + cfg.Status.StatusPort = 0 + drv := NewTiDBDriver(store) + server, err := NewServer(cfg, drv) + require.NoError(t, err) + tk := testkit.NewTestKit(t, store) + + cc := &clientConn{ + connectionID: 1, + salt: []byte{ + 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, + 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, + }, + server: server, + pkt: internal.NewPacketIOForTest(bufio.NewWriter(&outBuffer)), + collation: mysql.DefaultCollationID, + peerHost: "localhost", + alloc: arena.NewAllocator(512), + chunkAlloc: chunk.NewAllocator(), + capability: mysql.ClientProtocol41, + } + + // No compression + vars := tk.Session().GetSessionVars() + m, err := cc.Stats(vars) + require.NoError(t, err) + require.Equal(t, "OFF", m["Compression"]) + require.Equal(t, "", m["Compression_algorithm"]) + require.Equal(t, 0, m["Compression_level"]) + + // zlib compression + vars.CompressionAlgorithm = mysql.CompressionZlib + m, err = cc.Stats(vars) + require.NoError(t, err) + require.Equal(t, "ON", m["Compression"]) + require.Equal(t, "zlib", m["Compression_algorithm"]) + require.Equal(t, mysql.ZlibCompressDefaultLevel, m["Compression_level"]) + + // zstd compression, with level 1 + vars.CompressionAlgorithm = mysql.CompressionZstd + vars.CompressionLevel = 1 + m, err = cc.Stats(vars) + require.NoError(t, err) + require.Equal(t, "ON", m["Compression"]) + require.Equal(t, "zstd", m["Compression_algorithm"]) + require.Equal(t, 1, m["Compression_level"]) +} diff --git a/pkg/server/driver_tidb.go b/pkg/server/driver_tidb.go index 9e70f5ad18d30..c1d51b354e01a 100644 --- a/pkg/server/driver_tidb.go +++ b/pkg/server/driver_tidb.go @@ -32,6 +32,7 @@ import ( "github.com/pingcap/tidb/pkg/server/internal/column" "github.com/pingcap/tidb/pkg/server/internal/resultset" "github.com/pingcap/tidb/pkg/session" + sessiontypes "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/sessionstates" "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" @@ -55,7 +56,7 @@ func NewTiDBDriver(store kv.Storage) *TiDBDriver { // TiDBContext implements QueryCtx. type TiDBContext struct { - session.Session + sessiontypes.Session stmts map[int]*TiDBStatement } diff --git a/pkg/server/handler/optimizor/statistics_handler.go b/pkg/server/handler/optimizor/statistics_handler.go index 4af77791cd901..ba83fc805a68f 100644 --- a/pkg/server/handler/optimizor/statistics_handler.go +++ b/pkg/server/handler/optimizor/statistics_handler.go @@ -111,7 +111,7 @@ func (sh StatsHistoryHandler) ServeHTTP(w http.ResponseWriter, req *http.Request } se.GetSessionVars().StmtCtx.SetTimeZone(time.Local) - t, err := types.ParseTime(se.GetSessionVars().StmtCtx.TypeCtx(), params[handler.Snapshot], mysql.TypeTimestamp, 6, nil) + t, err := types.ParseTime(se.GetSessionVars().StmtCtx.TypeCtx(), params[handler.Snapshot], mysql.TypeTimestamp, 6) if err != nil { handler.WriteError(w, err) return diff --git a/pkg/server/handler/tests/http_handler_test.go b/pkg/server/handler/tests/http_handler_test.go index 002022b60a881..6435781a957fc 100644 --- a/pkg/server/handler/tests/http_handler_test.go +++ b/pkg/server/handler/tests/http_handler_test.go @@ -102,7 +102,7 @@ func TestRegionIndexRange(t *testing.T) { } expectIndexValues = append(expectIndexValues, str) } - encodedValue, err := codec.EncodeKey(stmtctx.NewStmtCtxWithTimeZone(time.Local), nil, indexValues...) + encodedValue, err := codec.EncodeKey(stmtctx.NewStmtCtxWithTimeZone(time.Local).TimeZone(), nil, indexValues...) require.NoError(t, err) startKey := tablecodec.EncodeIndexSeekKey(sTableID, sIndex, encodedValue) @@ -169,7 +169,7 @@ func TestRegionCommonHandleRange(t *testing.T) { } expectIndexValues = append(expectIndexValues, str) } - encodedValue, err := codec.EncodeKey(stmtctx.NewStmtCtxWithTimeZone(time.Local), nil, indexValues...) + encodedValue, err := codec.EncodeKey(stmtctx.NewStmtCtxWithTimeZone(time.Local).TimeZone(), nil, indexValues...) require.NoError(t, err) startKey := tablecodec.EncodeRowKey(sTableID, encodedValue) @@ -702,7 +702,7 @@ func TestDecodeColumnValue(t *testing.T) { } rd := rowcodec.Encoder{Enable: true} sc := stmtctx.NewStmtCtxWithTimeZone(time.UTC) - bs, err := tablecodec.EncodeRow(sc, row, colIDs, nil, nil, &rd) + bs, err := tablecodec.EncodeRow(sc.TimeZone(), row, colIDs, nil, nil, &rd) require.NoError(t, err) require.NotNil(t, bs) bin := base64.StdEncoding.EncodeToString(bs) diff --git a/pkg/server/handler/tikv_handler.go b/pkg/server/handler/tikv_handler.go index b5e72c1f5c508..9fd630d3062d5 100644 --- a/pkg/server/handler/tikv_handler.go +++ b/pkg/server/handler/tikv_handler.go @@ -98,7 +98,8 @@ func (t *TikvHandlerTool) GetHandle(tb table.PhysicalTable, params map[string]st } tablecodec.TruncateIndexValues(tblInfo, pkIdx, pkDts) var handleBytes []byte - handleBytes, err = codec.EncodeKey(sc, nil, pkDts...) + handleBytes, err = codec.EncodeKey(sc.TimeZone(), nil, pkDts...) + err = sc.HandleError(err) if err != nil { return nil, errors.Trace(err) } diff --git a/pkg/server/handler/tikvhandler/BUILD.bazel b/pkg/server/handler/tikvhandler/BUILD.bazel index b5dffea18f4e5..824f6a4053f4e 100644 --- a/pkg/server/handler/tikvhandler/BUILD.bazel +++ b/pkg/server/handler/tikvhandler/BUILD.bazel @@ -19,6 +19,7 @@ go_library( "//pkg/server/handler", "//pkg/session", "//pkg/session/txninfo", + "//pkg/session/types", "//pkg/sessionctx", "//pkg/sessionctx/binloginfo", "//pkg/sessionctx/variable", @@ -33,12 +34,12 @@ go_library( "//pkg/util/gcutil", "//pkg/util/hack", "//pkg/util/logutil", - "//pkg/util/pdapi", "//pkg/util/sqlexec", "@com_github_gorilla_mux//:mux", "@com_github_pingcap_errors//:errors", "@com_github_pingcap_log//:log", "@com_github_tikv_client_go_v2//tikv", + "@com_github_tikv_pd_client//http", "@org_uber_go_zap//:zap", ], ) diff --git a/pkg/server/handler/tikvhandler/tikv_handler.go b/pkg/server/handler/tikvhandler/tikv_handler.go index a215221da1f82..394212e331ea9 100644 --- a/pkg/server/handler/tikvhandler/tikv_handler.go +++ b/pkg/server/handler/tikvhandler/tikv_handler.go @@ -46,6 +46,7 @@ import ( "github.com/pingcap/tidb/pkg/server/handler" "github.com/pingcap/tidb/pkg/session" "github.com/pingcap/tidb/pkg/session/txninfo" + sessiontypes "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/binloginfo" "github.com/pingcap/tidb/pkg/sessionctx/variable" @@ -60,9 +61,9 @@ import ( "github.com/pingcap/tidb/pkg/util/gcutil" "github.com/pingcap/tidb/pkg/util/hack" "github.com/pingcap/tidb/pkg/util/logutil" - "github.com/pingcap/tidb/pkg/util/pdapi" "github.com/pingcap/tidb/pkg/util/sqlexec" "github.com/tikv/client-go/v2/tikv" + pd "github.com/tikv/pd/client/http" "go.uber.org/zap" ) @@ -825,7 +826,7 @@ type SchemaTableStorage struct { } func getSchemaTablesStorageInfo(h *SchemaStorageHandler, schema *model.CIStr, table *model.CIStr) (messages []*SchemaTableStorage, err error) { - var s session.Session + var s sessiontypes.Session if s, err = session.CreateSession(h.Store); err != nil { return } @@ -1201,7 +1202,7 @@ func (h *TableHandler) addScatterSchedule(startKey, endKey []byte, name string) if err != nil { return err } - scheduleURL := fmt.Sprintf("%s://%s%s", util.InternalHTTPSchema(), pdAddrs[0], pdapi.Schedulers) + scheduleURL := fmt.Sprintf("%s://%s%s", util.InternalHTTPSchema(), pdAddrs[0], pd.Schedulers) resp, err := util.InternalHTTPClient().Post(scheduleURL, "application/json", bytes.NewBuffer(v)) if err != nil { return err @@ -1217,7 +1218,7 @@ func (h *TableHandler) deleteScatterSchedule(name string) error { if err != nil { return err } - scheduleURL := fmt.Sprintf("%s://%s%s", util.InternalHTTPSchema(), pdAddrs[0], pdapi.ScatterRangeSchedulerWithName(name)) + scheduleURL := fmt.Sprintf("%s://%s%s", util.InternalHTTPSchema(), pdAddrs[0], pd.ScatterRangeSchedulerWithName(name)) req, err := http.NewRequest(http.MethodDelete, scheduleURL, nil) if err != nil { return err @@ -1403,9 +1404,7 @@ func (h *TableHandler) getRegionsByID(tbl table.Table, id int64, name string) (* } func (h *TableHandler) handleDiskUsageRequest(tbl table.Table, w http.ResponseWriter) { - tableID := tbl.Meta().ID - var stats helper.PDRegionStats - err := h.GetPDRegionStats(tableID, &stats, false) + stats, err := h.GetPDRegionStats(context.Background(), tbl.Meta().ID, false) if err != nil { writeError(w, err) return @@ -1443,12 +1442,13 @@ func (h RegionHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) { writeError(w, err) return } - hotRead, err := h.ScrapeHotInfo(pdapi.HotRead, schema.AllSchemas()) + ctx := context.Background() + hotRead, err := h.ScrapeHotInfo(ctx, helper.HotRead, schema.AllSchemas()) if err != nil { writeError(w, err) return } - hotWrite, err := h.ScrapeHotInfo(pdapi.HotWrite, schema.AllSchemas()) + hotWrite, err := h.ScrapeHotInfo(ctx, helper.HotWrite, schema.AllSchemas()) if err != nil { writeError(w, err) return diff --git a/pkg/server/internal/column/column_test.go b/pkg/server/internal/column/column_test.go index ba63d52a5b9d8..f4fdceab40962 100644 --- a/pkg/server/internal/column/column_test.go +++ b/pkg/server/internal/column/column_test.go @@ -184,7 +184,7 @@ func TestDumpTextValue(t *testing.T) { require.NoError(t, err) typeCtx := types.NewContext(types.StrictFlags.WithIgnoreZeroInDate(true), losAngelesTz, func(err error) {}) - time, err := types.ParseTime(typeCtx, "2017-01-05 23:59:59.575601", mysql.TypeDatetime, 0, nil) + time, err := types.ParseTime(typeCtx, "2017-01-05 23:59:59.575601", mysql.TypeDatetime, 0) require.NoError(t, err) d.SetMysqlTime(time) columns[0].Type = mysql.TypeDatetime diff --git a/pkg/server/internal/handshake/BUILD.bazel b/pkg/server/internal/handshake/BUILD.bazel index 0c09a57570c98..4283d59005238 100644 --- a/pkg/server/internal/handshake/BUILD.bazel +++ b/pkg/server/internal/handshake/BUILD.bazel @@ -5,5 +5,4 @@ go_library( srcs = ["handshake.go"], importpath = "github.com/pingcap/tidb/pkg/server/internal/handshake", visibility = ["//pkg/server:__subpackages__"], - deps = ["@com_github_klauspost_compress//zstd"], ) diff --git a/pkg/server/internal/handshake/handshake.go b/pkg/server/internal/handshake/handshake.go index a310818284587..2cf29cd25b103 100644 --- a/pkg/server/internal/handshake/handshake.go +++ b/pkg/server/internal/handshake/handshake.go @@ -14,8 +14,6 @@ package handshake -import "github.com/klauspost/compress/zstd" - // Response41 is the response message for a successful initial handshake. type Response41 struct { Attrs map[string]string @@ -23,7 +21,7 @@ type Response41 struct { DBName string AuthPlugin string Auth []byte - ZstdLevel zstd.EncoderLevel + ZstdLevel int Capability uint32 Collation uint8 } diff --git a/pkg/server/internal/packetio.go b/pkg/server/internal/packetio.go index 4baa977cf739c..9e4e6c02ddc12 100644 --- a/pkg/server/internal/packetio.go +++ b/pkg/server/internal/packetio.go @@ -362,13 +362,12 @@ func (cw *compressedWriter) Flush() error { // https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_basic_compression_packet.html // suggests a MIN_COMPRESS_LENGTH of 50. minCompressLength := 50 - zlibCompressDefaultLevel := 6 data := cw.buf.Bytes() cw.buf.Reset() switch cw.compressionAlgorithm { case mysql.CompressionZlib: - w, err = zlib.NewWriterLevel(&payload, zlibCompressDefaultLevel) + w, err = zlib.NewWriterLevel(&payload, mysql.ZlibCompressDefaultLevel) case mysql.CompressionZstd: w, err = zstd.NewWriter(&payload, zstd.WithEncoderLevel(cw.zstdLevel)) default: diff --git a/pkg/server/internal/parse/BUILD.bazel b/pkg/server/internal/parse/BUILD.bazel index dfab3da1f7923..aae318fa183df 100644 --- a/pkg/server/internal/parse/BUILD.bazel +++ b/pkg/server/internal/parse/BUILD.bazel @@ -10,7 +10,6 @@ go_library( "//pkg/server/internal/handshake", "//pkg/server/internal/util", "//pkg/util/logutil", - "@com_github_klauspost_compress//zstd", "@org_uber_go_zap//:zap", ], ) diff --git a/pkg/server/internal/parse/parse.go b/pkg/server/internal/parse/parse.go index de7571d2c287c..b73ea85a10032 100644 --- a/pkg/server/internal/parse/parse.go +++ b/pkg/server/internal/parse/parse.go @@ -19,7 +19,6 @@ import ( "context" "encoding/binary" - "github.com/klauspost/compress/zstd" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/server/internal/handshake" util2 "github.com/pingcap/tidb/pkg/server/internal/util" @@ -146,7 +145,7 @@ func HandshakeResponseBody(ctx context.Context, packet *handshake.Response41, da } if packet.Capability&mysql.ClientZstdCompressionAlgorithm > 0 { - packet.ZstdLevel = zstd.EncoderLevelFromZstd(int(data[offset])) + packet.ZstdLevel = int(data[offset]) } return nil diff --git a/pkg/server/internal/testserverclient/server_client.go b/pkg/server/internal/testserverclient/server_client.go index f7d614328ef1a..a05b24b2b8ccb 100644 --- a/pkg/server/internal/testserverclient/server_client.go +++ b/pkg/server/internal/testserverclient/server_client.go @@ -72,7 +72,12 @@ func NewTestServerClient() *TestServerClient { } } -// statusURL return the full URL of a status path +// Addr returns the address of the server. +func (cli *TestServerClient) Addr() string { + return fmt.Sprintf("%s://localhost:%d", cli.StatusScheme, cli.Port) +} + +// StatusURL returns the full URL of a status path func (cli *TestServerClient) StatusURL(path string) string { return fmt.Sprintf("%s://localhost:%d%s", cli.StatusScheme, cli.StatusPort, path) } diff --git a/pkg/server/rpc_server.go b/pkg/server/rpc_server.go index 64225ccaca210..9fa31d8a47854 100644 --- a/pkg/server/rpc_server.go +++ b/pkg/server/rpc_server.go @@ -18,6 +18,7 @@ import ( "context" "fmt" "net" + "strconv" "time" "github.com/pingcap/kvproto/pkg/coprocessor" @@ -33,6 +34,7 @@ import ( "github.com/pingcap/tidb/pkg/privilege" "github.com/pingcap/tidb/pkg/privilege/privileges" "github.com/pingcap/tidb/pkg/session" + sessiontypes "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/util" "github.com/pingcap/tidb/pkg/util/logutil" @@ -214,7 +216,7 @@ func (s *rpcServer) handleCopRequest(ctx context.Context, req *coprocessor.Reque return h.HandleRequest(ctx, req) } -func (s *rpcServer) createSession() (session.Session, error) { +func (s *rpcServer) createSession() (sessiontypes.Session, error) { se, err := session.CreateSessionWithDomain(s.dom.Store(), s.dom) if err != nil { return nil, err @@ -239,6 +241,9 @@ func (s *rpcServer) createSession() (session.Session, error) { action := &memory.PanicOnExceed{Killer: &vars.SQLKiller} vars.MemTracker.SetActionOnExceed(action) } + if err = vars.SetSystemVar(variable.MaxAllowedPacket, strconv.FormatUint(variable.DefMaxAllowedPacket, 10)); err != nil { + return nil, err + } se.SetSessionManager(s.sm) return se, nil } diff --git a/pkg/server/stat_test.go b/pkg/server/stat_test.go index 31f7983cd000d..5b0fca478780d 100644 --- a/pkg/server/stat_test.go +++ b/pkg/server/stat_test.go @@ -48,7 +48,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(), keyspace.CodecV1, true) + _, err = infosync.GlobalInfoSyncerInit(context.Background(), dom.DDL().GetID(), dom.ServerID, dom.GetEtcdClient(), dom.GetEtcdClient(), dom.GetPDClient(), dom.GetPDHTTPClient(), keyspace.CodecV1, true) require.NoError(t, err) tidbdrv := NewTiDBDriver(store) diff --git a/pkg/session/BUILD.bazel b/pkg/session/BUILD.bazel index 5a27a9785a923..b4c484de4123f 100644 --- a/pkg/session/BUILD.bazel +++ b/pkg/session/BUILD.bazel @@ -53,6 +53,7 @@ go_library( "//pkg/privilege/privileges", "//pkg/session/metrics", "//pkg/session/txninfo", + "//pkg/session/types", "//pkg/sessionctx", "//pkg/sessionctx/binloginfo", "//pkg/sessionctx/sessionstates", @@ -127,7 +128,6 @@ go_test( "main_test.go", "tidb_test.go", ], - data = glob(["testdata/**"]), embed = [":session"], flaky = True, race = "on", @@ -143,12 +143,11 @@ go_test( "//pkg/meta", "//pkg/parser/ast", "//pkg/parser/auth", - "//pkg/planner/core", + "//pkg/session/types", "//pkg/sessionctx", "//pkg/sessionctx/variable", "//pkg/statistics", "//pkg/store/mockstore", - "//pkg/tablecodec", "//pkg/telemetry", "//pkg/testkit/testmain", "//pkg/testkit/testsetup", diff --git a/pkg/session/bench_test.go b/pkg/session/bench_test.go index 0064336dd5d3c..ec8a226c6e009 100644 --- a/pkg/session/bench_test.go +++ b/pkg/session/bench_test.go @@ -31,6 +31,7 @@ import ( "github.com/pingcap/tidb/pkg/expression" "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/parser/ast" + sessiontypes "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/store/mockstore" "github.com/pingcap/tidb/pkg/util/benchdaily" "github.com/pingcap/tidb/pkg/util/chunk" @@ -43,7 +44,7 @@ import ( var smallCount = 100 var bigCount = 10000 -func prepareBenchSession() (Session, *domain.Domain, kv.Storage) { +func prepareBenchSession() (sessiontypes.Session, *domain.Domain, kv.Storage) { config.UpdateGlobal(func(cfg *config.Config) { cfg.Instance.EnableSlowLog.Store(false) }) @@ -65,7 +66,7 @@ func prepareBenchSession() (Session, *domain.Domain, kv.Storage) { return se, domain, store } -func prepareBenchData(se Session, colType string, valueFormat string, valueCount int) { +func prepareBenchData(se sessiontypes.Session, colType string, valueFormat string, valueCount int) { mustExecute(se, "drop table if exists t") mustExecute(se, fmt.Sprintf("create table t (pk int primary key auto_increment, col %s, index idx (col))", colType)) mustExecute(se, "begin") @@ -75,7 +76,7 @@ func prepareBenchData(se Session, colType string, valueFormat string, valueCount mustExecute(se, "commit") } -func prepareNonclusteredBenchData(se Session, colType string, valueFormat string, valueCount int) { +func prepareNonclusteredBenchData(se sessiontypes.Session, colType string, valueFormat string, valueCount int) { mustExecute(se, "drop table if exists t") mustExecute(se, fmt.Sprintf("create table t (pk int primary key /*T![clustered_index] NONCLUSTERED */ auto_increment, col %s, index idx (col))", colType)) mustExecute(se, "begin") @@ -85,7 +86,7 @@ func prepareNonclusteredBenchData(se Session, colType string, valueFormat string mustExecute(se, "commit") } -func prepareSortBenchData(se Session, colType string, valueFormat string, valueCount int) { +func prepareSortBenchData(se sessiontypes.Session, colType string, valueFormat string, valueCount int) { mustExecute(se, "drop table if exists t") mustExecute(se, fmt.Sprintf("create table t (pk int primary key auto_increment, col %s)", colType)) mustExecute(se, "begin") @@ -100,7 +101,7 @@ func prepareSortBenchData(se Session, colType string, valueFormat string, valueC mustExecute(se, "commit") } -func prepareJoinBenchData(se Session, colType string, valueFormat string, valueCount int) { +func prepareJoinBenchData(se sessiontypes.Session, colType string, valueFormat string, valueCount int) { mustExecute(se, "drop table if exists t") mustExecute(se, fmt.Sprintf("create table t (pk int primary key auto_increment, col %s)", colType)) mustExecute(se, "begin") @@ -125,7 +126,7 @@ func readResult(ctx context.Context, rs sqlexec.RecordSet, count int) { rs.Close() } -func hasPlan(ctx context.Context, b *testing.B, se Session, plan string) { +func hasPlan(ctx context.Context, b *testing.B, se sessiontypes.Session, plan string) { find := false rs, err := se.Execute(ctx, "explain select * from t where col = 'hello 64'") if err != nil { diff --git a/pkg/session/bootstrap.go b/pkg/session/bootstrap.go index bc3b231aa5787..ba14a7828b1b5 100644 --- a/pkg/session/bootstrap.go +++ b/pkg/session/bootstrap.go @@ -44,6 +44,7 @@ import ( "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/parser/terror" "github.com/pingcap/tidb/pkg/planner/core" + sessiontypes "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/table/tables" timertable "github.com/pingcap/tidb/pkg/timer/tablestore" @@ -694,7 +695,7 @@ const ( var CreateTimers = timertable.CreateTimerTableSQL("mysql", "tidb_timers") // bootstrap initiates system DB for a store. -func bootstrap(s Session) { +func bootstrap(s sessiontypes.Session) { startTime := time.Now() err := InitMDLVariableForBootstrap(s.GetStore()) if err != nil { @@ -1045,7 +1046,7 @@ func DisableRunBootstrapSQLFileInTest() { } var ( - bootstrapVersion = []func(Session, int64){ + bootstrapVersion = []func(sessiontypes.Session, int64){ upgradeToVer2, upgradeToVer3, upgradeToVer4, @@ -1187,7 +1188,7 @@ var ( } ) -func checkBootstrapped(s Session) (bool, error) { +func checkBootstrapped(s sessiontypes.Session) (bool, error) { ctx := kv.WithInternalSourceType(context.Background(), kv.InternalTxnBootstrap) // Check if system db exists. _, err := s.ExecuteInternal(ctx, "USE %n", mysql.SystemDB) @@ -1215,7 +1216,7 @@ func checkBootstrapped(s Session) (bool, error) { // getTiDBVar gets variable value from mysql.tidb table. // Those variables are used by TiDB server. -func getTiDBVar(s Session, name string) (sVal string, isNull bool, e error) { +func getTiDBVar(s sessiontypes.Session, name string) (sVal string, isNull bool, e error) { ctx := kv.WithInternalSourceType(context.Background(), kv.InternalTxnBootstrap) rs, err := s.ExecuteInternal(ctx, `SELECT HIGH_PRIORITY VARIABLE_VALUE FROM %n.%n WHERE VARIABLE_NAME= %?`, mysql.SystemDB, @@ -1249,7 +1250,7 @@ var ( // upgrade function will do some upgrade works, when the system is bootstrapped by low version TiDB server // For example, add new system variables into mysql.global_variables table. -func upgrade(s Session) { +func upgrade(s sessiontypes.Session) { ver, err := getBootstrapVersion(s) terror.MustNil(err) if ver >= currentBootstrapVersion { @@ -1342,7 +1343,7 @@ func checkOwnerVersion(ctx context.Context, dom *domain.Domain) (bool, error) { } // upgradeToVer2 updates to version 2. -func upgradeToVer2(s Session, ver int64) { +func upgradeToVer2(s sessiontypes.Session, ver int64) { if ver >= version2 { return } @@ -1360,7 +1361,7 @@ func upgradeToVer2(s Session, ver int64) { } // upgradeToVer3 updates to version 3. -func upgradeToVer3(s Session, ver int64) { +func upgradeToVer3(s sessiontypes.Session, ver int64) { if ver >= version3 { return } @@ -1369,14 +1370,14 @@ func upgradeToVer3(s Session, ver int64) { } // upgradeToVer4 updates to version 4. -func upgradeToVer4(s Session, ver int64) { +func upgradeToVer4(s sessiontypes.Session, ver int64) { if ver >= version4 { return } mustExecute(s, CreateStatsMetaTable) } -func upgradeToVer5(s Session, ver int64) { +func upgradeToVer5(s sessiontypes.Session, ver int64) { if ver >= version5 { return } @@ -1384,7 +1385,7 @@ func upgradeToVer5(s Session, ver int64) { mustExecute(s, CreateStatsBucketsTable) } -func upgradeToVer6(s Session, ver int64) { +func upgradeToVer6(s sessiontypes.Session, ver int64) { if ver >= version6 { return } @@ -1393,7 +1394,7 @@ func upgradeToVer6(s Session, ver int64) { mustExecute(s, "UPDATE HIGH_PRIORITY mysql.user SET Super_priv='Y'") } -func upgradeToVer7(s Session, ver int64) { +func upgradeToVer7(s sessiontypes.Session, ver int64) { if ver >= version7 { return } @@ -1402,7 +1403,7 @@ func upgradeToVer7(s Session, ver int64) { mustExecute(s, "UPDATE HIGH_PRIORITY mysql.user SET Process_priv='Y'") } -func upgradeToVer8(s Session, ver int64) { +func upgradeToVer8(s sessiontypes.Session, ver int64) { if ver >= version8 { return } @@ -1414,7 +1415,7 @@ func upgradeToVer8(s Session, ver int64) { upgradeToVer7(s, ver) } -func upgradeToVer9(s Session, ver int64) { +func upgradeToVer9(s sessiontypes.Session, ver int64) { if ver >= version9 { return } @@ -1423,7 +1424,7 @@ func upgradeToVer9(s Session, ver int64) { mustExecute(s, "UPDATE HIGH_PRIORITY mysql.user SET Trigger_priv='Y'") } -func doReentrantDDL(s Session, sql string, ignorableErrs ...error) { +func doReentrantDDL(s sessiontypes.Session, sql string, ignorableErrs ...error) { ctx, cancel := context.WithTimeout(context.Background(), time.Duration(internalSQLTimeout)*time.Second) ctx = kv.WithInternalSourceType(ctx, kv.InternalTxnBootstrap) _, err := s.ExecuteInternal(ctx, sql) @@ -1438,7 +1439,7 @@ func doReentrantDDL(s Session, sql string, ignorableErrs ...error) { } } -func upgradeToVer10(s Session, ver int64) { +func upgradeToVer10(s sessiontypes.Session, ver int64) { if ver >= version10 { return } @@ -1449,7 +1450,7 @@ func upgradeToVer10(s Session, ver int64) { doReentrantDDL(s, "ALTER TABLE mysql.stats_histograms DROP COLUMN use_count_to_estimate", dbterror.ErrCantDropFieldOrKey) } -func upgradeToVer11(s Session, ver int64) { +func upgradeToVer11(s sessiontypes.Session, ver int64) { if ver >= version11 { return } @@ -1457,7 +1458,7 @@ func upgradeToVer11(s Session, ver int64) { mustExecute(s, "UPDATE HIGH_PRIORITY mysql.user SET References_priv='Y'") } -func upgradeToVer12(s Session, ver int64) { +func upgradeToVer12(s sessiontypes.Session, ver int64) { if ver >= version12 { return } @@ -1502,7 +1503,7 @@ func upgradeToVer12(s Session, ver int64) { mustExecute(s, "COMMIT") } -func upgradeToVer13(s Session, ver int64) { +func upgradeToVer13(s sessiontypes.Session, ver int64) { if ver >= version13 { return } @@ -1522,7 +1523,7 @@ func upgradeToVer13(s Session, ver int64) { mustExecute(s, "UPDATE HIGH_PRIORITY mysql.user SET Create_view_priv='Y',Show_view_priv='Y' WHERE Create_priv='Y'") } -func upgradeToVer14(s Session, ver int64) { +func upgradeToVer14(s sessiontypes.Session, ver int64) { if ver >= version14 { return } @@ -1542,35 +1543,35 @@ func upgradeToVer14(s Session, ver int64) { } } -func upgradeToVer15(s Session, ver int64) { +func upgradeToVer15(s sessiontypes.Session, ver int64) { if ver >= version15 { return } doReentrantDDL(s, CreateGCDeleteRangeTable) } -func upgradeToVer16(s Session, ver int64) { +func upgradeToVer16(s sessiontypes.Session, ver int64) { if ver >= version16 { return } doReentrantDDL(s, "ALTER TABLE mysql.stats_histograms ADD COLUMN `cm_sketch` BLOB", infoschema.ErrColumnExists) } -func upgradeToVer17(s Session, ver int64) { +func upgradeToVer17(s sessiontypes.Session, ver int64) { if ver >= version17 { return } doReentrantDDL(s, "ALTER TABLE mysql.user MODIFY User CHAR(32)") } -func upgradeToVer18(s Session, ver int64) { +func upgradeToVer18(s sessiontypes.Session, ver int64) { if ver >= version18 { return } doReentrantDDL(s, "ALTER TABLE mysql.stats_histograms ADD COLUMN `tot_col_size` BIGINT(64) NOT NULL DEFAULT 0", infoschema.ErrColumnExists) } -func upgradeToVer19(s Session, ver int64) { +func upgradeToVer19(s sessiontypes.Session, ver int64) { if ver >= version19 { return } @@ -1579,7 +1580,7 @@ func upgradeToVer19(s Session, ver int64) { doReentrantDDL(s, "ALTER TABLE mysql.columns_priv MODIFY User CHAR(32)") } -func upgradeToVer20(s Session, ver int64) { +func upgradeToVer20(s sessiontypes.Session, ver int64) { if ver >= version20 { return } @@ -1587,7 +1588,7 @@ func upgradeToVer20(s Session, ver int64) { doReentrantDDL(s, CreateStatsFeedbackTable) } -func upgradeToVer21(s Session, ver int64) { +func upgradeToVer21(s sessiontypes.Session, ver int64) { if ver >= version21 { return } @@ -1598,14 +1599,14 @@ func upgradeToVer21(s Session, ver int64) { doReentrantDDL(s, "ALTER TABLE mysql.gc_delete_range DROP INDEX element_id", dbterror.ErrCantDropFieldOrKey) } -func upgradeToVer22(s Session, ver int64) { +func upgradeToVer22(s sessiontypes.Session, ver int64) { if ver >= version22 { return } doReentrantDDL(s, "ALTER TABLE mysql.stats_histograms ADD COLUMN `stats_ver` BIGINT(64) NOT NULL DEFAULT 0", infoschema.ErrColumnExists) } -func upgradeToVer23(s Session, ver int64) { +func upgradeToVer23(s sessiontypes.Session, ver int64) { if ver >= version23 { return } @@ -1613,7 +1614,7 @@ func upgradeToVer23(s Session, ver int64) { } // writeSystemTZ writes system timezone info into mysql.tidb -func writeSystemTZ(s Session) { +func writeSystemTZ(s sessiontypes.Session) { mustExecute(s, `INSERT HIGH_PRIORITY INTO %n.%n VALUES (%?, %?, "TiDB Global System Timezone.") ON DUPLICATE KEY UPDATE VARIABLE_VALUE= %?`, mysql.SystemDB, mysql.TiDBTable, @@ -1624,7 +1625,7 @@ func writeSystemTZ(s Session) { } // upgradeToVer24 initializes `System` timezone according to docs/design/2018-09-10-adding-tz-env.md -func upgradeToVer24(s Session, ver int64) { +func upgradeToVer24(s sessiontypes.Session, ver int64) { if ver >= version24 { return } @@ -1632,7 +1633,7 @@ func upgradeToVer24(s Session, ver int64) { } // upgradeToVer25 updates tidb_max_chunk_size to new low bound value 32 if previous value is small than 32. -func upgradeToVer25(s Session, ver int64) { +func upgradeToVer25(s sessiontypes.Session, ver int64) { if ver >= version25 { return } @@ -1641,7 +1642,7 @@ func upgradeToVer25(s Session, ver int64) { mustExecute(s, sql) } -func upgradeToVer26(s Session, ver int64) { +func upgradeToVer26(s sessiontypes.Session, ver int64) { if ver >= version26 { return } @@ -1656,21 +1657,21 @@ func upgradeToVer26(s Session, ver int64) { mustExecute(s, "UPDATE HIGH_PRIORITY mysql.user SET Create_view_priv='Y',Show_view_priv='Y' WHERE Create_priv='Y'") } -func upgradeToVer27(s Session, ver int64) { +func upgradeToVer27(s sessiontypes.Session, ver int64) { if ver >= version27 { return } doReentrantDDL(s, "ALTER TABLE mysql.stats_histograms ADD COLUMN `correlation` DOUBLE NOT NULL DEFAULT 0", infoschema.ErrColumnExists) } -func upgradeToVer28(s Session, ver int64) { +func upgradeToVer28(s sessiontypes.Session, ver int64) { if ver >= version28 { return } doReentrantDDL(s, CreateBindInfoTable) } -func upgradeToVer29(s Session, ver int64) { +func upgradeToVer29(s sessiontypes.Session, ver int64) { // upgradeToVer29 only need to be run when the current version is 28. if ver != version28 { return @@ -1680,42 +1681,42 @@ func upgradeToVer29(s Session, ver int64) { doReentrantDDL(s, "ALTER TABLE mysql.bind_info ADD INDEX sql_index (original_sql(1024),default_db(1024))", dbterror.ErrDupKeyName) } -func upgradeToVer30(s Session, ver int64) { +func upgradeToVer30(s sessiontypes.Session, ver int64) { if ver >= version30 { return } mustExecute(s, CreateStatsTopNTable) } -func upgradeToVer31(s Session, ver int64) { +func upgradeToVer31(s sessiontypes.Session, ver int64) { if ver >= version31 { return } doReentrantDDL(s, "ALTER TABLE mysql.stats_histograms ADD COLUMN `last_analyze_pos` BLOB DEFAULT NULL", infoschema.ErrColumnExists) } -func upgradeToVer32(s Session, ver int64) { +func upgradeToVer32(s sessiontypes.Session, ver int64) { if ver >= version32 { return } doReentrantDDL(s, "ALTER TABLE mysql.tables_priv MODIFY table_priv SET('Select','Insert','Update','Delete','Create','Drop','Grant', 'Index', 'Alter', 'Create View', 'Show View', 'Trigger', 'References')") } -func upgradeToVer33(s Session, ver int64) { +func upgradeToVer33(s sessiontypes.Session, ver int64) { if ver >= version33 { return } doReentrantDDL(s, CreateExprPushdownBlacklist) } -func upgradeToVer34(s Session, ver int64) { +func upgradeToVer34(s sessiontypes.Session, ver int64) { if ver >= version34 { return } doReentrantDDL(s, CreateOptRuleBlacklist) } -func upgradeToVer35(s Session, ver int64) { +func upgradeToVer35(s sessiontypes.Session, ver int64) { if ver >= version35 { return } @@ -1724,7 +1725,7 @@ func upgradeToVer35(s Session, ver int64) { mustExecute(s, sql) } -func upgradeToVer36(s Session, ver int64) { +func upgradeToVer36(s sessiontypes.Session, ver int64) { if ver >= version36 { return } @@ -1734,7 +1735,7 @@ func upgradeToVer36(s Session, ver int64) { mustExecute(s, "UPDATE HIGH_PRIORITY mysql.user SET Create_tmp_table_priv='Y',Lock_tables_priv='Y',Create_routine_priv='Y',Alter_routine_priv='Y',Event_priv='Y' WHERE Super_priv='Y'") } -func upgradeToVer37(s Session, ver int64) { +func upgradeToVer37(s sessiontypes.Session, ver int64) { if ver >= version37 { return } @@ -1744,14 +1745,14 @@ func upgradeToVer37(s Session, ver int64) { mustExecute(s, sql) } -func upgradeToVer38(s Session, ver int64) { +func upgradeToVer38(s sessiontypes.Session, ver int64) { if ver >= version38 { return } doReentrantDDL(s, CreateGlobalPrivTable) } -func writeNewCollationParameter(s Session, flag bool) { +func writeNewCollationParameter(s sessiontypes.Session, flag bool) { comment := "If the new collations are enabled. Do not edit it." b := varFalse if flag { @@ -1762,7 +1763,7 @@ func writeNewCollationParameter(s Session, flag bool) { ) } -func upgradeToVer40(s Session, ver int64) { +func upgradeToVer40(s sessiontypes.Session, ver int64) { if ver >= version40 { return } @@ -1770,7 +1771,7 @@ func upgradeToVer40(s Session, ver int64) { writeNewCollationParameter(s, false) } -func upgradeToVer41(s Session, ver int64) { +func upgradeToVer41(s sessiontypes.Session, ver int64) { if ver >= version41 { return } @@ -1779,12 +1780,12 @@ func upgradeToVer41(s Session, ver int64) { } // writeDefaultExprPushDownBlacklist writes default expr pushdown blacklist into mysql.expr_pushdown_blacklist -func writeDefaultExprPushDownBlacklist(s Session) { +func writeDefaultExprPushDownBlacklist(s sessiontypes.Session) { mustExecute(s, "INSERT HIGH_PRIORITY INTO mysql.expr_pushdown_blacklist VALUES"+ "('date_add','tiflash', 'DST(daylight saving time) does not take effect in TiFlash date_add')") } -func upgradeToVer42(s Session, ver int64) { +func upgradeToVer42(s sessiontypes.Session, ver int64) { if ver >= version42 { return } @@ -1794,7 +1795,7 @@ func upgradeToVer42(s Session, ver int64) { } // Convert statement summary global variables to non-empty values. -func writeStmtSummaryVars(s Session) { +func writeStmtSummaryVars(s sessiontypes.Session) { sql := "UPDATE %n.%n SET variable_value= %? WHERE variable_name= %? AND variable_value=''" mustExecute(s, sql, mysql.SystemDB, mysql.GlobalVariablesTable, variable.BoolToOnOff(variable.DefTiDBEnableStmtSummary), variable.TiDBEnableStmtSummary) mustExecute(s, sql, mysql.SystemDB, mysql.GlobalVariablesTable, variable.BoolToOnOff(variable.DefTiDBStmtSummaryInternalQuery), variable.TiDBStmtSummaryInternalQuery) @@ -1804,21 +1805,21 @@ func writeStmtSummaryVars(s Session) { mustExecute(s, sql, mysql.SystemDB, mysql.GlobalVariablesTable, strconv.FormatUint(uint64(variable.DefTiDBStmtSummaryMaxSQLLength), 10), variable.TiDBStmtSummaryMaxSQLLength) } -func upgradeToVer43(s Session, ver int64) { +func upgradeToVer43(s sessiontypes.Session, ver int64) { if ver >= version43 { return } writeStmtSummaryVars(s) } -func upgradeToVer44(s Session, ver int64) { +func upgradeToVer44(s sessiontypes.Session, ver int64) { if ver >= version44 { return } mustExecute(s, "DELETE FROM mysql.global_variables where variable_name = \"tidb_isolation_read_engines\"") } -func upgradeToVer45(s Session, ver int64) { +func upgradeToVer45(s sessiontypes.Session, ver int64) { if ver >= version45 { return } @@ -1828,7 +1829,7 @@ func upgradeToVer45(s Session, ver int64) { // In v3.1.1, we wrongly replace the context of upgradeToVer39 with upgradeToVer44. If we upgrade from v3.1.1 to a newer version, // upgradeToVer39 will be missed. So we redo upgradeToVer39 here to make sure the upgrading from v3.1.1 succeed. -func upgradeToVer46(s Session, ver int64) { +func upgradeToVer46(s sessiontypes.Session, ver int64) { if ver >= version46 { return } @@ -1838,28 +1839,28 @@ func upgradeToVer46(s Session, ver int64) { mustExecute(s, "UPDATE HIGH_PRIORITY mysql.user SET File_priv='Y' WHERE Super_priv='Y'") } -func upgradeToVer47(s Session, ver int64) { +func upgradeToVer47(s sessiontypes.Session, ver int64) { if ver >= version47 { return } doReentrantDDL(s, "ALTER TABLE mysql.bind_info ADD COLUMN `source` varchar(10) NOT NULL default 'unknown'", infoschema.ErrColumnExists) } -func upgradeToVer50(s Session, ver int64) { +func upgradeToVer50(s sessiontypes.Session, ver int64) { if ver >= version50 { return } doReentrantDDL(s, CreateSchemaIndexUsageTable) } -func upgradeToVer52(s Session, ver int64) { +func upgradeToVer52(s sessiontypes.Session, ver int64) { if ver >= version52 { return } doReentrantDDL(s, "ALTER TABLE mysql.stats_histograms MODIFY cm_sketch BLOB(6291456)") } -func upgradeToVer53(s Session, ver int64) { +func upgradeToVer53(s sessiontypes.Session, ver int64) { if ver >= version53 { return } @@ -1869,7 +1870,7 @@ func upgradeToVer53(s Session, ver int64) { mustExecute(s, sql) } -func upgradeToVer54(s Session, ver int64) { +func upgradeToVer54(s sessiontypes.Session, ver int64) { if ver >= version54 { return } @@ -1894,7 +1895,7 @@ func upgradeToVer54(s Session, ver int64) { // When cherry-pick upgradeToVer52 to v4.0, we wrongly name it upgradeToVer48. // If we upgrade from v4.0 to a newer version, the real upgradeToVer48 will be missed. // So we redo upgradeToVer48 here to make sure the upgrading from v4.0 succeeds. -func upgradeToVer55(s Session, ver int64) { +func upgradeToVer55(s sessiontypes.Session, ver int64) { if ver >= version55 { return } @@ -1944,33 +1945,33 @@ func upgradeToVer55(s Session, ver int64) { // When cherry-pick upgradeToVer54 to v4.0, we wrongly name it upgradeToVer49. // If we upgrade from v4.0 to a newer version, the real upgradeToVer49 will be missed. // So we redo upgradeToVer49 here to make sure the upgrading from v4.0 succeeds. -func upgradeToVer56(s Session, ver int64) { +func upgradeToVer56(s sessiontypes.Session, ver int64) { if ver >= version56 { return } doReentrantDDL(s, CreateStatsExtended) } -func upgradeToVer57(s Session, ver int64) { +func upgradeToVer57(s sessiontypes.Session, ver int64) { if ver >= version57 { return } insertBuiltinBindInfoRow(s) } -func initBindInfoTable(s Session) { +func initBindInfoTable(s sessiontypes.Session) { mustExecute(s, CreateBindInfoTable) insertBuiltinBindInfoRow(s) } -func insertBuiltinBindInfoRow(s Session) { +func insertBuiltinBindInfoRow(s sessiontypes.Session) { mustExecute(s, `INSERT HIGH_PRIORITY INTO mysql.bind_info(original_sql, bind_sql, default_db, status, create_time, update_time, charset, collation, source) VALUES (%?, %?, "mysql", %?, "0000-00-00 00:00:00", "0000-00-00 00:00:00", "", "", %?)`, bindinfo.BuiltinPseudoSQL4BindLock, bindinfo.BuiltinPseudoSQL4BindLock, bindinfo.Builtin, bindinfo.Builtin, ) } -func upgradeToVer59(s Session, ver int64) { +func upgradeToVer59(s sessiontypes.Session, ver int64) { if ver >= version59 { return } @@ -1985,7 +1986,7 @@ func upgradeToVer59(s Session, ver int64) { writeOOMAction(s) } -func upgradeToVer60(s Session, ver int64) { +func upgradeToVer60(s sessiontypes.Session, ver int64) { if ver >= version60 { return } @@ -2002,7 +2003,7 @@ type bindInfo struct { source string } -func upgradeToVer67(s Session, ver int64) { +func upgradeToVer67(s sessiontypes.Session, ver int64) { if ver >= version67 { return } @@ -2098,21 +2099,21 @@ func updateBindInfo(iter *chunk.Iterator4Chunk, p *parser.Parser, bindMap map[st } } -func writeMemoryQuotaQuery(s Session) { +func writeMemoryQuotaQuery(s sessiontypes.Session) { comment := "memory_quota_query is 32GB by default in v3.0.x, 1GB by default in v4.0.x+" mustExecute(s, `INSERT HIGH_PRIORITY INTO %n.%n VALUES (%?, %?, %?) ON DUPLICATE KEY UPDATE VARIABLE_VALUE=%?`, mysql.SystemDB, mysql.TiDBTable, tidbDefMemoryQuotaQuery, 32<<30, comment, 32<<30, ) } -func upgradeToVer62(s Session, ver int64) { +func upgradeToVer62(s sessiontypes.Session, ver int64) { if ver >= version62 { return } doReentrantDDL(s, "ALTER TABLE mysql.stats_buckets ADD COLUMN `ndv` bigint not null default 0", infoschema.ErrColumnExists) } -func upgradeToVer63(s Session, ver int64) { +func upgradeToVer63(s sessiontypes.Session, ver int64) { if ver >= version63 { return } @@ -2120,7 +2121,7 @@ func upgradeToVer63(s Session, ver int64) { mustExecute(s, "UPDATE HIGH_PRIORITY mysql.user SET Create_tablespace_priv='Y' where Super_priv='Y'") } -func upgradeToVer64(s Session, ver int64) { +func upgradeToVer64(s sessiontypes.Session, ver int64) { if ver >= version64 { return } @@ -2129,35 +2130,35 @@ func upgradeToVer64(s Session, ver int64) { mustExecute(s, "UPDATE HIGH_PRIORITY mysql.user SET Repl_slave_priv='Y',Repl_client_priv='Y' where Super_priv='Y'") } -func upgradeToVer65(s Session, ver int64) { +func upgradeToVer65(s sessiontypes.Session, ver int64) { if ver >= version65 { return } doReentrantDDL(s, CreateStatsFMSketchTable) } -func upgradeToVer66(s Session, ver int64) { +func upgradeToVer66(s sessiontypes.Session, ver int64) { if ver >= version66 { return } mustExecute(s, "set @@global.tidb_track_aggregate_memory_usage = 1") } -func upgradeToVer68(s Session, ver int64) { +func upgradeToVer68(s sessiontypes.Session, ver int64) { if ver >= version68 { return } mustExecute(s, "DELETE FROM mysql.global_variables where VARIABLE_NAME = 'tidb_enable_clustered_index' and VARIABLE_VALUE = 'OFF'") } -func upgradeToVer69(s Session, ver int64) { +func upgradeToVer69(s sessiontypes.Session, ver int64) { if ver >= version69 { return } doReentrantDDL(s, CreateGlobalGrantsTable) } -func upgradeToVer70(s Session, ver int64) { +func upgradeToVer70(s sessiontypes.Session, ver int64) { if ver >= version70 { return } @@ -2165,28 +2166,28 @@ func upgradeToVer70(s Session, ver int64) { mustExecute(s, "UPDATE HIGH_PRIORITY mysql.user SET plugin='mysql_native_password'") } -func upgradeToVer71(s Session, ver int64) { +func upgradeToVer71(s sessiontypes.Session, ver int64) { if ver >= version71 { return } mustExecute(s, "UPDATE mysql.global_variables SET VARIABLE_VALUE='OFF' WHERE VARIABLE_NAME = 'tidb_multi_statement_mode' AND VARIABLE_VALUE = 'WARN'") } -func upgradeToVer72(s Session, ver int64) { +func upgradeToVer72(s sessiontypes.Session, ver int64) { if ver >= version72 { return } doReentrantDDL(s, "ALTER TABLE mysql.stats_meta ADD COLUMN snapshot BIGINT(64) UNSIGNED NOT NULL DEFAULT 0", infoschema.ErrColumnExists) } -func upgradeToVer73(s Session, ver int64) { +func upgradeToVer73(s sessiontypes.Session, ver int64) { if ver >= version73 { return } doReentrantDDL(s, CreateCapturePlanBaselinesBlacklist) } -func upgradeToVer74(s Session, ver int64) { +func upgradeToVer74(s sessiontypes.Session, ver int64) { if ver >= version74 { return } @@ -2194,7 +2195,7 @@ func upgradeToVer74(s Session, ver int64) { mustExecute(s, fmt.Sprintf("UPDATE mysql.global_variables SET VARIABLE_VALUE='%[1]v' WHERE VARIABLE_NAME = 'tidb_stmt_summary_max_stmt_count' AND CAST(VARIABLE_VALUE AS SIGNED) = 200", variable.DefTiDBStmtSummaryMaxStmtCount)) } -func upgradeToVer75(s Session, ver int64) { +func upgradeToVer75(s sessiontypes.Session, ver int64) { if ver >= version75 { return } @@ -2205,21 +2206,21 @@ func upgradeToVer75(s Session, ver int64) { doReentrantDDL(s, "ALTER TABLE mysql.columns_priv MODIFY COLUMN Host CHAR(255)") } -func upgradeToVer76(s Session, ver int64) { +func upgradeToVer76(s sessiontypes.Session, ver int64) { if ver >= version76 { return } doReentrantDDL(s, "ALTER TABLE mysql.columns_priv MODIFY COLUMN Column_priv SET('Select','Insert','Update','References')") } -func upgradeToVer77(s Session, ver int64) { +func upgradeToVer77(s sessiontypes.Session, ver int64) { if ver >= version77 { return } doReentrantDDL(s, CreateColumnStatsUsageTable) } -func upgradeToVer78(s Session, ver int64) { +func upgradeToVer78(s sessiontypes.Session, ver int64) { if ver >= version78 { return } @@ -2228,14 +2229,14 @@ func upgradeToVer78(s Session, ver int64) { doReentrantDDL(s, "ALTER TABLE mysql.stats_histograms MODIFY last_analyze_pos LONGBLOB DEFAULT NULL") } -func upgradeToVer79(s Session, ver int64) { +func upgradeToVer79(s sessiontypes.Session, ver int64) { if ver >= version79 { return } doReentrantDDL(s, CreateTableCacheMetaTable) } -func upgradeToVer80(s Session, ver int64) { +func upgradeToVer80(s sessiontypes.Session, ver int64) { if ver >= version80 { return } @@ -2258,7 +2259,7 @@ func upgradeToVer80(s Session, ver int64) { // For users that upgrade TiDB from a pre-4.0 version, we want to disable index merge by default. // This helps minimize query plan regressions. -func upgradeToVer81(s Session, ver int64) { +func upgradeToVer81(s sessiontypes.Session, ver int64) { if ver >= version81 { return } @@ -2279,49 +2280,49 @@ func upgradeToVer81(s Session, ver int64) { mysql.SystemDB, mysql.GlobalVariablesTable, variable.TiDBEnableIndexMerge, variable.Off) } -func upgradeToVer82(s Session, ver int64) { +func upgradeToVer82(s sessiontypes.Session, ver int64) { if ver >= version82 { return } doReentrantDDL(s, CreateAnalyzeOptionsTable) } -func upgradeToVer83(s Session, ver int64) { +func upgradeToVer83(s sessiontypes.Session, ver int64) { if ver >= version83 { return } doReentrantDDL(s, CreateStatsHistory) } -func upgradeToVer84(s Session, ver int64) { +func upgradeToVer84(s sessiontypes.Session, ver int64) { if ver >= version84 { return } doReentrantDDL(s, CreateStatsMetaHistory) } -func upgradeToVer85(s Session, ver int64) { +func upgradeToVer85(s sessiontypes.Session, ver int64) { if ver >= version85 { return } mustExecute(s, fmt.Sprintf("UPDATE HIGH_PRIORITY mysql.bind_info SET status= '%s' WHERE status = '%s'", bindinfo.Enabled, bindinfo.Using)) } -func upgradeToVer86(s Session, ver int64) { +func upgradeToVer86(s sessiontypes.Session, ver int64) { if ver >= version86 { return } doReentrantDDL(s, "ALTER TABLE mysql.tables_priv MODIFY COLUMN Column_priv SET('Select','Insert','Update','References')") } -func upgradeToVer87(s Session, ver int64) { +func upgradeToVer87(s sessiontypes.Session, ver int64) { if ver >= version87 { return } doReentrantDDL(s, CreateAnalyzeJobs) } -func upgradeToVer88(s Session, ver int64) { +func upgradeToVer88(s sessiontypes.Session, ver int64) { if ver >= version88 { return } @@ -2329,7 +2330,7 @@ func upgradeToVer88(s Session, ver int64) { doReentrantDDL(s, "ALTER TABLE mysql.user CHANGE `Repl_client_priv` `Repl_client_priv` ENUM('N','Y') NOT NULL DEFAULT 'N' AFTER `Repl_slave_priv`") } -func upgradeToVer89(s Session, ver int64) { +func upgradeToVer89(s sessiontypes.Session, ver int64) { if ver >= version89 { return } @@ -2342,7 +2343,7 @@ func upgradeToVer89(s Session, ver int64) { // (not guaranteed to be the same on all servers), and writes a message // to the error log. The message is important since the behavior is weird // (changes to the config file will no longer take effect past this point). -func importConfigOption(s Session, configName, svName, valStr string) { +func importConfigOption(s sessiontypes.Session, configName, svName, valStr string) { message := fmt.Sprintf("%s is now configured by the system variable %s. One-time importing the value specified in tidb.toml file", configName, svName) logutil.BgLogger().Warn(message, zap.String("value", valStr)) // We use insert ignore, since if its a duplicate we don't want to overwrite any user-set values. @@ -2351,7 +2352,7 @@ func importConfigOption(s Session, configName, svName, valStr string) { mustExecute(s, sql) } -func upgradeToVer90(s Session, ver int64) { +func upgradeToVer90(s sessiontypes.Session, ver int64) { if ver >= version90 { return } @@ -2369,7 +2370,7 @@ func upgradeToVer90(s Session, ver int64) { importConfigOption(s, "oom-action", variable.TiDBMemOOMAction, valStr) } -func upgradeToVer91(s Session, ver int64) { +func upgradeToVer91(s sessiontypes.Session, ver int64) { if ver >= version91 { return } @@ -2383,7 +2384,7 @@ func upgradeToVer91(s Session, ver int64) { importConfigOption(s, "prepared-plan-cache.memory-guard-ratio", variable.TiDBPrepPlanCacheMemoryGuardRatio, valStr) } -func upgradeToVer93(s Session, ver int64) { +func upgradeToVer93(s sessiontypes.Session, ver int64) { if ver >= version93 { return } @@ -2391,21 +2392,21 @@ func upgradeToVer93(s Session, ver int64) { importConfigOption(s, "oom-use-tmp-storage", variable.TiDBEnableTmpStorageOnOOM, valStr) } -func upgradeToVer94(s Session, ver int64) { +func upgradeToVer94(s sessiontypes.Session, ver int64) { if ver >= version94 { return } mustExecute(s, CreateMDLView) } -func upgradeToVer95(s Session, ver int64) { +func upgradeToVer95(s sessiontypes.Session, ver int64) { if ver >= version95 { return } doReentrantDDL(s, "ALTER TABLE mysql.user ADD COLUMN IF NOT EXISTS `User_attributes` JSON") } -func upgradeToVer97(s Session, ver int64) { +func upgradeToVer97(s sessiontypes.Session, ver int64) { if ver >= version97 { return } @@ -2426,19 +2427,19 @@ func upgradeToVer97(s Session, ver int64) { mysql.SystemDB, mysql.GlobalVariablesTable, variable.TiDBOptRangeMaxSize, 0) } -func upgradeToVer98(s Session, ver int64) { +func upgradeToVer98(s sessiontypes.Session, ver int64) { if ver >= version98 { return } doReentrantDDL(s, "ALTER TABLE mysql.user ADD COLUMN IF NOT EXISTS `Token_issuer` varchar(255)") } -func upgradeToVer99Before(s Session) { +func upgradeToVer99Before(s sessiontypes.Session) { mustExecute(s, "INSERT HIGH_PRIORITY IGNORE INTO %n.%n VALUES (%?, %?);", mysql.SystemDB, mysql.GlobalVariablesTable, variable.TiDBEnableMDL, 0) } -func upgradeToVer99After(s Session) { +func upgradeToVer99After(s sessiontypes.Session) { sql := fmt.Sprintf("UPDATE HIGH_PRIORITY %[1]s.%[2]s SET VARIABLE_VALUE = %[4]d WHERE VARIABLE_NAME = '%[3]s'", mysql.SystemDB, mysql.GlobalVariablesTable, variable.TiDBEnableMDL, 1) mustExecute(s, sql) @@ -2449,7 +2450,7 @@ func upgradeToVer99After(s Session) { terror.MustNil(err) } -func upgradeToVer100(s Session, ver int64) { +func upgradeToVer100(s sessiontypes.Session, ver int64) { if ver >= version100 { return } @@ -2457,28 +2458,28 @@ func upgradeToVer100(s Session, ver int64) { importConfigOption(s, "performance.server-memory-quota", variable.TiDBServerMemoryLimit, valStr) } -func upgradeToVer101(s Session, ver int64) { +func upgradeToVer101(s sessiontypes.Session, ver int64) { if ver >= version101 { return } doReentrantDDL(s, CreatePlanReplayerStatusTable) } -func upgradeToVer102(s Session, ver int64) { +func upgradeToVer102(s sessiontypes.Session, ver int64) { if ver >= version102 { return } doReentrantDDL(s, CreatePlanReplayerTaskTable) } -func upgradeToVer103(s Session, ver int64) { +func upgradeToVer103(s sessiontypes.Session, ver int64) { if ver >= version103 { return } doReentrantDDL(s, CreateStatsTableLocked) } -func upgradeToVer104(s Session, ver int64) { +func upgradeToVer104(s sessiontypes.Session, ver int64) { if ver >= version104 { return } @@ -2488,7 +2489,7 @@ func upgradeToVer104(s Session, ver int64) { } // For users that upgrade TiDB from a pre-6.0 version, we want to disable tidb cost model2 by default to keep plans unchanged. -func upgradeToVer105(s Session, ver int64) { +func upgradeToVer105(s sessiontypes.Session, ver int64) { if ver >= version105 { return } @@ -2507,7 +2508,7 @@ func upgradeToVer105(s Session, ver int64) { mysql.SystemDB, mysql.GlobalVariablesTable, variable.TiDBCostModelVersion, "1") } -func upgradeToVer106(s Session, ver int64) { +func upgradeToVer106(s sessiontypes.Session, ver int64) { if ver >= version106 { return } @@ -2516,7 +2517,7 @@ func upgradeToVer106(s Session, ver int64) { doReentrantDDL(s, "Alter table mysql.user add COLUMN IF NOT EXISTS `Password_reuse_time` smallint unsigned DEFAULT NULL AFTER `Password_reuse_history`") } -func upgradeToVer107(s Session, ver int64) { +func upgradeToVer107(s sessiontypes.Session, ver int64) { if ver >= version107 { return } @@ -2525,7 +2526,7 @@ func upgradeToVer107(s Session, ver int64) { doReentrantDDL(s, "ALTER TABLE mysql.user ADD COLUMN IF NOT EXISTS `Password_lifetime` SMALLINT UNSIGNED DEFAULT NULL") } -func upgradeToVer108(s Session, ver int64) { +func upgradeToVer108(s sessiontypes.Session, ver int64) { if ver >= version108 { return } @@ -2533,7 +2534,7 @@ func upgradeToVer108(s Session, ver int64) { } // For users that upgrade TiDB from a 6.2-6.4 version, we want to disable tidb gc_aware_memory_track by default. -func upgradeToVer109(s Session, ver int64) { +func upgradeToVer109(s sessiontypes.Session, ver int64) { if ver >= version109 { return } @@ -2542,7 +2543,7 @@ func upgradeToVer109(s Session, ver int64) { } // For users that upgrade TiDB from a 5.4-6.4 version, we want to enable tidb tidb_stats_load_pseudo_timeout by default. -func upgradeToVer110(s Session, ver int64) { +func upgradeToVer110(s sessiontypes.Session, ver int64) { if ver >= version110 { return } @@ -2550,14 +2551,14 @@ func upgradeToVer110(s Session, ver int64) { mysql.SystemDB, mysql.GlobalVariablesTable, variable.TiDBStatsLoadPseudoTimeout, 1) } -func upgradeToVer130(s Session, ver int64) { +func upgradeToVer130(s sessiontypes.Session, ver int64) { if ver >= version130 { return } doReentrantDDL(s, "ALTER TABLE mysql.stats_meta_history ADD COLUMN IF NOT EXISTS `source` varchar(40) NOT NULL after `version`;") } -func upgradeToVer131(s Session, ver int64) { +func upgradeToVer131(s sessiontypes.Session, ver int64) { if ver >= version131 { return } @@ -2565,14 +2566,14 @@ func upgradeToVer131(s Session, ver int64) { doReentrantDDL(s, CreateTTLJobHistory) } -func upgradeToVer132(s Session, ver int64) { +func upgradeToVer132(s sessiontypes.Session, ver int64) { if ver >= version132 { return } doReentrantDDL(s, CreateMDLView) } -func upgradeToVer133(s Session, ver int64) { +func upgradeToVer133(s sessiontypes.Session, ver int64) { if ver >= version133 { return } @@ -2580,7 +2581,7 @@ func upgradeToVer133(s Session, ver int64) { mysql.SystemDB, mysql.GlobalVariablesTable, variable.DefTiDBServerMemoryLimit, variable.TiDBServerMemoryLimit, "0") } -func upgradeToVer134(s Session, ver int64) { +func upgradeToVer134(s sessiontypes.Session, ver int64) { if ver >= version134 { return } @@ -2592,7 +2593,7 @@ func upgradeToVer134(s Session, ver int64) { } // For users that upgrade TiDB from a pre-7.0 version, we want to set tidb_opt_advanced_join_hint to off by default to keep plans unchanged. -func upgradeToVer135(s Session, ver int64) { +func upgradeToVer135(s sessiontypes.Session, ver int64) { if ver >= version135 { return } @@ -2612,7 +2613,7 @@ func upgradeToVer135(s Session, ver int64) { mysql.SystemDB, mysql.GlobalVariablesTable, variable.TiDBOptAdvancedJoinHint, false) } -func upgradeToVer136(s Session, ver int64) { +func upgradeToVer136(s sessiontypes.Session, ver int64) { if ver >= version136 { return } @@ -2621,26 +2622,26 @@ func upgradeToVer136(s Session, ver int64) { doReentrantDDL(s, "ALTER TABLE mysql.tidb_background_subtask ADD INDEX idx_task_key(task_key)", dbterror.ErrDupKeyName) } -func upgradeToVer137(_ Session, _ int64) { +func upgradeToVer137(_ sessiontypes.Session, _ int64) { // NOOP, we don't depend on ddl to init the default group due to backward compatible issue. } // For users that upgrade TiDB from a version below 7.0, we want to enable tidb tidb_enable_null_aware_anti_join by default. -func upgradeToVer138(s Session, ver int64) { +func upgradeToVer138(s sessiontypes.Session, ver int64) { if ver >= version138 { return } mustExecute(s, "REPLACE HIGH_PRIORITY INTO %n.%n VALUES (%?, %?);", mysql.SystemDB, mysql.GlobalVariablesTable, variable.TiDBOptimizerEnableNAAJ, variable.On) } -func upgradeToVer139(s Session, ver int64) { +func upgradeToVer139(s sessiontypes.Session, ver int64) { if ver >= version139 { return } mustExecute(s, CreateLoadDataJobs) } -func upgradeToVer140(s Session, ver int64) { +func upgradeToVer140(s sessiontypes.Session, ver int64) { if ver >= version140 { return } @@ -2650,7 +2651,7 @@ func upgradeToVer140(s Session, ver int64) { // upgradeToVer141 sets the value of `tidb_session_plan_cache_size` as `tidb_prepared_plan_cache_size` for compatibility, // and update tidb_load_based_replica_read_threshold from 0 to 4. -func upgradeToVer141(s Session, ver int64) { +func upgradeToVer141(s sessiontypes.Session, ver int64) { if ver >= version141 { return } @@ -2674,7 +2675,7 @@ func upgradeToVer141(s Session, ver int64) { mustExecute(s, "REPLACE HIGH_PRIORITY INTO %n.%n VALUES (%?, %?);", mysql.SystemDB, mysql.GlobalVariablesTable, variable.TiDBLoadBasedReplicaReadThreshold, variable.DefTiDBLoadBasedReplicaReadThreshold.String()) } -func upgradeToVer142(s Session, ver int64) { +func upgradeToVer142(s sessiontypes.Session, ver int64) { if ver >= version142 { return } @@ -2693,7 +2694,7 @@ func upgradeToVer142(s Session, ver int64) { mysql.SystemDB, mysql.GlobalVariablesTable, variable.TiDBEnableNonPreparedPlanCache, variable.Off) } -func upgradeToVer143(s Session, ver int64) { +func upgradeToVer143(s sessiontypes.Session, ver int64) { if ver >= version143 { return } @@ -2701,7 +2702,7 @@ func upgradeToVer143(s Session, ver int64) { doReentrantDDL(s, "ALTER TABLE mysql.tidb_background_subtask ADD COLUMN `error` BLOB", infoschema.ErrColumnExists) } -func upgradeToVer144(s Session, ver int64) { +func upgradeToVer144(s sessiontypes.Session, ver int64) { if ver >= version144 { return } @@ -2720,7 +2721,7 @@ func upgradeToVer144(s Session, ver int64) { mysql.SystemDB, mysql.GlobalVariablesTable, variable.TiDBPlanCacheInvalidationOnFreshStats, variable.Off) } -func upgradeToVer146(s Session, ver int64) { +func upgradeToVer146(s sessiontypes.Session, ver int64) { if ver >= version146 { return } @@ -2728,42 +2729,42 @@ func upgradeToVer146(s Session, ver int64) { doReentrantDDL(s, "ALTER TABLE mysql.stats_history ADD INDEX idx_create_time (create_time)", dbterror.ErrDupKeyName) } -func upgradeToVer167(s Session, ver int64) { +func upgradeToVer167(s sessiontypes.Session, ver int64) { if ver >= version167 { return } doReentrantDDL(s, "ALTER TABLE mysql.tidb_background_subtask ADD COLUMN `step` INT AFTER `id`", infoschema.ErrColumnExists) } -func upgradeToVer168(s Session, ver int64) { +func upgradeToVer168(s sessiontypes.Session, ver int64) { if ver >= version168 { return } mustExecute(s, CreateImportJobs) } -func upgradeToVer169(s Session, ver int64) { +func upgradeToVer169(s sessiontypes.Session, ver int64) { if ver >= version169 { return } mustExecute(s, CreateRunawayTable) } -func upgradeToVer170(s Session, ver int64) { +func upgradeToVer170(s sessiontypes.Session, ver int64) { if ver >= version170 { return } mustExecute(s, CreateTimers) } -func upgradeToVer171(s Session, ver int64) { +func upgradeToVer171(s sessiontypes.Session, ver int64) { if ver >= version171 { return } mustExecute(s, "ALTER TABLE mysql.tidb_runaway_queries CHANGE COLUMN `tidb_server` `tidb_server` varchar(512)") } -func upgradeToVer172(s Session, ver int64) { +func upgradeToVer172(s sessiontypes.Session, ver int64) { if ver >= version172 { return } @@ -2772,14 +2773,14 @@ func upgradeToVer172(s Session, ver int64) { mustExecute(s, CreateDoneRunawayWatchTable) } -func upgradeToVer173(s Session, ver int64) { +func upgradeToVer173(s sessiontypes.Session, ver int64) { if ver >= version173 { return } doReentrantDDL(s, "ALTER TABLE mysql.tidb_background_subtask ADD COLUMN `summary` JSON", infoschema.ErrColumnExists) } -func upgradeToVer174(s Session, ver int64) { +func upgradeToVer174(s sessiontypes.Session, ver int64) { if ver >= version174 { return } @@ -2794,7 +2795,7 @@ func upgradeToVer174(s Session, ver int64) { // the issue #44298 that bindings for `in (?)` can't work for `in (?, ?, ?)`. // After this update, multiple bindings may have the same `original_sql`, but it's OK, and // for safety, don't remove duplicated bindings when upgrading. -func upgradeToVer175(s Session, ver int64) { +func upgradeToVer175(s sessiontypes.Session, ver int64) { if ver >= version175 { return } @@ -2840,14 +2841,14 @@ func upgradeToVer175(s Session, ver int64) { } } -func upgradeToVer176(s Session, ver int64) { +func upgradeToVer176(s sessiontypes.Session, ver int64) { if ver >= version176 { return } mustExecute(s, CreateGlobalTaskHistory) } -func upgradeToVer177(s Session, ver int64) { +func upgradeToVer177(s sessiontypes.Session, ver int64) { if ver >= version177 { return } @@ -2860,7 +2861,7 @@ func upgradeToVer177(s Session, ver int64) { } // writeDDLTableVersion writes mDDLTableVersion into mysql.tidb -func writeDDLTableVersion(s Session) { +func writeDDLTableVersion(s sessiontypes.Session) { var err error var ddlTableVersion meta.DDLTableVersion err = kv.RunInNewTxn(kv.WithInternalSourceType(context.Background(), kv.InternalTxnBootstrap), s.GetStore(), true, func(ctx context.Context, txn kv.Transaction) error { @@ -2878,21 +2879,21 @@ func writeDDLTableVersion(s Session) { ) } -func upgradeToVer178(s Session, ver int64) { +func upgradeToVer178(s sessiontypes.Session, ver int64) { if ver >= version178 { return } writeDDLTableVersion(s) } -func upgradeToVer179(s Session, ver int64) { +func upgradeToVer179(s sessiontypes.Session, ver int64) { if ver >= version179 { return } doReentrantDDL(s, "ALTER TABLE mysql.global_variables MODIFY COLUMN `VARIABLE_VALUE` varchar(16383)") } -func writeOOMAction(s Session) { +func writeOOMAction(s sessiontypes.Session) { comment := "oom-action is `log` by default in v3.0.x, `cancel` by default in v4.0.11+" mustExecute(s, `INSERT HIGH_PRIORITY INTO %n.%n VALUES (%?, %?, %?) ON DUPLICATE KEY UPDATE VARIABLE_VALUE= %?`, mysql.SystemDB, mysql.TiDBTable, tidbDefOOMAction, variable.OOMActionLog, comment, variable.OOMActionLog, @@ -2900,7 +2901,7 @@ func writeOOMAction(s Session) { } // updateBootstrapVer updates bootstrap version variable in mysql.TiDB table. -func updateBootstrapVer(s Session) { +func updateBootstrapVer(s sessiontypes.Session) { // Update bootstrap version. mustExecute(s, `INSERT HIGH_PRIORITY INTO %n.%n VALUES (%?, %?, "TiDB bootstrap version.") ON DUPLICATE KEY UPDATE VARIABLE_VALUE=%?`, mysql.SystemDB, mysql.TiDBTable, tidbServerVersionVar, currentBootstrapVersion, currentBootstrapVersion, @@ -2908,7 +2909,7 @@ func updateBootstrapVer(s Session) { } // getBootstrapVersion gets bootstrap version from mysql.tidb table; -func getBootstrapVersion(s Session) (int64, error) { +func getBootstrapVersion(s sessiontypes.Session) (int64, error) { sVal, isNull, err := getTiDBVar(s, tidbServerVersionVar) if err != nil { return 0, errors.Trace(err) @@ -2920,7 +2921,7 @@ func getBootstrapVersion(s Session) (int64, error) { } // doDDLWorks executes DDL statements in bootstrap stage. -func doDDLWorks(s Session) { +func doDDLWorks(s sessiontypes.Session) { // Create a test database. mustExecute(s, "CREATE DATABASE IF NOT EXISTS test") // Create system db. @@ -3025,7 +3026,7 @@ func doDDLWorks(s Session) { // doBootstrapSQLFile executes SQL commands in a file as the last stage of bootstrap. // It is useful for setting the initial value of GLOBAL variables. -func doBootstrapSQLFile(s Session) error { +func doBootstrapSQLFile(s sessiontypes.Session) error { sqlFile := config.GetGlobalConfig().InitializeSQLFile ctx := kv.WithInternalSourceType(context.Background(), kv.InternalTxnBootstrap) if sqlFile == "" { @@ -3064,7 +3065,7 @@ func doBootstrapSQLFile(s Session) error { // doDMLWorks executes DML statements in bootstrap stage. // All the statements run in a single transaction. -func doDMLWorks(s Session) { +func doDMLWorks(s sessiontypes.Session) { mustExecute(s, "BEGIN") if config.GetGlobalConfig().Security.SecureBootstrap { // If secure bootstrap is enabled, we create a root@localhost account which can login with auth_socket. @@ -3168,7 +3169,7 @@ func doDMLWorks(s Session) { } } -func mustExecute(s Session, sql string, args ...interface{}) { +func mustExecute(s sessiontypes.Session, sql string, args ...interface{}) { ctx, cancel := context.WithTimeout(context.Background(), time.Duration(internalSQLTimeout)*time.Second) ctx = kv.WithInternalSourceType(ctx, kv.InternalTxnBootstrap) _, err := s.ExecuteInternal(ctx, sql, args...) diff --git a/pkg/session/bootstrap_test.go b/pkg/session/bootstrap_test.go index e23b15fca0326..a5fb48a4e823f 100644 --- a/pkg/session/bootstrap_test.go +++ b/pkg/session/bootstrap_test.go @@ -25,6 +25,7 @@ import ( "github.com/pingcap/tidb/pkg/domain" "github.com/pingcap/tidb/pkg/meta" "github.com/pingcap/tidb/pkg/parser/auth" + sessiontypes "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/statistics" @@ -851,71 +852,77 @@ func TestIndexMergeUpgradeFrom300To540(t *testing.T) { require.Equal(t, int64(0), row.GetInt64(0)) } -func TestIndexMergeUpgradeFrom400To540(t *testing.T) { - for i := 0; i < 2; i++ { - func() { - ctx := context.Background() - store, dom := CreateStoreAndBootstrap(t) - defer func() { require.NoError(t, store.Close()) }() +// We set tidb_enable_index_merge as on. +// And after upgrade to 5.x, tidb_enable_index_merge should remains to be on. +func TestIndexMergeUpgradeFrom400To540Enable(t *testing.T) { + testIndexMergeUpgradeFrom400To540(t, true) +} - // upgrade from 4.0.0 to 5.4+. - ver400 := 46 - seV4 := CreateSessionAndSetID(t, store) - txn, err := store.Begin() - require.NoError(t, err) - m := meta.NewMeta(txn) - err = m.FinishBootstrap(int64(ver400)) - require.NoError(t, err) - err = txn.Commit(context.Background()) - require.NoError(t, err) - MustExec(t, seV4, fmt.Sprintf("update mysql.tidb set variable_value=%d where variable_name='tidb_server_version'", 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()) - ver, err := getBootstrapVersion(seV4) - require.NoError(t, err) - require.Equal(t, int64(ver400), ver) +func TestIndexMergeUpgradeFrom400To540Disable(t *testing.T) { + testIndexMergeUpgradeFrom400To540(t, false) +} - // We are now in 4.0.0, tidb_enable_index_merge is off. - res := MustExecToRecodeSet(t, seV4, fmt.Sprintf("select * from mysql.GLOBAL_VARIABLES where variable_name='%s'", variable.TiDBEnableIndexMerge)) - chk := res.NewChunk(nil) - err = res.Next(ctx, chk) - require.NoError(t, err) - require.Equal(t, 1, chk.NumRows()) - row := chk.GetRow(0) - require.Equal(t, 2, row.Len()) - require.Equal(t, variable.Off, row.GetString(1)) +func testIndexMergeUpgradeFrom400To540(t *testing.T, enable bool) { + ctx := context.Background() + store, dom := CreateStoreAndBootstrap(t) + defer func() { require.NoError(t, store.Close()) }() - if i == 0 { - // For the first time, We set tidb_enable_index_merge as on. - // And after upgrade to 5.x, tidb_enable_index_merge should remains to be on. - // For the second it should be off. - MustExec(t, seV4, "set global tidb_enable_index_merge = on") - } - dom.Close() - // Upgrade to 5.x. - domCurVer, err := BootstrapSession(store) - require.NoError(t, err) - defer domCurVer.Close() - seCurVer := CreateSessionAndSetID(t, store) - ver, err = getBootstrapVersion(seCurVer) - require.NoError(t, err) - require.Equal(t, currentBootstrapVersion, ver) + // upgrade from 4.0.0 to 5.4+. + ver400 := 46 + seV4 := CreateSessionAndSetID(t, store) + txn, err := store.Begin() + require.NoError(t, err) + m := meta.NewMeta(txn) + err = m.FinishBootstrap(int64(ver400)) + require.NoError(t, err) + err = txn.Commit(context.Background()) + require.NoError(t, err) + MustExec(t, seV4, fmt.Sprintf("update mysql.tidb set variable_value=%d where variable_name='tidb_server_version'", 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()) + ver, err := getBootstrapVersion(seV4) + require.NoError(t, err) + require.Equal(t, int64(ver400), ver) - // We are now in 5.x, tidb_enable_index_merge should be on because we enable it in 4.0.0. - res = MustExecToRecodeSet(t, seCurVer, "select @@tidb_enable_index_merge") - chk = res.NewChunk(nil) - err = res.Next(ctx, chk) - require.NoError(t, err) - require.Equal(t, 1, chk.NumRows()) - row = chk.GetRow(0) - require.Equal(t, 1, row.Len()) - if i == 0 { - require.Equal(t, int64(1), row.GetInt64(0)) - } else { - require.Equal(t, int64(0), row.GetInt64(0)) - } - }() + // We are now in 4.0.0, tidb_enable_index_merge is off. + res := MustExecToRecodeSet(t, seV4, fmt.Sprintf("select * from mysql.GLOBAL_VARIABLES where variable_name='%s'", variable.TiDBEnableIndexMerge)) + chk := res.NewChunk(nil) + err = res.Next(ctx, chk) + require.NoError(t, err) + require.Equal(t, 1, chk.NumRows()) + row := chk.GetRow(0) + require.Equal(t, 2, row.Len()) + require.Equal(t, variable.Off, row.GetString(1)) + + if enable { + // For the first time, We set tidb_enable_index_merge as on. + // And after upgrade to 5.x, tidb_enable_index_merge should remains to be on. + // For the second it should be off. + MustExec(t, seV4, "set global tidb_enable_index_merge = on") + } + dom.Close() + // Upgrade to 5.x. + domCurVer, err := BootstrapSession(store) + require.NoError(t, err) + defer domCurVer.Close() + seCurVer := CreateSessionAndSetID(t, store) + ver, err = getBootstrapVersion(seCurVer) + require.NoError(t, err) + require.Equal(t, currentBootstrapVersion, ver) + + // We are now in 5.x, tidb_enable_index_merge should be on because we enable it in 4.0.0. + res = MustExecToRecodeSet(t, seCurVer, "select @@tidb_enable_index_merge") + chk = res.NewChunk(nil) + err = res.Next(ctx, chk) + require.NoError(t, err) + require.Equal(t, 1, chk.NumRows()) + row = chk.GetRow(0) + require.Equal(t, 1, row.Len()) + if enable { + require.Equal(t, int64(1), row.GetInt64(0)) + } else { + require.Equal(t, int64(0), row.GetInt64(0)) } } @@ -1590,7 +1597,7 @@ func TestTiDBUpgradeToVer140(t *testing.T) { }() ver139 := version139 - resetTo139 := func(s Session) { + resetTo139 := func(s sessiontypes.Session) { txn, err := store.Begin() require.NoError(t, err) m := meta.NewMeta(txn) @@ -2004,7 +2011,7 @@ func TestTiDBBindingInListToVer175(t *testing.T) { MustExec(t, seV174, "insert into mysql.bind_info values ('select * from `test` . `t` where `a` in ( ? )', 'SELECT /*+ use_index(`t` `c`)*/ * FROM `test`.`t` WHERE `a` IN (1)', 'test', 'enabled', '2023-09-13 14:41:38.319', '2023-09-13 14:41:36.319', 'utf8', 'utf8_general_ci', 'manual', '', '')") MustExec(t, seV174, "insert into mysql.bind_info values ('select * from `test` . `t` where `a` in ( ? ) and `b` in ( ... )', 'SELECT /*+ use_index(`t` `c`)*/ * FROM `test`.`t` WHERE `a` IN (1) AND `b` IN (1,2,3)', 'test', 'enabled', '2023-09-13 14:41:37.319', '2023-09-13 14:41:38.319', 'utf8', 'utf8_general_ci', 'manual', '', '')") - showBindings := func(s Session) (records []string) { + showBindings := func(s sessiontypes.Session) (records []string) { MustExec(t, s, "admin reload bindings") res := MustExecToRecodeSet(t, s, "show global bindings") chk := res.NewChunk(nil) @@ -2043,7 +2050,7 @@ func TestTiDBBindingInListToVer175(t *testing.T) { require.Equal(t, []string{"SELECT /*+ use_index(`t` `c`)*/ * FROM `test`.`t` WHERE `a` IN (1) AND `b` IN (1,2,3):select * from `test` . `t` where `a` in ( ... ) and `b` in ( ... )", "SELECT /*+ use_index(`t` `c`)*/ * FROM `test`.`t` WHERE `a` IN (1):select * from `test` . `t` where `a` in ( ... )"}, bindings) - planFromBinding := func(s Session, q string) { + planFromBinding := func(s sessiontypes.Session, q string) { MustExec(t, s, q) res := MustExecToRecodeSet(t, s, "select @@last_plan_from_binding") chk := res.NewChunk(nil) diff --git a/pkg/session/bootstraptest/BUILD.bazel b/pkg/session/bootstraptest/BUILD.bazel index 67477675738cf..4b25d2e72d946 100644 --- a/pkg/session/bootstraptest/BUILD.bazel +++ b/pkg/session/bootstraptest/BUILD.bazel @@ -19,6 +19,7 @@ go_test( "//pkg/parser/terror", "//pkg/server/handler", "//pkg/session", #keep + "//pkg/session/types", "//pkg/sessionctx", "//pkg/testkit", #keep "//pkg/testkit/testmain", diff --git a/pkg/session/bootstraptest/bootstrap_upgrade_test.go b/pkg/session/bootstraptest/bootstrap_upgrade_test.go index da38f275afe76..fbe12509b94c1 100644 --- a/pkg/session/bootstraptest/bootstrap_upgrade_test.go +++ b/pkg/session/bootstraptest/bootstrap_upgrade_test.go @@ -33,6 +33,7 @@ import ( "github.com/pingcap/tidb/pkg/parser/terror" "github.com/pingcap/tidb/pkg/server/handler" "github.com/pingcap/tidb/pkg/session" + sessiontypes "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/testkit" tidb_util "github.com/pingcap/tidb/pkg/util" @@ -228,7 +229,8 @@ func TestUpgradeVersion75(t *testing.T) { } func TestUpgradeVersionMockLatest(t *testing.T) { - session.WithMockUpgrade = true + mock := true + session.WithMockUpgrade = &mock store, dom := session.CreateStoreAndBootstrap(t) defer func() { require.NoError(t, store.Close()) }() @@ -291,7 +293,8 @@ func TestUpgradeVersionMockLatest(t *testing.T) { // TestUpgradeVersionWithUpgradeHTTPOp tests SupportUpgradeHTTPOpVer upgrade SupportUpgradeHTTPOpVer++ with HTTP op. func TestUpgradeVersionWithUpgradeHTTPOp(t *testing.T) { - session.WithMockUpgrade = true + mock := true + session.WithMockUpgrade = &mock session.MockUpgradeToVerLatestKind = session.MockSimpleUpgradeToVerLatest store, dom := session.CreateStoreAndBootstrap(t) @@ -339,7 +342,8 @@ func TestUpgradeVersionWithUpgradeHTTPOp(t *testing.T) { // TestUpgradeVersionWithoutUpgradeHTTPOp tests SupportUpgradeHTTPOpVer upgrade SupportUpgradeHTTPOpVer++ without HTTP op. func TestUpgradeVersionWithoutUpgradeHTTPOp(t *testing.T) { - session.WithMockUpgrade = true + mock := true + session.WithMockUpgrade = &mock session.MockUpgradeToVerLatestKind = session.MockSimpleUpgradeToVerLatest store, dom := session.CreateStoreAndBootstrap(t) @@ -440,7 +444,7 @@ func TestUpgradeVersionForPausedJob(t *testing.T) { } // checkDDLJobExecSucc is used to make sure the DDL operation is successful. -func checkDDLJobExecSucc(t *testing.T, se session.Session, jobID int64) { +func checkDDLJobExecSucc(t *testing.T, se sessiontypes.Session, jobID int64) { sql := fmt.Sprintf(" admin show ddl jobs where job_id=%d", jobID) suc := false for i := 0; i < 20; i++ { @@ -463,7 +467,8 @@ func checkDDLJobExecSucc(t *testing.T, se session.Session, jobID int64) { // Then we do re-upgrade(This operation will pause all DDL jobs by the system). func TestUpgradeVersionForSystemPausedJob(t *testing.T) { // Mock a general and a reorg job in boostrap. - session.WithMockUpgrade = true + mock := true + session.WithMockUpgrade = &mock session.MockUpgradeToVerLatestKind = session.MockSimpleUpgradeToVerLatest store, dom := session.CreateStoreAndBootstrap(t) @@ -682,7 +687,7 @@ func TestUpgradeWithPauseDDL(t *testing.T) { tc := session.TestCallback{Cnt: atomicutil.NewInt32(0)} sql := "select job_meta, processing from mysql.tidb_ddl_job where job_id in (select min(job_id) from mysql.tidb_ddl_job group by schema_ids, table_ids, processing) order by processing desc, job_id" - tc.OnBootstrapBeforeExported = func(s session.Session) { + tc.OnBootstrapBeforeExported = func(s sessiontypes.Session) { rows, err := execute(context.Background(), s, sql) require.NoError(t, err) require.Len(t, rows, 0) @@ -705,7 +710,7 @@ func TestUpgradeWithPauseDDL(t *testing.T) { }() <-ch } - checkDDLJobState := func(s session.Session) { + checkDDLJobState := func(s sessiontypes.Session) { rows, err := execute(context.Background(), s, sql) require.NoError(t, err) for _, row := range rows { @@ -723,7 +728,7 @@ func TestUpgradeWithPauseDDL(t *testing.T) { } } // Before every test bootstrap(DDL operation), we add a user and a system DB's DDL operations. - tc.OnBootstrapExported = func(s session.Session) { + tc.OnBootstrapExported = func(s sessiontypes.Session) { var query1, query2 string switch tc.Cnt.Load() % 2 { case 0: @@ -741,12 +746,13 @@ func TestUpgradeWithPauseDDL(t *testing.T) { checkDDLJobState(s) } - tc.OnBootstrapAfterExported = func(s session.Session) { + tc.OnBootstrapAfterExported = func(s sessiontypes.Session) { checkDDLJobState(s) } session.TestHook = tc - session.WithMockUpgrade = true + mock := true + session.WithMockUpgrade = &mock seV := session.CreateSessionAndSetID(t, store) txn, err := store.Begin() require.NoError(t, err) diff --git a/pkg/session/mock_bootstrap.go b/pkg/session/mock_bootstrap.go index f693304acccbf..9a200b6518a29 100644 --- a/pkg/session/mock_bootstrap.go +++ b/pkg/session/mock_bootstrap.go @@ -22,17 +22,18 @@ import ( "flag" "time" + "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/util/logutil" atomicutil "go.uber.org/atomic" "go.uber.org/zap" ) // WithMockUpgrade is a flag identify whether tests run with mock upgrading. -var WithMockUpgrade bool +var WithMockUpgrade *bool // RegisterMockUpgradeFlag registers the mock upgrade flag. func RegisterMockUpgradeFlag(fSet *flag.FlagSet) { - WithMockUpgrade = *(fSet.Bool("with-mock-upgrade", false, "whether tests run with mock upgrade")) + WithMockUpgrade = fSet.Bool("with-mock-upgrade", false, "whether tests run with mock upgrade") } var allDDLs = []string{ @@ -75,7 +76,7 @@ var allDDLs = []string{ var mockLatestVer = currentBootstrapVersion + 1 -func mockUpgradeToVerLatest(s Session, ver int64) { +func mockUpgradeToVerLatest(s types.Session, ver int64) { logutil.BgLogger().Info("mock upgrade to ver latest", zap.Int64("old ver", ver), zap.Int64("mock latest ver", mockLatestVer)) if ver >= mockLatestVer { return @@ -114,7 +115,7 @@ func mockUpgradeToVerLatest(s Session, ver int64) { } // mockSimpleUpgradeToVerLatest mocks a simple bootstrapVersion(make the test faster). -func mockSimpleUpgradeToVerLatest(s Session, ver int64) { +func mockSimpleUpgradeToVerLatest(s types.Session, ver int64) { logutil.BgLogger().Info("mock upgrade to ver latest", zap.Int64("old ver", ver), zap.Int64("mock latest ver", mockLatestVer)) if ver >= mockLatestVer { return @@ -133,11 +134,11 @@ var TestHook = TestCallback{} // modifyBootstrapVersionForTest is used to test SupportUpgradeHTTPOpVer upgrade SupportUpgradeHTTPOpVer++. func modifyBootstrapVersionForTest(ver int64) { - if !WithMockUpgrade { + if WithMockUpgrade == nil || !*WithMockUpgrade { return } - if ver == SupportUpgradeHTTPOpVer && currentBootstrapVersion == SupportUpgradeHTTPOpVer { + if ver >= SupportUpgradeHTTPOpVer && currentBootstrapVersion >= SupportUpgradeHTTPOpVer { currentBootstrapVersion = mockLatestVer } } @@ -151,8 +152,8 @@ const ( // MockUpgradeToVerLatestKind is used to indicate the use of different mock bootstrapVersion. var MockUpgradeToVerLatestKind = defaultMockUpgradeToVerLatest -func addMockBootstrapVersionForTest(s Session) { - if !WithMockUpgrade { +func addMockBootstrapVersionForTest(s types.Session) { + if WithMockUpgrade == nil || !*WithMockUpgrade { return } @@ -168,51 +169,51 @@ func addMockBootstrapVersionForTest(s Session) { // Callback is used for Test. type Callback interface { // OnBootstrapBefore is called before doing bootstrap. - OnBootstrapBefore(s Session) + OnBootstrapBefore(s types.Session) // OnBootstrap is called doing bootstrap. - OnBootstrap(s Session) + OnBootstrap(s types.Session) // OnBootstrapAfter is called after doing bootstrap. - OnBootstrapAfter(s Session) + OnBootstrapAfter(s types.Session) } // BaseCallback implements Callback interfaces. type BaseCallback struct{} // OnBootstrapBefore implements Callback interface. -func (*BaseCallback) OnBootstrapBefore(Session) {} +func (*BaseCallback) OnBootstrapBefore(types.Session) {} // OnBootstrap implements Callback interface. -func (*BaseCallback) OnBootstrap(Session) {} +func (*BaseCallback) OnBootstrap(types.Session) {} // OnBootstrapAfter implements Callback interface. -func (*BaseCallback) OnBootstrapAfter(Session) {} +func (*BaseCallback) OnBootstrapAfter(types.Session) {} // TestCallback is used to customize user callback themselves. type TestCallback struct { *BaseCallback Cnt *atomicutil.Int32 - OnBootstrapBeforeExported func(s Session) - OnBootstrapExported func(s Session) - OnBootstrapAfterExported func(s Session) + OnBootstrapBeforeExported func(s types.Session) + OnBootstrapExported func(s types.Session) + OnBootstrapAfterExported func(s types.Session) } // OnBootstrapBefore mocks the same behavior with the main bootstrap hook. -func (tc *TestCallback) OnBootstrapBefore(s Session) { +func (tc *TestCallback) OnBootstrapBefore(s types.Session) { if tc.OnBootstrapBeforeExported != nil { tc.OnBootstrapBeforeExported(s) } } // OnBootstrap mocks the same behavior with the main bootstrap hook. -func (tc *TestCallback) OnBootstrap(s Session) { +func (tc *TestCallback) OnBootstrap(s types.Session) { if tc.OnBootstrapExported != nil { tc.OnBootstrapExported(s) } } // OnBootstrapAfter mocks the same behavior with the main bootstrap hook. -func (tc *TestCallback) OnBootstrapAfter(s Session) { +func (tc *TestCallback) OnBootstrapAfter(s types.Session) { if tc.OnBootstrapAfterExported != nil { tc.OnBootstrapAfterExported(s) } diff --git a/pkg/session/nontransactional.go b/pkg/session/nontransactional.go index 197643c48ebb3..5738a3d545dbf 100644 --- a/pkg/session/nontransactional.go +++ b/pkg/session/nontransactional.go @@ -32,6 +32,7 @@ import ( "github.com/pingcap/tidb/pkg/parser/opcode" "github.com/pingcap/tidb/pkg/planner/core" session_metrics "github.com/pingcap/tidb/pkg/session/metrics" + sessiontypes "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/table" "github.com/pingcap/tidb/pkg/types" @@ -74,7 +75,7 @@ func (j job) String(redacted bool) string { } // HandleNonTransactionalDML is the entry point for a non-transactional DML statement -func HandleNonTransactionalDML(ctx context.Context, stmt *ast.NonTransactionalDMLStmt, se Session) (sqlexec.RecordSet, error) { +func HandleNonTransactionalDML(ctx context.Context, stmt *ast.NonTransactionalDMLStmt, se sessiontypes.Session) (sqlexec.RecordSet, error) { sessVars := se.GetSessionVars() originalReadStaleness := se.GetSessionVars().ReadStaleness // NT-DML is a write operation, and should not be affected by read_staleness that is supposed to affect only SELECT. @@ -129,7 +130,7 @@ func HandleNonTransactionalDML(ctx context.Context, stmt *ast.NonTransactionalDM // // Note: this is not a comprehensive check. // We do this to help user prevent some easy mistakes, at an acceptable maintenance cost. -func checkConstraintWithShardColumn(se Session, stmt *ast.NonTransactionalDMLStmt, +func checkConstraintWithShardColumn(se sessiontypes.Session, stmt *ast.NonTransactionalDMLStmt, tableName *ast.TableName, shardColumnInfo *model.ColumnInfo, tableSources []*ast.TableSource) error { switch s := stmt.DMLStmt.(type) { case *ast.UpdateStmt: @@ -148,7 +149,7 @@ func checkConstraintWithShardColumn(se Session, stmt *ast.NonTransactionalDMLStm } // shard column should not be updated. -func checkUpdateShardColumn(se Session, assignments []*ast.Assignment, shardColumnInfo *model.ColumnInfo, +func checkUpdateShardColumn(se sessiontypes.Session, assignments []*ast.Assignment, shardColumnInfo *model.ColumnInfo, tableName *ast.TableName, tableSources []*ast.TableSource, isUpdate bool) error { // if the table has alias, the alias is used in assignments, and we should use aliased name to compare aliasedShardColumnTableName := tableName.Name.L @@ -178,7 +179,7 @@ func checkUpdateShardColumn(se Session, assignments []*ast.Assignment, shardColu return nil } -func checkConstraint(stmt *ast.NonTransactionalDMLStmt, se Session) error { +func checkConstraint(stmt *ast.NonTransactionalDMLStmt, se sessiontypes.Session) error { sessVars := se.GetSessionVars() if !(sessVars.IsAutocommit() && !sessVars.InTxn()) { return errors.Errorf("non-transactional DML can only run in auto-commit mode. auto-commit:%v, inTxn:%v", @@ -256,7 +257,7 @@ func checkReadClauses(limit *ast.Limit, order *ast.OrderByClause) error { // single-threaded worker. work on the key range [start, end] func runJobs(ctx context.Context, jobs []job, stmt *ast.NonTransactionalDMLStmt, - tableName *ast.TableName, se Session, originalCondition ast.ExprNode) ([]string, error) { + tableName *ast.TableName, se sessiontypes.Session, originalCondition ast.ExprNode) ([]string, error) { // prepare for the construction of statement var shardColumnRefer *ast.ResultField var shardColumnType types.FieldType @@ -331,7 +332,7 @@ func runJobs(ctx context.Context, jobs []job, stmt *ast.NonTransactionalDMLStmt, return splitStmts, nil } -func doOneJob(ctx context.Context, job *job, totalJobCount int, options statementBuildInfo, se Session, dryRun bool) string { +func doOneJob(ctx context.Context, job *job, totalJobCount int, options statementBuildInfo, se sessiontypes.Session, dryRun bool) string { var whereCondition ast.ExprNode if job.start.IsNull() { @@ -441,7 +442,7 @@ func doOneJob(ctx context.Context, job *job, totalJobCount int, options statemen return "" } -func buildShardJobs(ctx context.Context, stmt *ast.NonTransactionalDMLStmt, se Session, +func buildShardJobs(ctx context.Context, stmt *ast.NonTransactionalDMLStmt, se sessiontypes.Session, selectSQL string, shardColumnInfo *model.ColumnInfo, memTracker *memory.Tracker) ([]job, error) { var shardColumnCollate string if shardColumnInfo != nil { @@ -536,7 +537,7 @@ func appendNewJob(jobs []job, id int, start types.Datum, end types.Datum, size i return jobs } -func buildSelectSQL(stmt *ast.NonTransactionalDMLStmt, se Session) ( +func buildSelectSQL(stmt *ast.NonTransactionalDMLStmt, se sessiontypes.Session) ( *ast.TableName, string, *model.ColumnInfo, []*ast.TableSource, error) { // only use the first table join, ok := stmt.DMLStmt.TableRefsJoin() @@ -582,7 +583,7 @@ func buildSelectSQL(stmt *ast.NonTransactionalDMLStmt, se Session) ( return tableName, selectSQL, shardColumnInfo, tableSources, nil } -func selectShardColumn(stmt *ast.NonTransactionalDMLStmt, se Session, tableSources []*ast.TableSource, +func selectShardColumn(stmt *ast.NonTransactionalDMLStmt, se sessiontypes.Session, tableSources []*ast.TableSource, leftMostTableName *ast.TableName, leftMostTableSource *ast.TableSource) ( *model.ColumnInfo, *ast.TableName, error) { var indexed bool diff --git a/pkg/session/session.go b/pkg/session/session.go index c50451f56d368..5fcac90030187 100644 --- a/pkg/session/session.go +++ b/pkg/session/session.go @@ -71,6 +71,7 @@ import ( "github.com/pingcap/tidb/pkg/privilege/privileges" session_metrics "github.com/pingcap/tidb/pkg/session/metrics" "github.com/pingcap/tidb/pkg/session/txninfo" + "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/binloginfo" "github.com/pingcap/tidb/pkg/sessionctx/sessionstates" @@ -115,74 +116,18 @@ import ( "go.uber.org/zap" ) -// Session context, it is consistent with the lifecycle of a client connection. -type Session interface { - sessionctx.Context - Status() uint16 // Flag of current status, such as autocommit. - LastInsertID() uint64 // LastInsertID is the last inserted auto_increment ID. - LastMessage() string // LastMessage is the info message that may be generated by last command - AffectedRows() uint64 // Affected rows by latest executed stmt. - // Execute is deprecated, and only used by plugins. Use ExecuteStmt() instead. - Execute(context.Context, string) ([]sqlexec.RecordSet, error) // Execute a sql statement. - // ExecuteStmt executes a parsed statement. - ExecuteStmt(context.Context, ast.StmtNode) (sqlexec.RecordSet, error) - // Parse is deprecated, use ParseWithParams() instead. - Parse(ctx context.Context, sql string) ([]ast.StmtNode, error) - // ExecuteInternal is a helper around ParseWithParams() and ExecuteStmt(). It is not allowed to execute multiple statements. - ExecuteInternal(context.Context, string, ...interface{}) (sqlexec.RecordSet, error) - String() string // String is used to debug. - CommitTxn(context.Context) error - RollbackTxn(context.Context) - // PrepareStmt executes prepare statement in binary protocol. - PrepareStmt(sql string) (stmtID uint32, paramCount int, fields []*ast.ResultField, err error) - // ExecutePreparedStmt executes a prepared statement. - // Deprecated: please use ExecuteStmt, this function is left for testing only. - // TODO: remove ExecutePreparedStmt. - ExecutePreparedStmt(ctx context.Context, stmtID uint32, param []expression.Expression) (sqlexec.RecordSet, error) - DropPreparedStmt(stmtID uint32) error - // SetSessionStatesHandler sets SessionStatesHandler for type stateType. - SetSessionStatesHandler(stateType sessionstates.SessionStateType, handler sessionctx.SessionStatesHandler) - SetClientCapability(uint32) // Set client capability flags. - SetConnectionID(uint64) - SetCommandValue(byte) - SetProcessInfo(string, time.Time, byte, uint64) - SetTLSState(*tls.ConnectionState) - SetCollation(coID int) error - 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) - // Return the information of the txn current running - TxnInfo() *txninfo.TxnInfo - // PrepareTxnCtx is exported for test. - PrepareTxnCtx(context.Context) error - // FieldList returns fields list of a table. - FieldList(tableName string) (fields []*ast.ResultField, err error) - SetPort(port string) - - // set cur session operations allowed when tikv disk full happens. - SetDiskFullOpt(level kvrpcpb.DiskFullOpt) - GetDiskFullOpt() kvrpcpb.DiskFullOpt - ClearDiskFullOpt() - - // SetExtensions sets the `*extension.SessionExtensions` object - SetExtensions(extensions *extension.SessionExtensions) -} - func init() { executor.CreateSession = func(ctx sessionctx.Context) (sessionctx.Context, error) { return CreateSession(ctx.GetStore()) } executor.CloseSession = func(ctx sessionctx.Context) { - if se, ok := ctx.(Session); ok { + if se, ok := ctx.(types.Session); ok { se.Close() } } } -var _ Session = (*session)(nil) +var _ types.Session = (*session)(nil) type stmtRecord struct { st sqlexec.Statement @@ -408,6 +353,14 @@ func (s *session) SetTLSState(tlsState *tls.ConnectionState) { } } +func (s *session) SetCompressionAlgorithm(ca int) { + s.sessionVars.CompressionAlgorithm = ca +} + +func (s *session) SetCompressionLevel(level int) { + s.sessionVars.CompressionLevel = level +} + func (s *session) SetCommandValue(command byte) { atomic.StoreUint32(&s.sessionVars.CommandValue, uint32(command)) } @@ -1879,7 +1832,7 @@ func (s *session) DisableSandBoxMode() { } // ParseWithParams4Test wrapper (s *session) ParseWithParams for test -func ParseWithParams4Test(ctx context.Context, s Session, +func ParseWithParams4Test(ctx context.Context, s types.Session, sql string, args ...interface{}) (ast.StmtNode, error) { return s.(*session).ParseWithParams(ctx, sql, args) } @@ -1935,7 +1888,7 @@ func (s *session) ExecRestrictedStmt(ctx context.Context, stmtNode ast.StmtNode, } // ExecRestrictedStmt4Test wrapper `(s *session) ExecRestrictedStmt` for test. -func ExecRestrictedStmt4Test(ctx context.Context, s Session, +func ExecRestrictedStmt4Test(ctx context.Context, s types.Session, stmtNode ast.StmtNode, opts ...sqlexec.OptionFuncAlias) ( []chunk.Row, []*ast.ResultField, error) { ctx = kv.WithInternalSourceType(ctx, kv.InternalTxnOthers) @@ -3034,7 +2987,7 @@ func (s *session) SetSessionStatesHandler(stateType sessionstates.SessionStateTy } // CreateSession4Test creates a new session environment for test. -func CreateSession4Test(store kv.Storage) (Session, error) { +func CreateSession4Test(store kv.Storage) (types.Session, error) { se, err := CreateSession4TestWithOpt(store, nil) if err == nil { // Cover both chunk rpc encoding and default encoding. @@ -3054,7 +3007,7 @@ type Opt struct { } // CreateSession4TestWithOpt creates a new session environment for test. -func CreateSession4TestWithOpt(store kv.Storage, opt *Opt) (Session, error) { +func CreateSession4TestWithOpt(store kv.Storage, opt *Opt) (types.Session, error) { s, err := CreateSessionWithOpt(store, opt) if err == nil { // initialize session variables for test. @@ -3068,13 +3021,13 @@ func CreateSession4TestWithOpt(store kv.Storage, opt *Opt) (Session, error) { } // CreateSession creates a new session environment. -func CreateSession(store kv.Storage) (Session, error) { +func CreateSession(store kv.Storage) (types.Session, error) { return CreateSessionWithOpt(store, nil) } // CreateSessionWithOpt creates a new session environment with option. // Use default option if opt is nil. -func CreateSessionWithOpt(store kv.Storage, opt *Opt) (Session, error) { +func CreateSessionWithOpt(store kv.Storage, opt *Opt) (types.Session, error) { s, err := createSessionWithOpt(store, opt) if err != nil { return nil, err @@ -3550,7 +3503,7 @@ func GetDomain(store kv.Storage) (*domain.Domain, error) { // If no bootstrap and storage is remote, we must use a little lease time to // bootstrap quickly, after bootstrapped, we will reset the lease time. // TODO: Using a bootstrap tool for doing this may be better later. -func runInBootstrapSession(store kv.Storage, bootstrap func(Session)) { +func runInBootstrapSession(store kv.Storage, bootstrap func(types.Session)) { s, err := createSession(store) if err != nil { // Bootstrap fail will cause program exit. @@ -4407,7 +4360,7 @@ func (s *session) setRequestSource(ctx context.Context, stmtLabel string, stmtNo } // RemoveLockDDLJobs removes the DDL jobs which doesn't get the metadata lock from job2ver. -func RemoveLockDDLJobs(s Session, job2ver map[int64]int64, job2ids map[int64]string, printLog bool) { +func RemoveLockDDLJobs(s types.Session, job2ver map[int64]int64, job2ids map[int64]string, printLog bool) { sv := s.GetSessionVars() if sv.InRestrictedSQL { return diff --git a/pkg/session/sync_upgrade.go b/pkg/session/sync_upgrade.go index 384a505fae871..be20dfc3764c9 100644 --- a/pkg/session/sync_upgrade.go +++ b/pkg/session/sync_upgrade.go @@ -23,6 +23,7 @@ import ( "github.com/pingcap/tidb/pkg/ddl/syncer" "github.com/pingcap/tidb/pkg/domain" "github.com/pingcap/tidb/pkg/owner" + sessiontypes "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/util/logutil" "go.uber.org/zap" @@ -119,7 +120,7 @@ func IsUpgradingClusterState(s sessionctx.Context) (bool, error) { return stateInfo.State == syncer.StateUpgrading, nil } -func printClusterState(s Session, ver int64) { +func printClusterState(s sessiontypes.Session, ver int64) { // After SupportUpgradeHTTPOpVer version, the upgrade by paused user DDL can be notified through the HTTP API. // We check the global state see if we are upgrading by paused the user DDL. if ver >= SupportUpgradeHTTPOpVer { diff --git a/pkg/session/test/BUILD.bazel b/pkg/session/test/BUILD.bazel index 328aadcb5b3b4..a38ff77583362 100644 --- a/pkg/session/test/BUILD.bazel +++ b/pkg/session/test/BUILD.bazel @@ -6,9 +6,10 @@ go_test( srcs = [ "main_test.go", "session_test.go", + "tidb_test.go", ], flaky = True, - shard_count = 26, + shard_count = 28, deps = [ "//pkg/config", "//pkg/domain", @@ -19,8 +20,10 @@ go_test( "//pkg/parser/model", "//pkg/parser/mysql", "//pkg/parser/terror", + "//pkg/planner/core", "//pkg/session", "//pkg/store/mockstore", + "//pkg/tablecodec", "//pkg/testkit", "//pkg/testkit/testmain", "//pkg/testkit/testsetup", diff --git a/pkg/session/test/privileges/BUILD.bazel b/pkg/session/test/privileges/BUILD.bazel index 461850b395826..5000b15ae579b 100644 --- a/pkg/session/test/privileges/BUILD.bazel +++ b/pkg/session/test/privileges/BUILD.bazel @@ -8,7 +8,6 @@ go_test( "privileges_test.go", ], flaky = True, - shard_count = 5, deps = [ "//pkg/config", "//pkg/parser/auth", diff --git a/pkg/session/test/privileges/privileges_test.go b/pkg/session/test/privileges/privileges_test.go index 2d2160298b21a..77d62dd8cba2f 100644 --- a/pkg/session/test/privileges/privileges_test.go +++ b/pkg/session/test/privileges/privileges_test.go @@ -43,126 +43,6 @@ func TestSkipWithGrant(t *testing.T) { tk.MustExec("show grants for root") privileges.SkipWithGrant = save2 } -func TestGrantViewRelated(t *testing.T) { - store := testkit.CreateMockStore(t) - - tkRoot := testkit.NewTestKit(t, store) - tkUser := testkit.NewTestKit(t, store) - tkRoot.MustExec("use test") - tkUser.MustExec("use test") - - tkRoot.Session().Auth(&auth.UserIdentity{Username: "root", Hostname: "localhost", CurrentUser: true, AuthUsername: "root", AuthHostname: "%"}, nil, []byte("012345678901234567890"), nil) - - tkRoot.MustExec("create table if not exists t (a int)") - tkRoot.MustExec("create view v_version29 as select * from t") - tkRoot.MustExec("create user 'u_version29'@'%'") - tkRoot.MustExec("grant select on t to u_version29@'%'") - - tkUser.Session().Auth(&auth.UserIdentity{Username: "u_version29", Hostname: "localhost", CurrentUser: true, AuthUsername: "u_version29", AuthHostname: "%"}, nil, []byte("012345678901234567890"), nil) - - tkUser.MustQuery("select current_user();").Check(testkit.Rows("u_version29@%")) - require.Error(t, tkUser.ExecToErr("select * from test.v_version29;")) - tkUser.MustQuery("select current_user();").Check(testkit.Rows("u_version29@%")) - require.Error(t, tkUser.ExecToErr("create view v_version29_c as select * from t;")) - - tkRoot.MustExec(`grant show view, select on v_version29 to 'u_version29'@'%'`) - tkRoot.MustQuery("select table_priv from mysql.tables_priv where host='%' and db='test' and user='u_version29' and table_name='v_version29'").Check(testkit.Rows("Select,Show View")) - - tkUser.MustQuery("select current_user();").Check(testkit.Rows("u_version29@%")) - tkUser.MustQuery("show create view v_version29;") - require.Error(t, tkUser.ExecToErr("create view v_version29_c as select * from v_version29;")) - - tkRoot.MustExec("create view v_version29_c as select * from v_version29;") - tkRoot.MustExec(`grant create view on v_version29_c to 'u_version29'@'%'`) // Can't grant privilege on a non-exist table/view. - tkRoot.MustQuery("select table_priv from mysql.tables_priv where host='%' and db='test' and user='u_version29' and table_name='v_version29_c'").Check(testkit.Rows("Create View")) - tkRoot.MustExec("drop view v_version29_c") - - tkRoot.MustExec(`grant select on v_version29 to 'u_version29'@'%'`) - tkUser.MustQuery("select current_user();").Check(testkit.Rows("u_version29@%")) - tkUser.MustExec("create view v_version29_c as select * from v_version29;") -} - -func TestUpdatePrivilege(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 (id int);") - tk.MustExec("create table t2 (id int);") - tk.MustExec("insert into t1 values (1);") - tk.MustExec("insert into t2 values (2);") - tk.MustExec("create user xxx;") - tk.MustExec("grant all on test.t1 to xxx;") - tk.MustExec("grant select on test.t2 to xxx;") - - tk1 := testkit.NewTestKit(t, store) - tk1.MustExec("use test") - require.NoError(t, tk1.Session().Auth(&auth.UserIdentity{Username: "xxx", Hostname: "localhost"}, []byte(""), []byte(""), nil)) - - tk1.MustMatchErrMsg("update t2 set id = 666 where id = 1;", "privilege check.*") - - // Cover a bug that t1 and t2 both require update privilege. - // In fact, the privlege check for t1 should be update, and for t2 should be select. - tk1.MustExec("update t1,t2 set t1.id = t2.id;") - - // Fix issue 8911 - tk.MustExec("create database weperk") - tk.MustExec("use weperk") - tk.MustExec("create table tb_wehub_server (id int, active_count int, used_count int)") - tk.MustExec("create user 'weperk'") - tk.MustExec("grant all privileges on weperk.* to 'weperk'@'%'") - require.NoError(t, tk1.Session().Auth(&auth.UserIdentity{Username: "weperk", Hostname: "%"}, []byte(""), []byte(""), nil)) - tk1.MustExec("use weperk") - tk1.MustExec("update tb_wehub_server a set a.active_count=a.active_count+1,a.used_count=a.used_count+1 where id=1") - - tk.MustExec("create database service") - tk.MustExec("create database report") - tk.MustExec(`CREATE TABLE service.t1 ( - id int(11) DEFAULT NULL, - a bigint(20) NOT NULL, - b text DEFAULT NULL, - PRIMARY KEY (a) -)`) - tk.MustExec(`CREATE TABLE report.t2 ( - a bigint(20) DEFAULT NULL, - c bigint(20) NOT NULL -)`) - tk.MustExec("grant all privileges on service.* to weperk") - tk.MustExec("grant all privileges on report.* to weperk") - tk1.Session().GetSessionVars().CurrentDB = "" - tk1.MustExec(`update service.t1 s, -report.t2 t -set s.a = t.a -WHERE -s.a = t.a -and t.c >= 1 and t.c <= 10000 -and s.b !='xx';`) - - // Fix issue 10028 - tk.MustExec("create database ap") - tk.MustExec("create database tp") - tk.MustExec("grant all privileges on ap.* to xxx") - tk.MustExec("grant select on tp.* to xxx") - tk.MustExec("create table tp.record( id int,name varchar(128),age int)") - tk.MustExec("insert into tp.record (id,name,age) values (1,'john',18),(2,'lary',19),(3,'lily',18)") - tk.MustExec("create table ap.record( id int,name varchar(128),age int)") - tk.MustExec("insert into ap.record(id) values(1)") - require.NoError(t, tk1.Session().Auth(&auth.UserIdentity{Username: "xxx", Hostname: "localhost"}, []byte(""), []byte(""), nil)) - tk1.MustExec("update ap.record t inner join tp.record tt on t.id=tt.id set t.name=tt.name") -} - -func TestDBUserNameLength(t *testing.T) { - store := testkit.CreateMockStore(t) - - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("create table if not exists t (a int)") - // Test username length can be longer than 16. - tk.MustExec(`CREATE USER 'abcddfjakldfjaldddds'@'%' identified by ''`) - tk.MustExec(`grant all privileges on test.* to 'abcddfjakldfjaldddds'@'%'`) - tk.MustExec(`grant all privileges on test.t to 'abcddfjakldfjaldddds'@'%'`) -} func TestSessionAuth(t *testing.T) { store := testkit.CreateMockStore(t) diff --git a/pkg/session/test/tidb_test.go b/pkg/session/test/tidb_test.go new file mode 100644 index 0000000000000..4c185ffeca756 --- /dev/null +++ b/pkg/session/test/tidb_test.go @@ -0,0 +1,75 @@ +// Copyright 2023 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 test + +import ( + "testing" + + "github.com/pingcap/tidb/pkg/domain" + "github.com/pingcap/tidb/pkg/kv" + "github.com/pingcap/tidb/pkg/planner/core" + "github.com/pingcap/tidb/pkg/session" + "github.com/pingcap/tidb/pkg/tablecodec" + "github.com/stretchr/testify/require" +) + +func TestParseErrorWarn(t *testing.T) { + ctx := core.MockContext() + defer func() { + domain.GetDomain(ctx).StatsHandle().Close() + }() + nodes, err := session.Parse(ctx, "select /*+ adf */ 1") + require.NoError(t, err) + require.Len(t, nodes, 1) + require.Len(t, ctx.GetSessionVars().StmtCtx.GetWarnings(), 1) + + _, err = session.Parse(ctx, "select") + require.Error(t, err) +} + +func TestKeysNeedLock(t *testing.T) { + rowKey := tablecodec.EncodeRowKeyWithHandle(1, kv.IntHandle(1)) + uniqueIndexKey := tablecodec.EncodeIndexSeekKey(1, 1, []byte{1}) + nonUniqueIndexKey := tablecodec.EncodeIndexSeekKey(1, 2, []byte{1}) + uniqueValue := make([]byte, 8) + uniqueUntouched := append(uniqueValue, '1') + nonUniqueVal := []byte{'0'} + nonUniqueUntouched := []byte{'1'} + var deleteVal []byte + rowVal := []byte{'a', 'b', 'c'} + tests := []struct { + key []byte + val []byte + need bool + }{ + {rowKey, rowVal, true}, + {rowKey, deleteVal, true}, + {nonUniqueIndexKey, nonUniqueVal, false}, + {nonUniqueIndexKey, nonUniqueUntouched, false}, + {uniqueIndexKey, uniqueValue, true}, + {uniqueIndexKey, uniqueUntouched, false}, + {uniqueIndexKey, deleteVal, false}, + } + + for _, test := range tests { + need := session.KeyNeedToLock(test.key, test.val, 0) + require.Equal(t, test.need, need) + + flag := kv.KeyFlags(1) + need = session.KeyNeedToLock(test.key, test.val, flag) + require.True(t, flag.HasPresumeKeyNotExists()) + require.True(t, need) + } +} diff --git a/pkg/session/test/txn/BUILD.bazel b/pkg/session/test/txn/BUILD.bazel index d3626ad0ca883..34f3c89ef7c6f 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 = 11, + shard_count = 9, deps = [ "//pkg/config", "//pkg/kv", diff --git a/pkg/session/test/txn/txn_test.go b/pkg/session/test/txn/txn_test.go index 3f5893157ea34..c1a1845feef45 100644 --- a/pkg/session/test/txn/txn_test.go +++ b/pkg/session/test/txn/txn_test.go @@ -316,32 +316,6 @@ func TestAutoCommitRespectsReadOnly(t *testing.T) { tk1.MustExec("SET GLOBAL tidb_super_read_only = 0") } -func TestRetryForCurrentTxn(t *testing.T) { - store := testkit.CreateMockStore(t) - - setTxnTk := testkit.NewTestKit(t, store) - setTxnTk.MustExec("set global tidb_txn_mode=''") - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - - tk.MustExec("create table history (a int)") - tk.MustExec("insert history values (1)") - - // Firstly, enable retry. - tk.MustExec("set tidb_disable_txn_auto_retry = 0") - tk.MustExec("begin") - tk.MustExec("update history set a = 2") - // Disable retry now. - tk.MustExec("set tidb_disable_txn_auto_retry = 1") - - tk1 := testkit.NewTestKit(t, store) - tk1.MustExec("use test") - tk1.MustExec("update history set a = 3") - - tk.MustExec("commit") - tk.MustQuery("select * from history").Check(testkit.Rows("2")) -} - func TestBatchCommit(t *testing.T) { store := testkit.CreateMockStore(t) setTxnTk := testkit.NewTestKit(t, store) @@ -604,28 +578,3 @@ func TestInTrans(t *testing.T) { tk.MustExec("rollback") require.False(t, txn.Valid()) } - -func TestCommitRetryCount(t *testing.T) { - store := testkit.CreateMockStore(t) - - setTxnTk := testkit.NewTestKit(t, store) - setTxnTk.MustExec("set global tidb_txn_mode=''") - tk1 := testkit.NewTestKit(t, store) - tk1.MustExec("use test") - tk2 := testkit.NewTestKit(t, store) - tk2.MustExec("use test") - - tk1.MustExec("create table no_retry (id int)") - tk1.MustExec("insert into no_retry values (1)") - tk1.MustExec("set @@tidb_retry_limit = 0") - - tk1.MustExec("begin") - tk1.MustExec("update no_retry set id = 2") - - tk2.MustExec("begin") - tk2.MustExec("update no_retry set id = 3") - tk2.MustExec("commit") - - // No auto retry because retry limit is set to 0. - require.Error(t, tk1.ExecToErr("commit")) -} diff --git a/pkg/session/test/variable/BUILD.bazel b/pkg/session/test/variable/BUILD.bazel index 380a6dff7e4b8..3f0a3dabf64f4 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 = 10, + shard_count = 9, deps = [ "//pkg/config", "//pkg/kv", diff --git a/pkg/session/test/variable/variable_test.go b/pkg/session/test/variable/variable_test.go index f4a57c23abcca..776489678396c 100644 --- a/pkg/session/test/variable/variable_test.go +++ b/pkg/session/test/variable/variable_test.go @@ -362,28 +362,3 @@ func TestIsolationRead(t *testing.T) { require.True(t, hasTiFlash) require.False(t, hasTiKV) } - -func TestIndexMergeRuntimeStats(t *testing.T) { - store := testkit.CreateMockStore(t) - - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("set @@tidb_enable_index_merge = 1") - tk.MustExec("create table t1(id int primary key, a int, b int, c int, d int)") - tk.MustExec("create index t1a on t1(a)") - tk.MustExec("create index t1b on t1(b)") - tk.MustExec("insert into t1 values(1,1,1,1,1),(2,2,2,2,2),(3,3,3,3,3),(4,4,4,4,4),(5,5,5,5,5)") - rows := tk.MustQuery("explain analyze select /*+ use_index_merge(t1, primary, t1a) */ * from t1 where id < 2 or a > 4;").Rows() - require.Len(t, rows, 4) - explain := fmt.Sprintf("%v", rows[0]) - pattern := ".*time:.*loops:.*index_task:{fetch_handle:.*, merge:.*}.*table_task:{num.*concurrency.*fetch_row.*wait_time.*}.*" - require.Regexp(t, pattern, explain) - tableRangeExplain := fmt.Sprintf("%v", rows[1]) - indexExplain := fmt.Sprintf("%v", rows[2]) - tableExplain := fmt.Sprintf("%v", rows[3]) - require.Regexp(t, ".*time:.*loops:.*cop_task:.*", tableRangeExplain) - require.Regexp(t, ".*time:.*loops:.*cop_task:.*", indexExplain) - require.Regexp(t, ".*time:.*loops:.*cop_task:.*", tableExplain) - tk.MustExec("set @@tidb_enable_collect_execution_info=0;") - tk.MustQuery("select /*+ use_index_merge(t1, primary, t1a) */ * from t1 where id < 2 or a > 4 order by a").Check(testkit.Rows("1 1 1 1 1", "5 5 5 5 5")) -} diff --git a/pkg/session/testutil.go b/pkg/session/testutil.go index f73533a508454..78eca23d1a63e 100644 --- a/pkg/session/testutil.go +++ b/pkg/session/testutil.go @@ -21,6 +21,7 @@ import ( "github.com/pingcap/tidb/pkg/domain" "github.com/pingcap/tidb/pkg/expression" "github.com/pingcap/tidb/pkg/kv" + sessiontypes "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/store/mockstore" "github.com/pingcap/tidb/pkg/testkit/testenv" "github.com/pingcap/tidb/pkg/util/sqlexec" @@ -50,7 +51,7 @@ func CreateStoreAndBootstrap(t *testing.T) (kv.Storage, *domain.Domain) { var sessionKitIDGenerator atomicutil.Uint64 // CreateSessionAndSetID creates a session and set connection ID. -func CreateSessionAndSetID(t *testing.T, store kv.Storage) Session { +func CreateSessionAndSetID(t *testing.T, store kv.Storage) sessiontypes.Session { se, err := CreateSession4Test(store) se.SetConnectionID(sessionKitIDGenerator.Inc()) require.NoError(t, err) @@ -58,7 +59,7 @@ func CreateSessionAndSetID(t *testing.T, store kv.Storage) Session { } // MustExec executes a sql statement and asserts no error occurs. -func MustExec(t *testing.T, se Session, sql string, args ...interface{}) { +func MustExec(t *testing.T, se sessiontypes.Session, sql string, args ...interface{}) { rs, err := exec(se, sql, args...) require.NoError(t, err) if rs != nil { @@ -67,13 +68,13 @@ func MustExec(t *testing.T, se Session, sql string, args ...interface{}) { } // MustExecToRecodeSet executes a sql statement and asserts no error occurs. -func MustExecToRecodeSet(t *testing.T, se Session, sql string, args ...interface{}) sqlexec.RecordSet { +func MustExecToRecodeSet(t *testing.T, se sessiontypes.Session, sql string, args ...interface{}) sqlexec.RecordSet { rs, err := exec(se, sql, args...) require.NoError(t, err) return rs } -func exec(se Session, sql string, args ...interface{}) (sqlexec.RecordSet, error) { +func exec(se sessiontypes.Session, sql string, args ...interface{}) (sqlexec.RecordSet, error) { ctx := context.Background() if len(args) == 0 { rs, err := se.Execute(ctx, sql) diff --git a/pkg/session/tidb.go b/pkg/session/tidb.go index 16e3a2f423678..d4beca68160c5 100644 --- a/pkg/session/tidb.go +++ b/pkg/session/tidb.go @@ -35,6 +35,7 @@ import ( "github.com/pingcap/tidb/pkg/parser" "github.com/pingcap/tidb/pkg/parser/ast" session_metrics "github.com/pingcap/tidb/pkg/session/metrics" + "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/sessiontxn" @@ -376,7 +377,7 @@ func GetRows4Test(ctx context.Context, _ sessionctx.Context, rs sqlexec.RecordSe } // ResultSetToStringSlice changes the RecordSet to [][]string. -func ResultSetToStringSlice(ctx context.Context, s Session, rs sqlexec.RecordSet) ([][]string, error) { +func ResultSetToStringSlice(ctx context.Context, s types.Session, rs sqlexec.RecordSet) ([][]string, error) { rows, err := GetRows4Test(ctx, s, rs) if err != nil { return nil, err diff --git a/pkg/session/tidb_test.go b/pkg/session/tidb_test.go index 527f2cba37c98..ef672898045f8 100644 --- a/pkg/session/tidb_test.go +++ b/pkg/session/tidb_test.go @@ -18,11 +18,8 @@ import ( "context" "testing" - "github.com/pingcap/tidb/pkg/domain" "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/parser/ast" - "github.com/pingcap/tidb/pkg/planner/core" - "github.com/pingcap/tidb/pkg/tablecodec" "github.com/pingcap/tidb/pkg/util" "github.com/stretchr/testify/require" ) @@ -63,52 +60,3 @@ func TestSysSessionPoolGoroutineLeak(t *testing.T) { } wg.Wait() } - -func TestParseErrorWarn(t *testing.T) { - ctx := core.MockContext() - defer func() { - domain.GetDomain(ctx).StatsHandle().Close() - }() - nodes, err := Parse(ctx, "select /*+ adf */ 1") - require.NoError(t, err) - require.Len(t, nodes, 1) - require.Len(t, ctx.GetSessionVars().StmtCtx.GetWarnings(), 1) - - _, err = Parse(ctx, "select") - require.Error(t, err) -} - -func TestKeysNeedLock(t *testing.T) { - rowKey := tablecodec.EncodeRowKeyWithHandle(1, kv.IntHandle(1)) - uniqueIndexKey := tablecodec.EncodeIndexSeekKey(1, 1, []byte{1}) - nonUniqueIndexKey := tablecodec.EncodeIndexSeekKey(1, 2, []byte{1}) - uniqueValue := make([]byte, 8) - uniqueUntouched := append(uniqueValue, '1') - nonUniqueVal := []byte{'0'} - nonUniqueUntouched := []byte{'1'} - var deleteVal []byte - rowVal := []byte{'a', 'b', 'c'} - tests := []struct { - key []byte - val []byte - need bool - }{ - {rowKey, rowVal, true}, - {rowKey, deleteVal, true}, - {nonUniqueIndexKey, nonUniqueVal, false}, - {nonUniqueIndexKey, nonUniqueUntouched, false}, - {uniqueIndexKey, uniqueValue, true}, - {uniqueIndexKey, uniqueUntouched, false}, - {uniqueIndexKey, deleteVal, false}, - } - - for _, test := range tests { - need := keyNeedToLock(test.key, test.val, 0) - require.Equal(t, test.need, need) - - flag := kv.KeyFlags(1) - need = keyNeedToLock(test.key, test.val, flag) - require.True(t, flag.HasPresumeKeyNotExists()) - require.True(t, need) - } -} diff --git a/pkg/session/txn.go b/pkg/session/txn.go index 3ab0a6e22c781..17fdbbf1ea278 100644 --- a/pkg/session/txn.go +++ b/pkg/session/txn.go @@ -569,7 +569,7 @@ func (txn *LazyTxn) KeysNeedToLock() ([]kv.Key, error) { keys := make([]kv.Key, 0, txn.countHint()) buf := txn.Transaction.GetMemBuffer() buf.InspectStage(txn.stagingHandle, func(k kv.Key, flags kv.KeyFlags, v []byte) { - if !keyNeedToLock(k, v, flags) { + if !KeyNeedToLock(k, v, flags) { return } keys = append(keys, k) @@ -603,7 +603,8 @@ func (txn *LazyTxn) Wait(ctx context.Context, sctx sessionctx.Context) (kv.Trans return txn, nil } -func keyNeedToLock(k, v []byte, flags kv.KeyFlags) bool { +// KeyNeedToLock returns true if the key need to lock. +func KeyNeedToLock(k, v []byte, flags kv.KeyFlags) bool { isTableKey := bytes.HasPrefix(k, tablecodec.TablePrefix()) if !isTableKey { // meta key always need to lock. diff --git a/pkg/session/types/BUILD.bazel b/pkg/session/types/BUILD.bazel new file mode 100644 index 0000000000000..c7a5e83dcb3c4 --- /dev/null +++ b/pkg/session/types/BUILD.bazel @@ -0,0 +1,21 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "types", + srcs = ["sesson_interface.go"], + importpath = "github.com/pingcap/tidb/pkg/session/types", + visibility = ["//visibility:public"], + deps = [ + "//pkg/expression", + "//pkg/extension", + "//pkg/parser/ast", + "//pkg/parser/auth", + "//pkg/privilege/conn", + "//pkg/session/txninfo", + "//pkg/sessionctx", + "//pkg/sessionctx/sessionstates", + "//pkg/util", + "//pkg/util/sqlexec", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + ], +) diff --git a/pkg/session/types/sesson_interface.go b/pkg/session/types/sesson_interface.go new file mode 100644 index 0000000000000..62b31b80709d0 --- /dev/null +++ b/pkg/session/types/sesson_interface.go @@ -0,0 +1,91 @@ +// Copyright 2023 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 types + +import ( + "context" + "crypto/tls" + "time" + + "github.com/pingcap/kvproto/pkg/kvrpcpb" + "github.com/pingcap/tidb/pkg/expression" + "github.com/pingcap/tidb/pkg/extension" + "github.com/pingcap/tidb/pkg/parser/ast" + "github.com/pingcap/tidb/pkg/parser/auth" + "github.com/pingcap/tidb/pkg/privilege/conn" + "github.com/pingcap/tidb/pkg/session/txninfo" + "github.com/pingcap/tidb/pkg/sessionctx" + "github.com/pingcap/tidb/pkg/sessionctx/sessionstates" + "github.com/pingcap/tidb/pkg/util" + "github.com/pingcap/tidb/pkg/util/sqlexec" +) + +// Session context, it is consistent with the lifecycle of a client connection. +type Session interface { + sessionctx.Context + Status() uint16 // Flag of current status, such as autocommit. + LastInsertID() uint64 // LastInsertID is the last inserted auto_increment ID. + LastMessage() string // LastMessage is the info message that may be generated by last command + AffectedRows() uint64 // Affected rows by latest executed stmt. + // Execute is deprecated, and only used by plugins. Use ExecuteStmt() instead. + Execute(context.Context, string) ([]sqlexec.RecordSet, error) // Execute a sql statement. + // ExecuteStmt executes a parsed statement. + ExecuteStmt(context.Context, ast.StmtNode) (sqlexec.RecordSet, error) + // Parse is deprecated, use ParseWithParams() instead. + Parse(ctx context.Context, sql string) ([]ast.StmtNode, error) + // ExecuteInternal is a helper around ParseWithParams() and ExecuteStmt(). It is not allowed to execute multiple statements. + ExecuteInternal(context.Context, string, ...interface{}) (sqlexec.RecordSet, error) + String() string // String is used to debug. + CommitTxn(context.Context) error + RollbackTxn(context.Context) + // PrepareStmt executes prepare statement in binary protocol. + PrepareStmt(sql string) (stmtID uint32, paramCount int, fields []*ast.ResultField, err error) + // ExecutePreparedStmt executes a prepared statement. + // Deprecated: please use ExecuteStmt, this function is left for testing only. + // TODO: remove ExecutePreparedStmt. + ExecutePreparedStmt(ctx context.Context, stmtID uint32, param []expression.Expression) (sqlexec.RecordSet, error) + DropPreparedStmt(stmtID uint32) error + // SetSessionStatesHandler sets SessionStatesHandler for type stateType. + SetSessionStatesHandler(stateType sessionstates.SessionStateType, handler sessionctx.SessionStatesHandler) + SetClientCapability(uint32) // Set client capability flags. + SetConnectionID(uint64) + SetCommandValue(byte) + SetCompressionAlgorithm(int) + SetCompressionLevel(int) + SetProcessInfo(string, time.Time, byte, uint64) + SetTLSState(*tls.ConnectionState) + SetCollation(coID int) error + 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) + // Return the information of the txn current running + TxnInfo() *txninfo.TxnInfo + // PrepareTxnCtx is exported for test. + PrepareTxnCtx(context.Context) error + // FieldList returns fields list of a table. + FieldList(tableName string) (fields []*ast.ResultField, err error) + SetPort(port string) + + // set cur session operations allowed when tikv disk full happens. + SetDiskFullOpt(level kvrpcpb.DiskFullOpt) + GetDiskFullOpt() kvrpcpb.DiskFullOpt + ClearDiskFullOpt() + + // SetExtensions sets the `*extension.SessionExtensions` object + SetExtensions(extensions *extension.SessionExtensions) +} diff --git a/pkg/sessionctx/stmtctx/BUILD.bazel b/pkg/sessionctx/stmtctx/BUILD.bazel index f768b8c2eb7a1..b9602e725fe91 100644 --- a/pkg/sessionctx/stmtctx/BUILD.bazel +++ b/pkg/sessionctx/stmtctx/BUILD.bazel @@ -7,6 +7,7 @@ go_library( visibility = ["//visibility:public"], deps = [ "//pkg/domain/resourcegroup", + "//pkg/errctx", "//pkg/parser", "//pkg/parser/ast", "//pkg/parser/model", diff --git a/pkg/sessionctx/stmtctx/stmtctx.go b/pkg/sessionctx/stmtctx/stmtctx.go index 2216d05ef3f99..5e3a929c051b5 100644 --- a/pkg/sessionctx/stmtctx/stmtctx.go +++ b/pkg/sessionctx/stmtctx/stmtctx.go @@ -29,6 +29,7 @@ import ( "github.com/pingcap/errors" "github.com/pingcap/tidb/pkg/domain/resourcegroup" + "github.com/pingcap/tidb/pkg/errctx" "github.com/pingcap/tidb/pkg/parser" "github.com/pingcap/tidb/pkg/parser/ast" "github.com/pingcap/tidb/pkg/parser/model" @@ -158,6 +159,9 @@ type StatementContext struct { // typeCtx is used to indicate how to make the type conversation. typeCtx types.Context + // errCtx is used to indicate how to handle the errors + errCtx errctx.Context + // Set the following variables before execution StmtHints @@ -412,8 +416,6 @@ type StatementContext struct { useChunkAlloc bool // Check if TiFlash read engine is removed due to strict sql mode. TiFlashEngineRemovedDueToStrictSQLMode bool - // CanonicalHashCode try to get the canonical hash code from expression. - CanonicalHashCode bool // StaleTSOProvider is used to provide stale timestamp oracle for read-only transactions. StaleTSOProvider struct { sync.Mutex @@ -431,7 +433,7 @@ func NewStmtCtx() *StatementContext { // NewStmtCtxWithTimeZone creates a new StatementContext with the given timezone func NewStmtCtxWithTimeZone(tz *time.Location) *StatementContext { - intest.Assert(tz) + intest.AssertNotNil(tz) sc := &StatementContext{} sc.typeCtx = types.NewContext(types.DefaultStmtFlags, tz, sc.AppendWarning) return sc @@ -446,12 +448,17 @@ func (sc *StatementContext) Reset() { // TimeZone returns the timezone of the type context func (sc *StatementContext) TimeZone() *time.Location { + intest.AssertNotNil(sc) + if sc == nil { + return time.UTC + } + return sc.typeCtx.Location() } // SetTimeZone sets the timezone func (sc *StatementContext) SetTimeZone(tz *time.Location) { - intest.Assert(tz) + intest.AssertNotNil(tz) sc.typeCtx = sc.typeCtx.WithLocation(tz) } @@ -460,6 +467,23 @@ func (sc *StatementContext) TypeCtx() types.Context { return sc.typeCtx } +// ErrCtx returns the error context +// TODO: add a cache to the `ErrCtx` if needed, though it's not a big burden to generate `ErrCtx` everytime. +func (sc *StatementContext) ErrCtx() errctx.Context { + ctx := errctx.NewContext(sc.AppendWarning) + + if sc.TypeFlags().IgnoreTruncateErr() { + ctx = ctx.WithErrGroupLevel(errctx.ErrGroupTruncate, errctx.LevelIgnore) + } else if sc.TypeFlags().TruncateAsWarning() { + ctx = ctx.WithErrGroupLevel(errctx.ErrGroupTruncate, errctx.LevelWarn) + } + + if sc.OverflowAsWarning { + ctx = ctx.WithErrGroupLevel(errctx.ErrGroupOverflow, errctx.LevelWarn) + } + return ctx +} + // TypeFlags returns the type flags func (sc *StatementContext) TypeFlags() types.Flags { return sc.typeCtx.Flags() @@ -471,10 +495,21 @@ func (sc *StatementContext) SetTypeFlags(flags types.Flags) { } // HandleTruncate ignores or returns the error based on the TypeContext inside. +// TODO: replace this function with `HandleError`, for `TruncatedError` they should have the same effect. func (sc *StatementContext) HandleTruncate(err error) error { return sc.typeCtx.HandleTruncate(err) } +// HandleError handles the error based on `ErrCtx()` +func (sc *StatementContext) HandleError(err error) error { + intest.AssertNotNil(sc) + if sc == nil { + return err + } + errCtx := sc.ErrCtx() + return errCtx.HandleError(err) +} + // StmtHints are SessionVars related sql hints. type StmtHints struct { // Hint Information diff --git a/pkg/sessionctx/variable/session.go b/pkg/sessionctx/variable/session.go index 23e7df757cbbd..567d5fb5ed55e 100644 --- a/pkg/sessionctx/variable/session.go +++ b/pkg/sessionctx/variable/session.go @@ -1559,6 +1559,9 @@ type SessionVars struct { // OptObjectiveModerate: The default value. The optimizer considers the real-time stats (real-time row count, modify count). // OptObjectiveDeterminate: The optimizer doesn't consider the real-time stats. OptObjective string + + CompressionAlgorithm int + CompressionLevel int } // GetOptimizerFixControlMap returns the specified value of the optimizer fix control. diff --git a/pkg/sessionctx/variable/sysvar.go b/pkg/sessionctx/variable/sysvar.go index c78863e2a17dd..c481344a693fb 100644 --- a/pkg/sessionctx/variable/sysvar.go +++ b/pkg/sessionctx/variable/sysvar.go @@ -918,7 +918,7 @@ var defaultSysVars = []*SysVar{ }}, {Scope: ScopeGlobal, Name: TiDBAutoAnalyzePartitionBatchSize, Value: strconv.Itoa(DefTiDBAutoAnalyzePartitionBatchSize), - Type: TypeUnsigned, MinValue: 1, MaxValue: 1024, + Type: TypeUnsigned, MinValue: 1, MaxValue: mysql.PartitionCountLimit, SetGlobal: func(_ context.Context, vars *SessionVars, s string) error { var val int64 val, err := strconv.ParseInt(s, 10, 64) diff --git a/pkg/sessionctx/variable/tidb_vars.go b/pkg/sessionctx/variable/tidb_vars.go index 5d4e827aec932..5e8f839450202 100644 --- a/pkg/sessionctx/variable/tidb_vars.go +++ b/pkg/sessionctx/variable/tidb_vars.go @@ -1264,7 +1264,7 @@ const ( DefTiDBEnable1PC = false DefTiDBGuaranteeLinearizability = true DefTiDBAnalyzeVersion = 2 - DefTiDBAutoAnalyzePartitionBatchSize = 1 + DefTiDBAutoAnalyzePartitionBatchSize = 128 DefTiDBEnableIndexMergeJoin = false DefTiDBTrackAggregateMemoryUsage = true DefCTEMaxRecursionDepth = 1000 diff --git a/pkg/sessionctx/variable/varsutil.go b/pkg/sessionctx/variable/varsutil.go index 765367a999526..46e13f2e0a8c4 100644 --- a/pkg/sessionctx/variable/varsutil.go +++ b/pkg/sessionctx/variable/varsutil.go @@ -441,7 +441,7 @@ func parseTSFromNumberOrTime(s *SessionVars, sVal string) (uint64, error) { return tso, nil } - t, err := types.ParseTime(s.StmtCtx.TypeCtx(), sVal, mysql.TypeTimestamp, types.MaxFsp, nil) + t, err := types.ParseTime(s.StmtCtx.TypeCtx(), sVal, mysql.TypeTimestamp, types.MaxFsp) if err != nil { return 0, err } @@ -456,7 +456,7 @@ func setTxnReadTS(s *SessionVars, sVal string) error { return nil } - t, err := types.ParseTime(s.StmtCtx.TypeCtx(), sVal, mysql.TypeTimestamp, types.MaxFsp, nil) + t, err := types.ParseTime(s.StmtCtx.TypeCtx(), sVal, mysql.TypeTimestamp, types.MaxFsp) if err != nil { return err } diff --git a/pkg/sessiontxn/staleread/util.go b/pkg/sessiontxn/staleread/util.go index e28d506946bc7..0f578694b5b80 100644 --- a/pkg/sessiontxn/staleread/util.go +++ b/pkg/sessiontxn/staleread/util.go @@ -16,7 +16,6 @@ package staleread import ( "context" - "strconv" "time" "github.com/pingcap/failpoint" @@ -31,7 +30,6 @@ import ( ) // CalculateAsOfTsExpr calculates the TsExpr of AsOfClause to get a StartTS. -// tsExpr could be an expression of TSO or a timestamp func CalculateAsOfTsExpr(ctx context.Context, sctx sessionctx.Context, tsExpr ast.ExprNode) (uint64, error) { sctx.GetSessionVars().StmtCtx.SetStaleTSOProvider(func() (uint64, error) { failpoint.Inject("mockStaleReadTSO", func(val failpoint.Value) (uint64, error) { @@ -51,11 +49,6 @@ func CalculateAsOfTsExpr(ctx context.Context, sctx sessionctx.Context, tsExpr as return 0, errAsOf.FastGenWithCause("as of timestamp cannot be NULL") } - // if tsVal is TSO already, return it directly. - if tso, err := strconv.ParseUint(tsVal.GetString(), 10, 64); err == nil { - return tso, nil - } - toTypeTimestamp := types.NewFieldType(mysql.TypeTimestamp) // We need at least the millionsecond here, so set fsp to 3. toTypeTimestamp.SetDecimal(3) diff --git a/pkg/statistics/BUILD.bazel b/pkg/statistics/BUILD.bazel index 99950aab6f232..d6a2cb58b6c10 100644 --- a/pkg/statistics/BUILD.bazel +++ b/pkg/statistics/BUILD.bazel @@ -62,6 +62,8 @@ go_test( name = "statistics_test", timeout = "short", srcs = [ + "bench_daily_test.go", + "builder_test.go", "cmsketch_test.go", "fmsketch_test.go", "histogram_bench_test.go", @@ -75,7 +77,7 @@ go_test( data = glob(["testdata/**"]), embed = [":statistics"], flaky = True, - shard_count = 33, + shard_count = 34, deps = [ "//pkg/config", "//pkg/parser/ast", @@ -89,9 +91,11 @@ go_test( "//pkg/testkit/testmain", "//pkg/testkit/testsetup", "//pkg/types", + "//pkg/util/benchdaily", "//pkg/util/chunk", "//pkg/util/codec", "//pkg/util/collate", + "//pkg/util/memory", "//pkg/util/mock", "//pkg/util/ranger", "//pkg/util/sqlexec", diff --git a/pkg/executor/test/partitiontest/main_test.go b/pkg/statistics/bench_daily_test.go similarity index 77% rename from pkg/executor/test/partitiontest/main_test.go rename to pkg/statistics/bench_daily_test.go index 139a1418e142b..a7e8474b1549b 100644 --- a/pkg/executor/test/partitiontest/main_test.go +++ b/pkg/statistics/bench_daily_test.go @@ -12,4 +12,16 @@ // See the License for the specific language governing permissions and // limitations under the License. -package partitiontest +package statistics + +import ( + "testing" + + "github.com/pingcap/tidb/pkg/util/benchdaily" +) + +func TestBenchDaily(*testing.T) { + benchdaily.Run( + BenchmarkBuildHistAndTopN, + ) +} diff --git a/pkg/statistics/builder.go b/pkg/statistics/builder.go index 4d6bf5d3a3458..8d04945c9cb36 100644 --- a/pkg/statistics/builder.go +++ b/pkg/statistics/builder.go @@ -127,7 +127,7 @@ func BuildColumnHist(ctx sessionctx.Context, numBuckets, id int64, collector *Sa } sc := ctx.GetSessionVars().StmtCtx samples := collector.Samples - samples, err := SortSampleItems(sc, samples) + err := sortSampleItems(sc, samples) if err != nil { return nil, err } @@ -241,6 +241,7 @@ func BuildHistAndTopN( tp *types.FieldType, isColumn bool, memTracker *memory.Tracker, + needExtStats bool, ) (*Histogram, *TopN, error) { bufferedMemSize := int64(0) bufferedReleaseSize := int64(0) @@ -253,7 +254,8 @@ func BuildHistAndTopN( var getComparedBytes func(datum types.Datum) ([]byte, error) if isColumn { getComparedBytes = func(datum types.Datum) ([]byte, error) { - encoded, err := codec.EncodeKey(ctx.GetSessionVars().StmtCtx, nil, datum) + encoded, err := codec.EncodeKey(ctx.GetSessionVars().StmtCtx.TimeZone(), nil, datum) + err = ctx.GetSessionVars().StmtCtx.HandleError(err) if memTracker != nil { // tmp memory usage deltaSize := int64(cap(encoded)) @@ -277,8 +279,15 @@ func BuildHistAndTopN( return NewHistogram(id, ndv, nullCount, 0, tp, 0, collector.TotalSize), nil, nil } sc := ctx.GetSessionVars().StmtCtx - samples := collector.Samples - samples, err := SortSampleItems(sc, samples) + var samples []*SampleItem + // if we need to build extended stats, we need to copy the samples to avoid modifying the original samples. + if needExtStats { + samples = make([]*SampleItem, len(collector.Samples)) + copy(samples, collector.Samples) + } else { + samples = collector.Samples + } + err := sortSampleItems(sc, samples) if err != nil { return nil, nil, err } diff --git a/pkg/statistics/builder_ext_stats.go b/pkg/statistics/builder_ext_stats.go index 4be47ffbfc2cd..098e6b35203e3 100644 --- a/pkg/statistics/builder_ext_stats.go +++ b/pkg/statistics/builder_ext_stats.go @@ -105,7 +105,7 @@ func fillExtStatsCorrVals(sctx sessionctx.Context, item *ExtendedStatsItem, cols sc := sctx.GetSessionVars().StmtCtx var err error - samplesX, err = SortSampleItems(sc, samplesX) + err = sortSampleItems(sc, samplesX) if err != nil { return nil } @@ -118,7 +118,9 @@ func fillExtStatsCorrVals(sctx sessionctx.Context, item *ExtendedStatsItem, cols itemY.Ordinal = i samplesYInXOrder = append(samplesYInXOrder, itemY) } - samplesYInYOrder, err := SortSampleItems(sc, samplesYInXOrder) + samplesYInYOrder := make([]*SampleItem, len(samplesYInXOrder)) + copy(samplesYInYOrder, samplesYInXOrder) + err = sortSampleItems(sc, samplesYInYOrder) if err != nil { return nil } diff --git a/pkg/statistics/builder_test.go b/pkg/statistics/builder_test.go new file mode 100644 index 0000000000000..732b490004c1b --- /dev/null +++ b/pkg/statistics/builder_test.go @@ -0,0 +1,77 @@ +// Copyright 2023 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 statistics + +import ( + "testing" + + "github.com/pingcap/tidb/pkg/parser/mysql" + "github.com/pingcap/tidb/pkg/types" + "github.com/pingcap/tidb/pkg/util/memory" + "github.com/pingcap/tidb/pkg/util/mock" + "github.com/stretchr/testify/require" +) + +// BenchmarkBuildHistAndTopN is used to benchmark the performance of BuildHistAndTopN. +// go test -benchmem -run=^$ -bench ^BenchmarkBuildHistAndTopN$ github.com/pingcap/tidb/pkg/statistics +func BenchmarkBuildHistAndTopN(b *testing.B) { + ctx := mock.NewContext() + const cnt = 1000_000 + sketch := NewFMSketch(cnt) + data := make([]*SampleItem, 0, 8) + for i := 1; i <= cnt; i++ { + d := types.NewIntDatum(int64(i)) + err := sketch.InsertValue(ctx.GetSessionVars().StmtCtx, d) + require.NoError(b, err) + data = append(data, &SampleItem{Value: d}) + } + for i := 1; i < 10; i++ { + d := types.NewIntDatum(int64(2)) + err := sketch.InsertValue(ctx.GetSessionVars().StmtCtx, d) + require.NoError(b, err) + data = append(data, &SampleItem{Value: d}) + } + for i := 1; i < 7; i++ { + d := types.NewIntDatum(int64(4)) + err := sketch.InsertValue(ctx.GetSessionVars().StmtCtx, d) + require.NoError(b, err) + data = append(data, &SampleItem{Value: d}) + } + for i := 1; i < 5; i++ { + d := types.NewIntDatum(int64(7)) + err := sketch.InsertValue(ctx.GetSessionVars().StmtCtx, d) + require.NoError(b, err) + data = append(data, &SampleItem{Value: d}) + } + for i := 1; i < 3; i++ { + d := types.NewIntDatum(int64(11)) + err := sketch.InsertValue(ctx.GetSessionVars().StmtCtx, d) + require.NoError(b, err) + data = append(data, &SampleItem{Value: d}) + } + collector := &SampleCollector{ + Samples: data, + NullCount: 0, + Count: int64(len(data)), + FMSketch: sketch, + TotalSize: int64(len(data)) * 8, + } + filedType := types.NewFieldType(mysql.TypeLong) + memoryTracker := memory.NewTracker(10, 1024*1024*1024) + b.ResetTimer() + for i := 0; i < b.N; i++ { + _, _, _ = BuildHistAndTopN(ctx, 256, 500, 0, collector, filedType, true, memoryTracker, false) + } +} diff --git a/pkg/statistics/cmsketch.go b/pkg/statistics/cmsketch.go index 9643e6b7188b2..5851749238052 100644 --- a/pkg/statistics/cmsketch.go +++ b/pkg/statistics/cmsketch.go @@ -23,6 +23,7 @@ import ( "slices" "sort" "strings" + "time" "github.com/pingcap/errors" "github.com/pingcap/failpoint" @@ -259,10 +260,15 @@ func (c *CMSketch) SubValue(h1, h2 uint64, count uint64) { // QueryValue is used to query the count of specified value. func QueryValue(sctx sessionctx.Context, c *CMSketch, t *TopN, val types.Datum) (uint64, error) { var sc *stmtctx.StatementContext + tz := time.UTC if sctx != nil { sc = sctx.GetSessionVars().StmtCtx + tz = sc.TimeZone() + } + rawData, err := tablecodec.EncodeValue(tz, nil, val) + if sc != nil { + err = sc.HandleError(err) } - rawData, err := tablecodec.EncodeValue(sc, nil, val) if err != nil { return 0, errors.Trace(err) } diff --git a/pkg/statistics/cmsketch_test.go b/pkg/statistics/cmsketch_test.go index 7cbdfc62450d3..0258fc0630102 100644 --- a/pkg/statistics/cmsketch_test.go +++ b/pkg/statistics/cmsketch_test.go @@ -19,6 +19,7 @@ import ( "math" "math/rand" "testing" + "time" "github.com/pingcap/errors" "github.com/pingcap/tidb/pkg/parser/mysql" @@ -29,7 +30,7 @@ import ( ) func (c *CMSketch) insert(val *types.Datum) error { - bytes, err := codec.EncodeValue(nil, nil, *val) + bytes, err := codec.EncodeValue(time.UTC, nil, *val) if err != nil { return errors.Trace(err) } @@ -40,7 +41,7 @@ func (c *CMSketch) insert(val *types.Datum) error { func prepareCMSAndTopN(d, w int32, vals []*types.Datum, n uint32, total uint64) (*CMSketch, *TopN, error) { data := make([][]byte, 0, len(vals)) for _, v := range vals { - bytes, err := codec.EncodeValue(nil, nil, *v) + bytes, err := codec.EncodeValue(time.UTC, nil, *v) if err != nil { return nil, nil, errors.Trace(err) } diff --git a/pkg/statistics/fmsketch.go b/pkg/statistics/fmsketch.go index 74ee24a922c70..7df6878752353 100644 --- a/pkg/statistics/fmsketch.go +++ b/pkg/statistics/fmsketch.go @@ -97,7 +97,8 @@ func (s *FMSketch) insertHashValue(hashVal uint64) { // InsertValue inserts a value into the FM sketch. func (s *FMSketch) InsertValue(sc *stmtctx.StatementContext, value types.Datum) error { - bytes, err := codec.EncodeValue(sc, nil, value) + bytes, err := codec.EncodeValue(sc.TimeZone(), nil, value) + err = sc.HandleError(err) if err != nil { return errors.Trace(err) } @@ -118,9 +119,12 @@ func (s *FMSketch) InsertRowValue(sc *stmtctx.StatementContext, values []types.D hashFunc := murmur3Pool.Get().(hash.Hash64) hashFunc.Reset() defer murmur3Pool.Put(hashFunc) + + errCtx := sc.ErrCtx() for _, v := range values { b = b[:0] - b, err := codec.EncodeValue(sc, b, v) + b, err := codec.EncodeValue(sc.TimeZone(), b, v) + err = errCtx.HandleError(err) if err != nil { return err } diff --git a/pkg/statistics/handle/BUILD.bazel b/pkg/statistics/handle/BUILD.bazel index a99d7d1dde8a3..8854a85d5db92 100644 --- a/pkg/statistics/handle/BUILD.bazel +++ b/pkg/statistics/handle/BUILD.bazel @@ -4,14 +4,12 @@ go_library( name = "handle", srcs = [ "bootstrap.go", - "ddl.go", "handle.go", ], importpath = "github.com/pingcap/tidb/pkg/statistics/handle", visibility = ["//visibility:public"], deps = [ "//pkg/config", - "//pkg/ddl/util", "//pkg/infoschema", "//pkg/kv", "//pkg/parser/model", @@ -19,24 +17,23 @@ go_library( "//pkg/parser/terror", "//pkg/sessionctx", "//pkg/sessionctx/stmtctx", - "//pkg/sessionctx/variable", "//pkg/statistics", "//pkg/statistics/handle/autoanalyze", "//pkg/statistics/handle/cache", + "//pkg/statistics/handle/ddl", "//pkg/statistics/handle/globalstats", "//pkg/statistics/handle/history", "//pkg/statistics/handle/lockstats", "//pkg/statistics/handle/logutil", "//pkg/statistics/handle/storage", "//pkg/statistics/handle/syncload", + "//pkg/statistics/handle/types", "//pkg/statistics/handle/usage", "//pkg/statistics/handle/util", "//pkg/types", "//pkg/util/chunk", "//pkg/util/logutil", "@com_github_pingcap_errors//:errors", - "@com_github_tiancaiamao_gp//:gp", - "@org_uber_go_atomic//:atomic", "@org_uber_go_zap//:zap", ], ) @@ -44,22 +41,13 @@ go_library( go_test( name = "handle_test", timeout = "short", - srcs = [ - "ddl_test.go", - "main_test.go", - ], + srcs = ["main_test.go"], embed = [":handle"], flaky = True, race = "on", shard_count = 4, deps = [ - "//pkg/parser/model", - "//pkg/planner/cardinality", - "//pkg/testkit", "//pkg/testkit/testsetup", - "//pkg/types", - "//pkg/util/mock", - "@com_github_stretchr_testify//require", "@org_uber_go_goleak//:goleak", ], ) diff --git a/pkg/statistics/handle/autoanalyze/BUILD.bazel b/pkg/statistics/handle/autoanalyze/BUILD.bazel index 310a3dd31bfc5..45fe7126994c1 100644 --- a/pkg/statistics/handle/autoanalyze/BUILD.bazel +++ b/pkg/statistics/handle/autoanalyze/BUILD.bazel @@ -14,6 +14,7 @@ go_library( "//pkg/sessionctx/variable", "//pkg/statistics", "//pkg/statistics/handle/logutil", + "//pkg/statistics/handle/types", "//pkg/statistics/handle/util", "//pkg/table", "//pkg/types", diff --git a/pkg/statistics/handle/autoanalyze/autoanalyze.go b/pkg/statistics/handle/autoanalyze/autoanalyze.go index f21c90de4d21a..66f9ed161d564 100644 --- a/pkg/statistics/handle/autoanalyze/autoanalyze.go +++ b/pkg/statistics/handle/autoanalyze/autoanalyze.go @@ -32,6 +32,7 @@ import ( "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/statistics" statslogutil "github.com/pingcap/tidb/pkg/statistics/handle/logutil" + statstypes "github.com/pingcap/tidb/pkg/statistics/handle/types" statsutil "github.com/pingcap/tidb/pkg/statistics/handle/util" "github.com/pingcap/tidb/pkg/table" "github.com/pingcap/tidb/pkg/types" @@ -47,12 +48,17 @@ import ( // statsAnalyze implements util.StatsAnalyze. // statsAnalyze is used to handle auto-analyze and manage analyze jobs. type statsAnalyze struct { - statsHandle statsutil.StatsHandle + statsHandle statstypes.StatsHandle + // sysProcTracker is used to track sys process like analyze + sysProcTracker sessionctx.SysProcTracker } // NewStatsAnalyze creates a new StatsAnalyze. -func NewStatsAnalyze(statsHandle statsutil.StatsHandle) statsutil.StatsAnalyze { - return &statsAnalyze{statsHandle: statsHandle} +func NewStatsAnalyze( + statsHandle statstypes.StatsHandle, + sysProcTracker sessionctx.SysProcTracker, +) statstypes.StatsAnalyze { + return &statsAnalyze{statsHandle: statsHandle, sysProcTracker: sysProcTracker} } // InsertAnalyzeJob inserts the analyze job to the storage. @@ -73,7 +79,7 @@ func (sa *statsAnalyze) DeleteAnalyzeJobs(updateTime time.Time) error { // HandleAutoAnalyze analyzes the newly created table or index. func (sa *statsAnalyze) HandleAutoAnalyze(is infoschema.InfoSchema) (analyzed bool) { _ = statsutil.CallWithSCtx(sa.statsHandle.SPool(), func(sctx sessionctx.Context) error { - analyzed = HandleAutoAnalyze(sctx, sa.statsHandle, is) + analyzed = HandleAutoAnalyze(sctx, sa.statsHandle, sa.sysProcTracker, is) return nil }) return @@ -151,7 +157,8 @@ func getAllTidsAndPids(tbls []table.Table) []int64 { // HandleAutoAnalyze analyzes the newly created table or index. func HandleAutoAnalyze( sctx sessionctx.Context, - statsHandle statsutil.StatsHandle, + statsHandle statstypes.StatsHandle, + sysProcTracker sessionctx.SysProcTracker, is infoschema.InfoSchema, ) (analyzed bool) { defer func() { @@ -233,7 +240,7 @@ func HandleAutoAnalyze( if pi == nil { statsTbl := statsHandle.GetTableStats(tblInfo) sql := "analyze table %n.%n" - analyzed := tryAutoAnalyzeTable(sctx, statsHandle, tblInfo, statsTbl, autoAnalyzeRatio, sql, db, tblInfo.Name.O) + analyzed := tryAutoAnalyzeTable(sctx, statsHandle, sysProcTracker, tblInfo, statsTbl, autoAnalyzeRatio, sql, db, tblInfo.Name.O) if analyzed { // analyze one table at a time to let it get the freshest parameters. // others will be analyzed next round which is just 3s later. @@ -249,7 +256,7 @@ func HandleAutoAnalyze( } } if pruneMode == variable.Dynamic { - analyzed := tryAutoAnalyzePartitionTableInDynamicMode(sctx, statsHandle, tblInfo, partitionDefs, db, autoAnalyzeRatio) + analyzed := tryAutoAnalyzePartitionTableInDynamicMode(sctx, statsHandle, sysProcTracker, tblInfo, partitionDefs, db, autoAnalyzeRatio) if analyzed { return true } @@ -258,7 +265,7 @@ func HandleAutoAnalyze( for _, def := range partitionDefs { sql := "analyze table %n.%n partition %n" statsTbl := statsHandle.GetPartitionStats(tblInfo, def.ID) - analyzed := tryAutoAnalyzeTable(sctx, statsHandle, tblInfo, statsTbl, autoAnalyzeRatio, sql, db, tblInfo.Name.O, def.Name.O) + analyzed := tryAutoAnalyzeTable(sctx, statsHandle, sysProcTracker, tblInfo, statsTbl, autoAnalyzeRatio, sql, db, tblInfo.Name.O, def.Name.O) if analyzed { return true } @@ -276,7 +283,8 @@ var AutoAnalyzeMinCnt int64 = 1000 // Determine whether the table and index require analysis. func tryAutoAnalyzeTable( sctx sessionctx.Context, - statsHandle statsutil.StatsHandle, + statsHandle statstypes.StatsHandle, + sysProcTracker sessionctx.SysProcTracker, tblInfo *model.TableInfo, statsTbl *statistics.Table, ratio float64, @@ -307,7 +315,7 @@ func tryAutoAnalyzeTable( tableStatsVer := sctx.GetSessionVars().AnalyzeVersion statistics.CheckAnalyzeVerOnTable(statsTbl, &tableStatsVer) - execAutoAnalyze(sctx, statsHandle, tableStatsVer, sql, params...) + execAutoAnalyze(sctx, statsHandle, sysProcTracker, tableStatsVer, sql, params...) return true } @@ -328,7 +336,7 @@ func tryAutoAnalyzeTable( ) tableStatsVer := sctx.GetSessionVars().AnalyzeVersion statistics.CheckAnalyzeVerOnTable(statsTbl, &tableStatsVer) - execAutoAnalyze(sctx, statsHandle, tableStatsVer, sqlWithIdx, paramsWithIdx...) + execAutoAnalyze(sctx, statsHandle, sysProcTracker, tableStatsVer, sqlWithIdx, paramsWithIdx...) return true } } @@ -380,7 +388,8 @@ func TableAnalyzed(tbl *statistics.Table) bool { // It is very similar to tryAutoAnalyzeTable, but it commits the analyze job in batch for partitions. func tryAutoAnalyzePartitionTableInDynamicMode( sctx sessionctx.Context, - statsHandle statsutil.StatsHandle, + statsHandle statstypes.StatsHandle, + sysProcTracker sessionctx.SysProcTracker, tblInfo *model.TableInfo, partitionDefs []model.PartitionDefinition, db string, @@ -454,7 +463,7 @@ func tryAutoAnalyzePartitionTableInDynamicMode( zap.String("table", tblInfo.Name.String()), zap.Any("partitions", needAnalyzePartitionNames[start:end]), ) - execAutoAnalyze(sctx, statsHandle, tableStatsVer, sql, params...) + execAutoAnalyze(sctx, statsHandle, sysProcTracker, tableStatsVer, sql, params...) } return true @@ -492,7 +501,7 @@ func tryAutoAnalyzePartitionTableInDynamicMode( zap.String("index", idx.Name.String()), zap.Any("partitions", needAnalyzePartitionNames[start:end]), ) - execAutoAnalyze(sctx, statsHandle, tableStatsVer, sql, params...) + execAutoAnalyze(sctx, statsHandle, sysProcTracker, tableStatsVer, sql, params...) } return true @@ -510,13 +519,14 @@ var execOptionForAnalyze = map[int]sqlexec.OptionFuncAlias{ func execAutoAnalyze( sctx sessionctx.Context, - statsHandle statsutil.StatsHandle, + statsHandle statstypes.StatsHandle, + sysProcTracker sessionctx.SysProcTracker, statsVer int, sql string, params ...interface{}, ) { startTime := time.Now() - _, _, err := execAnalyzeStmt(sctx, statsHandle, statsVer, sql, params...) + _, _, err := execAnalyzeStmt(sctx, statsHandle, sysProcTracker, statsVer, sql, params...) dur := time.Since(startTime) metrics.AutoAnalyzeHistogram.Observe(dur.Seconds()) if err != nil { @@ -538,7 +548,8 @@ func execAutoAnalyze( func execAnalyzeStmt( sctx sessionctx.Context, - statsHandle statsutil.StatsHandle, + statsHandle statstypes.StatsHandle, + sysProcTracker sessionctx.SysProcTracker, statsVer int, sql string, params ...interface{}, @@ -550,7 +561,7 @@ func execAnalyzeStmt( sqlexec.GetAnalyzeSnapshotOption(analyzeSnapshot), sqlexec.GetPartitionPruneModeOption(pruneMode), sqlexec.ExecOptionUseCurSession, - sqlexec.ExecOptionWithSysProcTrack(statsHandle.AutoAnalyzeProcID(), statsHandle.SysProcTracker().Track, statsHandle.SysProcTracker().UnTrack), + sqlexec.ExecOptionWithSysProcTrack(statsHandle.AutoAnalyzeProcID(), sysProcTracker.Track, sysProcTracker.UnTrack), } return statsutil.ExecWithOpts(sctx, optFuncs, sql, params...) } diff --git a/pkg/statistics/handle/bootstrap.go b/pkg/statistics/handle/bootstrap.go index 83dd83d1a209a..0e3adc40d2c45 100644 --- a/pkg/statistics/handle/bootstrap.go +++ b/pkg/statistics/handle/bootstrap.go @@ -28,6 +28,7 @@ import ( "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/statistics" "github.com/pingcap/tidb/pkg/statistics/handle/cache" + statstypes "github.com/pingcap/tidb/pkg/statistics/handle/types" "github.com/pingcap/tidb/pkg/statistics/handle/util" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/chunk" @@ -35,7 +36,7 @@ import ( "go.uber.org/zap" ) -func (h *Handle) initStatsMeta4Chunk(is infoschema.InfoSchema, cache util.StatsCache, iter *chunk.Iterator4Chunk) { +func (h *Handle) initStatsMeta4Chunk(is infoschema.InfoSchema, cache statstypes.StatsCache, iter *chunk.Iterator4Chunk) { for row := iter.Begin(); row != iter.End(); row = iter.Next() { physicalID := row.GetInt64(1) // The table is read-only. Please do not modify it. @@ -62,7 +63,7 @@ func (h *Handle) initStatsMeta4Chunk(is infoschema.InfoSchema, cache util.StatsC } } -func (h *Handle) initStatsMeta(is infoschema.InfoSchema) (util.StatsCache, error) { +func (h *Handle) initStatsMeta(is infoschema.InfoSchema) (statstypes.StatsCache, error) { ctx := kv.WithInternalSourceType(context.Background(), kv.InternalTxnStats) sql := "select HIGH_PRIORITY version, table_id, modify_count, count from mysql.stats_meta" rc, err := util.Exec(h.initStatsCtx, sql) @@ -89,7 +90,7 @@ func (h *Handle) initStatsMeta(is infoschema.InfoSchema) (util.StatsCache, error return tables, nil } -func (h *Handle) initStatsHistograms4ChunkLite(is infoschema.InfoSchema, cache util.StatsCache, iter *chunk.Iterator4Chunk) { +func (h *Handle) initStatsHistograms4ChunkLite(is infoschema.InfoSchema, cache statstypes.StatsCache, iter *chunk.Iterator4Chunk) { for row := iter.Begin(); row != iter.End(); row = iter.Next() { tblID := row.GetInt64(0) table, ok := cache.Get(tblID) @@ -160,7 +161,7 @@ func (h *Handle) initStatsHistograms4ChunkLite(is infoschema.InfoSchema, cache u } } -func (h *Handle) initStatsHistograms4Chunk(is infoschema.InfoSchema, cache util.StatsCache, iter *chunk.Iterator4Chunk) { +func (h *Handle) initStatsHistograms4Chunk(is infoschema.InfoSchema, cache statstypes.StatsCache, iter *chunk.Iterator4Chunk) { for row := iter.Begin(); row != iter.End(); row = iter.Next() { tblID, statsVer := row.GetInt64(0), row.GetInt64(8) table, ok := cache.Get(tblID) @@ -230,7 +231,7 @@ func (h *Handle) initStatsHistograms4Chunk(is infoschema.InfoSchema, cache util. } } -func (h *Handle) initStatsHistogramsLite(is infoschema.InfoSchema, cache util.StatsCache) error { +func (h *Handle) initStatsHistogramsLite(is infoschema.InfoSchema, cache statstypes.StatsCache) error { ctx := kv.WithInternalSourceType(context.Background(), kv.InternalTxnStats) sql := "select 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" rc, err := util.Exec(h.initStatsCtx, sql) @@ -253,7 +254,7 @@ func (h *Handle) initStatsHistogramsLite(is infoschema.InfoSchema, cache util.St return nil } -func (h *Handle) initStatsHistograms(is infoschema.InfoSchema, cache util.StatsCache) error { +func (h *Handle) initStatsHistograms(is infoschema.InfoSchema, cache statstypes.StatsCache) error { ctx := kv.WithInternalSourceType(context.Background(), kv.InternalTxnStats) 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" rc, err := util.Exec(h.initStatsCtx, sql) @@ -276,7 +277,7 @@ func (h *Handle) initStatsHistograms(is infoschema.InfoSchema, cache util.StatsC return nil } -func (*Handle) initStatsTopN4Chunk(cache util.StatsCache, iter *chunk.Iterator4Chunk) { +func (*Handle) initStatsTopN4Chunk(cache statstypes.StatsCache, iter *chunk.Iterator4Chunk) { affectedIndexes := make(map[*statistics.Index]struct{}) for row := iter.Begin(); row != iter.End(); row = iter.Next() { table, ok := cache.Get(row.GetInt64(0)) @@ -302,7 +303,7 @@ func (*Handle) initStatsTopN4Chunk(cache util.StatsCache, iter *chunk.Iterator4C } } -func (h *Handle) initStatsTopN(cache util.StatsCache) error { +func (h *Handle) initStatsTopN(cache statstypes.StatsCache) error { ctx := kv.WithInternalSourceType(context.Background(), kv.InternalTxnStats) sql := "select HIGH_PRIORITY table_id, hist_id, value, count from mysql.stats_top_n where is_index = 1" rc, err := util.Exec(h.initStatsCtx, sql) @@ -325,7 +326,7 @@ func (h *Handle) initStatsTopN(cache util.StatsCache) error { return nil } -func (*Handle) initStatsFMSketch4Chunk(cache util.StatsCache, iter *chunk.Iterator4Chunk) { +func (*Handle) initStatsFMSketch4Chunk(cache statstypes.StatsCache, iter *chunk.Iterator4Chunk) { for row := iter.Begin(); row != iter.End(); row = iter.Next() { table, ok := cache.Get(row.GetInt64(0)) if !ok { @@ -352,7 +353,7 @@ func (*Handle) initStatsFMSketch4Chunk(cache util.StatsCache, iter *chunk.Iterat } } -func (h *Handle) initStatsFMSketch(cache util.StatsCache) error { +func (h *Handle) initStatsFMSketch(cache statstypes.StatsCache) error { ctx := kv.WithInternalSourceType(context.Background(), kv.InternalTxnStats) sql := "select HIGH_PRIORITY table_id, is_index, hist_id, value from mysql.stats_fm_sketch" rc, err := util.Exec(h.initStatsCtx, sql) @@ -375,7 +376,7 @@ func (h *Handle) initStatsFMSketch(cache util.StatsCache) error { return nil } -func (*Handle) initStatsBuckets4Chunk(cache util.StatsCache, iter *chunk.Iterator4Chunk) { +func (*Handle) initStatsBuckets4Chunk(cache statstypes.StatsCache, iter *chunk.Iterator4Chunk) { for row := iter.Begin(); row != iter.End(); row = iter.Next() { tableID, isIndex, histID := row.GetInt64(0), row.GetInt64(1), row.GetInt64(2) table, ok := cache.Get(tableID) @@ -426,7 +427,7 @@ func (*Handle) initStatsBuckets4Chunk(cache util.StatsCache, iter *chunk.Iterato } } -func (h *Handle) initStatsBuckets(cache util.StatsCache) error { +func (h *Handle) initStatsBuckets(cache statstypes.StatsCache) error { ctx := kv.WithInternalSourceType(context.Background(), kv.InternalTxnStats) sql := "select 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" rc, err := util.Exec(h.initStatsCtx, sql) diff --git a/pkg/statistics/handle/cache/BUILD.bazel b/pkg/statistics/handle/cache/BUILD.bazel index 587c7eda09d1c..a9d1c1fed8ed8 100644 --- a/pkg/statistics/handle/cache/BUILD.bazel +++ b/pkg/statistics/handle/cache/BUILD.bazel @@ -21,6 +21,7 @@ go_library( "//pkg/statistics/handle/cache/internal/metrics", "//pkg/statistics/handle/logutil", "//pkg/statistics/handle/metrics", + "//pkg/statistics/handle/types", "//pkg/statistics/handle/util", "//pkg/types", "//pkg/util/chunk", @@ -41,7 +42,7 @@ go_test( "//pkg/config", "//pkg/statistics", "//pkg/statistics/handle/cache/internal/testutil", - "//pkg/statistics/handle/util", + "//pkg/statistics/handle/types", "//pkg/util/benchdaily", ], ) diff --git a/pkg/statistics/handle/cache/bench_test.go b/pkg/statistics/handle/cache/bench_test.go index 4c359da6816ac..7990a1f8a47fa 100644 --- a/pkg/statistics/handle/cache/bench_test.go +++ b/pkg/statistics/handle/cache/bench_test.go @@ -22,11 +22,11 @@ import ( "github.com/pingcap/tidb/pkg/config" "github.com/pingcap/tidb/pkg/statistics" "github.com/pingcap/tidb/pkg/statistics/handle/cache/internal/testutil" - "github.com/pingcap/tidb/pkg/statistics/handle/util" + "github.com/pingcap/tidb/pkg/statistics/handle/types" "github.com/pingcap/tidb/pkg/util/benchdaily" ) -func benchCopyAndUpdate(b *testing.B, c util.StatsCache) { +func benchCopyAndUpdate(b *testing.B, c types.StatsCache) { var wg sync.WaitGroup b.ResetTimer() for i := 0; i < b.N; i++ { @@ -42,7 +42,7 @@ func benchCopyAndUpdate(b *testing.B, c util.StatsCache) { b.StopTimer() } -func benchPutGet(b *testing.B, c util.StatsCache) { +func benchPutGet(b *testing.B, c types.StatsCache) { var wg sync.WaitGroup b.ResetTimer() for i := 0; i < b.N; i++ { @@ -65,7 +65,7 @@ func benchPutGet(b *testing.B, c util.StatsCache) { b.StopTimer() } -func benchGet(b *testing.B, c util.StatsCache) { +func benchGet(b *testing.B, c types.StatsCache) { var w sync.WaitGroup for i := 0; i < b.N; i++ { w.Add(1) diff --git a/pkg/statistics/handle/cache/statscache.go b/pkg/statistics/handle/cache/statscache.go index 028d0d9525fe5..e09ff2df107d8 100644 --- a/pkg/statistics/handle/cache/statscache.go +++ b/pkg/statistics/handle/cache/statscache.go @@ -25,6 +25,7 @@ import ( "github.com/pingcap/tidb/pkg/statistics/handle/cache/internal/metrics" statslogutil "github.com/pingcap/tidb/pkg/statistics/handle/logutil" handle_metrics "github.com/pingcap/tidb/pkg/statistics/handle/metrics" + "github.com/pingcap/tidb/pkg/statistics/handle/types" "github.com/pingcap/tidb/pkg/statistics/handle/util" "github.com/pingcap/tidb/pkg/util/chunk" "github.com/pingcap/tidb/pkg/util/logutil" @@ -35,11 +36,11 @@ import ( type StatsCacheImpl struct { atomic.Pointer[StatsCache] - statsHandle util.StatsHandle + statsHandle types.StatsHandle } // NewStatsCacheImpl creates a new StatsCache. -func NewStatsCacheImpl(statsHandle util.StatsHandle) (util.StatsCache, error) { +func NewStatsCacheImpl(statsHandle types.StatsHandle) (types.StatsCache, error) { newCache, err := NewStatsCache() if err != nil { return nil, err @@ -52,7 +53,7 @@ func NewStatsCacheImpl(statsHandle util.StatsHandle) (util.StatsCache, error) { } // NewStatsCacheImplForTest creates a new StatsCache for test. -func NewStatsCacheImplForTest() (util.StatsCache, error) { +func NewStatsCacheImplForTest() (types.StatsCache, error) { return NewStatsCacheImpl(nil) } @@ -119,7 +120,7 @@ func (s *StatsCacheImpl) Update(is infoschema.InfoSchema) error { } // Replace replaces this cache. -func (s *StatsCacheImpl) Replace(cache util.StatsCache) { +func (s *StatsCacheImpl) Replace(cache types.StatsCache) { x := cache.(*StatsCacheImpl) s.replace(x.Load()) } diff --git a/pkg/statistics/handle/ddl.go b/pkg/statistics/handle/ddl.go deleted file mode 100644 index c186f3443c96d..0000000000000 --- a/pkg/statistics/handle/ddl.go +++ /dev/null @@ -1,128 +0,0 @@ -// Copyright 2017 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 handle - -import ( - "github.com/pingcap/tidb/pkg/ddl/util" - "github.com/pingcap/tidb/pkg/parser/model" - "github.com/pingcap/tidb/pkg/sessionctx/variable" -) - -// HandleDDLEvent begins to process a ddl task. -func (h *Handle) HandleDDLEvent(t *util.Event) error { - switch t.Tp { - case model.ActionCreateTable, model.ActionTruncateTable: - ids, err := h.getInitStateTableIDs(t.TableInfo) - if err != nil { - return err - } - for _, id := range ids { - if err := h.InsertTableStats2KV(t.TableInfo, id); err != nil { - return err - } - } - case model.ActionDropTable: - ids, err := h.getInitStateTableIDs(t.TableInfo) - if err != nil { - return err - } - for _, id := range ids { - if err := h.ResetTableStats2KVForDrop(id); err != nil { - return err - } - } - case model.ActionAddColumn, model.ActionModifyColumn: - ids, err := h.getInitStateTableIDs(t.TableInfo) - if err != nil { - return err - } - for _, id := range ids { - if err := h.InsertColStats2KV(id, t.ColumnInfos); err != nil { - return err - } - } - case model.ActionAddTablePartition, model.ActionTruncateTablePartition: - for _, def := range t.PartInfo.Definitions { - if err := h.InsertTableStats2KV(t.TableInfo, def.ID); err != nil { - return err - } - } - case model.ActionDropTablePartition: - pruneMode, err := h.GetCurrentPruneMode() - if err != nil { - return err - } - if variable.PartitionPruneMode(pruneMode) == variable.Dynamic && t.PartInfo != nil { - if err := h.UpdateGlobalStats(t.TableInfo); err != nil { - return err - } - } - for _, def := range t.PartInfo.Definitions { - if err := h.ResetTableStats2KVForDrop(def.ID); err != nil { - return err - } - } - case model.ActionReorganizePartition: - for _, def := range t.PartInfo.Definitions { - // TODO: Should we trigger analyze instead of adding 0s? - if err := h.InsertTableStats2KV(t.TableInfo, def.ID); err != nil { - return err - } - // Do not update global stats, since the data have not changed! - } - case model.ActionAlterTablePartitioning: - // Add partitioning - for _, def := range t.PartInfo.Definitions { - // TODO: Should we trigger analyze instead of adding 0s? - if err := h.InsertTableStats2KV(t.TableInfo, def.ID); err != nil { - return err - } - } - fallthrough - case model.ActionRemovePartitioning: - // Change id for global stats, since the data has not changed! - // Note that t.TableInfo is the current (new) table info - // and t.PartInfo.NewTableID is actually the old table ID! - // (see onReorganizePartition) - return h.ChangeGlobalStatsID(t.PartInfo.NewTableID, t.TableInfo.ID) - case model.ActionFlashbackCluster: - return h.UpdateStatsVersion() - } - return nil -} - -func (h *Handle) getInitStateTableIDs(tblInfo *model.TableInfo) (ids []int64, err error) { - pi := tblInfo.GetPartitionInfo() - if pi == nil { - return []int64{tblInfo.ID}, nil - } - ids = make([]int64, 0, len(pi.Definitions)+1) - for _, def := range pi.Definitions { - ids = append(ids, def.ID) - } - pruneMode, err := h.GetCurrentPruneMode() - if err != nil { - return nil, err - } - if variable.PartitionPruneMode(pruneMode) == variable.Dynamic { - ids = append(ids, tblInfo.ID) - } - return ids, nil -} - -// DDLEventCh returns ddl events channel in handle. -func (h *Handle) DDLEventCh() chan *util.Event { - return h.ddlEventCh -} diff --git a/pkg/statistics/handle/ddl/BUILD.bazel b/pkg/statistics/handle/ddl/BUILD.bazel index 9de2bb2204340..067d58c44f5ed 100644 --- a/pkg/statistics/handle/ddl/BUILD.bazel +++ b/pkg/statistics/handle/ddl/BUILD.bazel @@ -1,9 +1,30 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") go_library( name = "ddl", - srcs = ["event.go"], + srcs = ["ddl.go"], importpath = "github.com/pingcap/tidb/pkg/statistics/handle/ddl", visibility = ["//visibility:public"], - deps = ["//pkg/parser/model"], + deps = [ + "//pkg/parser/model", + "//pkg/sessionctx/variable", + "//pkg/statistics/handle/types", + "//pkg/statistics/handle/util", + ], +) + +go_test( + name = "ddl_test", + timeout = "short", + srcs = ["ddl_test.go"], + flaky = True, + shard_count = 4, + deps = [ + "//pkg/parser/model", + "//pkg/planner/cardinality", + "//pkg/testkit", + "//pkg/types", + "//pkg/util/mock", + "@com_github_stretchr_testify//require", + ], ) diff --git a/pkg/statistics/handle/ddl/ddl.go b/pkg/statistics/handle/ddl/ddl.go new file mode 100644 index 0000000000000..6fcef63be23dc --- /dev/null +++ b/pkg/statistics/handle/ddl/ddl.go @@ -0,0 +1,184 @@ +// Copyright 2023 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 ( + "github.com/pingcap/tidb/pkg/parser/model" + "github.com/pingcap/tidb/pkg/sessionctx/variable" + "github.com/pingcap/tidb/pkg/statistics/handle/types" + "github.com/pingcap/tidb/pkg/statistics/handle/util" +) + +type ddlHandlerImpl struct { + ddlEventCh chan *util.DDLEvent + statsWriter types.StatsReadWriter + statsHandler types.StatsHandle + globalStatsHandler types.StatsGlobal +} + +// NewDDLHandler creates a new ddl handler. +func NewDDLHandler( + statsWriter types.StatsReadWriter, + statsHandler types.StatsHandle, + globalStatsHandler types.StatsGlobal, +) types.DDL { + return &ddlHandlerImpl{ + ddlEventCh: make(chan *util.DDLEvent, 1000), + statsWriter: statsWriter, + statsHandler: statsHandler, + globalStatsHandler: globalStatsHandler, + } +} + +// HandleDDLEvent begins to process a ddl task. +func (h *ddlHandlerImpl) HandleDDLEvent(t *util.DDLEvent) error { + switch t.GetType() { + case model.ActionCreateTable: + newTableInfo := t.GetCreateTableInfo() + ids, err := h.getInitStateTableIDs(newTableInfo) + if err != nil { + return err + } + for _, id := range ids { + if err := h.statsWriter.InsertTableStats2KV(newTableInfo, id); err != nil { + return err + } + } + case model.ActionTruncateTable: + newTableInfo, _ := t.GetTruncateTableInfo() + ids, err := h.getInitStateTableIDs(newTableInfo) + if err != nil { + return err + } + for _, id := range ids { + if err := h.statsWriter.InsertTableStats2KV(newTableInfo, id); err != nil { + return err + } + } + case model.ActionDropTable: + droppedTableInfo := t.GetDropTableInfo() + ids, err := h.getInitStateTableIDs(droppedTableInfo) + if err != nil { + return err + } + for _, id := range ids { + if err := h.statsWriter.ResetTableStats2KVForDrop(id); err != nil { + return err + } + } + case model.ActionAddColumn: + newTableInfo, newColumnInfo := t.GetAddColumnInfo() + ids, err := h.getInitStateTableIDs(newTableInfo) + if err != nil { + return err + } + for _, id := range ids { + if err := h.statsWriter.InsertColStats2KV(id, newColumnInfo); err != nil { + return err + } + } + case model.ActionModifyColumn: + newTableInfo, modifiedColumnInfo := t.GetModifyColumnInfo() + + ids, err := h.getInitStateTableIDs(newTableInfo) + if err != nil { + return err + } + for _, id := range ids { + if err := h.statsWriter.InsertColStats2KV(id, modifiedColumnInfo); err != nil { + return err + } + } + case model.ActionAddTablePartition: + globalTableInfo, addedPartitionInfo := t.GetAddPartitionInfo() + for _, def := range addedPartitionInfo.Definitions { + if err := h.statsWriter.InsertTableStats2KV(globalTableInfo, def.ID); err != nil { + return err + } + } + case model.ActionTruncateTablePartition: + globalTableInfo, addedPartInfo, _ := t.GetTruncatePartitionInfo() + for _, def := range addedPartInfo.Definitions { + if err := h.statsWriter.InsertTableStats2KV(globalTableInfo, def.ID); err != nil { + return err + } + } + case model.ActionDropTablePartition: + // TODO: Update the modify count and count for the global table. + _, droppedPartitionInfo := t.GetDropPartitionInfo() + for _, def := range droppedPartitionInfo.Definitions { + if err := h.statsWriter.ResetTableStats2KVForDrop(def.ID); err != nil { + return err + } + } + case model.ActionReorganizePartition: + globalTableInfo, addedPartInfo, _ := t.GetReorganizePartitionInfo() + for _, def := range addedPartInfo.Definitions { + // TODO: Should we trigger analyze instead of adding 0s? + if err := h.statsWriter.InsertTableStats2KV(globalTableInfo, def.ID); err != nil { + return err + } + // Do not update global stats, since the data have not changed! + } + case model.ActionAlterTablePartitioning: + globalTableInfo, addedPartInfo := t.GetAddPartitioningInfo() + // Add partitioning + for _, def := range addedPartInfo.Definitions { + // TODO: Should we trigger analyze instead of adding 0s? + if err := h.statsWriter.InsertTableStats2KV(globalTableInfo, def.ID); err != nil { + return err + } + } + // Change id for global stats, since the data has not changed! + // Note that globalTableInfo is the new table info + // and addedPartInfo.NewTableID is actually the old table ID! + // (see onReorganizePartition) + return h.statsWriter.ChangeGlobalStatsID(addedPartInfo.NewTableID, globalTableInfo.ID) + case model.ActionRemovePartitioning: + // Change id for global stats, since the data has not changed! + // Note that newSingleTableInfo is the new table info + // and droppedPartInfo.NewTableID is actually the old table ID! + // (see onReorganizePartition) + newSingleTableInfo, droppedPartInfo := t.GetRemovePartitioningInfo() + return h.statsWriter.ChangeGlobalStatsID(droppedPartInfo.NewTableID, newSingleTableInfo.ID) + case model.ActionFlashbackCluster: + return h.statsWriter.UpdateStatsVersion() + } + return nil +} + +func (h *ddlHandlerImpl) getInitStateTableIDs(tblInfo *model.TableInfo) (ids []int64, err error) { + pi := tblInfo.GetPartitionInfo() + if pi == nil { + return []int64{tblInfo.ID}, nil + } + ids = make([]int64, 0, len(pi.Definitions)+1) + for _, def := range pi.Definitions { + ids = append(ids, def.ID) + } + pruneMode, err := util.GetCurrentPruneMode(h.statsHandler.SPool()) + if err != nil { + return nil, err + } + if variable.PartitionPruneMode(pruneMode) == variable.Dynamic { + ids = append(ids, tblInfo.ID) + } + return ids, nil +} + +// DDLEventCh returns ddl events channel in handle. +func (h *ddlHandlerImpl) DDLEventCh() chan *util.DDLEvent { + return h.ddlEventCh +} diff --git a/pkg/statistics/handle/ddl_test.go b/pkg/statistics/handle/ddl/ddl_test.go similarity index 99% rename from pkg/statistics/handle/ddl_test.go rename to pkg/statistics/handle/ddl/ddl_test.go index 1eb754d5014eb..8672dc3bac9c3 100644 --- a/pkg/statistics/handle/ddl_test.go +++ b/pkg/statistics/handle/ddl/ddl_test.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package handle_test +package ddl_test import ( "testing" diff --git a/pkg/statistics/handle/ddl/event.go b/pkg/statistics/handle/ddl/event.go deleted file mode 100644 index 8594c5973a23f..0000000000000 --- a/pkg/statistics/handle/ddl/event.go +++ /dev/null @@ -1,242 +0,0 @@ -// Copyright 2023 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 "github.com/pingcap/tidb/pkg/parser/model" - -// Event contains the information of a ddl event that is used to update stats. -type Event struct { - // For different ddl types, the following fields are used. - // They have different meanings for different ddl types. - // Please do **not** use these fields directly, use the corresponding - // NewXXXEvent functions instead. - tableInfo *model.TableInfo - partInfo *model.PartitionInfo - oldTableInfo *model.TableInfo - oldPartInfo *model.PartitionInfo - - // We expose the action type field to the outside, because some ddl events - // do not need other fields. - // If your ddl event needs other fields, please add them with the - // corresponding NewXXXEvent function and give them clear names. - Tp model.ActionType -} - -// NewCreateTableEvent creates a new ddl event that creates a table. -func NewCreateTableEvent( - newTableInfo *model.TableInfo, -) *Event { - return &Event{ - Tp: model.ActionCreateTable, - tableInfo: newTableInfo, - } -} - -func (e *Event) getCreateTableInfo() (newTableInfo *model.TableInfo) { - return e.tableInfo -} - -// NewTruncateTableEvent creates a new ddl event that truncates a table. -func NewTruncateTableEvent( - newTableInfo *model.TableInfo, - droppedTableInfo *model.TableInfo, -) *Event { - return &Event{ - Tp: model.ActionTruncateTable, - tableInfo: newTableInfo, - oldTableInfo: droppedTableInfo, - } -} - -func (e *Event) getTruncateTableInfo() (newTableInfo *model.TableInfo, droppedTableInfo *model.TableInfo) { - return e.tableInfo, e.oldTableInfo -} - -// NewDropTableEvent creates a new ddl event that drops a table. -func NewDropTableEvent( - droppedTableInfo *model.TableInfo, -) *Event { - return &Event{ - Tp: model.ActionDropTable, - oldTableInfo: droppedTableInfo, - } -} - -func (e *Event) getDropTableInfo() (newTableInfo *model.TableInfo) { - return e.oldTableInfo -} - -// NewAddColumnEvent creates a new ddl event that -// adds a column. -func NewAddColumnEvent( - newTableInfoWithNewColumnInfo *model.TableInfo, -) *Event { - return &Event{ - Tp: model.ActionAddColumn, - tableInfo: newTableInfoWithNewColumnInfo, - } -} - -func (e *Event) getAddColumnInfo() (newTableInfoWithNewColumnInfo *model.TableInfo) { - return e.tableInfo -} - -// NewModifyColumnEvent creates a new ddl event that -// modifies a column. -func NewModifyColumnEvent( - newTableInfoWithNewColumnInfo *model.TableInfo, -) *Event { - return &Event{ - Tp: model.ActionModifyColumn, - tableInfo: newTableInfoWithNewColumnInfo, - } -} - -func (e *Event) getModifyColumnInfo() (newTableInfoWithNewColumnInfo *model.TableInfo) { - return e.tableInfo -} - -// NewAddTablePartitionEvent creates a new ddl event that adds a partition. -func NewAddTablePartitionEvent( - globalTableInfo *model.TableInfo, - addedPartInfo *model.PartitionInfo, -) *Event { - return &Event{ - Tp: model.ActionAddTablePartition, - tableInfo: globalTableInfo, - partInfo: addedPartInfo, - } -} - -func (e *Event) getAddTablePartitionInfo() (globalTableInfo *model.TableInfo, addedPartInfo *model.PartitionInfo) { - return e.tableInfo, e.partInfo -} - -// NewDropPartitionEvent creates a new ddl event that drops a partition. -func NewDropPartitionEvent( - globalTableInfo *model.TableInfo, - droppedPartInfo *model.PartitionInfo, -) *Event { - return &Event{ - Tp: model.ActionDropTablePartition, - tableInfo: globalTableInfo, - oldPartInfo: droppedPartInfo, - } -} - -func (e *Event) getDropPartitionInfo() (globalTableInfo *model.TableInfo, droppedPartInfo *model.PartitionInfo) { - return e.tableInfo, e.oldPartInfo -} - -// NewExchangePartitionEvent creates a new ddl event that exchanges a partition. -func NewExchangePartitionEvent( - globalTableInfo *model.TableInfo, - exchangedPartInfo *model.PartitionInfo, - exchangedTableInfo *model.TableInfo, -) *Event { - return &Event{ - Tp: model.ActionExchangeTablePartition, - tableInfo: globalTableInfo, - partInfo: exchangedPartInfo, - oldTableInfo: exchangedTableInfo, - } -} - -func (e *Event) getExchangePartitionInfo() ( - globalTableInfo *model.TableInfo, - exchangedPartInfo *model.PartitionInfo, - exchangedTableInfo *model.TableInfo, -) { - return e.tableInfo, e.partInfo, e.oldTableInfo -} - -// NewReorganizePartitionEvent creates a new ddl event that reorganizes a partition. -// We also use it for increasing or decreasing the number of hash partitions. -func NewReorganizePartitionEvent( - globalTableInfo *model.TableInfo, - addedPartInfo *model.PartitionInfo, - droppedPartInfo *model.PartitionInfo, -) *Event { - return &Event{ - Tp: model.ActionReorganizePartition, - tableInfo: globalTableInfo, - partInfo: addedPartInfo, - oldPartInfo: droppedPartInfo, - } -} - -func (e *Event) getReorganizePartitionInfo() ( - globalTableInfo *model.TableInfo, - addedPartInfo *model.PartitionInfo, - droppedPartInfo *model.PartitionInfo, -) { - return e.tableInfo, e.partInfo, e.oldPartInfo -} - -// NewTruncatePartitionEvent creates a new ddl event that truncates a partition. -func NewTruncatePartitionEvent( - globalTableInfo *model.TableInfo, - addedPartInfo *model.PartitionInfo, - droppedPartInfo *model.PartitionInfo, -) *Event { - return &Event{ - Tp: model.ActionTruncateTablePartition, - tableInfo: globalTableInfo, - partInfo: addedPartInfo, - oldPartInfo: droppedPartInfo, - } -} - -func (e *Event) getTruncatePartitionInfo() ( - globalTableInfo *model.TableInfo, - addedPartInfo *model.PartitionInfo, - droppedPartInfo *model.PartitionInfo, -) { - return e.tableInfo, e.partInfo, e.oldPartInfo -} - -// NewAddPartitioningEvent creates a new ddl event that adds partitioning. -// For example, `alter table t partition by range (c1) (partition p1 values less than (10))`. -func NewAddPartitioningEvent( - newGlobalTableInfo *model.TableInfo, - addedPartInfo *model.PartitionInfo, -) *Event { - return &Event{ - Tp: model.ActionAlterTablePartitioning, - tableInfo: newGlobalTableInfo, - partInfo: addedPartInfo, - } -} - -func (e *Event) getAddPartitioningInfo() (newGlobalTableInfo *model.TableInfo, addedPartInfo *model.PartitionInfo) { - return e.tableInfo, e.partInfo -} - -// NewRemovePartitioningEvent creates a new ddl event that removes partitioning. -// For example, `alter table t remove partitioning`. -func NewRemovePartitioningEvent( - newSingleTableInfo *model.TableInfo, - droppedPartInfo *model.PartitionInfo, -) *Event { - return &Event{ - Tp: model.ActionRemovePartitioning, - tableInfo: newSingleTableInfo, - oldPartInfo: droppedPartInfo, - } -} - -func (e *Event) getRemovePartitioningInfo() (newSingleTableInfo *model.TableInfo, droppedPartInfo *model.PartitionInfo) { - return e.tableInfo, e.oldPartInfo -} diff --git a/pkg/statistics/handle/globalstats/BUILD.bazel b/pkg/statistics/handle/globalstats/BUILD.bazel index 46dbeee237daf..c629c1c5c1f05 100644 --- a/pkg/statistics/handle/globalstats/BUILD.bazel +++ b/pkg/statistics/handle/globalstats/BUILD.bazel @@ -16,10 +16,10 @@ go_library( "//pkg/parser/model", "//pkg/sessionctx", "//pkg/sessionctx/stmtctx", - "//pkg/sessiontxn", "//pkg/statistics", "//pkg/statistics/handle/logutil", "//pkg/statistics/handle/storage", + "//pkg/statistics/handle/types", "//pkg/statistics/handle/util", "//pkg/types", "//pkg/util/hack", @@ -44,7 +44,7 @@ go_test( ], embed = [":globalstats"], flaky = True, - shard_count = 21, + shard_count = 23, deps = [ "//pkg/config", "//pkg/parser/model", diff --git a/pkg/statistics/handle/globalstats/global_stats.go b/pkg/statistics/handle/globalstats/global_stats.go index d5abb16a03ee1..0d6e52cd06968 100644 --- a/pkg/statistics/handle/globalstats/global_stats.go +++ b/pkg/statistics/handle/globalstats/global_stats.go @@ -22,9 +22,8 @@ import ( "github.com/pingcap/tidb/pkg/parser/ast" "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/sessionctx" - "github.com/pingcap/tidb/pkg/sessiontxn" "github.com/pingcap/tidb/pkg/statistics" - "github.com/pingcap/tidb/pkg/statistics/handle/util" + statstypes "github.com/pingcap/tidb/pkg/statistics/handle/types" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/logutil" "github.com/tiancaiamao/gp" @@ -38,11 +37,11 @@ const ( // statsGlobalImpl implements util.StatsGlobal type statsGlobalImpl struct { - statsHandler util.StatsHandle + statsHandler statstypes.StatsHandle } // NewStatsGlobal creates a new StatsGlobal. -func NewStatsGlobal(statsHandler util.StatsHandle) util.StatsGlobal { +func NewStatsGlobal(statsHandler statstypes.StatsHandle) statstypes.StatsGlobal { return &statsGlobalImpl{statsHandler: statsHandler} } @@ -52,19 +51,10 @@ func (sg *statsGlobalImpl) MergePartitionStats2GlobalStatsByTableID(sc sessionct physicalID int64, isIndex bool, histIDs []int64, - _ map[int64]*statistics.Table, ) (globalStats interface{}, err error) { return MergePartitionStats2GlobalStatsByTableID(sc, sg.statsHandler, opts, is, physicalID, isIndex, histIDs) } -// UpdateGlobalStats will trigger the merge of global-stats when we drop table partition -func (sg *statsGlobalImpl) UpdateGlobalStats(tblInfo *model.TableInfo) error { - // We need to merge the partition-level stats to global-stats when we drop table partition in dynamic mode. - return util.CallWithSCtx(sg.statsHandler.SPool(), func(sctx sessionctx.Context) error { - return UpdateGlobalStats(sctx, sg.statsHandler, tblInfo) - }) -} - // GlobalStats is used to store the statistics contained in the global-level stats // which is generated by the merge of partition-level stats. // It will both store the column stats and index stats. @@ -96,7 +86,7 @@ func newGlobalStats(histCount int) *GlobalStats { // MergePartitionStats2GlobalStats merge the partition-level stats to global-level stats based on the tableInfo. func MergePartitionStats2GlobalStats( sc sessionctx.Context, - statsHandle util.StatsHandle, + statsHandle statstypes.StatsHandle, opts map[ast.AnalyzeOptionType]uint64, is infoschema.InfoSchema, globalTableInfo *model.TableInfo, @@ -120,7 +110,7 @@ func MergePartitionStats2GlobalStats( // MergePartitionStats2GlobalStatsByTableID merge the partition-level stats to global-level stats based on the tableID. func MergePartitionStats2GlobalStatsByTableID( sc sessionctx.Context, - statsHandle util.StatsHandle, + statsHandle statstypes.StatsHandle, opts map[ast.AnalyzeOptionType]uint64, is infoschema.InfoSchema, tableID int64, @@ -170,107 +160,6 @@ var analyzeOptionDefault = map[ast.AnalyzeOptionType]uint64{ ast.AnalyzeOptNumTopN: 20, } -// UpdateGlobalStats update the global-level stats based on the partition-level stats. -func UpdateGlobalStats( - sctx sessionctx.Context, - statsHandle util.StatsHandle, - tblInfo *model.TableInfo) error { - tableID := tblInfo.ID - is := sessiontxn.GetTxnManager(sctx).GetTxnInfoSchema() - globalStats, err := statsHandle.TableStatsFromStorage(tblInfo, tableID, true, 0) - if err != nil { - return err - } - // If we do not currently have global-stats, no new global-stats will be generated. - if globalStats == nil { - return nil - } - opts := make(map[ast.AnalyzeOptionType]uint64, len(analyzeOptionDefault)) - for key, val := range analyzeOptionDefault { - opts[key] = val - } - // Use current global-stats related information to construct the opts for `MergePartitionStats2GlobalStats` function. - globalColStatsTopNNum, globalColStatsBucketNum := 0, 0 - for colID := range globalStats.Columns { - globalColStatsTopN := globalStats.Columns[colID].TopN - if globalColStatsTopN != nil && len(globalColStatsTopN.TopN) > globalColStatsTopNNum { - globalColStatsTopNNum = len(globalColStatsTopN.TopN) - } - globalColStats := globalStats.Columns[colID] - if globalColStats != nil && len(globalColStats.Buckets) > globalColStatsBucketNum { - globalColStatsBucketNum = len(globalColStats.Buckets) - } - } - if globalColStatsTopNNum != 0 { - opts[ast.AnalyzeOptNumTopN] = uint64(globalColStatsTopNNum) - } - if globalColStatsBucketNum != 0 { - opts[ast.AnalyzeOptNumBuckets] = uint64(globalColStatsBucketNum) - } - // Generate the new column global-stats - newColGlobalStats, err := MergePartitionStats2GlobalStats(sctx, statsHandle, opts, is, tblInfo, false, nil) - if err != nil { - return err - } - if len(newColGlobalStats.MissingPartitionStats) > 0 { - logutil.BgLogger().Warn("missing partition stats when merging global stats", zap.String("table", tblInfo.Name.L), - zap.String("item", "columns"), zap.Strings("missing", newColGlobalStats.MissingPartitionStats)) - } - for i := 0; i < newColGlobalStats.Num; i++ { - hg, cms, topN := newColGlobalStats.Hg[i], newColGlobalStats.Cms[i], newColGlobalStats.TopN[i] - if hg == nil { - // All partitions have no stats so global stats are not created. - continue - } - // fms for global stats doesn't need to dump to kv. - err = statsHandle.SaveStatsToStorage(tableID, newColGlobalStats.Count, newColGlobalStats.ModifyCount, - 0, hg, cms, topN, 2, 1, false, util.StatsMetaHistorySourceSchemaChange) - if err != nil { - return err - } - } - - // Generate the new index global-stats - globalIdxStatsTopNNum, globalIdxStatsBucketNum := 0, 0 - for _, idx := range tblInfo.Indices { - globalIdxStatsTopN := globalStats.Indices[idx.ID].TopN - if globalIdxStatsTopN != nil && len(globalIdxStatsTopN.TopN) > globalIdxStatsTopNNum { - globalIdxStatsTopNNum = len(globalIdxStatsTopN.TopN) - } - globalIdxStats := globalStats.Indices[idx.ID] - if globalIdxStats != nil && len(globalIdxStats.Buckets) > globalIdxStatsBucketNum { - globalIdxStatsBucketNum = len(globalIdxStats.Buckets) - } - if globalIdxStatsTopNNum != 0 { - opts[ast.AnalyzeOptNumTopN] = uint64(globalIdxStatsTopNNum) - } - if globalIdxStatsBucketNum != 0 { - opts[ast.AnalyzeOptNumBuckets] = uint64(globalIdxStatsBucketNum) - } - newIndexGlobalStats, err := MergePartitionStats2GlobalStats(sctx, statsHandle, opts, is, tblInfo, true, []int64{idx.ID}) - if err != nil { - return err - } - if len(newIndexGlobalStats.MissingPartitionStats) > 0 { - logutil.BgLogger().Warn("missing partition stats when merging global stats", zap.String("table", tblInfo.Name.L), - zap.String("item", "index "+idx.Name.L), zap.Strings("missing", newIndexGlobalStats.MissingPartitionStats)) - } - for i := 0; i < newIndexGlobalStats.Num; i++ { - hg, cms, topN := newIndexGlobalStats.Hg[i], newIndexGlobalStats.Cms[i], newIndexGlobalStats.TopN[i] - if hg == nil { - // All partitions have no stats so global stats are not created. - continue - } - // fms for global stats doesn't need to dump to kv. - err = statsHandle.SaveStatsToStorage(tableID, newIndexGlobalStats.Count, newIndexGlobalStats.ModifyCount, 1, hg, cms, topN, 2, 1, false, util.StatsMetaHistorySourceSchemaChange) - if err != nil { - return err - } - } - } - return nil -} - // blockingMergePartitionStats2GlobalStats merge the partition-level stats to global-level stats based on the tableInfo. // It is the old algorithm to merge partition-level stats to global-level stats. It will happen the OOM. because it will load all the partition-level stats into memory. func blockingMergePartitionStats2GlobalStats( @@ -282,7 +171,7 @@ func blockingMergePartitionStats2GlobalStats( isIndex bool, histIDs []int64, allPartitionStats map[int64]*statistics.Table, - statsHandle util.StatsHandle, + statsHandle statstypes.StatsHandle, ) (globalStats *GlobalStats, err error) { externalCache := false if allPartitionStats != nil { diff --git a/pkg/statistics/handle/globalstats/global_stats_async.go b/pkg/statistics/handle/globalstats/global_stats_async.go index 584209e3f5d9f..0ecfd66463866 100644 --- a/pkg/statistics/handle/globalstats/global_stats_async.go +++ b/pkg/statistics/handle/globalstats/global_stats_async.go @@ -30,6 +30,7 @@ import ( "github.com/pingcap/tidb/pkg/statistics" statslogutil "github.com/pingcap/tidb/pkg/statistics/handle/logutil" "github.com/pingcap/tidb/pkg/statistics/handle/storage" + statstypes "github.com/pingcap/tidb/pkg/statistics/handle/types" "github.com/pingcap/tidb/pkg/statistics/handle/util" "github.com/pingcap/tidb/pkg/types" "go.uber.org/zap" @@ -72,7 +73,7 @@ func toSQLIndex(isIndex bool) int { // └────────────────────────┘ └───────────────────────┘ type AsyncMergePartitionStats2GlobalStats struct { is infoschema.InfoSchema - statsHandle util.StatsHandle + statsHandle statstypes.StatsHandle globalStats *GlobalStats cmsketch chan mergeItem[*statistics.CMSketch] fmsketch chan mergeItem[*statistics.FMSketch] @@ -96,7 +97,7 @@ type AsyncMergePartitionStats2GlobalStats struct { // NewAsyncMergePartitionStats2GlobalStats creates a new AsyncMergePartitionStats2GlobalStats. func NewAsyncMergePartitionStats2GlobalStats( - statsHandle util.StatsHandle, + statsHandle statstypes.StatsHandle, globalTableInfo *model.TableInfo, histIDs []int64, is infoschema.InfoSchema) (*AsyncMergePartitionStats2GlobalStats, error) { diff --git a/pkg/statistics/handle/globalstats/globalstats_test.go b/pkg/statistics/handle/globalstats/globalstats_test.go index 69b5c3d81445b..1d58856c32484 100644 --- a/pkg/statistics/handle/globalstats/globalstats_test.go +++ b/pkg/statistics/handle/globalstats/globalstats_test.go @@ -903,16 +903,6 @@ func TestDDLPartition4GlobalStats(t *testing.T) { globalStats := h.GetTableStats(tableInfo) require.Equal(t, int64(15), globalStats.RealtimeCount) - tk.MustExec("alter table t drop partition p3, p5;") - require.NoError(t, h.DumpStatsDeltaToKV(true)) - require.NoError(t, h.HandleDDLEvent(<-h.DDLEventCh())) - require.NoError(t, h.Update(is)) - result = tk.MustQuery("show stats_meta where table_name = 't';").Rows() - require.Len(t, result, 5) - // The value of global.count will be updated automatically after we drop the table partition. - globalStats = h.GetTableStats(tableInfo) - require.Equal(t, int64(11), globalStats.RealtimeCount) - tk.MustExec("alter table t truncate partition p2, p4;") require.NoError(t, h.DumpStatsDeltaToKV(true)) require.NoError(t, h.HandleDDLEvent(<-h.DDLEventCh())) @@ -920,15 +910,15 @@ func TestDDLPartition4GlobalStats(t *testing.T) { // The value of global.count will not be updated automatically when we truncate the table partition. // Because the partition-stats in the partition table which have been truncated has not been updated. globalStats = h.GetTableStats(tableInfo) - require.Equal(t, int64(11), globalStats.RealtimeCount) + require.Equal(t, int64(15), globalStats.RealtimeCount) tk.MustExec("analyze table t;") result = tk.MustQuery("show stats_meta where table_name = 't';").Rows() // The truncate operation only delete the data from the partition p2 and p4. It will not delete the partition-stats. - require.Len(t, result, 5) + require.Len(t, result, 7) // The result for the globalStats.count will be right now globalStats = h.GetTableStats(tableInfo) - require.Equal(t, int64(7), globalStats.RealtimeCount) + require.Equal(t, int64(11), globalStats.RealtimeCount) } func TestGlobalStatsNDV(t *testing.T) { @@ -1240,3 +1230,38 @@ func TestGlobalIndexStatistics(t *testing.T) { "└─IndexRangeScan_11 4.00 cop[tikv] table:t, index:idx(b) range:[-inf,16), keep order:true")) } } + +func TestIssues24349(t *testing.T) { + store := testkit.CreateMockStore(t) + testKit := testkit.NewTestKit(t, store) + testKit.MustExec("use test") + testKit.MustExec("set @@tidb_partition_prune_mode='dynamic'") + testKit.MustExec("set @@tidb_analyze_version=2") + defer testKit.MustExec("set @@tidb_analyze_version=1") + defer testKit.MustExec("set @@tidb_partition_prune_mode='static'") + testIssues24349(testKit) +} + +func TestIssues24349WithConcurrency(t *testing.T) { + store := testkit.CreateMockStore(t) + testKit := testkit.NewTestKit(t, store) + testKit.MustExec("use test") + testKit.MustExec("set @@tidb_partition_prune_mode='dynamic'") + testKit.MustExec("set @@tidb_analyze_version=2") + testKit.MustExec("set global tidb_merge_partition_stats_concurrency=2") + defer testKit.MustExec("set @@tidb_analyze_version=1") + defer testKit.MustExec("set @@tidb_partition_prune_mode='static'") + defer testKit.MustExec("set global tidb_merge_partition_stats_concurrency=1") + testIssues24349(testKit) +} + +func testIssues24349(testKit *testkit.TestKit) { + testKit.MustExec("create table t (a int, b int) partition by hash(a) partitions 3") + testKit.MustExec("insert into t values (0, 3), (0, 3), (0, 3), (0, 2), (1, 1), (1, 2), (1, 2), (1, 2), (1, 3), (1, 4), (2, 1), (2, 1)") + testKit.MustExec("analyze table t with 1 topn, 3 buckets") + testKit.MustQuery("show stats_buckets where partition_name='global'").Check(testkit.Rows( + "test t global a 0 0 2 2 0 2 0", + "test t global b 0 0 3 1 1 2 0", + "test t global b 0 1 10 1 4 4 0", + )) +} diff --git a/pkg/statistics/handle/globalstats/merge_worker.go b/pkg/statistics/handle/globalstats/merge_worker.go index 7813e6c90c289..b702acaa797f7 100644 --- a/pkg/statistics/handle/globalstats/merge_worker.go +++ b/pkg/statistics/handle/globalstats/merge_worker.go @@ -43,8 +43,11 @@ type topnStatsMergeWorker struct { respCh chan<- *TopnStatsMergeResponse // the stats in the wrapper should only be read during the worker statsWrapper *StatsWrapper + // Different TopN structures may hold the same value, we have to merge them. + counter map[hack.MutableString]float64 // shardMutex is used to protect `statsWrapper.AllHg` shardMutex []sync.Mutex + mu sync.Mutex } // NewTopnStatsMergeWorker returns topn merge worker @@ -54,8 +57,9 @@ func NewTopnStatsMergeWorker( wrapper *StatsWrapper, killer *sqlkiller.SQLKiller) *topnStatsMergeWorker { worker := &topnStatsMergeWorker{ - taskCh: taskCh, - respCh: respCh, + taskCh: taskCh, + respCh: respCh, + counter: make(map[hack.MutableString]float64), } worker.statsWrapper = wrapper worker.shardMutex = make([]sync.Mutex, len(wrapper.AllHg)) @@ -79,15 +83,11 @@ func NewTopnStatsMergeTask(start, end int) *TopnStatsMergeTask { // TopnStatsMergeResponse indicates topn merge worker response type TopnStatsMergeResponse struct { - Err error - TopN *statistics.TopN - PopedTopn []statistics.TopNMeta + Err error } // Run runs topn merge like statistics.MergePartTopN2GlobalTopN -func (worker *topnStatsMergeWorker) Run(timeZone *time.Location, isIndex bool, - n uint32, - version int) { +func (worker *topnStatsMergeWorker) Run(timeZone *time.Location, isIndex bool, version int) { for task := range worker.taskCh { start := task.start end := task.end @@ -95,18 +95,14 @@ func (worker *topnStatsMergeWorker) Run(timeZone *time.Location, isIndex bool, allTopNs := worker.statsWrapper.AllTopN allHists := worker.statsWrapper.AllHg resp := &TopnStatsMergeResponse{} - if statistics.CheckEmptyTopNs(checkTopNs) { - worker.respCh <- resp - return - } + partNum := len(allTopNs) - // Different TopN structures may hold the same value, we have to merge them. - counter := make(map[hack.MutableString]float64) + // datumMap is used to store the mapping from the string type to datum type. // The datum is used to find the value in the histogram. datumMap := statistics.NewDatumMapCache() - for i, topN := range checkTopNs { + i = i + start if err := worker.killer.HandleSignal(); err != nil { resp.Err = err worker.respCh <- resp @@ -117,12 +113,15 @@ func (worker *topnStatsMergeWorker) Run(timeZone *time.Location, isIndex bool, } for _, val := range topN.TopN { encodedVal := hack.String(val.Encoded) - _, exists := counter[encodedVal] - counter[encodedVal] += float64(val.Count) + worker.mu.Lock() + _, exists := worker.counter[encodedVal] + worker.counter[encodedVal] += float64(val.Count) if exists { + worker.mu.Unlock() // We have already calculated the encodedVal from the histogram, so just continue to next topN value. continue } + worker.mu.Unlock() // We need to check whether the value corresponding to encodedVal is contained in other partition-level stats. // 1. Check the topN first. // 2. If the topN doesn't contain the value corresponding to encodedVal. We should check the histogram. @@ -146,31 +145,26 @@ func (worker *topnStatsMergeWorker) Run(timeZone *time.Location, isIndex bool, } datum = d } + worker.shardMutex[j].Lock() // Get the row count which the value is equal to the encodedVal from histogram. count, _ := allHists[j].EqualRowCount(nil, datum, isIndex) if count != 0 { - counter[encodedVal] += count // Remove the value corresponding to encodedVal from the histogram. - worker.shardMutex[j].Lock() worker.statsWrapper.AllHg[j].BinarySearchRemoveVal(statistics.TopNMeta{Encoded: datum.GetBytes(), Count: uint64(count)}) - worker.shardMutex[j].Unlock() + } + worker.shardMutex[j].Unlock() + if count != 0 { + worker.mu.Lock() + worker.counter[encodedVal] += count + worker.mu.Unlock() } } } } - numTop := len(counter) - if numTop == 0 { - worker.respCh <- resp - continue - } - sorted := make([]statistics.TopNMeta, 0, numTop) - for value, cnt := range counter { - data := hack.Slice(string(value)) - sorted = append(sorted, statistics.TopNMeta{Encoded: data, Count: uint64(cnt)}) - } - globalTopN, leftTopN := statistics.GetMergedTopNFromSortedSlice(sorted, n) - resp.TopN = globalTopN - resp.PopedTopn = leftTopN worker.respCh <- resp } } + +func (worker *topnStatsMergeWorker) Result() map[hack.MutableString]float64 { + return worker.counter +} diff --git a/pkg/statistics/handle/globalstats/topn.go b/pkg/statistics/handle/globalstats/topn.go index 9e9f14a068a54..171756b82357b 100644 --- a/pkg/statistics/handle/globalstats/topn.go +++ b/pkg/statistics/handle/globalstats/topn.go @@ -30,8 +30,12 @@ import ( func mergeGlobalStatsTopN(gp *gp.Pool, sc sessionctx.Context, wrapper *StatsWrapper, timeZone *time.Location, version int, n uint32, isIndex bool) (*statistics.TopN, []statistics.TopNMeta, []*statistics.Histogram, error) { + if statistics.CheckEmptyTopNs(wrapper.AllTopN) { + return nil, nil, wrapper.AllHg, nil + } mergeConcurrency := sc.GetSessionVars().AnalyzePartitionMergeConcurrency killer := &sc.GetSessionVars().SQLKiller + // use original method if concurrency equals 1 or for version1 if mergeConcurrency < 2 { return MergePartTopN2GlobalTopN(timeZone, version, wrapper.AllTopN, n, wrapper.AllHg, isIndex, killer) @@ -78,12 +82,12 @@ func MergeGlobalStatsTopNByConcurrency( taskNum := len(tasks) taskCh := make(chan *TopnStatsMergeTask, taskNum) respCh := make(chan *TopnStatsMergeResponse, taskNum) + worker := NewTopnStatsMergeWorker(taskCh, respCh, wrapper, killer) for i := 0; i < mergeConcurrency; i++ { - worker := NewTopnStatsMergeWorker(taskCh, respCh, wrapper, killer) wg.Add(1) gp.Go(func() { defer wg.Done() - worker.Run(timeZone, isIndex, n, version) + worker.Run(timeZone, isIndex, version) }) } for _, task := range tasks { @@ -92,8 +96,6 @@ func MergeGlobalStatsTopNByConcurrency( close(taskCh) wg.Wait() close(respCh) - resps := make([]*TopnStatsMergeResponse, 0) - // handle Error hasErr := false errMsg := make([]string, 0) @@ -102,27 +104,21 @@ func MergeGlobalStatsTopNByConcurrency( hasErr = true errMsg = append(errMsg, resp.Err.Error()) } - resps = append(resps, resp) } if hasErr { return nil, nil, nil, errors.New(strings.Join(errMsg, ",")) } // fetch the response from each worker and merge them into global topn stats - sorted := make([]statistics.TopNMeta, 0, mergeConcurrency) - leftTopn := make([]statistics.TopNMeta, 0) - for _, resp := range resps { - if resp.TopN != nil { - sorted = append(sorted, resp.TopN.TopN...) - } - leftTopn = append(leftTopn, resp.PopedTopn...) + counter := worker.Result() + numTop := len(counter) + sorted := make([]statistics.TopNMeta, 0, numTop) + for value, cnt := range counter { + data := hack.Slice(string(value)) + sorted = append(sorted, statistics.TopNMeta{Encoded: data, Count: uint64(cnt)}) } - globalTopN, popedTopn := statistics.GetMergedTopNFromSortedSlice(sorted, n) - - result := append(leftTopn, popedTopn...) - statistics.SortTopnMeta(result) - return globalTopN, result, wrapper.AllHg, nil + return globalTopN, popedTopn, wrapper.AllHg, nil } // MergePartTopN2GlobalTopN is used to merge the partition-level topN to global-level topN. @@ -149,10 +145,6 @@ func MergePartTopN2GlobalTopN( isIndex bool, killer *sqlkiller.SQLKiller, ) (*statistics.TopN, []statistics.TopNMeta, []*statistics.Histogram, error) { - if statistics.CheckEmptyTopNs(topNs) { - return nil, nil, hists, nil - } - partNum := len(topNs) // Different TopN structures may hold the same value, we have to merge them. counter := make(map[hack.MutableString]float64) diff --git a/pkg/statistics/handle/globalstats/topn_bench_test.go b/pkg/statistics/handle/globalstats/topn_bench_test.go index a272bfbd4bfee..0d3d84d4dae4e 100644 --- a/pkg/statistics/handle/globalstats/topn_bench_test.go +++ b/pkg/statistics/handle/globalstats/topn_bench_test.go @@ -44,7 +44,7 @@ func prepareTopNsAndHists(b *testing.B, partitions int, tz *time.Location) ([]*s if i%2 == 0 && j%2 == 0 { continue } - key, err := codec.EncodeKey(sc, nil, types.NewIntDatum(int64(j))) + key, err := codec.EncodeKey(sc.TimeZone(), nil, types.NewIntDatum(int64(j))) require.NoError(b, err) topN.AppendTopN(key, uint64(rand.Intn(1000))) } diff --git a/pkg/statistics/handle/globalstats/topn_test.go b/pkg/statistics/handle/globalstats/topn_test.go index 9be370fc52032..89c5feebbf147 100644 --- a/pkg/statistics/handle/globalstats/topn_test.go +++ b/pkg/statistics/handle/globalstats/topn_test.go @@ -40,13 +40,13 @@ func TestMergePartTopN2GlobalTopNWithoutHists(t *testing.T) { // Construct TopN, should be key(1, 1) -> 2, key(1, 2) -> 2, key(1, 3) -> 3. topN := statistics.NewTopN(3) { - key1, err := codec.EncodeKey(sc, nil, types.NewIntDatum(1), types.NewIntDatum(1)) + key1, err := codec.EncodeKey(sc.TimeZone(), nil, types.NewIntDatum(1), types.NewIntDatum(1)) require.NoError(t, err) topN.AppendTopN(key1, 2) - key2, err := codec.EncodeKey(sc, nil, types.NewIntDatum(1), types.NewIntDatum(2)) + key2, err := codec.EncodeKey(sc.TimeZone(), nil, types.NewIntDatum(1), types.NewIntDatum(2)) require.NoError(t, err) topN.AppendTopN(key2, 2) - key3, err := codec.EncodeKey(sc, nil, types.NewIntDatum(1), types.NewIntDatum(3)) + key3, err := codec.EncodeKey(sc.TimeZone(), nil, types.NewIntDatum(1), types.NewIntDatum(3)) require.NoError(t, err) topN.AppendTopN(key3, 3) } @@ -73,14 +73,14 @@ func TestMergePartTopN2GlobalTopNWithHists(t *testing.T) { // Construct TopN, should be key1 -> 2, key2 -> 2, key3 -> 3. topN := statistics.NewTopN(3) { - key1, err := codec.EncodeKey(sc, nil, types.NewIntDatum(1)) + key1, err := codec.EncodeKey(sc.TimeZone(), nil, types.NewIntDatum(1)) require.NoError(t, err) topN.AppendTopN(key1, 2) - key2, err := codec.EncodeKey(sc, nil, types.NewIntDatum(2)) + key2, err := codec.EncodeKey(sc.TimeZone(), nil, types.NewIntDatum(2)) require.NoError(t, err) topN.AppendTopN(key2, 2) if i%2 == 0 { - key3, err := codec.EncodeKey(sc, nil, types.NewIntDatum(3)) + key3, err := codec.EncodeKey(sc.TimeZone(), nil, types.NewIntDatum(3)) require.NoError(t, err) topN.AppendTopN(key3, 3) } diff --git a/pkg/statistics/handle/handle.go b/pkg/statistics/handle/handle.go index 7c00c6b72669b..2b7e3044becb6 100644 --- a/pkg/statistics/handle/handle.go +++ b/pkg/statistics/handle/handle.go @@ -15,25 +15,23 @@ package handle import ( - "math" "time" - ddlUtil "github.com/pingcap/tidb/pkg/ddl/util" "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/statistics" "github.com/pingcap/tidb/pkg/statistics/handle/autoanalyze" "github.com/pingcap/tidb/pkg/statistics/handle/cache" + "github.com/pingcap/tidb/pkg/statistics/handle/ddl" "github.com/pingcap/tidb/pkg/statistics/handle/globalstats" "github.com/pingcap/tidb/pkg/statistics/handle/history" "github.com/pingcap/tidb/pkg/statistics/handle/lockstats" statslogutil "github.com/pingcap/tidb/pkg/statistics/handle/logutil" "github.com/pingcap/tidb/pkg/statistics/handle/storage" "github.com/pingcap/tidb/pkg/statistics/handle/syncload" + "github.com/pingcap/tidb/pkg/statistics/handle/types" "github.com/pingcap/tidb/pkg/statistics/handle/usage" "github.com/pingcap/tidb/pkg/statistics/handle/util" - "github.com/tiancaiamao/gp" - atomic2 "go.uber.org/atomic" "go.uber.org/zap" ) @@ -46,108 +44,98 @@ const ( // Handle can update stats info periodically. type Handle struct { - pool util.SessionPool + // Pool is used to get a session or a goroutine to execute stats updating. + util.Pool + + // AutoAnalyzeProcIDGenerator is used to generate auto analyze proc ID. + util.AutoAnalyzeProcIDGenerator + + // LeaseGetter is used to get stats lease. + util.LeaseGetter // initStatsCtx is the ctx only used for initStats initStatsCtx sessionctx.Context - // sysProcTracker is used to track sys process like analyze - sysProcTracker sessionctx.SysProcTracker - // TableInfoGetter is used to fetch table meta info. util.TableInfoGetter // StatsGC is used to GC stats. - util.StatsGC + types.StatsGC // StatsUsage is used to track the usage of column / index statistics. - util.StatsUsage + types.StatsUsage // StatsHistory is used to manage historical stats. - util.StatsHistory + types.StatsHistory // StatsAnalyze is used to handle auto-analyze and manage analyze jobs. - util.StatsAnalyze + types.StatsAnalyze // StatsSyncLoad is used to load stats syncly. - util.StatsSyncLoad + types.StatsSyncLoad // StatsReadWriter is used to read/write stats from/to storage. - util.StatsReadWriter + types.StatsReadWriter // StatsLock is used to manage locked stats. - util.StatsLock + types.StatsLock // StatsGlobal is used to manage global stats. - util.StatsGlobal + types.StatsGlobal - // This gpool is used to reuse goroutine in the mergeGlobalStatsTopN. - gpool *gp.Pool - - // autoAnalyzeProcIDGetter is used to generate auto analyze ID. - autoAnalyzeProcIDGetter func() uint64 + // DDL is used to handle ddl events. + types.DDL InitStatsDone chan struct{} - // ddlEventCh is a channel to notify a ddl operation has happened. - // It is sent only by owner or the drop stats executor, and read by stats handle. - ddlEventCh chan *ddlUtil.Event - // StatsCache ... - util.StatsCache - - lease atomic2.Duration + types.StatsCache } // Clear the statsCache, only for test. func (h *Handle) Clear() { h.StatsCache.Clear() - for len(h.ddlEventCh) > 0 { - <-h.ddlEventCh + for len(h.DDLEventCh()) > 0 { + <-h.DDLEventCh() } h.ResetSessionStatsList() } // NewHandle creates a Handle for update stats. -func NewHandle(_, initStatsCtx sessionctx.Context, lease time.Duration, pool util.SessionPool, tracker sessionctx.SysProcTracker, autoAnalyzeProcIDGetter func() uint64) (*Handle, error) { +func NewHandle( + _, /* ctx, keep it for feature usage */ + initStatsCtx sessionctx.Context, + lease time.Duration, + pool util.SessionPool, + tracker sessionctx.SysProcTracker, + autoAnalyzeProcIDGetter func() uint64, +) (*Handle, error) { handle := &Handle{ - gpool: gp.New(math.MaxInt16, time.Minute), - ddlEventCh: make(chan *ddlUtil.Event, 1000), - pool: pool, - sysProcTracker: tracker, - autoAnalyzeProcIDGetter: autoAnalyzeProcIDGetter, - InitStatsDone: make(chan struct{}), - TableInfoGetter: util.NewTableInfoGetter(), - StatsLock: lockstats.NewStatsLock(pool), + InitStatsDone: make(chan struct{}), + TableInfoGetter: util.NewTableInfoGetter(), + StatsLock: lockstats.NewStatsLock(pool), } handle.StatsGC = storage.NewStatsGC(handle) handle.StatsReadWriter = storage.NewStatsReadWriter(handle) handle.initStatsCtx = initStatsCtx - handle.lease.Store(lease) statsCache, err := cache.NewStatsCacheImpl(handle) if err != nil { return nil, err } + handle.Pool = util.NewPool(pool) + handle.AutoAnalyzeProcIDGenerator = util.NewGenerator(autoAnalyzeProcIDGetter) + handle.LeaseGetter = util.NewLeaseGetter(lease) handle.StatsCache = statsCache handle.StatsHistory = history.NewStatsHistory(handle) handle.StatsUsage = usage.NewStatsUsageImpl(handle) - handle.StatsAnalyze = autoanalyze.NewStatsAnalyze(handle) + handle.StatsAnalyze = autoanalyze.NewStatsAnalyze(handle, tracker) handle.StatsSyncLoad = syncload.NewStatsSyncLoad(handle) handle.StatsGlobal = globalstats.NewStatsGlobal(handle) + handle.DDL = ddl.NewDDLHandler(handle.StatsReadWriter, handle, handle.StatsGlobal) return handle, nil } -// Lease returns the stats lease. -func (h *Handle) Lease() time.Duration { - return h.lease.Load() -} - -// SetLease sets the stats lease. -func (h *Handle) SetLease(lease time.Duration) { - h.lease.Store(lease) -} - // GetTableStats retrieves the statistics table from cache, and the cache will be updated by a goroutine. // TODO: remove GetTableStats later on. func (h *Handle) GetTableStats(tblInfo *model.TableInfo) *statistics.Table { @@ -155,7 +143,7 @@ func (h *Handle) GetTableStats(tblInfo *model.TableInfo) *statistics.Table { } // GetPartitionStats retrieves the partition stats from cache. -// TODO: remove GetPartitionStats later on. +// TODO: remove GetTableStats later on. func (h *Handle) GetPartitionStats(tblInfo *model.TableInfo, pid int64) *statistics.Table { var tbl *statistics.Table if h == nil { @@ -177,8 +165,8 @@ func (h *Handle) GetPartitionStats(tblInfo *model.TableInfo, pid int64) *statist // FlushStats flushes the cached stats update into store. func (h *Handle) FlushStats() { - for len(h.ddlEventCh) > 0 { - e := <-h.ddlEventCh + for len(h.DDLEventCh()) > 0 { + e := <-h.DDLEventCh() if err := h.HandleDDLEvent(e); err != nil { statslogutil.StatsLogger.Error("handle ddl event fail", zap.Error(err)) } @@ -190,35 +178,6 @@ func (h *Handle) FlushStats() { // Close stops the background func (h *Handle) Close() { - h.gpool.Close() + h.Pool.Close() h.StatsCache.Close() } - -// GetCurrentPruneMode returns the current latest partitioning table prune mode. -func (h *Handle) GetCurrentPruneMode() (mode string, err error) { - err = util.CallWithSCtx(h.pool, func(sctx sessionctx.Context) error { - mode = sctx.GetSessionVars().PartitionPruneMode.Load() - return nil - }) - return -} - -// GPool returns the goroutine pool of handle. -func (h *Handle) GPool() *gp.Pool { - return h.gpool -} - -// SPool returns the session pool. -func (h *Handle) SPool() util.SessionPool { - return h.pool -} - -// SysProcTracker is used to track sys process like analyze -func (h *Handle) SysProcTracker() sessionctx.SysProcTracker { - return h.sysProcTracker -} - -// AutoAnalyzeProcID generates an analyze ID. -func (h *Handle) AutoAnalyzeProcID() uint64 { - return h.autoAnalyzeProcIDGetter() -} diff --git a/pkg/statistics/handle/handletest/BUILD.bazel b/pkg/statistics/handle/handletest/BUILD.bazel index dcce57477791f..9780c170a0aa5 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 = 37, + shard_count = 36, deps = [ "//pkg/config", "//pkg/domain", diff --git a/pkg/statistics/handle/handletest/handle_test.go b/pkg/statistics/handle/handletest/handle_test.go index ab60147c2c783..21b0a68775e60 100644 --- a/pkg/statistics/handle/handletest/handle_test.go +++ b/pkg/statistics/handle/handletest/handle_test.go @@ -1361,24 +1361,6 @@ func TestStatsCacheUpdateSkip(t *testing.T) { require.Equal(t, statsTbl2, statsTbl1) } -func TestIssues24349(t *testing.T) { - store := testkit.CreateMockStore(t) - testKit := testkit.NewTestKit(t, store) - testKit.MustExec("use test") - testKit.MustExec("set @@tidb_partition_prune_mode='dynamic'") - testKit.MustExec("set @@tidb_analyze_version=2") - defer testKit.MustExec("set @@tidb_analyze_version=1") - defer testKit.MustExec("set @@tidb_partition_prune_mode='static'") - testKit.MustExec("create table t (a int, b int) partition by hash(a) partitions 3") - testKit.MustExec("insert into t values (0, 3), (0, 3), (0, 3), (0, 2), (1, 1), (1, 2), (1, 2), (1, 2), (1, 3), (1, 4), (2, 1), (2, 1)") - testKit.MustExec("analyze table t with 1 topn, 3 buckets") - testKit.MustQuery("show stats_buckets where partition_name='global'").Check(testkit.Rows( - "test t global a 0 0 2 2 0 2 0", - "test t global b 0 0 3 1 1 2 0", - "test t global b 0 1 10 1 4 4 0", - )) -} - func testIncrementalModifyCountUpdateHelper(analyzeSnapshot bool) func(*testing.T) { return func(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) diff --git a/pkg/statistics/handle/history/BUILD.bazel b/pkg/statistics/handle/history/BUILD.bazel index 6b6f2ab12aee9..ab62dd729d37a 100644 --- a/pkg/statistics/handle/history/BUILD.bazel +++ b/pkg/statistics/handle/history/BUILD.bazel @@ -10,6 +10,7 @@ go_library( "//pkg/sessionctx", "//pkg/statistics/handle/cache", "//pkg/statistics/handle/storage", + "//pkg/statistics/handle/types", "//pkg/statistics/handle/util", "//pkg/util/logutil", "@com_github_pingcap_errors//:errors", diff --git a/pkg/statistics/handle/history/history_stats.go b/pkg/statistics/handle/history/history_stats.go index 690a265e05eff..9acebeb010d8e 100644 --- a/pkg/statistics/handle/history/history_stats.go +++ b/pkg/statistics/handle/history/history_stats.go @@ -22,6 +22,7 @@ import ( "github.com/pingcap/tidb/pkg/sessionctx" "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" "github.com/pingcap/tidb/pkg/util/logutil" "go.uber.org/zap" @@ -29,12 +30,12 @@ import ( // statsHistoryImpl implements util.StatsHistory. type statsHistoryImpl struct { - statsHandle util.StatsHandle + statsHandle types.StatsHandle } // NewStatsHistory creates a new StatsHistory. -func NewStatsHistory(statsHandle util.StatsHandle, -) util.StatsHistory { +func NewStatsHistory(statsHandle types.StatsHandle, +) types.StatsHistory { return &statsHistoryImpl{ statsHandle: statsHandle, } diff --git a/pkg/statistics/handle/lockstats/BUILD.bazel b/pkg/statistics/handle/lockstats/BUILD.bazel index c104b9bb79a5e..986c1c43e31e3 100644 --- a/pkg/statistics/handle/lockstats/BUILD.bazel +++ b/pkg/statistics/handle/lockstats/BUILD.bazel @@ -13,6 +13,7 @@ go_library( "//pkg/sessionctx", "//pkg/statistics/handle/cache", "//pkg/statistics/handle/logutil", + "//pkg/statistics/handle/types", "//pkg/statistics/handle/util", "//pkg/util/sqlexec", "@com_github_pingcap_errors//:errors", @@ -36,6 +37,7 @@ go_test( "//pkg/kv", "//pkg/parser/mysql", "//pkg/sessionctx", + "//pkg/statistics/handle/types", "//pkg/statistics/handle/util", "//pkg/testkit/testsetup", "//pkg/types", diff --git a/pkg/statistics/handle/lockstats/lock_stats.go b/pkg/statistics/handle/lockstats/lock_stats.go index e120417706e2e..20c78784efcba 100644 --- a/pkg/statistics/handle/lockstats/lock_stats.go +++ b/pkg/statistics/handle/lockstats/lock_stats.go @@ -21,6 +21,7 @@ import ( "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/statistics/handle/logutil" + "github.com/pingcap/tidb/pkg/statistics/handle/types" "github.com/pingcap/tidb/pkg/statistics/handle/util" "github.com/pingcap/tidb/pkg/util/sqlexec" "go.uber.org/zap" @@ -41,14 +42,14 @@ type statsLockImpl struct { } // NewStatsLock creates a new StatsLock. -func NewStatsLock(pool util.SessionPool) util.StatsLock { +func NewStatsLock(pool util.SessionPool) types.StatsLock { return &statsLockImpl{pool: pool} } // LockTables add locked tables id to store. // - tables: tables that will be locked. // Return the message of skipped tables and error. -func (sl *statsLockImpl) LockTables(tables map[int64]*util.StatsLockTable) (skipped string, err error) { +func (sl *statsLockImpl) LockTables(tables map[int64]*types.StatsLockTable) (skipped string, err error) { err = util.CallWithSCtx(sl.pool, func(sctx sessionctx.Context) error { skipped, err = AddLockedTables(sctx, tables) return err @@ -78,7 +79,7 @@ func (sl *statsLockImpl) LockPartitions( // RemoveLockedTables remove tables from table locked records. // - tables: tables of which will be unlocked. // Return the message of skipped tables and error. -func (sl *statsLockImpl) RemoveLockedTables(tables map[int64]*util.StatsLockTable) (skipped string, err error) { +func (sl *statsLockImpl) RemoveLockedTables(tables map[int64]*types.StatsLockTable) (skipped string, err error) { err = util.CallWithSCtx(sl.pool, func(sctx sessionctx.Context) error { skipped, err = RemoveLockedTables(sctx, tables) return err @@ -139,7 +140,7 @@ var ( // Return the message of skipped tables and error. func AddLockedTables( sctx sessionctx.Context, - tables map[int64]*util.StatsLockTable, + tables map[int64]*types.StatsLockTable, ) (string, error) { // Load tables to check duplicate before insert. lockedTables, err := QueryLockedTables(sctx) diff --git a/pkg/statistics/handle/lockstats/lock_stats_test.go b/pkg/statistics/handle/lockstats/lock_stats_test.go index 2433ecab9e257..64932cf625c33 100644 --- a/pkg/statistics/handle/lockstats/lock_stats_test.go +++ b/pkg/statistics/handle/lockstats/lock_stats_test.go @@ -19,6 +19,7 @@ import ( "github.com/pingcap/errors" "github.com/pingcap/tidb/pkg/parser/mysql" + statstypes "github.com/pingcap/tidb/pkg/statistics/handle/types" "github.com/pingcap/tidb/pkg/statistics/handle/util" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/chunk" @@ -211,7 +212,7 @@ func TestAddLockedTables(t *testing.T) { gomock.Eq([]interface{}{int64(4), int64(4)}), ) - tables := map[int64]*util.StatsLockTable{ + tables := map[int64]*statstypes.StatsLockTable{ 1: { FullName: "test.t1", PartitionInfo: map[int64]string{ diff --git a/pkg/statistics/handle/lockstats/unlock_stats.go b/pkg/statistics/handle/lockstats/unlock_stats.go index 18cb49b591785..21d422d66d691 100644 --- a/pkg/statistics/handle/lockstats/unlock_stats.go +++ b/pkg/statistics/handle/lockstats/unlock_stats.go @@ -19,6 +19,7 @@ import ( "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/statistics/handle/cache" statslogutil "github.com/pingcap/tidb/pkg/statistics/handle/logutil" + "github.com/pingcap/tidb/pkg/statistics/handle/types" "github.com/pingcap/tidb/pkg/statistics/handle/util" "go.uber.org/zap" ) @@ -37,7 +38,7 @@ const ( // Return the message of skipped tables and error. func RemoveLockedTables( sctx sessionctx.Context, - tables map[int64]*util.StatsLockTable, + tables map[int64]*types.StatsLockTable, ) (string, error) { // Load tables to check locked before delete. lockedTables, err := QueryLockedTables(sctx) diff --git a/pkg/statistics/handle/lockstats/unlock_stats_test.go b/pkg/statistics/handle/lockstats/unlock_stats_test.go index 750e935d1d429..62dfce7352bcf 100644 --- a/pkg/statistics/handle/lockstats/unlock_stats_test.go +++ b/pkg/statistics/handle/lockstats/unlock_stats_test.go @@ -20,6 +20,7 @@ import ( "github.com/pingcap/errors" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/sessionctx" + stststypes "github.com/pingcap/tidb/pkg/statistics/handle/types" "github.com/pingcap/tidb/pkg/statistics/handle/util" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/chunk" @@ -243,7 +244,7 @@ func TestRemoveLockedTables(t *testing.T) { gomock.Eq([]interface{}{int64(4)}), ).Return(nil, nil, nil) - tables := map[int64]*util.StatsLockTable{ + tables := map[int64]*stststypes.StatsLockTable{ 1: { FullName: "test.t1", PartitionInfo: map[int64]string{ diff --git a/pkg/statistics/handle/storage/BUILD.bazel b/pkg/statistics/handle/storage/BUILD.bazel index 41cfbd5bfcd6f..def09ccf1bf7d 100644 --- a/pkg/statistics/handle/storage/BUILD.bazel +++ b/pkg/statistics/handle/storage/BUILD.bazel @@ -27,6 +27,7 @@ go_library( "//pkg/statistics/handle/lockstats", "//pkg/statistics/handle/logutil", "//pkg/statistics/handle/metrics", + "//pkg/statistics/handle/types", "//pkg/statistics/handle/util", "//pkg/types", "//pkg/util/chunk", @@ -53,7 +54,7 @@ go_test( "read_test.go", ], flaky = True, - shard_count = 21, + shard_count = 20, deps = [ ":storage", "//pkg/domain", diff --git a/pkg/statistics/handle/storage/gc.go b/pkg/statistics/handle/storage/gc.go index 155830c59af34..51664008fd11a 100644 --- a/pkg/statistics/handle/storage/gc.go +++ b/pkg/statistics/handle/storage/gc.go @@ -29,6 +29,7 @@ import ( "github.com/pingcap/tidb/pkg/statistics" "github.com/pingcap/tidb/pkg/statistics/handle/cache" "github.com/pingcap/tidb/pkg/statistics/handle/lockstats" + "github.com/pingcap/tidb/pkg/statistics/handle/types" "github.com/pingcap/tidb/pkg/statistics/handle/util" "github.com/pingcap/tidb/pkg/util/chunk" "github.com/pingcap/tidb/pkg/util/logutil" @@ -39,11 +40,11 @@ import ( // statsGCImpl implements StatsGC interface. type statsGCImpl struct { - statsHandle util.StatsHandle + statsHandle types.StatsHandle } // NewStatsGC creates a new StatsGC. -func NewStatsGC(statsHandle util.StatsHandle) util.StatsGC { +func NewStatsGC(statsHandle types.StatsHandle) types.StatsGC { return &statsGCImpl{ statsHandle: statsHandle, } @@ -76,7 +77,7 @@ func (gc *statsGCImpl) DeleteTableStatsFromKV(statsIDs []int64) (err error) { // For dropped tables, we will first update their version // so that other tidb could know that table is deleted. func GCStats(sctx sessionctx.Context, - statsHandle util.StatsHandle, + statsHandle types.StatsHandle, is infoschema.InfoSchema, ddlLease time.Duration) (err error) { // To make sure that all the deleted tables' schema and stats info have been acknowledged to all tidb, // we only garbage collect version before 10 lease. @@ -263,7 +264,7 @@ func removeDeletedExtendedStats(sctx sessionctx.Context, version uint64) (err er // gcTableStats GC this table's stats. func gcTableStats(sctx sessionctx.Context, - statsHandler util.StatsHandle, + statsHandler types.StatsHandle, is infoschema.InfoSchema, physicalID int64) error { rows, _, err := util.ExecRows(sctx, "select is_index, hist_id from mysql.stats_histograms where table_id = %?", physicalID) if err != nil { @@ -384,7 +385,7 @@ func writeGCTimestampToKV(sctx sessionctx.Context, newTS uint64) error { // MarkExtendedStatsDeleted update the status of mysql.stats_extended to be `deleted` and the version of mysql.stats_meta. func MarkExtendedStatsDeleted(sctx sessionctx.Context, - statsCache util.StatsCache, + statsCache types.StatsCache, statsName string, tableID int64, ifExists bool) (statsVer uint64, err error) { rows, _, err := util.ExecRows(sctx, "SELECT name FROM mysql.stats_extended WHERE name = %? and table_id = %? and status in (%?, %?)", statsName, tableID, statistics.ExtendedStatsInited, statistics.ExtendedStatsAnalyzed) if err != nil { diff --git a/pkg/statistics/handle/storage/read.go b/pkg/statistics/handle/storage/read.go index 0f2e88889509c..531b8872d3c66 100644 --- a/pkg/statistics/handle/storage/read.go +++ b/pkg/statistics/handle/storage/read.go @@ -30,6 +30,7 @@ import ( "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/statistics" statslogutil "github.com/pingcap/tidb/pkg/statistics/handle/logutil" + statstypes "github.com/pingcap/tidb/pkg/statistics/handle/types" "github.com/pingcap/tidb/pkg/statistics/handle/util" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/chunk" @@ -492,7 +493,7 @@ func LoadHistogram(sctx sessionctx.Context, tableID int64, isIndex int, histID i } // LoadNeededHistograms will load histograms for those needed columns/indices. -func LoadNeededHistograms(sctx sessionctx.Context, statsCache util.StatsCache, loadFMSketch bool) (err error) { +func LoadNeededHistograms(sctx sessionctx.Context, statsCache statstypes.StatsCache, loadFMSketch bool) (err error) { items := statistics.HistogramNeededItems.AllItems() for _, item := range items { if !item.IsIndex { @@ -507,7 +508,7 @@ func LoadNeededHistograms(sctx sessionctx.Context, statsCache util.StatsCache, l return nil } -func loadNeededColumnHistograms(sctx sessionctx.Context, statsCache util.StatsCache, col model.TableItemID, loadFMSketch bool) (err error) { +func loadNeededColumnHistograms(sctx sessionctx.Context, statsCache statstypes.StatsCache, col model.TableItemID, loadFMSketch bool) (err error) { tbl, ok := statsCache.Get(col.TableID) if !ok { return nil @@ -567,7 +568,7 @@ func loadNeededColumnHistograms(sctx sessionctx.Context, statsCache util.StatsCa return nil } -func loadNeededIndexHistograms(sctx sessionctx.Context, statsCache util.StatsCache, idx model.TableItemID, loadFMSketch bool) (err error) { +func loadNeededIndexHistograms(sctx sessionctx.Context, statsCache statstypes.StatsCache, idx model.TableItemID, loadFMSketch bool) (err error) { tbl, ok := statsCache.Get(idx.TableID) if !ok { return nil diff --git a/pkg/statistics/handle/storage/read_test.go b/pkg/statistics/handle/storage/read_test.go index f67fad1de7772..4160ca9e74025 100644 --- a/pkg/statistics/handle/storage/read_test.go +++ b/pkg/statistics/handle/storage/read_test.go @@ -105,14 +105,3 @@ func TestLoadStats(t *testing.T) { require.Greater(t, float64(cms.TotalCount()+topN.TotalCount())+hg.TotalRowCount(), float64(0)) require.True(t, idx.IsFullLoad()) } - -func TestReloadExtStatsLockRelease(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - tk.MustExec("set session tidb_enable_extended_stats = on") - tk.MustExec("use test") - tk.MustExec("create table t(a int, b int)") - tk.MustExec("insert into t values(1,1),(2,2),(3,3)") - tk.MustExec("alter table t add stats_extended s1 correlation(a,b)") - tk.MustExec("analyze table t") // no error -} diff --git a/pkg/statistics/handle/storage/stats_read_writer.go b/pkg/statistics/handle/storage/stats_read_writer.go index b187b7b1e557b..596fc64495379 100644 --- a/pkg/statistics/handle/storage/stats_read_writer.go +++ b/pkg/statistics/handle/storage/stats_read_writer.go @@ -31,6 +31,7 @@ import ( "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/statistics" handle_metrics "github.com/pingcap/tidb/pkg/statistics/handle/metrics" + statstypes "github.com/pingcap/tidb/pkg/statistics/handle/types" "github.com/pingcap/tidb/pkg/statistics/handle/util" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/intest" @@ -39,11 +40,11 @@ import ( // statsReadWriter implements the util.StatsReadWriter interface. type statsReadWriter struct { - statsHandler util.StatsHandle + statsHandler statstypes.StatsHandle } // NewStatsReadWriter creates a new StatsReadWriter. -func NewStatsReadWriter(statsHandler util.StatsHandle) util.StatsReadWriter { +func NewStatsReadWriter(statsHandler statstypes.StatsHandle) statstypes.StatsReadWriter { return &statsReadWriter{statsHandler: statsHandler} } @@ -415,7 +416,7 @@ func (s *statsReadWriter) DumpHistoricalStatsBySnapshot( // DumpStatsToJSONBySnapshot dumps statistic to json. func (s *statsReadWriter) DumpStatsToJSONBySnapshot(dbName string, tableInfo *model.TableInfo, snapshot uint64, dumpPartitionStats bool) (*util.JSONTable, error) { - pruneMode, err := s.statsHandler.GetCurrentPruneMode() + pruneMode, err := util.GetCurrentPruneMode(s.statsHandler.SPool()) if err != nil { return nil, err } diff --git a/pkg/statistics/handle/storage/update.go b/pkg/statistics/handle/storage/update.go index bc304ff596e90..7ff82eade236b 100644 --- a/pkg/statistics/handle/storage/update.go +++ b/pkg/statistics/handle/storage/update.go @@ -26,6 +26,7 @@ import ( "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/statistics" "github.com/pingcap/tidb/pkg/statistics/handle/cache" + "github.com/pingcap/tidb/pkg/statistics/handle/types" statsutil "github.com/pingcap/tidb/pkg/statistics/handle/util" ) @@ -102,7 +103,7 @@ func DumpTableStatColSizeToKV(sctx sessionctx.Context, id int64, delta variable. // InsertExtendedStats inserts a record into mysql.stats_extended and update version in mysql.stats_meta. func InsertExtendedStats(sctx sessionctx.Context, - statsCache statsutil.StatsCache, + statsCache types.StatsCache, statsName string, colIDs []int64, tp int, tableID int64, ifNotExists bool) (statsVer uint64, err error) { slices.Sort(colIDs) bytes, err := json.Marshal(colIDs) @@ -194,7 +195,7 @@ func SaveExtendedStatsToStorage(sctx sessionctx.Context, return statsVer, nil } -func removeExtendedStatsItem(statsCache statsutil.StatsCache, +func removeExtendedStatsItem(statsCache types.StatsCache, tableID int64, statsName string) { tbl, ok := statsCache.Get(tableID) if !ok || tbl.ExtendedStats == nil || len(tbl.ExtendedStats.Stats) == 0 { diff --git a/pkg/statistics/handle/syncload/BUILD.bazel b/pkg/statistics/handle/syncload/BUILD.bazel index 910011c8f6f00..901964873fda2 100644 --- a/pkg/statistics/handle/syncload/BUILD.bazel +++ b/pkg/statistics/handle/syncload/BUILD.bazel @@ -14,6 +14,7 @@ go_library( "//pkg/sessionctx/stmtctx", "//pkg/statistics", "//pkg/statistics/handle/storage", + "//pkg/statistics/handle/types", "//pkg/statistics/handle/util", "//pkg/types", "//pkg/util", diff --git a/pkg/statistics/handle/syncload/stats_syncload.go b/pkg/statistics/handle/syncload/stats_syncload.go index b071cdac5523b..9e98c5f9e5829 100644 --- a/pkg/statistics/handle/syncload/stats_syncload.go +++ b/pkg/statistics/handle/syncload/stats_syncload.go @@ -28,6 +28,7 @@ import ( "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/statistics" "github.com/pingcap/tidb/pkg/statistics/handle/storage" + statstypes "github.com/pingcap/tidb/pkg/statistics/handle/types" utilstats "github.com/pingcap/tidb/pkg/statistics/handle/util" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util" @@ -36,17 +37,17 @@ import ( ) type statsSyncLoad struct { - statsHandle utilstats.StatsHandle - StatsLoad utilstats.StatsLoad + statsHandle statstypes.StatsHandle + StatsLoad statstypes.StatsLoad } // NewStatsSyncLoad creates a new StatsSyncLoad. -func NewStatsSyncLoad(statsHandle utilstats.StatsHandle) utilstats.StatsSyncLoad { +func NewStatsSyncLoad(statsHandle statstypes.StatsHandle) statstypes.StatsSyncLoad { s := &statsSyncLoad{statsHandle: statsHandle} cfg := config.GetGlobalConfig() s.StatsLoad.SubCtxs = make([]sessionctx.Context, cfg.Performance.StatsLoadConcurrency) - s.StatsLoad.NeededItemsCh = make(chan *utilstats.NeededItemTask, cfg.Performance.StatsLoadQueueSize) - s.StatsLoad.TimeoutItemsCh = make(chan *utilstats.NeededItemTask, cfg.Performance.StatsLoadQueueSize) + s.StatsLoad.NeededItemsCh = make(chan *statstypes.NeededItemTask, cfg.Performance.StatsLoadQueueSize) + s.StatsLoad.TimeoutItemsCh = make(chan *statstypes.NeededItemTask, cfg.Performance.StatsLoadQueueSize) s.StatsLoad.WorkingColMap = map[model.TableItemID][]chan stmtctx.StatsLoadResult{} return s } @@ -81,9 +82,9 @@ func (s *statsSyncLoad) SendLoadRequests(sc *stmtctx.StatementContext, neededHis sc.StatsLoad.Timeout = timeout sc.StatsLoad.NeededItems = remainedItems sc.StatsLoad.ResultCh = make(chan stmtctx.StatsLoadResult, len(remainedItems)) - tasks := make([]*utilstats.NeededItemTask, 0) + tasks := make([]*statstypes.NeededItemTask, 0) for _, item := range remainedItems { - task := &utilstats.NeededItemTask{ + task := &statstypes.NeededItemTask{ TableItemID: item, ToTimeout: time.Now().Local().Add(timeout), ResultCh: sc.StatsLoad.ResultCh, @@ -166,7 +167,7 @@ func (s *statsSyncLoad) removeHistLoadedColumns(neededItems []model.TableItemID) } // AppendNeededItem appends needed columns/indices to ch, it is only used for test -func (s *statsSyncLoad) AppendNeededItem(task *utilstats.NeededItemTask, timeout time.Duration) error { +func (s *statsSyncLoad) AppendNeededItem(task *statstypes.NeededItemTask, timeout time.Duration) error { timer := time.NewTimer(timeout) defer timer.Stop() select { @@ -186,7 +187,7 @@ func (s *statsSyncLoad) SubLoadWorker(sctx sessionctx.Context, exit chan struct{ logutil.BgLogger().Info("SubLoadWorker exited.") }() // if the last task is not successfully handled in last round for error or panic, pass it to this round to retry - var lastTask *utilstats.NeededItemTask + var lastTask *statstypes.NeededItemTask for { task, err := s.HandleOneTask(sctx, lastTask, exit) lastTask = task @@ -203,7 +204,7 @@ func (s *statsSyncLoad) SubLoadWorker(sctx sessionctx.Context, exit chan struct{ } // HandleOneTask handles last task if not nil, else handle a new task from chan, and return current task if fail somewhere. -func (s *statsSyncLoad) HandleOneTask(sctx sessionctx.Context, lastTask *utilstats.NeededItemTask, exit chan struct{}) (task *utilstats.NeededItemTask, err error) { +func (s *statsSyncLoad) HandleOneTask(sctx sessionctx.Context, lastTask *statstypes.NeededItemTask, exit chan struct{}) (task *statstypes.NeededItemTask, err error) { defer func() { // recover for each task, worker keeps working if r := recover(); r != nil { @@ -225,7 +226,7 @@ func (s *statsSyncLoad) HandleOneTask(sctx sessionctx.Context, lastTask *utilsta return s.handleOneItemTask(sctx, task) } -func (s *statsSyncLoad) handleOneItemTask(sctx sessionctx.Context, task *utilstats.NeededItemTask) (*utilstats.NeededItemTask, error) { +func (s *statsSyncLoad) handleOneItemTask(sctx sessionctx.Context, task *statstypes.NeededItemTask) (*statstypes.NeededItemTask, error) { result := stmtctx.StatsLoadResult{Item: task.TableItemID} item := result.Item tbl, ok := s.statsHandle.Get(item.TableID) @@ -367,7 +368,7 @@ func (*statsSyncLoad) readStatsForOneItem(sctx sessionctx.Context, item model.Ta } // drainColTask will hang until a column task can return, and either task or error will be returned. -func (s *statsSyncLoad) drainColTask(exit chan struct{}) (*utilstats.NeededItemTask, error) { +func (s *statsSyncLoad) drainColTask(exit chan struct{}) (*statstypes.NeededItemTask, error) { // select NeededColumnsCh firstly, if no task, then select TimeoutColumnsCh for { select { @@ -407,7 +408,7 @@ func (s *statsSyncLoad) drainColTask(exit chan struct{}) (*utilstats.NeededItemT } // writeToTimeoutChan writes in a nonblocking way, and if the channel queue is full, it's ok to drop the task. -func (*statsSyncLoad) writeToTimeoutChan(taskCh chan *utilstats.NeededItemTask, task *utilstats.NeededItemTask) { +func (*statsSyncLoad) writeToTimeoutChan(taskCh chan *statstypes.NeededItemTask, task *statstypes.NeededItemTask) { select { case taskCh <- task: default: @@ -415,7 +416,7 @@ func (*statsSyncLoad) writeToTimeoutChan(taskCh chan *utilstats.NeededItemTask, } // writeToChanWithTimeout writes a task to a channel and blocks until timeout. -func (*statsSyncLoad) writeToChanWithTimeout(taskCh chan *utilstats.NeededItemTask, task *utilstats.NeededItemTask, timeout time.Duration) error { +func (*statsSyncLoad) writeToChanWithTimeout(taskCh chan *statstypes.NeededItemTask, task *statstypes.NeededItemTask, timeout time.Duration) error { timer := time.NewTimer(timeout) defer timer.Stop() select { diff --git a/pkg/statistics/handle/types/BUILD.bazel b/pkg/statistics/handle/types/BUILD.bazel new file mode 100644 index 0000000000000..5c2585c1b1a30 --- /dev/null +++ b/pkg/statistics/handle/types/BUILD.bazel @@ -0,0 +1,20 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "types", + srcs = ["interfaces.go"], + importpath = "github.com/pingcap/tidb/pkg/statistics/handle/types", + visibility = ["//visibility:public"], + deps = [ + "//pkg/infoschema", + "//pkg/parser/ast", + "//pkg/parser/model", + "//pkg/sessionctx", + "//pkg/sessionctx/stmtctx", + "//pkg/statistics", + "//pkg/statistics/handle/util", + "//pkg/types", + "//pkg/util", + "//pkg/util/sqlexec", + ], +) diff --git a/pkg/statistics/handle/util/interfaces.go b/pkg/statistics/handle/types/interfaces.go similarity index 93% rename from pkg/statistics/handle/util/interfaces.go rename to pkg/statistics/handle/types/interfaces.go index e3cd3a2ef8434..1bec477a7b24f 100644 --- a/pkg/statistics/handle/util/interfaces.go +++ b/pkg/statistics/handle/types/interfaces.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package util +package types import ( "context" @@ -25,10 +25,10 @@ import ( "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/statistics" + statsutil "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/sqlexec" - "github.com/tiancaiamao/gp" ) // StatsGC is used to GC unnecessary stats. @@ -260,11 +260,11 @@ type StatsReadWriter interface { ChangeGlobalStatsID(from, to int64) (err error) // TableStatsToJSON dumps table stats to JSON. - TableStatsToJSON(dbName string, tableInfo *model.TableInfo, physicalID int64, snapshot uint64) (*JSONTable, error) + TableStatsToJSON(dbName string, tableInfo *model.TableInfo, physicalID int64, snapshot uint64) (*statsutil.JSONTable, error) // DumpStatsToJSON dumps statistic to json. DumpStatsToJSON(dbName string, tableInfo *model.TableInfo, - historyStatsExec sqlexec.RestrictedSQLExecutor, dumpPartitionStats bool) (*JSONTable, error) + historyStatsExec sqlexec.RestrictedSQLExecutor, dumpPartitionStats bool) (*statsutil.JSONTable, error) // DumpHistoricalStatsBySnapshot dumped json tables from mysql.stats_meta_history and mysql.stats_history. // As implemented in getTableHistoricalStatsToJSONWithFallback, if historical stats are nonexistent, it will fall back @@ -274,20 +274,20 @@ type StatsReadWriter interface { tableInfo *model.TableInfo, snapshot uint64, ) ( - jt *JSONTable, + jt *statsutil.JSONTable, fallbackTbls []string, err error, ) // DumpStatsToJSONBySnapshot dumps statistic to json. - DumpStatsToJSONBySnapshot(dbName string, tableInfo *model.TableInfo, snapshot uint64, dumpPartitionStats bool) (*JSONTable, error) + DumpStatsToJSONBySnapshot(dbName string, tableInfo *model.TableInfo, snapshot uint64, dumpPartitionStats bool) (*statsutil.JSONTable, error) // LoadStatsFromJSON will load statistic from JSONTable, and save it to the storage. // In final, it will also udpate the stats cache. - LoadStatsFromJSON(ctx context.Context, is infoschema.InfoSchema, jsonTbl *JSONTable, concurrencyForPartition uint8) error + LoadStatsFromJSON(ctx context.Context, is infoschema.InfoSchema, jsonTbl *statsutil.JSONTable, concurrencyForPartition uint8) error // LoadStatsFromJSONNoUpdate will load statistic from JSONTable, and save it to the storage. - LoadStatsFromJSONNoUpdate(ctx context.Context, is infoschema.InfoSchema, jsonTbl *JSONTable, concurrencyForPartition uint8) error + LoadStatsFromJSONNoUpdate(ctx context.Context, is infoschema.InfoSchema, jsonTbl *statsutil.JSONTable, concurrencyForPartition uint8) error // Methods for extended stast. @@ -347,29 +347,30 @@ type StatsGlobal interface { physicalID int64, isIndex bool, histIDs []int64, - _ map[int64]*statistics.Table, ) (globalStats interface{}, err error) +} - // UpdateGlobalStats will trigger the merge of global-stats when we drop table partition - UpdateGlobalStats(tblInfo *model.TableInfo) error +// DDL is used to handle ddl events. +type DDL interface { + // HandleDDLEvent handles ddl events. + HandleDDLEvent(event *statsutil.DDLEvent) error + // DDLEventCh returns ddl events channel in handle. + DDLEventCh() chan *statsutil.DDLEvent } // StatsHandle is used to manage TiDB Statistics. type StatsHandle interface { - // GPool returns the goroutine pool. - GPool() *gp.Pool - - // SPool returns the session pool. - SPool() SessionPool + // Pool is used to get a session or a goroutine to execute stats updating. + statsutil.Pool - // Lease returns the stats lease. - Lease() time.Duration + // AutoAnalyzeProcIDGenerator is used to generate auto analyze proc ID. + statsutil.AutoAnalyzeProcIDGenerator - // SysProcTracker is used to track sys process like analyze - SysProcTracker() sessionctx.SysProcTracker + // LeaseGetter is used to get stats lease. + statsutil.LeaseGetter - // AutoAnalyzeProcID generates an analyze ID. - AutoAnalyzeProcID() uint64 + // TableInfoGetter is used to get table meta info. + statsutil.TableInfoGetter // GetTableStats retrieves the statistics table from cache, and the cache will be updated by a goroutine. GetTableStats(tblInfo *model.TableInfo) *statistics.Table @@ -377,12 +378,6 @@ type StatsHandle interface { // GetPartitionStats retrieves the partition stats from cache. GetPartitionStats(tblInfo *model.TableInfo, pid int64) *statistics.Table - // GetCurrentPruneMode returns the current latest partitioning table prune mode. - GetCurrentPruneMode() (mode string, err error) - - // TableInfoGetter is used to get table meta info. - TableInfoGetter - // StatsGC is used to do the GC job. StatsGC @@ -406,4 +401,7 @@ type StatsHandle interface { // StatsGlobal is used to manage partition table global stats. StatsGlobal + + // DDL is used to handle ddl events. + DDL } diff --git a/pkg/statistics/handle/updatetest/BUILD.bazel b/pkg/statistics/handle/updatetest/BUILD.bazel index 6b08edca6b991..339906f411962 100644 --- a/pkg/statistics/handle/updatetest/BUILD.bazel +++ b/pkg/statistics/handle/updatetest/BUILD.bazel @@ -14,6 +14,7 @@ go_test( "//pkg/parser/mysql", "//pkg/planner/cardinality", "//pkg/sessionctx", + "//pkg/sessionctx/stmtctx", "//pkg/sessionctx/variable", "//pkg/statistics", "//pkg/statistics/handle/autoanalyze", diff --git a/pkg/statistics/handle/updatetest/update_test.go b/pkg/statistics/handle/updatetest/update_test.go index 01ef3342f6aea..ff03126a57ba7 100644 --- a/pkg/statistics/handle/updatetest/update_test.go +++ b/pkg/statistics/handle/updatetest/update_test.go @@ -26,6 +26,7 @@ import ( "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/planner/cardinality" "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/autoanalyze" @@ -296,7 +297,7 @@ func TestTxnWithFailure(t *testing.T) { func TestUpdatePartition(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) testKit := testkit.NewTestKit(t, store) - pruneMode, err := dom.StatsHandle().GetCurrentPruneMode() + pruneMode, err := util.GetCurrentPruneMode(dom.StatsHandle().SPool()) require.NoError(t, err) testKit.MustQuery("select @@tidb_partition_prune_mode").Check(testkit.Rows(pruneMode)) testKit.MustExec("use test") @@ -561,6 +562,8 @@ func TestSplitRange(t *testing.T) { result: "[8,9)", }, } + sc := new(stmtctx.StatementContext) + sc.SetTimeZone(time.UTC) for _, test := range tests { ranges := make([]*ranger.Range, 0, len(test.points)/2) for i := 0; i < len(test.points); i += 2 { @@ -572,7 +575,7 @@ func TestSplitRange(t *testing.T) { Collators: collate.GetBinaryCollatorSlice(1), }) } - ranges, _ = h.SplitRange(nil, ranges, false) + ranges, _ = h.SplitRange(sc, ranges, false) var ranStrs []string for _, ran := range ranges { ranStrs = append(ranStrs, ran.String()) @@ -700,7 +703,6 @@ func TestMergeTopN(t *testing.T) { topNs := make([]*statistics.TopN, 0, topnNum) res := make(map[int]uint64) - rand.Seed(time.Now().Unix()) for i := 0; i < topnNum; i++ { topN := statistics.NewTopN(n) occur := make(map[int]bool) @@ -751,7 +753,7 @@ func TestStatsVariables(t *testing.T) { h := dom.StatsHandle() sctx := tk.Session().(sessionctx.Context) - pruneMode, err := h.GetCurrentPruneMode() + pruneMode, err := util.GetCurrentPruneMode(h.SPool()) require.NoError(t, err) require.Equal(t, string(variable.Dynamic), pruneMode) err = util.UpdateSCtxVarsForStats(sctx) @@ -768,7 +770,7 @@ func TestStatsVariables(t *testing.T) { tk.MustExec(`set global tidb_enable_analyze_snapshot=1`) tk.MustExec(`set global tidb_skip_missing_partition_stats=0`) - pruneMode, err = h.GetCurrentPruneMode() + pruneMode, err = util.GetCurrentPruneMode(h.SPool()) require.NoError(t, err) require.Equal(t, string(variable.Static), pruneMode) err = util.UpdateSCtxVarsForStats(sctx) diff --git a/pkg/statistics/handle/usage/BUILD.bazel b/pkg/statistics/handle/usage/BUILD.bazel index 10b9760d723d4..13d4fb48b0b6c 100644 --- a/pkg/statistics/handle/usage/BUILD.bazel +++ b/pkg/statistics/handle/usage/BUILD.bazel @@ -17,6 +17,7 @@ go_library( "//pkg/sessionctx/variable", "//pkg/statistics", "//pkg/statistics/handle/storage", + "//pkg/statistics/handle/types", "//pkg/statistics/handle/util", "//pkg/types", "//pkg/util", diff --git a/pkg/statistics/handle/usage/predicate_column.go b/pkg/statistics/handle/usage/predicate_column.go index cd60c53b3afef..f4b58acb2bb41 100644 --- a/pkg/statistics/handle/usage/predicate_column.go +++ b/pkg/statistics/handle/usage/predicate_column.go @@ -24,15 +24,16 @@ import ( "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/statistics" + statstypes "github.com/pingcap/tidb/pkg/statistics/handle/types" utilstats "github.com/pingcap/tidb/pkg/statistics/handle/util" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/logutil" "go.uber.org/zap" ) -// statsUsageImpl implements utilstats.StatsUsage. +// statsUsageImpl implements statstypes.StatsUsage. type statsUsageImpl struct { - statsHandle utilstats.StatsHandle + statsHandle statstypes.StatsHandle // idxUsageListHead contains all the index usage collectors required by session. idxUsageListHead *SessionIndexUsageCollector @@ -41,8 +42,8 @@ type statsUsageImpl struct { *SessionStatsList } -// NewStatsUsageImpl creates a utilstats.StatsUsage. -func NewStatsUsageImpl(statsHandle utilstats.StatsHandle) utilstats.StatsUsage { +// NewStatsUsageImpl creates a statstypes.StatsUsage. +func NewStatsUsageImpl(statsHandle statstypes.StatsHandle) statstypes.StatsUsage { return &statsUsageImpl{ statsHandle: statsHandle, idxUsageListHead: newSessionIndexUsageCollector(nil), @@ -50,7 +51,7 @@ func NewStatsUsageImpl(statsHandle utilstats.StatsHandle) utilstats.StatsUsage { } // LoadColumnStatsUsage returns all columns' usage information. -func (u *statsUsageImpl) LoadColumnStatsUsage(loc *time.Location) (colStatsMap map[model.TableItemID]utilstats.ColStatsTimeInfo, err error) { +func (u *statsUsageImpl) LoadColumnStatsUsage(loc *time.Location) (colStatsMap map[model.TableItemID]statstypes.ColStatsTimeInfo, err error) { err = utilstats.CallWithSCtx(u.statsHandle.SPool(), func(sctx sessionctx.Context) error { colStatsMap, err = LoadColumnStatsUsage(sctx, loc) return err @@ -77,7 +78,7 @@ func (u *statsUsageImpl) CollectColumnsInExtendedStats(tableID int64) (columnIDs } // LoadColumnStatsUsage loads column stats usage information from disk. -func LoadColumnStatsUsage(sctx sessionctx.Context, loc *time.Location) (map[model.TableItemID]utilstats.ColStatsTimeInfo, error) { +func LoadColumnStatsUsage(sctx sessionctx.Context, loc *time.Location) (map[model.TableItemID]statstypes.ColStatsTimeInfo, error) { disableTime, err := getDisableColumnTrackingTime(sctx) if err != nil { return nil, errors.Trace(err) @@ -87,13 +88,13 @@ func LoadColumnStatsUsage(sctx sessionctx.Context, loc *time.Location) (map[mode if err != nil { return nil, errors.Trace(err) } - colStatsMap := make(map[model.TableItemID]utilstats.ColStatsTimeInfo, len(rows)) + colStatsMap := make(map[model.TableItemID]statstypes.ColStatsTimeInfo, len(rows)) for _, row := range rows { if row.IsNull(0) || row.IsNull(1) { continue } tblColID := model.TableItemID{TableID: row.GetInt64(0), ID: row.GetInt64(1), IsIndex: false} - var statsUsage utilstats.ColStatsTimeInfo + var statsUsage statstypes.ColStatsTimeInfo if !row.IsNull(2) { gt, err := row.GetTime(2).GoTime(time.UTC) if err != nil { diff --git a/pkg/statistics/handle/util/BUILD.bazel b/pkg/statistics/handle/util/BUILD.bazel index 292161a37817c..1f10614908675 100644 --- a/pkg/statistics/handle/util/BUILD.bazel +++ b/pkg/statistics/handle/util/BUILD.bazel @@ -1,9 +1,12 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") go_library( name = "util", srcs = [ - "interfaces.go", + "auto_analyze_proc_id_generator.go", + "ddl_event.go", + "lease_getter.go", + "pool.go", "table_info.go", "util.go", ], @@ -16,12 +19,8 @@ go_library( "//pkg/parser/model", "//pkg/parser/terror", "//pkg/sessionctx", - "//pkg/sessionctx/stmtctx", "//pkg/sessionctx/variable", - "//pkg/statistics", "//pkg/table", - "//pkg/types", - "//pkg/util", "//pkg/util/chunk", "//pkg/util/intest", "//pkg/util/sqlexec", @@ -31,5 +30,18 @@ go_library( "@com_github_pingcap_tipb//go-tipb", "@com_github_tiancaiamao_gp//:gp", "@com_github_tikv_client_go_v2//oracle", + "@org_uber_go_atomic//:atomic", + ], +) + +go_test( + name = "util_test", + timeout = "short", + srcs = ["ddl_event_test.go"], + embed = [":util"], + flaky = True, + deps = [ + "//pkg/parser/model", + "@com_github_stretchr_testify//require", ], ) diff --git a/pkg/statistics/handle/util/auto_analyze_proc_id_generator.go b/pkg/statistics/handle/util/auto_analyze_proc_id_generator.go new file mode 100644 index 0000000000000..b65dca74d369a --- /dev/null +++ b/pkg/statistics/handle/util/auto_analyze_proc_id_generator.go @@ -0,0 +1,40 @@ +// Copyright 2023 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 + +// AutoAnalyzeProcIDGenerator is used to generate auto analyze proc ID. +type AutoAnalyzeProcIDGenerator interface { + // AutoAnalyzeProcID generates an analyze ID. + AutoAnalyzeProcID() uint64 +} + +var _ AutoAnalyzeProcIDGenerator = (*generator)(nil) + +type generator struct { + // autoAnalyzeProcIDGetter is used to generate auto analyze ID. + autoAnalyzeProcIDGetter func() uint64 +} + +// NewGenerator creates a new Generator. +func NewGenerator(autoAnalyzeProcIDGetter func() uint64) AutoAnalyzeProcIDGenerator { + return &generator{ + autoAnalyzeProcIDGetter: autoAnalyzeProcIDGetter, + } +} + +// AutoAnalyzeProcID implements AutoAnalyzeProcIDGenerator. +func (g *generator) AutoAnalyzeProcID() uint64 { + return g.autoAnalyzeProcIDGetter() +} diff --git a/pkg/statistics/handle/util/ddl_event.go b/pkg/statistics/handle/util/ddl_event.go new file mode 100644 index 0000000000000..36b0a39d08244 --- /dev/null +++ b/pkg/statistics/handle/util/ddl_event.go @@ -0,0 +1,302 @@ +// Copyright 2023 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 ( + "fmt" + + "github.com/pingcap/tidb/pkg/parser/model" +) + +// DDLEvent contains the information of a ddl event that is used to update stats. +type DDLEvent struct { + // For different ddl types, the following fields are used. + // They have different meanings for different ddl types. + // Please do **not** use these fields directly, use the corresponding + // NewXXXEvent functions instead. + tableInfo *model.TableInfo + partInfo *model.PartitionInfo + oldTableInfo *model.TableInfo + oldPartInfo *model.PartitionInfo + columnInfos []*model.ColumnInfo + tp model.ActionType +} + +// NewCreateTableEvent creates a new ddl event that creates a table. +func NewCreateTableEvent( + newTableInfo *model.TableInfo, +) *DDLEvent { + return &DDLEvent{ + tp: model.ActionCreateTable, + tableInfo: newTableInfo, + } +} + +// GetCreateTableInfo gets the table info of the table that is created. +func (e *DDLEvent) GetCreateTableInfo() (newTableInfo *model.TableInfo) { + return e.tableInfo +} + +// NewTruncateTableEvent creates a new ddl event that truncates a table. +func NewTruncateTableEvent( + newTableInfo *model.TableInfo, + droppedTableInfo *model.TableInfo, +) *DDLEvent { + return &DDLEvent{ + tp: model.ActionTruncateTable, + tableInfo: newTableInfo, + oldTableInfo: droppedTableInfo, + } +} + +// GetTruncateTableInfo gets the table info of the table that is truncated. +func (e *DDLEvent) GetTruncateTableInfo() (newTableInfo *model.TableInfo, droppedTableInfo *model.TableInfo) { + return e.tableInfo, e.oldTableInfo +} + +// NewDropTableEvent creates a new ddl event that drops a table. +func NewDropTableEvent( + droppedTableInfo *model.TableInfo, +) *DDLEvent { + return &DDLEvent{ + tp: model.ActionDropTable, + oldTableInfo: droppedTableInfo, + } +} + +// GetDropTableInfo gets the table info of the table that is dropped. +func (e *DDLEvent) GetDropTableInfo() (newTableInfo *model.TableInfo) { + return e.oldTableInfo +} + +// NewAddColumnEvent creates a new ddl event that +// adds a column. +func NewAddColumnEvent( + newTableInfo *model.TableInfo, + newColumnInfo []*model.ColumnInfo, +) *DDLEvent { + return &DDLEvent{ + tp: model.ActionAddColumn, + tableInfo: newTableInfo, + columnInfos: newColumnInfo, + } +} + +// GetAddColumnInfo gets the table info of the table that is added a column. +func (e *DDLEvent) GetAddColumnInfo() (newTableInfo *model.TableInfo, newColumnInfo []*model.ColumnInfo) { + return e.tableInfo, e.columnInfos +} + +// NewModifyColumnEvent creates a new ddl event that +// modifies a column. +func NewModifyColumnEvent( + newTableInfo *model.TableInfo, + modifiedColumnInfo []*model.ColumnInfo, +) *DDLEvent { + return &DDLEvent{ + tp: model.ActionModifyColumn, + tableInfo: newTableInfo, + columnInfos: modifiedColumnInfo, + } +} + +// GetModifyColumnInfo gets the table info of the table that is modified a column. +func (e *DDLEvent) GetModifyColumnInfo() (newTableInfo *model.TableInfo, modifiedColumnInfo []*model.ColumnInfo) { + return e.tableInfo, e.columnInfos +} + +// NewAddPartitionEvent creates a new ddl event that adds partitions. +func NewAddPartitionEvent( + globalTableInfo *model.TableInfo, + addedPartInfo *model.PartitionInfo, +) *DDLEvent { + return &DDLEvent{ + tp: model.ActionAddTablePartition, + tableInfo: globalTableInfo, + partInfo: addedPartInfo, + } +} + +// GetAddPartitionInfo gets the table info of the table that is added partitions. +func (e *DDLEvent) GetAddPartitionInfo() (globalTableInfo *model.TableInfo, addedPartInfo *model.PartitionInfo) { + return e.tableInfo, e.partInfo +} + +// NewDropPartitionEvent creates a new ddl event that drops partitions. +func NewDropPartitionEvent( + globalTableInfo *model.TableInfo, + droppedPartInfo *model.PartitionInfo, +) *DDLEvent { + return &DDLEvent{ + tp: model.ActionDropTablePartition, + tableInfo: globalTableInfo, + oldPartInfo: droppedPartInfo, + } +} + +// GetDropPartitionInfo gets the table info of the table that is dropped partitions. +func (e *DDLEvent) GetDropPartitionInfo() (globalTableInfo *model.TableInfo, droppedPartInfo *model.PartitionInfo) { + return e.tableInfo, e.oldPartInfo +} + +// NewExchangePartitionEvent creates a new ddl event that exchanges a partition. +func NewExchangePartitionEvent( + globalTableInfo *model.TableInfo, + exchangedPartInfo *model.PartitionInfo, + exchangedTableInfo *model.TableInfo, +) *DDLEvent { + return &DDLEvent{ + tp: model.ActionExchangeTablePartition, + tableInfo: globalTableInfo, + partInfo: exchangedPartInfo, + oldTableInfo: exchangedTableInfo, + } +} + +func (e *DDLEvent) getExchangePartitionInfo() ( + globalTableInfo *model.TableInfo, + exchangedPartInfo *model.PartitionInfo, + exchangedTableInfo *model.TableInfo, +) { + return e.tableInfo, e.partInfo, e.oldTableInfo +} + +// NewReorganizePartitionEvent creates a new ddl event that reorganizes partitions. +// We also use it for increasing or decreasing the number of hash partitions. +func NewReorganizePartitionEvent( + globalTableInfo *model.TableInfo, + addedPartInfo *model.PartitionInfo, + droppedPartInfo *model.PartitionInfo, +) *DDLEvent { + return &DDLEvent{ + tp: model.ActionReorganizePartition, + tableInfo: globalTableInfo, + partInfo: addedPartInfo, + oldPartInfo: droppedPartInfo, + } +} + +// GetReorganizePartitionInfo gets the table info of the table that is reorganized partitions. +func (e *DDLEvent) GetReorganizePartitionInfo() ( + globalTableInfo *model.TableInfo, + addedPartInfo *model.PartitionInfo, + droppedPartInfo *model.PartitionInfo, +) { + return e.tableInfo, e.partInfo, e.oldPartInfo +} + +// NewTruncatePartitionEvent creates a new ddl event that truncates partitions. +func NewTruncatePartitionEvent( + globalTableInfo *model.TableInfo, + addedPartInfo *model.PartitionInfo, + droppedPartInfo *model.PartitionInfo, +) *DDLEvent { + return &DDLEvent{ + tp: model.ActionTruncateTablePartition, + tableInfo: globalTableInfo, + partInfo: addedPartInfo, + oldPartInfo: droppedPartInfo, + } +} + +// GetTruncatePartitionInfo gets the table info of the table that is truncated partitions. +func (e *DDLEvent) GetTruncatePartitionInfo() ( + globalTableInfo *model.TableInfo, + addedPartInfo *model.PartitionInfo, + droppedPartInfo *model.PartitionInfo, +) { + return e.tableInfo, e.partInfo, e.oldPartInfo +} + +// NewAddPartitioningEvent creates a new ddl event that converts a single table to a partitioned table. +// For example, `alter table t partition by range (c1) (partition p1 values less than (10))`. +func NewAddPartitioningEvent( + newGlobalTableInfo *model.TableInfo, + addedPartInfo *model.PartitionInfo, +) *DDLEvent { + return &DDLEvent{ + tp: model.ActionAlterTablePartitioning, + tableInfo: newGlobalTableInfo, + partInfo: addedPartInfo, + } +} + +// GetAddPartitioningInfo gets the table info of the table that is converted to a partitioned table. +func (e *DDLEvent) GetAddPartitioningInfo() (newGlobalTableInfo *model.TableInfo, addedPartInfo *model.PartitionInfo) { + return e.tableInfo, e.partInfo +} + +// NewRemovePartitioningEvent creates a new ddl event that converts a partitioned table to a single table. +// For example, `alter table t remove partitioning`. +func NewRemovePartitioningEvent( + newSingleTableInfo *model.TableInfo, + droppedPartInfo *model.PartitionInfo, +) *DDLEvent { + return &DDLEvent{ + tp: model.ActionRemovePartitioning, + tableInfo: newSingleTableInfo, + oldPartInfo: droppedPartInfo, + } +} + +// GetRemovePartitioningInfo gets the table info of the table that is converted to a single table. +func (e *DDLEvent) GetRemovePartitioningInfo() ( + newSingleTableInfo *model.TableInfo, + droppedPartInfo *model.PartitionInfo, +) { + return e.tableInfo, e.oldPartInfo +} + +// NewFlashbackClusterEvent creates a new ddl event that flashes back the cluster. +func NewFlashbackClusterEvent() *DDLEvent { + return &DDLEvent{ + tp: model.ActionFlashbackCluster, + } +} + +// GetType returns the type of the ddl event. +func (e *DDLEvent) GetType() model.ActionType { + return e.tp +} + +// String implements fmt.Stringer interface. +func (e *DDLEvent) String() string { + ret := fmt.Sprintf("(Event Type: %s", e.tp) + if e.tableInfo != nil { + ret += fmt.Sprintf(", Table ID: %d, Table Name: %s", e.tableInfo.ID, e.tableInfo.Name) + } + if e.partInfo != nil { + ids := make([]int64, 0, len(e.partInfo.Definitions)) + for _, def := range e.partInfo.Definitions { + ids = append(ids, def.ID) + } + ret += fmt.Sprintf(", Partition IDs: %v", ids) + } + if e.oldTableInfo != nil { + ret += fmt.Sprintf(", Old Table ID: %d, Old Table Name: %s", e.oldTableInfo.ID, e.oldTableInfo.Name) + } + if e.oldPartInfo != nil { + ids := make([]int64, 0, len(e.oldPartInfo.Definitions)) + for _, def := range e.oldPartInfo.Definitions { + ids = append(ids, def.ID) + } + ret += fmt.Sprintf(", Old Partition IDs: %v", ids) + } + for _, columnInfo := range e.columnInfos { + ret += fmt.Sprintf(", Column ID: %d, Column Name: %s", columnInfo.ID, columnInfo.Name) + } + + return ret +} diff --git a/pkg/statistics/handle/util/ddl_event_test.go b/pkg/statistics/handle/util/ddl_event_test.go new file mode 100644 index 0000000000000..2889a47506689 --- /dev/null +++ b/pkg/statistics/handle/util/ddl_event_test.go @@ -0,0 +1,63 @@ +// Copyright 2023 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 ( + "testing" + + "github.com/pingcap/tidb/pkg/parser/model" + "github.com/stretchr/testify/require" +) + +func TestEventString(t *testing.T) { + // Create an Event object + e := &DDLEvent{ + tp: model.ActionAddColumn, + tableInfo: &model.TableInfo{ + ID: 1, + Name: model.NewCIStr("Table1"), + }, + partInfo: &model.PartitionInfo{ + Definitions: []model.PartitionDefinition{ + {ID: 2}, + {ID: 3}, + }, + }, + oldTableInfo: &model.TableInfo{ + ID: 4, + Name: model.NewCIStr("Table2"), + }, + oldPartInfo: &model.PartitionInfo{ + Definitions: []model.PartitionDefinition{ + {ID: 5}, + {ID: 6}, + }, + }, + columnInfos: []*model.ColumnInfo{ + {ID: 7, Name: model.NewCIStr("Column1")}, + {ID: 8, Name: model.NewCIStr("Column2")}, + }, + } + + // Call the String method + result := e.String() + + // Check the result + expected := "(Event Type: add column, Table ID: 1, Table Name: Table1, " + + "Partition IDs: [2 3], Old Table ID: 4, Old Table Name: Table2, " + + "Old Partition IDs: [5 6], Column ID: 7, Column Name: Column1, " + + "Column ID: 8, Column Name: Column2" + require.Equal(t, expected, result) +} diff --git a/pkg/statistics/handle/util/lease_getter.go b/pkg/statistics/handle/util/lease_getter.go new file mode 100644 index 0000000000000..8113dfcd878d6 --- /dev/null +++ b/pkg/statistics/handle/util/lease_getter.go @@ -0,0 +1,52 @@ +// Copyright 2023 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 ( + "time" + + "go.uber.org/atomic" +) + +// LeaseGetter is used to get the stats lease. +type LeaseGetter interface { + // Lease returns the stats lease. + Lease() time.Duration + // SetLease sets the stats lease. Only used for test. + SetLease(lease time.Duration) +} + +var _ LeaseGetter = (*leaseGetter)(nil) + +type leaseGetter struct { + lease *atomic.Duration +} + +// NewLeaseGetter creates a new LeaseGetter. +func NewLeaseGetter(lease time.Duration) LeaseGetter { + return &leaseGetter{ + lease: atomic.NewDuration(lease), + } +} + +// Lease implements LeaseGetter. +func (g *leaseGetter) Lease() time.Duration { + return g.lease.Load() +} + +// SetLease sets the stats lease. Only used for test. +func (g *leaseGetter) SetLease(lease time.Duration) { + g.lease.Store(lease) +} diff --git a/pkg/statistics/handle/util/pool.go b/pkg/statistics/handle/util/pool.go new file mode 100644 index 0000000000000..6f6a3633459c9 --- /dev/null +++ b/pkg/statistics/handle/util/pool.go @@ -0,0 +1,72 @@ +// Copyright 2023 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 ( + "math" + "time" + + "github.com/ngaut/pools" + "github.com/tiancaiamao/gp" +) + +// SessionPool is used to recycle sessionctx. +type SessionPool interface { + Get() (pools.Resource, error) + Put(pools.Resource) +} + +// Pool is used to reuse goroutine and session. +type Pool interface { + // GPool returns the goroutine pool. + GPool() *gp.Pool + + // SPool returns the session pool. + SPool() SessionPool + + // Close closes the goroutine pool. + Close() +} + +var _ Pool = (*pool)(nil) + +type pool struct { + // This gpool is used to reuse goroutine in the mergeGlobalStatsTopN. + gpool *gp.Pool + pool SessionPool +} + +// NewPool creates a new Pool. +func NewPool(p SessionPool) Pool { + return &pool{ + gpool: gp.New(math.MaxInt16, time.Minute), + pool: p, + } +} + +// GPool returns the goroutine pool. +func (p *pool) GPool() *gp.Pool { + return p.gpool +} + +// SPool returns the session pool. +func (p *pool) SPool() SessionPool { + return p.pool +} + +// Close close the goroutine pool. +func (p *pool) Close() { + p.gpool.Close() +} diff --git a/pkg/statistics/handle/util/util.go b/pkg/statistics/handle/util/util.go index 50add779777d0..930173255ee50 100644 --- a/pkg/statistics/handle/util/util.go +++ b/pkg/statistics/handle/util/util.go @@ -19,7 +19,6 @@ import ( "strconv" "time" - "github.com/ngaut/pools" "github.com/pingcap/errors" "github.com/pingcap/tidb/pkg/infoschema" "github.com/pingcap/tidb/pkg/kv" @@ -60,12 +59,6 @@ var ( StatsCtx = kv.WithInternalSourceType(context.Background(), kv.InternalTxnStats) ) -// SessionPool is used to recycle sessionctx. -type SessionPool interface { - Get() (pools.Resource, error) - Put(pools.Resource) -} - // finishTransaction will execute `commit` when error is nil, otherwise `rollback`. func finishTransaction(sctx sessionctx.Context, err error) error { if err == nil { @@ -171,6 +164,15 @@ func UpdateSCtxVarsForStats(sctx sessionctx.Context) error { return nil } +// GetCurrentPruneMode returns the current latest partitioning table prune mode. +func GetCurrentPruneMode(pool SessionPool) (mode string, err error) { + err = CallWithSCtx(pool, func(sctx sessionctx.Context) error { + mode = sctx.GetSessionVars().PartitionPruneMode.Load() + return nil + }) + return +} + // WrapTxn uses a transaction here can let different SQLs in this operation have the same data visibility. func WrapTxn(sctx sessionctx.Context, f func(sctx sessionctx.Context) error) (err error) { // TODO: check whether this sctx is already in a txn diff --git a/pkg/statistics/histogram.go b/pkg/statistics/histogram.go index a94f1512720ab..77f0bed10fe87 100644 --- a/pkg/statistics/histogram.go +++ b/pkg/statistics/histogram.go @@ -34,6 +34,7 @@ import ( "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/sessionctx/variable" + statslogutil "github.com/pingcap/tidb/pkg/statistics/handle/logutil" "github.com/pingcap/tidb/pkg/tablecodec" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/chunk" @@ -42,6 +43,7 @@ import ( "github.com/pingcap/tidb/pkg/util/ranger" "github.com/pingcap/tipb/go-tipb" "github.com/twmb/murmur3" + "go.uber.org/zap" ) // Histogram represents statistics for a column or index. @@ -648,11 +650,13 @@ func validRange(sc *stmtctx.StatementContext, ran *ranger.Range, encoded bool) b low, high = ran.LowVal[0].GetBytes(), ran.HighVal[0].GetBytes() } else { var err error - low, err = codec.EncodeKey(sc, nil, ran.LowVal[0]) + low, err = codec.EncodeKey(sc.TimeZone(), nil, ran.LowVal[0]) + err = sc.HandleError(err) if err != nil { return false } - high, err = codec.EncodeKey(sc, nil, ran.HighVal[0]) + high, err = codec.EncodeKey(sc.TimeZone(), nil, ran.HighVal[0]) + err = sc.HandleError(err) if err != nil { return false } @@ -1184,6 +1188,7 @@ func newbucket4MergingForRecycle() *bucket4Merging { } func releasebucket4MergingForRecycle(b *bucket4Merging) { + b.disjointNDV = 0 bucket4MergingPool.Put(b) } @@ -1262,7 +1267,9 @@ func mergeBucketNDV(sc *stmtctx.StatementContext, left *bucket4Merging, right *b // _______left____| // illegal order. if upperCompare < 0 { - return nil, errors.Errorf("illegal bucket order") + err := errors.Errorf("illegal bucket order") + statslogutil.StatsLogger.Warn("fail to mergeBucketNDV", zap.Error(err)) + return nil, err } // ___right_| // ___left__| @@ -1276,7 +1283,9 @@ func mergeBucketNDV(sc *stmtctx.StatementContext, left *bucket4Merging, right *b // |__left____| // illegal order. if lowerCompare < 0 { - return nil, errors.Errorf("illegal bucket order") + err := errors.Errorf("illegal bucket order") + statslogutil.StatsLogger.Warn("fail to mergeBucketNDV", zap.Error(err)) + return nil, err } // |___right___| // |____left___| diff --git a/pkg/statistics/histogram_bench_test.go b/pkg/statistics/histogram_bench_test.go index 7729b51d25aa3..8e4cd51f445d8 100644 --- a/pkg/statistics/histogram_bench_test.go +++ b/pkg/statistics/histogram_bench_test.go @@ -18,6 +18,7 @@ import ( "fmt" "math/rand" "testing" + "time" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/types" @@ -60,9 +61,9 @@ func genBucket4TestData(length int) []*bucket4Test { func genHist4Bench(t *testing.B, buckets []*bucket4Test, totColSize int64) *Histogram { h := NewHistogram(0, 0, 0, 0, types.NewFieldType(mysql.TypeBlob), len(buckets), totColSize) for _, bucket := range buckets { - lower, err := codec.EncodeKey(nil, nil, types.NewIntDatum(bucket.lower)) + lower, err := codec.EncodeKey(time.UTC, nil, types.NewIntDatum(bucket.lower)) require.NoError(t, err) - upper, err := codec.EncodeKey(nil, nil, types.NewIntDatum(bucket.upper)) + upper, err := codec.EncodeKey(time.UTC, nil, types.NewIntDatum(bucket.upper)) require.NoError(t, err) di, du := types.NewBytesDatum(lower), types.NewBytesDatum(upper) h.AppendBucketWithNDV(&di, &du, bucket.count, bucket.repeat, bucket.ndv) @@ -81,7 +82,7 @@ func benchmarkMergePartitionHist2GlobalHist(b *testing.B, partition int) { } poped := make([]TopNMeta, 0, popedTopNLen) for n := 0; n < popedTopNLen; n++ { - b, _ := codec.EncodeKey(sc, nil, types.NewIntDatum(rand.Int63n(10000))) + b, _ := codec.EncodeKey(sc.TimeZone(), nil, types.NewIntDatum(rand.Int63n(10000))) tmp := TopNMeta{ Encoded: b, Count: uint64(rand.Int63n(10000)), diff --git a/pkg/statistics/histogram_test.go b/pkg/statistics/histogram_test.go index 2bcd9d93bb105..73dcac6ac5ff7 100644 --- a/pkg/statistics/histogram_test.go +++ b/pkg/statistics/histogram_test.go @@ -17,6 +17,7 @@ package statistics import ( "fmt" "testing" + "time" "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" @@ -37,7 +38,7 @@ func TestTruncateHistogram(t *testing.T) { } func TestValueToString4InvalidKey(t *testing.T) { - bytes, err := codec.EncodeKey(nil, nil, types.NewDatum(1), types.NewDatum(0.5)) + bytes, err := codec.EncodeKey(time.UTC, nil, types.NewDatum(1), types.NewDatum(0.5)) require.NoError(t, err) // Append invalid flag. bytes = append(bytes, 20) @@ -63,9 +64,9 @@ type topN4Test struct { func genHist4Test(t *testing.T, buckets []*bucket4Test, totColSize int64) *Histogram { h := NewHistogram(0, 0, 0, 0, types.NewFieldType(mysql.TypeBlob), len(buckets), totColSize) for _, bucket := range buckets { - lower, err := codec.EncodeKey(nil, nil, types.NewIntDatum(bucket.lower)) + lower, err := codec.EncodeKey(time.UTC, nil, types.NewIntDatum(bucket.lower)) require.NoError(t, err) - upper, err := codec.EncodeKey(nil, nil, types.NewIntDatum(bucket.upper)) + upper, err := codec.EncodeKey(time.UTC, nil, types.NewIntDatum(bucket.upper)) require.NoError(t, err) di, du := types.NewBytesDatum(lower), types.NewBytesDatum(upper) h.AppendBucketWithNDV(&di, &du, bucket.count, bucket.repeat, bucket.ndv) @@ -288,7 +289,7 @@ func TestMergePartitionLevelHist(t *testing.T) { sc := ctx.GetSessionVars().StmtCtx poped := make([]TopNMeta, 0, len(tt.popedTopN)) for _, top := range tt.popedTopN { - b, err := codec.EncodeKey(sc, nil, types.NewIntDatum(top.data)) + b, err := codec.EncodeKey(sc.TimeZone(), nil, types.NewIntDatum(top.data)) require.NoError(t, err) tmp := TopNMeta{ Encoded: b, @@ -375,9 +376,9 @@ func TestIndexQueryBytes(t *testing.T) { sc := ctx.GetSessionVars().StmtCtx idx := &Index{Info: &model.IndexInfo{Columns: []*model.IndexColumn{{Name: model.NewCIStr("a"), Offset: 0}}}} idx.Histogram = *NewHistogram(0, 15, 0, 0, types.NewFieldType(mysql.TypeBlob), 0, 0) - low, err1 := codec.EncodeKey(sc, nil, types.NewBytesDatum([]byte("0"))) + low, err1 := codec.EncodeKey(sc.TimeZone(), nil, types.NewBytesDatum([]byte("0"))) require.NoError(t, err1) - high, err2 := codec.EncodeKey(sc, nil, types.NewBytesDatum([]byte("3"))) + high, err2 := codec.EncodeKey(sc.TimeZone(), nil, types.NewBytesDatum([]byte("3"))) require.NoError(t, err2) idx.Bounds.AppendBytes(0, low) idx.Bounds.AppendBytes(0, high) @@ -464,19 +465,19 @@ func TestStandardizeForV2AnalyzeIndex(t *testing.T) { // 2. prepare the actual Histogram input ctx := mock.NewContext() sc := ctx.GetSessionVars().StmtCtx - val0, err := codec.EncodeKey(sc, nil, types.NewIntDatum(111)) + val0, err := codec.EncodeKey(sc.TimeZone(), nil, types.NewIntDatum(111)) require.NoError(t, err) - val1, err := codec.EncodeKey(sc, nil, types.NewIntDatum(123)) + val1, err := codec.EncodeKey(sc.TimeZone(), nil, types.NewIntDatum(123)) require.NoError(t, err) - val2, err := codec.EncodeKey(sc, nil, types.NewIntDatum(34567)) + val2, err := codec.EncodeKey(sc.TimeZone(), nil, types.NewIntDatum(34567)) require.NoError(t, err) - val3, err := codec.EncodeKey(sc, nil, types.NewIntDatum(5)) + val3, err := codec.EncodeKey(sc.TimeZone(), nil, types.NewIntDatum(5)) require.NoError(t, err) - val4, err := codec.EncodeKey(sc, nil, types.NewIntDatum(876)) + val4, err := codec.EncodeKey(sc.TimeZone(), nil, types.NewIntDatum(876)) require.NoError(t, err) - val5, err := codec.EncodeKey(sc, nil, types.NewIntDatum(990)) + val5, err := codec.EncodeKey(sc.TimeZone(), nil, types.NewIntDatum(990)) require.NoError(t, err) - val6, err := codec.EncodeKey(sc, nil, types.NewIntDatum(95)) + val6, err := codec.EncodeKey(sc.TimeZone(), nil, types.NewIntDatum(95)) require.NoError(t, err) val0Bytes := types.NewBytesDatum(val0) val1Bytes := types.NewBytesDatum(val1) @@ -556,7 +557,7 @@ func TestVerifyHistsBinarySearchRemoveValAndRemoveVals(t *testing.T) { require.Equal(t, data1, data2) ctx := mock.NewContext() sc := ctx.GetSessionVars().StmtCtx - b, err := codec.EncodeKey(sc, nil, types.NewIntDatum(150)) + b, err := codec.EncodeKey(sc.TimeZone(), nil, types.NewIntDatum(150)) require.NoError(t, err) tmp := TopNMeta{ Encoded: b, diff --git a/pkg/statistics/main_test.go b/pkg/statistics/main_test.go index 0a460ffa6139c..6e50369e37b56 100644 --- a/pkg/statistics/main_test.go +++ b/pkg/statistics/main_test.go @@ -105,10 +105,9 @@ func createTestStatisticsSamples(t *testing.T) *testStatisticsSamples { } sc := stmtctx.NewStmtCtx() - var err error - s.samples, err = SortSampleItems(sc, samples) + err := sortSampleItems(sc, samples) require.NoError(t, err) - + s.samples = samples rc := &recordSet{ data: make([]types.Datum, s.count), count: s.count, diff --git a/pkg/statistics/row_sampler.go b/pkg/statistics/row_sampler.go index 3c26c366ad2b7..97e9235e74412 100644 --- a/pkg/statistics/row_sampler.go +++ b/pkg/statistics/row_sampler.go @@ -195,7 +195,8 @@ func (s *RowSampleBuilder) Collect() (RowSampleCollector, error) { return nil, err } decodedVal.SetBytesAsString(s.Collators[i].Key(decodedVal.GetString()), decodedVal.Collation(), uint32(decodedVal.Length())) - encodedKey, err := tablecodec.EncodeValue(s.Sc, nil, decodedVal) + encodedKey, err := tablecodec.EncodeValue(s.Sc.TimeZone(), nil, decodedVal) + err = s.Sc.HandleError(err) if err != nil { return nil, err } diff --git a/pkg/statistics/sample.go b/pkg/statistics/sample.go index 54dc0a4892d13..77d444e2163af 100644 --- a/pkg/statistics/sample.go +++ b/pkg/statistics/sample.go @@ -61,12 +61,9 @@ func CopySampleItems(items []*SampleItem) []*SampleItem { return n } -// SortSampleItems shallow copies and sorts a slice of SampleItem. -func SortSampleItems(sc *stmtctx.StatementContext, items []*SampleItem) ([]*SampleItem, error) { - sortedItems := make([]*SampleItem, len(items)) - copy(sortedItems, items) +func sortSampleItems(sc *stmtctx.StatementContext, items []*SampleItem) error { var err error - slices.SortStableFunc(sortedItems, func(i, j *SampleItem) int { + slices.SortStableFunc(items, func(i, j *SampleItem) int { var cmp int cmp, err = i.Value.Compare(sc.TypeCtx(), &j.Value, collate.GetBinaryCollator()) if err != nil { @@ -74,7 +71,7 @@ func SortSampleItems(sc *stmtctx.StatementContext, items []*SampleItem) ([]*Samp } return cmp }) - return sortedItems, err + return err } // SampleCollector will collect Samples and calculate the count and ndv of an attribute. @@ -259,7 +256,8 @@ func (s SampleBuilder) CollectColumnStats() ([]*SampleCollector, *SortedBuilder, return nil, nil, err } decodedVal.SetBytesAsString(s.Collators[i].Key(decodedVal.GetString()), decodedVal.Collation(), uint32(decodedVal.Length())) - encodedKey, err := tablecodec.EncodeValue(s.Sc, nil, decodedVal) + encodedKey, err := tablecodec.EncodeValue(s.Sc.TimeZone(), nil, decodedVal) + err = s.Sc.HandleError(err) if err != nil { return nil, nil, err } @@ -306,7 +304,8 @@ func (c *SampleCollector) ExtractTopN(numTop uint32, sc *stmtctx.StatementContex if err != nil { return err } - data, err := tablecodec.EncodeValue(sc, nil, d) + data, err := tablecodec.EncodeValue(sc.TimeZone(), nil, d) + err = sc.HandleError(err) if err != nil { return err } diff --git a/pkg/statistics/sample_test.go b/pkg/statistics/sample_test.go index ea7bc8f47eb12..5153b3fa89fe2 100644 --- a/pkg/statistics/sample_test.go +++ b/pkg/statistics/sample_test.go @@ -180,7 +180,7 @@ func TestBuildStatsOnRowSample(t *testing.T) { TotalSize: int64(len(data)) * 8, } tp := types.NewFieldType(mysql.TypeLonglong) - hist, topN, err := BuildHistAndTopN(ctx, 5, 4, 1, collector, tp, true, nil) + hist, topN, err := BuildHistAndTopN(ctx, 5, 4, 1, collector, tp, true, nil, false) require.Nilf(t, err, "%+v", err) topNStr, err := topN.DecodedString(ctx, []byte{tp.GetType()}) require.NoError(t, err) diff --git a/pkg/statistics/statistics_test.go b/pkg/statistics/statistics_test.go index b4eb55efa9afc..7655bf38131a6 100644 --- a/pkg/statistics/statistics_test.go +++ b/pkg/statistics/statistics_test.go @@ -456,7 +456,7 @@ func SubTestIndexRanges() func(*testing.T) { func encodeKey(key types.Datum) types.Datum { sc := stmtctx.NewStmtCtxWithTimeZone(time.Local) - buf, _ := codec.EncodeKey(sc, nil, key) + buf, _ := codec.EncodeKey(sc.TimeZone(), nil, key) return types.NewBytesDatum(buf) } @@ -482,7 +482,7 @@ func buildIndex(sctx sessionctx.Context, numBuckets, id int64, records sqlexec.R } for row := it.Begin(); row != it.End(); row = it.Next() { datums := RowToDatums(row, records.Fields()) - buf, err := codec.EncodeKey(sctx.GetSessionVars().StmtCtx, nil, datums...) + buf, err := codec.EncodeKey(sctx.GetSessionVars().StmtCtx.TimeZone(), nil, datums...) if err != nil { return 0, nil, nil, errors.Trace(err) } @@ -537,7 +537,7 @@ func SubTestBuild() func(*testing.T) { count = col.LessRowCount(nil, types.NewIntDatum(1)) require.Equal(t, 5, int(count)) - colv2, topnv2, err := BuildHistAndTopN(ctx, int(bucketCount), topNCount, 2, collector, types.NewFieldType(mysql.TypeLonglong), true, nil) + colv2, topnv2, err := BuildHistAndTopN(ctx, int(bucketCount), topNCount, 2, collector, types.NewFieldType(mysql.TypeLonglong), true, nil, false) require.NoError(t, err) require.NotNil(t, topnv2.TopN) // The most common one's occurrence is 9990, the second most common one's occurrence is 30. diff --git a/pkg/store/copr/batch_coprocessor.go b/pkg/store/copr/batch_coprocessor.go index 0f30348d310a5..739a3c3abd996 100644 --- a/pkg/store/copr/batch_coprocessor.go +++ b/pkg/store/copr/batch_coprocessor.go @@ -1262,12 +1262,14 @@ func (b *batchCopIterator) handleTaskOnce(ctx context.Context, bo *backoff.Backo } copReq := coprocessor.BatchRequest{ - Tp: b.req.Tp, - StartTs: b.req.StartTs, - Data: b.req.Data, - SchemaVer: b.req.SchemaVar, - Regions: regionInfos, - TableRegions: task.PartitionTableRegions, + Tp: b.req.Tp, + StartTs: b.req.StartTs, + Data: b.req.Data, + SchemaVer: b.req.SchemaVar, + Regions: regionInfos, + TableRegions: task.PartitionTableRegions, + ConnectionId: b.req.ConnID, + ConnectionAlias: b.req.ConnAlias, } rgName := b.req.ResourceGroupName diff --git a/pkg/store/copr/coprocessor.go b/pkg/store/copr/coprocessor.go index f0764f57b72a4..233827f762db4 100644 --- a/pkg/store/copr/coprocessor.go +++ b/pkg/store/copr/coprocessor.go @@ -1158,13 +1158,15 @@ func (worker *copIteratorWorker) handleTaskOnce(bo *Backoffer, task *copTask, ch } copReq := coprocessor.Request{ - Tp: worker.req.Tp, - StartTs: worker.req.StartTs, - Data: worker.req.Data, - Ranges: task.ranges.ToPBRanges(), - SchemaVer: worker.req.SchemaVar, - PagingSize: task.pagingSize, - Tasks: task.ToPBBatchTasks(), + Tp: worker.req.Tp, + StartTs: worker.req.StartTs, + Data: worker.req.Data, + Ranges: task.ranges.ToPBRanges(), + SchemaVer: worker.req.SchemaVar, + PagingSize: task.pagingSize, + Tasks: task.ToPBBatchTasks(), + ConnectionId: worker.req.ConnID, + ConnectionAlias: worker.req.ConnAlias, } cacheKey, cacheValue := worker.buildCacheKey(task, &copReq) diff --git a/pkg/store/copr/mpp.go b/pkg/store/copr/mpp.go index 8998a570f67d6..f66b3bff4e58c 100644 --- a/pkg/store/copr/mpp.go +++ b/pkg/store/copr/mpp.go @@ -108,6 +108,8 @@ func (c *MPPClient) DispatchMPPTask(param kv.DispatchMPPTaskParam) (resp *mpp.Di ReportExecutionSummary: req.ReportExecutionSummary, MppVersion: req.MppVersion.ToInt64(), ResourceGroupName: req.ResourceGroupName, + ConnectionId: req.ConnectionID, + ConnectionAlias: req.ConnectionAlias, } mppReq := &mpp.DispatchTaskRequest{ diff --git a/pkg/store/driver/BUILD.bazel b/pkg/store/driver/BUILD.bazel index cf59533038170..52d540fd3274b 100644 --- a/pkg/store/driver/BUILD.bazel +++ b/pkg/store/driver/BUILD.bazel @@ -8,6 +8,7 @@ go_library( deps = [ "//pkg/executor/importer", "//pkg/kv", + "//pkg/metrics", "//pkg/sessionctx/variable", "//pkg/store/copr", "//pkg/store/driver/error", @@ -23,6 +24,7 @@ go_library( "@com_github_tikv_client_go_v2//tikvrpc", "@com_github_tikv_client_go_v2//util", "@com_github_tikv_pd_client//:client", + "@com_github_tikv_pd_client//http", "@org_golang_google_grpc//:grpc", "@org_golang_google_grpc//keepalive", "@org_uber_go_zap//:zap", diff --git a/pkg/store/driver/tikv_driver.go b/pkg/store/driver/tikv_driver.go index f73d910195137..199661d56f95d 100644 --- a/pkg/store/driver/tikv_driver.go +++ b/pkg/store/driver/tikv_driver.go @@ -18,7 +18,6 @@ import ( "context" "crypto/tls" "fmt" - "math/rand" "net/url" "strings" "sync" @@ -29,6 +28,7 @@ import ( "github.com/pingcap/kvproto/pkg/kvrpcpb" "github.com/pingcap/tidb/pkg/executor/importer" "github.com/pingcap/tidb/pkg/kv" + "github.com/pingcap/tidb/pkg/metrics" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/store/copr" derr "github.com/pingcap/tidb/pkg/store/driver/error" @@ -41,6 +41,7 @@ import ( "github.com/tikv/client-go/v2/tikvrpc" "github.com/tikv/client-go/v2/util" pd "github.com/tikv/pd/client" + pdhttp "github.com/tikv/pd/client/http" "go.uber.org/zap" "google.golang.org/grpc" "google.golang.org/grpc/keepalive" @@ -55,7 +56,6 @@ var mc storeCache func init() { mc.cache = make(map[string]*tikvStore) - rand.Seed(time.Now().UnixNano()) // Setup the Hooks to dynamic control global resource controller. variable.EnableGlobalResourceControlFunc = tikv.EnableResourceControl @@ -214,7 +214,8 @@ func (d TiKVDriver) OpenWithOptions(path string, options ...Option) (resStore kv tikv.WithCodec(codec), ) - s, err = tikv.NewKVStore(uuid, pdClient, spkv, &injectTraceClient{Client: rpcClient}, tikv.WithPDHTTPClient(tlsConfig, etcdAddrs)) + s, err = tikv.NewKVStore(uuid, pdClient, spkv, &injectTraceClient{Client: rpcClient}, + tikv.WithPDHTTPClient(etcdAddrs, pdhttp.WithTLSConfig(tlsConfig), pdhttp.WithMetrics(metrics.PDAPIRequestCounter, metrics.PDAPIExecutionHistogram))) if err != nil { return nil, errors.Trace(err) } diff --git a/pkg/store/gcworker/BUILD.bazel b/pkg/store/gcworker/BUILD.bazel index 5745182657b9f..25f5b2d2e7134 100644 --- a/pkg/store/gcworker/BUILD.bazel +++ b/pkg/store/gcworker/BUILD.bazel @@ -17,6 +17,7 @@ go_library( "//pkg/parser/terror", "//pkg/privilege", "//pkg/session", + "//pkg/session/types", "//pkg/sessionctx/variable", "//pkg/tablecodec", "//pkg/util/codec", diff --git a/pkg/store/gcworker/gc_worker.go b/pkg/store/gcworker/gc_worker.go index caedf9e9ec33e..97ccd85bb1a92 100644 --- a/pkg/store/gcworker/gc_worker.go +++ b/pkg/store/gcworker/gc_worker.go @@ -45,6 +45,7 @@ import ( "github.com/pingcap/tidb/pkg/parser/terror" "github.com/pingcap/tidb/pkg/privilege" "github.com/pingcap/tidb/pkg/session" + sessiontypes "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/tablecodec" "github.com/pingcap/tidb/pkg/util/codec" @@ -232,7 +233,7 @@ func (w *GCWorker) start(ctx context.Context, wg *sync.WaitGroup) { } } -func createSession(store kv.Storage) session.Session { +func createSession(store kv.Storage) sessiontypes.Session { for { se, err := session.CreateSession(store) if err != nil { @@ -1874,7 +1875,7 @@ func (w *GCWorker) saveValueToSysTable(key, value string) error { // GC placement rules when the partitions are removed by the GC worker. // Placement rules cannot be removed immediately after drop table / truncate table, // because the tables can be flashed back or recovered. -func (w *GCWorker) doGCPlacementRules(se session.Session, safePoint uint64, dr util.DelRangeTask, gcPlacementRuleCache map[int64]interface{}) (err error) { +func (w *GCWorker) doGCPlacementRules(se sessiontypes.Session, safePoint uint64, dr util.DelRangeTask, gcPlacementRuleCache map[int64]interface{}) (err error) { // Get the job from the job history var historyJob *model.Job failpoint.Inject("mockHistoryJobForGC", func(v failpoint.Value) { @@ -2017,7 +2018,7 @@ func getGCRules(ids []int64, rules map[string]*label.Rule) []string { var gcRules []string for _, rule := range rules { find := false - for _, d := range rule.Data { + for _, d := range rule.Data.([]interface{}) { if r, ok := d.(map[string]interface{}); ok { nowRange := fmt.Sprintf("%s%s", r["start_key"], r["end_key"]) if _, ok := oldRange[nowRange]; ok { diff --git a/pkg/store/helper/BUILD.bazel b/pkg/store/helper/BUILD.bazel index 2758031eda44d..30acad79fb205 100644 --- a/pkg/store/helper/BUILD.bazel +++ b/pkg/store/helper/BUILD.bazel @@ -6,16 +6,13 @@ go_library( importpath = "github.com/pingcap/tidb/pkg/store/helper", visibility = ["//visibility:public"], deps = [ - "//pkg/ddl/placement", "//pkg/kv", - "//pkg/metrics", "//pkg/parser/model", "//pkg/store/driver/error", "//pkg/tablecodec", "//pkg/util", "//pkg/util/codec", "//pkg/util/logutil", - "//pkg/util/pdapi", "@com_github_pingcap_errors//:errors", "@com_github_pingcap_kvproto//pkg/deadlock", "@com_github_pingcap_kvproto//pkg/kvrpcpb", @@ -23,6 +20,7 @@ go_library( "@com_github_tikv_client_go_v2//tikv", "@com_github_tikv_client_go_v2//tikvrpc", "@com_github_tikv_client_go_v2//txnkv/txnlock", + "@com_github_tikv_pd_client//http", "@org_uber_go_zap//:zap", ], ) @@ -42,11 +40,12 @@ go_test( "//pkg/store/mockstore", "//pkg/tablecodec", "//pkg/testkit/testsetup", - "//pkg/util/pdapi", "@com_github_gorilla_mux//:mux", "@com_github_pingcap_log//:log", "@com_github_stretchr_testify//require", "@com_github_tikv_client_go_v2//testutils", + "@com_github_tikv_client_go_v2//tikv", + "@com_github_tikv_pd_client//http", "@io_opencensus_go//stats/view", "@org_uber_go_goleak//:goleak", "@org_uber_go_zap//:zap", diff --git a/pkg/store/helper/helper.go b/pkg/store/helper/helper.go index 71f860257b129..824d93159e5f9 100644 --- a/pkg/store/helper/helper.go +++ b/pkg/store/helper/helper.go @@ -20,12 +20,8 @@ import ( "cmp" "context" "encoding/hex" - "encoding/json" "fmt" - "io" "math" - "net/http" - "net/url" "slices" "strconv" "strings" @@ -34,20 +30,18 @@ import ( "github.com/pingcap/errors" deadlockpb "github.com/pingcap/kvproto/pkg/deadlock" "github.com/pingcap/kvproto/pkg/kvrpcpb" - "github.com/pingcap/tidb/pkg/ddl/placement" "github.com/pingcap/tidb/pkg/kv" - "github.com/pingcap/tidb/pkg/metrics" "github.com/pingcap/tidb/pkg/parser/model" derr "github.com/pingcap/tidb/pkg/store/driver/error" "github.com/pingcap/tidb/pkg/tablecodec" "github.com/pingcap/tidb/pkg/util" "github.com/pingcap/tidb/pkg/util/codec" "github.com/pingcap/tidb/pkg/util/logutil" - "github.com/pingcap/tidb/pkg/util/pdapi" "github.com/tikv/client-go/v2/oracle" "github.com/tikv/client-go/v2/tikv" "github.com/tikv/client-go/v2/tikvrpc" "github.com/tikv/client-go/v2/txnkv/txnlock" + pd "github.com/tikv/pd/client/http" "go.uber.org/zap" ) @@ -80,6 +74,7 @@ type Storage interface { GetMinSafeTS(txnScope string) uint64 GetLockWaits() ([]*deadlockpb.WaitForEntry, error) GetCodec() tikv.Codec + GetPDHTTPClient() pd.Client } // Helper is a middleware to get some information from tikv/pd. It can be used for TiDB's http api or mem table. @@ -96,6 +91,15 @@ func NewHelper(store Storage) *Helper { } } +// TryGetPDHTTPClient tries to get a PD HTTP client if it's available. +func (h *Helper) TryGetPDHTTPClient() (pd.Client, error) { + cli := h.Store.GetPDHTTPClient() + if cli == nil { + return nil, errors.New("pd http client unavailable") + } + return cli, nil +} + // MaxBackoffTimeoutForMvccGet is a derived value from previous implementation possible experiencing value 5000ms. const MaxBackoffTimeoutForMvccGet = 5000 @@ -276,27 +280,6 @@ func (h *Helper) GetMvccByStartTs(startTS uint64, startKey, endKey kv.Key) (*Mvc } } -// StoreHotRegionInfos records all hog region stores. -// it's the response of PD. -type StoreHotRegionInfos struct { - AsPeer map[uint64]*HotRegionsStat `json:"as_peer"` - AsLeader map[uint64]*HotRegionsStat `json:"as_leader"` -} - -// HotRegionsStat records echo store's hot region. -// it's the response of PD. -type HotRegionsStat struct { - RegionsStat []RegionStat `json:"statistics"` -} - -// RegionStat records each hot region's statistics -// it's the response of PD. -type RegionStat struct { - RegionID uint64 `json:"region_id"` - FlowBytes float64 `json:"flow_bytes"` - HotDegree int `json:"hot_degree"` -} - // RegionMetric presents the final metric output entry. type RegionMetric struct { FlowBytes uint64 `json:"flow_bytes"` @@ -304,9 +287,15 @@ type RegionMetric struct { Count int `json:"region_count"` } +// Constants that used to distinguish the hot region info request. +const ( + HotRead = "read" + HotWrite = "write" +) + // ScrapeHotInfo gets the needed hot region information by the url given. -func (h *Helper) ScrapeHotInfo(rw string, allSchemas []*model.DBInfo) ([]HotTableIndex, error) { - regionMetrics, err := h.FetchHotRegion(rw) +func (h *Helper) ScrapeHotInfo(ctx context.Context, rw string, allSchemas []*model.DBInfo) ([]HotTableIndex, error) { + regionMetrics, err := h.FetchHotRegion(ctx, rw) if err != nil { return nil, err } @@ -314,19 +303,29 @@ func (h *Helper) ScrapeHotInfo(rw string, allSchemas []*model.DBInfo) ([]HotTabl } // FetchHotRegion fetches the hot region information from PD's http api. -func (h *Helper) FetchHotRegion(rw string) (map[uint64]RegionMetric, error) { - var regionResp StoreHotRegionInfos - if err := h.requestPD("FetchHotRegion", "GET", rw, nil, ®ionResp); err != nil { +func (h *Helper) FetchHotRegion(ctx context.Context, rw string) (map[uint64]RegionMetric, error) { + pdCli, err := h.TryGetPDHTTPClient() + if err != nil { + return nil, err + } + var regionResp *pd.StoreHotPeersInfos + switch rw { + case HotRead: + regionResp, err = pdCli.GetHotReadRegions(ctx) + case HotWrite: + regionResp, err = pdCli.GetHotWriteRegions(ctx) + } + if err != nil { return nil, err } metricCnt := 0 for _, hotRegions := range regionResp.AsLeader { - metricCnt += len(hotRegions.RegionsStat) + metricCnt += len(hotRegions.Stats) } metric := make(map[uint64]RegionMetric, metricCnt) for _, hotRegions := range regionResp.AsLeader { - for _, region := range hotRegions.RegionsStat { - metric[region.RegionID] = RegionMetric{FlowBytes: uint64(region.FlowBytes), MaxHotDegree: region.HotDegree} + for _, region := range hotRegions.Stats { + metric[region.RegionID] = RegionMetric{FlowBytes: uint64(region.ByteRate), MaxHotDegree: region.HotDegree} } } return metric, nil @@ -593,81 +592,6 @@ func (r *RegionFrameRange) GetIndexFrame(tableID, indexID int64, dbName, tableNa return nil } -// RegionPeer stores information of one peer. -type RegionPeer struct { - ID int64 `json:"id"` - StoreID int64 `json:"store_id"` - IsLearner bool `json:"is_learner"` -} - -// RegionEpoch stores the information about its epoch. -type RegionEpoch struct { - ConfVer int64 `json:"conf_ver"` - Version int64 `json:"version"` -} - -// RegionPeerStat stores one field `DownSec` which indicates how long it's down than `RegionPeer`. -type RegionPeerStat struct { - Peer RegionPeer `json:"peer"` - DownSec int64 `json:"down_seconds"` -} - -// RegionInfo stores the information of one region. -type RegionInfo struct { - ID int64 `json:"id"` - StartKey string `json:"start_key"` - EndKey string `json:"end_key"` - Epoch RegionEpoch `json:"epoch"` - Peers []RegionPeer `json:"peers"` - Leader RegionPeer `json:"leader"` - DownPeers []RegionPeerStat `json:"down_peers"` - PendingPeers []RegionPeer `json:"pending_peers"` - WrittenBytes uint64 `json:"written_bytes"` - ReadBytes uint64 `json:"read_bytes"` - ApproximateSize int64 `json:"approximate_size"` - ApproximateKeys int64 `json:"approximate_keys"` - - ReplicationStatus *ReplicationStatus `json:"replication_status,omitempty"` -} - -// RegionsInfo stores the information of regions. -type RegionsInfo struct { - Count int64 `json:"count"` - Regions []RegionInfo `json:"regions"` -} - -// NewRegionsInfo returns RegionsInfo -func NewRegionsInfo() *RegionsInfo { - return &RegionsInfo{ - Regions: make([]RegionInfo, 0), - } -} - -// Merge merged 2 regionsInfo into one -func (r *RegionsInfo) Merge(other *RegionsInfo) *RegionsInfo { - newRegionsInfo := &RegionsInfo{ - Regions: make([]RegionInfo, 0, r.Count+other.Count), - } - m := make(map[int64]RegionInfo, r.Count+other.Count) - for _, region := range r.Regions { - m[region.ID] = region - } - for _, region := range other.Regions { - m[region.ID] = region - } - for _, region := range m { - newRegionsInfo.Regions = append(newRegionsInfo.Regions, region) - } - newRegionsInfo.Count = int64(len(newRegionsInfo.Regions)) - return newRegionsInfo -} - -// ReplicationStatus represents the replication mode status of the region. -type ReplicationStatus struct { - State string `json:"state"` - StateID int64 `json:"state_id"` -} - // TableInfo stores the information of a table or an index type TableInfo struct { DB *model.DBInfo @@ -679,13 +603,13 @@ type TableInfo struct { } type withKeyRange interface { - getStartKey() string - getEndKey() string + GetStartKey() string + GetEndKey() string } // isIntersecting returns true if x and y intersect. func isIntersecting(x, y withKeyRange) bool { - return isIntersectingKeyRange(x, y.getStartKey(), y.getEndKey()) + return isIntersectingKeyRange(x, y.GetStartKey(), y.GetEndKey()) } // isIntersectingKeyRange returns true if [startKey, endKey) intersect with x. @@ -695,22 +619,19 @@ func isIntersectingKeyRange(x withKeyRange, startKey, endKey string) bool { // isBehind returns true is x is behind y func isBehind(x, y withKeyRange) bool { - return isBehindKeyRange(x, y.getStartKey(), y.getEndKey()) + return isBehindKeyRange(x, y.GetStartKey(), y.GetEndKey()) } // IsBefore returns true is x is before [startKey, endKey) func isBeforeKeyRange(x withKeyRange, startKey, _ string) bool { - return x.getEndKey() != "" && x.getEndKey() <= startKey + return x.GetEndKey() != "" && x.GetEndKey() <= startKey } // IsBehind returns true is x is behind [startKey, endKey) func isBehindKeyRange(x withKeyRange, _, endKey string) bool { - return endKey != "" && x.getStartKey() >= endKey + return endKey != "" && x.GetStartKey() >= endKey } -func (r *RegionInfo) getStartKey() string { return r.StartKey } -func (r *RegionInfo) getEndKey() string { return r.EndKey } - // TableInfoWithKeyRange stores table or index informations with its key range. type TableInfoWithKeyRange struct { *TableInfo @@ -718,8 +639,11 @@ type TableInfoWithKeyRange struct { EndKey string } -func (t TableInfoWithKeyRange) getStartKey() string { return t.StartKey } -func (t TableInfoWithKeyRange) getEndKey() string { return t.EndKey } +// GetStartKey implements `withKeyRange` interface. +func (t TableInfoWithKeyRange) GetStartKey() string { return t.StartKey } + +// GetEndKey implements `withKeyRange` interface. +func (t TableInfoWithKeyRange) GetEndKey() string { return t.EndKey } // NewTableWithKeyRange constructs TableInfoWithKeyRange for given table, it is exported only for test. func NewTableWithKeyRange(db *model.DBInfo, table *model.TableInfo) TableInfoWithKeyRange { @@ -745,10 +669,10 @@ func (*Helper) FilterMemDBs(oldSchemas []*model.DBInfo) (schemas []*model.DBInfo // GetRegionsTableInfo returns a map maps region id to its tables or indices. // Assuming tables or indices key ranges never intersect. // Regions key ranges can intersect. -func (h *Helper) GetRegionsTableInfo(regionsInfo *RegionsInfo, schemas []*model.DBInfo) map[int64][]TableInfo { +func (h *Helper) GetRegionsTableInfo(regionsInfo *pd.RegionsInfo, schemas []*model.DBInfo) map[int64][]TableInfo { tables := h.GetTablesInfoWithKeyRange(schemas) - regions := make([]*RegionInfo, 0, len(regionsInfo.Regions)) + regions := make([]*pd.RegionInfo, 0, len(regionsInfo.Regions)) for i := 0; i < len(regionsInfo.Regions); i++ { regions = append(regions, ®ionsInfo.Regions[i]) } @@ -808,21 +732,21 @@ func (*Helper) GetTablesInfoWithKeyRange(schemas []*model.DBInfo) []TableInfoWit } } slices.SortFunc(tables, func(i, j TableInfoWithKeyRange) int { - return cmp.Compare(i.getStartKey(), j.getStartKey()) + return cmp.Compare(i.StartKey, j.StartKey) }) return tables } // ParseRegionsTableInfos parses the tables or indices in regions according to key range. -func (*Helper) ParseRegionsTableInfos(regionsInfo []*RegionInfo, tables []TableInfoWithKeyRange) map[int64][]TableInfo { +func (*Helper) ParseRegionsTableInfos(regionsInfo []*pd.RegionInfo, tables []TableInfoWithKeyRange) map[int64][]TableInfo { tableInfos := make(map[int64][]TableInfo, len(regionsInfo)) if len(tables) == 0 || len(regionsInfo) == 0 { return tableInfos } // tables is sorted in GetTablesInfoWithKeyRange func - slices.SortFunc(regionsInfo, func(i, j *RegionInfo) int { - return cmp.Compare(i.getStartKey(), j.getStartKey()) + slices.SortFunc(regionsInfo, func(i, j *pd.RegionInfo) int { + return cmp.Compare(i.StartKey, j.StartKey) }) idx := 0 @@ -848,171 +772,6 @@ func bytesKeyToHex(key []byte) string { return strings.ToUpper(hex.EncodeToString(key)) } -// GetRegionsInfo gets the region information of current store by using PD's api. -func (h *Helper) GetRegionsInfo() (*RegionsInfo, error) { - var regionsInfo RegionsInfo - err := h.requestPD("GetRegions", "GET", pdapi.Regions, nil, ®ionsInfo) - return ®ionsInfo, err -} - -// GetStoreRegionsInfo gets the region in given store. -func (h *Helper) GetStoreRegionsInfo(storeID uint64) (*RegionsInfo, error) { - var regionsInfo RegionsInfo - err := h.requestPD("GetStoreRegions", "GET", pdapi.StoreRegions+"/"+strconv.FormatUint(storeID, 10), nil, ®ionsInfo) - return ®ionsInfo, err -} - -// GetRegionInfoByID gets the region information of the region ID by using PD's api. -func (h *Helper) GetRegionInfoByID(regionID uint64) (*RegionInfo, error) { - var regionInfo RegionInfo - err := h.requestPD("GetRegionByID", "GET", pdapi.RegionByID+"/"+strconv.FormatUint(regionID, 10), nil, ®ionInfo) - return ®ionInfo, err -} - -// GetRegionsInfoByRange scans region by key range -func (h *Helper) GetRegionsInfoByRange(sk, ek []byte) (*RegionsInfo, error) { - var regionsInfo RegionsInfo - err := h.requestPD("GetRegionByRange", "GET", fmt.Sprintf("%v?key=%s&end_key=%s&limit=-1", pdapi.ScanRegions, - url.QueryEscape(string(sk)), url.QueryEscape(string(ek))), nil, ®ionsInfo) - return ®ionsInfo, err -} - -// GetRegionByKey gets regioninfo by key -func (h *Helper) GetRegionByKey(k []byte) (*RegionInfo, error) { - var regionInfo RegionInfo - err := h.requestPD("GetRegionByKey", "GET", fmt.Sprintf("%v/%v", pdapi.RegionByKey, url.QueryEscape(string(k))), nil, ®ionInfo) - return ®ionInfo, err -} - -// request PD API, decode the response body into res -func (h *Helper) requestPD(apiName, method, uri string, body io.Reader, res interface{}) error { - etcd, ok := h.Store.(kv.EtcdBackend) - if !ok { - return errors.WithStack(errors.New("not implemented")) - } - pdHosts, err := etcd.EtcdAddrs() - if err != nil { - return err - } - if len(pdHosts) == 0 { - return errors.New("pd unavailable") - } - for _, host := range pdHosts { - err = requestPDForOneHost(host, apiName, method, uri, body, res) - if err == nil { - break - } - // Try to request from another PD node when some nodes may down. - } - return err -} - -func requestPDForOneHost(host, apiName, method, uri string, body io.Reader, res interface{}) error { - urlVar := fmt.Sprintf("%s://%s%s", util.InternalHTTPSchema(), host, uri) - logutil.BgLogger().Debug("RequestPD URL", zap.String("url", urlVar)) - req, err := http.NewRequest(method, urlVar, body) - if err != nil { - logutil.BgLogger().Warn("requestPDForOneHost new request failed", - zap.String("url", urlVar), zap.Error(err)) - return errors.Trace(err) - } - start := time.Now() - resp, err := util.InternalHTTPClient().Do(req) - if err != nil { - metrics.PDAPIRequestCounter.WithLabelValues(apiName, "network error").Inc() - logutil.BgLogger().Warn("requestPDForOneHost do request failed", - zap.String("url", urlVar), zap.Error(err)) - return errors.Trace(err) - } - metrics.PDAPIExecutionHistogram.WithLabelValues(apiName).Observe(time.Since(start).Seconds()) - metrics.PDAPIRequestCounter.WithLabelValues(apiName, resp.Status).Inc() - defer func() { - err = resp.Body.Close() - if err != nil { - logutil.BgLogger().Warn("requestPDForOneHost close body failed", - zap.String("url", urlVar), zap.Error(err)) - } - }() - - if resp.StatusCode != http.StatusOK { - logFields := []zap.Field{ - zap.String("url", urlVar), - zap.String("status", resp.Status), - } - - bs, readErr := io.ReadAll(resp.Body) - if readErr != nil { - logFields = append(logFields, zap.NamedError("readBodyError", err)) - } else { - logFields = append(logFields, zap.ByteString("body", bs)) - } - - logutil.BgLogger().Warn("requestPDForOneHost failed with non 200 status", logFields...) - return errors.Errorf("PD request failed with status: '%s'", resp.Status) - } - - err = json.NewDecoder(resp.Body).Decode(res) - if err != nil { - return errors.Trace(err) - } - return nil -} - -// StoresStat stores all information get from PD's api. -type StoresStat struct { - Count int `json:"count"` - Stores []StoreStat `json:"stores"` -} - -// StoreStat stores information of one store. -type StoreStat struct { - Store StoreBaseStat `json:"store"` - Status StoreDetailStat `json:"status"` -} - -// StoreBaseStat stores the basic information of one store. -type StoreBaseStat struct { - ID int64 `json:"id"` - Address string `json:"address"` - State int64 `json:"state"` - StateName string `json:"state_name"` - Version string `json:"version"` - Labels []StoreLabel `json:"labels"` - StatusAddress string `json:"status_address"` - GitHash string `json:"git_hash"` - StartTimestamp int64 `json:"start_timestamp"` -} - -// StoreLabel stores the information of one store label. -type StoreLabel struct { - Key string `json:"key"` - Value string `json:"value"` -} - -// StoreDetailStat stores the detail information of one store. -type StoreDetailStat struct { - Capacity string `json:"capacity"` - Available string `json:"available"` - LeaderCount int64 `json:"leader_count"` - LeaderWeight float64 `json:"leader_weight"` - LeaderScore float64 `json:"leader_score"` - LeaderSize int64 `json:"leader_size"` - RegionCount int64 `json:"region_count"` - RegionWeight float64 `json:"region_weight"` - RegionScore float64 `json:"region_score"` - RegionSize int64 `json:"region_size"` - StartTs time.Time `json:"start_ts"` - LastHeartbeatTs time.Time `json:"last_heartbeat_ts"` - Uptime string `json:"uptime"` -} - -// GetStoresStat gets the TiKV store information by accessing PD's api. -func (h *Helper) GetStoresStat() (*StoresStat, error) { - var storesStat StoresStat - err := h.requestPD("GetStoresStat", "GET", pdapi.Stores, nil, &storesStat) - return &storesStat, err -} - // GetPDAddr return the PD Address. func (h *Helper) GetPDAddr() ([]string, error) { etcd, ok := h.Store.(kv.EtcdBackend) @@ -1029,21 +788,11 @@ func (h *Helper) GetPDAddr() ([]string, error) { return pdAddrs, nil } -// PDRegionStats is the json response from PD. -type PDRegionStats struct { - Count int `json:"count"` - EmptyCount int `json:"empty_count"` - StorageSize int64 `json:"storage_size"` - StorageKeys int64 `json:"storage_keys"` - StoreLeaderCount map[uint64]int `json:"store_leader_count"` - StorePeerCount map[uint64]int `json:"store_peer_count"` -} - -// GetPDRegionStats get the RegionStats by tableID. -func (h *Helper) GetPDRegionStats(tableID int64, stats *PDRegionStats, noIndexStats bool) error { - pdAddrs, err := h.GetPDAddr() +// GetPDRegionStats get the RegionStats by tableID from PD by HTTP API. +func (h *Helper) GetPDRegionStats(ctx context.Context, tableID int64, noIndexStats bool) (*pd.RegionStats, error) { + pdCli, err := h.TryGetPDHTTPClient() if err != nil { - return errors.Trace(err) + return nil, err } var startKey, endKey []byte @@ -1057,176 +806,7 @@ func (h *Helper) GetPDRegionStats(tableID int64, stats *PDRegionStats, noIndexSt startKey = codec.EncodeBytes([]byte{}, startKey) endKey = codec.EncodeBytes([]byte{}, endKey) - statURL := fmt.Sprintf("%s://%s%s", - util.InternalHTTPSchema(), - pdAddrs[0], - pdapi.RegionStatsByStartEndKey( - url.QueryEscape(string(startKey)), - url.QueryEscape(string(endKey)), - )) - - resp, err := util.InternalHTTPClient().Get(statURL) - if err != nil { - return errors.Trace(err) - } - defer func() { - if err = resp.Body.Close(); err != nil { - logutil.BgLogger().Error("err", zap.Error(err)) - } - }() - if resp.StatusCode != http.StatusOK { - body, err := io.ReadAll(resp.Body) - if err != nil { - return errors.Errorf("GetPDRegionStats %d: %s", resp.StatusCode, err) - } - return errors.Errorf("GetPDRegionStats %d: %s", resp.StatusCode, string(body)) - } - dec := json.NewDecoder(resp.Body) - - return dec.Decode(stats) -} - -// DeletePlacementRule is to delete placement rule for certain group. -func (h *Helper) DeletePlacementRule(group string, ruleID string) error { - pdAddrs, err := h.GetPDAddr() - if err != nil { - return errors.Trace(err) - } - - deleteURL := fmt.Sprintf("%s://%s%s/%v/%v", - util.InternalHTTPSchema(), - pdAddrs[0], - pdapi.PlacementRule, - group, - ruleID, - ) - - req, err := http.NewRequest("DELETE", deleteURL, nil) - if err != nil { - return errors.Trace(err) - } - - resp, err := util.InternalHTTPClient().Do(req) - if err != nil { - return errors.Trace(err) - } - defer func() { - if err = resp.Body.Close(); err != nil { - logutil.BgLogger().Error("err", zap.Error(err)) - } - }() - if resp.StatusCode != http.StatusOK { - return errors.New("DeletePlacementRule returns error") - } - return nil -} - -// SetPlacementRule is a helper function to set placement rule. -func (h *Helper) SetPlacementRule(rule placement.Rule) error { - pdAddrs, err := h.GetPDAddr() - if err != nil { - return errors.Trace(err) - } - m, _ := json.Marshal(rule) - - postURL := fmt.Sprintf("%s://%s%s", - util.InternalHTTPSchema(), - pdAddrs[0], - pdapi.PlacementRule, - ) - buf := bytes.NewBuffer(m) - resp, err := util.InternalHTTPClient().Post(postURL, "application/json", buf) - if err != nil { - return errors.Trace(err) - } - defer func() { - if err = resp.Body.Close(); err != nil { - logutil.BgLogger().Error("err", zap.Error(err)) - } - }() - if resp.StatusCode != http.StatusOK { - return errors.New("SetPlacementRule returns error") - } - return nil -} - -// GetGroupRules to get all placement rule in a certain group. -func (h *Helper) GetGroupRules(group string) ([]placement.Rule, error) { - pdAddrs, err := h.GetPDAddr() - if err != nil { - return nil, errors.Trace(err) - } - - getURL := fmt.Sprintf("%s://%s%s/%s", - util.InternalHTTPSchema(), - pdAddrs[0], - pdapi.PlacementRulesGroup, - group, - ) - - resp, err := util.InternalHTTPClient().Get(getURL) - if err != nil { - return nil, errors.Trace(err) - } - defer func() { - if err = resp.Body.Close(); err != nil { - logutil.BgLogger().Error("err", zap.Error(err)) - } - }() - - if resp.StatusCode != http.StatusOK { - return nil, errors.New("GetGroupRules returns error") - } - - buf := new(bytes.Buffer) - _, err = buf.ReadFrom(resp.Body) - if err != nil { - return nil, errors.Trace(err) - } - - var rules []placement.Rule - err = json.Unmarshal(buf.Bytes(), &rules) - if err != nil { - return nil, errors.Trace(err) - } - - return rules, nil -} - -// PostAccelerateSchedule sends `regions/accelerate-schedule` request. -func (h *Helper) PostAccelerateSchedule(tableID int64) error { - pdAddrs, err := h.GetPDAddr() - if err != nil { - return errors.Trace(err) - } - startKey := tablecodec.GenTableRecordPrefix(tableID) - endKey := tablecodec.EncodeTablePrefix(tableID + 1) - startKey = codec.EncodeBytes([]byte{}, startKey) - endKey = codec.EncodeBytes([]byte{}, endKey) - - postURL := fmt.Sprintf("%s://%s%s", - util.InternalHTTPSchema(), - pdAddrs[0], - pdapi.AccelerateSchedule) - - input := map[string]string{ - "start_key": url.QueryEscape(string(startKey)), - "end_key": url.QueryEscape(string(endKey)), - } - v, err := json.Marshal(input) - if err != nil { - return errors.Trace(err) - } - resp, err := util.InternalHTTPClient().Post(postURL, "application/json", bytes.NewBuffer(v)) - if err != nil { - return errors.Trace(err) - } - defer func() { - if err = resp.Body.Close(); err != nil { - logutil.BgLogger().Error("err", zap.Error(err)) - } - }() - return nil + return pdCli.GetRegionStatusByKeyRange(ctx, pd.NewKeyRange(startKey, endKey)) } // GetTiFlashTableIDFromEndKey computes tableID from pd rule's endKey. diff --git a/pkg/store/helper/helper_test.go b/pkg/store/helper/helper_test.go index 2be42a85198e0..21774cfc13ebe 100644 --- a/pkg/store/helper/helper_test.go +++ b/pkg/store/helper/helper_test.go @@ -16,6 +16,7 @@ package helper_test import ( "bufio" + "context" "crypto/tls" "encoding/json" "fmt" @@ -31,9 +32,10 @@ import ( "github.com/pingcap/tidb/pkg/store/helper" "github.com/pingcap/tidb/pkg/store/mockstore" "github.com/pingcap/tidb/pkg/tablecodec" - "github.com/pingcap/tidb/pkg/util/pdapi" "github.com/stretchr/testify/require" "github.com/tikv/client-go/v2/testutils" + "github.com/tikv/client-go/v2/tikv" + pd "github.com/tikv/pd/client/http" "go.opencensus.io/stats/view" "go.uber.org/zap" ) @@ -45,7 +47,7 @@ func TestHotRegion(t *testing.T) { Store: store, RegionCache: store.GetRegionCache(), } - regionMetric, err := h.FetchHotRegion(pdapi.HotRead) + regionMetric, err := h.FetchHotRegion(context.Background(), "read") require.NoError(t, err) expected := map[uint64]helper.RegionMetric{ @@ -89,7 +91,9 @@ func TestTiKVRegionsInfo(t *testing.T) { Store: store, RegionCache: store.GetRegionCache(), } - regionsInfo, err := h.GetRegionsInfo() + pdCli, err := h.TryGetPDHTTPClient() + require.NoError(t, err) + regionsInfo, err := pdCli.GetRegions(context.Background()) require.NoError(t, err) require.Equal(t, getMockTiKVRegionsInfo(), regionsInfo) } @@ -102,7 +106,10 @@ func TestTiKVStoresStat(t *testing.T) { RegionCache: store.GetRegionCache(), } - stat, err := h.GetStoresStat() + pdCli, err := h.TryGetPDHTTPClient() + require.NoError(t, err) + + stat, err := pdCli.GetStores(context.Background()) require.NoError(t, err) data, err := json.Marshal(stat) @@ -138,18 +145,20 @@ func (s *mockStore) Describe() string { } func createMockStore(t *testing.T) (store helper.Storage) { + server := mockPDHTTPServer() + + pdAddrs := []string{"invalid_pd_address", server.URL[len("http://"):]} s, err := mockstore.NewMockStore( mockstore.WithClusterInspector(func(c testutils.Cluster) { mockstore.BootstrapWithMultiRegions(c, []byte("x")) }), + mockstore.WithTiKVOptions(tikv.WithPDHTTPClient(pdAddrs)), ) require.NoError(t, err) - server := mockPDHTTPServer() - store = &mockStore{ s.(helper.Storage), - []string{"invalid_pd_address", server.URL[len("http://"):]}, + pdAddrs, } t.Cleanup(func() { @@ -163,9 +172,9 @@ func createMockStore(t *testing.T) (store helper.Storage) { func mockPDHTTPServer() *httptest.Server { router := mux.NewRouter() - router.HandleFunc(pdapi.HotRead, mockHotRegionResponse) - router.HandleFunc(pdapi.Regions, mockTiKVRegionsInfoResponse) - router.HandleFunc(pdapi.Stores, mockStoreStatResponse) + router.HandleFunc(pd.HotRead, mockHotRegionResponse) + router.HandleFunc(pd.Regions, mockTiKVRegionsInfoResponse) + router.HandleFunc(pd.Stores, mockStoreStatResponse) serverMux := http.NewServeMux() serverMux.Handle("/", router) return httptest.NewServer(serverMux) @@ -174,22 +183,22 @@ func mockPDHTTPServer() *httptest.Server { func mockHotRegionResponse(w http.ResponseWriter, _ *http.Request) { w.Header().Set("Content-Type", "application/json") w.WriteHeader(http.StatusOK) - regionsStat := helper.HotRegionsStat{ - RegionsStat: []helper.RegionStat{ + regionsStat := pd.HotPeersStat{ + Stats: []pd.HotPeerStatShow{ { - FlowBytes: 100, + ByteRate: 100, RegionID: 2, HotDegree: 1, }, { - FlowBytes: 200, + ByteRate: 200, RegionID: 4, HotDegree: 2, }, }, } - resp := helper.StoreHotRegionInfos{ - AsLeader: make(map[uint64]*helper.HotRegionsStat), + resp := pd.StoreHotPeersInfos{ + AsLeader: make(pd.StoreHotPeersStat), } resp.AsLeader[0] = ®ionsStat data, err := json.MarshalIndent(resp, "", " ") @@ -258,33 +267,33 @@ func getRegionsTableInfoAns(dbs []*model.DBInfo) map[int64][]helper.TableInfo { return ans } -func getMockTiKVRegionsInfo() *helper.RegionsInfo { - regions := []helper.RegionInfo{ +func getMockTiKVRegionsInfo() *pd.RegionsInfo { + regions := []pd.RegionInfo{ { ID: 1, StartKey: "", EndKey: "12341234", - Epoch: helper.RegionEpoch{ + Epoch: pd.RegionEpoch{ ConfVer: 1, Version: 1, }, - Peers: []helper.RegionPeer{ + Peers: []pd.RegionPeer{ {ID: 2, StoreID: 1}, {ID: 15, StoreID: 51}, {ID: 66, StoreID: 99, IsLearner: true}, {ID: 123, StoreID: 111, IsLearner: true}, }, - Leader: helper.RegionPeer{ + Leader: pd.RegionPeer{ ID: 2, StoreID: 1, }, - DownPeers: []helper.RegionPeerStat{ + DownPeers: []pd.RegionPeerStat{ { - helper.RegionPeer{ID: 66, StoreID: 99, IsLearner: true}, - 120, + Peer: pd.RegionPeer{ID: 66, StoreID: 99, IsLearner: true}, + DownSec: 120, }, }, - PendingPeers: []helper.RegionPeer{ + PendingPeers: []pd.RegionPeer{ {ID: 15, StoreID: 51}, }, WrittenBytes: 100, @@ -297,66 +306,66 @@ func getMockTiKVRegionsInfo() *helper.RegionsInfo { ID: 2, StartKey: "7480000000000000FF295F698000000000FF0000010000000000FA", EndKey: "7480000000000000FF2B5F698000000000FF0000010000000000FA", - Epoch: helper.RegionEpoch{ConfVer: 1, Version: 1}, - Peers: []helper.RegionPeer{{ID: 3, StoreID: 1}}, - Leader: helper.RegionPeer{ID: 3, StoreID: 1}, + Epoch: pd.RegionEpoch{ConfVer: 1, Version: 1}, + Peers: []pd.RegionPeer{{ID: 3, StoreID: 1}}, + Leader: pd.RegionPeer{ID: 3, StoreID: 1}, }, // table: 63, record + index: 1, 2 { ID: 3, StartKey: "7480000000000000FF3F5F698000000000FF0000010000000000FA", EndKey: "7480000000000000FF425F698000000000FF0000010000000000FA", - Epoch: helper.RegionEpoch{ConfVer: 1, Version: 1}, - Peers: []helper.RegionPeer{{ID: 4, StoreID: 1}}, - Leader: helper.RegionPeer{ID: 4, StoreID: 1}, + Epoch: pd.RegionEpoch{ConfVer: 1, Version: 1}, + Peers: []pd.RegionPeer{{ID: 4, StoreID: 1}}, + Leader: pd.RegionPeer{ID: 4, StoreID: 1}, }, // table: 66, record { ID: 4, StartKey: "7480000000000000FF425F72C000000000FF0000000000000000FA", EndKey: "", - Epoch: helper.RegionEpoch{ConfVer: 1, Version: 1}, - Peers: []helper.RegionPeer{{ID: 5, StoreID: 1}}, - Leader: helper.RegionPeer{ID: 5, StoreID: 1}, + Epoch: pd.RegionEpoch{ConfVer: 1, Version: 1}, + Peers: []pd.RegionPeer{{ID: 5, StoreID: 1}}, + Leader: pd.RegionPeer{ID: 5, StoreID: 1}, }, // table: 66, record + index: 3 { ID: 5, StartKey: "7480000000000000FF425F698000000000FF0000030000000000FA", EndKey: "7480000000000000FF425F72C000000000FF0000000000000000FA", - Epoch: helper.RegionEpoch{ConfVer: 1, Version: 1}, - Peers: []helper.RegionPeer{{ID: 6, StoreID: 1}}, - Leader: helper.RegionPeer{ID: 6, StoreID: 1}, + Epoch: pd.RegionEpoch{ConfVer: 1, Version: 1}, + Peers: []pd.RegionPeer{{ID: 6, StoreID: 1}}, + Leader: pd.RegionPeer{ID: 6, StoreID: 1}, }, // table: 66, index: 1 { ID: 6, StartKey: "7480000000000000FF425F698000000000FF0000010000000000FA", EndKey: "7480000000000000FF425F698000000000FF0000020000000000FA", - Epoch: helper.RegionEpoch{ConfVer: 1, Version: 1}, - Peers: []helper.RegionPeer{{ID: 7, StoreID: 1}}, - Leader: helper.RegionPeer{ID: 7, StoreID: 1}, + Epoch: pd.RegionEpoch{ConfVer: 1, Version: 1}, + Peers: []pd.RegionPeer{{ID: 7, StoreID: 1}}, + Leader: pd.RegionPeer{ID: 7, StoreID: 1}, }, // table: 66, index: 2 { ID: 7, StartKey: "7480000000000000FF425F698000000000FF0000020000000000FA", EndKey: "7480000000000000FF425F698000000000FF0000030000000000FA", - Epoch: helper.RegionEpoch{ConfVer: 1, Version: 1}, - Peers: []helper.RegionPeer{{ID: 8, StoreID: 1}}, - Leader: helper.RegionPeer{ID: 8, StoreID: 1}, + Epoch: pd.RegionEpoch{ConfVer: 1, Version: 1}, + Peers: []pd.RegionPeer{{ID: 8, StoreID: 1}}, + Leader: pd.RegionPeer{ID: 8, StoreID: 1}, }, // merge region 7, 5 { ID: 8, StartKey: "7480000000000000FF425F698000000000FF0000020000000000FA", EndKey: "7480000000000000FF425F72C000000000FF0000000000000000FA", - Epoch: helper.RegionEpoch{ConfVer: 1, Version: 1}, - Peers: []helper.RegionPeer{{ID: 9, StoreID: 1}}, - Leader: helper.RegionPeer{ID: 9, StoreID: 1}, + Epoch: pd.RegionEpoch{ConfVer: 1, Version: 1}, + Peers: []pd.RegionPeer{{ID: 9, StoreID: 1}}, + Leader: pd.RegionPeer{ID: 9, StoreID: 1}, }, } - return &helper.RegionsInfo{ + return &pd.RegionsInfo{ Count: int64(len(regions)), Regions: regions, } @@ -387,24 +396,24 @@ func mockStoreStatResponse(w http.ResponseWriter, _ *http.Request) { if err != nil { log.Panic("mock tikv store api response failed", zap.Error(err)) } - storesStat := helper.StoresStat{ + storesStat := pd.StoresInfo{ Count: 1, - Stores: []helper.StoreStat{ + Stores: []pd.StoreInfo{ { - Store: helper.StoreBaseStat{ + Store: pd.MetaStore{ ID: 1, Address: "127.0.0.1:20160", State: 0, StateName: "Up", Version: "3.0.0-beta", - Labels: []helper.StoreLabel{ + Labels: []pd.StoreLabel{ { Key: "test", Value: "test", }, }, }, - Status: helper.StoreDetailStat{ + Status: pd.StoreStatus{ Capacity: "60 GiB", Available: "100 GiB", LeaderCount: 10, @@ -415,8 +424,8 @@ func mockStoreStatResponse(w http.ResponseWriter, _ *http.Request) { RegionWeight: 999999.999999, RegionScore: 999999.999999, RegionSize: 1000, - StartTs: startTs, - LastHeartbeatTs: lastHeartbeatTs, + StartTS: startTs, + LastHeartbeatTS: lastHeartbeatTs, Uptime: "1h30m", }, }, diff --git a/pkg/store/mockstore/cluster_test.go b/pkg/store/mockstore/cluster_test.go index 52d23e4092d65..b3958b1ce9475 100644 --- a/pkg/store/mockstore/cluster_test.go +++ b/pkg/store/mockstore/cluster_test.go @@ -58,11 +58,11 @@ func TestClusterSplit(t *testing.T) { colValue := types.NewStringDatum(strconv.Itoa(int(handle))) // TODO: Should use session's TimeZone instead of UTC. rd := rowcodec.Encoder{Enable: true} - rowValue, err1 := tablecodec.EncodeRow(sc, []types.Datum{colValue}, []int64{colID}, nil, nil, &rd) + rowValue, err1 := tablecodec.EncodeRow(sc.TimeZone(), []types.Datum{colValue}, []int64{colID}, nil, nil, &rd) require.NoError(t, err1) txn.Set(rowKey, rowValue) - encodedIndexValue, err1 := codec.EncodeKey(sc, nil, []types.Datum{colValue, types.NewIntDatum(handle)}...) + encodedIndexValue, err1 := codec.EncodeKey(sc.TimeZone(), nil, []types.Datum{colValue, types.NewIntDatum(handle)}...) require.NoError(t, err1) idxKey := tablecodec.EncodeIndexSeekKey(tblID, idxID, encodedIndexValue) txn.Set(idxKey, []byte{'0'}) diff --git a/pkg/store/mockstore/mockcopr/BUILD.bazel b/pkg/store/mockstore/mockcopr/BUILD.bazel index 3eb69ae39b10a..04f01dbe0cec1 100644 --- a/pkg/store/mockstore/mockcopr/BUILD.bazel +++ b/pkg/store/mockstore/mockcopr/BUILD.bazel @@ -23,6 +23,7 @@ go_library( "//pkg/parser/model", "//pkg/parser/mysql", "//pkg/parser/terror", + "//pkg/sessionctx", "//pkg/sessionctx/stmtctx", "//pkg/statistics", "//pkg/tablecodec", @@ -30,6 +31,7 @@ go_library( "//pkg/util/chunk", "//pkg/util/codec", "//pkg/util/collate", + "//pkg/util/mock", "//pkg/util/rowcodec", "//pkg/util/timeutil", "@com_github_golang_protobuf//proto", diff --git a/pkg/store/mockstore/mockcopr/aggregate.go b/pkg/store/mockstore/mockcopr/aggregate.go index afb9ea6e0972f..1a996929783f2 100644 --- a/pkg/store/mockstore/mockcopr/aggregate.go +++ b/pkg/store/mockstore/mockcopr/aggregate.go @@ -118,10 +118,13 @@ func (e *hashAggExec) Next(ctx context.Context) (value [][]byte, err error) { gk := e.groupKeys[e.currGroupIdx] value = make([][]byte, 0, len(e.groupByExprs)+2*len(e.aggExprs)) aggCtxs := e.getContexts(gk) + sc := e.evalCtx.sctx.GetSessionVars().StmtCtx + errCtx := sc.ErrCtx() for i, agg := range e.aggExprs { partialResults := agg.GetPartialResult(aggCtxs[i]) for _, result := range partialResults { - data, err := codec.EncodeValue(e.evalCtx.sc, nil, result) + data, err := codec.EncodeValue(sc.TimeZone(), nil, result) + err = errCtx.HandleError(err) if err != nil { return nil, errors.Trace(err) } @@ -141,12 +144,15 @@ func (e *hashAggExec) getGroupKey() ([]byte, [][]byte, error) { } bufLen := 0 row := make([][]byte, 0, length) + sc := e.evalCtx.sctx.GetSessionVars().StmtCtx + errCtx := sc.ErrCtx() for _, item := range e.groupByExprs { - v, err := item.Eval(chunk.MutRowFromDatums(e.row).ToRow()) + v, err := item.Eval(e.evalCtx.sctx, chunk.MutRowFromDatums(e.row).ToRow()) if err != nil { return nil, nil, errors.Trace(err) } - b, err := codec.EncodeValue(e.evalCtx.sc, nil, v) + b, err := codec.EncodeValue(sc.TimeZone(), nil, v) + err = errCtx.HandleError(err) if err != nil { return nil, nil, errors.Trace(err) } @@ -179,7 +185,7 @@ func (e *hashAggExec) aggregate(value [][]byte) error { // Update aggregate expressions. aggCtxs := e.getContexts(gk) for i, agg := range e.aggExprs { - err = agg.Update(aggCtxs[i], e.evalCtx.sc, chunk.MutRowFromDatums(e.row).ToRow()) + err = agg.Update(aggCtxs[i], e.evalCtx.sctx.GetSessionVars().StmtCtx, chunk.MutRowFromDatums(e.row).ToRow()) if err != nil { return errors.Trace(err) } @@ -193,7 +199,7 @@ func (e *hashAggExec) getContexts(groupKey []byte) []*aggregation.AggEvaluateCon if !ok { aggCtxs = make([]*aggregation.AggEvaluateContext, 0, len(e.aggExprs)) for _, agg := range e.aggExprs { - aggCtxs = append(aggCtxs, agg.CreateContext(e.evalCtx.sc)) + aggCtxs = append(aggCtxs, agg.CreateContext(e.evalCtx.sctx)) } e.aggCtxsMap[groupKeyString] = aggCtxs } @@ -246,21 +252,25 @@ func (e *streamAggExec) Counts() []int64 { func (e *streamAggExec) getPartialResult() ([][]byte, error) { value := make([][]byte, 0, len(e.groupByExprs)+2*len(e.aggExprs)) + sc := e.evalCtx.sctx.GetSessionVars().StmtCtx + errCtx := sc.ErrCtx() for i, agg := range e.aggExprs { partialResults := agg.GetPartialResult(e.aggCtxs[i]) for _, result := range partialResults { - data, err := codec.EncodeValue(e.evalCtx.sc, nil, result) + data, err := codec.EncodeValue(sc.TimeZone(), nil, result) + err = errCtx.HandleError(err) if err != nil { return nil, errors.Trace(err) } value = append(value, data) } // Clear the aggregate context. - e.aggCtxs[i] = agg.CreateContext(e.evalCtx.sc) + e.aggCtxs[i] = agg.CreateContext(e.evalCtx.sctx) } e.currGroupByValues = e.currGroupByValues[:0] for _, d := range e.currGroupByRow { - buf, err := codec.EncodeValue(e.evalCtx.sc, nil, d) + buf, err := codec.EncodeValue(sc.TimeZone(), nil, d) + err = errCtx.HandleError(err) if err != nil { return nil, errors.Trace(err) } @@ -281,12 +291,12 @@ func (e *streamAggExec) meetNewGroup(row [][]byte) (bool, error) { matched, firstGroup = false, true } for i, item := range e.groupByExprs { - d, err := item.Eval(chunk.MutRowFromDatums(e.row).ToRow()) + d, err := item.Eval(e.evalCtx.sctx, chunk.MutRowFromDatums(e.row).ToRow()) if err != nil { return false, errors.Trace(err) } if matched { - c, err := d.Compare(e.evalCtx.sc.TypeCtx(), &e.nextGroupByRow[i], e.groupByCollators[i]) + c, err := d.Compare(e.evalCtx.sctx.GetSessionVars().StmtCtx.TypeCtx(), &e.nextGroupByRow[i], e.groupByCollators[i]) if err != nil { return false, errors.Trace(err) } @@ -342,7 +352,7 @@ func (e *streamAggExec) Next(ctx context.Context) (retRow [][]byte, err error) { } } for i, agg := range e.aggExprs { - err = agg.Update(e.aggCtxs[i], e.evalCtx.sc, chunk.MutRowFromDatums(e.row).ToRow()) + err = agg.Update(e.aggCtxs[i], e.evalCtx.sctx.GetSessionVars().StmtCtx, chunk.MutRowFromDatums(e.row).ToRow()) if err != nil { return nil, errors.Trace(err) } diff --git a/pkg/store/mockstore/mockcopr/analyze.go b/pkg/store/mockstore/mockcopr/analyze.go index 87cabb184163b..b58793ec0bb10 100644 --- a/pkg/store/mockstore/mockcopr/analyze.go +++ b/pkg/store/mockstore/mockcopr/analyze.go @@ -88,7 +88,9 @@ func (h coprHandler) handleAnalyzeIndexReq(req *coprocessor.Request, analyzeReq if err != nil { return nil, errors.Trace(err) } - statsBuilder := statistics.NewSortedBuilder(flagsAndTzToStatementContext(analyzeReq.Flags, tz), analyzeReq.IdxReq.BucketSize, 0, types.NewFieldType(mysql.TypeBlob), statistics.Version1) + sctx := flagsAndTzToSessionContext(analyzeReq.Flags, tz) + sc := sctx.GetSessionVars().StmtCtx + statsBuilder := statistics.NewSortedBuilder(sc, analyzeReq.IdxReq.BucketSize, 0, types.NewFieldType(mysql.TypeBlob), statistics.Version1) var cms *statistics.CMSketch if analyzeReq.IdxReq.CmsketchDepth != nil && analyzeReq.IdxReq.CmsketchWidth != nil { cms = statistics.NewCMSketch(*analyzeReq.IdxReq.CmsketchDepth, *analyzeReq.IdxReq.CmsketchWidth) @@ -138,9 +140,9 @@ func (h coprHandler) handleAnalyzeColumnsReq(req *coprocessor.Request, analyzeRe return nil, errors.Trace(err) } - sc := flagsAndTzToStatementContext(analyzeReq.Flags, tz) + sctx := flagsAndTzToSessionContext(analyzeReq.Flags, tz) - evalCtx := &evalContext{sc: sc} + evalCtx := &evalContext{sctx: sctx} columns := analyzeReq.ColReq.ColumnsInfo evalCtx.setColumnInfo(columns) ranges, err := h.extractKVRanges(req.Ranges, false) @@ -215,7 +217,7 @@ func (h coprHandler) handleAnalyzeColumnsReq(req *coprocessor.Request, analyzeRe } colReq := analyzeReq.ColReq builder := statistics.SampleBuilder{ - Sc: sc, + Sc: sctx.GetSessionVars().StmtCtx, RecordSet: e, ColLen: numCols, MaxBucketSize: colReq.BucketSize, @@ -225,7 +227,7 @@ func (h coprHandler) handleAnalyzeColumnsReq(req *coprocessor.Request, analyzeRe ColsFieldType: fts, } if pkID != -1 { - builder.PkBuilder = statistics.NewSortedBuilder(sc, builder.MaxBucketSize, pkID, types.NewFieldType(mysql.TypeBlob), statistics.Version1) + builder.PkBuilder = statistics.NewSortedBuilder(sctx.GetSessionVars().StmtCtx, builder.MaxBucketSize, pkID, types.NewFieldType(mysql.TypeBlob), statistics.Version1) } if colReq.CmsketchWidth != nil && colReq.CmsketchDepth != nil { builder.CMSketchWidth = *colReq.CmsketchWidth diff --git a/pkg/store/mockstore/mockcopr/cop_handler_dag.go b/pkg/store/mockstore/mockcopr/cop_handler_dag.go index c1fac6fa803d3..03d09f78a38f2 100644 --- a/pkg/store/mockstore/mockcopr/cop_handler_dag.go +++ b/pkg/store/mockstore/mockcopr/cop_handler_dag.go @@ -32,12 +32,14 @@ import ( "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/parser/terror" + "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/tablecodec" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/chunk" "github.com/pingcap/tidb/pkg/util/codec" "github.com/pingcap/tidb/pkg/util/collate" + "github.com/pingcap/tidb/pkg/util/mock" "github.com/pingcap/tidb/pkg/util/rowcodec" "github.com/pingcap/tidb/pkg/util/timeutil" "github.com/pingcap/tipb/go-tipb" @@ -82,7 +84,8 @@ func (h coprHandler) handleCopDAGRequest(req *coprocessor.Request) *coprocessor. execDetails = e.ExecDetails() } - selResp := h.initSelectResponse(err, dagCtx.evalCtx.sc.GetWarnings(), e.Counts()) + sc := dagCtx.evalCtx.sctx.GetSessionVars().StmtCtx + selResp := h.initSelectResponse(err, sc.GetWarnings(), e.Counts()) if err == nil { err = h.fillUpData4SelectResponse(selResp, dagReq, dagCtx, rows) } @@ -107,13 +110,13 @@ func (h coprHandler) buildDAGExecutor(req *coprocessor.Request) (*dagContext, ex if err != nil { return nil, nil, nil, errors.Trace(err) } - sc := flagsAndTzToStatementContext(dagReq.Flags, tz) + sctx := flagsAndTzToSessionContext(dagReq.Flags, tz) ctx := &dagContext{ dagReq: dagReq, keyRanges: req.Ranges, startTS: req.StartTs, - evalCtx: &evalContext{sc: sc}, + evalCtx: &evalContext{sctx: sctx}, } var e executor if len(dagReq.Executors) == 0 { @@ -301,7 +304,7 @@ func (h coprHandler) buildSelection(ctx *dagContext, executor *tipb.Executor) (* return nil, errors.Trace(err) } } - conds, err := convertToExprs(ctx.evalCtx.sc, ctx.evalCtx.fieldTps, pbConds) + conds, err := convertToExprs(ctx.evalCtx.sctx, ctx.evalCtx.fieldTps, pbConds) if err != nil { return nil, errors.Trace(err) } @@ -322,7 +325,7 @@ func (h coprHandler) getAggInfo(ctx *dagContext, executor *tipb.Executor) ([]agg var relatedColOffsets []int for _, expr := range executor.Aggregation.AggFunc { var aggExpr aggregation.Aggregation - aggExpr, err = aggregation.NewDistAggFunc(expr, ctx.evalCtx.fieldTps, ctx.evalCtx.sc) + aggExpr, err = aggregation.NewDistAggFunc(expr, ctx.evalCtx.fieldTps, ctx.evalCtx.sctx) if err != nil { return nil, nil, nil, errors.Trace(err) } @@ -338,7 +341,7 @@ func (h coprHandler) getAggInfo(ctx *dagContext, executor *tipb.Executor) ([]agg return nil, nil, nil, errors.Trace(err) } } - groupBys, err := convertToExprs(ctx.evalCtx.sc, ctx.evalCtx.fieldTps, executor.Aggregation.GetGroupBy()) + groupBys, err := convertToExprs(ctx.evalCtx.sctx, ctx.evalCtx.fieldTps, executor.Aggregation.GetGroupBy()) if err != nil { return nil, nil, nil, errors.Trace(err) } @@ -371,7 +374,7 @@ func (h coprHandler) buildStreamAgg(ctx *dagContext, executor *tipb.Executor) (* } aggCtxs := make([]*aggregation.AggEvaluateContext, 0, len(aggs)) for _, agg := range aggs { - aggCtxs = append(aggCtxs, agg.CreateContext(ctx.evalCtx.sc)) + aggCtxs = append(aggCtxs, agg.CreateContext(ctx.evalCtx.sctx)) } groupByCollators := make([]collate.Collator, 0, len(groupBys)) for _, expr := range groupBys { @@ -407,11 +410,11 @@ func (h coprHandler) buildTopN(ctx *dagContext, executor *tipb.Executor) (*topNE totalCount: int(topN.Limit), topNSorter: topNSorter{ orderByItems: topN.OrderBy, - sc: ctx.evalCtx.sc, + sc: ctx.evalCtx.sctx.GetSessionVars().StmtCtx, }, } - conds, err := convertToExprs(ctx.evalCtx.sc, ctx.evalCtx.fieldTps, pbConds) + conds, err := convertToExprs(ctx.evalCtx.sctx, ctx.evalCtx.fieldTps, pbConds) if err != nil { return nil, errors.Trace(err) } @@ -430,7 +433,7 @@ type evalContext struct { colIDs map[int64]int columnInfos []*tipb.ColumnInfo fieldTps []*types.FieldType - sc *stmtctx.StatementContext + sctx sessionctx.Context } func (e *evalContext) setColumnInfo(cols []*tipb.ColumnInfo) { @@ -450,7 +453,7 @@ func (e *evalContext) setColumnInfo(cols []*tipb.ColumnInfo) { func (e *evalContext) decodeRelatedColumnVals(relatedColOffsets []int, value [][]byte, row []types.Datum) error { var err error for _, offset := range relatedColOffsets { - row[offset], err = tablecodec.DecodeColumnValue(value[offset], e.fieldTps[offset], e.sc.TimeZone()) + row[offset], err = tablecodec.DecodeColumnValue(value[offset], e.fieldTps[offset], e.sctx.GetSessionVars().StmtCtx.TimeZone()) if err != nil { return errors.Trace(err) } @@ -458,11 +461,13 @@ func (e *evalContext) decodeRelatedColumnVals(relatedColOffsets []int, value [][ return nil } -// flagsAndTzToStatementContext creates a StatementContext from a `tipb.SelectRequest.Flags`. -func flagsAndTzToStatementContext(flags uint64, tz *time.Location) *stmtctx.StatementContext { +// flagsAndTzToSessionContext creates a StatementContext from a `tipb.SelectRequest.Flags`. +func flagsAndTzToSessionContext(flags uint64, tz *time.Location) sessionctx.Context { + sctx := mock.NewContext() sc := stmtctx.NewStmtCtx() sc.InitFromPBFlagAndTz(flags, tz) - return sc + sctx.GetSessionVars().StmtCtx = sc + return sctx } // MockGRPCClientStream is exported for testing purpose. @@ -544,7 +549,7 @@ func (h coprHandler) fillUpData4SelectResponse(selResp *tipb.SelectResponse, dag h.encodeDefault(selResp, rows, dagReq.OutputOffsets) case tipb.EncodeType_TypeChunk: colTypes := h.constructRespSchema(dagCtx) - loc := dagCtx.evalCtx.sc.TimeZone() + loc := dagCtx.evalCtx.sctx.GetSessionVars().StmtCtx.TimeZone() err := h.encodeChunk(selResp, rows, colTypes, dagReq.OutputOffsets, loc) if err != nil { return err diff --git a/pkg/store/mockstore/mockcopr/executor.go b/pkg/store/mockstore/mockcopr/executor.go index 70e9d5159632d..5e045f5bd158d 100644 --- a/pkg/store/mockstore/mockcopr/executor.go +++ b/pkg/store/mockstore/mockcopr/executor.go @@ -26,7 +26,7 @@ import ( "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" - "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" + "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/tablecodec" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/chunk" @@ -404,9 +404,9 @@ func (e *selectionExec) Counts() []int64 { } // evalBool evaluates expression to a boolean value. -func evalBool(exprs []expression.Expression, row []types.Datum, ctx *stmtctx.StatementContext) (bool, error) { +func evalBool(exprs []expression.Expression, row []types.Datum, ctx sessionctx.Context) (bool, error) { for _, expr := range exprs { - data, err := expr.Eval(chunk.MutRowFromDatums(row).ToRow()) + data, err := expr.Eval(ctx, chunk.MutRowFromDatums(row).ToRow()) if err != nil { return false, errors.Trace(err) } @@ -414,8 +414,8 @@ func evalBool(exprs []expression.Expression, row []types.Datum, ctx *stmtctx.Sta return false, nil } - isBool, err := data.ToBool(ctx.TypeCtx()) - isBool, err = expression.HandleOverflowOnSelection(ctx, isBool, err) + isBool, err := data.ToBool(ctx.GetSessionVars().StmtCtx.TypeCtx()) + isBool, err = expression.HandleOverflowOnSelection(ctx.GetSessionVars().StmtCtx, isBool, err) if err != nil { return false, errors.Trace(err) } @@ -443,7 +443,7 @@ func (e *selectionExec) Next(ctx context.Context) (value [][]byte, err error) { if err != nil { return nil, errors.Trace(err) } - match, err := evalBool(e.conditions, e.row, e.evalCtx.sc) + match, err := evalBool(e.conditions, e.row, e.evalCtx.sctx) if err != nil { return nil, errors.Trace(err) } @@ -542,7 +542,7 @@ func (e *topNExec) evalTopN(value [][]byte) error { return errors.Trace(err) } for i, expr := range e.orderByExprs { - newRow.key[i], err = expr.Eval(chunk.MutRowFromDatums(e.row).ToRow()) + newRow.key[i], err = expr.Eval(e.evalCtx.sctx, chunk.MutRowFromDatums(e.row).ToRow()) if err != nil { return errors.Trace(err) } @@ -638,7 +638,7 @@ func getRowData(columns []*tipb.ColumnInfo, colIDs map[int64]int, handle int64, } else { handleDatum = types.NewIntDatum(handle) } - handleData, err1 := codec.EncodeValue(nil, nil, handleDatum) + handleData, err1 := codec.EncodeValue(time.UTC, nil, handleDatum) if err1 != nil { return nil, errors.Trace(err1) } @@ -662,10 +662,10 @@ func getRowData(columns []*tipb.ColumnInfo, colIDs map[int64]int, handle int64, return values, nil } -func convertToExprs(sc *stmtctx.StatementContext, fieldTps []*types.FieldType, pbExprs []*tipb.Expr) ([]expression.Expression, error) { +func convertToExprs(sctx sessionctx.Context, fieldTps []*types.FieldType, pbExprs []*tipb.Expr) ([]expression.Expression, error) { exprs := make([]expression.Expression, 0, len(pbExprs)) for _, expr := range pbExprs { - e, err := expression.PBToExpr(expr, fieldTps, sc) + e, err := expression.PBToExpr(sctx, expr, fieldTps) if err != nil { return nil, errors.Trace(err) } diff --git a/pkg/store/mockstore/mockstore.go b/pkg/store/mockstore/mockstore.go index 4d2bed7ce0bc7..d8945e5401056 100644 --- a/pkg/store/mockstore/mockstore.go +++ b/pkg/store/mockstore/mockstore.go @@ -92,6 +92,7 @@ type mockOptions struct { txnLocalLatches uint storeType StoreType ddlCheckerHijack bool + tikvOptions []tikv.Option } // MockTiKVStoreOption is used to control some behavior of mock tikv. @@ -106,6 +107,13 @@ func WithMultipleOptions(opts ...MockTiKVStoreOption) MockTiKVStoreOption { } } +// WithTiKVOptions sets KV options. +func WithTiKVOptions(opts ...tikv.Option) MockTiKVStoreOption { + return func(args *mockOptions) { + args.tikvOptions = opts + } +} + // WithClientHijacker hijacks KV client's behavior, makes it easy to simulate the network // problem between TiDB and TiKV. func WithClientHijacker(hijacker func(tikv.Client) tikv.Client) MockTiKVStoreOption { diff --git a/pkg/store/mockstore/tikv.go b/pkg/store/mockstore/tikv.go index d2cfedfe609ba..eb56eae38f0a4 100644 --- a/pkg/store/mockstore/tikv.go +++ b/pkg/store/mockstore/tikv.go @@ -32,7 +32,10 @@ func newMockTikvStore(opt *mockOptions) (kv.Storage, error) { } opt.clusterInspector(cluster) - kvstore, err := tikv.NewTestTiKVStore(newClientRedirector(client), pdClient, opt.clientHijacker, opt.pdClientHijacker, opt.txnLocalLatches) + kvstore, err := tikv.NewTestTiKVStore( + newClientRedirector(client), pdClient, + opt.clientHijacker, opt.pdClientHijacker, + opt.txnLocalLatches, opt.tikvOptions...) if err != nil { return nil, err } diff --git a/pkg/store/mockstore/unistore.go b/pkg/store/mockstore/unistore.go index d234f7cbe8893..2526eb70677dd 100644 --- a/pkg/store/mockstore/unistore.go +++ b/pkg/store/mockstore/unistore.go @@ -33,7 +33,10 @@ func newUnistore(opts *mockOptions) (kv.Storage, error) { Client: pdClient, } - kvstore, err := tikv.NewTestTiKVStore(newClientRedirector(client), pdClient, opts.clientHijacker, opts.pdClientHijacker, opts.txnLocalLatches) + kvstore, err := tikv.NewTestTiKVStore( + newClientRedirector(client), pdClient, + opts.clientHijacker, opts.pdClientHijacker, + opts.txnLocalLatches, opts.tikvOptions...) if err != nil { return nil, err } diff --git a/pkg/store/mockstore/unistore/cophandler/analyze.go b/pkg/store/mockstore/unistore/cophandler/analyze.go index 2b58c57d4ecb2..3a5a20b7a525c 100644 --- a/pkg/store/mockstore/unistore/cophandler/analyze.go +++ b/pkg/store/mockstore/unistore/cophandler/analyze.go @@ -31,6 +31,7 @@ import ( "github.com/pingcap/tidb/pkg/parser/charset" "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" + "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/statistics" "github.com/pingcap/tidb/pkg/store/mockstore/unistore/tikv/dbreader" @@ -90,11 +91,12 @@ func handleAnalyzeIndexReq(dbReader *dbreader.DBReader, rans []kv.KeyRange, anal } tz := time.FixedZone("UTC", int(analyzeReq.TimeZoneOffset)) - sctx := flagsAndTzToStatementContext(analyzeReq.Flags, tz) + sctx := flagsAndTzToSessionContext(analyzeReq.Flags, tz) + sc := sctx.GetSessionVars().StmtCtx processor := &analyzeIndexProcessor{ sctx: sctx, colLen: int(analyzeReq.IdxReq.NumColumns), - statsBuilder: statistics.NewSortedBuilder(sctx, analyzeReq.IdxReq.BucketSize, 0, types.NewFieldType(mysql.TypeBlob), int(statsVer)), + statsBuilder: statistics.NewSortedBuilder(sc, analyzeReq.IdxReq.BucketSize, 0, types.NewFieldType(mysql.TypeBlob), int(statsVer)), statsVer: statsVer, } if analyzeReq.IdxReq.TopNSize != nil { @@ -144,9 +146,11 @@ func handleAnalyzeCommonHandleReq(dbReader *dbreader.DBReader, rans []kv.KeyRang } tz := time.FixedZone("UTC", int(analyzeReq.TimeZoneOffset)) + sctx := flagsAndTzToSessionContext(analyzeReq.Flags, tz) + sc := sctx.GetSessionVars().StmtCtx processor := &analyzeCommonHandleProcessor{ colLen: int(analyzeReq.IdxReq.NumColumns), - statsBuilder: statistics.NewSortedBuilder(flagsAndTzToStatementContext(analyzeReq.Flags, tz), analyzeReq.IdxReq.BucketSize, 0, types.NewFieldType(mysql.TypeBlob), statsVer), + statsBuilder: statistics.NewSortedBuilder(sc, analyzeReq.IdxReq.BucketSize, 0, types.NewFieldType(mysql.TypeBlob), statsVer), } if analyzeReq.IdxReq.CmsketchDepth != nil && analyzeReq.IdxReq.CmsketchWidth != nil { processor.cms = statistics.NewCMSketch(*analyzeReq.IdxReq.CmsketchDepth, *analyzeReq.IdxReq.CmsketchWidth) @@ -172,7 +176,7 @@ func handleAnalyzeCommonHandleReq(dbReader *dbreader.DBReader, rans []kv.KeyRang type analyzeIndexProcessor struct { skipVal - sctx *stmtctx.StatementContext + sctx sessionctx.Context colLen int statsBuilder *statistics.SortedBuilder cms *statistics.CMSketch @@ -200,7 +204,7 @@ func (p *analyzeIndexProcessor) Process(key, _ []byte) error { } if p.fms != nil { - if err := p.fms.InsertValue(p.sctx, types.NewBytesDatum(safeCopy(p.rowBuf))); err != nil { + if err := p.fms.InsertValue(p.sctx.GetSessionVars().StmtCtx, types.NewBytesDatum(safeCopy(p.rowBuf))); err != nil { return err } } @@ -271,14 +275,14 @@ type analyzeColumnsExec struct { func buildBaseAnalyzeColumnsExec(dbReader *dbreader.DBReader, rans []kv.KeyRange, analyzeReq *tipb.AnalyzeReq, startTS uint64) (*analyzeColumnsExec, *statistics.SampleBuilder, int64, error) { tz := time.FixedZone("UTC", int(analyzeReq.TimeZoneOffset)) - sc := flagsAndTzToStatementContext(analyzeReq.Flags, tz) - evalCtx := &evalContext{sc: sc} + sctx := flagsAndTzToSessionContext(analyzeReq.Flags, tz) + evalCtx := &evalContext{sctx: sctx} columns := analyzeReq.ColReq.ColumnsInfo evalCtx.setColumnInfo(columns) if len(analyzeReq.ColReq.PrimaryColumnIds) > 0 { evalCtx.primaryCols = analyzeReq.ColReq.PrimaryColumnIds } - decoder, err := newRowDecoder(evalCtx.columnInfos, evalCtx.fieldTps, evalCtx.primaryCols, evalCtx.sc.TimeZone()) + decoder, err := newRowDecoder(evalCtx.columnInfos, evalCtx.fieldTps, evalCtx.primaryCols, sctx.GetSessionVars().StmtCtx.TimeZone()) if err != nil { return nil, nil, -1, err } @@ -324,7 +328,7 @@ func buildBaseAnalyzeColumnsExec(dbReader *dbreader.DBReader, rans []kv.KeyRange } colReq := analyzeReq.ColReq builder := statistics.SampleBuilder{ - Sc: sc, + Sc: sctx.GetSessionVars().StmtCtx, ColLen: numCols, MaxBucketSize: colReq.BucketSize, MaxFMSketchSize: colReq.SketchSize, @@ -337,7 +341,7 @@ func buildBaseAnalyzeColumnsExec(dbReader *dbreader.DBReader, rans []kv.KeyRange statsVer = int(*analyzeReq.ColReq.Version) } if pkID != -1 { - builder.PkBuilder = statistics.NewSortedBuilder(sc, builder.MaxBucketSize, pkID, types.NewFieldType(mysql.TypeBlob), statsVer) + builder.PkBuilder = statistics.NewSortedBuilder(builder.Sc, builder.MaxBucketSize, pkID, types.NewFieldType(mysql.TypeBlob), statsVer) } if colReq.CmsketchWidth != nil && colReq.CmsketchDepth != nil { builder.CMSketchWidth = *colReq.CmsketchWidth @@ -377,14 +381,15 @@ func handleAnalyzeFullSamplingReq( startTS uint64, ) (*coprocessor.Response, error) { tz := time.FixedZone("UTC", int(analyzeReq.TimeZoneOffset)) - sc := flagsAndTzToStatementContext(analyzeReq.Flags, tz) - evalCtx := &evalContext{sc: sc} + sctx := flagsAndTzToSessionContext(analyzeReq.Flags, tz) + evalCtx := &evalContext{sctx: sctx} columns := analyzeReq.ColReq.ColumnsInfo evalCtx.setColumnInfo(columns) if len(analyzeReq.ColReq.PrimaryColumnIds) > 0 { evalCtx.primaryCols = analyzeReq.ColReq.PrimaryColumnIds } - decoder, err := newRowDecoder(evalCtx.columnInfos, evalCtx.fieldTps, evalCtx.primaryCols, evalCtx.sc.TimeZone()) + loc := sctx.GetSessionVars().StmtCtx.TimeZone() + decoder, err := newRowDecoder(evalCtx.columnInfos, evalCtx.fieldTps, evalCtx.primaryCols, loc) if err != nil { return nil, err } @@ -431,7 +436,7 @@ func handleAnalyzeFullSamplingReq( colReq := analyzeReq.ColReq /* #nosec G404 */ builder := &statistics.RowSampleBuilder{ - Sc: sc, + Sc: sctx.GetSessionVars().StmtCtx, RecordSet: e, ColsFieldType: fts, Collators: collators, @@ -488,6 +493,7 @@ func (e *analyzeColumnsExec) Process(key, value []byte) error { return errors.Trace(err) } row := e.chk.GetRow(0) + sc := e.evalCtx.sctx.GetSessionVars().StmtCtx for i, tp := range e.evalCtx.fieldTps { d := row.GetDatum(i, tp) if d.IsNull() { @@ -495,7 +501,8 @@ func (e *analyzeColumnsExec) Process(key, value []byte) error { continue } - value, err := tablecodec.EncodeValue(e.evalCtx.sc, nil, d) + value, err := tablecodec.EncodeValue(sc.TimeZone(), nil, d) + err = sc.HandleError(err) if err != nil { return err } @@ -532,12 +539,13 @@ func handleAnalyzeMixedReq(dbReader *dbreader.DBReader, rans []kv.KeyRange, anal return nil, err } tz := time.FixedZone("UTC", int(analyzeReq.TimeZoneOffset)) - sctx := flagsAndTzToStatementContext(analyzeReq.Flags, tz) + sctx := flagsAndTzToSessionContext(analyzeReq.Flags, tz) + sc := sctx.GetSessionVars().StmtCtx e := &analyzeMixedExec{ - sctx: sctx, + sctx: sctx.GetSessionVars().StmtCtx, analyzeColumnsExec: *colExec, colLen: int(analyzeReq.IdxReq.NumColumns), - statsBuilder: statistics.NewSortedBuilder(sctx, analyzeReq.IdxReq.BucketSize, 0, types.NewFieldType(mysql.TypeBlob), int(statsVer)), + statsBuilder: statistics.NewSortedBuilder(sc, analyzeReq.IdxReq.BucketSize, 0, types.NewFieldType(mysql.TypeBlob), int(statsVer)), statsVer: statsVer, } builder.RecordSet = e diff --git a/pkg/store/mockstore/unistore/cophandler/closure_exec.go b/pkg/store/mockstore/unistore/cophandler/closure_exec.go index 577adb3ffb486..5ada71863f9f0 100644 --- a/pkg/store/mockstore/unistore/cophandler/closure_exec.go +++ b/pkg/store/mockstore/unistore/cophandler/closure_exec.go @@ -30,7 +30,6 @@ import ( "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/parser/terror" "github.com/pingcap/tidb/pkg/sessionctx" - "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/store/mockstore/unistore/lockstore" "github.com/pingcap/tidb/pkg/store/mockstore/unistore/tikv/dbreader" "github.com/pingcap/tidb/pkg/store/mockstore/unistore/tikv/mvcc" @@ -38,7 +37,6 @@ import ( "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/chunk" "github.com/pingcap/tidb/pkg/util/codec" - mockpkg "github.com/pingcap/tidb/pkg/util/mock" "github.com/pingcap/tidb/pkg/util/rowcodec" "github.com/pingcap/tidb/pkg/util/timeutil" "github.com/pingcap/tipb/go-tipb" @@ -132,7 +130,7 @@ func buildClosureExecutorFromExecutorList(dagCtx *dagContext, executors []*tipb. } var err error if secondExec := executors[1]; secondExec.Tp == tipb.ExecType_TypeSelection { - ce.selectionCtx.conditions, err = convertToExprs(ce.sc, ce.fieldTps, secondExec.Selection.Conditions) + ce.selectionCtx.conditions, err = convertToExprs(ce.sctx, ce.fieldTps, secondExec.Selection.Conditions) if err != nil { return errors.Trace(err) } @@ -185,10 +183,10 @@ func buildClosureExecutor(dagCtx *dagContext, dagReq *tipb.DAGRequest) (*closure return ce, nil } -func convertToExprs(sc *stmtctx.StatementContext, fieldTps []*types.FieldType, pbExprs []*tipb.Expr) ([]expression.Expression, error) { +func convertToExprs(sctx sessionctx.Context, fieldTps []*types.FieldType, pbExprs []*tipb.Expr) ([]expression.Expression, error) { exprs := make([]expression.Expression, 0, len(pbExprs)) for _, expr := range pbExprs { - e, err := expression.PBToExpr(expr, fieldTps, sc) + e, err := expression.PBToExpr(sctx, expr, fieldTps) if err != nil { return nil, errors.Trace(err) } @@ -243,9 +241,6 @@ func newClosureExecutor(dagCtx *dagContext, outputOffsets []uint32, scanExec *ti startTS: dagCtx.startTS, limit: math.MaxInt64, } - seCtx := mockpkg.NewContext() - seCtx.GetSessionVars().StmtCtx = e.sc - e.seCtx = seCtx switch scanExec.Tp { case tipb.ExecType_TypeTableScan: dagCtx.setColumnInfo(scanExec.TblScan.Columns) @@ -286,7 +281,7 @@ func newClosureExecutor(dagCtx *dagContext, outputOffsets []uint32, scanExec *ti e.kvRanges = ranges e.scanCtx.chk = chunk.NewChunkWithCapacity(e.fieldTps, 32) if e.scanType == TableScan { - e.scanCtx.decoder, err = newRowDecoder(e.evalContext.columnInfos, e.evalContext.fieldTps, e.evalContext.primaryCols, e.evalContext.sc.TimeZone()) + e.scanCtx.decoder, err = newRowDecoder(e.evalContext.columnInfos, e.evalContext.fieldTps, e.evalContext.primaryCols, e.evalContext.sctx.GetSessionVars().StmtCtx.TimeZone()) if err != nil { return nil, errors.Trace(err) } @@ -479,7 +474,6 @@ type closureExecutor struct { *dagContext outputOff []uint32 resultFieldType []*types.FieldType - seCtx sessionctx.Context kvRanges []kv.KeyRange startTS uint64 ignoreLock bool @@ -675,7 +669,9 @@ func (e *countStarProcessor) Finish() error { // countFinish is used for `count(*)`. func (e *closureExecutor) countFinish() error { d := types.NewIntDatum(int64(e.rowCount)) - rowData, err := codec.EncodeValue(e.sc, nil, d) + sc := e.evalContext.sctx.GetSessionVars().StmtCtx + rowData, err := codec.EncodeValue(sc.TimeZone(), nil, d) + err = sc.HandleError(err) if err != nil { return errors.Trace(err) } @@ -790,8 +786,8 @@ func (e *closureExecutor) processSelection(needCollectDetail bool) (gotRow bool, row := chk.GetRow(chk.NumRows() - 1) gotRow = true for _, expr := range e.selectionCtx.conditions { - wc := e.sc.WarningCount() - d, err := expr.Eval(row) + wc := e.sctx.GetSessionVars().StmtCtx.WarningCount() + d, err := expr.Eval(e.sctx, row) if err != nil { return false, errors.Trace(err) } @@ -799,21 +795,22 @@ func (e *closureExecutor) processSelection(needCollectDetail bool) (gotRow bool, if d.IsNull() { gotRow = false } else { - isTrue, err := d.ToBool(e.sc.TypeCtx()) - isTrue, err = expression.HandleOverflowOnSelection(e.sc, isTrue, err) + isTrue, err := d.ToBool(e.sctx.GetSessionVars().StmtCtx.TypeCtx()) + isTrue, err = expression.HandleOverflowOnSelection(e.sctx.GetSessionVars().StmtCtx, isTrue, err) if err != nil { return false, errors.Trace(err) } gotRow = isTrue != 0 } if !gotRow { - if e.sc.WarningCount() > wc { + sc := e.sctx.GetSessionVars().StmtCtx + if sc.WarningCount() > wc { // Deep-copy error object here, because the data it referenced is going to be truncated. - warns := e.sc.TruncateWarnings(int(wc)) + warns := sc.TruncateWarnings(int(wc)) for i, warn := range warns { warns[i].Err = e.copyError(warn.Err) } - e.sc.AppendWarnings(warns) + sc.AppendWarnings(warns) } chk.TruncateTo(chk.NumRows() - 1) break @@ -925,7 +922,7 @@ func (e *closureExecutor) indexScanProcessCore(key, value []byte) error { } } chk := e.scanCtx.chk - decoder := codec.NewDecoder(chk, e.sc.TimeZone()) + decoder := codec.NewDecoder(chk, e.sctx.GetSessionVars().StmtCtx.TimeZone()) for i, colVal := range values { if i < len(e.fieldTps) { _, err = decoder.DecodeOne(colVal, i, e.fieldTps[i]) @@ -946,6 +943,8 @@ func (e *closureExecutor) indexScanProcessCore(key, value []byte) error { func (e *closureExecutor) chunkToOldChunk(chk *chunk.Chunk) error { var oldRow []types.Datum + sc := e.sctx.GetSessionVars().StmtCtx + errCtx := sc.ErrCtx() for i := 0; i < chk.NumRows(); i++ { oldRow = oldRow[:0] if e.outputOff != nil { @@ -960,7 +959,8 @@ func (e *closureExecutor) chunkToOldChunk(chk *chunk.Chunk) error { } } var err error - e.oldRowBuf, err = codec.EncodeValue(e.sc, e.oldRowBuf[:0], oldRow...) + e.oldRowBuf, err = codec.EncodeValue(sc.TimeZone(), e.oldRowBuf[:0], oldRow...) + err = errCtx.HandleError(err) if err != nil { return errors.Trace(err) } @@ -1027,7 +1027,7 @@ func (e *topNProcessor) Process(key, value []byte) (err error) { ctx := e.topNCtx row := e.scanCtx.chk.GetRow(0) for i, expr := range ctx.orderByExprs { - d, err := expr.Eval(row) + d, err := expr.Eval(e.sctx, row) if err != nil { return errors.Trace(err) } @@ -1107,7 +1107,7 @@ func (e *hashAggProcessor) Process(key, value []byte) (err error) { // Update aggregate expressions. aggCtxs := e.getContexts(gk) for i, agg := range e.aggExprs { - err = agg.Update(aggCtxs[i], e.sc, row) + err = agg.Update(aggCtxs[i], e.sctx.GetSessionVars().StmtCtx, row) if err != nil { return errors.Trace(err) } @@ -1122,12 +1122,15 @@ func (e *hashAggProcessor) getGroupKey(row chunk.Row) ([]byte, error) { return nil, nil } key := make([]byte, 0, 32) + sc := e.sctx.GetSessionVars().StmtCtx + errCtx := sc.ErrCtx() for _, item := range e.groupByExprs { - v, err := item.Eval(row) + v, err := item.Eval(e.sctx, row) if err != nil { return nil, errors.Trace(err) } - b, err := codec.EncodeValue(e.sc, nil, v) + b, err := codec.EncodeValue(sc.TimeZone(), nil, v) + err = errCtx.HandleError(err) if err != nil { return nil, errors.Trace(err) } @@ -1141,7 +1144,7 @@ func (e *hashAggProcessor) getContexts(groupKey []byte) []*aggregation.AggEvalua if !ok { aggCtxs = make([]*aggregation.AggEvaluateContext, 0, len(e.aggExprs)) for _, agg := range e.aggExprs { - aggCtxs = append(aggCtxs, agg.CreateContext(e.sc)) + aggCtxs = append(aggCtxs, agg.CreateContext(e.sctx)) } e.aggCtxsMap[string(groupKey)] = aggCtxs } @@ -1149,13 +1152,16 @@ func (e *hashAggProcessor) getContexts(groupKey []byte) []*aggregation.AggEvalua } func (e *hashAggProcessor) Finish() error { + tc := e.sctx.GetSessionVars().StmtCtx + errCtx := tc.ErrCtx() for i, gk := range e.groupKeys { aggCtxs := e.getContexts(gk) e.oldRowBuf = e.oldRowBuf[:0] for i, agg := range e.aggExprs { partialResults := agg.GetPartialResult(aggCtxs[i]) var err error - e.oldRowBuf, err = codec.EncodeValue(e.sc, e.oldRowBuf, partialResults...) + e.oldRowBuf, err = codec.EncodeValue(tc.TimeZone(), e.oldRowBuf, partialResults...) + err = errCtx.HandleError(err) if err != nil { return err } diff --git a/pkg/store/mockstore/unistore/cophandler/cop_handler.go b/pkg/store/mockstore/unistore/cophandler/cop_handler.go index c4e4c3bb3c766..67d707f7b6c4a 100644 --- a/pkg/store/mockstore/unistore/cophandler/cop_handler.go +++ b/pkg/store/mockstore/unistore/cophandler/cop_handler.go @@ -33,6 +33,7 @@ import ( "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/parser/terror" + "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/store/mockstore/unistore/client" "github.com/pingcap/tidb/pkg/store/mockstore/unistore/lockstore" @@ -42,6 +43,7 @@ import ( "github.com/pingcap/tidb/pkg/util/chunk" "github.com/pingcap/tidb/pkg/util/codec" "github.com/pingcap/tidb/pkg/util/collate" + "github.com/pingcap/tidb/pkg/util/mock" "github.com/pingcap/tidb/pkg/util/rowcodec" "github.com/pingcap/tipb/go-tipb" ) @@ -143,15 +145,16 @@ func handleCopDAGRequest(dbReader *dbreader.DBReader, lockStore *lockstore.MemSt exec, chunks, lastRange, counts, ndvs, err := buildAndRunMPPExecutor(dagCtx, dagReq, req.PagingSize) + sc := dagCtx.sctx.GetSessionVars().StmtCtx if err != nil { errMsg := err.Error() if strings.HasPrefix(errMsg, ErrExecutorNotSupportedMsg) { resp.OtherError = err.Error() return resp } - return genRespWithMPPExec(nil, lastRange, nil, nil, exec, dagReq, err, dagCtx.sc.GetWarnings(), time.Since(startTime)) + return genRespWithMPPExec(nil, lastRange, nil, nil, exec, dagReq, err, sc.GetWarnings(), time.Since(startTime)) } - return genRespWithMPPExec(chunks, lastRange, counts, ndvs, exec, dagReq, err, dagCtx.sc.GetWarnings(), time.Since(startTime)) + return genRespWithMPPExec(chunks, lastRange, counts, ndvs, exec, dagReq, err, sc.GetWarnings(), time.Since(startTime)) } func buildAndRunMPPExecutor(dagCtx *dagContext, dagReq *tipb.DAGRequest, pagingSize uint64) (mppExec, []tipb.Chunk, *coprocessor.KeyRange, []int64, []int64, error) { @@ -167,7 +170,7 @@ func buildAndRunMPPExecutor(dagCtx *dagContext, dagReq *tipb.DAGRequest, pagingS ndvs = make([]int64, len(dagCtx.keyRanges)) } builder := &mppExecBuilder{ - sc: dagCtx.sc, + sctx: dagCtx.sctx, dbReader: dagCtx.dbReader, dagReq: dagReq, dagCtx: dagCtx, @@ -240,6 +243,8 @@ func useDefaultEncoding(chk *chunk.Chunk, dagCtx *dagContext, dagReq *tipb.DAGRe var datums []types.Datum var err error numRows := chk.NumRows() + sc := dagCtx.sctx.GetSessionVars().StmtCtx + errCtx := sc.ErrCtx() for i := 0; i < numRows; i++ { datums = datums[:0] if dagReq.OutputOffsets != nil { @@ -251,7 +256,8 @@ func useDefaultEncoding(chk *chunk.Chunk, dagCtx *dagContext, dagReq *tipb.DAGRe datums = append(datums, chk.GetRow(i).GetDatum(j, ft)) } } - buf, err = codec.EncodeValue(dagCtx.sc, buf[:0], datums...) + buf, err = codec.EncodeValue(sc.TimeZone(), buf[:0], datums...) + err = errCtx.HandleError(err) if err != nil { return nil, errors.Trace(err) } @@ -306,9 +312,9 @@ func buildDAG(reader *dbreader.DBReader, lockStore *lockstore.MemStore, req *cop return nil, nil, errors.Trace(err) } } - sc := flagsAndTzToStatementContext(dagReq.Flags, tz) + sctx := flagsAndTzToSessionContext(dagReq.Flags, tz) ctx := &dagContext{ - evalContext: &evalContext{sc: sc}, + evalContext: &evalContext{sctx: sctx}, dbReader: reader, lockStore: lockStore, dagReq: dagReq, @@ -325,13 +331,13 @@ func getAggInfo(ctx *dagContext, pbAgg *tipb.Aggregation) ([]aggregation.Aggrega var err error for _, expr := range pbAgg.AggFunc { var aggExpr aggregation.Aggregation - aggExpr, err = aggregation.NewDistAggFunc(expr, ctx.fieldTps, ctx.sc) + aggExpr, err = aggregation.NewDistAggFunc(expr, ctx.fieldTps, ctx.sctx) if err != nil { return nil, nil, errors.Trace(err) } aggs = append(aggs, aggExpr) } - groupBys, err := convertToExprs(ctx.sc, ctx.fieldTps, pbAgg.GetGroupBy()) + groupBys, err := convertToExprs(ctx.sctx, ctx.fieldTps, pbAgg.GetGroupBy()) if err != nil { return nil, nil, errors.Trace(err) } @@ -348,10 +354,10 @@ func getTopNInfo(ctx *evalContext, topN *tipb.TopN) (heap *topNHeap, conds []exp totalCount: int(topN.Limit), topNSorter: topNSorter{ orderByItems: topN.OrderBy, - sc: ctx.sc, + sc: ctx.sctx.GetSessionVars().StmtCtx, }, } - if conds, err = convertToExprs(ctx.sc, ctx.fieldTps, pbConds); err != nil { + if conds, err = convertToExprs(ctx.sctx, ctx.fieldTps, pbConds); err != nil { return nil, nil, errors.Trace(err) } @@ -362,7 +368,7 @@ type evalContext struct { columnInfos []*tipb.ColumnInfo fieldTps []*types.FieldType primaryCols []int64 - sc *stmtctx.StatementContext + sctx sessionctx.Context } func (e *evalContext) setColumnInfo(cols []*tipb.ColumnInfo) { @@ -421,11 +427,13 @@ func newRowDecoder(columnInfos []*tipb.ColumnInfo, fieldTps []*types.FieldType, return rowcodec.NewChunkDecoder(cols, pkCols, def, timeZone), nil } -// flagsAndTzToStatementContext creates a StatementContext from a `tipb.SelectRequest.Flags`. -func flagsAndTzToStatementContext(flags uint64, tz *time.Location) *stmtctx.StatementContext { +// flagsAndTzToSessionContext creates a sessionctx.Context from a `tipb.SelectRequest.Flags`. +func flagsAndTzToSessionContext(flags uint64, tz *time.Location) sessionctx.Context { sc := stmtctx.NewStmtCtx() sc.InitFromPBFlagAndTz(flags, tz) - return sc + sctx := mock.NewContext() + sctx.GetSessionVars().StmtCtx = sc + return sctx } // ErrLocked is returned when trying to Read/Write on a locked key. Client should diff --git a/pkg/store/mockstore/unistore/cophandler/cop_handler_test.go b/pkg/store/mockstore/unistore/cophandler/cop_handler_test.go index 87aea1bd48dd6..1fc00fef1e18e 100644 --- a/pkg/store/mockstore/unistore/cophandler/cop_handler_test.go +++ b/pkg/store/mockstore/unistore/cophandler/cop_handler_test.go @@ -118,7 +118,7 @@ func prepareTestTableData(keyNumber int, tableID int64) (*data, error) { for i := 0; i < keyNumber; i++ { datum := types.MakeDatums(i, "abc", 10.0) rows[int64(i)] = datum - rowEncodedData, err := tablecodec.EncodeRow(stmtCtx, datum, colIds, nil, nil, encoder) + rowEncodedData, err := tablecodec.EncodeRow(stmtCtx.TimeZone(), datum, colIds, nil, nil, encoder) if err != nil { return nil, err } @@ -181,10 +181,10 @@ func isPrefixNext(key []byte, expected []byte) bool { func newDagContext(t require.TestingT, store *testStore, keyRanges []kv.KeyRange, dagReq *tipb.DAGRequest, startTs uint64) *dagContext { tz, err := timeutil.ConstructTimeZone(dagReq.TimeZoneName, int(dagReq.TimeZoneOffset)) require.NoError(t, err) - sc := flagsAndTzToStatementContext(dagReq.Flags, tz) + sctx := flagsAndTzToSessionContext(dagReq.Flags, tz) txn := store.db.NewTransaction(false) dagCtx := &dagContext{ - evalContext: &evalContext{sc: sc}, + evalContext: &evalContext{sctx: sctx}, dbReader: dbreader.NewDBReader(nil, []byte{255}, txn), lockStore: store.locks, dagReq: dagReq, diff --git a/pkg/store/mockstore/unistore/cophandler/mpp.go b/pkg/store/mockstore/unistore/cophandler/mpp.go index 876301ad53972..92f5507c3484e 100644 --- a/pkg/store/mockstore/unistore/cophandler/mpp.go +++ b/pkg/store/mockstore/unistore/cophandler/mpp.go @@ -27,7 +27,7 @@ import ( "github.com/pingcap/tidb/pkg/expression/aggregation" "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" - "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" + "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/store/mockstore/unistore/client" "github.com/pingcap/tidb/pkg/store/mockstore/unistore/tikv/dbreader" "github.com/pingcap/tidb/pkg/tablecodec" @@ -54,7 +54,7 @@ const ( ) type mppExecBuilder struct { - sc *stmtctx.StatementContext + sctx sessionctx.Context dbReader *dbreader.DBReader mppCtx *MPPCtx dagReq *tipb.DAGRequest @@ -71,7 +71,7 @@ func (b *mppExecBuilder) buildMPPTableScan(pb *tipb.TableScan) (*tableScanExec, return nil, errors.Trace(err) } ts := &tableScanExec{ - baseMPPExec: baseMPPExec{sc: b.sc, mppCtx: b.mppCtx}, + baseMPPExec: baseMPPExec{sctx: b.sctx, mppCtx: b.mppCtx}, startTS: b.dagCtx.startTS, kvRanges: ranges, dbReader: b.dbReader, @@ -92,7 +92,7 @@ func (b *mppExecBuilder) buildMPPTableScan(pb *tipb.TableScan) (*tableScanExec, ft := fieldTypeFromPBColumn(col) ts.fieldTypes = append(ts.fieldTypes, ft) } - ts.decoder, err = newRowDecoder(pb.Columns, ts.fieldTypes, pb.PrimaryColumnIds, b.sc.TimeZone()) + ts.decoder, err = newRowDecoder(pb.Columns, ts.fieldTypes, pb.PrimaryColumnIds, b.sctx.GetSessionVars().StmtCtx.TimeZone()) return ts, err } @@ -102,7 +102,7 @@ func (b *mppExecBuilder) buildMPPPartitionTableScan(pb *tipb.PartitionTableScan) return nil, errors.Trace(err) } ts := &tableScanExec{ - baseMPPExec: baseMPPExec{sc: b.sc, mppCtx: b.mppCtx}, + baseMPPExec: baseMPPExec{sctx: b.sctx, mppCtx: b.mppCtx}, startTS: b.dagCtx.startTS, kvRanges: ranges, dbReader: b.dbReader, @@ -115,7 +115,7 @@ func (b *mppExecBuilder) buildMPPPartitionTableScan(pb *tipb.PartitionTableScan) ft := fieldTypeFromPBColumn(col) ts.fieldTypes = append(ts.fieldTypes, ft) } - ts.decoder, err = newRowDecoder(pb.Columns, ts.fieldTypes, pb.PrimaryColumnIds, b.sc.TimeZone()) + ts.decoder, err = newRowDecoder(pb.Columns, ts.fieldTypes, pb.PrimaryColumnIds, b.sctx.GetSessionVars().StmtCtx.TimeZone()) return ts, err } @@ -172,7 +172,7 @@ func (b *mppExecBuilder) buildIdxScan(pb *tipb.IndexScan) (*indexScanExec, error prevVals = make([][]byte, numIdxCols) } idxScan := &indexScanExec{ - baseMPPExec: baseMPPExec{sc: b.sc, fieldTypes: fieldTypes}, + baseMPPExec: baseMPPExec{sctx: b.sctx, fieldTypes: fieldTypes}, startTS: b.dagCtx.startTS, kvRanges: ranges, dbReader: b.dbReader, @@ -197,7 +197,7 @@ func (b *mppExecBuilder) buildLimit(pb *tipb.Limit) (*limitExec, error) { return nil, err } exec := &limitExec{ - baseMPPExec: baseMPPExec{sc: b.sc, mppCtx: b.mppCtx, fieldTypes: child.getFieldTypes(), children: []mppExec{child}}, + baseMPPExec: baseMPPExec{sctx: b.sctx, mppCtx: b.mppCtx, fieldTypes: child.getFieldTypes(), children: []mppExec{child}}, limit: pb.GetLimit(), } return exec, nil @@ -209,7 +209,7 @@ func (b *mppExecBuilder) buildExpand(pb *tipb.Expand) (mppExec, error) { return nil, err } exec := &expandExec{ - baseMPPExec: baseMPPExec{sc: b.sc, mppCtx: b.mppCtx, children: []mppExec{child}}, + baseMPPExec: baseMPPExec{sctx: b.sctx, mppCtx: b.mppCtx, children: []mppExec{child}}, } childFieldTypes := child.getFieldTypes() @@ -218,7 +218,7 @@ func (b *mppExecBuilder) buildExpand(pb *tipb.Expand) (mppExec, error) { for _, gs := range pb.GroupingSets { tidbGs := expression.GroupingSet{} for _, groupingExprs := range gs.GroupingExprs { - tidbGroupingExprs, err := convertToExprs(b.sc, childFieldTypes, groupingExprs.GroupingExpr) + tidbGroupingExprs, err := convertToExprs(b.sctx, childFieldTypes, groupingExprs.GroupingExpr) if err != nil { return nil, err } @@ -273,16 +273,16 @@ func (b *mppExecBuilder) buildTopN(pb *tipb.TopN) (mppExec, error) { totalCount: int(pb.Limit), topNSorter: topNSorter{ orderByItems: pb.OrderBy, - sc: b.sc, + sc: b.sctx.GetSessionVars().StmtCtx, }, } fieldTps := child.getFieldTypes() var conds []expression.Expression - if conds, err = convertToExprs(b.sc, fieldTps, pbConds); err != nil { + if conds, err = convertToExprs(b.sctx, fieldTps, pbConds); err != nil { return nil, errors.Trace(err) } exec := &topNExec{ - baseMPPExec: baseMPPExec{sc: b.sc, mppCtx: b.mppCtx, fieldTypes: fieldTps, children: []mppExec{child}}, + baseMPPExec: baseMPPExec{sctx: b.sctx, mppCtx: b.mppCtx, fieldTypes: fieldTps, children: []mppExec{child}}, heap: heap, conds: conds, row: newTopNSortRow(len(conds)), @@ -305,7 +305,7 @@ func (b *mppExecBuilder) buildMPPExchangeSender(pb *tipb.ExchangeSender) (*exchS e := &exchSenderExec{ baseMPPExec: baseMPPExec{ - sc: b.sc, + sctx: b.sctx, mppCtx: b.mppCtx, children: []mppExec{child}, fieldTypes: child.getFieldTypes(), @@ -315,7 +315,7 @@ func (b *mppExecBuilder) buildMPPExchangeSender(pb *tipb.ExchangeSender) (*exchS if pb.Tp == tipb.ExchangeType_Hash { // remove the limitation of len(pb.PartitionKeys) == 1 for _, partitionKey := range pb.PartitionKeys { - expr, err := expression.PBToExpr(partitionKey, child.getFieldTypes(), b.sc) + expr, err := expression.PBToExpr(b.sctx, partitionKey, child.getFieldTypes()) if err != nil { return nil, errors.Trace(err) } @@ -354,7 +354,7 @@ func (b *mppExecBuilder) buildMPPExchangeSender(pb *tipb.ExchangeSender) (*exchS func (b *mppExecBuilder) buildMPPExchangeReceiver(pb *tipb.ExchangeReceiver) (*exchRecvExec, error) { e := &exchRecvExec{ baseMPPExec: baseMPPExec{ - sc: b.sc, + sctx: b.sctx, mppCtx: b.mppCtx, }, exchangeReceiver: pb, @@ -373,7 +373,7 @@ func (b *mppExecBuilder) buildMPPExchangeReceiver(pb *tipb.ExchangeReceiver) (*e func (b *mppExecBuilder) buildMPPJoin(pb *tipb.Join, children []*tipb.Executor) (*joinExec, error) { e := &joinExec{ baseMPPExec: baseMPPExec{ - sc: b.sc, + sctx: b.sctx, mppCtx: b.mppCtx, }, Join: pb, @@ -412,12 +412,12 @@ func (b *mppExecBuilder) buildMPPJoin(pb *tipb.Join, children []*tipb.Executor) if pb.InnerIdx == 1 { e.probeChild = leftCh e.buildChild = rightCh - probeExpr, err := expression.PBToExpr(pb.LeftJoinKeys[0], leftCh.getFieldTypes(), b.sc) + probeExpr, err := expression.PBToExpr(b.sctx, pb.LeftJoinKeys[0], leftCh.getFieldTypes()) if err != nil { return nil, errors.Trace(err) } e.probeKey = probeExpr.(*expression.Column) - buildExpr, err := expression.PBToExpr(pb.RightJoinKeys[0], rightCh.getFieldTypes(), b.sc) + buildExpr, err := expression.PBToExpr(b.sctx, pb.RightJoinKeys[0], rightCh.getFieldTypes()) if err != nil { return nil, errors.Trace(err) } @@ -425,12 +425,12 @@ func (b *mppExecBuilder) buildMPPJoin(pb *tipb.Join, children []*tipb.Executor) } else { e.probeChild = rightCh e.buildChild = leftCh - buildExpr, err := expression.PBToExpr(pb.LeftJoinKeys[0], leftCh.getFieldTypes(), b.sc) + buildExpr, err := expression.PBToExpr(b.sctx, pb.LeftJoinKeys[0], leftCh.getFieldTypes()) if err != nil { return nil, errors.Trace(err) } e.buildKey = buildExpr.(*expression.Column) - probeExpr, err := expression.PBToExpr(pb.RightJoinKeys[0], rightCh.getFieldTypes(), b.sc) + probeExpr, err := expression.PBToExpr(b.sctx, pb.RightJoinKeys[0], rightCh.getFieldTypes()) if err != nil { return nil, errors.Trace(err) } @@ -445,7 +445,12 @@ func (b *mppExecBuilder) buildMPPJoin(pb *tipb.Join, children []*tipb.Executor) } func (b *mppExecBuilder) buildMPPProj(proj *tipb.Projection) (*projExec, error) { - e := &projExec{} + e := &projExec{ + baseMPPExec: baseMPPExec{ + sctx: b.sctx, + mppCtx: b.mppCtx, + }, + } chExec, err := b.buildMPPExecutor(proj.Child) if err != nil { @@ -454,7 +459,7 @@ func (b *mppExecBuilder) buildMPPProj(proj *tipb.Projection) (*projExec, error) e.children = []mppExec{chExec} for _, pbExpr := range proj.Exprs { - expr, err := expression.PBToExpr(pbExpr, chExec.getFieldTypes(), b.sc) + expr, err := expression.PBToExpr(b.sctx, pbExpr, chExec.getFieldTypes()) if err != nil { return nil, errors.Trace(err) } @@ -472,14 +477,14 @@ func (b *mppExecBuilder) buildMPPSel(sel *tipb.Selection) (*selExec, error) { e := &selExec{ baseMPPExec: baseMPPExec{ fieldTypes: chExec.getFieldTypes(), - sc: b.sc, + sctx: b.sctx, mppCtx: b.mppCtx, children: []mppExec{chExec}, }, } for _, pbExpr := range sel.Conditions { - expr, err := expression.PBToExpr(pbExpr, chExec.getFieldTypes(), b.sc) + expr, err := expression.PBToExpr(b.sctx, pbExpr, chExec.getFieldTypes()) if err != nil { return nil, errors.Trace(err) } @@ -490,6 +495,10 @@ func (b *mppExecBuilder) buildMPPSel(sel *tipb.Selection) (*selExec, error) { func (b *mppExecBuilder) buildMPPAgg(agg *tipb.Aggregation) (*aggExec, error) { e := &aggExec{ + baseMPPExec: baseMPPExec{ + sctx: b.sctx, + mppCtx: b.mppCtx, + }, groups: make(map[string]struct{}), aggCtxsMap: make(map[string][]*aggregation.AggEvaluateContext), processed: false, @@ -503,19 +512,19 @@ func (b *mppExecBuilder) buildMPPAgg(agg *tipb.Aggregation) (*aggExec, error) { for _, aggFunc := range agg.AggFunc { ft := expression.PbTypeToFieldType(aggFunc.FieldType) e.fieldTypes = append(e.fieldTypes, ft) - aggExpr, err := aggregation.NewDistAggFunc(aggFunc, chExec.getFieldTypes(), b.sc) + aggExpr, err := aggregation.NewDistAggFunc(aggFunc, chExec.getFieldTypes(), b.sctx) if err != nil { return nil, errors.Trace(err) } e.aggExprs = append(e.aggExprs, aggExpr) } - e.sc = b.sc + e.sctx = b.sctx for _, gby := range agg.GroupBy { ft := expression.PbTypeToFieldType(gby.FieldType) e.fieldTypes = append(e.fieldTypes, ft) e.groupByTypes = append(e.groupByTypes, ft) - gbyExpr, err := expression.PBToExpr(gby, chExec.getFieldTypes(), b.sc) + gbyExpr, err := expression.PBToExpr(b.sctx, gby, chExec.getFieldTypes()) if err != nil { return nil, errors.Trace(err) } @@ -578,7 +587,7 @@ func HandleMPPDAGReq(dbReader *dbreader.DBReader, req *coprocessor.Request, mppC builder := mppExecBuilder{ dbReader: dbReader, mppCtx: mppCtx, - sc: flagsAndTzToStatementContext(dagReq.Flags, tz), + sctx: flagsAndTzToSessionContext(dagReq.Flags, tz), dagReq: dagReq, dagCtx: dagCtx, } diff --git a/pkg/store/mockstore/unistore/cophandler/mpp_exec.go b/pkg/store/mockstore/unistore/cophandler/mpp_exec.go index 4ab16a8bb1dbd..622fdf582be61 100644 --- a/pkg/store/mockstore/unistore/cophandler/mpp_exec.go +++ b/pkg/store/mockstore/unistore/cophandler/mpp_exec.go @@ -32,7 +32,7 @@ import ( "github.com/pingcap/tidb/pkg/expression/aggregation" "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/parser/mysql" - "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" + "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/store/mockstore/unistore/lockstore" "github.com/pingcap/tidb/pkg/store/mockstore/unistore/tikv/dbreader" "github.com/pingcap/tidb/pkg/tablecodec" @@ -61,7 +61,7 @@ type mppExec interface { } type baseMPPExec struct { - sc *stmtctx.StatementContext + sctx sessionctx.Context mppCtx *MPPCtx @@ -304,7 +304,7 @@ func (e *indexScanExec) Process(key, value []byte) error { e.prevVals[i] = append(e.prevVals[i][:0], values[i]...) } } - decoder := codec.NewDecoder(e.chk, e.sc.TimeZone()) + decoder := codec.NewDecoder(e.chk, e.sctx.GetSessionVars().StmtCtx.TimeZone()) for i, value := range values { if i < len(e.fieldTypes) { _, err = decoder.DecodeOne(value, i, e.fieldTypes[i]) @@ -559,7 +559,7 @@ func (e *topNExec) open() error { for i := 0; i < numRows; i++ { row := chk.GetRow(i) for j, cond := range e.conds { - d, err := cond.Eval(row) + d, err := cond.Eval(e.sctx, row) if err != nil { return err } @@ -611,6 +611,7 @@ func (e *exchSenderExec) open() error { func (e *exchSenderExec) toTiPBChunk(chk *chunk.Chunk) ([]tipb.Chunk, error) { var oldRow []types.Datum oldChunks := make([]tipb.Chunk, 0) + sc := e.sctx.GetSessionVars().StmtCtx for i := 0; i < chk.NumRows(); i++ { oldRow = oldRow[:0] for _, outputOff := range e.outputOffsets { @@ -619,7 +620,8 @@ func (e *exchSenderExec) toTiPBChunk(chk *chunk.Chunk) ([]tipb.Chunk, error) { } var err error var oldRowBuf []byte - oldRowBuf, err = codec.EncodeValue(e.sc, oldRowBuf[:0], oldRow...) + oldRowBuf, err = codec.EncodeValue(sc.TimeZone(), oldRowBuf[:0], oldRow...) + err = sc.HandleError(err) if err != nil { return nil, errors.Trace(err) } @@ -640,6 +642,8 @@ func (e *exchSenderExec) next() (*chunk.Chunk, error) { panic(err) } }() + + sc := e.sctx.GetSessionVars().StmtCtx for { chk, err := e.children[0].next() if err != nil { @@ -663,7 +667,7 @@ func (e *exchSenderExec) next() (*chunk.Chunk, error) { hashVals.Reset() // use hash values to get unique uint64 to mod. // collect all the hash key datum. - err := codec.HashChunkRow(e.sc, hashVals, row, e.hashKeyTypes, e.hashKeyOffsets, payload) + err := codec.HashChunkRow(sc.TypeCtx(), hashVals, row, e.hashKeyTypes, e.hashKeyOffsets, payload) if err != nil { for _, tunnel := range e.tunnels { tunnel.ErrCh <- err @@ -850,7 +854,7 @@ type joinExec struct { } func (e *joinExec) getHashKey(keyCol types.Datum) (str string, err error) { - keyCol, err = keyCol.ConvertTo(e.sc.TypeCtx(), e.comKeyTp) + keyCol, err = keyCol.ConvertTo(e.sctx.GetSessionVars().StmtCtx.TypeCtx(), e.comKeyTp) if err != nil { return str, errors.Trace(err) } @@ -1006,13 +1010,15 @@ func (e *aggExec) getGroupKey(row chunk.Row) (*chunk.MutRow, []byte, error) { } key := make([]byte, 0, DefaultBatchSize) gbyRow := chunk.MutRowFromTypes(e.groupByTypes) + sc := e.sctx.GetSessionVars().StmtCtx for i, item := range e.groupByExprs { - v, err := item.Eval(row) + v, err := item.Eval(e.sctx, row) if err != nil { return nil, nil, errors.Trace(err) } gbyRow.SetDatum(i, v) - b, err := codec.EncodeValue(e.sc, nil, v) + b, err := codec.EncodeValue(sc.TimeZone(), nil, v) + err = sc.HandleError(err) if err != nil { return nil, nil, errors.Trace(err) } @@ -1026,7 +1032,7 @@ func (e *aggExec) getContexts(groupKey []byte) []*aggregation.AggEvaluateContext if !ok { aggCtxs = make([]*aggregation.AggEvaluateContext, 0, len(e.aggExprs)) for _, agg := range e.aggExprs { - aggCtxs = append(aggCtxs, agg.CreateContext(e.sc)) + aggCtxs = append(aggCtxs, agg.CreateContext(e.sctx)) } e.aggCtxsMap[string(groupKey)] = aggCtxs } @@ -1059,7 +1065,7 @@ func (e *aggExec) processAllRows() (*chunk.Chunk, error) { aggCtxs := e.getContexts(gk) for i, agg := range e.aggExprs { - err = agg.Update(aggCtxs[i], e.sc, row) + err = agg.Update(aggCtxs[i], e.sctx.GetSessionVars().StmtCtx, row) if err != nil { return nil, errors.Trace(err) } @@ -1076,7 +1082,7 @@ func (e *aggExec) processAllRows() (*chunk.Chunk, error) { result := agg.GetResult(aggCtxs[i]) if e.fieldTypes[i].GetType() == mysql.TypeLonglong && result.Kind() == types.KindMysqlDecimal { var err error - result, err = result.ConvertTo(e.sc.TypeCtx(), e.fieldTypes[i]) + result, err = result.ConvertTo(e.sctx.GetSessionVars().StmtCtx.TypeCtx(), e.fieldTypes[i]) if err != nil { return nil, errors.Trace(err) } @@ -1125,7 +1131,7 @@ func (e *selExec) next() (*chunk.Chunk, error) { row := chk.GetRow(rows) passCheck := true for _, cond := range e.conditions { - d, err := cond.Eval(row) + d, err := cond.Eval(e.sctx, row) if err != nil { return nil, errors.Trace(err) } @@ -1133,11 +1139,11 @@ func (e *selExec) next() (*chunk.Chunk, error) { if d.IsNull() { passCheck = false } else { - isBool, err := d.ToBool(e.sc.TypeCtx()) + isBool, err := d.ToBool(e.sctx.GetSessionVars().StmtCtx.TypeCtx()) if err != nil { return nil, errors.Trace(err) } - isBool, err = expression.HandleOverflowOnSelection(e.sc, isBool, err) + isBool, err = expression.HandleOverflowOnSelection(e.sctx.GetSessionVars().StmtCtx, isBool, err) if err != nil { return nil, errors.Trace(err) } @@ -1180,7 +1186,7 @@ func (e *projExec) next() (*chunk.Chunk, error) { row := chk.GetRow(i) newRow := chunk.MutRowFromTypes(e.fieldTypes) for i, expr := range e.exprs { - d, err := expr.Eval(row) + d, err := expr.Eval(e.sctx, row) if err != nil { return nil, errors.Trace(err) } diff --git a/pkg/store/mockstore/unistore/tikv/BUILD.bazel b/pkg/store/mockstore/unistore/tikv/BUILD.bazel index 978b52db23886..396ae089245c8 100644 --- a/pkg/store/mockstore/unistore/tikv/BUILD.bazel +++ b/pkg/store/mockstore/unistore/tikv/BUILD.bazel @@ -18,7 +18,6 @@ go_library( visibility = ["//visibility:public"], deps = [ "//pkg/kv", - "//pkg/sessionctx/stmtctx", "//pkg/store/mockstore/unistore/client", "//pkg/store/mockstore/unistore/config", "//pkg/store/mockstore/unistore/cophandler", diff --git a/pkg/store/mockstore/unistore/tikv/mvcc.go b/pkg/store/mockstore/unistore/tikv/mvcc.go index 7f8f8eb9104e3..3607abfd0ae31 100644 --- a/pkg/store/mockstore/unistore/tikv/mvcc.go +++ b/pkg/store/mockstore/unistore/tikv/mvcc.go @@ -33,7 +33,6 @@ import ( "github.com/pingcap/errors" "github.com/pingcap/kvproto/pkg/kvrpcpb" "github.com/pingcap/log" - "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/store/mockstore/unistore/config" "github.com/pingcap/tidb/pkg/store/mockstore/unistore/lockstore" "github.com/pingcap/tidb/pkg/store/mockstore/unistore/pd" @@ -1001,7 +1000,7 @@ func encodeFromOldRow(oldRow, buf []byte) ([]byte, error) { } var encoder rowcodec.Encoder buf = buf[:0] - return encoder.Encode(stmtctx.NewStmtCtx(), colIDs, datums, buf) + return encoder.Encode(time.UTC, colIDs, datums, buf) } func (store *MVCCStore) buildPrewriteLock(reqCtx *requestCtx, m *kvrpcpb.Mutation, item *badger.Item, diff --git a/pkg/table/BUILD.bazel b/pkg/table/BUILD.bazel index 8f5df5622c166..d9e469304c2c1 100644 --- a/pkg/table/BUILD.bazel +++ b/pkg/table/BUILD.bazel @@ -27,6 +27,7 @@ go_library( "//pkg/util/chunk", "//pkg/util/dbterror", "//pkg/util/hack", + "//pkg/util/intest", "//pkg/util/logutil", "//pkg/util/mock", "//pkg/util/sqlexec", diff --git a/pkg/table/column.go b/pkg/table/column.go index 1b3a6a5eaf7bd..6c1c3aa4e1d90 100644 --- a/pkg/table/column.go +++ b/pkg/table/column.go @@ -37,6 +37,7 @@ import ( "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/chunk" "github.com/pingcap/tidb/pkg/util/hack" + "github.com/pingcap/tidb/pkg/util/intest" "github.com/pingcap/tidb/pkg/util/logutil" "github.com/pingcap/tidb/pkg/util/timeutil" "go.uber.org/zap" @@ -46,11 +47,40 @@ import ( type Column struct { *model.ColumnInfo // If this column is a generated column, the expression will be stored here. - GeneratedExpr ast.ExprNode + GeneratedExpr *ClonableExprNode // If this column has default expr value, this expression will be stored here. DefaultExpr ast.ExprNode } +// ClonableExprNode is a wrapper for ast.ExprNode. +type ClonableExprNode struct { + ctor func() ast.ExprNode + internal ast.ExprNode +} + +// NewClonableExprNode creates a ClonableExprNode. +func NewClonableExprNode(ctor func() ast.ExprNode, internal ast.ExprNode) *ClonableExprNode { + return &ClonableExprNode{ + ctor: ctor, + internal: internal, + } +} + +// Clone makes a "copy" of internal ast.ExprNode by reconstructing it. +func (n *ClonableExprNode) Clone() ast.ExprNode { + intest.AssertNotNil(n.ctor) + if n.ctor == nil { + return n.internal + } + return n.ctor() +} + +// Internal returns the reference of the internal ast.ExprNode. +// Note: only use this method when you are sure that the internal ast.ExprNode is not modified concurrently. +func (n *ClonableExprNode) Internal() ast.ExprNode { + return n.internal +} + // String implements fmt.Stringer interface. func (c *Column) String() string { ans := []string{c.Name.O, types.TypeToStr(c.GetType(), c.GetCharset())} @@ -701,7 +731,7 @@ func FillVirtualColumnValue(virtualRetTypes []*types.FieldType, virtualColumnInd iter := chunk.NewIterator4Chunk(req) for i, idx := range virtualColumnIndex { for row := iter.Begin(); row != iter.End(); row = iter.Next() { - datum, err := expCols[idx].EvalVirtualColumn(row) + datum, err := expCols[idx].EvalVirtualColumn(sctx, row) if err != nil { return err } diff --git a/pkg/table/index.go b/pkg/table/index.go index 9849cb2c0e4f3..f40011c01da44 100644 --- a/pkg/table/index.go +++ b/pkg/table/index.go @@ -101,6 +101,7 @@ type IndexKVGenerator struct { handle kv.Handle handleRestoreData []types.Datum + isMultiValue bool // Only used by multi-value index. allIdxVals [][]types.Datum i int @@ -108,23 +109,40 @@ type IndexKVGenerator struct { idxVals []types.Datum } -// NewIndexKVGenerator creates a new IndexKVGenerator. -func NewIndexKVGenerator( +// NewMultiValueIndexKVGenerator creates a new IndexKVGenerator for multi-value indexes. +func NewMultiValueIndexKVGenerator( index Index, stmtCtx *stmtctx.StatementContext, handle kv.Handle, handleRestoredData []types.Datum, mvIndexData [][]types.Datum, - singleIdxData []types.Datum, ) IndexKVGenerator { return IndexKVGenerator{ index: index, sCtx: stmtCtx, handle: handle, handleRestoreData: handleRestoredData, + isMultiValue: true, allIdxVals: mvIndexData, i: 0, - idxVals: singleIdxData, + } +} + +// NewPlainIndexKVGenerator creates a new IndexKVGenerator for non multi-value indexes. +func NewPlainIndexKVGenerator( + index Index, + stmtCtx *stmtctx.StatementContext, + handle kv.Handle, + handleRestoredData []types.Datum, + idxData []types.Datum, +) IndexKVGenerator { + return IndexKVGenerator{ + index: index, + sCtx: stmtCtx, + handle: handle, + handleRestoreData: handleRestoredData, + isMultiValue: false, + idxVals: idxData, } } @@ -132,10 +150,10 @@ func NewIndexKVGenerator( // For non multi-value indexes, there is only one index kv. func (iter *IndexKVGenerator) Next(keyBuf, valBuf []byte) ([]byte, []byte, bool, error) { var val []types.Datum - if len(iter.allIdxVals) == 0 { - val = iter.idxVals - } else { + if iter.isMultiValue { val = iter.allIdxVals[iter.i] + } else { + val = iter.idxVals } key, distinct, err := iter.index.GenIndexKey(iter.sCtx, val, iter.handle, keyBuf) if err != nil { @@ -151,8 +169,8 @@ func (iter *IndexKVGenerator) Next(keyBuf, valBuf []byte) ([]byte, []byte, bool, // Valid returns true if the generator is not exhausted. func (iter *IndexKVGenerator) Valid() bool { - if len(iter.allIdxVals) == 0 { - return iter.i == 0 + if iter.isMultiValue { + return iter.i < len(iter.allIdxVals) } - return iter.i < len(iter.allIdxVals) + return iter.i == 0 } diff --git a/pkg/table/tables/BUILD.bazel b/pkg/table/tables/BUILD.bazel index b10e03f4b7d4b..2b4d0f6524dd7 100644 --- a/pkg/table/tables/BUILD.bazel +++ b/pkg/table/tables/BUILD.bazel @@ -88,6 +88,7 @@ go_test( "//pkg/parser/model", "//pkg/parser/mysql", "//pkg/session", + "//pkg/session/types", "//pkg/sessionctx", "//pkg/sessionctx/stmtctx", "//pkg/sessionctx/variable", diff --git a/pkg/table/tables/index.go b/pkg/table/tables/index.go index a8ceeec60d571..8fb48acb87db8 100644 --- a/pkg/table/tables/index.go +++ b/pkg/table/tables/index.go @@ -93,7 +93,9 @@ func (c *index) GenIndexKey(sc *stmtctx.StatementContext, indexedValues []types. if c.idxInfo.Global { idxTblID = c.tblInfo.ID } - return tablecodec.GenIndexKey(sc, c.tblInfo, c.idxInfo, idxTblID, indexedValues, h, buf) + key, distinct, err = tablecodec.GenIndexKey(sc.TimeZone(), c.tblInfo, c.idxInfo, idxTblID, indexedValues, h, buf) + err = sc.HandleError(err) + return } // GenIndexValue generates the index value. @@ -102,7 +104,9 @@ func (c *index) GenIndexValue(sc *stmtctx.StatementContext, distinct bool, index c.initNeedRestoreData.Do(func() { c.needRestoredData = NeedRestoredData(c.idxInfo.Columns, c.tblInfo.Columns) }) - return tablecodec.GenIndexValuePortal(sc, c.tblInfo, c.idxInfo, c.needRestoredData, distinct, false, indexedValues, h, c.phyTblID, restoredData, buf) + idx, err := tablecodec.GenIndexValuePortal(sc.TimeZone(), c.tblInfo, c.idxInfo, c.needRestoredData, distinct, false, indexedValues, h, c.phyTblID, restoredData, buf) + err = sc.HandleError(err) + return idx, err } // getIndexedValue will produce the result like: @@ -233,8 +237,9 @@ func (c *index) Create(sctx sessionctx.Context, txn kv.Transaction, indexedValue c.initNeedRestoreData.Do(func() { c.needRestoredData = NeedRestoredData(c.idxInfo.Columns, c.tblInfo.Columns) }) - idxVal, err := tablecodec.GenIndexValuePortal(sctx.GetSessionVars().StmtCtx, c.tblInfo, c.idxInfo, + idxVal, err := tablecodec.GenIndexValuePortal(sctx.GetSessionVars().StmtCtx.TimeZone(), c.tblInfo, c.idxInfo, c.needRestoredData, distinct, opt.Untouched, value, h, c.phyTblID, handleRestoreData, nil) + err = sctx.GetSessionVars().StmtCtx.HandleError(err) if err != nil { return nil, err } @@ -477,8 +482,9 @@ func (c *index) GenIndexKVIter(sc *stmtctx.StatementContext, indexedValue []type var mvIndexValues [][]types.Datum if c.Meta().MVIndex { mvIndexValues = c.getIndexedValue(indexedValue) + return table.NewMultiValueIndexKVGenerator(c, sc, h, handleRestoreData, mvIndexValues) } - return table.NewIndexKVGenerator(c, sc, h, handleRestoreData, mvIndexValues, indexedValue) + return table.NewPlainIndexKVGenerator(c, sc, h, handleRestoreData, indexedValue) } const ( diff --git a/pkg/table/tables/index_test.go b/pkg/table/tables/index_test.go index 2cf4cee9ce5fe..2e21aa0c56e87 100644 --- a/pkg/table/tables/index_test.go +++ b/pkg/table/tables/index_test.go @@ -64,7 +64,7 @@ func TestMultiColumnCommonHandle(t *testing.T) { // create index for "insert t values (3, 2, "abc", "abc") idxColVals := types.MakeDatums("abc") handleColVals := types.MakeDatums(3, 2) - encodedHandle, err := codec.EncodeKey(sc, nil, handleColVals...) + encodedHandle, err := codec.EncodeKey(sc.TimeZone(), nil, handleColVals...) require.NoError(t, err) commonHandle, err := kv.NewCommonHandle(encodedHandle) require.NoError(t, err) @@ -126,7 +126,7 @@ func TestSingleColumnCommonHandle(t *testing.T) { // create index for "insert t values ('abc', 1, 1)" idxColVals := types.MakeDatums(1) handleColVals := types.MakeDatums("abc") - encodedHandle, err := codec.EncodeKey(sc, nil, handleColVals...) + encodedHandle, err := codec.EncodeKey(sc.TimeZone(), nil, handleColVals...) require.NoError(t, err) commonHandle, err := kv.NewCommonHandle(encodedHandle) require.NoError(t, err) diff --git a/pkg/table/tables/mutation_checker_test.go b/pkg/table/tables/mutation_checker_test.go index 8c45bec673a6e..ee65710595cee 100644 --- a/pkg/table/tables/mutation_checker_test.go +++ b/pkg/table/tables/mutation_checker_test.go @@ -93,7 +93,7 @@ func TestCheckRowInsertionConsistency(t *testing.T) { // mocked data mockRowKey233 := tablecodec.EncodeRowKeyWithHandle(1, kv.IntHandle(233)) mockValue233, err := tablecodec.EncodeRow( - sessVars.StmtCtx, []types.Datum{types.NewIntDatum(233)}, []int64{101}, nil, nil, &rd, + sessVars.StmtCtx.TimeZone(), []types.Datum{types.NewIntDatum(233)}, []int64{101}, nil, nil, &rd, ) require.Nil(t, err) fakeRowInsertion := mutation{key: []byte{1, 1}, value: []byte{1, 1, 1}} @@ -268,7 +268,7 @@ func TestCheckIndexKeysAndCheckHandleConsistency(t *testing.T) { table := MockTableFromMeta(&tableInfo).(*TableCommon) var handle, corruptedHandle kv.Handle if isCommonHandle { - encoded, err := codec.EncodeKey(sessVars.StmtCtx, nil, rowToInsert[0]) + encoded, err := codec.EncodeKey(sessVars.StmtCtx.TimeZone(), nil, rowToInsert[0]) require.Nil(t, err) corrupted := make([]byte, len(encoded)) copy(corrupted, encoded) @@ -306,7 +306,7 @@ func TestCheckIndexKeysAndCheckHandleConsistency(t *testing.T) { // test checkHandleConsistency rowKey := tablecodec.EncodeRowKeyWithHandle(table.tableID, handle) corruptedRowKey := tablecodec.EncodeRowKeyWithHandle(table.tableID, corruptedHandle) - rowValue, err := tablecodec.EncodeRow(sessVars.StmtCtx, rowToInsert, []int64{1, 2}, nil, nil, &rd) + rowValue, err := tablecodec.EncodeRow(sessVars.StmtCtx.TimeZone(), rowToInsert, []int64{1, 2}, nil, nil, &rd) require.Nil(t, err) rowMutation := mutation{key: rowKey, value: rowValue} corruptedRowMutation := mutation{key: corruptedRowKey, value: rowValue} @@ -327,14 +327,14 @@ func buildIndexKeyValue(index table.Index, rowToInsert []types.Datum, sessVars * return nil, nil, err } key, distinct, err := tablecodec.GenIndexKey( - sessVars.StmtCtx, &tableInfo, indexInfo, 1, indexedValues, handle, nil, + sessVars.StmtCtx.TimeZone(), &tableInfo, indexInfo, 1, indexedValues, handle, nil, ) if err != nil { return nil, nil, err } rsData := TryGetHandleRestoredDataWrapper(table.meta, rowToInsert, nil, indexInfo) value, err := tablecodec.GenIndexValuePortal( - sessVars.StmtCtx, &tableInfo, indexInfo, NeedRestoredData(indexInfo.Columns, tableInfo.Columns), + sessVars.StmtCtx.TimeZone(), &tableInfo, indexInfo, NeedRestoredData(indexInfo.Columns, tableInfo.Columns), distinct, false, indexedValues, handle, 0, rsData, nil, ) if err != nil { diff --git a/pkg/table/tables/partition.go b/pkg/table/tables/partition.go index 53178d07decdb..dc036ba94f1a3 100644 --- a/pkg/table/tables/partition.go +++ b/pkg/table/tables/partition.go @@ -1091,7 +1091,7 @@ func (lp *ForListColumnPruning) genConstExprKey(ctx sessionctx.Context, sc *stmt if err != nil { return nil, errors.Trace(err) } - v, err := expr.Eval(chunk.Row{}) + v, err := expr.Eval(ctx, chunk.Row{}) if err != nil { return nil, errors.Trace(err) } @@ -1107,7 +1107,8 @@ func (lp *ForListColumnPruning) genKey(sc *stmtctx.StatementContext, v types.Dat if err != nil { return nil, errors.Trace(err) } - valByte, err := codec.EncodeKey(sc, nil, v) + valByte, err := codec.EncodeKey(sc.TimeZone(), nil, v) + err = sc.HandleError(err) return valByte, err } @@ -1206,7 +1207,7 @@ func generateHashPartitionExpr(ctx sessionctx.Context, exprStr string, } } } - exprs.HashCode(ctx.GetSessionVars().StmtCtx) + exprs.HashCode() return &PartitionExpr{ Expr: exprs, OrigExpr: origExpr, diff --git a/pkg/table/tables/state_remote_test.go b/pkg/table/tables/state_remote_test.go index d8b6cde16ee26..898c5aba4392b 100644 --- a/pkg/table/tables/state_remote_test.go +++ b/pkg/table/tables/state_remote_test.go @@ -20,7 +20,7 @@ import ( "time" "github.com/pingcap/tidb/pkg/kv" - "github.com/pingcap/tidb/pkg/session" + sessiontypes "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/table/tables" "github.com/pingcap/tidb/pkg/testkit" "github.com/stretchr/testify/require" @@ -28,7 +28,7 @@ import ( ) // initRow add a new record into the cached table meta lock table. -func initRow(ctx context.Context, exec session.Session, tid int) error { +func initRow(ctx context.Context, exec sessiontypes.Session, tid int) error { _, err := exec.ExecuteInternal(ctx, "insert ignore into mysql.table_cache_meta values (%?, 'NONE', 0, 0)", tid) return err } diff --git a/pkg/table/tables/tables.go b/pkg/table/tables/tables.go index c54fb3f35fbe0..11310ff861c2c 100644 --- a/pkg/table/tables/tables.go +++ b/pkg/table/tables/tables.go @@ -33,6 +33,7 @@ import ( "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/meta" "github.com/pingcap/tidb/pkg/meta/autoid" + "github.com/pingcap/tidb/pkg/parser/ast" "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/sessionctx" @@ -138,15 +139,21 @@ func TableFromMeta(allocs autoid.Allocators, tblInfo *model.TableInfo) (table.Ta col := table.ToColumn(colInfo) if col.IsGenerated() { - expr, err := generatedexpr.ParseExpression(colInfo.GeneratedExprString) + genStr := colInfo.GeneratedExprString + expr, err := buildGeneratedExpr(tblInfo, genStr) if err != nil { return nil, err } - expr, err = generatedexpr.SimpleResolveName(expr, tblInfo) - if err != nil { - return nil, err - } - col.GeneratedExpr = expr + col.GeneratedExpr = table.NewClonableExprNode(func() ast.ExprNode { + newExpr, err1 := buildGeneratedExpr(tblInfo, genStr) + if err1 != nil { + logutil.BgLogger().Warn("unexpected parse generated string error", + zap.String("generatedStr", genStr), + zap.Error(err1)) + return expr + } + return newExpr + }, expr) } // default value is expr. if col.DefaultIsExpr { @@ -177,6 +184,18 @@ func TableFromMeta(allocs autoid.Allocators, tblInfo *model.TableInfo) (table.Ta return newPartitionedTable(&t, tblInfo) } +func buildGeneratedExpr(tblInfo *model.TableInfo, genExpr string) (ast.ExprNode, error) { + expr, err := generatedexpr.ParseExpression(genExpr) + if err != nil { + return nil, err + } + expr, err = generatedexpr.SimpleResolveName(expr, tblInfo) + if err != nil { + return nil, err + } + return expr, nil +} + // initTableCommon initializes a TableCommon struct. func initTableCommon(t *TableCommon, tblInfo *model.TableInfo, physicalTableID int64, cols []*table.Column, allocs autoid.Allocators, constraints []*table.Constraint) { t.tableID = tblInfo.ID @@ -549,7 +568,8 @@ func (t *TableCommon) UpdateRecord(ctx context.Context, sctx sessionctx.Context, key := t.RecordKey(h) sc, rd := sessVars.StmtCtx, &sessVars.RowEncoder checksums, writeBufs.RowValBuf = t.calcChecksums(sctx, h, checksumData, writeBufs.RowValBuf) - writeBufs.RowValBuf, err = tablecodec.EncodeRow(sc, row, colIDs, writeBufs.RowValBuf, writeBufs.AddRowValues, rd, checksums...) + writeBufs.RowValBuf, err = tablecodec.EncodeRow(sc.TimeZone(), row, colIDs, writeBufs.RowValBuf, writeBufs.AddRowValues, rd, checksums...) + err = sc.HandleError(err) if err != nil { return err } @@ -601,12 +621,12 @@ func (t *TableCommon) UpdateRecord(ctx context.Context, sctx sessionctx.Context, } colSize := make(map[int64]int64, len(t.Cols())) for id, col := range t.Cols() { - size, err := codec.EstimateValueSize(sc, newData[id]) + size, err := codec.EstimateValueSize(sc.TypeCtx(), newData[id]) if err != nil { continue } newLen := size - 1 - size, err = codec.EstimateValueSize(sc, oldData[id]) + size, err = codec.EstimateValueSize(sc.TypeCtx(), oldData[id]) if err != nil { continue } @@ -855,7 +875,8 @@ func (t *TableCommon) AddRecord(sctx sessionctx.Context, r []types.Datum, opts . } tablecodec.TruncateIndexValues(tblInfo, pkIdx, pkDts) var handleBytes []byte - handleBytes, err = codec.EncodeKey(sctx.GetSessionVars().StmtCtx, nil, pkDts...) + handleBytes, err = codec.EncodeKey(sctx.GetSessionVars().StmtCtx.TimeZone(), nil, pkDts...) + err = sctx.GetSessionVars().StmtCtx.HandleError(err) if err != nil { return } @@ -987,7 +1008,8 @@ func (t *TableCommon) AddRecord(sctx sessionctx.Context, r []types.Datum, opts . zap.Stringer("key", key)) sc, rd := sessVars.StmtCtx, &sessVars.RowEncoder checksums, writeBufs.RowValBuf = t.calcChecksums(sctx, recordID, checksumData, writeBufs.RowValBuf) - writeBufs.RowValBuf, err = tablecodec.EncodeRow(sc, row, colIDs, writeBufs.RowValBuf, writeBufs.AddRowValues, rd, checksums...) + writeBufs.RowValBuf, err = tablecodec.EncodeRow(sc.TimeZone(), row, colIDs, writeBufs.RowValBuf, writeBufs.AddRowValues, rd, checksums...) + err = sc.HandleError(err) if err != nil { return nil, err } @@ -1098,7 +1120,7 @@ func (t *TableCommon) AddRecord(sctx sessionctx.Context, r []types.Datum, opts . colSize := make(map[int64]int64, len(r)) for id, col := range t.Cols() { - size, err := codec.EstimateValueSize(sc, r[id]) + size, err := codec.EstimateValueSize(sc.TypeCtx(), r[id]) if err != nil { continue } @@ -1373,7 +1395,7 @@ func (t *TableCommon) RemoveRecord(ctx sessionctx.Context, h kv.Handle, r []type } colSize := make(map[int64]int64, len(t.Cols())) for id, col := range t.Cols() { - size, err := codec.EstimateValueSize(sc, r[id]) + size, err := codec.EstimateValueSize(sc.TypeCtx(), r[id]) if err != nil { continue } @@ -1389,11 +1411,13 @@ func (t *TableCommon) addInsertBinlog(ctx sessionctx.Context, h kv.Handle, row [ if err != nil { return err } - pk, err := codec.EncodeValue(ctx.GetSessionVars().StmtCtx, nil, handleData...) + pk, err := codec.EncodeValue(ctx.GetSessionVars().StmtCtx.TimeZone(), nil, handleData...) + err = ctx.GetSessionVars().StmtCtx.HandleError(err) if err != nil { return err } - value, err := tablecodec.EncodeOldRow(ctx.GetSessionVars().StmtCtx, row, colIDs, nil, nil) + value, err := tablecodec.EncodeOldRow(ctx.GetSessionVars().StmtCtx.TimeZone(), row, colIDs, nil, nil) + err = ctx.GetSessionVars().StmtCtx.HandleError(err) if err != nil { return err } @@ -1404,11 +1428,13 @@ func (t *TableCommon) addInsertBinlog(ctx sessionctx.Context, h kv.Handle, row [ } func (t *TableCommon) addUpdateBinlog(ctx sessionctx.Context, oldRow, newRow []types.Datum, colIDs []int64) error { - old, err := tablecodec.EncodeOldRow(ctx.GetSessionVars().StmtCtx, oldRow, colIDs, nil, nil) + old, err := tablecodec.EncodeOldRow(ctx.GetSessionVars().StmtCtx.TimeZone(), oldRow, colIDs, nil, nil) + err = ctx.GetSessionVars().StmtCtx.HandleError(err) if err != nil { return err } - newVal, err := tablecodec.EncodeOldRow(ctx.GetSessionVars().StmtCtx, newRow, colIDs, nil, nil) + newVal, err := tablecodec.EncodeOldRow(ctx.GetSessionVars().StmtCtx.TimeZone(), newRow, colIDs, nil, nil) + err = ctx.GetSessionVars().StmtCtx.HandleError(err) if err != nil { return err } @@ -1420,7 +1446,8 @@ func (t *TableCommon) addUpdateBinlog(ctx sessionctx.Context, oldRow, newRow []t } func (t *TableCommon) addDeleteBinlog(ctx sessionctx.Context, r []types.Datum, colIDs []int64) error { - data, err := tablecodec.EncodeOldRow(ctx.GetSessionVars().StmtCtx, r, colIDs, nil, nil) + data, err := tablecodec.EncodeOldRow(ctx.GetSessionVars().StmtCtx.TimeZone(), r, colIDs, nil, nil) + err = ctx.GetSessionVars().StmtCtx.HandleError(err) if err != nil { return err } @@ -2314,7 +2341,8 @@ func SetPBColumnsDefaultValue(ctx sessionctx.Context, pbColumns []*tipb.ColumnIn return err } - pbColumns[i].DefaultVal, err = tablecodec.EncodeValue(sessVars.StmtCtx, nil, d) + pbColumns[i].DefaultVal, err = tablecodec.EncodeValue(sessVars.StmtCtx.TimeZone(), nil, d) + err = sessVars.StmtCtx.HandleError(err) if err != nil { return err } diff --git a/pkg/tablecodec/BUILD.bazel b/pkg/tablecodec/BUILD.bazel index 7b74bb2f173cc..8c891275c29f0 100644 --- a/pkg/tablecodec/BUILD.bazel +++ b/pkg/tablecodec/BUILD.bazel @@ -12,7 +12,6 @@ go_library( "//pkg/parser/model", "//pkg/parser/mysql", "//pkg/parser/terror", - "//pkg/sessionctx/stmtctx", "//pkg/structure", "//pkg/types", "//pkg/util/codec", diff --git a/pkg/tablecodec/tablecodec.go b/pkg/tablecodec/tablecodec.go index 4a9dba19a062b..347d71221cbe0 100644 --- a/pkg/tablecodec/tablecodec.go +++ b/pkg/tablecodec/tablecodec.go @@ -30,7 +30,6 @@ import ( "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/parser/terror" - "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/structure" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/codec" @@ -323,34 +322,41 @@ func DecodeRowKey(key kv.Key) (kv.Handle, error) { } // EncodeValue encodes a go value to bytes. -func EncodeValue(sc *stmtctx.StatementContext, b []byte, raw types.Datum) ([]byte, error) { +// This function may return both a valid encoded bytes and an error (actually `"pingcap/errors".ErrorGroup`). If the caller +// expects to handle these errors according to `SQL_MODE` or other configuration, please refer to `pkg/errctx`. +func EncodeValue(loc *time.Location, b []byte, raw types.Datum) ([]byte, error) { var v types.Datum - err := flatten(sc, raw, &v) + err := flatten(loc, raw, &v) if err != nil { return nil, err } - return codec.EncodeValue(sc, b, v) + + val, err := codec.EncodeValue(loc, b, v) + + return val, err } // EncodeRow encode row data and column ids into a slice of byte. // valBuf and values pass by caller, for reducing EncodeRow allocates temporary bufs. If you pass valBuf and values as nil, // EncodeRow will allocate it. -func EncodeRow(sc *stmtctx.StatementContext, row []types.Datum, colIDs []int64, valBuf []byte, values []types.Datum, e *rowcodec.Encoder, checksums ...uint32) ([]byte, error) { +// This function may return both a valid encoded bytes and an error (actually `"pingcap/errors".ErrorGroup`). If the caller +// expects to handle these errors according to `SQL_MODE` or other configuration, please refer to `pkg/errctx`. +func EncodeRow(loc *time.Location, row []types.Datum, colIDs []int64, valBuf []byte, values []types.Datum, e *rowcodec.Encoder, checksums ...uint32) ([]byte, error) { if len(row) != len(colIDs) { return nil, errors.Errorf("EncodeRow error: data and columnID count not match %d vs %d", len(row), len(colIDs)) } if e.Enable { valBuf = valBuf[:0] - return e.Encode(sc, colIDs, row, valBuf, checksums...) + return e.Encode(loc, colIDs, row, valBuf, checksums...) } - return EncodeOldRow(sc, row, colIDs, valBuf, values) + return EncodeOldRow(loc, row, colIDs, valBuf, values) } // EncodeOldRow encode row data and column ids into a slice of byte. // Row layout: colID1, value1, colID2, value2, ..... // valBuf and values pass by caller, for reducing EncodeOldRow allocates temporary bufs. If you pass valBuf and values as nil, // EncodeOldRow will allocate it. -func EncodeOldRow(sc *stmtctx.StatementContext, row []types.Datum, colIDs []int64, valBuf []byte, values []types.Datum) ([]byte, error) { +func EncodeOldRow(loc *time.Location, row []types.Datum, colIDs []int64, valBuf []byte, values []types.Datum) ([]byte, error) { if len(row) != len(colIDs) { return nil, errors.Errorf("EncodeRow error: data and columnID count not match %d vs %d", len(row), len(colIDs)) } @@ -361,7 +367,7 @@ func EncodeOldRow(sc *stmtctx.StatementContext, row []types.Datum, colIDs []int6 for i, c := range row { id := colIDs[i] values[2*i].SetInt64(id) - err := flatten(sc, c, &values[2*i+1]) + err := flatten(loc, c, &values[2*i+1]) if err != nil { return valBuf, errors.Trace(err) } @@ -370,16 +376,16 @@ func EncodeOldRow(sc *stmtctx.StatementContext, row []types.Datum, colIDs []int6 // We could not set nil value into kv. return append(valBuf, codec.NilFlag), nil } - return codec.EncodeValue(sc, valBuf, values...) + return codec.EncodeValue(loc, valBuf, values...) } -func flatten(sc *stmtctx.StatementContext, data types.Datum, ret *types.Datum) error { +func flatten(loc *time.Location, data types.Datum, ret *types.Datum) error { switch data.Kind() { case types.KindMysqlTime: // for mysql datetime, timestamp and date type t := data.GetMysqlTime() - if t.Type() == mysql.TypeTimestamp && sc.TimeZone() != time.UTC { - err := t.ConvertTimeZone(sc.TimeZone(), time.UTC) + if t.Type() == mysql.TypeTimestamp && loc != nil && loc != time.UTC { + err := t.ConvertTimeZone(loc, time.UTC) if err != nil { return errors.Trace(err) } @@ -399,7 +405,7 @@ func flatten(sc *stmtctx.StatementContext, data types.Datum, ret *types.Datum) e return nil case types.KindBinaryLiteral, types.KindMysqlBit: // We don't need to handle errors here since the literal is ensured to be able to store in uint64 in convertToMysqlBit. - val, err := data.GetBinaryLiteral().ToInt(sc.TypeCtx()) + val, err := data.GetBinaryLiteral().ToInt(types.StrictContext) if err != nil { return errors.Trace(err) } @@ -783,7 +789,7 @@ func reEncodeHandle(handle kv.Handle, unsigned bool) ([][]byte, error) { if unsigned { handleDatum.SetUint64(handleDatum.GetUint64()) } - intHandleBytes, err := codec.EncodeValue(nil, nil, handleDatum) + intHandleBytes, err := codec.EncodeValue(time.UTC, nil, handleDatum) return [][]byte{intHandleBytes}, err } @@ -1111,7 +1117,7 @@ func GetIndexKeyBuf(buf []byte, defaultCap int) []byte { } // GenIndexKey generates index key using input physical table id -func GenIndexKey(sc *stmtctx.StatementContext, tblInfo *model.TableInfo, idxInfo *model.IndexInfo, +func GenIndexKey(loc *time.Location, tblInfo *model.TableInfo, idxInfo *model.IndexInfo, phyTblID int64, indexedValues []types.Datum, h kv.Handle, buf []byte) (key []byte, distinct bool, err error) { if idxInfo.Unique { // See https://dev.mysql.com/doc/refman/5.7/en/create-index.html @@ -1132,7 +1138,7 @@ func GenIndexKey(sc *stmtctx.StatementContext, tblInfo *model.TableInfo, idxInfo key = GetIndexKeyBuf(buf, RecordRowKeyLen+len(indexedValues)*9+9) key = appendTableIndexPrefix(key, phyTblID) key = codec.EncodeInt(key, idxInfo.ID) - key, err = codec.EncodeKey(sc, key, indexedValues...) + key, err = codec.EncodeKey(loc, key, indexedValues...) if err != nil { return nil, false, err } @@ -1428,13 +1434,13 @@ func TempIndexValueIsUntouched(b []byte) bool { // | In v5.0, restored data contains only non-binary data(except for char and _bin). In the above example, the restored data contains only the value of b. // | Besides, if the collation of b is _bin, then restored data is an integer indicate the spaces are truncated. Then we use sortKey // | and the restored data together to restore original data. -func GenIndexValuePortal(sc *stmtctx.StatementContext, tblInfo *model.TableInfo, idxInfo *model.IndexInfo, +func GenIndexValuePortal(loc *time.Location, tblInfo *model.TableInfo, idxInfo *model.IndexInfo, needRestoredData bool, distinct bool, untouched bool, indexedValues []types.Datum, h kv.Handle, partitionID int64, restoredData []types.Datum, buf []byte) ([]byte, error) { if tblInfo.IsCommonHandle && tblInfo.CommonHandleVersion == 1 { - return GenIndexValueForClusteredIndexVersion1(sc, tblInfo, idxInfo, needRestoredData, distinct, untouched, indexedValues, h, partitionID, restoredData, buf) + return GenIndexValueForClusteredIndexVersion1(loc, tblInfo, idxInfo, needRestoredData, distinct, untouched, indexedValues, h, partitionID, restoredData, buf) } - return genIndexValueVersion0(sc, tblInfo, idxInfo, needRestoredData, distinct, untouched, indexedValues, h, partitionID, buf) + return genIndexValueVersion0(loc, tblInfo, idxInfo, needRestoredData, distinct, untouched, indexedValues, h, partitionID, buf) } // TryGetCommonPkColumnRestoredIds get the IDs of primary key columns which need restored data if the table has common handle. @@ -1460,7 +1466,7 @@ func TryGetCommonPkColumnRestoredIds(tbl *model.TableInfo) []int64 { } // GenIndexValueForClusteredIndexVersion1 generates the index value for the clustered index with version 1(New in v5.0.0). -func GenIndexValueForClusteredIndexVersion1(sc *stmtctx.StatementContext, tblInfo *model.TableInfo, idxInfo *model.IndexInfo, +func GenIndexValueForClusteredIndexVersion1(loc *time.Location, tblInfo *model.TableInfo, idxInfo *model.IndexInfo, idxValNeedRestoredData bool, distinct bool, untouched bool, indexedValues []types.Datum, h kv.Handle, partitionID int64, handleRestoredData []types.Datum, buf []byte) ([]byte, error) { var idxVal []byte @@ -1509,7 +1515,7 @@ func GenIndexValueForClusteredIndexVersion1(sc *stmtctx.StatementContext, tblInf rd := rowcodec.Encoder{Enable: true} var err error - idxVal, err = rd.Encode(sc, colIds, allRestoredData, idxVal) + idxVal, err = rd.Encode(loc, colIds, allRestoredData, idxVal) if err != nil { return nil, err } @@ -1525,7 +1531,7 @@ func GenIndexValueForClusteredIndexVersion1(sc *stmtctx.StatementContext, tblInf } // genIndexValueVersion0 create index value for both local and global index. -func genIndexValueVersion0(sc *stmtctx.StatementContext, tblInfo *model.TableInfo, idxInfo *model.IndexInfo, +func genIndexValueVersion0(loc *time.Location, tblInfo *model.TableInfo, idxInfo *model.IndexInfo, idxValNeedRestoredData bool, distinct bool, untouched bool, indexedValues []types.Datum, h kv.Handle, partitionID int64, buf []byte) ([]byte, error) { var idxVal []byte @@ -1553,7 +1559,7 @@ func genIndexValueVersion0(sc *stmtctx.StatementContext, tblInfo *model.TableInf rd := rowcodec.Encoder{Enable: true} // Encode row restored value. var err error - idxVal, err = rd.Encode(sc, colIds, indexedValues, idxVal) + idxVal, err = rd.Encode(loc, colIds, indexedValues, idxVal) if err != nil { return nil, err } @@ -1791,7 +1797,7 @@ func decodeIndexKvForClusteredIndexVersion1(key, value []byte, colsLen int, hdSt return nil, err } datum := types.NewIntDatum(pid) - pidBytes, err := codec.EncodeValue(nil, nil, datum) + pidBytes, err := codec.EncodeValue(time.UTC, nil, datum) if err != nil { return nil, err } @@ -1848,7 +1854,7 @@ func decodeIndexKvGeneral(key, value []byte, colsLen int, hdStatus HandleStatus, return nil, err } datum := types.NewIntDatum(pid) - pidBytes, err := codec.EncodeValue(nil, nil, datum) + pidBytes, err := codec.EncodeValue(time.UTC, nil, datum) if err != nil { return nil, err } diff --git a/pkg/tablecodec/tablecodec_test.go b/pkg/tablecodec/tablecodec_test.go index b3e133f74f159..89d9659619acd 100644 --- a/pkg/tablecodec/tablecodec_test.go +++ b/pkg/tablecodec/tablecodec_test.go @@ -100,7 +100,7 @@ func TestRowCodec(t *testing.T) { } rd := rowcodec.Encoder{Enable: true} sc := stmtctx.NewStmtCtxWithTimeZone(time.Local) - bs, err := EncodeRow(sc, row, colIDs, nil, nil, &rd) + bs, err := EncodeRow(sc.TimeZone(), row, colIDs, nil, nil, &rd) require.NoError(t, err) require.NotNil(t, bs) @@ -155,7 +155,7 @@ func TestRowCodec(t *testing.T) { } // Make sure empty row return not nil value. - bs, err = EncodeOldRow(sc, []types.Datum{}, []int64{}, nil, nil) + bs, err = EncodeOldRow(sc.TimeZone(), []types.Datum{}, []int64{}, nil, nil) require.NoError(t, err) require.Len(t, bs, 1) @@ -169,7 +169,7 @@ func TestDecodeColumnValue(t *testing.T) { // test timestamp d := types.NewTimeDatum(types.NewTime(types.FromGoTime(time.Now()), mysql.TypeTimestamp, types.DefaultFsp)) - bs, err := EncodeOldRow(sc, []types.Datum{d}, []int64{1}, nil, nil) + bs, err := EncodeOldRow(sc.TimeZone(), []types.Datum{d}, []int64{1}, nil, nil) require.NoError(t, err) require.NotNil(t, bs) _, bs, err = codec.CutOne(bs) // ignore colID @@ -185,7 +185,7 @@ func TestDecodeColumnValue(t *testing.T) { elems := []string{"a", "b", "c", "d", "e"} e, _ := types.ParseSetValue(elems, uint64(1)) d = types.NewMysqlSetDatum(e, "") - bs, err = EncodeOldRow(sc, []types.Datum{d}, []int64{1}, nil, nil) + bs, err = EncodeOldRow(sc.TimeZone(), []types.Datum{d}, []int64{1}, nil, nil) require.NoError(t, err) require.NotNil(t, bs) _, bs, err = codec.CutOne(bs) // ignore colID @@ -200,7 +200,7 @@ func TestDecodeColumnValue(t *testing.T) { // test bit d = types.NewMysqlBitDatum(types.NewBinaryLiteralFromUint(3223600, 3)) - bs, err = EncodeOldRow(sc, []types.Datum{d}, []int64{1}, nil, nil) + bs, err = EncodeOldRow(sc.TimeZone(), []types.Datum{d}, []int64{1}, nil, nil) require.NoError(t, err) require.NotNil(t, bs) _, bs, err = codec.CutOne(bs) // ignore colID @@ -215,7 +215,7 @@ func TestDecodeColumnValue(t *testing.T) { // test empty enum d = types.NewMysqlEnumDatum(types.Enum{}) - bs, err = EncodeOldRow(sc, []types.Datum{d}, []int64{1}, nil, nil) + bs, err = EncodeOldRow(sc.TimeZone(), []types.Datum{d}, []int64{1}, nil, nil) require.NoError(t, err) require.NotNil(t, bs) _, bs, err = codec.CutOne(bs) // ignore colID @@ -275,7 +275,7 @@ func TestTimeCodec(t *testing.T) { } rd := rowcodec.Encoder{Enable: true} sc := stmtctx.NewStmtCtxWithTimeZone(time.UTC) - bs, err := EncodeRow(sc, row, colIDs, nil, nil, &rd) + bs, err := EncodeRow(sc.TimeZone(), row, colIDs, nil, nil, &rd) require.NoError(t, err) require.NotNil(t, bs) @@ -312,18 +312,18 @@ func TestCutRow(t *testing.T) { sc := stmtctx.NewStmtCtxWithTimeZone(time.UTC) data := make([][]byte, 3) - data[0], err = EncodeValue(sc, nil, row[0]) + data[0], err = EncodeValue(sc.TimeZone(), nil, row[0]) require.NoError(t, err) - data[1], err = EncodeValue(sc, nil, row[1]) + data[1], err = EncodeValue(sc.TimeZone(), nil, row[1]) require.NoError(t, err) - data[2], err = EncodeValue(sc, nil, row[2]) + data[2], err = EncodeValue(sc.TimeZone(), nil, row[2]) require.NoError(t, err) // Encode colIDs := make([]int64, 0, 3) for _, col := range cols { colIDs = append(colIDs, col.id) } - bs, err := EncodeOldRow(sc, row, colIDs, nil, nil) + bs, err := EncodeOldRow(sc.TimeZone(), row, colIDs, nil, nil) require.NoError(t, err) require.NotNil(t, bs) @@ -355,7 +355,7 @@ func TestCutKeyNew(t *testing.T) { handle := types.NewIntDatum(100) values = append(values, handle) sc := stmtctx.NewStmtCtxWithTimeZone(time.UTC) - encodedValue, err := codec.EncodeKey(sc, nil, values...) + encodedValue, err := codec.EncodeKey(sc.TimeZone(), nil, values...) require.NoError(t, err) tableID := int64(4) indexID := int64(5) @@ -378,7 +378,7 @@ func TestCutKey(t *testing.T) { handle := types.NewIntDatum(100) values = append(values, handle) sc := stmtctx.NewStmtCtxWithTimeZone(time.UTC) - encodedValue, err := codec.EncodeKey(sc, nil, values...) + encodedValue, err := codec.EncodeKey(sc.TimeZone(), nil, values...) require.NoError(t, err) tableID := int64(4) indexID := int64(5) @@ -494,7 +494,7 @@ func TestDecodeIndexKey(t *testing.T) { valueStrs = append(valueStrs, str) } sc := stmtctx.NewStmtCtxWithTimeZone(time.UTC) - encodedValue, err := codec.EncodeKey(sc, nil, values...) + encodedValue, err := codec.EncodeKey(sc.TimeZone(), nil, values...) require.NoError(t, err) indexKey := EncodeIndexSeekKey(tableID, indexID, encodedValue) @@ -567,7 +567,7 @@ func BenchmarkEncodeValue(b *testing.B) { for i := 0; i < b.N; i++ { for _, d := range row { encodedCol = encodedCol[:0] - _, err := EncodeValue(sc, encodedCol, d) + _, err := EncodeValue(sc.TimeZone(), encodedCol, d) if err != nil { b.Fatal(err) } @@ -601,7 +601,7 @@ func TestUntouchedIndexKValue(t *testing.T) { func TestTempIndexKey(t *testing.T) { values := []types.Datum{types.NewIntDatum(1), types.NewBytesDatum([]byte("abc")), types.NewFloat64Datum(5.5)} - encodedValue, err := codec.EncodeKey(stmtctx.NewStmtCtxWithTimeZone(time.UTC), nil, values...) + encodedValue, err := codec.EncodeKey(stmtctx.NewStmtCtxWithTimeZone(time.UTC).TimeZone(), nil, values...) require.NoError(t, err) tableID := int64(4) indexID := int64(5) @@ -628,7 +628,7 @@ func TestTempIndexKey(t *testing.T) { func TestTempIndexValueCodec(t *testing.T) { // Test encode temp index value. - encodedValue, err := codec.EncodeValue(stmtctx.NewStmtCtxWithTimeZone(time.UTC), nil, types.NewIntDatum(1)) + encodedValue, err := codec.EncodeValue(stmtctx.NewStmtCtxWithTimeZone(time.UTC).TimeZone(), nil, types.NewIntDatum(1)) require.NoError(t, err) encodedValueCopy := make([]byte, len(encodedValue)) copy(encodedValueCopy, encodedValue) diff --git a/pkg/telemetry/BUILD.bazel b/pkg/telemetry/BUILD.bazel index abba2a9bb3929..4c48b8d09e8a2 100644 --- a/pkg/telemetry/BUILD.bazel +++ b/pkg/telemetry/BUILD.bazel @@ -65,7 +65,6 @@ go_test( deps = [ "//pkg/autoid_service", "//pkg/config", - "//pkg/ddl", "//pkg/domain", "//pkg/kv", "//pkg/parser/model", diff --git a/pkg/telemetry/cte_test/BUILD.bazel b/pkg/telemetry/cte_test/BUILD.bazel index 39590ecbd9dd8..0918caac0e410 100644 --- a/pkg/telemetry/cte_test/BUILD.bazel +++ b/pkg/telemetry/cte_test/BUILD.bazel @@ -10,6 +10,7 @@ go_test( "//pkg/domain", "//pkg/kv", "//pkg/session", + "//pkg/session/types", "//pkg/store/mockstore", "//pkg/testkit/testsetup", "@com_github_stretchr_testify//require", diff --git a/pkg/telemetry/cte_test/cte_test.go b/pkg/telemetry/cte_test/cte_test.go index 0f61a3485ac97..445223978b562 100644 --- a/pkg/telemetry/cte_test/cte_test.go +++ b/pkg/telemetry/cte_test/cte_test.go @@ -21,6 +21,7 @@ import ( "github.com/pingcap/tidb/pkg/domain" "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/session" + sessiontypes "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/store/mockstore" "github.com/pingcap/tidb/pkg/testkit/testsetup" "github.com/stretchr/testify/require" @@ -95,7 +96,7 @@ type testSuite struct { store kv.Storage dom *domain.Domain etcdCluster *integration.ClusterV3 - se session.Session + se sessiontypes.Session close func() } diff --git a/pkg/telemetry/data_feature_usage_test.go b/pkg/telemetry/data_feature_usage_test.go index 8b7c5d1b6b02f..074e2a7a03fbd 100644 --- a/pkg/telemetry/data_feature_usage_test.go +++ b/pkg/telemetry/data_feature_usage_test.go @@ -25,7 +25,6 @@ import ( "github.com/pingcap/failpoint" _ "github.com/pingcap/tidb/pkg/autoid_service" "github.com/pingcap/tidb/pkg/config" - "github.com/pingcap/tidb/pkg/ddl" "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/telemetry" @@ -562,7 +561,7 @@ func TestAddIndexAccelerationAndMDL(t *testing.T) { require.Equal(t, int64(0), usage.DDLUsageCounter.AddIndexIngestUsed) require.NoError(t, err) - allow := ddl.IsEnableFastReorg() + allow := variable.EnableFastReorg.Load() require.Equal(t, true, allow) tk.MustExec("set global tidb_enable_metadata_lock = 0") tk.MustExec("use test") @@ -577,7 +576,7 @@ func TestAddIndexAccelerationAndMDL(t *testing.T) { tk.MustExec("set @@global.tidb_ddl_enable_fast_reorg = on") tk.MustExec("set global tidb_enable_metadata_lock = 1") - allow = ddl.IsEnableFastReorg() + allow = variable.EnableFastReorg.Load() require.Equal(t, true, allow) usage, err = telemetry.GetFeatureUsage(tk.Session()) require.NoError(t, err) diff --git a/pkg/testkit/BUILD.bazel b/pkg/testkit/BUILD.bazel index b9922d4065b45..13890b8f84a8c 100644 --- a/pkg/testkit/BUILD.bazel +++ b/pkg/testkit/BUILD.bazel @@ -26,6 +26,7 @@ go_library( "//pkg/resourcemanager", "//pkg/session", "//pkg/session/txninfo", + "//pkg/session/types", "//pkg/sessionctx", "//pkg/sessionctx/variable", "//pkg/store/driver", diff --git a/pkg/testkit/asynctestkit.go b/pkg/testkit/asynctestkit.go index 2867e4f256eb1..ad6cf72b91ef4 100644 --- a/pkg/testkit/asynctestkit.go +++ b/pkg/testkit/asynctestkit.go @@ -26,6 +26,7 @@ import ( "github.com/pingcap/tidb/pkg/expression" "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/session" + sessiontypes "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/util/sqlexec" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -240,10 +241,10 @@ type sessionCtxKeyType struct{} var sessionKey = sessionCtxKeyType{} // TryRetrieveSession tries retrieve session from context. -func TryRetrieveSession(ctx context.Context) session.Session { +func TryRetrieveSession(ctx context.Context) sessiontypes.Session { s := ctx.Value(sessionKey) if s == nil { return nil } - return s.(session.Session) + return s.(sessiontypes.Session) } diff --git a/pkg/testkit/mocksessionmanager.go b/pkg/testkit/mocksessionmanager.go index af1aa1022660a..88223f21e51d7 100644 --- a/pkg/testkit/mocksessionmanager.go +++ b/pkg/testkit/mocksessionmanager.go @@ -24,6 +24,7 @@ import ( "github.com/pingcap/tidb/pkg/planner/core" "github.com/pingcap/tidb/pkg/session" "github.com/pingcap/tidb/pkg/session/txninfo" + sessiontypes "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/util" ) @@ -35,7 +36,7 @@ type MockSessionManager struct { SerID uint64 TxnInfo []*txninfo.TxnInfo Dom *domain.Domain - Conn map[uint64]session.Session + Conn map[uint64]sessiontypes.Session mu sync.Mutex ConAttrs map[uint64]map[string]string diff --git a/pkg/testkit/testkit.go b/pkg/testkit/testkit.go index 07949e3b87b04..dca6e0de84b43 100644 --- a/pkg/testkit/testkit.go +++ b/pkg/testkit/testkit.go @@ -30,6 +30,7 @@ import ( "github.com/pingcap/tidb/pkg/parser/ast" "github.com/pingcap/tidb/pkg/parser/terror" "github.com/pingcap/tidb/pkg/session" + sessiontypes "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/testkit/testenv" "github.com/pingcap/tidb/pkg/types" @@ -53,7 +54,7 @@ type TestKit struct { assert *assert.Assertions t testing.TB store kv.Storage - session session.Session + session sessiontypes.Session alloc chunk.Allocator } @@ -77,7 +78,7 @@ func NewTestKit(t testing.TB, store kv.Storage) *TestKit { if ok { mockSm.mu.Lock() if mockSm.Conn == nil { - mockSm.Conn = make(map[uint64]session.Session) + mockSm.Conn = make(map[uint64]sessiontypes.Session) } mockSm.Conn[tk.session.GetSessionVars().ConnectionID] = tk.session mockSm.mu.Unlock() @@ -89,7 +90,7 @@ func NewTestKit(t testing.TB, store kv.Storage) *TestKit { } // NewTestKitWithSession returns a new *TestKit. -func NewTestKitWithSession(t testing.TB, store kv.Storage, se session.Session) *TestKit { +func NewTestKitWithSession(t testing.TB, store kv.Storage, se sessiontypes.Session) *TestKit { return &TestKit{ require: require.New(t), assert: assert.New(t), @@ -108,14 +109,14 @@ func (tk *TestKit) RefreshSession() { } // SetSession set the session of testkit -func (tk *TestKit) SetSession(session session.Session) { +func (tk *TestKit) SetSession(session sessiontypes.Session) { tk.session = session // enforce sysvar cache loading, ref loadCommonGlobalVariableIfNeeded tk.MustExec("select 3") } // Session return the session associated with the testkit -func (tk *TestKit) Session() session.Session { +func (tk *TestKit) Session() sessiontypes.Session { return tk.session } @@ -422,7 +423,7 @@ func (tk *TestKit) MustExecToErr(sql string, args ...interface{}) { tk.require.Error(err) } -func newSession(t testing.TB, store kv.Storage) session.Session { +func newSession(t testing.TB, store kv.Storage) sessiontypes.Session { se, err := session.CreateSession4Test(store) require.NoError(t, err) se.SetConnectionID(testKitIDGenerator.Inc()) diff --git a/pkg/testkit/testutil/handle.go b/pkg/testkit/testutil/handle.go index ac625acffcb2d..c489a3ec8fbd8 100644 --- a/pkg/testkit/testutil/handle.go +++ b/pkg/testkit/testutil/handle.go @@ -30,7 +30,7 @@ import ( // MustNewCommonHandle create a common handle with given values. func MustNewCommonHandle(t *testing.T, values ...interface{}) kv.Handle { - encoded, err := codec.EncodeKey(stmtctx.NewStmtCtx(), nil, types.MakeDatums(values...)...) + encoded, err := codec.EncodeKey(stmtctx.NewStmtCtx().TimeZone(), nil, types.MakeDatums(values...)...) require.NoError(t, err) ch, err := kv.NewCommonHandle(encoded) require.NoError(t, err) diff --git a/pkg/ttl/cache/split_test.go b/pkg/ttl/cache/split_test.go index 6f7e944e7a4a4..d1a34a5ea2e5b 100644 --- a/pkg/ttl/cache/split_test.go +++ b/pkg/ttl/cache/split_test.go @@ -20,6 +20,7 @@ import ( "math" "sort" "testing" + "time" "github.com/pingcap/kvproto/pkg/metapb" "github.com/pingcap/tidb/pkg/infoschema" @@ -205,7 +206,7 @@ func (s *mockTiKVStore) GetRegionCache() *tikv.RegionCache { } func bytesHandle(t *testing.T, data []byte) kv.Handle { - encoded, err := codec.EncodeKey(nil, nil, types.NewBytesDatum(data)) + encoded, err := codec.EncodeKey(time.UTC, nil, types.NewBytesDatum(data)) require.NoError(t, err) h, err := kv.NewCommonHandle(encoded) require.NoError(t, err) @@ -499,7 +500,7 @@ func TestNoTTLSplitSupportTables(t *testing.T) { func TestGetNextBytesHandleDatum(t *testing.T) { tblID := int64(7) buildHandleBytes := func(data []byte) []byte { - handleBytes, err := codec.EncodeKey(nil, nil, types.NewBytesDatum(data)) + handleBytes, err := codec.EncodeKey(time.UTC, nil, types.NewBytesDatum(data)) require.NoError(t, err) return handleBytes } diff --git a/pkg/ttl/cache/table.go b/pkg/ttl/cache/table.go index 8be33494900b0..18146df1f594a 100644 --- a/pkg/ttl/cache/table.go +++ b/pkg/ttl/cache/table.go @@ -379,7 +379,7 @@ func (t *PhysicalTable) splitRawKeyRanges(ctx context.Context, store tikv.Storag var emptyBytesHandleKey kv.Key func init() { - key, err := codec.EncodeKey(nil, nil, types.NewBytesDatum(nil)) + key, err := codec.EncodeKey(time.UTC, nil, types.NewBytesDatum(nil)) terror.MustNil(err) emptyBytesHandleKey = key } diff --git a/pkg/ttl/cache/task.go b/pkg/ttl/cache/task.go index c130f53b613af..dc733f93c5076 100644 --- a/pkg/ttl/cache/task.go +++ b/pkg/ttl/cache/task.go @@ -68,11 +68,11 @@ func PeekWaitingTTLTask(hbExpire time.Time) (string, []interface{}) { // InsertIntoTTLTask returns an SQL statement to insert a ttl task into mysql.tidb_ttl_task func InsertIntoTTLTask(sctx sessionctx.Context, jobID string, tableID int64, scanID int, scanRangeStart []types.Datum, scanRangeEnd []types.Datum, expireTime time.Time, createdTime time.Time) (string, []interface{}, error) { - rangeStart, err := codec.EncodeKey(sctx.GetSessionVars().StmtCtx, []byte{}, scanRangeStart...) + rangeStart, err := codec.EncodeKey(sctx.GetSessionVars().StmtCtx.TimeZone(), []byte{}, scanRangeStart...) if err != nil { return "", nil, err } - rangeEnd, err := codec.EncodeKey(sctx.GetSessionVars().StmtCtx, []byte{}, scanRangeEnd...) + rangeEnd, err := codec.EncodeKey(sctx.GetSessionVars().StmtCtx.TimeZone(), []byte{}, scanRangeEnd...) if err != nil { return "", nil, err } diff --git a/pkg/ttl/cache/task_test.go b/pkg/ttl/cache/task_test.go index 8edb41f004171..a30fafdcff194 100644 --- a/pkg/ttl/cache/task_test.go +++ b/pkg/ttl/cache/task_test.go @@ -76,10 +76,10 @@ func TestRowToTTLTask(t *testing.T) { require.Equal(t, now, task.ExpireTime) require.Equal(t, now, task.CreatedTime) - rangeStart, err := codec.EncodeKey(tk.Session().GetSessionVars().StmtCtx, + rangeStart, err := codec.EncodeKey(tk.Session().GetSessionVars().StmtCtx.TimeZone(), []byte{}, []types.Datum{types.NewDatum(1)}...) require.NoError(t, err) - rangeEnd, err := codec.EncodeKey(tk.Session().GetSessionVars().StmtCtx, + rangeEnd, err := codec.EncodeKey(tk.Session().GetSessionVars().StmtCtx.TimeZone(), []byte{}, []types.Datum{types.NewDatum(2)}...) require.NoError(t, err) tk.MustExec( diff --git a/pkg/types/context.go b/pkg/types/context.go index b969e4801f553..8f894d35942c2 100644 --- a/pkg/types/context.go +++ b/pkg/types/context.go @@ -61,6 +61,8 @@ const ( FlagSkipUTF8Check // FlagSkipUTF8MB4Check indicates to skip the UTF8MB4 check when converting the value to an UTF8 string. FlagSkipUTF8MB4Check + // FlagCastTimeToYearThroughConcat indicates to cast time to year through concatenation. For example, `00:19:59` will be converted to '1959' + FlagCastTimeToYearThroughConcat ) // AllowNegativeToUnsigned indicates whether the flag `FlagAllowNegativeToUnsigned` is set @@ -180,6 +182,19 @@ func (f Flags) WithIgnoreZeroDateErr(ignore bool) Flags { return f &^ FlagIgnoreZeroDateErr } +// CastTimeToYearThroughConcat whether `FlagCastTimeToYearThroughConcat` is set +func (f Flags) CastTimeToYearThroughConcat() bool { + return f&FlagCastTimeToYearThroughConcat != 0 +} + +// WithCastTimeToYearThroughConcat returns a new flags with `FlagCastTimeToYearThroughConcat` set/unset according to the flag parameter +func (f Flags) WithCastTimeToYearThroughConcat(flag bool) Flags { + if flag { + return f | FlagCastTimeToYearThroughConcat + } + return f &^ FlagCastTimeToYearThroughConcat +} + // Context provides the information when converting between different types. type Context struct { flags Flags @@ -211,7 +226,7 @@ func (c *Context) WithFlags(f Flags) Context { // WithLocation returns a new context with the given location func (c *Context) WithLocation(loc *time.Location) Context { - intest.Assert(loc) + intest.AssertNotNil(loc) ctx := *c ctx.loc = loc return ctx @@ -219,7 +234,7 @@ func (c *Context) WithLocation(loc *time.Location) Context { // Location returns the location of the context func (c *Context) Location() *time.Location { - intest.Assert(c.loc) + intest.AssertNotNil(c.loc) if c.loc == nil { // c.loc should always not be nil, just make the code safe here. return time.UTC @@ -250,3 +265,9 @@ const DefaultStmtFlags = StrictFlags | FlagAllowNegativeToUnsigned | FlagIgnoreZ var DefaultStmtNoWarningContext = NewContext(DefaultStmtFlags, time.UTC, func(_ error) { // the error is ignored }) + +// StrictContext is the most strict context which returns every error it meets +var StrictContext = NewContext(StrictFlags, time.UTC, func(_ error) { + // this context should never append warnings + // However, the implementation of `types` may still append some warnings. TODO: remove them in the future. +}) diff --git a/pkg/types/convert.go b/pkg/types/convert.go index 9927ecf879151..2dff482ac5d1f 100644 --- a/pkg/types/convert.go +++ b/pkg/types/convert.go @@ -316,7 +316,7 @@ func StrToUint(ctx Context, str string, isFuncCast bool) (uint64, error) { // StrToDateTime converts str to MySQL DateTime. func StrToDateTime(ctx Context, str string, fsp int) (Time, error) { - return ParseTime(ctx, str, mysql.TypeDatetime, fsp, nil) + return ParseTime(ctx, str, mysql.TypeDatetime, fsp) } // StrToDuration converts str to Duration. It returns Duration in normal case, diff --git a/pkg/types/convert_test.go b/pkg/types/convert_test.go index fed44d5670603..86d9893edff21 100644 --- a/pkg/types/convert_test.go +++ b/pkg/types/convert_test.go @@ -147,14 +147,14 @@ func TestConvertType(t *testing.T) { require.NoError(t, err) require.Equal(t, "10:11:12.1", vv.(Duration).String()) typeCtx := DefaultStmtNoWarningContext - vd, err := ParseTime(typeCtx, "2010-10-10 10:11:11.12345", mysql.TypeDatetime, 2, nil) + vd, err := ParseTime(typeCtx, "2010-10-10 10:11:11.12345", mysql.TypeDatetime, 2) require.Equal(t, "2010-10-10 10:11:11.12", vd.String()) require.NoError(t, err) v, err = Convert(vd, ft) require.NoError(t, err) require.Equal(t, "10:11:11.1", v.(Duration).String()) - vt, err := ParseTime(typeCtx, "2010-10-10 10:11:11.12345", mysql.TypeTimestamp, 2, nil) + vt, err := ParseTime(typeCtx, "2010-10-10 10:11:11.12345", mysql.TypeTimestamp, 2) require.Equal(t, "2010-10-10 10:11:11.12", vt.String()) require.NoError(t, err) v, err = Convert(vt, ft) @@ -271,7 +271,7 @@ func TestConvertType(t *testing.T) { require.Equal(t, int64(2015), v) v, err = Convert(ZeroDuration, ft) require.NoError(t, err) - require.Equal(t, int64(0), v) + require.Equal(t, int64(time.Now().Year()), v) bj1, err := ParseBinaryJSONFromString("99") require.NoError(t, err) v, err = Convert(bj1, ft) @@ -343,7 +343,7 @@ func TestConvertToString(t *testing.T) { testToString(t, Enum{Name: "a", Value: 1}, "a") testToString(t, Set{Name: "a", Value: 1}, "a") - t1, err := ParseTime(DefaultStmtNoWarningContext, "2011-11-10 11:11:11.999999", mysql.TypeTimestamp, 6, nil) + t1, err := ParseTime(DefaultStmtNoWarningContext, "2011-11-10 11:11:11.999999", mysql.TypeTimestamp, 6) require.NoError(t, err) testToString(t, t1, "2011-11-10 11:11:11.999999") diff --git a/pkg/types/datum.go b/pkg/types/datum.go index 50ec3035fead6..91ba76c3df978 100644 --- a/pkg/types/datum.go +++ b/pkg/types/datum.go @@ -1270,7 +1270,7 @@ func (d *Datum) convertToMysqlTimestamp(ctx Context, target *FieldType) (Datum, } t, err = t.RoundFrac(ctx, fsp) case KindString, KindBytes: - t, err = ParseTime(ctx, d.GetString(), mysql.TypeTimestamp, fsp, nil) + t, err = ParseTime(ctx, d.GetString(), mysql.TypeTimestamp, fsp) case KindInt64: t, err = ParseTimeFromNum(ctx, d.GetInt64(), mysql.TypeTimestamp, fsp) case KindMysqlDecimal: @@ -1283,7 +1283,7 @@ func (d *Datum) convertToMysqlTimestamp(ctx Context, target *FieldType) (Datum, ret.SetMysqlTime(t) return ret, err } - t, err = ParseTime(ctx, s, mysql.TypeTimestamp, fsp, nil) + t, err = ParseTime(ctx, s, mysql.TypeTimestamp, fsp) default: return invalidConv(d, mysql.TypeTimestamp) } @@ -1324,7 +1324,7 @@ func (d *Datum) convertToMysqlTime(ctx Context, target *FieldType) (Datum, error case KindMysqlDecimal: t, err = ParseTimeFromFloatString(ctx, d.GetMysqlDecimal().String(), tp, fsp) case KindString, KindBytes: - t, err = ParseTime(ctx, d.GetString(), tp, fsp, nil) + t, err = ParseTime(ctx, d.GetString(), tp, fsp) case KindInt64: t, err = ParseTimeFromNum(ctx, d.GetInt64(), tp, fsp) case KindUint64: @@ -1343,7 +1343,7 @@ func (d *Datum) convertToMysqlTime(ctx Context, target *FieldType) (Datum, error ret.SetMysqlTime(t) return ret, err } - t, err = ParseTime(ctx, s, tp, fsp, nil) + t, err = ParseTime(ctx, s, tp, fsp) default: return invalidConv(d, tp) } @@ -1550,6 +1550,8 @@ func (d *Datum) ConvertToMysqlYear(ctx Context, target *FieldType) (Datum, error } case KindMysqlTime: y = int64(d.GetMysqlTime().Year()) + case KindMysqlDuration: + y, err = d.GetMysqlDuration().ConvertToYear(ctx) case KindMysqlJSON: y, err = ConvertJSONToInt64(ctx, d.GetMysqlJSON(), false) if err != nil { @@ -1565,7 +1567,11 @@ func (d *Datum) ConvertToMysqlYear(ctx Context, target *FieldType) (Datum, error } y = ret.GetInt64() } - y, err = AdjustYear(y, adjust) + + // Duration has been adjusted in `Duration.ConvertToYear()` + if d.k != KindMysqlDuration { + y, err = AdjustYear(y, adjust) + } ret.SetInt64(y) return ret, errors.Trace(err) } diff --git a/pkg/types/datum_test.go b/pkg/types/datum_test.go index b1f4dc053e0eb..53dc48ef05c69 100644 --- a/pkg/types/datum_test.go +++ b/pkg/types/datum_test.go @@ -92,7 +92,7 @@ func TestToBool(t *testing.T) { testDatumToBool(t, CreateBinaryJSON(true), 1) testDatumToBool(t, CreateBinaryJSON(false), 1) testDatumToBool(t, CreateBinaryJSON(""), 1) - t1, err := ParseTime(DefaultStmtNoWarningContext, "2011-11-10 11:11:11.999999", mysql.TypeTimestamp, 6, nil) + t1, err := ParseTime(DefaultStmtNoWarningContext, "2011-11-10 11:11:11.999999", mysql.TypeTimestamp, 6) require.NoError(t, err) testDatumToBool(t, t1, 1) @@ -133,7 +133,7 @@ func TestToInt64(t *testing.T) { testDatumToInt64(t, Set{Name: "a", Value: 1}, int64(1)) testDatumToInt64(t, CreateBinaryJSON(int64(3)), int64(3)) - t1, err := ParseTime(DefaultStmtNoWarningContext, "2011-11-10 11:11:11.999999", mysql.TypeTimestamp, 0, nil) + t1, err := ParseTime(DefaultStmtNoWarningContext, "2011-11-10 11:11:11.999999", mysql.TypeTimestamp, 0) require.NoError(t, err) testDatumToInt64(t, t1, int64(20111110111112)) @@ -221,7 +221,7 @@ func TestConvertToFloat(t *testing.T) { } func mustParseTime(s string, tp byte, fsp int) Time { - t, err := ParseTime(DefaultStmtNoWarningContext, s, tp, fsp, nil) + t, err := ParseTime(DefaultStmtNoWarningContext, s, tp, fsp) if err != nil { panic("ParseTime fail") } diff --git a/pkg/types/format_test.go b/pkg/types/format_test.go index a63d8f161ee7e..a6caefdbe4911 100644 --- a/pkg/types/format_test.go +++ b/pkg/types/format_test.go @@ -68,7 +68,7 @@ func TestTimeFormatMethod(t *testing.T) { }, } for i, tt := range tblDate { - tm, err := types.ParseTime(typeCtx, tt.Input, mysql.TypeDatetime, 6, nil) + tm, err := types.ParseTime(typeCtx, tt.Input, mysql.TypeDatetime, 6) require.NoErrorf(t, err, "Parse time fail: %s", tt.Input) str, err := tm.DateFormat(tt.Format) diff --git a/pkg/types/time.go b/pkg/types/time.go index 19df35a56b996..c4acba3b21e65 100644 --- a/pkg/types/time.go +++ b/pkg/types/time.go @@ -460,7 +460,7 @@ func (t Time) Convert(ctx Context, tp uint8) (Time, error) { } t1.SetType(tp) - err := t1.check(ctx, nil) + err := t1.Check(ctx) return t1, errors.Trace(err) } @@ -491,7 +491,7 @@ func (t Time) Compare(o Time) int { // but parses string to Time then compares. func (t Time) CompareString(ctx Context, str string) (int, error) { // use MaxFsp to parse the string - o, err := ParseTime(ctx, str, t.Type(), MaxFsp, nil) + o, err := ParseTime(ctx, str, t.Type(), MaxFsp) if err != nil { return 0, errors.Trace(err) } @@ -670,27 +670,22 @@ func (t *Time) FromPackedUint(packed uint64) error { return nil } -// check whether t matches valid Time format. +// Check function checks whether t matches valid Time format. // If allowZeroInDate is false, it returns ErrZeroDate when month or day is zero. // FIXME: See https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_no_zero_in_date -func (t Time) check(ctx Context, explicitTz *gotime.Location) error { +func (t Time) Check(ctx Context) error { allowZeroInDate := ctx.Flags().IgnoreZeroInDate() allowInvalidDate := ctx.Flags().IgnoreInvalidDateErr() var err error switch t.Type() { case mysql.TypeTimestamp: - err = checkTimestampType(ctx, t.coreTime, explicitTz) + err = checkTimestampType(t.coreTime, ctx.Location()) case mysql.TypeDatetime, mysql.TypeDate: err = checkDatetimeType(t.coreTime, allowZeroInDate, allowInvalidDate) } return errors.Trace(err) } -// Check if 't' is valid -func (t *Time) Check(ctx Context) error { - return t.check(ctx, nil) -} - // Sub subtracts t1 from t, returns a duration value. // Note that sub should not be done on different time types. func (t *Time) Sub(ctx Context, t1 *Time) Duration { @@ -947,7 +942,7 @@ func splitDateTime(format string) (seps []string, fracStr string, hasTZ bool, tz } // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-literals.html. -func parseDatetime(ctx Context, str string, fsp int, isFloat bool, explicitTz *gotime.Location) (Time, error) { +func parseDatetime(ctx Context, str string, fsp int, isFloat bool) (Time, error) { var ( year, month, day, hour, minute, second, deltaHour, deltaMinute int fracStr string @@ -1183,12 +1178,7 @@ func parseDatetime(ctx Context, str string, fsp int, isFloat bool, explicitTz *g if overflow { // Convert to Go time and add 1 second, to handle input like 2017-01-05 08:40:59.575601 var t1 gotime.Time - if explicitTz != nil { - t1, err = tmp.GoTime(explicitTz) - } else { - t1, err = tmp.GoTime(ctx.Location()) - } - if err != nil { + if t1, err = tmp.GoTime(ctx.Location()); err != nil { return ZeroDatetime, errors.Trace(err) } tmp = FromGoTime(t1.Add(gotime.Second)) @@ -1220,11 +1210,7 @@ func parseDatetime(ctx Context, str string, fsp int, isFloat bool, explicitTz *g if err != nil { return ZeroDatetime, errors.Trace(err) } - if explicitTz != nil { - t1 = t1.In(explicitTz) - } else { - t1 = t1.In(ctx.Location()) - } + t1 = t1.In(ctx.Location()) tmp = FromGoTime(t1) } @@ -1512,6 +1498,29 @@ func (d Duration) ConvertToTimeWithTimestamp(ctx Context, tp uint8, ts gotime.Ti return t.Convert(ctx, tp) } +// ConvertToYear converts duration to Year. +func (d Duration) ConvertToYear(ctx Context) (int64, error) { + return d.ConvertToYearFromNow(ctx, gotime.Now()) +} + +// ConvertToYearFromNow converts duration to Year, with the `now` specified by the argument. +func (d Duration) ConvertToYearFromNow(ctx Context, now gotime.Time) (int64, error) { + if ctx.Flags().CastTimeToYearThroughConcat() { + // this error will never happen, because we always give a valid FSP + dur, _ := d.RoundFrac(DefaultFsp, ctx.Location()) + // the range of a duration will never exceed the range of `mysql.TypeLonglong` + ival, _ := dur.ToNumber().ToInt() + + return AdjustYear(ival, false) + } + + year, month, day := now.In(ctx.Location()).Date() + datePart := FromDate(year, int(month), day, 0, 0, 0, 0) + mixDateAndDuration(&datePart, d) + + return AdjustYear(int64(datePart.Year()), false) +} + // RoundFrac rounds fractional seconds precision with new fsp and returns a new one. // We will use the “round half up” rule, e.g, >= 0.5 -> 1, < 0.5 -> 0, // so 10:10:10.999999 round 0 -> 10:10:11 @@ -1879,7 +1888,7 @@ func getTime(ctx Context, num, originNum int64, tp byte) (Time, error) { return ZeroDatetime, errors.Trace(ErrWrongValue.GenWithStackByArgs(TimeStr, numStr)) } t := NewTime(ct, tp, DefaultFsp) - err := t.check(ctx, nil) + err := t.Check(ctx) return t, errors.Trace(err) } @@ -1972,8 +1981,8 @@ func parseDateTimeFromNum(ctx Context, num int64) (Time, error) { // The valid timestamp range is from '1970-01-01 00:00:01.000000' to '2038-01-19 03:14:07.999999'. // The valid date range is from '1000-01-01' to '9999-12-31' // explicitTz is used to handle a data race of timeZone, refer to https://github.com/pingcap/tidb/issues/40710. It only works for timestamp now, be careful to use it! -func ParseTime(ctx Context, str string, tp byte, fsp int, explicitTz *gotime.Location) (Time, error) { - return parseTime(ctx, str, tp, fsp, false, explicitTz) +func ParseTime(ctx Context, str string, tp byte, fsp int) (Time, error) { + return parseTime(ctx, str, tp, fsp, false) } // ParseTimeFromFloatString is similar to ParseTime, except that it's used to parse a float converted string. @@ -1982,22 +1991,22 @@ func ParseTimeFromFloatString(ctx Context, str string, tp byte, fsp int) (Time, if len(str) >= 3 && str[:3] == "0.0" { return NewTime(ZeroCoreTime, tp, DefaultFsp), nil } - return parseTime(ctx, str, tp, fsp, true, nil) + return parseTime(ctx, str, tp, fsp, true) } -func parseTime(ctx Context, str string, tp byte, fsp int, isFloat bool, explicitTz *gotime.Location) (Time, error) { +func parseTime(ctx Context, str string, tp byte, fsp int, isFloat bool) (Time, error) { fsp, err := CheckFsp(fsp) if err != nil { return NewTime(ZeroCoreTime, tp, DefaultFsp), errors.Trace(err) } - t, err := parseDatetime(ctx, str, fsp, isFloat, explicitTz) + t, err := parseDatetime(ctx, str, fsp, isFloat) if err != nil { return NewTime(ZeroCoreTime, tp, DefaultFsp), errors.Trace(err) } t.SetType(tp) - if err = t.check(ctx, explicitTz); err != nil { + if err = t.Check(ctx); err != nil { return NewTime(ZeroCoreTime, tp, DefaultFsp), errors.Trace(err) } return t, nil @@ -2005,18 +2014,18 @@ func parseTime(ctx Context, str string, tp byte, fsp int, isFloat bool, explicit // ParseDatetime is a helper function wrapping ParseTime with datetime type and default fsp. func ParseDatetime(ctx Context, str string) (Time, error) { - return ParseTime(ctx, str, mysql.TypeDatetime, GetFsp(str), nil) + return ParseTime(ctx, str, mysql.TypeDatetime, GetFsp(str)) } // ParseTimestamp is a helper function wrapping ParseTime with timestamp type and default fsp. func ParseTimestamp(ctx Context, str string) (Time, error) { - return ParseTime(ctx, str, mysql.TypeTimestamp, GetFsp(str), nil) + return ParseTime(ctx, str, mysql.TypeTimestamp, GetFsp(str)) } // ParseDate is a helper function wrapping ParseTime with date type. func ParseDate(ctx Context, str string) (Time, error) { // date has no fractional seconds precision - return ParseTime(ctx, str, mysql.TypeDate, MinFsp, nil) + return ParseTime(ctx, str, mysql.TypeDate, MinFsp) } // ParseTimeFromYear parse a `YYYY` formed year to corresponded Datetime type. @@ -2060,7 +2069,7 @@ func ParseTimeFromNum(ctx Context, num int64, tp byte, fsp int) (Time, error) { t.SetType(tp) t.SetFsp(fsp) - if err := t.check(ctx, nil); err != nil { + if err := t.Check(ctx); err != nil { return NewTime(ZeroCoreTime, tp, DefaultFsp), errors.Trace(err) } return t, nil @@ -2149,16 +2158,12 @@ func checkMonthDay(year, month, day int, allowInvalidDate bool) error { return nil } -func checkTimestampType(ctx Context, t CoreTime, explicitTz *gotime.Location) error { +func checkTimestampType(t CoreTime, tz *gotime.Location) error { if compareTime(t, ZeroCoreTime) == 0 { return nil } var checkTime CoreTime - tz := ctx.Location() - if explicitTz != nil { - tz = explicitTz - } if tz != BoundTimezone { convertTime := NewTime(t, mysql.TypeTimestamp, DefaultFsp) err := convertTime.ConvertTimeZone(tz, BoundTimezone) @@ -2897,7 +2902,7 @@ func (t *Time) StrToDate(typeCtx Context, date, format string) bool { t.SetCoreTime(tm) t.SetType(mysql.TypeDatetime) - if t.check(typeCtx, nil) != nil { + if t.Check(typeCtx) != nil { return false } if warning { diff --git a/pkg/types/time_test.go b/pkg/types/time_test.go index 0af88d4aaf276..bff3fd3f8c8e5 100644 --- a/pkg/types/time_test.go +++ b/pkg/types/time_test.go @@ -147,12 +147,12 @@ func TestDateTime(t *testing.T) { } for _, test := range fspTbl { - v, err := types.ParseTime(typeCtx, test.Input, mysql.TypeDatetime, test.Fsp, nil) + v, err := types.ParseTime(typeCtx, test.Input, mysql.TypeDatetime, test.Fsp) require.NoError(t, err) require.Equal(t, test.Expect, v.String()) } - v, _ := types.ParseTime(typeCtx, "121231113045.9999999", mysql.TypeDatetime, 6, nil) + v, _ := types.ParseTime(typeCtx, "121231113045.9999999", mysql.TypeDatetime, 6) require.Equal(t, 46, v.Second()) require.Equal(t, 0, v.Microsecond()) @@ -615,7 +615,7 @@ func TestCodec(t *testing.T) { } for _, test := range tbl { - v, err := types.ParseTime(typeCtx, test, mysql.TypeDatetime, types.MaxFsp, nil) + v, err := types.ParseTime(typeCtx, test, mysql.TypeDatetime, types.MaxFsp) require.NoError(t, err) packed, _ = v.ToPackedUint() @@ -719,7 +719,7 @@ func TestToNumber(t *testing.T) { } for _, test := range tblDateTime { - v, err := types.ParseTime(typeCtx, test.Input, mysql.TypeDatetime, test.Fsp, nil) + v, err := types.ParseTime(typeCtx, test.Input, mysql.TypeDatetime, test.Fsp) require.NoError(t, err) require.Equal(t, test.Expect, v.ToNumber().String()) } @@ -742,7 +742,7 @@ func TestToNumber(t *testing.T) { } for _, test := range tblDate { - v, err := types.ParseTime(typeCtx, test.Input, mysql.TypeDate, 0, nil) + v, err := types.ParseTime(typeCtx, test.Input, mysql.TypeDate, 0) require.NoError(t, err) require.Equal(t, test.Expect, v.ToNumber().String()) } @@ -860,7 +860,7 @@ func TestRoundFrac(t *testing.T) { } for _, tt := range tbl { - v, err := types.ParseTime(typeCtx, tt.Input, mysql.TypeDatetime, types.MaxFsp, nil) + v, err := types.ParseTime(typeCtx, tt.Input, mysql.TypeDatetime, types.MaxFsp) require.NoError(t, err) nv, err := v.RoundFrac(typeCtx, tt.Fsp) require.NoError(t, err) @@ -885,7 +885,7 @@ func TestRoundFrac(t *testing.T) { } for _, tt := range tbl { - v, err := types.ParseTime(typeCtx, tt.Input, mysql.TypeDatetime, types.MaxFsp, nil) + v, err := types.ParseTime(typeCtx, tt.Input, mysql.TypeDatetime, types.MaxFsp) require.NoError(t, err) nv, err := v.RoundFrac(typeCtx, tt.Fsp) require.NoError(t, err) @@ -947,7 +947,7 @@ func TestConvert(t *testing.T) { } for _, tt := range tbl { - v, err := types.ParseTime(typeCtx, tt.Input, mysql.TypeDatetime, tt.Fsp, nil) + v, err := types.ParseTime(typeCtx, tt.Input, mysql.TypeDatetime, tt.Fsp) require.NoError(t, err) nv, err := v.ConvertToDuration() require.NoError(t, err) @@ -992,7 +992,7 @@ func TestCompare(t *testing.T) { } for _, tt := range tbl { - v1, err := types.ParseTime(typeCtx, tt.Arg1, mysql.TypeDatetime, types.MaxFsp, nil) + v1, err := types.ParseTime(typeCtx, tt.Arg1, mysql.TypeDatetime, types.MaxFsp) require.NoError(t, err) ret, err := v1.CompareString(types.DefaultStmtNoWarningContext, tt.Arg2) @@ -1000,7 +1000,7 @@ func TestCompare(t *testing.T) { require.Equal(t, tt.Ret, ret) } - v1, err := types.ParseTime(typeCtx, "2011-10-10 11:11:11", mysql.TypeDatetime, types.MaxFsp, nil) + v1, err := types.ParseTime(typeCtx, "2011-10-10 11:11:11", mysql.TypeDatetime, types.MaxFsp) require.NoError(t, err) res, err := v1.CompareString(types.DefaultStmtNoWarningContext, "Test should error") require.Error(t, err) @@ -1154,11 +1154,11 @@ func TestTimeAdd(t *testing.T) { typeCtx := types.DefaultStmtNoWarningContext for _, tt := range tbl { - v1, err := types.ParseTime(typeCtx, tt.Arg1, mysql.TypeDatetime, types.MaxFsp, nil) + v1, err := types.ParseTime(typeCtx, tt.Arg1, mysql.TypeDatetime, types.MaxFsp) require.NoError(t, err) dur, _, err := types.ParseDuration(typeCtx, tt.Arg2, types.MaxFsp) require.NoError(t, err) - result, err := types.ParseTime(typeCtx, tt.Ret, mysql.TypeDatetime, types.MaxFsp, nil) + result, err := types.ParseTime(typeCtx, tt.Ret, mysql.TypeDatetime, types.MaxFsp) require.NoError(t, err) v2, err := v1.Add(typeCtx, dur) require.NoError(t, err) @@ -1241,7 +1241,7 @@ func TestCheckTimestamp(t *testing.T) { } for _, tt := range tests { - validTimestamp := types.CheckTimestampTypeForTest(types.NewContext(types.StrictFlags, tt.tz, func(err error) {}), tt.input, nil) + validTimestamp := types.CheckTimestampTypeForTest(tt.input, tt.tz) if tt.expectRetError { require.Errorf(t, validTimestamp, "For %s %s", tt.input, tt.tz) } else { @@ -1298,7 +1298,7 @@ func TestCheckTimestamp(t *testing.T) { } for _, tt := range tests { - validTimestamp := types.CheckTimestampTypeForTest(types.NewContext(types.StrictFlags, tt.tz, func(err error) {}), tt.input, nil) + validTimestamp := types.CheckTimestampTypeForTest(tt.input, tt.tz) if tt.expectRetError { require.Errorf(t, validTimestamp, "For %s %s", tt.input, tt.tz) } else { @@ -1970,9 +1970,9 @@ func TestTimeSub(t *testing.T) { typeCtx := types.DefaultStmtNoWarningContext for _, tt := range tbl { - v1, err := types.ParseTime(typeCtx, tt.Arg1, mysql.TypeDatetime, types.MaxFsp, nil) + v1, err := types.ParseTime(typeCtx, tt.Arg1, mysql.TypeDatetime, types.MaxFsp) require.NoError(t, err) - v2, err := types.ParseTime(typeCtx, tt.Arg2, mysql.TypeDatetime, types.MaxFsp, nil) + v2, err := types.ParseTime(typeCtx, tt.Arg2, mysql.TypeDatetime, types.MaxFsp) require.NoError(t, err) dur, _, err := types.ParseDuration(typeCtx, tt.Ret, types.MaxFsp) require.NoError(t, err) @@ -2166,7 +2166,7 @@ func TestParseWithTimezone(t *testing.T) { }, } for ith, ca := range cases { - v, err := types.ParseTime(types.NewContext(types.StrictFlags, ca.sysTZ, func(err error) {}), ca.lit, mysql.TypeTimestamp, ca.fsp, nil) + v, err := types.ParseTime(types.NewContext(types.StrictFlags, ca.sysTZ, func(err error) {}), ca.lit, mysql.TypeTimestamp, ca.fsp) require.NoErrorf(t, err, "tidb time parse misbehaved on %d", ith) if err != nil { continue @@ -2179,7 +2179,7 @@ func TestParseWithTimezone(t *testing.T) { func TestMarshalTime(t *testing.T) { typeCtx := types.DefaultStmtNoWarningContext - v1, err := types.ParseTime(typeCtx, "2017-01-18 01:01:01.123456", mysql.TypeDatetime, types.MaxFsp, nil) + v1, err := types.ParseTime(typeCtx, "2017-01-18 01:01:01.123456", mysql.TypeDatetime, types.MaxFsp) require.NoError(t, err) j, err := json.Marshal(v1) require.NoError(t, err) @@ -2188,6 +2188,43 @@ func TestMarshalTime(t *testing.T) { require.Equal(t, 0, v1.Compare(v2)) } +func TestDurationConvertToYearFromNow(t *testing.T) { + cases := []struct { + dur types.Duration + nowLit string + sysTZ *time.Location + expected int64 + throughStr bool + err error + }{ + {types.NewDuration(1, 0, 0, 0, 0), "2023-11-13T03:09:00Z", time.UTC, 2023, false, nil}, + {types.NewDuration(40, 0, 0, 0, 0), "2023-12-31T11:00:00Z", time.UTC, 2024, false, nil}, + {types.NewDuration(40, 0, 0, 0, 0), "2023-12-31T11:00:00+12:00", time.UTC, 2023, false, nil}, + {types.NewDuration(-20, 0, 0, 0, 0), "2024-01-01T13:00:00Z", time.UTC, 2023, false, nil}, + {types.NewDuration(-20, 0, 0, 0, 0), "2024-01-01T13:00:00-12:00", time.UTC, 2024, false, nil}, + {types.NewDuration(0, 20, 12, 0, 0), "2023-11-13T03:09:00Z", time.UTC, 2012, true, nil}, + {types.NewDuration(0, 0, 12, 0, 0), "2023-11-13T03:09:00Z", time.UTC, 2012, true, nil}, + {types.NewDuration(0, 0, 0, 0, 0), "2023-11-13T03:09:00Z", time.UTC, 0, true, nil}, + {types.NewDuration(200, 0, 0, 0, 0), "2023-11-13T03:09:00Z", time.UTC, 2155, true, types.ErrWarnDataOutOfRange}, + } + + for _, c := range cases { + ctx := types.NewContext(types.StrictFlags.WithCastTimeToYearThroughConcat(c.throughStr), c.sysTZ, func(_ error) { + require.Fail(t, "shouldn't append warninng") + }) + now, err := time.Parse(time.RFC3339, c.nowLit) + require.NoError(t, err) + + year, err := c.dur.ConvertToYearFromNow(ctx, now) + if c.err != nil { + require.ErrorIs(t, err, c.err) + } else { + require.NoError(t, err) + } + require.Equal(t, c.expected, year, "convert %s + now(%s) as year", c.dur.String(), c.nowLit) + } +} + func BenchmarkFormat(b *testing.B) { t1 := types.NewTime(types.FromGoTime(time.Now()), mysql.TypeTimestamp, 0) for i := 0; i < b.N; i++ { @@ -2200,7 +2237,7 @@ func BenchmarkFormat(b *testing.B) { func BenchmarkTimeAdd(b *testing.B) { typeCtx := types.DefaultStmtNoWarningContext - arg1, _ := types.ParseTime(typeCtx, "2017-01-18", mysql.TypeDatetime, types.MaxFsp, nil) + arg1, _ := types.ParseTime(typeCtx, "2017-01-18", mysql.TypeDatetime, types.MaxFsp) arg2, _, _ := types.ParseDuration(typeCtx, "12:30:59", types.MaxFsp) for i := 0; i < b.N; i++ { _, err := arg1.Add(typeCtx, arg2) diff --git a/pkg/util/chunk/list_test.go b/pkg/util/chunk/list_test.go index 106b9ece6f438..4ec1b777e41b2 100644 --- a/pkg/util/chunk/list_test.go +++ b/pkg/util/chunk/list_test.go @@ -161,12 +161,12 @@ func BenchmarkListGetRow(b *testing.B) { for _, chk := range chks { l.Add(chk) } - rand.Seed(0) + rnd := rand.New(rand.NewSource(0)) ptrs := make([]RowPtr, 0, b.N) for i := 0; i < min(b.N, 10000); i++ { ptrs = append(ptrs, RowPtr{ - ChkIdx: rand.Uint32() % uint32(numChk), - RowIdx: rand.Uint32() % uint32(numRow), + ChkIdx: rnd.Uint32() % uint32(numChk), + RowIdx: rnd.Uint32() % uint32(numRow), }) } for i := 10000; i < cap(ptrs); i++ { diff --git a/pkg/util/chunk/row_container_reader.go b/pkg/util/chunk/row_container_reader.go index e0f3b0e314060..ca124083079c5 100644 --- a/pkg/util/chunk/row_container_reader.go +++ b/pkg/util/chunk/row_container_reader.go @@ -19,6 +19,8 @@ import ( "runtime" "sync" + "github.com/pingcap/errors" + "github.com/pingcap/failpoint" "github.com/pingcap/tidb/pkg/util/logutil" ) @@ -122,6 +124,11 @@ func (reader *rowContainerReader) startWorker() { for chkIdx := 0; chkIdx < reader.rc.NumChunks(); chkIdx++ { chk, err := reader.rc.GetChunk(chkIdx) + failpoint.Inject("get-chunk-error", func(val failpoint.Value) { + if val.(bool) { + err = errors.New("fail to get chunk for test") + } + }) if err != nil { reader.err = err return diff --git a/pkg/util/chunk/row_in_disk_test.go b/pkg/util/chunk/row_in_disk_test.go index 1c27456a94ea3..453b32be292f8 100644 --- a/pkg/util/chunk/row_in_disk_test.go +++ b/pkg/util/chunk/row_in_disk_test.go @@ -118,12 +118,12 @@ func BenchmarkDataInDiskByRowsGetRow(b *testing.B) { b.Fatal(err) } } - rand.Seed(0) + rnd := rand.New(rand.NewSource(0)) ptrs := make([]RowPtr, 0, b.N) for i := 0; i < min(b.N, 10000); i++ { ptrs = append(ptrs, RowPtr{ - ChkIdx: rand.Uint32() % uint32(numChk), - RowIdx: rand.Uint32() % uint32(numRow), + ChkIdx: rnd.Uint32() % uint32(numChk), + RowIdx: rnd.Uint32() % uint32(numRow), }) } for i := 10000; i < cap(ptrs); i++ { diff --git a/pkg/util/codec/BUILD.bazel b/pkg/util/codec/BUILD.bazel index a9ebe3a5eb98a..02f96b5bad490 100644 --- a/pkg/util/codec/BUILD.bazel +++ b/pkg/util/codec/BUILD.bazel @@ -14,7 +14,6 @@ go_library( deps = [ "//pkg/parser/mysql", "//pkg/parser/terror", - "//pkg/sessionctx/stmtctx", "//pkg/types", "//pkg/util/chunk", "//pkg/util/collate", diff --git a/pkg/util/codec/bench_test.go b/pkg/util/codec/bench_test.go index 62cca52d5eb16..3d1efddf79e77 100644 --- a/pkg/util/codec/bench_test.go +++ b/pkg/util/codec/bench_test.go @@ -16,6 +16,7 @@ package codec import ( "testing" + "time" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/types" @@ -30,7 +31,7 @@ func composeEncodedData(size int) []byte { for i := 0; i < size; i++ { values = append(values, types.NewDatum(i)) } - bs, _ := EncodeValue(nil, nil, values...) + bs, _ := EncodeValue(time.UTC, nil, values...) return bs } diff --git a/pkg/util/codec/codec.go b/pkg/util/codec/codec.go index 02ecb2f6d7df1..01cd8399166e7 100644 --- a/pkg/util/codec/codec.go +++ b/pkg/util/codec/codec.go @@ -26,7 +26,6 @@ import ( "github.com/pingcap/errors" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/parser/terror" - "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/chunk" "github.com/pingcap/tidb/pkg/util/collate" @@ -84,7 +83,7 @@ func preRealloc(b []byte, vals []types.Datum, comparable1 bool) []byte { // encode will encode a datum and append it to a byte slice. If comparable1 is true, the encoded bytes can be sorted as it's original order. // If hash is true, the encoded bytes can be checked equal as it's original value. -func encode(sc *stmtctx.StatementContext, b []byte, vals []types.Datum, comparable1 bool) (_ []byte, err error) { +func encode(loc *time.Location, b []byte, vals []types.Datum, comparable1 bool) (_ []byte, err error) { b = preRealloc(b, vals, comparable1) for i, length := 0, len(vals); i < length; i++ { switch vals[i].Kind() { @@ -101,7 +100,7 @@ func encode(sc *stmtctx.StatementContext, b []byte, vals []types.Datum, comparab b = encodeBytes(b, vals[i].GetBytes(), comparable1) case types.KindMysqlTime: b = append(b, uintFlag) - b, err = EncodeMySQLTime(sc, vals[i].GetMysqlTime(), mysql.TypeUnspecified, b) + b, err = EncodeMySQLTime(loc, vals[i].GetMysqlTime(), mysql.TypeUnspecified, b) if err != nil { return b, err } @@ -112,11 +111,6 @@ func encode(sc *stmtctx.StatementContext, b []byte, vals []types.Datum, comparab case types.KindMysqlDecimal: b = append(b, decimalFlag) b, err = EncodeDecimal(b, vals[i].GetMysqlDecimal(), vals[i].Length(), vals[i].Frac()) - if terror.ErrorEqual(err, types.ErrTruncated) { - err = sc.HandleTruncate(err) - } else if terror.ErrorEqual(err, types.ErrOverflow) { - err = sc.HandleOverflow(err, err) - } case types.KindMysqlEnum: b = encodeUnsignedInt(b, vals[i].GetMysqlEnum().Value, comparable1) case types.KindMysqlSet: @@ -124,7 +118,7 @@ func encode(sc *stmtctx.StatementContext, b []byte, vals []types.Datum, comparab case types.KindMysqlBit, types.KindBinaryLiteral: // We don't need to handle errors here since the literal is ensured to be able to store in uint64 in convertToMysqlBit. var val uint64 - val, err = vals[i].GetBinaryLiteral().ToInt(sc.TypeCtxOrDefault()) + val, err = vals[i].GetBinaryLiteral().ToInt(types.StrictContext) terror.Log(errors.Trace(err)) b = encodeUnsignedInt(b, val, comparable1) case types.KindMysqlJSON: @@ -147,7 +141,7 @@ func encode(sc *stmtctx.StatementContext, b []byte, vals []types.Datum, comparab } // EstimateValueSize uses to estimate the value size of the encoded values. -func EstimateValueSize(sc *stmtctx.StatementContext, val types.Datum) (int, error) { +func EstimateValueSize(typeCtx types.Context, val types.Datum) (int, error) { l := 0 switch val.Kind() { case types.KindInt64: @@ -170,7 +164,7 @@ func EstimateValueSize(sc *stmtctx.StatementContext, val types.Datum) (int, erro case types.KindMysqlSet: l = valueSizeOfUnsignedInt(val.GetMysqlSet().Value) case types.KindMysqlBit, types.KindBinaryLiteral: - val, err := val.GetBinaryLiteral().ToInt(sc.TypeCtxOrDefault()) + val, err := val.GetBinaryLiteral().ToInt(typeCtx) terror.Log(errors.Trace(err)) l = valueSizeOfUnsignedInt(val) case types.KindMysqlJSON: @@ -184,14 +178,14 @@ func EstimateValueSize(sc *stmtctx.StatementContext, val types.Datum) (int, erro } // EncodeMySQLTime encodes datum of `KindMysqlTime` to []byte. -func EncodeMySQLTime(sc *stmtctx.StatementContext, t types.Time, tp byte, b []byte) (_ []byte, err error) { +func EncodeMySQLTime(loc *time.Location, t types.Time, tp byte, b []byte) (_ []byte, err error) { // Encoding timestamp need to consider timezone. If it's not in UTC, transform to UTC first. // This is compatible with `PBToExpr > convertTime`, and coprocessor assumes the passed timestamp is in UTC as well. if tp == mysql.TypeUnspecified { tp = t.Type() } - if tp == mysql.TypeTimestamp && sc.TimeZone() != time.UTC { - err = t.ConvertTimeZone(sc.TimeZone(), time.UTC) + if tp == mysql.TypeTimestamp && loc != time.UTC { + err = t.ConvertTimeZone(loc, time.UTC) if err != nil { return nil, err } @@ -293,17 +287,17 @@ func sizeInt(comparable1 bool) int { // EncodeKey appends the encoded values to byte slice b, returns the appended // slice. It guarantees the encoded value is in ascending order for comparison. // For decimal type, datum must set datum's length and frac. -func EncodeKey(sc *stmtctx.StatementContext, b []byte, v ...types.Datum) ([]byte, error) { - return encode(sc, b, v, true) +func EncodeKey(loc *time.Location, b []byte, v ...types.Datum) ([]byte, error) { + return encode(loc, b, v, true) } // EncodeValue appends the encoded values to byte slice b, returning the appended // slice. It does not guarantee the order for comparison. -func EncodeValue(sc *stmtctx.StatementContext, b []byte, v ...types.Datum) ([]byte, error) { - return encode(sc, b, v, false) +func EncodeValue(loc *time.Location, b []byte, v ...types.Datum) ([]byte, error) { + return encode(loc, b, v, false) } -func encodeHashChunkRowIdx(sc *stmtctx.StatementContext, row chunk.Row, tp *types.FieldType, idx int) (flag byte, b []byte, err error) { +func encodeHashChunkRowIdx(typeCtx types.Context, row chunk.Row, tp *types.FieldType, idx int) (flag byte, b []byte, err error) { if row.IsNull(idx) { flag = NilFlag return @@ -384,7 +378,7 @@ func encodeHashChunkRowIdx(sc *stmtctx.StatementContext, row chunk.Row, tp *type case mysql.TypeBit: // We don't need to handle errors here since the literal is ensured to be able to store in uint64 in convertToMysqlBit. flag = uvarintFlag - v, err1 := types.BinaryLiteral(row.GetBytes(idx)).ToInt(sc.TypeCtxOrDefault()) + v, err1 := types.BinaryLiteral(row.GetBytes(idx)).ToInt(typeCtx) terror.Log(errors.Trace(err1)) b = unsafe.Slice((*byte)(unsafe.Pointer(&v)), unsafe.Sizeof(v)) case mysql.TypeJSON: @@ -398,13 +392,13 @@ func encodeHashChunkRowIdx(sc *stmtctx.StatementContext, row chunk.Row, tp *type } // HashChunkColumns writes the encoded value of each row's column, which of index `colIdx`, to h. -func HashChunkColumns(sc *stmtctx.StatementContext, h []hash.Hash64, chk *chunk.Chunk, tp *types.FieldType, colIdx int, buf []byte, isNull []bool) (err error) { - return HashChunkSelected(sc, h, chk, tp, colIdx, buf, isNull, nil, false) +func HashChunkColumns(typeCtx types.Context, h []hash.Hash64, chk *chunk.Chunk, tp *types.FieldType, colIdx int, buf []byte, isNull []bool) (err error) { + return HashChunkSelected(typeCtx, h, chk, tp, colIdx, buf, isNull, nil, false) } // HashChunkSelected writes the encoded value of selected row's column, which of index `colIdx`, to h. // sel indicates which rows are selected. If it is nil, all rows are selected. -func HashChunkSelected(sc *stmtctx.StatementContext, h []hash.Hash64, chk *chunk.Chunk, tp *types.FieldType, colIdx int, buf []byte, +func HashChunkSelected(typeCtx types.Context, h []hash.Hash64, chk *chunk.Chunk, tp *types.FieldType, colIdx int, buf []byte, isNull, sel []bool, ignoreNull bool) (err error) { var b []byte column := chk.Column(colIdx) @@ -629,7 +623,7 @@ func HashChunkSelected(sc *stmtctx.StatementContext, h []hash.Hash64, chk *chunk } else { // We don't need to handle errors here since the literal is ensured to be able to store in uint64 in convertToMysqlBit. buf[0] = uvarintFlag - v, err1 := types.BinaryLiteral(column.GetBytes(i)).ToInt(sc.TypeCtxOrDefault()) + v, err1 := types.BinaryLiteral(column.GetBytes(i)).ToInt(typeCtx) terror.Log(errors.Trace(err1)) b = unsafe.Slice((*byte)(unsafe.Pointer(&v)), sizeUint64) } @@ -676,10 +670,10 @@ func HashChunkSelected(sc *stmtctx.StatementContext, h []hash.Hash64, chk *chunk // HashChunkRow writes the encoded values to w. // If two rows are logically equal, it will generate the same bytes. -func HashChunkRow(sc *stmtctx.StatementContext, w io.Writer, row chunk.Row, allTypes []*types.FieldType, colIdx []int, buf []byte) (err error) { +func HashChunkRow(typeCtx types.Context, w io.Writer, row chunk.Row, allTypes []*types.FieldType, colIdx []int, buf []byte) (err error) { var b []byte for i, idx := range colIdx { - buf[0], b, err = encodeHashChunkRowIdx(sc, row, allTypes[i], idx) + buf[0], b, err = encodeHashChunkRowIdx(typeCtx, row, allTypes[i], idx) if err != nil { return errors.Trace(err) } @@ -697,7 +691,7 @@ func HashChunkRow(sc *stmtctx.StatementContext, w io.Writer, row chunk.Row, allT // EqualChunkRow returns a boolean reporting whether row1 and row2 // with their types and column index are logically equal. -func EqualChunkRow(sc *stmtctx.StatementContext, +func EqualChunkRow(typeCtx types.Context, row1 chunk.Row, allTypes1 []*types.FieldType, colIdx1 []int, row2 chunk.Row, allTypes2 []*types.FieldType, colIdx2 []int, ) (bool, error) { @@ -706,11 +700,11 @@ func EqualChunkRow(sc *stmtctx.StatementContext, } for i := range colIdx1 { idx1, idx2 := colIdx1[i], colIdx2[i] - flag1, b1, err := encodeHashChunkRowIdx(sc, row1, allTypes1[i], idx1) + flag1, b1, err := encodeHashChunkRowIdx(typeCtx, row1, allTypes1[i], idx1) if err != nil { return false, errors.Trace(err) } - flag2, b2, err := encodeHashChunkRowIdx(sc, row2, allTypes2[i], idx2) + flag2, b2, err := encodeHashChunkRowIdx(typeCtx, row2, allTypes2[i], idx2) if err != nil { return false, errors.Trace(err) } @@ -1232,7 +1226,7 @@ func appendFloatToChunk(val float64, chk *chunk.Chunk, colIdx int, ft *types.Fie // HashGroupKey encodes each row of this column and append encoded data into buf. // Only use in the aggregate executor. -func HashGroupKey(sc *stmtctx.StatementContext, n int, col *chunk.Column, buf [][]byte, ft *types.FieldType) ([][]byte, error) { +func HashGroupKey(loc *time.Location, n int, col *chunk.Column, buf [][]byte, ft *types.FieldType) ([][]byte, error) { var err error switch ft.EvalType() { case types.ETInt: @@ -1262,11 +1256,6 @@ func HashGroupKey(sc *stmtctx.StatementContext, n int, col *chunk.Column, buf [] } else { buf[i] = append(buf[i], decimalFlag) buf[i], err = EncodeDecimal(buf[i], &ds[i], ft.GetFlen(), ft.GetDecimal()) - if terror.ErrorEqual(err, types.ErrTruncated) { - err = sc.HandleTruncate(err) - } else if terror.ErrorEqual(err, types.ErrOverflow) { - err = sc.HandleOverflow(err, err) - } if err != nil { return nil, err } @@ -1279,7 +1268,7 @@ func HashGroupKey(sc *stmtctx.StatementContext, n int, col *chunk.Column, buf [] buf[i] = append(buf[i], NilFlag) } else { buf[i] = append(buf[i], uintFlag) - buf[i], err = EncodeMySQLTime(sc, ts[i], mysql.TypeUnspecified, buf[i]) + buf[i], err = EncodeMySQLTime(loc, ts[i], mysql.TypeUnspecified, buf[i]) if err != nil { return nil, err } diff --git a/pkg/util/codec/codec_test.go b/pkg/util/codec/codec_test.go index b223938662c23..c67aac19f188e 100644 --- a/pkg/util/codec/codec_test.go +++ b/pkg/util/codec/codec_test.go @@ -75,14 +75,14 @@ func TestCodecKey(t *testing.T) { sc := stmtctx.NewStmtCtxWithTimeZone(time.Local) for i, datums := range table { comment := fmt.Sprintf("%d %v", i, datums) - b, err := EncodeKey(sc, nil, datums.Input...) + b, err := EncodeKey(sc.TimeZone(), nil, datums.Input...) require.NoError(t, err, comment) args, err := Decode(b, 1) require.NoError(t, err, comment) require.Equal(t, datums.Expect, args, comment) - b, err = EncodeValue(sc, nil, datums.Input...) + b, err = EncodeValue(sc.TimeZone(), nil, datums.Input...) require.NoError(t, err, comment) size, err := estimateValuesSize(sc, datums.Input) @@ -96,14 +96,14 @@ func TestCodecKey(t *testing.T) { var raw types.Datum raw.SetRaw([]byte("raw")) - _, err := EncodeKey(sc, nil, raw) + _, err := EncodeKey(sc.TimeZone(), nil, raw) require.Error(t, err) } func estimateValuesSize(sc *stmtctx.StatementContext, vals []types.Datum) (int, error) { size := 0 for _, val := range vals { - length, err := EstimateValueSize(sc, val) + length, err := EstimateValueSize(sc.TypeCtx(), val) if err != nil { return 0, err } @@ -216,10 +216,10 @@ func TestCodecKeyCompare(t *testing.T) { } sc := stmtctx.NewStmtCtxWithTimeZone(time.Local) for _, datums := range table { - b1, err := EncodeKey(sc, nil, datums.Left...) + b1, err := EncodeKey(sc.TimeZone(), nil, datums.Left...) require.NoError(t, err) - b2, err := EncodeKey(sc, nil, datums.Right...) + b2, err := EncodeKey(sc.TimeZone(), nil, datums.Right...) require.NoError(t, err) comparedRes := bytes.Compare(b1, b2) @@ -520,7 +520,7 @@ func TestBytes(t *testing.T) { func parseTime(t *testing.T, s string) types.Time { sc := stmtctx.NewStmtCtxWithTimeZone(time.UTC) - m, err := types.ParseTime(sc.TypeCtx(), s, mysql.TypeDatetime, types.DefaultFsp, nil) + m, err := types.ParseTime(sc.TypeCtx(), s, mysql.TypeDatetime, types.DefaultFsp) require.NoError(t, err) return m } @@ -541,7 +541,7 @@ func TestTime(t *testing.T) { for _, timeDatum := range tbl { m := types.NewDatum(parseTime(t, timeDatum)) - b, err := EncodeKey(sc, nil, m) + b, err := EncodeKey(sc.TimeZone(), nil, m) require.NoError(t, err) v, err := Decode(b, 1) require.NoError(t, err) @@ -568,9 +568,9 @@ func TestTime(t *testing.T) { m1 := types.NewDatum(parseTime(t, timeData.Arg1)) m2 := types.NewDatum(parseTime(t, timeData.Arg2)) - b1, err := EncodeKey(sc, nil, m1) + b1, err := EncodeKey(sc.TimeZone(), nil, m1) require.NoError(t, err) - b2, err := EncodeKey(sc, nil, m2) + b2, err := EncodeKey(sc.TimeZone(), nil, m2) require.NoError(t, err) ret := bytes.Compare(b1, b2) @@ -588,7 +588,7 @@ func TestDuration(t *testing.T) { for _, duration := range tbl { m := parseDuration(t, duration) - b, err := EncodeKey(sc, nil, types.NewDatum(m)) + b, err := EncodeKey(sc.TimeZone(), nil, types.NewDatum(m)) require.NoError(t, err) v, err := Decode(b, 1) require.NoError(t, err) @@ -610,9 +610,9 @@ func TestDuration(t *testing.T) { m1 := parseDuration(t, durations.Arg1) m2 := parseDuration(t, durations.Arg2) - b1, err := EncodeKey(sc, nil, types.NewDatum(m1)) + b1, err := EncodeKey(sc.TimeZone(), nil, types.NewDatum(m1)) require.NoError(t, err) - b2, err := EncodeKey(sc, nil, types.NewDatum(m2)) + b2, err := EncodeKey(sc.TimeZone(), nil, types.NewDatum(m2)) require.NoError(t, err) ret := bytes.Compare(b1, b2) @@ -643,7 +643,7 @@ func TestDecimal(t *testing.T) { err := dec.FromString([]byte(decimalNum)) require.NoError(t, err) - b, err := EncodeKey(sc, nil, types.NewDatum(dec)) + b, err := EncodeKey(sc.TimeZone(), nil, types.NewDatum(dec)) require.NoError(t, err) v, err := Decode(b, 1) require.NoError(t, err) @@ -734,17 +734,17 @@ func TestDecimal(t *testing.T) { d2.SetLength(30) d2.SetFrac(6) - b1, err := EncodeKey(sc, nil, d1) + b1, err := EncodeKey(sc.TimeZone(), nil, d1) require.NoError(t, err) - b2, err := EncodeKey(sc, nil, d2) + b2, err := EncodeKey(sc.TimeZone(), nil, d2) require.NoError(t, err) ret := bytes.Compare(b1, b2) require.Equalf(t, decimalNums.Ret, ret, "%v %x %x", decimalNums, b1, b2) - b1, err = EncodeValue(sc, b1[:0], d1) + b1, err = EncodeValue(sc.TimeZone(), b1[:0], d1) require.NoError(t, err) - size, err := EstimateValueSize(sc, d1) + size, err := EstimateValueSize(sc.TypeCtx(), d1) require.NoError(t, err) require.Len(t, b1, size) } @@ -761,7 +761,7 @@ func TestDecimal(t *testing.T) { b, err := EncodeDecimal(nil, d.GetMysqlDecimal(), d.Length(), d.Frac()) require.NoError(t, err) decs = append(decs, b) - size, err := EstimateValueSize(sc, d) + size, err := EstimateValueSize(sc.TypeCtx(), d) require.NoError(t, err) // size - 1 because the flag occupy 1 bit. require.Len(t, b, size-1) @@ -782,13 +782,15 @@ func TestDecimal(t *testing.T) { decimalDatum := types.NewDatum(d) decimalDatum.SetLength(20) decimalDatum.SetFrac(5) - _, err = EncodeValue(sc, nil, decimalDatum) + _, err = EncodeValue(sc.TimeZone(), nil, decimalDatum) + err = sc.HandleError(err) require.NoError(t, err) sc.OverflowAsWarning = true decimalDatum.SetLength(12) decimalDatum.SetFrac(10) - _, err = EncodeValue(sc, nil, decimalDatum) + _, err = EncodeValue(sc.TimeZone(), nil, decimalDatum) + err = sc.HandleError(err) require.NoError(t, err) } @@ -878,7 +880,7 @@ func TestCut(t *testing.T) { } sc := stmtctx.NewStmtCtxWithTimeZone(time.Local) for i, datums := range table { - b, err := EncodeKey(sc, nil, datums.Input...) + b, err := EncodeKey(sc.TimeZone(), nil, datums.Input...) require.NoErrorf(t, err, "%d %v", i, datums) var d []byte @@ -887,7 +889,7 @@ func TestCut(t *testing.T) { require.NoError(t, err) require.NotNil(t, d) - ed, err1 := EncodeKey(sc, nil, e) + ed, err1 := EncodeKey(sc.TimeZone(), nil, e) require.NoError(t, err1) require.Equalf(t, ed, d, "%d:%d %#v", i, j, e) } @@ -895,7 +897,7 @@ func TestCut(t *testing.T) { } for i, datums := range table { - b, err := EncodeValue(sc, nil, datums.Input...) + b, err := EncodeValue(sc.TimeZone(), nil, datums.Input...) require.NoErrorf(t, err, "%d %v", i, datums) var d []byte @@ -904,7 +906,7 @@ func TestCut(t *testing.T) { require.NoError(t, err) require.NotNil(t, d) - ed, err1 := EncodeValue(sc, nil, e) + ed, err1 := EncodeValue(sc.TimeZone(), nil, e) require.NoError(t, err1) require.Equalf(t, ed, d, "%d:%d %#v", i, j, e) } @@ -912,7 +914,7 @@ func TestCut(t *testing.T) { } input := 42 - b, err := EncodeValue(sc, nil, types.NewDatum(input)) + b, err := EncodeValue(sc.TimeZone(), nil, types.NewDatum(input)) require.NoError(t, err) rem, n, err := CutColumnID(b) require.NoError(t, err) @@ -935,7 +937,7 @@ func TestCutOneError(t *testing.T) { func TestSetRawValues(t *testing.T) { sc := stmtctx.NewStmtCtxWithTimeZone(time.Local) datums := types.MakeDatums(1, "abc", 1.1, []byte("def")) - rowData, err := EncodeValue(sc, nil, datums...) + rowData, err := EncodeValue(sc.TimeZone(), nil, datums...) require.NoError(t, err) values := make([]types.Datum, 4) @@ -944,7 +946,7 @@ func TestSetRawValues(t *testing.T) { for i, rawVal := range values { require.IsType(t, types.KindRaw, rawVal.Kind()) - encoded, encodedErr := EncodeValue(sc, nil, datums[i]) + encoded, encodedErr := EncodeValue(sc.TimeZone(), nil, datums[i]) require.NoError(t, encodedErr) require.Equal(t, rawVal.GetBytes(), encoded) } @@ -988,13 +990,13 @@ func TestHashGroup(t *testing.T) { tp1 := tp tp1.SetFlen(20) tp1.SetDecimal(5) - _, err := HashGroupKey(sc, 3, chk1.Column(0), buf1, tp1) + _, err := HashGroupKey(sc.TimeZone(), 3, chk1.Column(0), buf1, tp1) require.Error(t, err) tp2 := tp tp2.SetFlen(12) tp2.SetDecimal(10) - _, err = HashGroupKey(sc, 3, chk1.Column(0), buf1, tp2) + _, err = HashGroupKey(sc.TimeZone(), 3, chk1.Column(0), buf1, tp2) require.Error(t, err) } @@ -1068,7 +1070,7 @@ func datumsForTest(_ *stmtctx.StatementContext) ([]types.Datum, []*types.FieldTy func chunkForTest(t *testing.T, sc *stmtctx.StatementContext, datums []types.Datum, tps []*types.FieldType, rowCount int) *chunk.Chunk { decoder := NewDecoder(chunk.New(tps, 32, 32), sc.TimeZone()) for rowIdx := 0; rowIdx < rowCount; rowIdx++ { - encoded, err := EncodeValue(sc, nil, datums...) + encoded, err := EncodeValue(sc.TimeZone(), nil, datums...) require.NoError(t, err) decoder.buf = make([]byte, 0, len(encoded)) for colIdx, tp := range tps { @@ -1084,7 +1086,7 @@ func TestDecodeRange(t *testing.T) { require.Error(t, err) datums := types.MakeDatums(1, "abc", 1.1, []byte("def")) - rowData, err := EncodeValue(nil, nil, datums...) + rowData, err := EncodeValue(time.UTC, nil, datums...) require.NoError(t, err) datums1, _, err := DecodeRange(rowData, len(datums), nil, nil) @@ -1122,10 +1124,10 @@ func testHashChunkRowEqual(t *testing.T, a, b interface{}, equal bool) { chk2.AppendDatum(0, &d) h := crc32.NewIEEE() - err1 := HashChunkRow(sc, h, chk1.GetRow(0), []*types.FieldType{tp1}, []int{0}, buf1) + err1 := HashChunkRow(sc.TypeCtx(), h, chk1.GetRow(0), []*types.FieldType{tp1}, []int{0}, buf1) sum1 := h.Sum32() h.Reset() - err2 := HashChunkRow(sc, h, chk2.GetRow(0), []*types.FieldType{tp2}, []int{0}, buf2) + err2 := HashChunkRow(sc.TypeCtx(), h, chk2.GetRow(0), []*types.FieldType{tp2}, []int{0}, buf2) sum2 := h.Sum32() require.NoError(t, err1) require.NoError(t, err2) @@ -1134,7 +1136,7 @@ func testHashChunkRowEqual(t *testing.T, a, b interface{}, equal bool) { } else { require.NotEqual(t, sum2, sum1) } - e, err := EqualChunkRow(sc, + e, err := EqualChunkRow(sc.TypeCtx(), chk1.GetRow(0), []*types.FieldType{tp1}, []int{0}, chk2.GetRow(0), []*types.FieldType{tp2}, []int{0}) require.NoError(t, err) @@ -1156,16 +1158,16 @@ func TestHashChunkRow(t *testing.T) { colIdx[i] = i } h := crc32.NewIEEE() - err1 := HashChunkRow(sc, h, chk.GetRow(0), tps, colIdx, buf) + err1 := HashChunkRow(sc.TypeCtx(), h, chk.GetRow(0), tps, colIdx, buf) sum1 := h.Sum32() h.Reset() - err2 := HashChunkRow(sc, h, chk.GetRow(0), tps, colIdx, buf) + err2 := HashChunkRow(sc.TypeCtx(), h, chk.GetRow(0), tps, colIdx, buf) sum2 := h.Sum32() require.NoError(t, err1) require.NoError(t, err2) require.Equal(t, sum2, sum1) - e, err := EqualChunkRow(sc, + e, err := EqualChunkRow(sc.TypeCtx(), chk.GetRow(0), tps, colIdx, chk.GetRow(0), tps, colIdx) require.NoError(t, err) @@ -1255,10 +1257,10 @@ func TestHashChunkColumns(t *testing.T) { // Test hash value of the first 12 `Null` columns for i := 0; i < 12; i++ { require.True(t, chk.GetRow(0).IsNull(i)) - err1 := HashChunkSelected(sc, vecHash, chk, tps[i], i, buf, hasNull, sel, false) - err2 := HashChunkRow(sc, rowHash[0], chk.GetRow(0), tps[i:i+1], colIdx[i:i+1], buf) - err3 := HashChunkRow(sc, rowHash[1], chk.GetRow(1), tps[i:i+1], colIdx[i:i+1], buf) - err4 := HashChunkRow(sc, rowHash[2], chk.GetRow(2), tps[i:i+1], colIdx[i:i+1], buf) + err1 := HashChunkSelected(sc.TypeCtx(), vecHash, chk, tps[i], i, buf, hasNull, sel, false) + err2 := HashChunkRow(sc.TypeCtx(), rowHash[0], chk.GetRow(0), tps[i:i+1], colIdx[i:i+1], buf) + err3 := HashChunkRow(sc.TypeCtx(), rowHash[1], chk.GetRow(1), tps[i:i+1], colIdx[i:i+1], buf) + err4 := HashChunkRow(sc.TypeCtx(), rowHash[2], chk.GetRow(2), tps[i:i+1], colIdx[i:i+1], buf) require.NoError(t, err1) require.NoError(t, err2) require.NoError(t, err3) @@ -1280,10 +1282,10 @@ func TestHashChunkColumns(t *testing.T) { require.False(t, chk.GetRow(0).IsNull(i)) - err1 := HashChunkSelected(sc, vecHash, chk, tps[i], i, buf, hasNull, sel, false) - err2 := HashChunkRow(sc, rowHash[0], chk.GetRow(0), tps[i:i+1], colIdx[i:i+1], buf) - err3 := HashChunkRow(sc, rowHash[1], chk.GetRow(1), tps[i:i+1], colIdx[i:i+1], buf) - err4 := HashChunkRow(sc, rowHash[2], chk.GetRow(2), tps[i:i+1], colIdx[i:i+1], buf) + err1 := HashChunkSelected(sc.TypeCtx(), vecHash, chk, tps[i], i, buf, hasNull, sel, false) + err2 := HashChunkRow(sc.TypeCtx(), rowHash[0], chk.GetRow(0), tps[i:i+1], colIdx[i:i+1], buf) + err3 := HashChunkRow(sc.TypeCtx(), rowHash[1], chk.GetRow(1), tps[i:i+1], colIdx[i:i+1], buf) + err4 := HashChunkRow(sc.TypeCtx(), rowHash[2], chk.GetRow(2), tps[i:i+1], colIdx[i:i+1], buf) require.NoError(t, err1) require.NoError(t, err2) diff --git a/pkg/util/codec/collation_test.go b/pkg/util/codec/collation_test.go index 2ffa4f0ffca81..1d8297e09ee18 100644 --- a/pkg/util/codec/collation_test.go +++ b/pkg/util/codec/collation_test.go @@ -52,10 +52,10 @@ func TestHashGroupKeyCollation(t *testing.T) { tp.SetCollate("utf8_general_ci") buf1 := make([][]byte, n) buf2 := make([][]byte, n) - buf1, err := HashGroupKey(sc, n, chk1.Column(0), buf1, tp) + buf1, err := HashGroupKey(sc.TimeZone(), n, chk1.Column(0), buf1, tp) require.NoError(t, err) - buf2, err = HashGroupKey(sc, n, chk2.Column(0), buf2, tp) + buf2, err = HashGroupKey(sc.TimeZone(), n, chk2.Column(0), buf2, tp) require.NoError(t, err) for i := 0; i < n; i++ { @@ -68,9 +68,9 @@ func TestHashGroupKeyCollation(t *testing.T) { tp.SetCollate("utf8_unicode_ci") buf1 = make([][]byte, n) buf2 = make([][]byte, n) - buf1, err = HashGroupKey(sc, n, chk1.Column(0), buf1, tp) + buf1, err = HashGroupKey(sc.TimeZone(), n, chk1.Column(0), buf1, tp) require.NoError(t, err) - buf2, err = HashGroupKey(sc, n, chk2.Column(0), buf2, tp) + buf2, err = HashGroupKey(sc.TimeZone(), n, chk2.Column(0), buf2, tp) require.NoError(t, err) for i := 0; i < n; i++ { @@ -93,8 +93,8 @@ func TestHashChunkRowCollation(t *testing.T) { for i := 0; i < n; i++ { h1 := crc32.NewIEEE() h2 := crc32.NewIEEE() - require.NoError(t, HashChunkRow(sc, h1, chk1.GetRow(i), tps, cols, buf)) - require.NoError(t, HashChunkRow(sc, h2, chk2.GetRow(i), tps, cols, buf)) + require.NoError(t, HashChunkRow(sc.TypeCtx(), h1, chk1.GetRow(i), tps, cols, buf)) + require.NoError(t, HashChunkRow(sc.TypeCtx(), h2, chk2.GetRow(i), tps, cols, buf)) require.NotEqual(t, h2.Sum32(), h1.Sum32()) h1.Reset() h2.Reset() @@ -104,8 +104,8 @@ func TestHashChunkRowCollation(t *testing.T) { for i := 0; i < n; i++ { h1 := crc32.NewIEEE() h2 := crc32.NewIEEE() - require.NoError(t, HashChunkRow(sc, h1, chk1.GetRow(i), tps, cols, buf)) - require.NoError(t, HashChunkRow(sc, h2, chk2.GetRow(i), tps, cols, buf)) + require.NoError(t, HashChunkRow(sc.TypeCtx(), h1, chk1.GetRow(i), tps, cols, buf)) + require.NoError(t, HashChunkRow(sc.TypeCtx(), h2, chk2.GetRow(i), tps, cols, buf)) require.Equal(t, h2.Sum32(), h1.Sum32()) h1.Reset() h2.Reset() @@ -115,8 +115,8 @@ func TestHashChunkRowCollation(t *testing.T) { for i := 0; i < n; i++ { h1 := crc32.NewIEEE() h2 := crc32.NewIEEE() - require.NoError(t, HashChunkRow(sc, h1, chk1.GetRow(i), tps, cols, buf)) - require.NoError(t, HashChunkRow(sc, h2, chk2.GetRow(i), tps, cols, buf)) + require.NoError(t, HashChunkRow(sc.TypeCtx(), h1, chk1.GetRow(i), tps, cols, buf)) + require.NoError(t, HashChunkRow(sc.TypeCtx(), h2, chk2.GetRow(i), tps, cols, buf)) require.Equal(t, h2.Sum32(), h1.Sum32()) h1.Reset() h2.Reset() @@ -133,8 +133,8 @@ func TestHashChunkColumnsCollation(t *testing.T) { h2s := []hash.Hash64{fnv.New64(), fnv.New64(), fnv.New64()} tp.SetCollate("binary") - require.NoError(t, HashChunkColumns(sc, h1s, chk1, tp, 0, buf, hasNull)) - require.NoError(t, HashChunkColumns(sc, h2s, chk2, tp, 0, buf, hasNull)) + require.NoError(t, HashChunkColumns(sc.TypeCtx(), h1s, chk1, tp, 0, buf, hasNull)) + require.NoError(t, HashChunkColumns(sc.TypeCtx(), h2s, chk2, tp, 0, buf, hasNull)) for i := 0; i < n; i++ { require.NotEqual(t, h2s[i].Sum64(), h1s[i].Sum64()) @@ -143,15 +143,15 @@ func TestHashChunkColumnsCollation(t *testing.T) { } tp.SetCollate("utf8_general_ci") - require.NoError(t, HashChunkColumns(sc, h1s, chk1, tp, 0, buf, hasNull)) - require.NoError(t, HashChunkColumns(sc, h2s, chk2, tp, 0, buf, hasNull)) + require.NoError(t, HashChunkColumns(sc.TypeCtx(), h1s, chk1, tp, 0, buf, hasNull)) + require.NoError(t, HashChunkColumns(sc.TypeCtx(), h2s, chk2, tp, 0, buf, hasNull)) for i := 0; i < n; i++ { require.Equal(t, h2s[i].Sum64(), h1s[i].Sum64()) } tp.SetCollate("utf8_unicode_ci") - require.NoError(t, HashChunkColumns(sc, h1s, chk1, tp, 0, buf, hasNull)) - require.NoError(t, HashChunkColumns(sc, h2s, chk2, tp, 0, buf, hasNull)) + require.NoError(t, HashChunkColumns(sc.TypeCtx(), h1s, chk1, tp, 0, buf, hasNull)) + require.NoError(t, HashChunkColumns(sc.TypeCtx(), h2s, chk2, tp, 0, buf, hasNull)) for i := 0; i < n; i++ { require.Equal(t, h2s[i].Sum64(), h1s[i].Sum64()) } diff --git a/pkg/util/dbterror/ddl_terror.go b/pkg/util/dbterror/ddl_terror.go index 67861cfec2d7b..3260488586af3 100644 --- a/pkg/util/dbterror/ddl_terror.go +++ b/pkg/util/dbterror/ddl_terror.go @@ -486,6 +486,10 @@ var ( ) // ErrCheckConstraintDupName is for duplicate check constraint names ErrCheckConstraintDupName = ClassDDL.NewStd(mysql.ErrCheckConstraintDupName) + // ErrUnsupportedDistTask is for `tidb_enable_dist_task enabled` but `tidb_ddl_enable_fast_reorg` disabled. + ErrUnsupportedDistTask = ClassDDL.NewStdErr(mysql.ErrUnsupportedDDLOperation, + parser_mysql.Message(fmt.Sprintf(mysql.MySQLErrName[mysql.ErrUnsupportedDDLOperation].Raw, + "tidb_enable_dist_task setting. To utilize distributed task execution, please enable tidb_ddl_enable_fast_reorg first."), nil)) ) // ReorgRetryableErrCodes is the error codes that are retryable for reorganization. diff --git a/pkg/util/dbutil/BUILD.bazel b/pkg/util/dbutil/BUILD.bazel index 2accabbc687bf..42ad7c68dec62 100644 --- a/pkg/util/dbutil/BUILD.bazel +++ b/pkg/util/dbutil/BUILD.bazel @@ -24,7 +24,6 @@ go_library( "//pkg/parser/model", "//pkg/parser/mysql", "//pkg/planner/core", - "//pkg/sessionctx/stmtctx", "//pkg/types", "//pkg/types/parser_driver", "//pkg/util", diff --git a/pkg/util/dbutil/common.go b/pkg/util/dbutil/common.go index 0ab538e247371..afe32ba03f713 100644 --- a/pkg/util/dbutil/common.go +++ b/pkg/util/dbutil/common.go @@ -32,7 +32,6 @@ import ( "github.com/pingcap/tidb/pkg/parser" "github.com/pingcap/tidb/pkg/parser/model" tmysql "github.com/pingcap/tidb/pkg/parser/mysql" - "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util" "github.com/pingcap/tidb/pkg/util/dbterror" @@ -550,8 +549,7 @@ func AnalyzeValuesFromBuckets(valueString string, cols []*model.ColumnInfo) ([]s for i, col := range cols { if IsTimeTypeAndNeedDecode(col.GetType()) { // check if values[i] is already a time string - sc := stmtctx.NewStmtCtxWithTimeZone(time.UTC) - _, err := types.ParseTime(sc.TypeCtx(), values[i], col.GetType(), types.MinFsp, nil) + _, err := types.ParseTime(types.DefaultStmtNoWarningContext, values[i], col.GetType(), types.MinFsp) if err == nil { continue } diff --git a/pkg/util/ddl-checker/BUILD.bazel b/pkg/util/ddl-checker/BUILD.bazel index c8ee1ac53d0b2..96d5884489418 100644 --- a/pkg/util/ddl-checker/BUILD.bazel +++ b/pkg/util/ddl-checker/BUILD.bazel @@ -12,6 +12,7 @@ go_library( "//pkg/parser", "//pkg/parser/ast", "//pkg/session", + "//pkg/session/types", "//pkg/store/mockstore", "//pkg/util/dbutil", "//pkg/util/logutil", diff --git a/pkg/util/ddl-checker/executable_checker.go b/pkg/util/ddl-checker/executable_checker.go index a448c6b8fa787..15230d9bcefd7 100644 --- a/pkg/util/ddl-checker/executable_checker.go +++ b/pkg/util/ddl-checker/executable_checker.go @@ -23,6 +23,7 @@ import ( "github.com/pingcap/tidb/pkg/parser" "github.com/pingcap/tidb/pkg/parser/ast" "github.com/pingcap/tidb/pkg/session" + sessiontypes "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/store/mockstore" "github.com/pingcap/tidb/pkg/util/logutil" "go.uber.org/atomic" @@ -30,7 +31,7 @@ import ( // ExecutableChecker is a part of TiDB to check the sql's executability type ExecutableChecker struct { - session session.Session + session sessiontypes.Session parser *parser.Parser isClosed *atomic.Bool } diff --git a/pkg/util/importer/rand.go b/pkg/util/importer/rand.go index 60cfd26db3f4c..b039dde424e27 100644 --- a/pkg/util/importer/rand.go +++ b/pkg/util/importer/rand.go @@ -34,10 +34,6 @@ const ( letterIdxMax = 63 / letterIdxBits // # of letter indices fitting in 63 bits ) -func init() { - rand.Seed(time.Now().UnixNano()) -} - func randInt(min int, max int) int { return min + rand.Intn(max-min+1) // nolint:gosec } diff --git a/pkg/util/intest/BUILD.bazel b/pkg/util/intest/BUILD.bazel index bab02008d0df9..d34d4b1cbdbad 100644 --- a/pkg/util/intest/BUILD.bazel +++ b/pkg/util/intest/BUILD.bazel @@ -18,6 +18,7 @@ go_test( flaky = True, deps = [ ":intest", + "@com_github_pingcap_errors//:errors", "@com_github_stretchr_testify//require", ], ) diff --git a/pkg/util/intest/assert.go b/pkg/util/intest/assert.go index c40d6cc71a1da..1d96c38ff1999 100644 --- a/pkg/util/intest/assert.go +++ b/pkg/util/intest/assert.go @@ -21,63 +21,66 @@ import ( "reflect" ) -// Assert asserts a condition. It only works in test (intest.InTest == true). -// You can assert a condition like this to assert a variable `foo` is not nil: `assert.Assert(foo != nil)`. -// Or you can pass foo as a parameter directly for simple: `assert.Assert(foo)` -// You can also assert a function that returns a bool: `intest.Assert(func() bool { return foo != nil })` -// If you pass a function without a signature `func() bool`, the function will always panic. -func Assert(cond any, msgAndArgs ...any) { +// Assert asserts a condition is true +func Assert(cond bool, msgAndArgs ...any) { + if InTest && !cond { + doPanic("", msgAndArgs...) + } +} + +// AssertNoError asserts an error is nil +func AssertNoError(err error, msgAndArgs ...any) { + if InTest && err != nil { + doPanic(fmt.Sprintf("error is not nil: %+v", err), msgAndArgs...) + } +} + +// AssertNotNil asserts an object is not nil +func AssertNotNil(obj any, msgAndArgs ...any) { if InTest { - assert(cond, msgAndArgs...) + Assert(obj != nil, msgAndArgs...) + value := reflect.ValueOf(obj) + switch value.Kind() { + case reflect.Func, reflect.Chan, reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice, reflect.UnsafePointer: + Assert(!value.IsNil(), msgAndArgs...) + } } } // AssertFunc asserts a function condition func AssertFunc(fn func() bool, msgAndArgs ...any) { if InTest { - assert(fn(), msgAndArgs...) + Assert(fn != nil, msgAndArgs...) + Assert(fn(), msgAndArgs...) } } -func assert(cond any, msgAndArgs ...any) { - if !checkAssertObject(cond) { - doPanic(msgAndArgs...) - } +func doPanic(extraMsg string, userMsgAndArgs ...any) { + panic(assertionFailedMsg(extraMsg, userMsgAndArgs...)) } -func doPanic(msgAndArgs ...any) { - panic(assertionFailedMsg(msgAndArgs...)) -} +func assertionFailedMsg(extraMsg string, userMsgAndArgs ...any) string { + msg := "assert failed" + if len(userMsgAndArgs) == 0 { + if extraMsg != "" { + msg = fmt.Sprintf("%s, %s", msg, extraMsg) + } + return msg + } -func assertionFailedMsg(msgAndArgs ...any) string { - if len(msgAndArgs) == 0 { - return "assert failed" + if len(userMsgAndArgs) == 0 { + return fmt.Sprintf("assert failed, %s", extraMsg) } - msg, ok := msgAndArgs[0].(string) + userMsg, ok := userMsgAndArgs[0].(string) if !ok { - msg = fmt.Sprintf("%+v", msgAndArgs[0]) + userMsg = fmt.Sprintf("%+v", userMsgAndArgs[0]) } - msg = fmt.Sprintf("assert failed: %s", msg) - return fmt.Sprintf(msg, msgAndArgs[1:]...) -} - -func checkAssertObject(obj any) bool { - if obj == nil { - return false + msg = fmt.Sprintf("%s, %s", msg, userMsg) + if extraMsg != "" { + msg = fmt.Sprintf("%s, %s", msg, extraMsg) } - value := reflect.ValueOf(obj) - switch value.Kind() { - case reflect.Bool: - return obj.(bool) - case reflect.Func: - panic("you should use `intest.Assert(fn != nil)` to assert a function is not nil, " + - "or use `intest.AssertFunc(fn)` to assert a function's return value is true") - case reflect.Chan, reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice, reflect.UnsafePointer: - return !value.IsNil() - default: - return true - } + return fmt.Sprintf(msg, userMsgAndArgs[1:]...) } diff --git a/pkg/util/intest/assert_test.go b/pkg/util/intest/assert_test.go index c85fc8d5b12fd..6a14cf7939f26 100644 --- a/pkg/util/intest/assert_test.go +++ b/pkg/util/intest/assert_test.go @@ -15,8 +15,10 @@ package intest_test import ( + "strings" "testing" + "github.com/pingcap/errors" "github.com/pingcap/tidb/pkg/util/intest" "github.com/stretchr/testify/require" ) @@ -26,37 +28,55 @@ type foo struct{} func TestAssert(t *testing.T) { require.True(t, intest.InTest) checkAssert(t, true, true) - checkAssert(t, "", true) - checkAssert(t, "abc", true) - checkAssert(t, 0, true) - checkAssert(t, 123, true) - checkAssert(t, foo{}, true) - checkAssert(t, &foo{}, true) checkAssert(t, false, false) - checkAssert(t, false, false, "assert failed: msg1", "msg1") - checkAssert(t, false, false, "assert failed: msg2 a b 1", "msg2 %s %s %d", "a", "b", 1) - checkAssert(t, false, false, "assert failed: 123", 123) - checkAssert(t, nil, false) + checkAssert(t, false, false, "assert failed, msg1", "msg1") + checkAssert(t, false, false, "assert failed, msg2 a b 1", "msg2 %s %s %d", "a", "b", 1) + checkAssert(t, false, false, "assert failed, 123", 123) + checkAssertNotNil(t, "", true) + checkAssertNotNil(t, "abc", true) + checkAssertNotNil(t, 0, true) + checkAssertNotNil(t, 123, true) + checkAssertNotNil(t, foo{}, true) + checkAssertNotNil(t, &foo{}, true) + checkAssertNotNil(t, nil, false) + checkAssertNotNil(t, true, true) + checkAssertNotNil(t, false, true) var f *foo - checkAssert(t, f, false) - checkAssert(t, func() bool { return true }, false, "you should use `intest.Assert(fn != nil)` to assert a function is not nil, or use `intest.AssertFunc(fn)` to assert a function's return value is true") - checkAssert(t, func(_ string) bool { return true }, false, "you should use `intest.Assert(fn != nil)` to assert a function is not nil, or use `intest.AssertFunc(fn)` to assert a function's return value is true") + checkAssertNotNil(t, f, false) + checkAssertNotNil(t, func() bool { return true }, true) + checkAssertNotNil(t, func() bool { return false }, true) + checkAssertNotNil(t, func(_ string) bool { return true }, true) + checkAssertNotNil(t, nil, false, "assert failed, msg1", "msg1") + checkAssertNotNil(t, nil, false, "assert failed, msg2 a b 1", "msg2 %s %s %d", "a", "b", 1) checkFuncAssert(t, func() bool { panic("inner panic1") }, false, "inner panic1") checkFuncAssert(t, func() bool { return true }, true) checkFuncAssert(t, func() bool { return false }, false) - checkFuncAssert(t, func() bool { return false }, false, "assert failed: msg3", "msg3") - checkFuncAssert(t, func() bool { return false }, false, "assert failed: msg4 c d 2", "msg4 %s %s %d", "c", "d", 2) + checkFuncAssert(t, func() bool { return false }, false, "assert failed, msg3", "msg3") + checkFuncAssert(t, func() bool { return false }, false, "assert failed, msg4 c d 2", "msg4 %s %s %d", "c", "d", 2) checkFuncAssert(t, func() bool { panic("inner panic2") }, false, "inner panic2") + checkFuncAssert(t, nil, false) + checkAssertNoError(t, nil, true) + checkAssertNoError(t, errors.New("mock err1"), false, "assert failed, error is not nil: mock err1") + var err error + checkAssertNoError(t, err, true) } func checkFuncAssert(t *testing.T, fn func() bool, pass bool, msgAndArgs ...any) { doCheckAssert(t, intest.AssertFunc, fn, pass, msgAndArgs...) } -func checkAssert(t *testing.T, cond any, pass bool, msgAndArgs ...any) { +func checkAssert(t *testing.T, cond bool, pass bool, msgAndArgs ...any) { doCheckAssert(t, intest.Assert, cond, pass, msgAndArgs...) } +func checkAssertNotNil(t *testing.T, obj any, pass bool, msgAndArgs ...any) { + doCheckAssert(t, intest.AssertNotNil, obj, pass, msgAndArgs...) +} + +func checkAssertNoError(t *testing.T, err error, pass bool, msgAndArgs ...any) { + doCheckAssert(t, intest.AssertNoError, err, pass, msgAndArgs...) +} + func doCheckAssert(t *testing.T, fn any, cond any, pass bool, msgAndArgs ...any) { expectMsg := "assert failed" if len(msgAndArgs) > 0 { @@ -64,32 +84,39 @@ func doCheckAssert(t *testing.T, fn any, cond any, pass bool, msgAndArgs ...any) msgAndArgs = msgAndArgs[1:] } + fail := "" + onlyCheckPrefix := false if !pass { defer func() { + if fail != "" { + require.FailNow(t, fail) + } r := recover() require.NotNil(t, r) - require.Equal(t, expectMsg, r) + if onlyCheckPrefix { + require.True(t, strings.HasPrefix(r.(string), expectMsg), "%q\nshould have prefix \n%q", r, expectMsg) + require.Contains(t, r.(string), expectMsg) + } else { + require.Equal(t, expectMsg, r) + } }() } - testFn, ok := fn.(func(any, ...any)) - if !ok { - if fnAssert, ok := fn.(func(func() bool, ...any)); ok { - testFn = func(any, ...any) { - fnAssert(cond.(func() bool), msgAndArgs...) - } + switch assertFn := fn.(type) { + case func(bool, ...any): + assertFn(cond.(bool), msgAndArgs...) + case func(any, ...any): + assertFn(cond, msgAndArgs...) + case func(func() bool, ...any): + assertFn(cond.(func() bool), msgAndArgs...) + case func(error, ...any): + if cond == nil { + assertFn(nil, msgAndArgs...) } else { - require.FailNow(t, "invalid assert function") + onlyCheckPrefix = true + assertFn(cond.(error), msgAndArgs...) } + default: + fail = "invalid input assert function" } - - if len(msgAndArgs) == 0 { - testFn(cond) - } - - if len(msgAndArgs) == 1 { - testFn(cond, msgAndArgs[0]) - } - - testFn(cond, msgAndArgs...) } diff --git a/pkg/util/intest/common.go b/pkg/util/intest/common.go index 56b928bc9e473..a2ebccd4b3507 100644 --- a/pkg/util/intest/common.go +++ b/pkg/util/intest/common.go @@ -21,7 +21,15 @@ const InTest = false // Assert is a stub function in release build. // See the same function in `util/intest/assert.go` for the real implement in test. -func Assert(_ any, _ ...any) {} +func Assert(_ bool, _ ...any) {} + +// AssertNotNil is a stub function in release build. +// See the same function in `util/intest/assert.go` for the real implement in test. +func AssertNotNil(_ any, _ ...any) {} + +// AssertNoError is a stub function in release build. +// See the same function in `util/intest/assert.go` for the real implement in test. +func AssertNoError(_ error, _ ...any) {} // AssertFunc is a stub function in release build. // See the same function `util/intest/assert.go` for the real implement in test. diff --git a/pkg/util/keydecoder/keydecoder_test.go b/pkg/util/keydecoder/keydecoder_test.go index 26b3c8519d089..072c33e9daff2 100644 --- a/pkg/util/keydecoder/keydecoder_test.go +++ b/pkg/util/keydecoder/keydecoder_test.go @@ -117,7 +117,7 @@ func TestDecodeKey(t *testing.T) { values := types.MakeDatums("abc", 1) sc := stmtctx.NewStmtCtx() - encodedValue, err := codec.EncodeKey(sc, nil, values...) + encodedValue, err := codec.EncodeKey(sc.TimeZone(), nil, values...) assert.Nil(t, err) key = []byte{ 't', @@ -166,7 +166,7 @@ func TestDecodeKey(t *testing.T) { // Index key in a partitioned table. values = types.MakeDatums("abcde", 2) - encodedValue, err = codec.EncodeKey(sc, nil, values...) + encodedValue, err = codec.EncodeKey(sc.TimeZone(), nil, values...) assert.Nil(t, err) key = []byte("t\x80\x00\x00\x00\x00\x00\x00\x06_i\x80\x00\x00\x00\x00\x00\x00\x04") key = append(key, encodedValue...) diff --git a/pkg/util/pdapi/BUILD.bazel b/pkg/util/pdapi/BUILD.bazel deleted file mode 100644 index 64859603979a5..0000000000000 --- a/pkg/util/pdapi/BUILD.bazel +++ /dev/null @@ -1,8 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") - -go_library( - name = "pdapi", - srcs = ["const.go"], - importpath = "github.com/pingcap/tidb/pkg/util/pdapi", - visibility = ["//visibility:public"], -) diff --git a/pkg/util/pdapi/const.go b/pkg/util/pdapi/const.go deleted file mode 100644 index 243c297942a35..0000000000000 --- a/pkg/util/pdapi/const.go +++ /dev/null @@ -1,99 +0,0 @@ -// 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. - -package pdapi - -import ( - "fmt" - "time" -) - -// The following constants are the APIs of PD server. -const ( - HotRead = "/pd/api/v1/hotspot/regions/read" - HotWrite = "/pd/api/v1/hotspot/regions/write" - HotHistory = "/pd/api/v1/hotspot/regions/history" - Regions = "/pd/api/v1/regions" - StoreRegions = "/pd/api/v1/regions/store" - ScanRegions = "/pd/api/v1/regions/key" - EmptyRegions = "/pd/api/v1/regions/check/empty-region" - AccelerateSchedule = "/pd/api/v1/regions/accelerate-schedule" - RegionByID = "/pd/api/v1/region/id" - RegionByKey = "/pd/api/v1/region/key" - store = "/pd/api/v1/store" - Stores = "/pd/api/v1/stores" - Status = "/pd/api/v1/status" - RegionStats = "/pd/api/v1/stats/region" - Version = "/pd/api/v1/version" - Config = "/pd/api/v1/config" - ClusterVersion = "/pd/api/v1/config/cluster-version" - ScheduleConfig = "/pd/api/v1/config/schedule" - ReplicateConfig = "/pd/api/v1/config/replicate" - PlacementRule = "/pd/api/v1/config/rule" - PlacementRules = "/pd/api/v1/config/rules" - PlacementRulesGroup = "/pd/api/v1/config/rules/group" - RegionLabelRule = "/pd/api/v1/config/region-label/rule" - Schedulers = "/pd/api/v1/schedulers" - scatterRangeScheduler = "/pd/api/v1/schedulers/scatter-range-" - ResetTS = "/pd/api/v1/admin/reset-ts" - BaseAllocID = "/pd/api/v1/admin/base-alloc-id" - SnapshotRecoveringMark = "/pd/api/v1/admin/cluster/markers/snapshot-recovering" - MinResolvedTS = "/pd/api/v1/min-resolved-ts" - PProfProfile = "/pd/api/v1/debug/pprof/profile" - PProfHeap = "/pd/api/v1/debug/pprof/heap" - PProfMutex = "/pd/api/v1/debug/pprof/mutex" - PProfAllocs = "/pd/api/v1/debug/pprof/allocs" - PProfBlock = "/pd/api/v1/debug/pprof/block" - PProfGoroutine = "/pd/api/v1/debug/pprof/goroutine" -) - -// ConfigWithTTLSeconds returns the config API with the TTL seconds parameter. -func ConfigWithTTLSeconds(ttlSeconds float64) string { - return fmt.Sprintf("%s?ttlSecond=%.0f", Config, ttlSeconds) -} - -// StoreByID returns the store API with store ID parameter. -func StoreByID(id uint64) string { - return fmt.Sprintf("%s/%d", store, id) -} - -// StoreLabelByID returns the store label API with store ID parameter. -func StoreLabelByID(id uint64) string { - return fmt.Sprintf("%s/%d/label", store, id) -} - -// RegionStatsByStartEndKey returns the region stats API with start key and end key parameters. -func RegionStatsByStartEndKey(startKey, endKey string) string { - return fmt.Sprintf("%s?start_key=%s&end_key=%s", RegionStats, startKey, endKey) -} - -// SchedulerByName returns the scheduler API with the given scheduler name. -func SchedulerByName(name string) string { - return fmt.Sprintf("%s/%s", Schedulers, name) -} - -// ScatterRangeSchedulerWithName returns the scatter range scheduler API with name parameter. -func ScatterRangeSchedulerWithName(name string) string { - return fmt.Sprintf("%s%s", scatterRangeScheduler, name) -} - -// PProfProfileAPIWithInterval returns the pprof profile API with interval parameter. -func PProfProfileAPIWithInterval(interval time.Duration) string { - return fmt.Sprintf("%s?seconds=%d", PProfProfile, interval/time.Second) -} - -// PProfGoroutineWithDebugLevel returns the pprof goroutine API with debug level parameter. -func PProfGoroutineWithDebugLevel(level int) string { - return fmt.Sprintf("%s?debug=%d", PProfGoroutine, level) -} diff --git a/pkg/util/prefetch/BUILD.bazel b/pkg/util/prefetch/BUILD.bazel new file mode 100644 index 0000000000000..29b6ff8d31096 --- /dev/null +++ b/pkg/util/prefetch/BUILD.bazel @@ -0,0 +1,17 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "prefetch", + srcs = ["reader.go"], + importpath = "github.com/pingcap/tidb/pkg/util/prefetch", + visibility = ["//visibility:public"], +) + +go_test( + name = "prefetch_test", + timeout = "short", + srcs = ["reader_test.go"], + embed = [":prefetch"], + flaky = True, + deps = ["@com_github_stretchr_testify//require"], +) diff --git a/pkg/util/prefetch/reader.go b/pkg/util/prefetch/reader.go new file mode 100644 index 0000000000000..f61d5bf016764 --- /dev/null +++ b/pkg/util/prefetch/reader.go @@ -0,0 +1,113 @@ +// Copyright 2023 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 prefetch + +import ( + "bytes" + "io" + "sync" +) + +// Reader is a reader that prefetches data from the underlying reader. +type Reader struct { + r io.ReadCloser + curBufReader *bytes.Reader + buf [2][]byte + bufIdx int + bufCh chan []byte + err error // after bufCh is closed + wg sync.WaitGroup + + closed bool + closedCh chan struct{} +} + +// NewReader creates a new Reader. +func NewReader(r io.ReadCloser, prefetchSize int) io.ReadCloser { + ret := &Reader{ + r: r, + bufCh: make(chan []byte), + err: nil, + closedCh: make(chan struct{}), + } + ret.buf[0] = make([]byte, prefetchSize/2) + ret.buf[1] = make([]byte, prefetchSize/2) + ret.wg.Add(1) + go ret.run() + return ret +} + +func (r *Reader) run() { + defer r.wg.Done() + for { + r.bufIdx = (r.bufIdx + 1) % 2 + buf := r.buf[r.bufIdx] + n, err := r.r.Read(buf) + buf = buf[:n] + select { + case <-r.closedCh: + return + case r.bufCh <- buf: + } + if err != nil { + r.err = err + close(r.bufCh) + return + } + } +} + +// Read implements io.Reader. Read should not be called concurrently with Close. +func (r *Reader) Read(data []byte) (int, error) { + total := 0 + for { + if r.curBufReader == nil { + b, ok := <-r.bufCh + if !ok { + if total > 0 { + return total, nil + } + return 0, r.err + } + + r.curBufReader = bytes.NewReader(b) + } + + expected := len(data) + n, err := r.curBufReader.Read(data) + total += n + if n == expected { + return total, nil + } + + data = data[n:] + if err == io.EOF || r.curBufReader.Len() == 0 { + r.curBufReader = nil + continue + } + } +} + +// Close implements io.Closer. Close should not be called concurrently with Read. +func (r *Reader) Close() error { + if r.closed { + return nil + } + ret := r.r.Close() + close(r.closedCh) + r.wg.Wait() + r.closed = true + return ret +} diff --git a/pkg/util/prefetch/reader_test.go b/pkg/util/prefetch/reader_test.go new file mode 100644 index 0000000000000..0d2972ed80289 --- /dev/null +++ b/pkg/util/prefetch/reader_test.go @@ -0,0 +1,82 @@ +// Copyright 2023 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 prefetch + +import ( + "bytes" + "io" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestBasic(t *testing.T) { + source := bytes.NewReader([]byte("01234567890")) + r := NewReader(io.NopCloser(source), 3) + buf := make([]byte, 1) + n, err := r.Read(buf) + require.NoError(t, err) + require.EqualValues(t, 1, n) + require.EqualValues(t, "0", buf[:n]) + + buf = make([]byte, 2) + n, err = r.Read(buf) + require.NoError(t, err) + require.EqualValues(t, 2, n) + require.EqualValues(t, "12", buf[:n]) + + buf = make([]byte, 3) + n, err = r.Read(buf) + require.NoError(t, err) + require.EqualValues(t, 3, n) + require.EqualValues(t, "345", buf[:n]) + + buf = make([]byte, 4) + n, err = r.Read(buf) + require.NoError(t, err) + require.EqualValues(t, 4, n) + require.EqualValues(t, "6789", buf[:n]) + n, err = r.Read(buf) + require.NoError(t, err) + require.EqualValues(t, 1, n) + require.EqualValues(t, "0", buf[:n]) + _, err = r.Read(buf) + require.ErrorIs(t, err, io.EOF) + + source = bytes.NewReader([]byte("01234567890")) + r = NewReader(io.NopCloser(source), 3) + buf = make([]byte, 11) + n, err = r.Read(buf) + require.NoError(t, err) + require.EqualValues(t, 11, n) + _, err = r.Read(buf) + require.ErrorIs(t, err, io.EOF) + + source = bytes.NewReader([]byte("01234")) + r = NewReader(io.NopCloser(source), 100) + buf = make([]byte, 11) + n, err = r.Read(buf) + require.NoError(t, err) + require.EqualValues(t, 5, n) + _, err = r.Read(buf) + require.ErrorIs(t, err, io.EOF) +} + +func TestCloseBeforeDrainRead(t *testing.T) { + data := make([]byte, 1024) + r := NewReader(io.NopCloser(bytes.NewReader(data)), 2) + err := r.Close() + require.NoError(t, err) +} diff --git a/pkg/util/ranger/checker.go b/pkg/util/ranger/checker.go index 7d769a029b2fd..2c7812b6cdb3f 100644 --- a/pkg/util/ranger/checker.go +++ b/pkg/util/ranger/checker.go @@ -17,13 +17,16 @@ package ranger import ( "github.com/pingcap/tidb/pkg/expression" "github.com/pingcap/tidb/pkg/parser/ast" + "github.com/pingcap/tidb/pkg/parser/charset" "github.com/pingcap/tidb/pkg/parser/mysql" + "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/collate" ) // conditionChecker checks if this condition can be pushed to index planner. type conditionChecker struct { + ctx sessionctx.Context checkerCol *expression.Column length int optPrefixIndexSingleScan bool @@ -166,11 +169,22 @@ func (c *conditionChecker) checkLikeFunc(scalar *expression.ScalarFunction) (isA if err != nil { return false, true } + likeFuncReserve := !c.isFullLengthColumn() + + // Different from `=`, trailing spaces are always significant, and can't be ignored in `like`. + // In tidb's implementation, for PAD SPACE collations, the trailing spaces are removed in the index key. So we are + // unable to distinguish 'xxx' from 'xxx ' by a single index range scan, and we may read more data than needed by + // the `like` function. Therefore, a Selection is needed to filter the data. + // Since all collations, except for binary, implemented in tidb are PAD SPACE collations for now, we use a simple + // collation != binary check here. + if collation != charset.CollationBin { + likeFuncReserve = true + } + if len(patternStr) == 0 { - return true, !c.isFullLengthColumn() + return true, likeFuncReserve } escape := byte(scalar.GetArgs()[2].(*expression.Constant).Value.GetInt64()) - likeFuncReserve := !c.isFullLengthColumn() for i := 0; i < len(patternStr); i++ { if patternStr[i] == escape { i++ @@ -209,7 +223,7 @@ func (c *conditionChecker) checkLikeFunc(scalar *expression.ScalarFunction) (isA func (c *conditionChecker) matchColumn(expr expression.Expression) bool { // Check if virtual expression column matched if c.checkerCol != nil { - return c.checkerCol.EqualByExprAndID(nil, expr) + return c.checkerCol.EqualByExprAndID(c.ctx, expr) } return false } diff --git a/pkg/util/ranger/detacher.go b/pkg/util/ranger/detacher.go index b9fe83d0d5d11..b898e2260eeb9 100644 --- a/pkg/util/ranger/detacher.go +++ b/pkg/util/ranger/detacher.go @@ -131,7 +131,7 @@ func getPotentialEqOrInColOffset(sctx sessionctx.Context, expr expression.Expres return -1 } if constVal, ok := f.GetArgs()[1].(*expression.Constant); ok { - val, err := constVal.Eval(chunk.Row{}) + val, err := constVal.Eval(sctx, chunk.Row{}) if err != nil || (!sctx.GetSessionVars().RegardNULLAsPoint && val.IsNull()) { // treat col<=>null as range scan instead of point get to avoid incorrect results // when nullable unique index has multiple matches for filter x is null @@ -139,7 +139,7 @@ func getPotentialEqOrInColOffset(sctx sessionctx.Context, expr expression.Expres } for i, col := range cols { // When cols are a generated expression col, compare them in terms of virtual expr. - if col.EqualByExprAndID(nil, c) { + if col.EqualByExprAndID(sctx, c) { return i } } @@ -153,12 +153,12 @@ func getPotentialEqOrInColOffset(sctx sessionctx.Context, expr expression.Expres return -1 } if constVal, ok := f.GetArgs()[0].(*expression.Constant); ok { - val, err := constVal.Eval(chunk.Row{}) + val, err := constVal.Eval(sctx, chunk.Row{}) if err != nil || (!sctx.GetSessionVars().RegardNULLAsPoint && val.IsNull()) { return -1 } for i, col := range cols { - if col.Equal(nil, c) { + if col.EqualColumn(c) { return i } } @@ -178,7 +178,7 @@ func getPotentialEqOrInColOffset(sctx sessionctx.Context, expr expression.Expres } } for i, col := range cols { - if col.Equal(nil, c) { + if col.EqualColumn(c) { return i } } @@ -373,6 +373,7 @@ func (d *rangeDetacher) detachCNFCondAndBuildRangeForIndex(conditions []expressi checkerCol: d.cols[eqOrInCount], length: d.lengths[eqOrInCount], optPrefixIndexSingleScan: d.sctx.GetSessionVars().OptPrefixIndexSingleScan, + ctx: d.sctx, } if considerDNF { bestCNFItemRes, columnValues, err := extractBestCNFItemRanges(d.sctx, conditions, d.cols, d.lengths, d.rangeMaxSize) @@ -607,7 +608,7 @@ func extractValueInfo(expr expression.Expression) *valueInfo { func ExtractEqAndInCondition(sctx sessionctx.Context, conditions []expression.Expression, cols []*expression.Column, lengths []int) ([]expression.Expression, []expression.Expression, []expression.Expression, []*valueInfo, bool) { var filters []expression.Expression - rb := builder{sc: sctx.GetSessionVars().StmtCtx} + rb := builder{ctx: sctx} accesses := make([]expression.Expression, len(cols)) points := make([][]*point, len(cols)) mergedAccesses := make([]expression.Expression, len(cols)) @@ -712,8 +713,9 @@ func (d *rangeDetacher) detachDNFCondAndBuildRangeForIndex(condition *expression checkerCol: d.cols[0], length: d.lengths[0], optPrefixIndexSingleScan: d.sctx.GetSessionVars().OptPrefixIndexSingleScan, + ctx: d.sctx, } - rb := builder{sc: d.sctx.GetSessionVars().StmtCtx} + rb := builder{ctx: d.sctx} dnfItems := expression.FlattenDNFConditions(condition) newAccessItems := make([]expression.Expression, 0, len(dnfItems)) var totalRanges Ranges @@ -984,6 +986,7 @@ func ExtractAccessConditionsForColumn(ctx sessionctx.Context, conds []expression checkerCol: col, length: types.UnspecifiedLength, optPrefixIndexSingleScan: ctx.GetSessionVars().OptPrefixIndexSingleScan, + ctx: ctx, } accessConds := make([]expression.Expression, 0, 8) filter := func(expr expression.Expression) bool { @@ -999,6 +1002,7 @@ func DetachCondsForColumn(sctx sessionctx.Context, conds []expression.Expression checkerCol: col, length: types.UnspecifiedLength, optPrefixIndexSingleScan: sctx.GetSessionVars().OptPrefixIndexSingleScan, + ctx: sctx, } return detachColumnCNFConditions(sctx, conds, checker) } @@ -1022,6 +1026,7 @@ func MergeDNFItems4Col(ctx sessionctx.Context, dnfItems []expression.Expression) checkerCol: cols[0], length: types.UnspecifiedLength, optPrefixIndexSingleScan: ctx.GetSessionVars().OptPrefixIndexSingleScan, + ctx: ctx, } // If we can't use this condition to build range, we can't merge it. // Currently, we assume if every condition in a DNF expression can pass this check, then `Selectivity` must be able to @@ -1096,14 +1101,14 @@ func AddGcColumn4InCond(sctx sessionctx.Context, for i, arg := range sf.GetArgs()[1:] { // get every const value and calculate tidb_shard(val) con := arg.(*expression.Constant) - conVal, err := con.Eval(chunk.Row{}) + conVal, err := con.Eval(sctx, chunk.Row{}) if err != nil { return accessesCond, err } record[0] = conVal mutRow := chunk.MutRowFromDatums(record) - exprVal, err := expr.Eval(mutRow.ToRow()) + exprVal, err := expr.Eval(sctx, mutRow.ToRow()) if err != nil { return accessesCond, err } @@ -1164,7 +1169,7 @@ func AddGcColumn4EqCond(sctx sessionctx.Context, } mutRow := chunk.MutRowFromDatums(record) - evaluated, err := expr.Eval(mutRow.ToRow()) + evaluated, err := expr.Eval(sctx, mutRow.ToRow()) if err != nil { return accessesCond, err } @@ -1261,10 +1266,7 @@ func AddExpr4EqAndInCondition(sctx sessionctx.Context, conditions []expression.E // is empty. // // @retval - return true if it needs to addr tidb_shard() prefix, ohterwise return false -func NeedAddGcColumn4ShardIndex( - cols []*expression.Column, - accessCond []expression.Expression, - columnValues []*valueInfo) bool { +func NeedAddGcColumn4ShardIndex(cols []*expression.Column, accessCond []expression.Expression, columnValues []*valueInfo) bool { // the columns of shard index shoude be more than 2, like (tidb_shard(a),a,...) // check cols and columnValues in the sub call function if len(accessCond) < 2 || len(cols) < 2 { @@ -1370,7 +1372,7 @@ func NeedAddColumn4InCond(cols []*expression.Column, accessCond []expression.Exp } if len(fields) != 1 || - !fields[0].Equal(nil, c) { + !fields[0].EqualColumn(c) { return false } @@ -1425,7 +1427,7 @@ func IsValidShardIndex(cols []*expression.Column) bool { // parameter of tidb_shard must be the second column of the input index columns col, ok := shardFunc.GetArgs()[0].(*expression.Column) - if !ok || !col.Equal(nil, cols[1]) { + if !ok || !col.EqualColumn(cols[1]) { return false } diff --git a/pkg/util/ranger/points.go b/pkg/util/ranger/points.go index 487c885c749b4..feebebb36441d 100644 --- a/pkg/util/ranger/points.go +++ b/pkg/util/ranger/points.go @@ -25,7 +25,7 @@ import ( "github.com/pingcap/tidb/pkg/expression" "github.com/pingcap/tidb/pkg/parser/ast" "github.com/pingcap/tidb/pkg/parser/mysql" - "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" + "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/collate" @@ -86,7 +86,7 @@ func (rp *point) Clone(value types.Datum) *point { type pointSorter struct { err error collator collate.Collator - sc *stmtctx.StatementContext + tc types.Context points []*point } @@ -97,25 +97,25 @@ func (r *pointSorter) Len() int { func (r *pointSorter) Less(i, j int) bool { a := r.points[i] b := r.points[j] - less, err := rangePointLess(r.sc, a, b, r.collator) + less, err := rangePointLess(r.tc, a, b, r.collator) if err != nil { r.err = err } return less } -func rangePointLess(sc *stmtctx.StatementContext, a, b *point, collator collate.Collator) (bool, error) { +func rangePointLess(tc types.Context, a, b *point, collator collate.Collator) (bool, error) { if a.value.Kind() == types.KindMysqlEnum && b.value.Kind() == types.KindMysqlEnum { - return rangePointEnumLess(sc, a, b) + return rangePointEnumLess(a, b) } - cmp, err := a.value.Compare(sc.TypeCtx(), &b.value, collator) + cmp, err := a.value.Compare(tc, &b.value, collator) if cmp != 0 { return cmp < 0, nil } return rangePointEqualValueLess(a, b), errors.Trace(err) } -func rangePointEnumLess(_ *stmtctx.StatementContext, a, b *point) (bool, error) { +func rangePointEnumLess(a, b *point) (bool, error) { cmp := cmp.Compare(a.value.GetInt64(), b.value.GetInt64()) if cmp != 0 { return cmp < 0, nil @@ -183,7 +183,7 @@ func NullRange() Ranges { // builder is the range builder struct. type builder struct { err error - sc *stmtctx.StatementContext + ctx sessionctx.Context } func (r *builder) build(expr expression.Expression, collator collate.Collator) []*point { @@ -200,7 +200,7 @@ func (r *builder) build(expr expression.Expression, collator collate.Collator) [ } func (r *builder) buildFromConstant(expr *expression.Constant) []*point { - dt, err := expr.Eval(chunk.Row{}) + dt, err := expr.Eval(r.ctx, chunk.Row{}) if err != nil { r.err = err return nil @@ -209,7 +209,8 @@ func (r *builder) buildFromConstant(expr *expression.Constant) []*point { return nil } - val, err := dt.ToBool(r.sc.TypeCtx()) + tc := r.ctx.GetSessionVars().StmtCtx.TypeCtx() + val, err := dt.ToBool(tc) if err != nil { r.err = err return nil @@ -242,6 +243,7 @@ func (r *builder) buildFromBinOp(expr *expression.ScalarFunction) []*point { ft *types.FieldType ) + tc := r.ctx.GetSessionVars().StmtCtx.TypeCtx() // refineValueAndOp refines the constant datum and operator: // 1. for string type since we may eval the constant to another collation instead of its own collation. // 2. for year type since 2-digit year value need adjustment, see https://dev.mysql.com/doc/refman/5.6/en/year.html @@ -254,11 +256,11 @@ func (r *builder) buildFromBinOp(expr *expression.ScalarFunction) []*point { // If the original value is adjusted, we need to change the condition. // For example, col < 2156. Since the max year is 2155, 2156 is changed to 2155. // col < 2155 is wrong. It should be col <= 2155. - preValue, err1 := value.ToInt64(r.sc.TypeCtx()) + preValue, err1 := value.ToInt64(tc) if err1 != nil { return err1 } - *value, err = value.ConvertToMysqlYear(r.sc.TypeCtx(), col.RetType) + *value, err = value.ConvertToMysqlYear(tc, col.RetType) if errors.ErrorEqual(err, types.ErrWarnDataOutOfRange) { // Keep err for EQ and NE. switch *op { @@ -283,7 +285,7 @@ func (r *builder) buildFromBinOp(expr *expression.ScalarFunction) []*point { var ok bool if col, ok = expr.GetArgs()[0].(*expression.Column); ok { ft = col.RetType - value, err = expr.GetArgs()[1].Eval(chunk.Row{}) + value, err = expr.GetArgs()[1].Eval(r.ctx, chunk.Row{}) if err != nil { return nil } @@ -294,7 +296,7 @@ func (r *builder) buildFromBinOp(expr *expression.ScalarFunction) []*point { return nil } ft = col.RetType - value, err = expr.GetArgs()[0].Eval(chunk.Row{}) + value, err = expr.GetArgs()[0].Eval(r.ctx, chunk.Row{}) if err != nil { return nil } @@ -335,7 +337,7 @@ func (r *builder) buildFromBinOp(expr *expression.ScalarFunction) []*point { } if ft.GetType() == mysql.TypeEnum && ft.EvalType() == types.ETString { - return handleEnumFromBinOp(r.sc, ft, value, op) + return handleEnumFromBinOp(tc, ft, value, op) } switch op { @@ -452,7 +454,7 @@ func handleBoundCol(ft *types.FieldType, val types.Datum, op string) (types.Datu return val, op, true } -func handleEnumFromBinOp(sc *stmtctx.StatementContext, ft *types.FieldType, val types.Datum, op string) []*point { +func handleEnumFromBinOp(tc types.Context, ft *types.FieldType, val types.Datum, op string) []*point { res := make([]*point, 0, len(ft.GetElems())*2) appendPointFunc := func(d types.Datum) { res = append(res, &point{value: d, excl: false, start: true}) @@ -473,7 +475,7 @@ func handleEnumFromBinOp(sc *stmtctx.StatementContext, ft *types.FieldType, val } d := types.NewCollateMysqlEnumDatum(tmpEnum, ft.GetCollate()) - if v, err := d.Compare(sc.TypeCtx(), &val, collate.GetCollator(ft.GetCollate())); err == nil { + if v, err := d.Compare(tc, &val, collate.GetCollator(ft.GetCollate())); err == nil { switch op { case ast.LT: if v < 0 { @@ -558,13 +560,14 @@ func (r *builder) buildFromIn(expr *expression.ScalarFunction) ([]*point, bool) rangePoints := make([]*point, 0, len(list)*2) hasNull := false colCollate := expr.GetArgs()[0].GetType().GetCollate() + tc := r.ctx.GetSessionVars().StmtCtx.TypeCtx() for _, e := range list { v, ok := e.(*expression.Constant) if !ok { r.err = ErrUnsupportedType.GenWithStack("expr:%v is not constant", e) return getFullRange(), hasNull } - dt, err := v.Eval(chunk.Row{}) + dt, err := v.Eval(r.ctx, chunk.Row{}) if err != nil { r.err = ErrUnsupportedType.GenWithStack("expr:%v is not evaluated", e) return getFullRange(), hasNull @@ -585,7 +588,7 @@ func (r *builder) buildFromIn(expr *expression.ScalarFunction) ([]*point, bool) err = parseErr } default: - dt, err = dt.ConvertTo(r.sc.TypeCtx(), expr.GetArgs()[0].GetType()) + dt, err = dt.ConvertTo(tc, expr.GetArgs()[0].GetType()) } if err != nil { @@ -594,7 +597,7 @@ func (r *builder) buildFromIn(expr *expression.ScalarFunction) ([]*point, bool) } } if expr.GetArgs()[0].GetType().GetType() == mysql.TypeYear { - dt, err = dt.ConvertToMysqlYear(r.sc.TypeCtx(), expr.GetArgs()[0].GetType()) + dt, err = dt.ConvertToMysqlYear(tc, expr.GetArgs()[0].GetType()) if err != nil { // in (..., an impossible value (not valid year), ...), the range is empty, so skip it. continue @@ -610,7 +613,7 @@ func (r *builder) buildFromIn(expr *expression.ScalarFunction) ([]*point, bool) endPoint := &point{value: endValue} rangePoints = append(rangePoints, startPoint, endPoint) } - sorter := pointSorter{points: rangePoints, sc: r.sc, collator: collate.GetCollator(colCollate)} + sorter := pointSorter{points: rangePoints, tc: tc, collator: collate.GetCollator(colCollate)} sort.Sort(&sorter) if sorter.err != nil { r.err = sorter.err @@ -637,7 +640,7 @@ func (r *builder) newBuildFromPatternLike(expr *expression.ScalarFunction) []*po if !collate.CompatibleCollate(expr.GetArgs()[0].GetType().GetCollate(), collation) { return getFullRange() } - pdt, err := expr.GetArgs()[1].(*expression.Constant).Eval(chunk.Row{}) + pdt, err := expr.GetArgs()[1].(*expression.Constant).Eval(r.ctx, chunk.Row{}) tpOfPattern := expr.GetArgs()[0].GetType() if err != nil { r.err = errors.Trace(err) @@ -654,7 +657,7 @@ func (r *builder) newBuildFromPatternLike(expr *expression.ScalarFunction) []*po return []*point{startPoint, endPoint} } lowValue := make([]byte, 0, len(pattern)) - edt, err := expr.GetArgs()[2].(*expression.Constant).Eval(chunk.Row{}) + edt, err := expr.GetArgs()[2].(*expression.Constant).Eval(r.ctx, chunk.Row{}) if err != nil { r.err = errors.Trace(err) return getFullRange() @@ -811,8 +814,9 @@ func (r *builder) union(a, b []*point, collator collate.Collator) []*point { func (r *builder) mergeSorted(a, b []*point, collator collate.Collator) []*point { ret := make([]*point, 0, len(a)+len(b)) i, j := 0, 0 + tc := r.ctx.GetSessionVars().StmtCtx.TypeCtx() for i < len(a) && j < len(b) { - less, err := rangePointLess(r.sc, a[i], b[j], collator) + less, err := rangePointLess(tc, a[i], b[j], collator) if err != nil { r.err = err return nil diff --git a/pkg/util/ranger/ranger.go b/pkg/util/ranger/ranger.go index efe801ef553cb..40f1dcf6ca5b5 100644 --- a/pkg/util/ranger/ranger.go +++ b/pkg/util/ranger/ranger.go @@ -39,14 +39,16 @@ import ( func validInterval(sctx sessionctx.Context, low, high *point) (bool, error) { sc := sctx.GetSessionVars().StmtCtx - l, err := codec.EncodeKey(sc, nil, low.value) + l, err := codec.EncodeKey(sc.TimeZone(), nil, low.value) + err = sc.HandleError(err) if err != nil { return false, errors.Trace(err) } if low.excl { l = kv.Key(l).PrefixNext() } - r, err := codec.EncodeKey(sc, nil, high.value) + r, err := codec.EncodeKey(sc.TimeZone(), nil, high.value) + err = sc.HandleError(err) if err != nil { return false, errors.Trace(err) } @@ -410,7 +412,7 @@ func points2TableRanges(sctx sessionctx.Context, rangePoints []*point, tp *types // The second return value is the conditions used to build ranges and the third return value is the remained conditions. func buildColumnRange(accessConditions []expression.Expression, sctx sessionctx.Context, tp *types.FieldType, tableRange bool, colLen int, rangeMaxSize int64) (Ranges, []expression.Expression, []expression.Expression, error) { - rb := builder{sc: sctx.GetSessionVars().StmtCtx} + rb := builder{ctx: sctx} rangePoints := getFullRange() for _, cond := range accessConditions { collator := collate.GetCollator(tp.GetCollate()) @@ -484,7 +486,7 @@ func BuildColumnRange(conds []expression.Expression, sctx sessionctx.Context, tp func (d *rangeDetacher) buildRangeOnColsByCNFCond(newTp []*types.FieldType, eqAndInCount int, accessConds []expression.Expression) (Ranges, []expression.Expression, []expression.Expression, error) { - rb := builder{sc: d.sctx.GetSessionVars().StmtCtx} + rb := builder{ctx: d.sctx} var ( ranges Ranges rangeFallback bool @@ -571,14 +573,16 @@ func UnionRanges(sctx sessionctx.Context, ranges Ranges, mergeConsecutive bool) } objects := make([]*sortRange, 0, len(ranges)) for _, ran := range ranges { - left, err := codec.EncodeKey(sc, nil, ran.LowVal...) + left, err := codec.EncodeKey(sc.TimeZone(), nil, ran.LowVal...) + err = sc.HandleError(err) if err != nil { return nil, errors.Trace(err) } if ran.LowExclude { left = kv.Key(left).PrefixNext() } - right, err := codec.EncodeKey(sc, nil, ran.HighVal...) + right, err := codec.EncodeKey(sc.TimeZone(), nil, ran.HighVal...) + err = sc.HandleError(err) if err != nil { return nil, errors.Trace(err) } diff --git a/pkg/util/ranger/ranger_test.go b/pkg/util/ranger/ranger_test.go index ce519eb053ce9..aeb2b8a1dc31b 100644 --- a/pkg/util/ranger/ranger_test.go +++ b/pkg/util/ranger/ranger_test.go @@ -1106,7 +1106,7 @@ create table t( indexPos: 0, exprStr: `a LIKE 'abc%'`, accessConds: `[like(test.t.a, abc%, 92)]`, - filterConds: "[]", + filterConds: "[like(test.t.a, abc%, 92)]", resultStr: "[[\"abc\",\"abd\")]", }, { @@ -1120,14 +1120,14 @@ create table t( indexPos: 0, exprStr: "a LIKE 'abc'", accessConds: "[like(test.t.a, abc, 92)]", - filterConds: "[]", + filterConds: "[like(test.t.a, abc, 92)]", resultStr: "[[\"abc\",\"abc\"]]", }, { indexPos: 0, exprStr: `a LIKE "ab\_c"`, accessConds: "[like(test.t.a, ab\\_c, 92)]", - filterConds: "[]", + filterConds: "[like(test.t.a, ab\\_c, 92)]", resultStr: "[[\"ab_c\",\"ab_c\"]]", }, { @@ -1141,21 +1141,21 @@ create table t( indexPos: 0, exprStr: `a LIKE '\%a'`, accessConds: "[like(test.t.a, \\%a, 92)]", - filterConds: "[]", + filterConds: "[like(test.t.a, \\%a, 92)]", resultStr: `[["%a","%a"]]`, }, { indexPos: 0, exprStr: `a LIKE "\\"`, accessConds: "[like(test.t.a, \\, 92)]", - filterConds: "[]", + filterConds: "[like(test.t.a, \\, 92)]", resultStr: "[[\"\\\\\",\"\\\\\"]]", }, { indexPos: 0, exprStr: `a LIKE "\\\\a%"`, accessConds: `[like(test.t.a, \\a%, 92)]`, - filterConds: "[]", + filterConds: "[like(test.t.a, \\\\a%, 92)]", resultStr: "[[\"\\\\a\",\"\\\\b\")]", }, { diff --git a/pkg/util/ranger/types.go b/pkg/util/ranger/types.go index f2b4c22787c3e..1ca9df2c7fb0f 100644 --- a/pkg/util/ranger/types.go +++ b/pkg/util/ranger/types.go @@ -195,14 +195,16 @@ func (ran *Range) String() string { // Encode encodes the range to its encoded value. func (ran *Range) Encode(sc *stmtctx.StatementContext, lowBuffer, highBuffer []byte) ([]byte, []byte, error) { var err error - lowBuffer, err = codec.EncodeKey(sc, lowBuffer[:0], ran.LowVal...) + lowBuffer, err = codec.EncodeKey(sc.TimeZone(), lowBuffer[:0], ran.LowVal...) + err = sc.HandleError(err) if err != nil { return nil, nil, err } if ran.LowExclude { lowBuffer = kv.Key(lowBuffer).PrefixNext() } - highBuffer, err = codec.EncodeKey(sc, highBuffer[:0], ran.HighVal...) + highBuffer, err = codec.EncodeKey(sc.TimeZone(), highBuffer[:0], ran.HighVal...) + err = sc.HandleError(err) if err != nil { return nil, nil, err } diff --git a/pkg/util/rowDecoder/decoder.go b/pkg/util/rowDecoder/decoder.go index 30cf792fbe20d..6c84f5afaeef9 100644 --- a/pkg/util/rowDecoder/decoder.go +++ b/pkg/util/rowDecoder/decoder.go @@ -188,7 +188,7 @@ func (rd *RowDecoder) EvalRemainedExprColumnMap(ctx sessionctx.Context, row map[ continue } // Eval the column value - val, err := col.GenExpr.Eval(rd.mutRow.ToRow()) + val, err := col.GenExpr.Eval(ctx, rd.mutRow.ToRow()) if err != nil { return nil, err } diff --git a/pkg/util/rowDecoder/decoder_test.go b/pkg/util/rowDecoder/decoder_test.go index 78eb540bedbf5..3f8cadb2fac3b 100644 --- a/pkg/util/rowDecoder/decoder_test.go +++ b/pkg/util/rowDecoder/decoder_test.go @@ -112,7 +112,7 @@ func TestRowDecoder(t *testing.T) { if i > 0 { c7.AddFlag(mysql.UnsignedFlag) } - bs, err := tablecodec.EncodeRow(sc, row.input, row.cols, nil, nil, &rd) + bs, err := tablecodec.EncodeRow(sc.TimeZone(), row.input, row.cols, nil, nil, &rd) require.NoError(t, err) require.NotNil(t, bs) @@ -187,7 +187,7 @@ func TestClusterIndexRowDecoder(t *testing.T) { } rd := rowcodec.Encoder{Enable: true} for _, row := range testRows { - bs, err := tablecodec.EncodeRow(sc, row.input, row.cols, nil, nil, &rd) + bs, err := tablecodec.EncodeRow(sc.TimeZone(), row.input, row.cols, nil, nil, &rd) require.NoError(t, err) require.NotNil(t, bs) diff --git a/pkg/util/rowcodec/BUILD.bazel b/pkg/util/rowcodec/BUILD.bazel index 42eb49b739d7d..22f366b5ac02e 100644 --- a/pkg/util/rowcodec/BUILD.bazel +++ b/pkg/util/rowcodec/BUILD.bazel @@ -14,13 +14,12 @@ go_library( "//pkg/kv", "//pkg/parser/model", "//pkg/parser/mysql", - "//pkg/parser/terror", "//pkg/parser/types", - "//pkg/sessionctx/stmtctx", "//pkg/types", "//pkg/util/chunk", "//pkg/util/codec", "@com_github_pingcap_errors//:errors", + "@org_uber_go_multierr//:multierr", ], ) diff --git a/pkg/util/rowcodec/bench_test.go b/pkg/util/rowcodec/bench_test.go index ef5698f27f9a7..1735b0c96fea6 100644 --- a/pkg/util/rowcodec/bench_test.go +++ b/pkg/util/rowcodec/bench_test.go @@ -21,7 +21,6 @@ import ( "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" - "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/tablecodec" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/benchdaily" @@ -68,7 +67,7 @@ func BenchmarkEncode(b *testing.B) { func BenchmarkEncodeFromOldRow(b *testing.B) { b.ReportAllocs() oldRow := types.MakeDatums(1, "abc", 1.1) - oldRowData, err := tablecodec.EncodeOldRow(stmtctx.NewStmtCtx(), oldRow, []int64{1, 2, 3}, nil, nil) + oldRowData, err := tablecodec.EncodeOldRow(nil, oldRow, []int64{1, 2, 3}, nil, nil) if err != nil { b.Fatal(err) } diff --git a/pkg/util/rowcodec/encoder.go b/pkg/util/rowcodec/encoder.go index 0f72745045f20..a725537a96028 100644 --- a/pkg/util/rowcodec/encoder.go +++ b/pkg/util/rowcodec/encoder.go @@ -21,10 +21,9 @@ import ( "github.com/pingcap/errors" "github.com/pingcap/tidb/pkg/parser/mysql" - "github.com/pingcap/tidb/pkg/parser/terror" - "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/codec" + "go.uber.org/multierr" ) // Encoder is used to encode a row. @@ -38,16 +37,15 @@ type Encoder struct { // Encode encodes a row from a datums slice. // `buf` is not truncated before encoding. -func (encoder *Encoder) Encode(sc *stmtctx.StatementContext, colIDs []int64, values []types.Datum, buf []byte, checksums ...uint32) ([]byte, error) { +// This function may return both a valid encoded bytes and an error (actually `"pingcap/errors".ErrorGroup`). If the caller +// expects to handle these errors according to `SQL_MODE` or other configuration, please refer to `pkg/errctx`. +func (encoder *Encoder) Encode(loc *time.Location, colIDs []int64, values []types.Datum, buf []byte, checksums ...uint32) ([]byte, error) { encoder.reset() encoder.appendColVals(colIDs, values) numCols, notNullIdx := encoder.reformatCols() - err := encoder.encodeRowCols(sc, numCols, notNullIdx) - if err != nil { - return nil, err - } + err := encoder.encodeRowCols(loc, numCols, notNullIdx) encoder.setChecksums(checksums...) - return encoder.row.toBytes(buf), nil + return encoder.row.toBytes(buf), err } func (encoder *Encoder) reset() { @@ -131,14 +129,15 @@ func (encoder *Encoder) reformatCols() (numCols, notNullIdx int) { return } -func (encoder *Encoder) encodeRowCols(sc *stmtctx.StatementContext, numCols, notNullIdx int) error { +func (encoder *Encoder) encodeRowCols(loc *time.Location, numCols, notNullIdx int) error { r := &encoder.row + var errs error for i := 0; i < notNullIdx; i++ { d := encoder.values[i] var err error - r.data, err = encodeValueDatum(sc, d, r.data) + r.data, err = encodeValueDatum(loc, d, r.data) if err != nil { - return err + errs = multierr.Append(errs, err) } // handle convert to large if len(r.data) > math.MaxUint16 && !r.large() { @@ -158,12 +157,12 @@ func (encoder *Encoder) encodeRowCols(sc *stmtctx.StatementContext, numCols, not r.offsets[i] = uint16(len(r.data)) } } - return nil + return errs } // encodeValueDatum encodes one row datum entry into bytes. // due to encode as value, this method will flatten value type like tablecodec.flatten -func encodeValueDatum(sc *stmtctx.StatementContext, d *types.Datum, buffer []byte) (nBuffer []byte, err error) { +func encodeValueDatum(loc *time.Location, d *types.Datum, buffer []byte) (nBuffer []byte, err error) { switch d.Kind() { case types.KindInt64: buffer = encodeInt(buffer, d.GetInt64()) @@ -174,8 +173,8 @@ func encodeValueDatum(sc *stmtctx.StatementContext, d *types.Datum, buffer []byt case types.KindMysqlTime: // for mysql datetime, timestamp and date type t := d.GetMysqlTime() - if t.Type() == mysql.TypeTimestamp && sc != nil && sc.TimeZone() != time.UTC { - err = t.ConvertTimeZone(sc.TimeZone(), time.UTC) + if t.Type() == mysql.TypeTimestamp && loc != nil && loc != time.UTC { + err = t.ConvertTimeZone(loc, time.UTC) if err != nil { return } @@ -195,7 +194,7 @@ func encodeValueDatum(sc *stmtctx.StatementContext, d *types.Datum, buffer []byt case types.KindBinaryLiteral, types.KindMysqlBit: // We don't need to handle errors here since the literal is ensured to be able to store in uint64 in convertToMysqlBit. var val uint64 - val, err = d.GetBinaryLiteral().ToInt(sc.TypeCtxOrDefault()) + val, err = d.GetBinaryLiteral().ToInt(types.StrictContext) if err != nil { return } @@ -204,13 +203,6 @@ func encodeValueDatum(sc *stmtctx.StatementContext, d *types.Datum, buffer []byt buffer = codec.EncodeFloat(buffer, d.GetFloat64()) case types.KindMysqlDecimal: buffer, err = codec.EncodeDecimal(buffer, d.GetMysqlDecimal(), d.Length(), d.Frac()) - if err != nil && sc != nil { - if terror.ErrorEqual(err, types.ErrTruncated) { - err = sc.HandleTruncate(err) - } else if terror.ErrorEqual(err, types.ErrOverflow) { - err = sc.HandleOverflow(err, err) - } - } case types.KindMysqlJSON: j := d.GetMysqlJSON() buffer = append(buffer, j.TypeCode) diff --git a/pkg/util/rowcodec/main_test.go b/pkg/util/rowcodec/main_test.go index d6c88fe255ad7..a59f3a2efe399 100644 --- a/pkg/util/rowcodec/main_test.go +++ b/pkg/util/rowcodec/main_test.go @@ -16,8 +16,8 @@ package rowcodec import ( "testing" + "time" - "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/testkit/testsetup" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/codec" @@ -36,7 +36,7 @@ func TestMain(m *testing.M) { // EncodeFromOldRow encodes a row from an old-format row. // this method will be used in test. -func EncodeFromOldRow(encoder *Encoder, sc *stmtctx.StatementContext, oldRow, buf []byte) ([]byte, error) { +func EncodeFromOldRow(encoder *Encoder, loc *time.Location, oldRow, buf []byte) ([]byte, error) { if len(oldRow) > 0 && oldRow[0] == CodecVer { return oldRow, nil } @@ -56,7 +56,7 @@ func EncodeFromOldRow(encoder *Encoder, sc *stmtctx.StatementContext, oldRow, bu encoder.appendColVal(colID, &d) } numCols, notNullIdx := encoder.reformatCols() - err := encoder.encodeRowCols(sc, numCols, notNullIdx) + err := encoder.encodeRowCols(loc, numCols, notNullIdx) if err != nil { return nil, err } diff --git a/pkg/util/rowcodec/rowcodec_test.go b/pkg/util/rowcodec/rowcodec_test.go index e3c6086cdc12d..700bb9276d73e 100644 --- a/pkg/util/rowcodec/rowcodec_test.go +++ b/pkg/util/rowcodec/rowcodec_test.go @@ -51,7 +51,7 @@ func TestEncodeLargeSmallReuseBug(t *testing.T) { colFt := types.NewFieldType(mysql.TypeString) largeColID := int64(300) - b, err := encoder.Encode(stmtctx.NewStmtCtx(), []int64{largeColID}, []types.Datum{types.NewBytesDatum([]byte(""))}, nil) + b, err := encoder.Encode(nil, []int64{largeColID}, []types.Datum{types.NewBytesDatum([]byte(""))}, nil) require.NoError(t, err) bDecoder := rowcodec.NewDatumMapDecoder([]rowcodec.ColInfo{ @@ -66,7 +66,7 @@ func TestEncodeLargeSmallReuseBug(t *testing.T) { colFt = types.NewFieldType(mysql.TypeLonglong) smallColID := int64(1) - b, err = encoder.Encode(stmtctx.NewStmtCtx(), []int64{smallColID}, []types.Datum{types.NewIntDatum(2)}, nil) + b, err = encoder.Encode(nil, []int64{smallColID}, []types.Datum{types.NewIntDatum(2)}, nil) require.NoError(t, err) bDecoder = rowcodec.NewDatumMapDecoder([]rowcodec.ColInfo{ @@ -162,16 +162,15 @@ func TestDecodeRowWithHandle(t *testing.T) { // test encode input. var encoder rowcodec.Encoder - sc := stmtctx.NewStmtCtxWithTimeZone(time.UTC) - newRow, err := encoder.Encode(sc, colIDs, dts, nil) + newRow, err := encoder.Encode(time.UTC, colIDs, dts, nil) require.NoError(t, err) // decode to datum map. - mDecoder := rowcodec.NewDatumMapDecoder(cols, sc.TimeZone()) + mDecoder := rowcodec.NewDatumMapDecoder(cols, time.UTC) dm, err := mDecoder.DecodeToDatumMap(newRow, nil) require.NoError(t, err) - dm, err = tablecodec.DecodeHandleToDatumMap(kv.IntHandle(handleValue), []int64{handleID}, handleColFtMap, sc.TimeZone(), dm) + dm, err = tablecodec.DecodeHandleToDatumMap(kv.IntHandle(handleValue), []int64{handleID}, handleColFtMap, time.UTC, dm) require.NoError(t, err) for _, d := range td { @@ -181,7 +180,7 @@ func TestDecodeRowWithHandle(t *testing.T) { } // decode to chunk. - cDecoder := rowcodec.NewChunkDecoder(cols, []int64{-1}, nil, sc.TimeZone()) + cDecoder := rowcodec.NewChunkDecoder(cols, []int64{-1}, nil, time.UTC) chk := chunk.New(fts, 1, 1) err = cDecoder.DecodeToChunk(newRow, kv.IntHandle(handleValue), chk) require.NoError(t, err) @@ -222,7 +221,6 @@ func TestDecodeRowWithHandle(t *testing.T) { func TestEncodeKindNullDatum(t *testing.T) { var encoder rowcodec.Encoder - sc := stmtctx.NewStmtCtxWithTimeZone(time.UTC) colIDs := []int64{1, 2} var nilDt types.Datum @@ -230,11 +228,11 @@ func TestEncodeKindNullDatum(t *testing.T) { dts := []types.Datum{nilDt, types.NewIntDatum(2)} ft := types.NewFieldType(mysql.TypeLonglong) fts := []*types.FieldType{ft, ft} - newRow, err := encoder.Encode(sc, colIDs, dts, nil) + newRow, err := encoder.Encode(time.UTC, colIDs, dts, nil) require.NoError(t, err) cols := []rowcodec.ColInfo{{ID: 1, Ft: ft}, {ID: 2, Ft: ft}} - cDecoder := rowcodec.NewChunkDecoder(cols, []int64{-1}, nil, sc.TimeZone()) + cDecoder := rowcodec.NewChunkDecoder(cols, []int64{-1}, nil, time.UTC) chk := chunk.New(fts, 1, 1) err = cDecoder.DecodeToChunk(newRow, kv.IntHandle(-1), chk) require.NoError(t, err) @@ -247,7 +245,6 @@ func TestEncodeKindNullDatum(t *testing.T) { func TestDecodeDecimalFspNotMatch(t *testing.T) { var encoder rowcodec.Encoder - sc := stmtctx.NewStmtCtxWithTimeZone(time.UTC) colIDs := []int64{ 1, } @@ -256,7 +253,7 @@ func TestDecodeDecimalFspNotMatch(t *testing.T) { ft := types.NewFieldType(mysql.TypeNewDecimal) ft.SetDecimal(4) fts := []*types.FieldType{ft} - newRow, err := encoder.Encode(sc, colIDs, dts, nil) + newRow, err := encoder.Encode(time.UTC, colIDs, dts, nil) require.NoError(t, err) // decode to chunk. @@ -267,7 +264,7 @@ func TestDecodeDecimalFspNotMatch(t *testing.T) { ID: 1, Ft: ft, }) - cDecoder := rowcodec.NewChunkDecoder(cols, []int64{-1}, nil, sc.TimeZone()) + cDecoder := rowcodec.NewChunkDecoder(cols, []int64{-1}, nil, time.UTC) chk := chunk.New(fts, 1, 1) err = cDecoder.DecodeToChunk(newRow, kv.IntHandle(-1), chk) require.NoError(t, err) @@ -292,7 +289,7 @@ func TestTypesNewRowCodec(t *testing.T) { return d } getTime := func(value string) types.Time { - d, err := types.ParseTime(types.DefaultStmtNoWarningContext, value, mysql.TypeTimestamp, 6, nil) + d, err := types.ParseTime(types.DefaultStmtNoWarningContext, value, mysql.TypeTimestamp, 6) require.NoError(t, err) return d } @@ -512,12 +509,11 @@ func TestTypesNewRowCodec(t *testing.T) { } // test encode input. - sc := stmtctx.NewStmtCtxWithTimeZone(time.UTC) - newRow, err := encoder.Encode(sc, colIDs, dts, nil) + newRow, err := encoder.Encode(time.UTC, colIDs, dts, nil) require.NoError(t, err) // decode to datum map. - mDecoder := rowcodec.NewDatumMapDecoder(cols, sc.TimeZone()) + mDecoder := rowcodec.NewDatumMapDecoder(cols, time.UTC) dm, err := mDecoder.DecodeToDatumMap(newRow, nil) require.NoError(t, err) @@ -528,7 +524,7 @@ func TestTypesNewRowCodec(t *testing.T) { } // decode to chunk. - cDecoder := rowcodec.NewChunkDecoder(cols, []int64{-1}, nil, sc.TimeZone()) + cDecoder := rowcodec.NewChunkDecoder(cols, []int64{-1}, nil, time.UTC) chk := chunk.New(fts, 1, 1) err = cDecoder.DecodeToChunk(newRow, kv.IntHandle(-1), chk) require.NoError(t, err) @@ -626,12 +622,11 @@ func TestNilAndDefault(t *testing.T) { // test encode input. var encoder rowcodec.Encoder - sc := stmtctx.NewStmtCtxWithTimeZone(time.UTC) - newRow, err := encoder.Encode(sc, colIDs, dts, nil) + newRow, err := encoder.Encode(time.UTC, colIDs, dts, nil) require.NoError(t, err) // decode to datum map. - mDecoder := rowcodec.NewDatumMapDecoder(cols, sc.TimeZone()) + mDecoder := rowcodec.NewDatumMapDecoder(cols, time.UTC) dm, err := mDecoder.DecodeToDatumMap(newRow, nil) require.NoError(t, err) @@ -648,7 +643,7 @@ func TestNilAndDefault(t *testing.T) { // decode to chunk. chk := chunk.New(fts, 1, 1) - cDecoder := rowcodec.NewChunkDecoder(cols, []int64{-1}, ddf, sc.TimeZone()) + cDecoder := rowcodec.NewChunkDecoder(cols, []int64{-1}, ddf, time.UTC) err = cDecoder.DecodeToChunk(newRow, kv.IntHandle(-1), chk) require.NoError(t, err) @@ -664,7 +659,7 @@ func TestNilAndDefault(t *testing.T) { } chk = chunk.New(fts, 1, 1) - cDecoder = rowcodec.NewChunkDecoder(cols, []int64{-1}, nil, sc.TimeZone()) + cDecoder = rowcodec.NewChunkDecoder(cols, []int64{-1}, nil, time.UTC) err = cDecoder.DecodeToChunk(newRow, kv.IntHandle(-1), chk) require.NoError(t, err) @@ -682,7 +677,7 @@ func TestNilAndDefault(t *testing.T) { for i, t := range td { colOffset[t.id] = i } - bDecoder := rowcodec.NewByteDecoder(cols, []int64{-1}, bdf, sc.TimeZone()) + bDecoder := rowcodec.NewByteDecoder(cols, []int64{-1}, bdf, time.UTC) oldRow, err := bDecoder.DecodeToBytes(colOffset, kv.IntHandle(-1), newRow, nil) require.NoError(t, err) @@ -735,11 +730,10 @@ func TestVarintCompatibility(t *testing.T) { // test encode input. var encoder rowcodec.Encoder - sc := stmtctx.NewStmtCtxWithTimeZone(time.UTC) - newRow, err := encoder.Encode(sc, colIDs, dts, nil) + newRow, err := encoder.Encode(time.UTC, colIDs, dts, nil) require.NoError(t, err) - decoder := rowcodec.NewByteDecoder(cols, []int64{-1}, nil, sc.TimeZone()) + decoder := rowcodec.NewByteDecoder(cols, []int64{-1}, nil, time.UTC) // decode to old row bytes. colOffset := make(map[int64]int) for i, t := range td { @@ -763,7 +757,7 @@ func TestCodecUtil(t *testing.T) { } tps[3] = types.NewFieldType(mysql.TypeNull) sc := stmtctx.NewStmtCtx() - oldRow, err := tablecodec.EncodeOldRow(sc, types.MakeDatums(1, 2, 3, nil), colIDs, nil, nil) + oldRow, err := tablecodec.EncodeOldRow(sc.TimeZone(), types.MakeDatums(1, 2, 3, nil), colIDs, nil, nil) require.NoError(t, err) var ( @@ -813,7 +807,7 @@ func TestOldRowCodec(t *testing.T) { } tps[3] = types.NewFieldType(mysql.TypeNull) sc := stmtctx.NewStmtCtx() - oldRow, err := tablecodec.EncodeOldRow(sc, types.MakeDatums(1, 2, 3, nil), colIDs, nil, nil) + oldRow, err := tablecodec.EncodeOldRow(sc.TimeZone(), types.MakeDatums(1, 2, 3, nil), colIDs, nil, nil) require.NoError(t, err) var ( @@ -844,10 +838,9 @@ func Test65535Bug(t *testing.T) { colIds := []int64{1} tps := make([]*types.FieldType, 1) tps[0] = types.NewFieldType(mysql.TypeString) - sc := stmtctx.NewStmtCtx() text65535 := strings.Repeat("a", 65535) encode := rowcodec.Encoder{} - bd, err := encode.Encode(sc, colIds, []types.Datum{types.NewStringDatum(text65535)}, nil) + bd, err := encode.Encode(time.UTC, colIds, []types.Datum{types.NewStringDatum(text65535)}, nil) require.NoError(t, err) cols := make([]rowcodec.ColInfo, 1) @@ -1195,7 +1188,6 @@ func TestRowChecksum(t *testing.T) { } func TestEncodeDecodeRowWithChecksum(t *testing.T) { - sc := stmtctx.NewStmtCtx() enc := rowcodec.Encoder{} for _, tt := range []struct { @@ -1208,9 +1200,9 @@ func TestEncodeDecodeRowWithChecksum(t *testing.T) { {"ThreeChecksum", []uint32{1, 2, 3}}, } { t.Run(tt.name, func(t *testing.T) { - raw, err := enc.Encode(sc, nil, nil, nil, tt.checksums...) + raw, err := enc.Encode(time.UTC, nil, nil, nil, tt.checksums...) require.NoError(t, err) - dec := rowcodec.NewDatumMapDecoder([]rowcodec.ColInfo{}, sc.TimeZone()) + dec := rowcodec.NewDatumMapDecoder([]rowcodec.ColInfo{}, time.UTC) _, err = dec.DecodeToDatumMap(raw, nil) require.NoError(t, err) v1, ok1 := enc.GetChecksum() @@ -1245,9 +1237,9 @@ func TestEncodeDecodeRowWithChecksum(t *testing.T) { } t.Run("ReuseDecoder", func(t *testing.T) { - dec := rowcodec.NewDatumMapDecoder([]rowcodec.ColInfo{}, sc.TimeZone()) + dec := rowcodec.NewDatumMapDecoder([]rowcodec.ColInfo{}, time.UTC) - raw1, err := enc.Encode(sc, nil, nil, nil) + raw1, err := enc.Encode(time.UTC, nil, nil, nil) require.NoError(t, err) _, err = dec.DecodeToDatumMap(raw1, nil) require.NoError(t, err) @@ -1258,7 +1250,7 @@ func TestEncodeDecodeRowWithChecksum(t *testing.T) { require.Zero(t, v1) require.Zero(t, v2) - raw2, err := enc.Encode(sc, nil, nil, nil, 1, 2) + raw2, err := enc.Encode(time.UTC, nil, nil, nil, 1, 2) require.NoError(t, err) _, err = dec.DecodeToDatumMap(raw2, nil) require.NoError(t, err) @@ -1269,7 +1261,7 @@ func TestEncodeDecodeRowWithChecksum(t *testing.T) { require.Equal(t, uint32(1), v1) require.Equal(t, uint32(2), v2) - raw3, err := enc.Encode(sc, nil, nil, nil, 1) + raw3, err := enc.Encode(time.UTC, nil, nil, nil, 1) require.NoError(t, err) _, err = dec.DecodeToDatumMap(raw3, nil) require.NoError(t, err) diff --git a/pkg/util/selection/selection_test.go b/pkg/util/selection/selection_test.go index 310502f8886e9..779c8b05677f6 100644 --- a/pkg/util/selection/selection_test.go +++ b/pkg/util/selection/selection_test.go @@ -18,7 +18,6 @@ import ( "math/rand" "sort" "testing" - "time" "github.com/stretchr/testify/require" ) @@ -84,7 +83,6 @@ func TestSelectionWithSerialCase(t *testing.T) { func randomTestCase(size int) testSlice { data := make(testSlice, 0, size) - rand.Seed(time.Now().Unix()) for i := 0; i < size; i++ { data = append(data, rand.Int()%100) } diff --git a/tests/integrationtest/r/bindinfo/bind.result b/tests/integrationtest/r/bindinfo/bind.result index 664f1c3e0d6d2..400aeaad6dc58 100644 --- a/tests/integrationtest/r/bindinfo/bind.result +++ b/tests/integrationtest/r/bindinfo/bind.result @@ -56,6 +56,9 @@ select @@last_plan_from_binding; @@last_plan_from_binding 1 commit; +drop binding for select a from t where a in (1); +drop binding for select b from t where b in (1,2,3); +drop binding for select * from t where a in (1) and b in (1,2) and c in (1,2,3); set tidb_cost_model_version=2; drop table if exists t1; drop table if exists t2; @@ -326,3 +329,290 @@ desc table t; id estRows task access object operator info TableReader_5 10000.00 root data:TableFullScan_4 └─TableFullScan_4 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +drop table if exists t; +create table t (a int, b int, c int, d int); +create binding for select * from t where a in(1) using select * from t where a in(1); +create binding for select * from t where a in(1,2) using select * from t where a in(1); +create binding for select * from t where a in(1) using select * from t where a in(1,2); +create binding for select * from t where a in(1,2) using select * from t where a in(1,2); +create binding for select * from t where a in(1,2,3) using select * from t where a in(1,2,3); +show bindings where default_db='bindinfo__bind'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest +select * from `bindinfo__bind` . `t` where `a` in ( ... ) SELECT * FROM `bindinfo__bind`.`t` WHERE `a` IN (1,2,3) bindinfo__bind enabled utf8mb4 utf8mb4_general_ci manual b67d59db636eefe4353553308079b13a6e0ea71235906ab3ce0c7f9e99c06ed8 +drop binding for select * from t where a in(1); +show bindings where default_db='bindinfo__bind'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest +create binding for select * from t where a in(1,2,3) using select * from t where a in(1); +show bindings where default_db='bindinfo__bind'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest +select * from `bindinfo__bind` . `t` where `a` in ( ... ) SELECT * FROM `bindinfo__bind`.`t` WHERE `a` IN (1) bindinfo__bind enabled utf8mb4 utf8mb4_general_ci manual b67d59db636eefe4353553308079b13a6e0ea71235906ab3ce0c7f9e99c06ed8 +drop binding for select * from t where a in(1); +show bindings where default_db='bindinfo__bind'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest +create binding for select * from t where a in(1) using select * from t where a in(1); +show bindings where default_db='bindinfo__bind'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest +select * from `bindinfo__bind` . `t` where `a` in ( ... ) SELECT * FROM `bindinfo__bind`.`t` WHERE `a` IN (1) bindinfo__bind enabled utf8mb4 utf8mb4_general_ci manual b67d59db636eefe4353553308079b13a6e0ea71235906ab3ce0c7f9e99c06ed8 +drop binding for select * from t where a in(1,2,3); +show bindings where default_db='bindinfo__bind'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest +create binding for select * from t where a in(1) using select * from t where a in(1); +show bindings where default_db='bindinfo__bind'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest +select * from `bindinfo__bind` . `t` where `a` in ( ... ) SELECT * FROM `bindinfo__bind`.`t` WHERE `a` IN (1) bindinfo__bind enabled utf8mb4 utf8mb4_general_ci manual b67d59db636eefe4353553308079b13a6e0ea71235906ab3ce0c7f9e99c06ed8 +drop binding for select * from t where a in(1,2,3,4,5,6,7,8,9,0,11,12); +show bindings where default_db='bindinfo__bind'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest +create global binding for select * from t where a in(1,2,3) using select * from t where a in(1); +show global bindings where original_sql like '%bindinfo__bind%'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest +select * from `bindinfo__bind` . `t` where `a` in ( ... ) SELECT * FROM `bindinfo__bind`.`t` WHERE `a` IN (1) bindinfo__bind enabled utf8mb4 utf8mb4_general_ci manual b67d59db636eefe4353553308079b13a6e0ea71235906ab3ce0c7f9e99c06ed8 +set binding disabled for select * from t where a in(1); +show global bindings where original_sql like '%bindinfo__bind%'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest +select * from `bindinfo__bind` . `t` where `a` in ( ... ) SELECT * FROM `bindinfo__bind`.`t` WHERE `a` IN (1) disabled utf8mb4 utf8mb4_general_ci manual b67d59db636eefe4353553308079b13a6e0ea71235906ab3ce0c7f9e99c06ed8 +set binding enabled for select * from t where a in(1,2,3,4,5); +show global bindings where original_sql like '%bindinfo__bind%'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest +select * from `bindinfo__bind` . `t` where `a` in ( ... ) SELECT * FROM `bindinfo__bind`.`t` WHERE `a` IN (1) enabled utf8mb4 utf8mb4_general_ci manual b67d59db636eefe4353553308079b13a6e0ea71235906ab3ce0c7f9e99c06ed8 +drop global binding for select * from t where a in(1,2,3); +drop table if exists t; +create table t (a varchar(10) CHARACTER SET utf8); +create global binding for select * from t where a = 'aa' using select * from t where a = 'aa'; +show global bindings where original_sql like '%bindinfo__bind%'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest +select * from `bindinfo__bind` . `t` where `a` = ? SELECT * FROM `bindinfo__bind`.`t` WHERE `a` = 'aa' bindinfo__bind enabled utf8mb4 utf8mb4_general_ci manual 6d1a1929b70cc162e7e4a9e635a920d811556a2fad8c86a98cd36f5ef0ac2d8e +drop global binding for select * from t where a = 'aa'; +drop table if exists t; +create table t (a int); +create global binding for select * from (select * from t where a = 1) tt using select * from (select * from t where a = 1) tt; +create global binding for select * from ((select * from t where a = 1)) tt using select * from (select * from t where a = 1) tt; +show global bindings where original_sql like '%bindinfo__bind%'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest +select * from ( select * from `bindinfo__bind` . `t` where `a` = ? ) as `tt` SELECT * FROM (SELECT * FROM `bindinfo__bind`.`t` WHERE `a` = 1) AS `tt` bindinfo__bind enabled utf8mb4 utf8mb4_general_ci manual b2066cb17a2e393e9b1304af7a880aff99a8b7c918daa5d08374e6a9d3cc5bdb +drop global binding for select * from ((select * from t where a = 1)) tt; +drop table if exists t; +drop user if exists test@'%'; +create table t(a int, b int, index idx(a)); +create global binding for select * from t using select * from t use index(idx); +show global bindings where original_sql like '%bindinfo__bind%'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest +select * from `bindinfo__bind` . `t` SELECT * FROM `bindinfo__bind`.`t` USE INDEX (`idx`) bindinfo__bind enabled utf8mb4 utf8mb4_general_ci manual 7bfe86d915f554b2714045c1f8006e44f9586ea258b605cb6de2f79753674c20 +create user test@'%'; +show global bindings where original_sql like '%bindinfo__bind%'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest +drop global binding for select * from t; +drop table if exists t; +create table t(a int, b int, key(a)); +create global binding for select * from t using select * from t force index(a); +select * from t; +Error 1046 (3D000): No database selected +select @@last_plan_from_binding; +@@last_plan_from_binding +0 +explain format ='brief' select * from bindinfo__bind.t; +id estRows task access object operator info +IndexLookUp 10000.00 root +├─IndexFullScan(Build) 10000.00 cop[tikv] table:t, index:a(a) keep order:false, stats:pseudo +└─TableRowIDScan(Probe) 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +select * from bindinfo__bind.t; +a b +select @@last_plan_from_binding; +@@last_plan_from_binding +1 +set binding disabled for select * from bindinfo__bind.t; +select * from bindinfo__bind.t; +a b +select @@last_plan_from_binding; +@@last_plan_from_binding +0 +drop global binding for select * from t; +drop table if exists t; +create table t(a int, b int, c int, key idx_b(b), key idx_c(c)); +explain format='brief' delete from t where b = 1 and c > 1; +id estRows task access object operator info +Delete N/A root N/A +└─IndexLookUp 3.33 root + ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t, index:idx_b(b) range:[1,1], keep order:false, stats:pseudo + └─Selection(Probe) 3.33 cop[tikv] gt(bindinfo__bind.t.c, 1) + └─TableRowIDScan 10.00 cop[tikv] table:t keep order:false, stats:pseudo +create global binding for delete from t where b = 1 and c > 1 using delete from t use index(idx_c) where b = 1 and c > 1; +explain format='brief' delete from t where b = 1 and c > 1; +id estRows task access object operator info +Delete N/A root N/A +└─IndexLookUp 3.33 root + ├─IndexRangeScan(Build) 3333.33 cop[tikv] table:t, index:idx_c(c) range:(1,+inf], keep order:false, stats:pseudo + └─Selection(Probe) 3.33 cop[tikv] eq(bindinfo__bind.t.b, 1) + └─TableRowIDScan 3333.33 cop[tikv] table:t keep order:false, stats:pseudo +drop global binding for delete from t where b = 1 and c > 1; +show session variables like "tidb_capture_plan_baselines"; +Variable_name Value +tidb_capture_plan_baselines OFF +show global variables like "tidb_capture_plan_baselines"; +Variable_name Value +tidb_capture_plan_baselines OFF +select @@global.tidb_capture_plan_baselines; +@@global.tidb_capture_plan_baselines +0 +SET GLOBAL tidb_capture_plan_baselines = on; +show variables like "tidb_capture_plan_baselines"; +Variable_name Value +tidb_capture_plan_baselines ON +show global variables like "tidb_capture_plan_baselines"; +Variable_name Value +tidb_capture_plan_baselines ON +show global variables like "tidb_capture_plan_baselines"; +Variable_name Value +tidb_capture_plan_baselines ON +select @@global.tidb_capture_plan_baselines; +@@global.tidb_capture_plan_baselines +1 +set GLOBAL tidb_capture_plan_baselines = default; +drop database if exists bindinfo__bind_test; +create database bindinfo__bind_test; +use bindinfo__bind_test; +create table t(a int, b int, index idx(a)); +select original_sql, status from mysql.bind_info where original_sql like '%bindinfo__bind_test%'; +original_sql status +show global bindings where original_sql like '%bindinfo__bind_test%'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest +create global binding for select * from t using select * from t; +select original_sql, status from mysql.bind_info where original_sql like '%bindinfo__bind_test%'; +original_sql status +select * from `bindinfo__bind_test` . `t` enabled +show global bindings where original_sql like '%bindinfo__bind_test%'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest +select * from `bindinfo__bind_test` . `t` SELECT * FROM `bindinfo__bind_test`.`t` bindinfo__bind_test enabled utf8mb4 utf8mb4_general_ci manual 7b6e1829d138552ad533ff6ee71b33faeda4e30020fdba3bdf36eee580d5a500 +create global binding for select * from t using select * from t; +select original_sql, status from mysql.bind_info where original_sql like '%bindinfo__bind_test%'; +original_sql status +select * from `bindinfo__bind_test` . `t` deleted +select * from `bindinfo__bind_test` . `t` enabled +show global bindings where original_sql like '%bindinfo__bind_test%'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest +select * from `bindinfo__bind_test` . `t` SELECT * FROM `bindinfo__bind_test`.`t` bindinfo__bind_test enabled utf8mb4 utf8mb4_general_ci manual 7b6e1829d138552ad533ff6ee71b33faeda4e30020fdba3bdf36eee580d5a500 +drop global binding for select * from t; +use bindinfo__bind; +drop database bindinfo__bind_test; +drop table if exists t1, t2; +create table t1(a int, b int, c int, key idx_b(b), key idx_c(c)); +create table t2(a int, b int, c int, key idx_b(b), key idx_c(c)); +explain format='brief' delete from t1 where b = 1 and c > 1; +id estRows task access object operator info +Delete N/A root N/A +└─IndexLookUp 3.33 root + ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t1, index:idx_b(b) range:[1,1], keep order:false, stats:pseudo + └─Selection(Probe) 3.33 cop[tikv] gt(bindinfo__bind.t1.c, 1) + └─TableRowIDScan 10.00 cop[tikv] table:t1 keep order:false, stats:pseudo +create global binding for delete from t1 where b = 1 and c > 1 using delete /*+ use_index(t1,idx_c) */ from t1 where b = 1 and c > 1; +explain format='brief' delete from t1 where b = 1 and c > 1; +id estRows task access object operator info +Delete N/A root N/A +└─IndexLookUp 3.33 root + ├─IndexRangeScan(Build) 3333.33 cop[tikv] table:t1, index:idx_c(c) range:(1,+inf], keep order:false, stats:pseudo + └─Selection(Probe) 3.33 cop[tikv] eq(bindinfo__bind.t1.b, 1) + └─TableRowIDScan 3333.33 cop[tikv] table:t1 keep order:false, stats:pseudo +explain format='brief' delete t1, t2 from t1 inner join t2 on t1.b = t2.b; +id estRows task access object operator info +Delete N/A root N/A +└─HashJoin 12487.50 root inner join, equal:[eq(bindinfo__bind.t1.b, bindinfo__bind.t2.b)] + ├─TableReader(Build) 9990.00 root data:Selection + │ └─Selection 9990.00 cop[tikv] not(isnull(bindinfo__bind.t2.b)) + │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo + └─TableReader(Probe) 9990.00 root data:Selection + └─Selection 9990.00 cop[tikv] not(isnull(bindinfo__bind.t1.b)) + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo +create global binding for delete t1, t2 from t1 inner join t2 on t1.b = t2.b using delete /*+ inl_join(t1) */ t1, t2 from t1 inner join t2 on t1.b = t2.b; +explain format='brief' delete t1, t2 from t1 inner join t2 on t1.b = t2.b; +id estRows task access object operator info +Delete N/A root N/A +└─IndexJoin 12487.50 root inner join, inner:IndexLookUp, outer key:bindinfo__bind.t2.b, inner key:bindinfo__bind.t1.b, equal cond:eq(bindinfo__bind.t2.b, bindinfo__bind.t1.b) + ├─TableReader(Build) 9990.00 root data:Selection + │ └─Selection 9990.00 cop[tikv] not(isnull(bindinfo__bind.t2.b)) + │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo + └─IndexLookUp(Probe) 12487.50 root + ├─Selection(Build) 12487.50 cop[tikv] not(isnull(bindinfo__bind.t1.b)) + │ └─IndexRangeScan 12500.00 cop[tikv] table:t1, index:idx_b(b) range: decided by [eq(bindinfo__bind.t1.b, bindinfo__bind.t2.b)], keep order:false, stats:pseudo + └─TableRowIDScan(Probe) 12487.50 cop[tikv] table:t1 keep order:false, stats:pseudo +explain format='brief' update t1 set a = 1 where b = 1 and c > 1; +id estRows task access object operator info +Update N/A root N/A +└─IndexLookUp 3.33 root + ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t1, index:idx_b(b) range:[1,1], keep order:false, stats:pseudo + └─Selection(Probe) 3.33 cop[tikv] gt(bindinfo__bind.t1.c, 1) + └─TableRowIDScan 10.00 cop[tikv] table:t1 keep order:false, stats:pseudo +create global binding for update t1 set a = 1 where b = 1 and c > 1 using update /*+ use_index(t1,idx_c) */ t1 set a = 1 where b = 1 and c > 1; +explain format='brief' update t1 set a = 1 where b = 1 and c > 1; +id estRows task access object operator info +Update N/A root N/A +└─IndexLookUp 3.33 root + ├─IndexRangeScan(Build) 3333.33 cop[tikv] table:t1, index:idx_c(c) range:(1,+inf], keep order:false, stats:pseudo + └─Selection(Probe) 3.33 cop[tikv] eq(bindinfo__bind.t1.b, 1) + └─TableRowIDScan 3333.33 cop[tikv] table:t1 keep order:false, stats:pseudo +explain format='brief' update t1, t2 set t1.a = 1 where t1.b = t2.b; +id estRows task access object operator info +Update N/A root N/A +└─HashJoin 12487.50 root inner join, equal:[eq(bindinfo__bind.t1.b, bindinfo__bind.t2.b)] + ├─TableReader(Build) 9990.00 root data:Selection + │ └─Selection 9990.00 cop[tikv] not(isnull(bindinfo__bind.t2.b)) + │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo + └─TableReader(Probe) 9990.00 root data:Selection + └─Selection 9990.00 cop[tikv] not(isnull(bindinfo__bind.t1.b)) + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo +create global binding for update t1, t2 set t1.a = 1 where t1.b = t2.b using update /*+ inl_join(t1) */ t1, t2 set t1.a = 1 where t1.b = t2.b; +explain format='brief' update t1, t2 set t1.a = 1 where t1.b = t2.b; +id estRows task access object operator info +Update N/A root N/A +└─IndexJoin 12487.50 root inner join, inner:IndexLookUp, outer key:bindinfo__bind.t2.b, inner key:bindinfo__bind.t1.b, equal cond:eq(bindinfo__bind.t2.b, bindinfo__bind.t1.b) + ├─TableReader(Build) 9990.00 root data:Selection + │ └─Selection 9990.00 cop[tikv] not(isnull(bindinfo__bind.t2.b)) + │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo + └─IndexLookUp(Probe) 12487.50 root + ├─Selection(Build) 12487.50 cop[tikv] not(isnull(bindinfo__bind.t1.b)) + │ └─IndexRangeScan 12500.00 cop[tikv] table:t1, index:idx_b(b) range: decided by [eq(bindinfo__bind.t1.b, bindinfo__bind.t2.b)], keep order:false, stats:pseudo + └─TableRowIDScan(Probe) 12487.50 cop[tikv] table:t1 keep order:false, stats:pseudo +explain format='brief' insert into t1 select * from t2 where t2.b = 2 and t2.c > 2; +id estRows task access object operator info +Insert N/A root N/A +└─IndexLookUp 3.33 root + ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t2, index:idx_b(b) range:[2,2], keep order:false, stats:pseudo + └─Selection(Probe) 3.33 cop[tikv] gt(bindinfo__bind.t2.c, 2) + └─TableRowIDScan 10.00 cop[tikv] table:t2 keep order:false, stats:pseudo +create global binding for insert into t1 select * from t2 where t2.b = 1 and t2.c > 1 using insert /*+ use_index(t2,idx_c) */ into t1 select * from t2 where t2.b = 1 and t2.c > 1; +explain format='brief' insert into t1 select * from t2 where t2.b = 2 and t2.c > 2; +id estRows task access object operator info +Insert N/A root N/A +└─IndexLookUp 3.33 root + ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t2, index:idx_b(b) range:[2,2], keep order:false, stats:pseudo + └─Selection(Probe) 3.33 cop[tikv] gt(bindinfo__bind.t2.c, 2) + └─TableRowIDScan 10.00 cop[tikv] table:t2 keep order:false, stats:pseudo +drop global binding for insert into t1 select * from t2 where t2.b = 1 and t2.c > 1; +create global binding for insert into t1 select * from t2 where t2.b = 1 and t2.c > 1 using insert into t1 select /*+ use_index(t2,idx_c) */ * from t2 where t2.b = 1 and t2.c > 1; +explain format='brief' insert into t1 select * from t2 where t2.b = 2 and t2.c > 2; +id estRows task access object operator info +Insert N/A root N/A +└─IndexLookUp 3.33 root + ├─IndexRangeScan(Build) 3333.33 cop[tikv] table:t2, index:idx_c(c) range:(2,+inf], keep order:false, stats:pseudo + └─Selection(Probe) 3.33 cop[tikv] eq(bindinfo__bind.t2.b, 2) + └─TableRowIDScan 3333.33 cop[tikv] table:t2 keep order:false, stats:pseudo +explain format='brief' replace into t1 select * from t2 where t2.b = 2 and t2.c > 2; +id estRows task access object operator info +Insert N/A root N/A +└─IndexLookUp 3.33 root + ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t2, index:idx_b(b) range:[2,2], keep order:false, stats:pseudo + └─Selection(Probe) 3.33 cop[tikv] gt(bindinfo__bind.t2.c, 2) + └─TableRowIDScan 10.00 cop[tikv] table:t2 keep order:false, stats:pseudo +create global binding for replace into t1 select * from t2 where t2.b = 1 and t2.c > 1 using replace into t1 select /*+ use_index(t2,idx_c) */ * from t2 where t2.b = 1 and t2.c > 1; +explain format='brief' replace into t1 select * from t2 where t2.b = 2 and t2.c > 2; +id estRows task access object operator info +Insert N/A root N/A +└─IndexLookUp 3.33 root + ├─IndexRangeScan(Build) 3333.33 cop[tikv] table:t2, index:idx_c(c) range:(2,+inf], keep order:false, stats:pseudo + └─Selection(Probe) 3.33 cop[tikv] eq(bindinfo__bind.t2.b, 2) + └─TableRowIDScan 3333.33 cop[tikv] table:t2 keep order:false, stats:pseudo +drop global binding for delete from t1 where b = 1 and c > 1; +drop global binding for delete t1, t2 from t1 inner join t2 on t1.b = t2.b; +drop global binding for update t1 set a = 1 where b = 1 and c > 1; +drop global binding for update t1, t2 set t1.a = 1 where t1.b = t2.b; +drop global binding for insert into t1 select * from t2 where t2.b = 1 and t2.c > 1; +drop global binding for replace into t1 select * from t2 where t2.b = 1 and t2.c > 1; diff --git a/tests/integrationtest/r/bindinfo/temptable.result b/tests/integrationtest/r/bindinfo/temptable.result new file mode 100644 index 0000000000000..61ae86c701259 --- /dev/null +++ b/tests/integrationtest/r/bindinfo/temptable.result @@ -0,0 +1,68 @@ +drop table if exists t1,tmp1; +create table t1(a int(11)); +create global temporary table tmp1(a int(11), key idx_a(a)) on commit delete rows; +create temporary table tmp2(a int(11), key idx_a(a)); +create global binding for with cte1 as (select a from tmp1) select * from cte1 using with cte1 as (select a from tmp1) select * from cte1; +Error 8006 (HY000): `create binding` is unsupported on temporary tables. +create global binding for select * from t1 inner join tmp1 on t1.a=tmp1.a using select * from t1 inner join tmp1 on t1.a=tmp1.a; +Error 8006 (HY000): `create binding` is unsupported on temporary tables. +create global binding for select * from t1 where t1.a in (select a from tmp1) using select * from t1 where t1.a in (select a from tmp1 use index (idx_a)); +Error 8006 (HY000): `create binding` is unsupported on temporary tables. +create global binding for select a from t1 union select a from tmp1 using select a from t1 union select a from tmp1 use index (idx_a); +Error 8006 (HY000): `create binding` is unsupported on temporary tables. +create global binding for select t1.a, (select a from tmp1 where tmp1.a=1) as t2 from t1 using select t1.a, (select a from tmp1 where tmp1.a=1) as t2 from t1; +Error 8006 (HY000): `create binding` is unsupported on temporary tables. +create global binding for select * from (select * from tmp1) using select * from (select * from tmp1); +Error 8006 (HY000): `create binding` is unsupported on temporary tables. +create global binding for select * from t1 where t1.a = (select a from tmp1) using select * from t1 where t1.a = (select a from tmp1); +Error 8006 (HY000): `create binding` is unsupported on temporary tables. +create global binding for with cte1 as (select a from tmp2) select * from cte1 using with cte1 as (select a from tmp2) select * from cte1; +Error 8006 (HY000): `create binding` is unsupported on temporary tables. +create global binding for select * from t1 inner join tmp2 on t1.a=tmp2.a using select * from t1 inner join tmp2 on t1.a=tmp2.a; +Error 8006 (HY000): `create binding` is unsupported on temporary tables. +create global binding for select * from t1 where t1.a in (select a from tmp2) using select * from t1 where t1.a in (select a from tmp2 use index (idx_a)); +Error 8006 (HY000): `create binding` is unsupported on temporary tables. +create global binding for select a from t1 union select a from tmp2 using select a from t1 union select a from tmp2 use index (idx_a); +Error 8006 (HY000): `create binding` is unsupported on temporary tables. +create global binding for select t1.a, (select a from tmp2 where tmp2.a=1) as t2 from t1 using select t1.a, (select a from tmp2 where tmp2.a=1) as t2 from t1; +Error 8006 (HY000): `create binding` is unsupported on temporary tables. +create global binding for select * from (select * from tmp2) using select * from (select * from tmp2); +Error 8006 (HY000): `create binding` is unsupported on temporary tables. +create global binding for select * from t1 where t1.a = (select a from tmp2) using select * from t1 where t1.a = (select a from tmp2); +Error 8006 (HY000): `create binding` is unsupported on temporary tables. +drop table if exists t1,tmp1,tmp2; +create table t1(a int(11)); +create global temporary table tmp1(a int(11), key idx_a(a)) on commit delete rows; +create temporary table tmp2(a int(11), key idx_a(a)); +create global binding for insert into t1 (select * from tmp1) using insert into t1 (select * from tmp1); +Error 8006 (HY000): `create binding` is unsupported on temporary tables. +create global binding for update t1 inner join tmp1 on t1.a=tmp1.a set t1.a=1 using update t1 inner join tmp1 on t1.a=tmp1.a set t1.a=1; +Error 8006 (HY000): `create binding` is unsupported on temporary tables. +create global binding for update t1 set t1.a=(select a from tmp1) using update t1 set t1.a=(select a from tmp1); +Error 8006 (HY000): `create binding` is unsupported on temporary tables. +create global binding for update t1 set t1.a=1 where t1.a = (select a from tmp1) using update t1 set t1.a=1 where t1.a = (select a from tmp1); +Error 8006 (HY000): `create binding` is unsupported on temporary tables. +create global binding for with cte1 as (select a from tmp1) update t1 set t1.a=1 where t1.a in (select a from cte1) using with cte1 as (select a from tmp1) update t1 set t1.a=1 where t1.a in (select a from cte1); +Error 8006 (HY000): `create binding` is unsupported on temporary tables. +create global binding for delete from t1 where t1.a in (select a from tmp1) using delete from t1 where t1.a in (select a from tmp1); +Error 8006 (HY000): `create binding` is unsupported on temporary tables. +create global binding for delete from t1 where t1.a = (select a from tmp1) using delete from t1 where t1.a = (select a from tmp1); +Error 8006 (HY000): `create binding` is unsupported on temporary tables. +create global binding for delete t1 from t1,tmp1 using delete t1 from t1,tmp1; +Error 8006 (HY000): `create binding` is unsupported on temporary tables. +create global binding for insert into t1 (select * from tmp2) using insert into t1 (select * from tmp2); +Error 8006 (HY000): `create binding` is unsupported on temporary tables. +create global binding for update t1 inner join tmp2 on t1.a=tmp2.a set t1.a=1 using update t1 inner join tmp2 on t1.a=tmp2.a set t1.a=1; +Error 8006 (HY000): `create binding` is unsupported on temporary tables. +create global binding for update t1 set t1.a=(select a from tmp2) using update t1 set t1.a=(select a from tmp2); +Error 8006 (HY000): `create binding` is unsupported on temporary tables. +create global binding for update t1 set t1.a=1 where t1.a = (select a from tmp2) using update t1 set t1.a=1 where t1.a = (select a from tmp2); +Error 8006 (HY000): `create binding` is unsupported on temporary tables. +create global binding for with cte1 as (select a from tmp2) update t1 set t1.a=1 where t1.a in (select a from cte1) using with cte1 as (select a from tmp2) update t1 set t1.a=1 where t1.a in (select a from cte1); +Error 8006 (HY000): `create binding` is unsupported on temporary tables. +create global binding for delete from t1 where t1.a in (select a from tmp2) using delete from t1 where t1.a in (select a from tmp2); +Error 8006 (HY000): `create binding` is unsupported on temporary tables. +create global binding for delete from t1 where t1.a = (select a from tmp2) using delete from t1 where t1.a = (select a from tmp2); +Error 8006 (HY000): `create binding` is unsupported on temporary tables. +create global binding for delete t1 from t1,tmp2 using delete t1 from t1,tmp2; +Error 8006 (HY000): `create binding` is unsupported on temporary tables. diff --git a/tests/integrationtest/r/ddl/db.result b/tests/integrationtest/r/ddl/db.result index 7ce83eb0c138b..20c42dda430dc 100644 --- a/tests/integrationtest/r/ddl/db.result +++ b/tests/integrationtest/r/ddl/db.result @@ -432,3 +432,18 @@ local_temp_auto_id CREATE TEMPORARY TABLE `local_temp_auto_id` ( `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) /*T![clustered_index] CLUSTERED */ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin AUTO_INCREMENT=101 +drop table if exists t_23473; +create table t_23473 (k int primary key, v int); +alter table t_23473 change column k k bigint; +show columns from t_23473; +Field Type Null Key Default Extra +k bigint(20) NO PRI NULL +v int(11) YES NULL +drop table if exists t0; +create table t0(c0 Blob(254), c1 Blob(65534), c2 Blob(16777214), c3 Blob(4294967294)); +show columns from t0; +Field Type Null Key Default Extra +c0 tinyblob YES NULL +c1 blob YES NULL +c2 mediumblob YES NULL +c3 longblob YES NULL diff --git a/tests/integrationtest/r/ddl/foreign_key.result b/tests/integrationtest/r/ddl/foreign_key.result new file mode 100644 index 0000000000000..5928783ddefee --- /dev/null +++ b/tests/integrationtest/r/ddl/foreign_key.result @@ -0,0 +1,223 @@ +set @@global.tidb_enable_foreign_key=1; +create table t1 (id int key, a int); +begin; +insert into t1 values (1, 1); +update t1 set a = 2 where id = 1; +create table t2 (id int key, b int, foreign key fk_b(b) references ddl__foreign_key.t1(id)); +commit; +set @@global.tidb_enable_foreign_key=default; +set @@global.tidb_enable_foreign_key=1; +set @@foreign_key_checks=1; +drop table if exists t1, t2; +create table t1 (id int key, b varchar(10), index(b)); +create table t2 (a varchar(10), constraint fk foreign key (a) references t1(b)); +insert into t1 values (1, '123456789'); +insert into t2 values ('123456789'); +alter table t1 modify column b varchar(5); +Error 1833 (HY000): Cannot change column 'b': used in a foreign key constraint 'fk' of table 'ddl__foreign_key.t2' +alter table t1 modify column b bigint; +Error 3780 (HY000): Referencing column 'a' and referenced column 'b' in foreign key constraint 'fk' are incompatible. +alter table t1 modify column b varchar(20); +alter table t1 modify column b varchar(10); +Error 1833 (HY000): Cannot change column 'b': used in a foreign key constraint 'fk' of table 'ddl__foreign_key.t2' +alter table t2 modify column a varchar(20); +alter table t2 modify column a varchar(21); +alter table t2 modify column a varchar(5); +Error 1832 (HY000): Cannot change column 'a': used in a foreign key constraint 'fk' +alter table t2 modify column a bigint; +Error 3780 (HY000): Referencing column 'a' and referenced column 'b' in foreign key constraint 'fk' are incompatible. +drop table t1, t2; +create table t1 (id int key, b decimal(10, 5), index(b)); +create table t2 (a decimal(10, 5), constraint fk foreign key (a) references t1(b)); +insert into t1 values (1, 12345.67891); +insert into t2 values (12345.67891); +alter table t1 modify column b decimal(10, 6); +Error 1833 (HY000): Cannot change column 'b': used in a foreign key constraint 'fk' of table 'ddl__foreign_key.t2' +alter table t1 modify column b decimal(10, 3); +Error 1833 (HY000): Cannot change column 'b': used in a foreign key constraint 'fk' of table 'ddl__foreign_key.t2' +alter table t1 modify column b decimal(5, 2); +Error 1833 (HY000): Cannot change column 'b': used in a foreign key constraint 'fk' of table 'ddl__foreign_key.t2' +alter table t1 modify column b decimal(20, 10); +Error 1833 (HY000): Cannot change column 'b': used in a foreign key constraint 'fk' of table 'ddl__foreign_key.t2' +alter table t2 modify column a decimal(30, 15); +Error 1832 (HY000): Cannot change column 'a': used in a foreign key constraint 'fk' +alter table t2 modify column a decimal(5, 2); +Error 1832 (HY000): Cannot change column 'a': used in a foreign key constraint 'fk' +set @@global.tidb_enable_foreign_key=default; +set @@foreign_key_checks=default; +set @@global.tidb_enable_foreign_key=1; +set @@foreign_key_checks=1; +drop table if exists t1,t2,t3; +create table t1 (id int key, b int, index(b)); +create table t2 (id int key, b int, foreign key fk_b(b) references t1(id)); +create table t3 (id int key, b int, foreign key fk_b(b) references t2(id)); +drop table if exists t1,t2; +Error 3730 (HY000): Cannot drop table 't2' referenced by a foreign key constraint 'fk_b' on table 't3'. +show tables; +Tables_in_ddl__foreign_key +t1 +t2 +t3 +drop table if exists t1,t2,t3; +set @@global.tidb_enable_foreign_key=default; +set @@foreign_key_checks=default; +set @@global.tidb_enable_foreign_key=1; +set @@foreign_key_checks=1; +drop table if exists t1, t2; +create table t1 (id int key, a int, b int, index(b), CONSTRAINT fk foreign key (a) references t1(b)); +alter table t1 drop column a; +Error 1828 (HY000): Cannot drop column 'a': needed in a foreign key constraint 'fk' +alter table t1 drop column b; +Error 1829 (HY000): Cannot drop column 'b': needed in a foreign key constraint 'fk' of table 't1' +drop table t1; +create table t1 (id int key, b int, index(b)); +create table t2 (a int, b int, constraint fk foreign key (a) references t1(b)); +alter table t1 drop column b; +Error 1829 (HY000): Cannot drop column 'b': needed in a foreign key constraint 'fk' of table 't2' +alter table t2 drop column a; +Error 1828 (HY000): Cannot drop column 'a': needed in a foreign key constraint 'fk' +set @@global.tidb_enable_foreign_key=default; +set @@foreign_key_checks=default; +set @@global.tidb_enable_foreign_key=1; +set @@foreign_key_checks=1; +drop table if exists t1, t2; +create table t1 (id int key, b int, index(b)); +create table t2 (id int key, b int, foreign key fk_b(b) references t1(id)); +create database ddl__foreign_key_test; +create table ddl__foreign_key_test.t3 (id int key, b int, foreign key fk_b(b) references ddl__foreign_key.t2(id)); +drop database ddl__foreign_key; +Error 3730 (HY000): Cannot drop table 't2' referenced by a foreign key constraint 'fk_b' on table 't3'. +set @@foreign_key_checks=0; +drop database ddl__foreign_key; +set @@foreign_key_checks=1; +create database ddl__foreign_key; +use ddl__foreign_key; +create table t1 (id int key, b int, index(b)); +create table t2 (id int key, b int, foreign key fk_b(b) references t1(id)); +drop database ddl__foreign_key; +Error 3730 (HY000): Cannot drop table 't2' referenced by a foreign key constraint 'fk_b' on table 't3'. +drop table ddl__foreign_key_test.t3; +drop database ddl__foreign_key; +create database ddl__foreign_key; +use ddl__foreign_key; +set @@global.tidb_enable_foreign_key=default; +set @@foreign_key_checks=default; +set @@foreign_key_checks=1; +drop table if exists t1, t2; +create table t1 (id int key); +create table t2 (a int, b int); +alter table t2 add foreign key (a) references t1(id), add foreign key (b) references t1(id); +alter table t2 add column c int, add column d int; +alter table t2 add foreign key (c) references t1(id), add foreign key (d) references t1(id), add index(c), add index(d); +drop table t2; +create table t2 (a int, b int, index idx1(a), index idx2(b)); +alter table t2 drop index idx1, drop index idx2, add foreign key (a) references t1(id), add foreign key (b) references t1(id); +Error 1553 (HY000): Cannot drop index 'idx1': needed in a foreign key constraint +alter table t2 drop index idx1, drop index idx2; +alter table t2 add foreign key (a) references t1(id), add foreign key (b) references t1(id); +show create table t2; +Table Create Table +t2 CREATE TABLE `t2` ( + `a` int(11) DEFAULT NULL, + `b` int(11) DEFAULT NULL, + KEY `fk_1` (`a`), + KEY `fk_2` (`b`), + CONSTRAINT `fk_1` FOREIGN KEY (`a`) REFERENCES `ddl__foreign_key`.`t1` (`id`), + CONSTRAINT `fk_2` FOREIGN KEY (`b`) REFERENCES `ddl__foreign_key`.`t1` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin +drop table t2; +create table t2 (a int, b int, index idx0(a,b), index idx1(a), index idx2(b)); +alter table t2 drop index idx1, add foreign key (a) references t1(id), add foreign key (b) references t1(id); +set @@foreign_key_checks=default; +set @@foreign_key_checks=1; +drop table if exists t1, t2; +create table t1 (id int key); +insert into t1 values (1),(2),(3),(4); +alter table t1 cache; +create table t2 (b int); +alter table t2 add constraint fk foreign key (b) references t1(id) on delete cascade on update cascade; +insert into t2 values (1),(2),(3),(4); +insert into t2 values (5); +Error 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`ddl__foreign_key`.`t2`, CONSTRAINT `fk` FOREIGN KEY (`b`) REFERENCES `t1` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) +update t1 set id = id+10 where id=1; +delete from t1 where id<10; +select * from t1; +id +11 +select * from t2; +b +11 +alter table t1 nocache; +drop table t1,t2; +create table t1 (id int key); +create table t2 (b int); +alter table t2 add constraint fk foreign key (b) references t1(id) on delete cascade on update cascade; +alter table t2 cache; +insert into t1 values (1),(2),(3),(4); +insert into t2 values (1),(2),(3),(4); +insert into t2 values (5); +Error 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`ddl__foreign_key`.`t2`, CONSTRAINT `fk` FOREIGN KEY (`b`) REFERENCES `t1` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) +update t1 set id = id+10 where id=1; +delete from t1 where id<10; +select * from t1; +id +11 +select * from t2; +b +11 +alter table t2 nocache; +drop table t1,t2; +set @@foreign_key_checks=default; +set @@foreign_key_checks=1; +drop table if exists t1, t2; +create table t1 (id int key, b int, index idx1(b)); +create table t2 (id int key, b int, constraint fk foreign key (b) references t1(b)); +insert into t1 values (1,1),(2,2); +insert into t2 values (1,1),(2,2); +insert into t2 values (3,3); +Error 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`ddl__foreign_key`.`t2`, CONSTRAINT `fk` FOREIGN KEY (`b`) REFERENCES `t1` (`b`)) +delete from t1 where id=1; +Error 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`ddl__foreign_key`.`t2`, CONSTRAINT `fk` FOREIGN KEY (`b`) REFERENCES `t1` (`b`)) +alter table t1 rename index idx1 to idx2; +alter table t2 rename index fk to idx; +insert into t2 values (3,3); +Error 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`ddl__foreign_key`.`t2`, CONSTRAINT `fk` FOREIGN KEY (`b`) REFERENCES `t1` (`b`)) +delete from t1 where id=1; +Error 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`ddl__foreign_key`.`t2`, CONSTRAINT `fk` FOREIGN KEY (`b`) REFERENCES `t1` (`b`)) +alter table t2 drop foreign key fk; +alter table t2 add foreign key fk (b) references t1(b) on delete cascade on update cascade; +alter table t1 rename index idx2 to idx3; +alter table t2 rename index idx to idx0; +delete from t1 where id=1; +select * from t1; +id b +2 2 +select * from t2; +id b +2 2 +admin check table t1,t2; +set @@foreign_key_checks=default; +set @@foreign_key_checks=1; +drop table if exists employee; +create table employee (id bigint auto_increment key, pid bigint); +insert into employee (id) values (1),(2),(3),(4),(5),(6),(7),(8); +insert into employee (pid) select pid from employee; +insert into employee (pid) select pid from employee; +insert into employee (pid) select pid from employee; +insert into employee (pid) select pid from employee; +insert into employee (pid) select pid from employee; +insert into employee (pid) select pid from employee; +insert into employee (pid) select pid from employee; +insert into employee (pid) select pid from employee; +insert into employee (pid) select pid from employee; +insert into employee (pid) select pid from employee; +insert into employee (pid) select pid from employee; +insert into employee (pid) select pid from employee; +insert into employee (pid) select pid from employee; +insert into employee (pid) select pid from employee; +update employee set pid=id-1 where id>1; +set @a=now(6); +alter table employee add foreign key fk_1(pid) references employee(id); +select timestampdiff(microsecond, @a, now(6)) < 1000000; +timestampdiff(microsecond, @a, now(6)) < 1000000 +1 diff --git a/tests/integrationtest/r/executor/cte.result b/tests/integrationtest/r/executor/cte.result index 2721c2f4b9c10..60f4967359e55 100644 --- a/tests/integrationtest/r/executor/cte.result +++ b/tests/integrationtest/r/executor/cte.result @@ -1,3 +1,4 @@ +set tidb_max_chunk_size=default; with recursive cte1 as (select 1 c1 union all select c1 + 1 c1 from cte1 where c1 < 5) select * from cte1; c1 1 diff --git a/tests/integrationtest/r/executor/delete.result b/tests/integrationtest/r/executor/delete.result index f92a7a503effd..d452dd98a9e21 100644 --- a/tests/integrationtest/r/executor/delete.result +++ b/tests/integrationtest/r/executor/delete.result @@ -14,3 +14,96 @@ execute stmt using @a; select * from t; a 2 +drop table if exists delete_test; +drop view if exists v; +drop sequence if exists seq; +create table delete_test(id int not null default 1, name varchar(255), PRIMARY KEY(id)); +insert INTO delete_test VALUES (1, "hello"); +insert into delete_test values (2, "hello"); +update delete_test set name = "abc" where id = 2; +affected rows: 1 +info: Rows matched: 1 Changed: 1 Warnings: 0 +delete from delete_test where id = 2 limit 1; +affected rows: 1 +info: +delete from delete_test where 0; +affected rows: 0 +info: +insert into delete_test values (2, 'abc'); +delete from delete_test where delete_test.id = 2 limit 1; +affected rows: 1 +info: +begin; +SELECT * from delete_test limit 2; +id name +1 hello +commit; +insert into delete_test values (2, 'abc'); +delete from delete_test where id = (select '2a'); +Error 1292 (22007): Truncated incorrect DOUBLE value: '2a' +delete ignore from delete_test where id = (select '2a'); +affected rows: 1 +info: +SHOW WARNINGS; +Level Code Message +Warning 1292 Truncated incorrect DOUBLE value: '2a' +Warning 1292 Truncated incorrect DOUBLE value: '2a' +delete from delete_test; +affected rows: 1 +info: +create view v as select * from delete_test; +delete from v where name = 'aaa'; +Error 1105 (HY000): delete view v is not supported now +drop view v; +create sequence seq; +delete from seq; +Error 1105 (HY000): delete sequence seq is not supported now +drop sequence seq; +drop table if exists t1, t2; +create table t1 (c1 int, c2 int, index (c1)); +create table t2 (c1 int, c2 int); +insert into t1 values (1, 1), (2, 2); +delete from t1 where t1.c1 = 1; +affected rows: 1 +info: +delete from t1 where t1.c2 = 2; +affected rows: 1 +info: +select * from t1; +c1 c2 +insert into t1 values (1, 3); +delete from t1 as a where a.c1 = 1; +affected rows: 1 +info: +insert into t1 values (1, 1), (2, 2); +insert into t2 values (2, 1), (3,1); +delete t1, t2 from t1 join t2 where t1.c1 = t2.c2; +affected rows: 3 +info: +insert into t2 values (2, 1), (3,1); +delete a, b from t1 as a join t2 as b where a.c2 = b.c1; +affected rows: 2 +info: +delete t1, t2 from t1 as a join t2 as b where a.c2 = b.c1; +Error 1109 (42S02): Unknown table 't1' in MULTI DELETE +drop table if exists t1, t2, t3; +create table t1 (id int, data int); +insert into t1 values (11, 121), (12, 122), (13, 123); +affected rows: 3 +info: Records: 3 Duplicates: 0 Warnings: 0 +create table t2 (id int, data int); +insert into t2 values (11, 221), (22, 222), (23, 223); +affected rows: 3 +info: Records: 3 Duplicates: 0 Warnings: 0 +create table t3 (id int, data int); +insert into t3 values (11, 321), (22, 322), (23, 323); +affected rows: 3 +info: Records: 3 Duplicates: 0 Warnings: 0 +delete t1, t2 from t1 inner join t2 inner join t3 where t1.id=t2.id and t2.id=t3.id; +affected rows: 2 +info: +select * from t3; +id data +11 321 +22 322 +23 323 diff --git a/tests/integrationtest/r/executor/executor.result b/tests/integrationtest/r/executor/executor.result index 326feed5718a0..e84cda08a7f47 100644 --- a/tests/integrationtest/r/executor/executor.result +++ b/tests/integrationtest/r/executor/executor.result @@ -4276,3 +4276,276 @@ select sum(case when ssci.customer_sk is not null and csci.customer_sk is null from ssci right join csci on (ssci.customer_sk=csci.customer_sk and ssci.item_sk = csci.item_sk) limit 100; +admin show bdr role; +BDR_ROLE +none +admin set bdr role primary; +admin show bdr role; +BDR_ROLE +primary +admin set bdr role secondary; +admin show bdr role; +BDR_ROLE +secondary +admin set bdr role local_only; +admin show bdr role; +BDR_ROLE +local_only +admin set bdr role test_err; +Error 1064 (42000): 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 27 near "test_err;" +admin show bdr role; +BDR_ROLE +local_only +set global tidb_mem_oom_action='CANCEL'; +drop table if exists t, t1; +create table t(a int, b int, index idx(a)); +create table t1(a int, c int, index idx(a)); +set tidb_mem_quota_query=10; +select t.a, t1.a from t use index(idx), t1 use index(idx) where t.a = t1.a; +Error 8175 (HY000): 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=] +set global tidb_mem_oom_action=default; +set tidb_mem_quota_query=default; +drop table if exists t, t1; +create table t (a int primary key, b double); +insert into t values (1,1); +SET GLOBAL tidb_mem_oom_action='CANCEL'; +set @@tidb_mem_quota_query=1; +select sum(b) from t group by a; +Error 8175 (HY000): 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=] +drop table if exists t,t1; +create table t (a bigint); +create table t1 (a bigint); +set @@tidb_mem_quota_query=200; +insert into t1 values (1),(2),(3),(4),(5); +Error 8175 (HY000): 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=] +replace into t1 values (1),(2),(3),(4),(5); +Error 8175 (HY000): 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=] +set @@tidb_mem_quota_query=10000; +insert into t1 values (1),(2),(3),(4),(5); +set @@tidb_mem_quota_query=10; +insert into t select a from t1 order by a desc; +Error 8175 (HY000): 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=] +replace into t select a from t1 order by a desc; +Error 8175 (HY000): 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=] +set @@tidb_mem_quota_query=10000; +insert into t values (1),(2),(3),(4),(5); +set @@tidb_mem_quota_query=244; +delete from t; +Error 8175 (HY000): 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=] +set @@tidb_mem_quota_query=10000; +delete from t1; +insert into t1 values(1); +insert into t values (1),(2),(3),(4),(5); +set @@tidb_mem_quota_query=244; +delete t, t1 from t join t1 on t.a = t1.a; +Error 8175 (HY000): 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=] +set @@tidb_mem_quota_query=100000; +truncate table t; +insert into t values(1),(2),(3); +set @@tidb_mem_quota_query=244; +update t set a = 4; +Error 8175 (HY000): 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=] +SET GLOBAL tidb_mem_oom_action = DEFAULT; +set @@tidb_mem_quota_query=DEFAULT; +drop table if exists t; +create table t(a int); +insert into t values(1); +set tidb_track_aggregate_memory_usage = off; +explain analyze select /*+ HASH_AGG() */ sum(a) from t; +id estRows actRows task access object execution info operator info memory disk +HashAgg_9 1.00 1 root funcs:sum(Column#4)->Column#3 N/A N/A +└─TableReader_10 1.00 1 root data:HashAgg_5 Bytes N/A + └─HashAgg_5 1.00 1 cop[tikv] funcs:sum(executor__executor.t.a)->Column#4 N/A N/A + └─TableFullScan_8 10000.00 1 cop[tikv] keep order:false, stats:pseudo N/A N/A +explain analyze select /*+ STREAM_AGG() */ sum(a) from t; +id estRows actRows task access object execution info operator info memory disk +StreamAgg_14 1.00 1 root funcs:sum(Column#4)->Column#3 N/A N/A +└─TableReader_15 1.00 1 root data:StreamAgg_8 Bytes N/A + └─StreamAgg_8 1.00 1 cop[tikv] funcs:sum(executor__executor.t.a)->Column#4 N/A N/A + └─TableFullScan_13 10000.00 1 cop[tikv] keep order:false, stats:pseudo N/A N/A +set tidb_track_aggregate_memory_usage = on; +explain analyze select /*+ HASH_AGG() */ sum(a) from t; +id estRows actRows task access object execution info operator info memory disk +HashAgg_9 1.00 1 root funcs:sum(Column#4)->Column#3 KB N/A +└─TableReader_10 1.00 1 root data:HashAgg_5 Bytes N/A + └─HashAgg_5 1.00 1 cop[tikv] funcs:sum(executor__executor.t.a)->Column#4 N/A N/A + └─TableFullScan_8 10000.00 1 cop[tikv] keep order:false, stats:pseudo N/A N/A +explain analyze select /*+ STREAM_AGG() */ sum(a) from t; +id estRows actRows task access object execution info operator info memory disk +StreamAgg_14 1.00 1 root funcs:sum(Column#4)->Column#3 KB N/A +└─TableReader_15 1.00 1 root data:StreamAgg_8 Bytes N/A + └─StreamAgg_8 1.00 1 cop[tikv] funcs:sum(executor__executor.t.a)->Column#4 N/A N/A + └─TableFullScan_13 10000.00 1 cop[tikv] keep order:false, stats:pseudo N/A N/A +set tidb_track_aggregate_memory_usage = default; +drop table if exists testbind; +create table testbind(i int, s varchar(20)); +create index index_t on testbind(i,s); +create global binding for select * from testbind using select * from testbind use index for join(index_t); +show global bindings where default_db='executor__executor'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest +select * from `executor__executor` . `testbind` SELECT * FROM `executor__executor`.`testbind` USE INDEX FOR JOIN (`index_t`) executor__executor enabled utf8mb4 utf8mb4_general_ci manual a2fa907992be17801e5976df09b5b3a0d205f4c4aff39a14ab3bc8642026f527 +create session binding for select * from testbind using select * from testbind use index for join(index_t); +show session bindings where default_db='executor__executor'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest +select * from `executor__executor` . `testbind` SELECT * FROM `executor__executor`.`testbind` USE INDEX FOR JOIN (`index_t`) executor__executor enabled utf8mb4 utf8mb4_general_ci manual a2fa907992be17801e5976df09b5b3a0d205f4c4aff39a14ab3bc8642026f527 +drop session binding for select * from testbind using select * from testbind use index for join(index_t); +drop global binding for select * from testbind using select * from testbind use index for join(index_t); +drop table if EXISTS t1; +create table t1(id int primary key, a int, b int, c int, d int, index t1a(a), index t1b(b)); +insert into t1 values(1,1,1,1,1),(2,2,2,2,2),(3,3,3,3,3),(4,4,4,4,4),(5,5,5,5,5); +explain analyze select /*+ use_index_merge(t1, primary, t1a) */ * from t1 where id < 2 or a > 4; +id estRows actRows task access object execution info operator info memory disk +IndexMerge_8 3334.67 2 root NULL .*time:.*loops:.*index_task:{fetch_handle:.*, merge:.*}.*table_task:{num.*concurrency.*fetch_row.*wait_time.*}.* type: union KB N/A +├─TableRangeScan_5(Build) 3333.33 1 cop[tikv] table:t1 .*time:.*loops:.*cop_task:.* range:[-inf,2), keep order:false, stats:pseudo Bytes N/A +├─IndexRangeScan_6(Build) 3333.33 1 cop[tikv] table:t1, index:t1a(a) .*time:.*loops:.*cop_task:.* range:(4,+inf], keep order:false, stats:pseudo N/A N/A +└─TableRowIDScan_7(Probe) 3334.67 2 cop[tikv] table:t1 .*time:.*loops:.*cop_task:.* keep order:false, stats:pseudo N/A N/A +set @@tidb_enable_collect_execution_info=0; +select /*+ use_index_merge(t1, primary, t1a) */ * from t1 where id < 2 or a > 4 order by a; +id a b c d +1 1 1 1 1 +5 5 5 5 5 +set @@tidb_enable_collect_execution_info=default; +drop table if exists t1; +create table t1 (a int, b int, index(a)); +insert into t1 values (1,2),(2,3),(3,4); +explain analyze select * from t1 use index(a) where a > 1; +id estRows actRows task access object execution info operator info memory disk +IndexLookUp_7 3333.33 2 root NULL .*time:.*loops:.*index_task:.*table_task: {total_time.*num.*concurrency.*}.* NULL KB N/A +├─IndexRangeScan_5(Build) 3333.33 2 cop[tikv] table:t1, index:a(a) .*time:.*loops:.*cop_task:.* range:(1,+inf], keep order:false, stats:pseudo N/A N/A +└─TableRowIDScan_6(Probe) 3333.33 2 cop[tikv] table:t1 .*time:.*loops:.*cop_task:.* keep order:false, stats:pseudo N/A N/A +drop table if exists t1; +create table t1 (a int, b int); +insert into t1 values (1,2),(2,3),(3,4); +explain analyze SELECT /*+ HASH_AGG() */ count(*) FROM t1 WHERE a < 10; +id estRows actRows task access object execution info operator info memory disk +HashAgg_11 1.00 1 root NULL .*time:.*loops:.*partial_worker:{wall_time:.*concurrency:.*task_num:.*tot_wait:.*tot_exec:.*tot_time:.*max:.*p95:.*}.*final_worker:{wall_time:.*concurrency:.*task_num:.*tot_wait:.*tot_exec:.*tot_time:.*max:.*p95:.*}.* funcs:count(Column#5)->Column#4 KB N/A +└─TableReader_12 1.00 1 root NULL time.*loops.*cop_task.* data:HashAgg_6 Bytes N/A + └─HashAgg_6 1.00 1 cop[tikv] NULL tikv_task:.* funcs:count(1)->Column#5 N/A N/A + └─Selection_10 3323.33 3 cop[tikv] NULL tikv_task:.* lt(executor__executor.t1.a, 10) N/A N/A + └─TableFullScan_9 10000.00 3 cop[tikv] table:t1 tikv_task:.* keep order:false, stats:pseudo N/A N/A +set global tidb_txn_mode=''; +drop table if exists t, t1; +create table t (c1 int, c2 int, c3 int); +insert t values (11, 2, 3); +insert t values (12, 2, 3); +insert t values (13, 2, 3); +create table t1 (c1 int); +insert t1 values (11); +begin; +select * from t where c1=11 for update; +c1 c2 c3 +11 2 3 +begin; +update t set c2=211 where c1=11; +commit; +commit; +Error 9007 (HY000): Write conflict, reason=Optimistic [try again later] +begin; +select * from t where exists(select null from t1 where t1.c1=t.c1) for update; +c1 c2 c3 +11 211 3 +begin; +update t set c2=211 where c1=12; +commit; +commit; +begin; +select * from t where c1=11 for update; +c1 c2 c3 +11 211 3 +begin; +update t set c2=22 where c1=12; +commit; +commit; +set @@autocommit=1; +select * from t where c1=11 for update; +c1 c2 c3 +11 211 3 +begin; +update t set c2=211 where c1=11; +commit; +commit; +begin; +select * from (select * from t for update) t join t1 for update; +c1 c2 c3 c1 +11 211 3 11 +12 22 3 11 +13 2 3 11 +begin; +update t1 set c1 = 13; +commit; +commit; +Error 9007 (HY000): Write conflict, reason=Optimistic [try again later] +set global tidb_txn_mode=pessimistic; +drop table if exists t, t1; +create table t (i int); +create table t1 (i int); +insert t values (1); +insert t1 values (1); +begin pessimistic; +select * from t, t1 where t.i = t1.i for update of t; +i i +1 1 +begin pessimistic; +select * from t1 for update; +i +1 +select * from t for update nowait; +Error 3572 (HY000): Statement aborted because lock(s) could not be acquired immediately and NOWAIT is set. +rollback; +select * from t for update nowait; +i +1 +rollback; +set session tidb_txn_mode=''; +drop table if exists t; +create table t(a int); +insert into t values (1); +begin; +select 1 as a union select a from t for update; +a +1 +set session tidb_txn_mode=''; +update t set a = a + 1; +commit; +Error 9007 (HY000): Write conflict, reason=Optimistic [try again later] +begin; +select 1 as a union select a from t limit 5 for update; +a +1 +2 +select 1 as a union select a from t order by a for update; +a +1 +2 +update t set a = a + 1; +commit; +Error 9007 (HY000): Write conflict, reason=Optimistic [try again later] +set session tidb_txn_mode=pessimistic; +drop table if exists t; +create table t (id bigint key,b int); +split table t by (10),(20),(30); +TOTAL_SPLIT_REGION SCATTER_FINISH_RATIO +3 1 +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 +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 +drop table if exists t; +create table t(a int, b int as(-a)); +insert into t(a) values(1), (3), (7); +SET GLOBAL tidb_mem_oom_action='CANCEL'; +set @@tidb_mem_quota_query=1; +update t set t.a = t.a - 1 where t.a in (select a from t where a < 4); +Error 8175 (HY000): 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=] +set @@tidb_mem_quota_query=1000000000; +select stmt_type from information_schema.statements_summary where digest_text = 'update `t` set `t` . `a` = `t` . `a` - ? where `t` . `a` in ( select `a` from `t` where `a` < ? )'; +stmt_type +Update +set @@tidb_mem_quota_query=default; +set global tidb_mem_oom_action=default; diff --git a/tests/integrationtest/r/executor/foreign_key.result b/tests/integrationtest/r/executor/foreign_key.result index 886f8bf24100d..b02a4751c3330 100644 --- a/tests/integrationtest/r/executor/foreign_key.result +++ b/tests/integrationtest/r/executor/foreign_key.result @@ -385,6 +385,7 @@ select * from t2; t set @@time_zone=default; set @@foreign_key_checks=default; +drop table t1, t2; set @@foreign_key_checks=1; drop table if exists a, b; create table b ( id int(11) NOT NULL AUTO_INCREMENT, f int(11) NOT NULL, PRIMARY KEY (id)); @@ -394,3 +395,39 @@ insert a(id,b_id) values(1,1); update b set id=1,f=2 where id=1; set @@foreign_key_checks=default; drop table if exists a, b; +drop table if exists t1; +set @@foreign_key_checks=1; +create table t1 (id int auto_increment key, pid int, name varchar(200), index(pid)); +insert into t1 (name) values ('abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz'); +insert into t1 (name) select name from t1; +insert into t1 (name) select name from t1; +insert into t1 (name) select name from t1; +insert into t1 (name) select name from t1; +insert into t1 (name) select name from t1; +insert into t1 (name) select name from t1; +insert into t1 (name) select name from t1; +insert into t1 (name) select name from t1; +select count(*) from t1; +count(*) +256 +update t1 set pid=1 where id>1; +alter table t1 add foreign key (pid) references t1 (id) on update cascade; +select sum(id) from t1; +sum(id) +32896 +SET GLOBAL tidb_mem_oom_action='CANCEL'; +set @@tidb_mem_quota_query=40960; +update t1 set id=id+100000 where id=1; +Error 8175 (HY000): 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=] +select id,pid from t1 where id = 1; +id pid +1 NULL +set @@foreign_key_checks=0; +update t1 set id=id+100000 where id=1; +select id,pid from t1 where id<3 or pid is null order by id; +id pid +2 1 +100001 NULL +SET GLOBAL tidb_mem_oom_action = DEFAULT; +set @@tidb_mem_quota_query=DEFAULT; +set @@foreign_key_checks=DEFAULT; diff --git a/tests/integrationtest/r/executor/index_merge_reader.result b/tests/integrationtest/r/executor/index_merge_reader.result index 4ee49d934da2e..f12ac443dd22b 100644 --- a/tests/integrationtest/r/executor/index_merge_reader.result +++ b/tests/integrationtest/r/executor/index_merge_reader.result @@ -514,3 +514,19 @@ a b c 1 2 4 1 1 1 rollback; +drop table if exists t1; +create table t1(pk varchar(100) primary key, c1 int, c2 int, index idx1(c1), index idx2(c2)); +insert into t1 values('TXwuGSfZfrgVbTksgvQBilqiUXlNEXzyXNqWRTCidzXFbrkpGFJalRMdVGQOAOojditwludthMcitNqNtvirGAudSNBtdIkpJIHQ', 1, 1), ('LSiKhgTNnuyjdBtuKKuRgzrcxbHrIlfxSkEuooaPYwfOBVQfNYAyatHiWvmUWRUvBLvXmpqAJUWRXXHFCLCjuJqFbVxQdUxqRuqW', 1, 1), ('qCOSFbvtmansHENQaAQbnyYOwCTPctlejpbpueHbtzskmPOazrMWdcMLaYjyfxYQUgDDjCnAnnExepNqwYIzHVjNVndlOzFaAOcf', 1, 1), ('qBqdtPyXIqLKynGNHnRlrufuUCZPqhxUYEqIrYERnQdqXRjVWcoYclxYXoqdpQboKydzhOHOWBwtmcXzGwCWQVdbpozvIaXxiBQj', 1, 1), ('TXZlGHnXOiSWGyRafAqworFmxuadHRTHcYyzLqZMzIMGUUBQmgiIJKQOqbHhoPEKbYBgfPDZJwwqgnCbMxZKaZfvGyVRRUOgRhoq', 1, 1), ('SwFEtKDfPDQpsyxTdTruPyNDLvEOLRdQtSttxJmgBuZiVKsflHCDZaGvkLHMqhHqLayfbZFrxUHzWHgfoPFCWCdCHScabWRNCHCL', 1, 1), ('BuZhnsTMGNtMJtrjjdMMrguutSpiLnZNCdgiNkWDPymzIymcujjBtsnKCAVRSErvbzPaOwLTTPWkGmbXltqOJXmkXnSWWlWaaBqe', 1, 1), ('LuJCpJrLUwDJutwBDtGEsGduteBWPHeGLVhmVJYVrmjunKNuplEeWDCMIAxHPoiRmdPnXneQEQWRvJkPBoXOPaGZhhFLFgGraLmH', 1, 1), ('JKJwMlPmymduJWOmKLFBmZyCFrcUvKcGQkzJmzGjuFoZweyCBptswEPHTkaIhWEEBMWzNBawtfYKKAugBNlxcwmpJSfuIAUSIxeG', 1, 1), ('IqQbehKwleoSUnwxrVLKSbzRqlEFfkwQtRtIfaVpEGfESyGjDJeAOWQPRYVQYvlPNPROQEraCqwQTzanPSrsnUvEXHSxcYjUJvzk', 1, 1), ('zNHmiBGCLUUEDgMAeIGuTgNJFPBtePpxcQrQlgnRlvosJfeYbhRfJdfMwXIRlXxVoOowhEvPhMQPlplzkUfjjmzdJKwGATvfDAiT', 1, 1), ('OjQvpfdsHSdZUAmGfmtQaYKYONAFHGNLeLKRYECqshxygiOzfKkqRwSYGgClqqnpHqPMZpqsjIYSalziqSfMbbtmmzxkOVgglVOh', 1, 1), ('dXXZaWDwdfhjIysLTNMSfwvoEBJhWOVpJnfXFofWSWMfMbUlRgAkobxoCxXPXNUWzAQczbQclQpvIvvATHHcQgdXUvwSTHqLXZny', 1, 1), ('haPqYVwFNUkedfIKPOPyUxIvbSkaUbsEWNvnDtXZsQQqafIhDXlajYpuXOSYiOwGJYAMVLUvXfwOIuyHKElzJHpOUdCiQiXRHubI', 1, 1), ('nQzOwSsVBjCpehVVmLeyYwyVEwYGAfkhCtkkaKyiXzYCRPRVZpNVnOXGbuWrQEgTuPEPFPApUaYLdCtyBEQulFEwyHlORrMfIJxr', 1, 1), ('ksGDopwNPvpjeCtAMaTrznDSgCLpRDQoCdsahWSjwumVEJITbNBPAAtkoxHuwmNQsryoILqCPBPiUSxAWjnFEdtxDIgEtqDiFvpO', 1, 1), ('AdWEZYzxCMhfcZseNVmNQpyqJrVKcKaZpKKcwZXfDPeIBMzkLzpJpOenidMBtBPBIbaiqfpSxBnGtRHAksBOgpigQTVomZzJhCFb', 1, 1), ('bVMNkLOAuRHqnCtGvVPLvmVSKihYFotmHTjObiAIARHawZTruAabGpFxeYxYTTFRxteFYyBfkBfiSEIFvOPquDnlVRNUUubssEMz', 1, 1), ('kXmcjqMYzGxvHBRRCovSTWavDnVajKLlxguJgniJeNkWQUxjHjYjBsveLfojybWkbqHBVzrOoqgXFrDnnRJPcybmnuAEUTPUoIjO', 1, 1), ('rVXzZDKudOpWCBuRCoQCpukHxenZnsaptDeJCCFzxMVvNucFwLKIiSceLsqUHHQuEfAIygjQCCkIbfInGthSnoLdNGWbsLDsxnrY', 1, 1); +explain format='brief' select /*+ use_index_merge(t1, primary, idx1, idx2) */ c1 from t1 where c1 < 1024 and c2 < 1024; +id estRows task access object operator info +Projection 1104.45 root executor__index_merge_reader.t1.c1 +└─IndexMerge 1104.45 root type: intersection + ├─IndexRangeScan(Build) 3323.33 cop[tikv] table:t1, index:idx1(c1) range:[-inf,1024), keep order:false, stats:pseudo + ├─IndexRangeScan(Build) 3323.33 cop[tikv] table:t1, index:idx2(c2) range:[-inf,1024), keep order:false, stats:pseudo + └─TableRowIDScan(Probe) 1104.45 cop[tikv] table:t1 keep order:false, stats:pseudo +set global tidb_mem_oom_action='CANCEL'; +set @@tidb_mem_quota_query = 4000; +select /*+ use_index_merge(t1, primary, idx1, idx2) */ c1 from t1 where c1 < 1024 and c2 < 1024; +Error 8175 (HY000): 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=] +set global tidb_mem_oom_action = DEFAULT; +set @@tidb_mem_quota_query = default; diff --git a/tests/integrationtest/r/executor/insert.result b/tests/integrationtest/r/executor/insert.result index 1c9bd502d91bf..977ff1e9ac41e 100644 --- a/tests/integrationtest/r/executor/insert.result +++ b/tests/integrationtest/r/executor/insert.result @@ -1222,3 +1222,912 @@ commit; commit; Error 1062 (23000): Duplicate entry '146576795' for key 't.PRIMARY' set global tidb_disable_txn_auto_retry=default; +drop table if exists t; +create table t (id smallint auto_increment primary key); +alter table t add column c1 int default 1; +insert ignore into t(id) values (194626268); +affected rows: 1 +info: +select * from t; +id c1 +32767 1 +insert ignore into t(id) values ('*') on duplicate key update c1 = 2; +affected rows: 2 +info: +select * from t; +id c1 +32767 2 +drop table if exists t; +create table t (i int not null primary key, j int unique key); +insert into t values (1, 1), (2, 2); +affected rows: 2 +info: Records: 2 Duplicates: 0 Warnings: 0 +insert ignore into t values(1, 1) on duplicate key update i = 2; +affected rows: 0 +info: +select * from t; +i j +1 1 +2 2 +insert ignore into t values(1, 1) on duplicate key update j = 2; +affected rows: 0 +info: +select * from t; +i j +1 1 +2 2 +drop table if exists t2; +create table t2(`col_25` set('Alice','Bob','Charlie','David') NOT NULL,`col_26` date NOT NULL DEFAULT '2016-04-15', PRIMARY KEY (`col_26`) clustered, UNIQUE KEY `idx_9` (`col_25`,`col_26`),UNIQUE KEY `idx_10` (`col_25`)); +insert into t2(col_25, col_26) values('Bob', '1989-03-23'),('Alice', '2023-11-24'), ('Charlie', '2023-12-05'); +insert ignore into t2 (col_25,col_26) values ( 'Bob','1977-11-23' ) on duplicate key update col_25 = 'Alice', col_26 = '2036-12-13'; +show warnings; +Level Code Message +Warning 1062 Duplicate entry 'Alice' for key 't2.idx_10' +select * from t2; +col_25 col_26 +Bob 1989-03-23 +Alice 2023-11-24 +Charlie 2023-12-05 +drop table if exists t4; +create table t4(id int primary key clustered, k int, v int, unique key uk1(k)); +insert into t4 values (1, 10, 100), (3, 30, 300); +insert ignore into t4 (id, k, v) values(1, 0, 0) on duplicate key update id = 2, k = 30; +show warnings; +Level Code Message +Warning 1062 Duplicate entry '30' for key 't4.uk1' +select * from t4; +id k v +1 10 100 +3 30 300 +drop table if exists t5; +create table t5(k1 varchar(100), k2 varchar(100), uk1 int, v int, primary key(k1, k2) clustered, unique key ukk1(uk1), unique key ukk2(v)); +insert into t5(k1, k2, uk1, v) values('1', '1', 1, '100'), ('1', '3', 2, '200'); +update ignore t5 set k2 = '2', uk1 = 2 where k1 = '1' and k2 = '1'; +show warnings; +Level Code Message +Warning 1062 Duplicate entry '2' for key 't5.ukk1' +select * from t5; +k1 k2 uk1 v +1 1 1 100 +1 3 2 200 +drop table if exists t6; +create table t6 (a int, b int, c int, primary key(a, b) clustered, unique key idx_14(b), unique key idx_15(b), unique key idx_16(a, b)); +insert into t6 select 10, 10, 20; +insert ignore into t6 set a = 20, b = 10 on duplicate key update a = 100; +select * from t6; +a b c +100 10 20 +insert ignore into t6 set a = 200, b= 10 on duplicate key update c = 1000; +select * from t6; +a b c +100 10 1000 +drop table if exists insert_autoinc_test; +create table insert_autoinc_test (id int primary key auto_increment, c1 int); +insert into insert_autoinc_test(c1) values (1), (2); +begin; +select * from insert_autoinc_test; +id c1 +1 1 +2 2 +commit; +begin; +insert into insert_autoinc_test(id, c1) values (5,5); +insert into insert_autoinc_test(c1) values (6); +commit; +begin; +select * from insert_autoinc_test; +id c1 +1 1 +2 2 +5 5 +6 6 +commit; +begin; +insert into insert_autoinc_test(id, c1) values (3,3); +commit; +begin; +select * from insert_autoinc_test; +id c1 +1 1 +2 2 +3 3 +5 5 +6 6 +commit; +begin; +insert into insert_autoinc_test(c1) values (7); +commit; +begin; +select * from insert_autoinc_test; +id c1 +1 1 +2 2 +3 3 +5 5 +6 6 +7 7 +commit; +drop table if exists insert_autoinc_test; +create table insert_autoinc_test (id int primary key auto_increment, c1 int); +insert into insert_autoinc_test(id, c1) values (0.3, 1); +select * from insert_autoinc_test; +id c1 +1 1 +insert into insert_autoinc_test(id, c1) values (-0.3, 2); +select * from insert_autoinc_test; +id c1 +1 1 +2 2 +insert into insert_autoinc_test(id, c1) values (-3.3, 3); +select * from insert_autoinc_test; +id c1 +-3 3 +1 1 +2 2 +insert into insert_autoinc_test(id, c1) values (4.3, 4); +select * from insert_autoinc_test; +id c1 +-3 3 +1 1 +2 2 +4 4 +insert into insert_autoinc_test(c1) values (5); +select * from insert_autoinc_test; +id c1 +-3 3 +1 1 +2 2 +4 4 +5 5 +insert into insert_autoinc_test(id, c1) values (null, 6); +select * from insert_autoinc_test; +id c1 +-3 3 +1 1 +2 2 +4 4 +5 5 +6 6 +drop table if exists insert_autoinc_test; +create table insert_autoinc_test (id int primary key auto_increment, c1 int); +insert into insert_autoinc_test(id, c1) values (5, 1); +select * from insert_autoinc_test; +id c1 +5 1 +insert into insert_autoinc_test(id, c1) values (0, 2); +select * from insert_autoinc_test; +id c1 +5 1 +6 2 +insert into insert_autoinc_test(id, c1) values (0, 3); +select * from insert_autoinc_test; +id c1 +5 1 +6 2 +7 3 +set SQL_MODE=NO_AUTO_VALUE_ON_ZERO; +insert into insert_autoinc_test(id, c1) values (0, 4); +select * from insert_autoinc_test; +id c1 +0 4 +5 1 +6 2 +7 3 +insert into insert_autoinc_test(id, c1) values (0, 5); +Error 1062 (23000): Duplicate entry '0' for key 'insert_autoinc_test.PRIMARY' +insert into insert_autoinc_test(c1) values (6); +select * from insert_autoinc_test; +id c1 +0 4 +5 1 +6 2 +7 3 +8 6 +insert into insert_autoinc_test(id, c1) values (null, 7); +select * from insert_autoinc_test; +id c1 +0 4 +5 1 +6 2 +7 3 +8 6 +9 7 +set SQL_MODE=''; +insert into insert_autoinc_test(id, c1) values (0, 8); +select * from insert_autoinc_test; +id c1 +0 4 +5 1 +6 2 +7 3 +8 6 +9 7 +10 8 +insert into insert_autoinc_test(id, c1) values (null, 9); +select * from insert_autoinc_test; +id c1 +0 4 +5 1 +6 2 +7 3 +8 6 +9 7 +10 8 +11 9 +set sql_mode = default; +drop table if exists insert_test; +create table insert_test (id int PRIMARY KEY AUTO_INCREMENT, c1 int, c2 int, c3 int default 1); +insert insert_test (c1) values (1),(2),(NULL); +affected rows: 3 +info: Records: 3 Duplicates: 0 Warnings: 0 +begin; +insert insert_test (c1) values (); +Error 1136 (21S01): Column count doesn't match value count at row 1 +rollback; +begin; +insert insert_test (c1, c2) values (1,2),(1); +Error 1136 (21S01): Column count doesn't match value count at row 2 +rollback; +begin; +insert insert_test (xxx) values (3); +Error 1054 (42S22): Unknown column 'xxx' in 'field list' +rollback; +begin; +insert insert_test_xxx (c1) values (); +Error 1146 (42S02): Table 'executor__insert.insert_test_xxx' doesn't exist +rollback; +insert insert_test set c1 = 3; +affected rows: 1 +info: +begin; +insert insert_test set c1 = 4, c1 = 5; +Error 1110 (42000): Column 'c1' specified twice +rollback; +begin; +insert insert_test set xxx = 6; +Error 1054 (42S22): Unknown column 'xxx' in 'field list' +rollback; +drop table if exists insert_test_1, insert_test_2; +create table insert_test_1 (id int, c1 int); +insert insert_test_1 select id, c1 from insert_test; +affected rows: 4 +info: Records: 4 Duplicates: 0 Warnings: 0 +create table insert_test_2 (id int, c1 int); +insert insert_test_1 select id, c1 from insert_test union select id * 10, c1 * 10 from insert_test; +affected rows: 8 +info: Records: 8 Duplicates: 0 Warnings: 0 +begin; +insert insert_test_1 select c1 from insert_test; +Error 1136 (21S01): Column count doesn't match value count at row 1 +rollback; +begin; +insert insert_test_1 values(default, default, default, default, default); +Error 1136 (21S01): Column count doesn't match value count at row 1 +rollback; +select * from insert_test where id = 1; +id c1 c2 c3 +1 1 NULL 1 +insert into insert_test (id, c3) values (1, 2) on duplicate key update id=values(id), c2=10; +affected rows: 2 +info: +select * from insert_test where id = 1; +id c1 c2 c3 +1 1 10 1 +insert into insert_test (id, c2) values (1, 1) on duplicate key update insert_test.c2=10; +affected rows: 0 +info: +insert into insert_test (id, c2) values(1, 1) on duplicate key update t.c2 = 10; +Error 1054 (42S22): Unknown column 't.c2' in 'field list' +INSERT INTO insert_test (id, c3) VALUES (1, 2) ON DUPLICATE KEY UPDATE c3=values(c3)+c3+3; +affected rows: 2 +info: +select * from insert_test where id = 1; +id c1 c2 c3 +1 1 10 6 +INSERT IGNORE INTO insert_test (id, c3) VALUES (1, 2) ON DUPLICATE KEY UPDATE c3=values(c3)+c3+3; +affected rows: 2 +info: +select * from insert_test where id = 1; +id c1 c2 c3 +1 1 10 11 +drop table if exists insert_err; +create table insert_err (id int, c1 varchar(8)); +insert insert_err values (1, 'abcdabcdabcd'); +Error 1406 (22001): Data too long for column 'c1' at row 1 +insert insert_err values (1, '你好,世界'); +create table TEST1 (ID INT NOT NULL, VALUE INT DEFAULT NULL, PRIMARY KEY (ID)); +INSERT INTO TEST1(id,value) VALUE(3,3) on DUPLICATE KEY UPDATE VALUE=4; +affected rows: 1 +info: +drop table if exists t; +create table t (id int); +insert into t values(1); +update t t1 set id = (select count(*) + 1 from t t2 where t1.id = t2.id); +select * from t; +id +2 +drop table if exists t; +create table t(c decimal(5, 5)); +insert into t value(0); +insert into t value(1); +Error 1264 (22003): Out of range value for column 'c' at row 1 +drop table if exists t; +create table t(c binary(255)); +insert into t value(1); +select length(c) from t; +length(c) +255 +drop table if exists t; +create table t(c varbinary(255)); +insert into t value(1); +select length(c) from t; +length(c) +1 +drop table if exists t; +create table t(c int); +set @@time_zone = '+08:00'; +insert into t value(Unix_timestamp('2002-10-27 01:00')); +select * from t; +c +1035651600 +set @@time_zone = default; +drop table if exists t1; +create table t1 (b char(0)); +insert into t1 values (""); +DROP TABLE IF EXISTS t; +CREATE TABLE t(a DECIMAL(4,2)); +INSERT INTO t VALUES (1.000001); +SHOW WARNINGS; +Level Code Message +Warning 1366 Incorrect decimal value: '1.000001' for column 'a' at row 1 +INSERT INTO t VALUES (1.000000); +SHOW WARNINGS; +Level Code Message +DROP TABLE IF EXISTS t; +CREATE TABLE t(a datetime); +INSERT INTO t VALUES('2017-00-00'); +Error 1292 (22007): Incorrect datetime value: '2017-00-00' for column 'a' at row 1 +set sql_mode = ''; +INSERT INTO t VALUES('2017-00-00'); +SELECT * FROM t; +a +2017-00-00 00:00:00 +set sql_mode = 'strict_all_tables'; +SELECT * FROM t; +a +2017-00-00 00:00:00 +set sql_mode = default; +drop table if exists test; +CREATE TABLE test(id int(10) UNSIGNED NOT NULL AUTO_INCREMENT, p int(10) UNSIGNED NOT NULL, PRIMARY KEY(p), KEY(id)); +insert into test(p) value(1); +select * from test; +id p +1 1 +select * from test use index (id) where id = 1; +id p +1 1 +insert into test values(NULL, 2); +select * from test use index (id) where id = 2; +id p +2 2 +insert into test values(2, 3); +select * from test use index (id) where id = 2; +id p +2 2 +2 3 +drop table if exists t; +create table t(a bigint unsigned); +set @@sql_mode = 'strict_all_tables'; +insert into t value (-1); +Error 1264 (22003): Out of range value for column 'a' at row 1 +set @@sql_mode = ''; +insert into t value (-1); +show warnings; +Level Code Message +Warning 1264 Out of range value for column 'a' at row 1 +insert into t select -1; +show warnings; +Level Code Message +Warning 1690 constant -1 overflows bigint +insert into t select cast(-1 as unsigned); +insert into t value (-1.111); +show warnings; +Level Code Message +Warning 1264 Out of range value for column 'a' at row 1 +insert into t value ('-1.111'); +show warnings; +Level Code Message +Warning 1264 Out of range value for column 'a' at row 1 +update t set a = -1 limit 1; +show warnings; +Level Code Message +Warning 1690 constant -1 overflows bigint +select * from t; +a +0 +0 +18446744073709551615 +0 +0 +set @@sql_mode = default; +drop table if exists t; +create table t(a time(6)); +insert into t value('20070219173709.055870'), ('20070219173709.055'), ('20070219173709.055870123'); +select * from t; +a +17:37:09.055870 +17:37:09.055000 +17:37:09.055870 +truncate table t; +insert into t value(20070219173709.055870), (20070219173709.055), (20070219173709.055870123); +select * from t; +a +17:37:09.055870 +17:37:09.055000 +17:37:09.055870 +insert into t value(-20070219173709.055870); +Error 1292 (22007): Incorrect time value: '-20070219173709.055870' for column 'a' at row 1 +drop table if exists t; +set @@sql_mode=''; +create table t(a float unsigned, b double unsigned); +insert into t value(-1.1, -1.1), (-2.1, -2.1), (0, 0), (1.1, 1.1); +show warnings; +Level Code Message +Warning 1264 Out of range value for column 'a' at row 1 +Warning 1264 Out of range value for column 'b' at row 1 +Warning 1264 Out of range value for column 'a' at row 2 +Warning 1264 Out of range value for column 'b' at row 2 +select * from t; +a b +0 0 +0 0 +0 0 +1.1 1.1 +set @@sql_mode=default; +drop table if exists t; +create table t(a int default 1, b int default 2); +insert into t values(default, default); +select * from t; +a b +1 2 +truncate table t; +insert into t values(default(b), default(a)); +select * from t; +a b +2 1 +truncate table t; +insert into t (b) values(default); +select * from t; +a b +1 2 +truncate table t; +insert into t (b) values(default(a)); +select * from t; +a b +1 1 +drop view if exists v; +create view v as select * from t; +insert into v values(1,2); +Error 1105 (HY000): insert into view v is not supported now +replace into v values(1,2); +Error 1105 (HY000): replace into view v is not supported now +drop view v; +drop sequence if exists seq; +create sequence seq; +insert into seq values(); +Error 1105 (HY000): insert into sequence seq is not supported now +replace into seq values(); +Error 1105 (HY000): replace into sequence seq is not supported now +drop sequence seq; +drop table if exists t; +create table t(name varchar(255), b int, c int, primary key(name(2))); +insert into t(name, b) values("cha", 3); +insert into t(name, b) values("chb", 3); +Error 1062 (23000): Duplicate entry 'ch' for key 't.PRIMARY' +insert into t(name, b) values("测试", 3); +insert into t(name, b) values("测试", 3); +Error 1062 (23000): Duplicate entry '' for key 't.PRIMARY' +drop table if exists t; +create table t (i int unique key); +insert into t values (1),(2); +affected rows: 2 +info: Records: 2 Duplicates: 0 Warnings: 0 +select * from t; +i +1 +2 +insert into t values (1), (2) on duplicate key update i = values(i); +affected rows: 0 +info: Records: 2 Duplicates: 0 Warnings: 0 +select * from t; +i +1 +2 +insert into t values (2), (3) on duplicate key update i = 3; +affected rows: 2 +info: Records: 2 Duplicates: 1 Warnings: 0 +select * from t; +i +1 +3 +drop table if exists t; +create table t (i int primary key, j int unique key); +insert into t values (-1, 1); +affected rows: 1 +info: +select * from t; +i j +-1 1 +insert into t values (1, 1) on duplicate key update j = values(j); +affected rows: 0 +info: +select * from t; +i j +-1 1 +drop table if exists test; +create table test (i int primary key, j int unique); +begin; +insert into test values (1,1); +insert into test values (2,1) on duplicate key update i = -i, j = -j; +commit; +select * from test; +i j +-1 -1 +delete from test; +insert into test values (1, 1); +begin; +delete from test where i = 1; +insert into test values (2, 1) on duplicate key update i = -i, j = -j; +commit; +select * from test; +i j +2 1 +delete from test; +insert into test values (1, 1); +begin; +update test set i = 2, j = 2 where i = 1; +insert into test values (1, 3) on duplicate key update i = -i, j = -j; +insert into test values (2, 4) on duplicate key update i = -i, j = -j; +commit; +select * from test order by i; +i j +-2 -2 +1 3 +delete from test; +begin; +insert into test values (1, 3), (1, 3) on duplicate key update i = values(i), j = values(j); +commit; +select * from test order by i; +i j +1 3 +create table tmp (id int auto_increment, code int, primary key(id, code)); +create table m (id int primary key auto_increment, code int unique); +insert tmp (code) values (1); +insert tmp (code) values (1); +set tidb_init_chunk_size=1; +insert m (code) select code from tmp on duplicate key update code = values(code); +select * from m; +id code +1 1 +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 (f1 INT AUTO_INCREMENT PRIMARY KEY, +f2 VARCHAR(5) NOT NULL UNIQUE); +INSERT t1 (f2) VALUES ('test') ON DUPLICATE KEY UPDATE f1 = LAST_INSERT_ID(f1); +affected rows: 1 +info: +SELECT LAST_INSERT_ID(); +LAST_INSERT_ID() +1 +INSERT t1 (f2) VALUES ('test') ON DUPLICATE KEY UPDATE f1 = LAST_INSERT_ID(f1); +affected rows: 0 +info: +SELECT LAST_INSERT_ID(); +LAST_INSERT_ID() +1 +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 (f1 INT AUTO_INCREMENT UNIQUE, +f2 VARCHAR(5) NOT NULL UNIQUE); +INSERT t1 (f2) VALUES ('test') ON DUPLICATE KEY UPDATE f1 = LAST_INSERT_ID(f1); +affected rows: 1 +info: +SELECT LAST_INSERT_ID(); +LAST_INSERT_ID() +1 +INSERT t1 (f2) VALUES ('test') ON DUPLICATE KEY UPDATE f1 = LAST_INSERT_ID(f1); +affected rows: 0 +info: +SELECT LAST_INSERT_ID(); +LAST_INSERT_ID() +1 +INSERT t1 (f2) VALUES ('test') ON DUPLICATE KEY UPDATE f1 = 2; +affected rows: 2 +info: +SELECT LAST_INSERT_ID(); +LAST_INSERT_ID() +1 +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 (f1 INT); +INSERT t1 VALUES (1) ON DUPLICATE KEY UPDATE f1 = 1; +affected rows: 1 +info: +SELECT * FROM t1; +f1 +1 +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 (f1 INT PRIMARY KEY, f2 INT NOT NULL UNIQUE); +INSERT t1 VALUES (1, 1); +affected rows: 1 +info: +INSERT t1 VALUES (1, 1), (1, 1) ON DUPLICATE KEY UPDATE f1 = 2, f2 = 2; +affected rows: 3 +info: Records: 2 Duplicates: 1 Warnings: 0 +SELECT * FROM t1 order by f1; +f1 f2 +1 1 +2 2 +INSERT t1 VALUES (1, 1) ON DUPLICATE KEY UPDATE f2 = null; +Error 1048 (23000): Column 'f2' cannot be null +INSERT IGNORE t1 VALUES (1, 1) ON DUPLICATE KEY UPDATE f2 = null; +affected rows: 2 +info: +show warnings; +Level Code Message +Warning 1048 Column 'f2' cannot be null +SELECT * FROM t1 order by f1; +f1 f2 +1 0 +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 +SELECT * FROM t1 order by f1; +f1 f2 +1 0 +2 2 +set sql_mode=default; +set tidb_init_chunk_size=default; +drop table if exists t1, t2; +create table t1(a1 bigint primary key, b1 bigint); +create table t2(a2 bigint primary key, b2 bigint); +insert into t1 values(1, 100); +affected rows: 1 +info: +insert into t2 values(1, 200); +affected rows: 1 +info: +insert into t1 select a2, b2 from t2 on duplicate key update b1 = a2; +affected rows: 2 +info: Records: 1 Duplicates: 1 Warnings: 0 +select * from t1; +a1 b1 +1 1 +insert into t1 select a2, b2 from t2 on duplicate key update b1 = b2; +affected rows: 2 +info: Records: 1 Duplicates: 1 Warnings: 0 +select * from t1; +a1 b1 +1 200 +insert into t1 select a2, b2 from t2 on duplicate key update a1 = a2; +affected rows: 0 +info: Records: 1 Duplicates: 0 Warnings: 0 +select * from t1; +a1 b1 +1 200 +insert into t1 select a2, b2 from t2 on duplicate key update b1 = 300; +affected rows: 2 +info: Records: 1 Duplicates: 1 Warnings: 0 +select * from t1; +a1 b1 +1 300 +insert into t1 values(1, 1) on duplicate key update b1 = 400; +affected rows: 2 +info: +select * from t1; +a1 b1 +1 400 +insert into t1 select 1, 500 from t2 on duplicate key update b1 = 400; +affected rows: 0 +info: Records: 1 Duplicates: 0 Warnings: 0 +select * from t1; +a1 b1 +1 400 +drop table if exists t1, t2; +create table t1(a bigint primary key, b bigint); +create table t2(a bigint primary key, b bigint); +insert into t1 select * from t2 on duplicate key update c = t2.b; +Error 1054 (42S22): Unknown column 'c' in 'field list' +drop table if exists t1, t2; +create table t1(a bigint primary key, b bigint); +create table t2(a bigint primary key, b bigint); +insert into t1 select * from t2 on duplicate key update a = b; +Error 1052 (23000): Column 'b' in field list is ambiguous +drop table if exists t1, t2; +create table t1(a bigint primary key, b bigint); +create table t2(a bigint primary key, b bigint); +insert into t1 select * from t2 on duplicate key update c = b; +Error 1054 (42S22): Unknown column 'c' in 'field list' +drop table if exists t1, t2; +create table t1(a1 bigint primary key, b1 bigint); +create table t2(a2 bigint primary key, b2 bigint); +insert into t1 select * from t2 on duplicate key update a1 = values(b2); +Error 1054 (42S22): Unknown column 'b2' in 'field list' +drop table if exists t1, t2; +create table t1(a1 bigint primary key, b1 bigint); +create table t2(a2 bigint primary key, b2 bigint); +insert into t1 values(1, 100); +affected rows: 1 +info: +insert into t2 values(1, 200); +affected rows: 1 +info: +insert into t1 select * from t2 on duplicate key update b1 = values(b1) + b2; +affected rows: 2 +info: Records: 1 Duplicates: 1 Warnings: 0 +select * from t1; +a1 b1 +1 400 +insert into t1 select * from t2 on duplicate key update b1 = values(b1) + b2; +affected rows: 0 +info: Records: 1 Duplicates: 0 Warnings: 0 +select * from t1; +a1 b1 +1 400 +drop table if exists t; +create table t(k1 bigint, k2 bigint, val bigint, primary key(k1, k2)); +insert into t (val, k1, k2) values (3, 1, 2); +affected rows: 1 +info: +select * from t; +k1 k2 val +1 2 3 +insert into t (val, k1, k2) select c, a, b from (select 1 as a, 2 as b, 4 as c) tmp on duplicate key update val = tmp.c; +affected rows: 2 +info: Records: 1 Duplicates: 1 Warnings: 0 +select * from t; +k1 k2 val +1 2 4 +drop table if exists t; +create table t(k1 double, k2 double, v double, primary key(k1, k2)); +insert into t (v, k1, k2) select c, a, b from (select "3" c, "1" a, "2" b) tmp on duplicate key update v=c; +affected rows: 1 +info: Records: 1 Duplicates: 0 Warnings: 0 +select * from t; +k1 k2 v +1 2 3 +insert into t (v, k1, k2) select c, a, b from (select "3" c, "1" a, "2" b) tmp on duplicate key update v=c; +affected rows: 0 +info: Records: 1 Duplicates: 0 Warnings: 0 +select * from t; +k1 k2 v +1 2 3 +drop table if exists t1, t2; +create table t1(id int, a int, b int); +insert into t1 values (1, 1, 1); +affected rows: 1 +info: +insert into t1 values (2, 2, 1); +affected rows: 1 +info: +insert into t1 values (3, 3, 1); +affected rows: 1 +info: +create table t2(a int primary key, b int, unique(b)); +insert into t2 select a, b from t1 order by id on duplicate key update a=t1.a, b=t1.b; +affected rows: 5 +info: Records: 3 Duplicates: 2 Warnings: 0 +select * from t2 order by a; +a b +3 1 +drop table if exists t1, t2; +create table t1(id int, a int, b int); +insert into t1 values (1, 1, 1); +affected rows: 1 +info: +insert into t1 values (2, 1, 2); +affected rows: 1 +info: +insert into t1 values (3, 3, 1); +affected rows: 1 +info: +create table t2(a int primary key, b int, unique(b)); +insert into t2 select a, b from t1 order by id on duplicate key update a=t1.a, b=t1.b; +affected rows: 4 +info: Records: 3 Duplicates: 1 Warnings: 0 +select * from t2 order by a; +a b +1 2 +3 1 +drop table if exists t1, t2; +create table t1(id int, a int, b int, c int); +insert into t1 values (1, 1, 1, 1); +affected rows: 1 +info: +insert into t1 values (2, 2, 1, 2); +affected rows: 1 +info: +insert into t1 values (3, 3, 2, 2); +affected rows: 1 +info: +insert into t1 values (4, 4, 2, 2); +affected rows: 1 +info: +create table t2(a int primary key, b int, c int, unique(b), unique(c)); +insert into t2 select a, b, c from t1 order by id on duplicate key update b=t2.b, c=t2.c; +affected rows: 2 +info: Records: 4 Duplicates: 0 Warnings: 0 +select * from t2 order by a; +a b c +1 1 1 +3 2 2 +drop table if exists t1; +create table t1(a int primary key, b int); +insert into t1 values(1,1),(2,2),(3,3),(4,4),(5,5); +affected rows: 5 +info: Records: 5 Duplicates: 0 Warnings: 0 +insert into t1 values(4,14),(5,15),(6,16),(7,17),(8,18) on duplicate key update b=b+10; +affected rows: 7 +info: Records: 5 Duplicates: 2 Warnings: 0 +drop table if exists a, b; +create table a(x int primary key); +create table b(x int, y int); +insert into a values(1); +affected rows: 1 +info: +insert into b values(1, 2); +affected rows: 1 +info: +insert into a select x from b ON DUPLICATE KEY UPDATE a.x=b.y; +affected rows: 2 +info: Records: 1 Duplicates: 1 Warnings: 0 +select * from a; +x +2 +## Test issue 28078. +## Use different types of columns so that there's likely to be error if the types mismatches. +drop table if exists a, b; +create table a(id int, a1 timestamp, a2 varchar(10), a3 float, unique(id)); +create table b(id int, b1 time, b2 varchar(10), b3 int); +insert into a values (1, '2022-01-04 07:02:04', 'a', 1.1), (2, '2022-01-04 07:02:05', 'b', 2.2); +affected rows: 2 +info: Records: 2 Duplicates: 0 Warnings: 0 +insert into b values (2, '12:34:56', 'c', 10), (3, '01:23:45', 'd', 20); +affected rows: 2 +info: Records: 2 Duplicates: 0 Warnings: 0 +insert into a (id) select id from b on duplicate key update a.a2 = b.b2, a.a3 = 3.3; +affected rows: 3 +info: Records: 2 Duplicates: 1 Warnings: 0 +select * from a; +id a1 a2 a3 +1 2022-01-04 07:02:04 a 1.1 +2 2022-01-04 07:02:05 c 3.3 +3 NULL NULL NULL +insert into a (id) select 4 from b where b3 = 20 on duplicate key update a.a3 = b.b3; +affected rows: 1 +info: Records: 1 Duplicates: 0 Warnings: 0 +select * from a; +id a1 a2 a3 +1 2022-01-04 07:02:04 a 1.1 +2 2022-01-04 07:02:05 c 3.3 +3 NULL NULL NULL +4 NULL NULL NULL +insert into a (a2, a3) select 'x', 1.2 from b on duplicate key update a.a2 = b.b3; +affected rows: 2 +info: Records: 2 Duplicates: 0 Warnings: 0 +select * from a; +id a1 a2 a3 +1 2022-01-04 07:02:04 a 1.1 +2 2022-01-04 07:02:05 c 3.3 +3 NULL NULL NULL +4 NULL NULL NULL +NULL NULL x 1.2 +NULL NULL x 1.2 +## reproduce insert on duplicate key update bug under new row format. +drop table if exists t1; +create table t1(c1 decimal(6,4), primary key(c1)); +insert into t1 set c1 = 0.1; +insert into t1 set c1 = 0.1 on duplicate key update c1 = 1; +select * from t1 use index(primary); +c1 +1.0000 diff --git a/tests/integrationtest/r/executor/issues.result b/tests/integrationtest/r/executor/issues.result index 6285c9ab579f7..952378b5effb7 100644 --- a/tests/integrationtest/r/executor/issues.result +++ b/tests/integrationtest/r/executor/issues.result @@ -821,3 +821,13 @@ PRIMARY KEY (st_id) /*T![clustered_index] NONCLUSTERED */ ); trace plan SELECT T_ID, T_S_SYMB, T_QTY, ST_NAME, TH_DTS FROM ( SELECT T_ID AS ID FROM TRADE WHERE T_CA_ID = 43000014236 ORDER BY T_DTS DESC LIMIT 10 ) T, TRADE, TRADE_HISTORY, STATUS_TYPE WHERE TRADE.T_ID = ID AND TRADE_HISTORY.TH_T_ID = TRADE.T_ID AND STATUS_TYPE.ST_ID = TRADE_HISTORY.TH_ST_ID ORDER BY TH_DTS DESC LIMIT 30; set @@foreign_key_checks=default; +drop table if exists partsupp, supplier, nation; +SET GLOBAL tidb_mem_oom_action='CANCEL'; +CREATE TABLE `partsupp` ( `PS_PARTKEY` bigint(20) NOT NULL,`PS_SUPPKEY` bigint(20) NOT NULL,`PS_AVAILQTY` bigint(20) NOT NULL,`PS_SUPPLYCOST` decimal(15,2) NOT NULL,`PS_COMMENT` varchar(199) NOT NULL,PRIMARY KEY (`PS_PARTKEY`,`PS_SUPPKEY`) /*T![clustered_index] CLUSTERED */) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; +CREATE TABLE `supplier` (`S_SUPPKEY` bigint(20) NOT NULL,`S_NAME` char(25) NOT NULL,`S_ADDRESS` varchar(40) NOT NULL,`S_NATIONKEY` bigint(20) NOT NULL,`S_PHONE` char(15) NOT NULL,`S_ACCTBAL` decimal(15,2) NOT NULL,`S_COMMENT` varchar(101) NOT NULL,PRIMARY KEY (`S_SUPPKEY`) /*T![clustered_index] CLUSTERED */) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; +CREATE TABLE `nation` (`N_NATIONKEY` bigint(20) NOT NULL,`N_NAME` char(25) NOT NULL,`N_REGIONKEY` bigint(20) NOT NULL,`N_COMMENT` varchar(152) DEFAULT NULL,PRIMARY KEY (`N_NATIONKEY`) /*T![clustered_index] CLUSTERED */) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; +set @@tidb_mem_quota_query=128; +explain select ps_partkey, sum(ps_supplycost * ps_availqty) as value from partsupp, supplier, nation where ps_suppkey = s_suppkey and s_nationkey = n_nationkey and n_name = 'MOZAMBIQUE' group by ps_partkey having sum(ps_supplycost * ps_availqty) > ( select sum(ps_supplycost * ps_availqty) * 0.0001000000 from partsupp, supplier, nation where ps_suppkey = s_suppkey and s_nationkey = n_nationkey and n_name = 'MOZAMBIQUE' ) order by value desc; +Error 8175 (HY000): 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=] +SET GLOBAL tidb_mem_oom_action = DEFAULT; +set @@tidb_mem_quota_query=default; diff --git a/tests/integrationtest/r/executor/jointest/join.result b/tests/integrationtest/r/executor/jointest/join.result index 58d4bf830fdaf..0416b61c05ed0 100644 --- a/tests/integrationtest/r/executor/jointest/join.result +++ b/tests/integrationtest/r/executor/jointest/join.result @@ -1561,3 +1561,32 @@ set sql_mode=default; set @@tidb_hash_join_concurrency=default; set @@tidb_hashagg_partial_concurrency=default; set @@tidb_hashagg_final_concurrency=default; +drop table if exists t; +create table t(a int); +insert into t values(1); +set tidb_mem_quota_query = 1 << 18; +set global tidb_mem_oom_action = 'CANCEL'; +set global tidb_enable_tmp_storage_on_oom = off; +insert into t select * from t; +insert into t select * from t; +insert into t select * from t; +insert into t select * from t; +insert into t select * from t; +insert into t select * from t; +insert into t select * from t; +insert into t select * from t; +desc analyze select * from t t1, t t2, t t3, t t4, t t5, t t6; +Error 8175 (HY000): 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=] +set tidb_mem_quota_query = default; +set global tidb_mem_oom_action = default; +set global tidb_enable_tmp_storage_on_oom = default; +SET GLOBAL tidb_mem_oom_action='LOG'; +set @@tidb_mem_quota_query=1; +drop table if exists t, t1; +create table t(c1 int, c2 int); +create table t1(c1 int, c2 int); +insert into t values(1,1),(2,2); +insert into t1 values(2,3),(4,4); +select /*+ TIDB_HJ(t, t2) */ * from t, t1 where t.c1 = t1.c1; +c1 c2 c1 c2 +2 2 2 3 diff --git a/tests/integrationtest/r/executor/partition/write.result b/tests/integrationtest/r/executor/partition/write.result new file mode 100644 index 0000000000000..06c6839eef19c --- /dev/null +++ b/tests/integrationtest/r/executor/partition/write.result @@ -0,0 +1,814 @@ +# TestWriteListPartitionTable2 +# test for write list partition when the partition expression is complicated and contain generated column. +set @@session.tidb_enable_list_partition = ON; +drop table if exists t; +create table t (id int, name varchar(10),b int generated always as (length(name)+1) virtual) +partition by list (id*2 + b*b + b*b - b*b*2 - abs(id)) ( +partition p0 values in (3,5,6,9,17), +partition p1 values in (1,2,10,11,19,20), +partition p2 values in (4,12,13,14,18), +partition p3 values in (7,8,15,16,null) +); +analyze table t; +## Test add unique index failed. +insert into t (id,name) values (1, 'a'),(1,'b'); +alter table t add unique index idx (id,b); +Error 1062 (23000): Duplicate entry '1-2' for key 't.idx' +## Test add unique index success. +delete from t where name='b'; +alter table t add unique index idx (id,b); +## --------------------------Test insert--------------------------- +## Test insert 1 partition. +delete from t; +insert into t (id,name) values (1, 'a'),(2,'b'),(10,'c'); +select id,name from t partition(p1) order by id; +id name +1 a +2 b +10 c +## Test insert multi-partitions. +delete from t; +insert into t (id,name) values (1, 'a'),(3,'c'),(4,'e'); +select id,name from t partition(p0) order by id; +id name +3 c +select id,name from t partition(p1) order by id; +id name +1 a +select id,name from t partition(p2) order by id; +id name +4 e +select id,name from t partition(p3) order by id; +id name +## Test insert on duplicate. +insert into t (id,name) values (1, 'd'), (3,'f'),(5,'g') on duplicate key update name='x'; +select id,name from t partition(p0) order by id; +id name +3 x +5 g +select id,name from t partition(p1) order by id; +id name +1 x +select id,name from t partition(p2) order by id; +id name +4 e +select id,name from t partition(p3) order by id; +id name +## Test insert on duplicate error +insert into t (id,name) values (3, 'a'), (11,'x') on duplicate key update id=id+1; +Error 1062 (23000): Duplicate entry '4-2' for key 't.idx' +select id,name from t order by id; +id name +1 x +3 x +4 e +5 g +## Test insert ignore with duplicate +insert ignore into t (id,name) values (1, 'b'), (5,'a'),(null,'y'); +show warnings; +Level Code Message +Warning 1062 Duplicate entry '1-2' for key 't.idx' +Warning 1062 Duplicate entry '5-2' for key 't.idx' +select id,name from t partition(p0) order by id; +id name +3 x +5 g +select id,name from t partition(p1) order by id; +id name +1 x +select id,name from t partition(p2) order by id; +id name +4 e +select id,name from t partition(p3) order by id; +id name +NULL y +## Test insert ignore without duplicate +insert ignore into t (id,name) values (15, 'a'),(17,'a'); +select id,name from t partition(p0,p1,p2) order by id; +id name +1 x +3 x +4 e +5 g +17 a +select id,name from t partition(p3) order by id; +id name +NULL y +15 a +## Test insert meet no partition error. +insert into t (id,name) values (100, 'd'); +Error 1526 (HY000): Table has no partition for value 100 +## --------------------------Test update--------------------------- +## Test update 1 partition. +delete from t; +insert into t (id,name) values (1, 'a'),(2,'b'),(3,'c'); +update t set name='b' where id=2;; +select id,name from t partition(p1); +id name +1 a +2 b +update t set name='x' where id in (1,2); +select id,name from t partition(p1); +id name +1 x +2 x +update t set name='y' where id < 3; +select id,name from t order by id; +id name +1 y +2 y +3 c +## Test update meet duplicate error. +update t set id=2 where id = 1; +Error 1062 (23000): Duplicate entry '2-2' for key 't.idx' +select id,name from t order by id; +id name +1 y +2 y +3 c +## Test update multi-partitions +update t set name='z' where id in (1,2,3);; +select id,name from t order by id; +id name +1 z +2 z +3 z +update t set name='a' limit 3; +select id,name from t order by id; +id name +1 a +2 a +3 a +update t set id=id*10 where id in (1,2); +select id,name from t order by id; +id name +3 a +10 a +20 a +## Test update meet duplicate error. +update t set id=id+17 where id in (3,10); +Error 1062 (23000): Duplicate entry '20-2' for key 't.idx' +select id,name from t order by id; +id name +3 a +10 a +20 a +## Test update meet no partition error. +update t set id=id*2 where id in (3,20); +Error 1526 (HY000): Table has no partition for value 40 +select id,name from t order by id; +id name +3 a +10 a +20 a +## --------------------------Test replace--------------------------- +## Test replace 1 partition. +delete from t; +replace into t (id,name) values (1, 'a'),(2,'b'); +select id,name from t order by id; +id name +1 a +2 b +## Test replace multi-partitions. +replace into t (id,name) values (3, 'c'),(4,'d'),(7,'f'); +select id,name from t partition(p0) order by id; +id name +3 c +select id,name from t partition(p1) order by id; +id name +1 a +2 b +select id,name from t partition(p2) order by id; +id name +4 d +select id,name from t partition(p3) order by id; +id name +7 f +## Test replace on duplicate. +replace into t (id,name) values (1, 'x'),(7,'x'); +select id,name from t order by id; +id name +1 x +2 b +3 c +4 d +7 x +## Test replace meet no partition error. +replace into t (id,name) values (10,'x'),(50,'x'); +Error 1526 (HY000): Table has no partition for value 50 +select id,name from t order by id; +id name +1 x +2 b +3 c +4 d +7 x +## --------------------------Test delete--------------------------- +## Test delete 1 partition. +delete from t where id = 3; +select id,name from t partition(p0) order by id; +id name +delete from t where id in (1,2); +select id,name from t partition(p1) order by id; +id name +## Test delete multi-partitions. +delete from t where id in (4,7,10,11); +select id,name from t; +id name +insert into t (id,name) values (3, 'c'),(4,'d'),(7,'f'); +delete from t where id < 10; +select id,name from t; +id name +insert into t (id,name) values (3, 'c'),(4,'d'),(7,'f'); +delete from t limit 3; +select id,name from t; +id name +set @@session.tidb_enable_list_partition = default; +# TestWriteListColumnsPartitionTable1 +set @@session.tidb_enable_list_partition = ON; +drop table if exists t; +create table t (id int, name varchar(10)) partition by list columns (id) ( +partition p0 values in (3,5,6,9,17), +partition p1 values in (1,2,10,11,19,20), +partition p2 values in (4,12,13,14,18), +partition p3 values in (7,8,15,16,null) +); +analyze table t; +## Test add unique index failed. +insert into t values (1, 'a'),(1,'b'); +alter table t add unique index idx (id); +Error 1062 (23000): Duplicate entry '1' for key 't.idx' +## Test add unique index success. +delete from t where name='b'; +alter table t add unique index idx (id); +## --------------------------Test insert--------------------------- +## Test insert 1 partition. +delete from t; +insert into t values (1, 'a'),(2,'b'),(10,'c'); +select * from t partition(p1) order by id; +id name +1 a +2 b +10 c +## Test insert multi-partitions. +delete from t; +insert into t values (1, 'a'),(3,'c'),(4,'e'); +select * from t partition(p0) order by id; +id name +3 c +select * from t partition(p1) order by id; +id name +1 a +select * from t partition(p2) order by id; +id name +4 e +select * from t partition(p3) order by id; +id name +## Test insert on duplicate. +insert into t values (1, 'd'), (3,'f'),(5,'g') on duplicate key update name='x'; +select * from t partition(p0) order by id; +id name +3 x +5 g +select * from t partition(p1) order by id; +id name +1 x +select * from t partition(p2) order by id; +id name +4 e +select * from t partition(p3) order by id; +id name +## Test insert on duplicate error +insert into t values (3, 'a'), (11,'x') on duplicate key update id=id+1; +Error 1062 (23000): Duplicate entry '4' for key 't.idx' +select * from t order by id; +id name +1 x +3 x +4 e +5 g +## Test insert ignore with duplicate +insert ignore into t values (1, 'b'), (5,'a'),(null,'y'); +show warnings; +Level Code Message +Warning 1062 Duplicate entry '1' for key 't.idx' +Warning 1062 Duplicate entry '5' for key 't.idx' +select * from t partition(p0) order by id; +id name +3 x +5 g +select * from t partition(p1) order by id; +id name +1 x +select * from t partition(p2) order by id; +id name +4 e +select * from t partition(p3) order by id; +id name +NULL y +## Test insert ignore without duplicate +insert ignore into t values (15, 'a'),(17,'a'); +select * from t partition(p0,p1,p2) order by id; +id name +1 x +3 x +4 e +5 g +17 a +select * from t partition(p3) order by id; +id name +NULL y +15 a +## Test insert meet no partition error. +insert into t values (100, 'd'); +Error 1526 (HY000): Table has no partition for value from column_list +## --------------------------Test update--------------------------- +## Test update 1 partition. +delete from t; +insert into t values (1, 'a'),(2,'b'),(3,'c'); +update t set name='b' where id=2;; +select * from t partition(p1); +id name +1 a +2 b +update t set name='x' where id in (1,2); +select * from t partition(p1); +id name +1 x +2 x +update t set name='y' where id < 3; +select * from t order by id; +id name +1 y +2 y +3 c +## Test update meet duplicate error. +update t set id=2 where id = 1; +Error 1062 (23000): Duplicate entry '2' for key 't.idx' +select * from t order by id; +id name +1 y +2 y +3 c +## Test update multi-partitions +update t set name='z' where id in (1,2,3);; +select * from t order by id; +id name +1 z +2 z +3 z +update t set name='a' limit 3; +select * from t order by id; +id name +1 a +2 a +3 a +update t set id=id*10 where id in (1,2); +select * from t order by id; +id name +3 a +10 a +20 a +## Test update meet duplicate error. +update t set id=id+17 where id in (3,10); +Error 1062 (23000): Duplicate entry '20' for key 't.idx' +select * from t order by id; +id name +3 a +10 a +20 a +## Test update meet no partition error. +update t set id=id*2 where id in (3,20); +Error 1526 (HY000): Table has no partition for value from column_list +select * from t order by id; +id name +3 a +10 a +20 a +## --------------------------Test replace--------------------------- +## Test replace 1 partition. +delete from t; +replace into t values (1, 'a'),(2,'b'); +select * from t order by id; +id name +1 a +2 b +## Test replace multi-partitions. +replace into t values (3, 'c'),(4,'d'),(7,'f'); +select * from t partition(p0) order by id; +id name +3 c +select * from t partition(p1) order by id; +id name +1 a +2 b +select * from t partition(p2) order by id; +id name +4 d +select * from t partition(p3) order by id; +id name +7 f +## Test replace on duplicate. +replace into t values (1, 'x'),(7,'x'); +select * from t order by id; +id name +1 x +2 b +3 c +4 d +7 x +## Test replace meet no partition error. +replace into t values (10,'x'),(100,'x'); +Error 1526 (HY000): Table has no partition for value from column_list +select * from t order by id; +id name +1 x +2 b +3 c +4 d +7 x +## --------------------------Test delete--------------------------- +## Test delete 1 partition. +delete from t where id = 3; +select * from t partition(p0) order by id; +id name +delete from t where id in (1,2); +select * from t partition(p1) order by id; +id name +## Test delete multi-partitions. +delete from t where id in (4,7,10,11); +select * from t; +id name +insert into t values (3, 'c'),(4,'d'),(7,'f'); +delete from t where id < 10; +select * from t; +id name +insert into t values (3, 'c'),(4,'d'),(7,'f'); +delete from t limit 3; +select * from t; +id name +set @@session.tidb_enable_list_partition = default; +set tidb_opt_fix_control = "44262:ON"; +drop table if exists replace_test; +create table replace_test (id int PRIMARY KEY AUTO_INCREMENT, c1 int, c2 int, c3 int default 1) +partition by range (id) ( +PARTITION p0 VALUES LESS THAN (3), +PARTITION p1 VALUES LESS THAN (5), +PARTITION p2 VALUES LESS THAN (7), +PARTITION p3 VALUES LESS THAN (9)); +replace replace_test (c1) values (1),(2),(NULL); +affected rows: 3 +info: Records: 3 Duplicates: 0 Warnings: 0 +begin; +replace replace_test (c1) values (); +Error 1136 (21S01): Column count doesn't match value count at row 1 +rollback; +begin; +replace replace_test (c1, c2) values (1,2),(1); +Error 1136 (21S01): Column count doesn't match value count at row 2 +rollback; +begin; +replace replace_test (xxx) values (3); +Error 1054 (42S22): Unknown column 'xxx' in 'field list' +rollback; +begin; +replace replace_test_xxx (c1) values (); +Error 1146 (42S02): Table 'executor__partition__write.replace_test_xxx' doesn't exist +rollback; +replace replace_test set c1 = 3; +affected rows: 1 +info: +begin; +replace replace_test set c1 = 4, c1 = 5; +Error 1110 (42000): Column 'c1' specified twice +rollback; +begin; +replace replace_test set xxx = 6; +Error 1054 (42S22): Unknown column 'xxx' in 'field list' +rollback; +drop table if exists replace_test_1; +create table replace_test_1 (id int, c1 int) partition by range (id) ( +PARTITION p0 VALUES LESS THAN (4), +PARTITION p1 VALUES LESS THAN (6), +PARTITION p2 VALUES LESS THAN (8), +PARTITION p3 VALUES LESS THAN (10), +PARTITION p4 VALUES LESS THAN (100)); +replace replace_test_1 select id, c1 from replace_test; +affected rows: 4 +info: Records: 4 Duplicates: 0 Warnings: 0 +drop table if exists replace_test_2; +create table replace_test_2 (id int, c1 int) partition by range (id) ( +PARTITION p0 VALUES LESS THAN (10), +PARTITION p1 VALUES LESS THAN (50), +PARTITION p2 VALUES LESS THAN (100), +PARTITION p3 VALUES LESS THAN (300)); +replace replace_test_2 select id, c1 from replace_test union select id * 10, c1 * 10 from replace_test; +affected rows: 8 +info: Records: 8 Duplicates: 0 Warnings: 0 +begin; +replace replace_test_2 select c1 from replace_test; +Error 1136 (21S01): Column count doesn't match value count at row 1 +rollback; +drop table if exists replace_test_3; +create table replace_test_3 (c1 int, c2 int, UNIQUE INDEX (c2)) partition by range (c2) ( +PARTITION p0 VALUES LESS THAN (4), +PARTITION p1 VALUES LESS THAN (7), +PARTITION p2 VALUES LESS THAN (11)); +replace into replace_test_3 set c2=8; +affected rows: 1 +info: +replace into replace_test_3 set c2=8; +affected rows: 1 +info: +replace into replace_test_3 set c1=8, c2=8; +affected rows: 2 +info: +replace into replace_test_3 set c2=NULL; +affected rows: 1 +info: +replace into replace_test_3 set c2=NULL; +affected rows: 1 +info: +drop table if exists replace_test_4; +create table replace_test_4 (c1 int, c2 int, c3 int, UNIQUE INDEX (c1, c2)) partition by range (c1) ( +PARTITION p0 VALUES LESS THAN (4), +PARTITION p1 VALUES LESS THAN (7), +PARTITION p2 VALUES LESS THAN (11)); +replace into replace_test_4 set c2=NULL; +affected rows: 1 +info: +replace into replace_test_4 set c2=NULL; +affected rows: 1 +info: +drop table if exists replace_test_5; +create table replace_test_5 (c1 int, c2 int, c3 int, PRIMARY KEY (c1, c2)) partition by range (c2) ( +PARTITION p0 VALUES LESS THAN (4), +PARTITION p1 VALUES LESS THAN (7), +PARTITION p2 VALUES LESS THAN (11)); +replace into replace_test_5 set c1=1, c2=2; +affected rows: 1 +info: +replace into replace_test_5 set c1=1, c2=2; +affected rows: 1 +info: +drop table if exists tIssue989; +CREATE TABLE tIssue989 (a int, b int, KEY(a), UNIQUE KEY(b)) partition by range (b) ( +PARTITION p1 VALUES LESS THAN (100), +PARTITION p2 VALUES LESS THAN (200)); +insert into tIssue989 (a, b) values (1, 2); +affected rows: 1 +info: +replace into tIssue989(a, b) values (111, 2); +affected rows: 2 +info: +select * from tIssue989; +a b +111 2 +set tidb_opt_fix_control = default; +set tidb_opt_fix_control = "44262:ON"; +drop table if exists t; +create table t (id int not null default 1, name varchar(255)) +PARTITION BY RANGE ( 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)); +insert INTO t VALUES (1, "hello"); +insert INTO t VALUES (7, "hello"); +## update non partition column +UPDATE t SET name = "abc" where id > 0; +affected rows: 2 +info: Rows matched: 2 Changed: 2 Warnings: 0 +SELECT * from t order by id limit 2; +id name +1 abc +7 abc +## update partition column +update t set id = id + 1; +affected rows: 2 +info: Rows matched: 2 Changed: 2 Warnings: 0 +SELECT * from t order by id limit 2; +id name +2 abc +8 abc +## update partition column, old and new record locates on different partitions +update t set id = 20 where id = 8; +affected rows: 1 +info: Rows matched: 1 Changed: 1 Warnings: 0 +SELECT * from t order by id limit 2; +id name +2 abc +20 abc +## table option is auto-increment +drop table if exists t; +create table t (id int not null auto_increment, name varchar(255), primary key(id)) +PARTITION BY RANGE ( 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)); +insert into t(name) values ('aa'); +update t set id = 8 where name = 'aa'; +affected rows: 1 +info: Rows matched: 1 Changed: 1 Warnings: 0 +insert into t(name) values ('bb'); +select * from t; +id name +8 aa +9 bb +update t set id = null where name = 'aa'; +Error 1048 (23000): Column 'id' cannot be null +## Test that in a transaction, when a constraint failed in an update statement, the record is not inserted. +drop table if exists t; +create table t (id int, name int unique) +PARTITION BY RANGE ( name ) ( +PARTITION p0 VALUES LESS THAN (6), +PARTITION p1 VALUES LESS THAN (11), +PARTITION p2 VALUES LESS THAN (16), +PARTITION p3 VALUES LESS THAN (21)); +insert t values (1, 1), (2, 2); +update t set name = 1 where id = 2; +Error 1062 (23000): Duplicate entry '1' for key 't.name' +select * from t; +id name +1 1 +2 2 +## test update ignore for pimary key +drop table if exists t; +create table t(a bigint, primary key (a)) +PARTITION BY RANGE (a) ( +PARTITION p0 VALUES LESS THAN (6), +PARTITION p1 VALUES LESS THAN (11)); +insert into t values (5); +insert into t values (7); +update ignore t set a = 5 where a = 7; +SHOW WARNINGS; +Level Code Message +Warning 1062 Duplicate entry '5' for key 't.PRIMARY' +select * from t order by a; +a +5 +7 +## test update ignore for truncate as warning +update ignore t set a = 1 where a = (select '2a'); +SHOW WARNINGS; +Level Code Message +Warning 1292 Truncated incorrect DOUBLE value: '2a' +Warning 1292 Truncated incorrect DOUBLE value: '2a' +## test update ignore for unique key +drop table if exists t; +create table t(a bigint, unique key I_uniq (a)) +PARTITION BY RANGE (a) ( +PARTITION p0 VALUES LESS THAN (6), +PARTITION p1 VALUES LESS THAN (11)); +insert into t values (5); +insert into t values (7); +update ignore t set a = 5 where a = 7; +affected rows: 0 +info: Rows matched: 1 Changed: 0 Warnings: 1 +SHOW WARNINGS; +Level Code Message +Warning 1062 Duplicate entry '5' for key 't.I_uniq' +select * from t order by a; +a +5 +7 +set tidb_opt_fix_control = default; +drop table if exists t; +set tidb_opt_fix_control = "44262:ON"; +CREATE TABLE t (id int not null default 1, name varchar(255), index(id)) +PARTITION BY RANGE ( 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)); +insert into t values (1, "hello"),(2, "hello"),(3, "hello"),(4, "hello"),(5, "hello"),(6, "hello"),(7, "hello"),(8, "hello"),(9, "hello"),(10, "hello"),(11, "hello"),(12, "hello"),(13, "hello"),(14, "hello"),(15, "hello"),(16, "hello"),(17, "hello"),(18, "hello"),(19, "hello"),(20, "hello"); +delete from t where id = 2 limit 1; +affected rows: 1 +info: +## Test delete with false condition +delete from t where 0; +affected rows: 0 +info: +insert into t values (2, 'abc'); +delete from t where t.id = 2 limit 1; +affected rows: 1 +info: +## Test delete ignore +insert into t values (2, 'abc'); +delete from t where id = (select '2a'); +Error 1292 (22007): Truncated incorrect DOUBLE value: '2a' +delete ignore from t where id = (select '2a'); +affected rows: 1 +info: +SHOW WARNINGS; +Level Code Message +Warning 1292 Truncated incorrect DOUBLE value: '2a' +Warning 1292 Truncated incorrect DOUBLE value: '2a' +## Test delete without using index, involve multiple partitions. +delete from t ignore index(id) where id >= 13 and id <= 17; +affected rows: 5 +info: +admin check table t; +delete from t; +affected rows: 14 +info: +## Fix that partitioned table should not use PointGetPlan. +drop table if exists t1; +create table t1 (c1 bigint, c2 bigint, c3 bigint, primary key(c1)) partition by range (c1) (partition p0 values less than (3440)); +insert into t1 values (379, 379, 379); +delete from t1 where c1 = 379; +affected rows: 1 +info: +drop table t1; +set tidb_opt_fix_control=default; +set @@session.tidb_enable_table_partition = '1'; +drop table if exists replace_test; +create table replace_test (id int PRIMARY KEY AUTO_INCREMENT, c1 int, c2 int, c3 int default 1) +partition by hash(id) partitions 4; +replace replace_test (c1) values (1),(2),(NULL); +begin; +replace replace_test (c1) values (); +Error 1136 (21S01): Column count doesn't match value count at row 1 +rollback; +begin; +replace replace_test (c1, c2) values (1,2),(1); +Error 1136 (21S01): Column count doesn't match value count at row 2 +rollback; +begin; +replace replace_test (xxx) values (3); +Error 1054 (42S22): Unknown column 'xxx' in 'field list' +rollback; +begin; +replace replace_test_xxx (c1) values (); +Error 1146 (42S02): Table 'executor__partition__write.replace_test_xxx' doesn't exist +rollback; +begin; +replace replace_test set c1 = 4, c1 = 5; +Error 1110 (42000): Column 'c1' specified twice +rollback; +begin; +replace replace_test set xxx = 6; +Error 1054 (42S22): Unknown column 'xxx' in 'field list' +rollback; +replace replace_test set c1 = 3; +replace replace_test set c1 = 4; +replace replace_test set c1 = 5; +replace replace_test set c1 = 6; +replace replace_test set c1 = 7; +drop table if exists replace_test_1; +create table replace_test_1 (id int, c1 int) partition by hash(id) partitions 5; +replace replace_test_1 select id, c1 from replace_test; +drop table if exists replace_test_2; +create table replace_test_2 (id int, c1 int) partition by hash(id) partitions 6; +replace replace_test_1 select id, c1 from replace_test union select id * 10, c1 * 10 from replace_test; +begin; +replace replace_test_1 select c1 from replace_test; +Error 1136 (21S01): Column count doesn't match value count at row 1 +rollback; +drop table if exists replace_test_3; +create table replace_test_3 (c1 int, c2 int, UNIQUE INDEX (c2)) partition by hash(c2) partitions 7; +replace into replace_test_3 set c2=8; +replace into replace_test_3 set c2=8; +affected rows: 1 +info: +replace into replace_test_3 set c1=8, c2=8; +affected rows: 2 +info: +replace into replace_test_3 set c2=NULL; +replace into replace_test_3 set c2=NULL; +affected rows: 1 +info: +replace into replace_test_3 set c2=0; +replace into replace_test_3 set c2=1; +replace into replace_test_3 set c2=2; +replace into replace_test_3 set c2=3; +replace into replace_test_3 set c2=4; +replace into replace_test_3 set c2=5; +replace into replace_test_3 set c2=6; +replace into replace_test_3 set c2=7; +replace into replace_test_3 set c2=8; +replace into replace_test_3 set c2=9; +select count(*) from replace_test_3; +count(*) +12 +drop table if exists replace_test_4; +create table replace_test_4 (c1 int, c2 int, c3 int, UNIQUE INDEX (c1, c2)) partition by hash(c1) partitions 8; +replace into replace_test_4 set c2=NULL; +replace into replace_test_4 set c2=NULL; +affected rows: 1 +info: +drop table if exists replace_test_5; +create table replace_test_5 (c1 int, c2 int, c3 int, PRIMARY KEY (c1, c2)) partition by hash (c2) partitions 9; +replace into replace_test_5 set c1=1, c2=2; +replace into replace_test_5 set c1=1, c2=2; +affected rows: 1 +info: +drop table if exists tIssue989; +CREATE TABLE tIssue989 (a int, b int, KEY(a), UNIQUE KEY(b)) partition by hash (b) partitions 10; +insert into tIssue989 (a, b) values (1, 2); +replace into tIssue989(a, b) values (111, 2); +select * from tIssue989; +a b +111 2 +set @@session.tidb_enable_table_partition = default; diff --git a/tests/integrationtest/r/executor/point_get.result b/tests/integrationtest/r/executor/point_get.result index 255c1af7b2d49..aa1eaf1c81b59 100644 --- a/tests/integrationtest/r/executor/point_get.result +++ b/tests/integrationtest/r/executor/point_get.result @@ -616,3 +616,18 @@ execute s; id v 1 11 set @@tidb_enable_plan_replayer_capture=default; +set session tidb_txn_mode=''; +drop table if exists t; +create table t(pk int primary key, c int); +insert into t values (1, 1), (2, 2); +set @@tidb_disable_txn_auto_retry = 0; +begin; +select * from t where pk = 1 for update; +pk c +1 1 +set session tidb_txn_mode=''; +update t set c = c + 1 where pk = 1; +update t set c = c + 1 where pk = 2; +commit; +Error 8002 (HY000): can not retry select for update statement +set session tidb_txn_mode=pessimistic; diff --git a/tests/integrationtest/r/executor/simple.result b/tests/integrationtest/r/executor/simple.result index 598eb0980a4a1..283aad1280361 100644 --- a/tests/integrationtest/r/executor/simple.result +++ b/tests/integrationtest/r/executor/simple.result @@ -416,3 +416,34 @@ select user_attributes from mysql.user where user = 'usr1'; user_attributes {"metadata": {"comment": "comment1"}, "resource_group": "rg1"} set global tidb_enable_resource_control = default; +## Some statements are like DDL, they commit the previous txn automically. +## Fix issue https://github.com/pingcap/tidb/issues/10705 +begin; +create user 'xxx'@'%'; +grant all privileges on *.* to 'xxx'@'%'; +create table auto_new (id int); +begin; +insert into auto_new values (1); +revoke all privileges on *.* from 'xxx'@'%'; +## insert statement has already committed +rollback; +## Test the behavior when autocommit is false. +select * from auto_new; +id +1 +set autocommit = 0; +insert into auto_new values (2); +create user 'yyy'@'%'; +rollback; +select * from auto_new; +id +1 +2 +drop user 'yyy'@'%'; +insert into auto_new values (3); +rollback; +select * from auto_new; +id +1 +2 +set autocommit = default; diff --git a/tests/integrationtest/r/executor/split_table.result b/tests/integrationtest/r/executor/split_table.result index 340b148ff795d..bfd5ff8106ec5 100644 --- a/tests/integrationtest/r/executor/split_table.result +++ b/tests/integrationtest/r/executor/split_table.result @@ -116,5 +116,5 @@ Error 1265 (01000): Incorrect value: '' for column 'b' drop table t; CREATE TABLE t (`id` varchar(10) NOT NULL, primary key (`id`) CLUSTERED); split table t index `primary` between (0) and (1000) regions 2; -Error 1176 (42000): Key 'primary' doesn't exist in table 't' +Error 1176 (42000): unable to split clustered index, please split table instead. set tidb_enable_clustered_index=default; diff --git a/tests/integrationtest/r/executor/stale_txn.result b/tests/integrationtest/r/executor/stale_txn.result index d1e7c85a2829b..5b4498b73834c 100644 --- a/tests/integrationtest/r/executor/stale_txn.result +++ b/tests/integrationtest/r/executor/stale_txn.result @@ -36,3 +36,9 @@ id v set tidb_txn_mode = default; set tx_isolation = default; set autocommit = default; +drop table if exists t1; +create table t1 (id int primary key, v int); +select * from t1 as of timestamp NULL; +Error 8135 (HY000): invalid as of timestamp: as of timestamp cannot be NULL +start transaction read only as of timestamp NULL; +Error 8135 (HY000): invalid as of timestamp: as of timestamp cannot be NULL diff --git a/tests/integrationtest/r/executor/update.result b/tests/integrationtest/r/executor/update.result index 5accbf8f0f70e..5b11c91279039 100644 --- a/tests/integrationtest/r/executor/update.result +++ b/tests/integrationtest/r/executor/update.result @@ -384,3 +384,510 @@ id a 1 0 2 4294967295 set sql_mode=default; +drop table if exists t1; +create table t1(id int primary key, name varchar(40)); +insert into t1 values(1, 'abc'); +begin pessimistic; +begin pessimistic; +update t1 set name='xyz' where id=1; +affected rows: 1 +info: Rows matched: 1 Changed: 1 Warnings: 0 +select * from t1 where id = 1; +id name +1 xyz +commit; +update t1 set name='xyz' where id=1; +affected rows: 0 +info: Rows matched: 1 Changed: 0 Warnings: 0 +select * from t1 where id = 1; +id name +1 abc +select * from t1 where id = 1 for update; +id name +1 xyz +select * from t1 where id in (1, 2); +id name +1 abc +select * from t1 where id in (1, 2) for update; +id name +1 xyz +commit; +drop table if exists update_test; +create table update_test(id int not null default 1, name varchar(255), PRIMARY KEY(id)); +insert INTO update_test VALUES (1, "hello"); +insert into update_test values (2, "hello"); +UPDATE update_test SET name = "abc" where id > 0; +affected rows: 2 +info: Rows matched: 2 Changed: 2 Warnings: 0 +begin; +SELECT * from update_test limit 2; +id name +1 abc +2 abc +commit; +UPDATE update_test SET name = "foo"; +affected rows: 2 +info: Rows matched: 2 Changed: 2 Warnings: 0 +begin; +drop table if exists update_test; +commit; +begin; +create table update_test(id int not null auto_increment, name varchar(255), primary key(id)); +insert into update_test(name) values ('aa'); +update update_test set id = 8 where name = 'aa'; +affected rows: 1 +info: Rows matched: 1 Changed: 1 Warnings: 0 +insert into update_test(name) values ('bb'); +commit; +begin; +select * from update_test; +id name +8 aa +9 bb +commit; +begin; +drop table if exists update_test; +commit; +begin; +create table update_test(id int not null auto_increment, name varchar(255), index(id)); +insert into update_test(name) values ('aa'); +update update_test set id = null where name = 'aa'; +Error 1048 (23000): Column 'id' cannot be null +drop table update_test; +create table update_test(id int); +begin; +insert into update_test(id) values (1); +update update_test set id = 2 where id = 1 limit 1; +affected rows: 1 +info: Rows matched: 1 Changed: 1 Warnings: 0 +select * from update_test; +id +2 +commit; +drop table if exists update_unique; +create table update_unique (id int primary key, name int unique); +insert update_unique values (1, 1), (2, 2); +begin; +update update_unique set name = 1 where id = 2; +Error 1062 (23000): Duplicate entry '1' for key 'update_unique.name' +commit; +select * from update_unique; +id name +1 1 +2 2 +drop table if exists t; +create table t(a bigint, primary key (a)); +insert into t values (1); +insert into t values (2); +update ignore t set a = 1 where a = 2; +affected rows: 0 +info: Rows matched: 1 Changed: 0 Warnings: 1 +SHOW WARNINGS; +Level Code Message +Warning 1062 Duplicate entry '1' for key 't.PRIMARY' +select * from t; +a +1 +2 +update ignore t set a = 1 where a = (select '2a'); +SHOW WARNINGS; +Level Code Message +Warning 1292 Truncated incorrect DOUBLE value: '2a' +Warning 1292 Truncated incorrect DOUBLE value: '2a' +Warning 1062 Duplicate entry '1' for key 't.PRIMARY' +update ignore t set a = 42 where a = 2; +select * from t; +a +1 +42 +drop table if exists t; +create table t(a bigint, unique key I_uniq (a)); +insert into t values (1); +insert into t values (2); +update ignore t set a = 1 where a = 2; +affected rows: 0 +info: Rows matched: 1 Changed: 0 Warnings: 1 +SHOW WARNINGS; +Level Code Message +Warning 1062 Duplicate entry '1' for key 't.I_uniq' +select * from t; +a +1 +2 +drop table if exists t; +set @@session.tidb_enable_list_partition = ON; +create table t (a int) partition by list (a) (partition p0 values in (0,1)); +analyze table t; +insert ignore into t values (1); +update ignore t set a=2 where a=1; +affected rows: 0 +info: Rows matched: 1 Changed: 0 Warnings: 0 +drop table if exists t; +create table t (a int key) partition by list (a) (partition p0 values in (0,1)); +insert ignore into t values (1); +update ignore t set a=2 where a=1; +affected rows: 0 +info: Rows matched: 1 Changed: 0 Warnings: 0 +set @@session.tidb_enable_list_partition = default; +drop table if exists t; +create table t(id integer auto_increment, t1 datetime, t2 datetime, primary key (id)); +insert into t(t1, t2) values('2000-10-01 01:01:01', '2017-01-01 10:10:10'); +select * from t; +id t1 t2 +1 2000-10-01 01:01:01 2017-01-01 10:10:10 +update t set t1 = '2017-10-01 10:10:11', t2 = date_add(t1, INTERVAL 10 MINUTE) where id = 1; +affected rows: 1 +info: Rows matched: 1 Changed: 1 Warnings: 0 +select * from t; +id t1 t2 +1 2017-10-01 10:10:11 2000-10-01 01:11:01 +drop table if exists tt1; +CREATE TABLE `tt1` (`a` int(11) NOT NULL,`b` varchar(32) DEFAULT NULL,`c` varchar(32) DEFAULT NULL,PRIMARY KEY (`a`),UNIQUE KEY `b_idx` (`b`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; +insert into tt1 values(1, 'a', 'a'); +insert into tt1 values(2, 'd', 'b'); +select * from tt1; +a b c +1 a a +2 d b +update tt1 set a=5 where c='b'; +affected rows: 1 +info: Rows matched: 1 Changed: 1 Warnings: 0 +select * from tt1; +a b c +1 a a +5 d b +drop table if exists tsup; +CREATE TABLE `tsup` (`a` int,`ts` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,KEY `idx` (`ts`)); +set @@sql_mode=''; +insert into tsup values(1, '0000-00-00 00:00:00'); +update tsup set a=5; +affected rows: 1 +info: Rows matched: 1 Changed: 1 Warnings: 0 +select t1.ts = t2.ts from (select ts from tsup use index (idx)) as t1, (select ts from tsup use index ()) as t2; +t1.ts = t2.ts +1 +update tsup set ts='2019-01-01'; +select ts from tsup; +ts +2019-01-01 00:00:00 +set @@sql_mode=default; +drop table if exists decimals; +create table decimals (a decimal(20, 0) not null); +insert into decimals values (201); +update decimals set a = a + 1.23; +affected rows: 1 +info: Rows matched: 1 Changed: 1 Warnings: 1 +show warnings; +Level Code Message +Warning 1292 Truncated incorrect DECIMAL value: '202.23' +select * from decimals; +a +202 +drop table t; +CREATE TABLE `t` ( `c1` year DEFAULT NULL, `c2` year DEFAULT NULL, `c3` date DEFAULT NULL, `c4` datetime DEFAULT NULL, KEY `idx` (`c1`,`c2`)); +UPDATE t SET c2=16777215 WHERE c1>= -8388608 AND c1 < -9 ORDER BY c1 LIMIT 2; +update (select * from t) t set c1 = 1111111; +Error 1288 (HY000): The target table t of the UPDATE is not updatable +drop table if exists t; +create table t (i int not null default 10); +insert into t values (1); +update ignore t set i = null; +affected rows: 1 +info: Rows matched: 1 Changed: 1 Warnings: 1 +SHOW WARNINGS; +Level Code Message +Warning 1048 Column 'i' cannot be null +select * from t; +i +0 +drop table t; +create table t (k int, v int); +update t, (select * from t) as b set b.k = t.k; +Error 1288 (HY000): The target table b of the UPDATE is not updatable +update t, (select * from t) as b set t.k = b.k; +drop table if exists t1; +CREATE TABLE t1 (c1 float); +INSERT INTO t1 SET c1 = 1; +UPDATE t1 SET c1 = 1.2 WHERE c1=1; +affected rows: 1 +info: Rows matched: 1 Changed: 1 Warnings: 0 +drop table if exists t; +create table t (c1 float(1,1)); +insert into t values (0.0); +update t set c1 = 2.0; +Error 1264 (22003): Out of range value for column 'c1' at row 1 +drop table if exists t; +create table t(a datetime not null, b datetime); +insert into t value('1999-12-12', '1999-12-13'); +set @@sql_mode=''; +select * from t; +a b +1999-12-12 00:00:00 1999-12-13 00:00:00 +update t set a = ''; +select * from t; +a b +0000-00-00 00:00:00 1999-12-13 00:00:00 +update t set b = ''; +select * from t; +a b +0000-00-00 00:00:00 0000-00-00 00:00:00 +set @@sql_mode=default; +drop view if exists v; +create view v as select * from t; +update v set a = '2000-11-11'; +Error 1288 (HY000): The target table v of the UPDATE is not updatable +drop view v; +drop sequence if exists seq; +create sequence seq; +update seq set minvalue=1; +Error 1054 (42S22): Unknown column 'minvalue' in 'field list' +drop sequence seq; +drop table if exists t1, t2; +create table t1(a int, b int, c int, d int, e int, index idx(a)); +create table t2(a int, b int, c int); +update t1 join t2 on t1.a=t2.a set t1.a=1 where t2.b=1 and t2.c=2; +drop table if exists t1, t2; +create table t1 (a int default 1, b int default 2); +insert into t1 values (10, 10), (20, 20); +update t1 set a=default where b=10; +select * from t1; +a b +1 10 +20 20 +update t1 set a=30, b=default where a=20; +select * from t1; +a b +1 10 +30 2 +update t1 set a=default, b=default where a=30; +select * from t1; +a b +1 10 +1 2 +insert into t1 values (40, 40); +update t1 set a=default, b=default; +select * from t1; +a b +1 2 +1 2 +1 2 +update t1 set a=default(b), b=default(a); +select * from t1; +a b +2 1 +2 1 +2 1 +create table t2 (a int default 1, b int generated always as (-a) virtual, c int generated always as (-a) stored); +insert into t2 values (10, default, default), (20, default, default); +update t2 set b=default; +select * from t2; +a b c +10 -10 -10 +20 -20 -20 +update t2 set a=30, b=default where a=10; +select * from t2; +a b c +30 -30 -30 +20 -20 -20 +update t2 set c=default, a=40 where c=-20; +select * from t2; +a b c +30 -30 -30 +40 -40 -40 +update t2 set a=default, b=default, c=default where b=-30; +select * from t2; +a b c +1 -1 -1 +40 -40 -40 +update t2 set a=default(a), b=default, c=default; +select * from t2; +a b c +1 -1 -1 +1 -1 -1 +update t2 set a=default(b), b=default, c=default; +select * from t2; +a b c +NULL NULL NULL +NULL NULL NULL +update t2 set b=default(a); +Error 3105 (HY000): The value specified for generated column 'b' in table 't2' is not allowed. +update t2 set a=default(a), c=default(c); +select * from t2; +a b c +1 -1 -1 +1 -1 -1 +update t2 set a=default(b), b=default(b); +select * from t2; +a b c +NULL NULL NULL +NULL NULL NULL +update t2 set a=default(a), c=default(c); +select * from t2; +a b c +1 -1 -1 +1 -1 -1 +update t2 set a=default(a), c=default(a); +Error 3105 (HY000): The value specified for generated column 'c' in table 't2' is not allowed. +drop table t1, t2; +drop table if exists msg, detail; +create table msg (id varchar(8), b int, status int, primary key (id, b)); +insert msg values ('abc', 1, 1); +create table detail (id varchar(8), start varchar(8), status int, index idx_start(start)); +insert detail values ('abc', '123', 2); +UPDATE msg SET msg.status = (SELECT detail.status FROM detail WHERE msg.id = detail.id); +affected rows: 1 +info: Rows matched: 1 Changed: 1 Warnings: 0 +admin check table msg; +drop table if exists ttt; +CREATE TABLE ttt (id bigint(20) NOT NULL, host varchar(30) NOT NULL, PRIMARY KEY (id), UNIQUE KEY i_host (host)); +insert into ttt values (8,8),(9,9); +begin; +update ttt set id = 0, host='9' where id = 9 limit 1; +affected rows: 1 +info: Rows matched: 1 Changed: 1 Warnings: 0 +delete from ttt where id = 0 limit 1; +select * from ttt use index (i_host) order by host; +id host +8 8 +update ttt set id = 0, host='8' where id = 8 limit 1; +affected rows: 1 +info: Rows matched: 1 Changed: 1 Warnings: 0 +delete from ttt where id = 0 limit 1; +select * from ttt use index (i_host) order by host; +id host +commit; +admin check table ttt; +drop table ttt; +drop table if exists a; +create table a(id int auto_increment, a int default null, primary key(id)); +insert into a values (1, 1001), (2, 1001), (10001, 1), (3, 1); +update a set id = id*10 where a = 1001; +affected rows: 2 +info: Rows matched: 2 Changed: 2 Warnings: 0 +drop table a; +create table a ( a bigint, b bigint); +insert into a values (1, 1001), (2, 1001), (10001, 1), (3, 1); +update a set a = a*10 where b = 1001; +affected rows: 2 +info: Rows matched: 2 Changed: 2 Warnings: 0 +drop table if exists items, month; +CREATE TABLE items (id int, price TEXT); +insert into items values (11, "items_price_11"), (12, "items_price_12"), (13, "items_price_13"); +affected rows: 3 +info: Records: 3 Duplicates: 0 Warnings: 0 +CREATE TABLE month (mid int, mprice TEXT); +insert into month values (11, "month_price_11"), (22, "month_price_22"), (13, "month_price_13"); +affected rows: 3 +info: Records: 3 Duplicates: 0 Warnings: 0 +UPDATE items, month SET items.price=month.mprice WHERE items.id=month.mid; +affected rows: 2 +info: Rows matched: 2 Changed: 2 Warnings: 0 +begin; +SELECT * FROM items; +id price +11 month_price_11 +12 items_price_12 +13 month_price_13 +commit; +UPDATE items join month on items.id=month.mid SET items.price=month.mid; +affected rows: 2 +info: Rows matched: 2 Changed: 2 Warnings: 0 +begin; +SELECT * FROM items; +id price +11 11 +12 items_price_12 +13 13 +commit; +UPDATE items T0 join month T1 on T0.id=T1.mid SET T0.price=T1.mprice; +affected rows: 2 +info: Rows matched: 2 Changed: 2 Warnings: 0 +begin; +SELECT * FROM items; +id price +11 month_price_11 +12 items_price_12 +13 month_price_13 +commit; +DROP TABLE IF EXISTS t1, t2; +create table t1 (c int); +create table t2 (c varchar(256)); +insert into t1 values (1), (2); +insert into t2 values ("a"), ("b"); +update t1, t2 set t1.c = 10, t2.c = "abc"; +affected rows: 4 +info: Rows matched: 4 Changed: 4 Warnings: 0 +DROP TABLE IF EXISTS t1, t2; +create table t1 (c1 int); +create table t2 (c2 int); +insert into t1 values (1), (2); +insert into t2 values (1), (2); +update t1, t2 set t1.c1 = 10, t2.c2 = 2 where t2.c2 = 1; +affected rows: 3 +info: Rows matched: 3 Changed: 3 Warnings: 0 +select * from t1; +c1 +10 +10 +drop table if exists t; +create table t (a int, b int); +insert into t values(1, 1), (2, 2), (3, 3); +affected rows: 3 +info: Records: 3 Duplicates: 0 Warnings: 0 +update t m, t n set m.a = m.a + 1; +affected rows: 3 +info: Rows matched: 3 Changed: 3 Warnings: 0 +select * from t; +a b +2 1 +3 2 +4 3 +update t m, t n set n.a = n.a - 1, n.b = n.b + 1; +affected rows: 3 +info: Rows matched: 3 Changed: 3 Warnings: 0 +select * from t; +a b +1 2 +2 3 +3 4 +drop table if exists update_modified; +create table update_modified (col_1 int, col_2 enum('a', 'b')); +set SQL_MODE=''; +insert into update_modified values (0, 3); +SELECT * FROM update_modified; +col_1 col_2 +0 +set SQL_MODE=STRICT_ALL_TABLES; +update update_modified set col_1 = 1; +affected rows: 1 +info: Rows matched: 1 Changed: 1 Warnings: 0 +SELECT * FROM update_modified; +col_1 col_2 +1 +update update_modified set col_1 = 2, col_2 = 'c'; +Error 1265 (01000): Data truncated for column '%s' at row %d +SELECT * FROM update_modified; +col_1 col_2 +1 +update update_modified set col_1 = 3, col_2 = 'a'; +affected rows: 1 +info: Rows matched: 1 Changed: 1 Warnings: 0 +SELECT * FROM update_modified; +col_1 col_2 +3 a +drop table if exists update_with_diff_type; +CREATE TABLE update_with_diff_type (a int, b JSON); +INSERT INTO update_with_diff_type VALUES(3, '{"a": "测试"}'); +UPDATE update_with_diff_type SET a = '300'; +affected rows: 1 +info: Rows matched: 1 Changed: 1 Warnings: 0 +SELECT a FROM update_with_diff_type; +a +300 +UPDATE update_with_diff_type SET b = '{"a": "\\u6d4b\\u8bd5"}'; +affected rows: 0 +info: Rows matched: 1 Changed: 0 Warnings: 0 +SELECT b FROM update_with_diff_type; +b +{"a": "测试"} +set SQL_MODE=default; diff --git a/tests/integrationtest/r/executor/write.result b/tests/integrationtest/r/executor/write.result index 1217d60a5b38c..70bfb62329b75 100644 --- a/tests/integrationtest/r/executor/write.result +++ b/tests/integrationtest/r/executor/write.result @@ -1974,3 +1974,175 @@ b 4 set @@session.tidb_enable_list_partition = default; set @@allow_auto_random_explicit_insert = default; +drop table if exists replace_test; +create table replace_test (id int PRIMARY KEY AUTO_INCREMENT, c1 int, c2 int, c3 int default 1); +replace replace_test (c1) values (1),(2),(NULL); +affected rows: 3 +info: Records: 3 Duplicates: 0 Warnings: 0 +begin; +replace replace_test (c1) values (); +Error 1136 (21S01): Column count doesn't match value count at row 1 +rollback; +begin; +replace replace_test (c1, c2) values (1,2),(1); +Error 1136 (21S01): Column count doesn't match value count at row 2 +rollback; +begin; +replace replace_test (xxx) values (3); +Error 1054 (42S22): Unknown column 'xxx' in 'field list' +rollback; +begin; +replace replace_test_xxx (c1) values (); +Error 1146 (42S02): Table 'executor__write.replace_test_xxx' doesn't exist +rollback; +replace replace_test set c1 = 3; +affected rows: 1 +info: +begin; +replace replace_test set c1 = 4, c1 = 5; +Error 1110 (42000): Column 'c1' specified twice +rollback; +begin; +replace replace_test set xxx = 6; +Error 1054 (42S22): Unknown column 'xxx' in 'field list' +rollback; +drop table if exists replace_test_1; +create table replace_test_1 (id int, c1 int); +replace replace_test_1 select id, c1 from replace_test; +affected rows: 4 +info: Records: 4 Duplicates: 0 Warnings: 0 +begin; +replace replace_test_0 select c1 from replace_test; +Error 1146 (42S02): Table 'executor__write.replace_test_0' doesn't exist +rollback; +create table replace_test_2 (id int, c1 int); +replace replace_test_1 select id, c1 from replace_test union select id * 10, c1 * 10 from replace_test; +affected rows: 8 +info: Records: 8 Duplicates: 0 Warnings: 0 +drop table if exists replace_test_3; +create table replace_test_3 (c1 int, c2 int, UNIQUE INDEX (c2)); +replace into replace_test_3 set c2=1; +affected rows: 1 +info: +replace into replace_test_3 set c2=1; +affected rows: 1 +info: +replace into replace_test_3 set c1=1, c2=1; +affected rows: 2 +info: +replace into replace_test_3 set c2=NULL; +affected rows: 1 +info: +replace into replace_test_3 set c2=NULL; +affected rows: 1 +info: +drop table if exists replace_test_4; +create table replace_test_4 (c1 int, c2 int, c3 int, UNIQUE INDEX (c1, c2)); +replace into replace_test_4 set c2=NULL; +affected rows: 1 +info: +replace into replace_test_4 set c2=NULL; +affected rows: 1 +info: +drop table if exists replace_test_5; +create table replace_test_5 (c1 int, c2 int, c3 int, PRIMARY KEY (c1, c2)); +replace into replace_test_5 set c1=1, c2=2; +affected rows: 1 +info: +replace into replace_test_5 set c1=1, c2=2; +affected rows: 1 +info: +drop table if exists tIssue989; +CREATE TABLE tIssue989 (a int, b int, PRIMARY KEY(a), UNIQUE KEY(b)); +insert into tIssue989 (a, b) values (1, 2); +affected rows: 1 +info: +replace into tIssue989(a, b) values (111, 2); +affected rows: 2 +info: +select * from tIssue989; +a b +111 2 +drop table if exists tIssue1012; +CREATE TABLE tIssue1012 (a int, b int, PRIMARY KEY(a), UNIQUE KEY(b)); +insert into tIssue1012 (a, b) values (1, 2); +insert into tIssue1012 (a, b) values (2, 1); +replace into tIssue1012(a, b) values (1, 1); +affected rows: 3 +info: +select * from tIssue1012; +a b +1 1 +drop table if exists t1; +create table t1(a int primary key, b int); +insert into t1 values(1,1),(2,2),(3,3),(4,4),(5,5); +replace into t1 values(1,1); +affected rows: 1 +info: +replace into t1 values(1,1),(2,2); +affected rows: 2 +info: Records: 2 Duplicates: 0 Warnings: 0 +replace into t1 values(4,14),(5,15),(6,16),(7,17),(8,18); +affected rows: 7 +info: Records: 5 Duplicates: 2 Warnings: 0 +replace into t1 select * from (select 1, 2) as tmp; +affected rows: 2 +info: Records: 1 Duplicates: 1 Warnings: 0 +drop table if exists t1, t2; +create table t1 (a int primary key, b int default 20, c int default 30); +insert into t1 value (1, 2, 3); +replace t1 set a=1, b=default; +select * from t1; +a b c +1 20 30 +replace t1 set a=2, b=default, c=default; +select * from t1; +a b c +1 20 30 +2 20 30 +replace t1 set a=2, b=default(c), c=default(b); +select * from t1; +a b c +1 20 30 +2 30 20 +replace t1 set a=default(b)+default(c); +select * from t1; +a b c +1 20 30 +2 30 20 +50 20 30 +create table t2 (pk int primary key, a int default 1, b int generated always as (-a) virtual, c int generated always as (-a) stored); +replace t2 set pk=1, b=default; +select * from t2; +pk a b c +1 1 -1 -1 +replace t2 set pk=2, a=10, b=default; +select * from t2; +pk a b c +1 1 -1 -1 +2 10 -10 -10 +replace t2 set pk=2, c=default, a=20; +select * from t2; +pk a b c +1 1 -1 -1 +2 20 -20 -20 +replace t2 set pk=2, a=default, b=default, c=default; +select * from t2; +pk a b c +1 1 -1 -1 +2 1 -1 -1 +replace t2 set pk=3, a=default(a), b=default, c=default; +select * from t2; +pk a b c +1 1 -1 -1 +2 1 -1 -1 +3 1 -1 -1 +replace t2 set b=default(a); +Error 3105 (HY000): The value specified for generated column 'b' in table 't2' is not allowed. +replace t2 set a=default(b), b=default(b); +Error 3105 (HY000): The value specified for generated column 'a' in table 't2' is not allowed. +replace t2 set a=default(a), c=default(c); +Error 1364 (HY000): Field 'pk' doesn't have a default value +replace t2 set c=default(a); +Error 3105 (HY000): The value specified for generated column 'c' in table 't2' is not allowed. +drop table t1, t2; diff --git a/tests/integrationtest/r/explain_generate_column_substitute.result b/tests/integrationtest/r/explain_generate_column_substitute.result index 0a1b4a035342c..b4f9fe097c3c6 100644 --- a/tests/integrationtest/r/explain_generate_column_substitute.result +++ b/tests/integrationtest/r/explain_generate_column_substitute.result @@ -396,7 +396,8 @@ id estRows task access object operator info StreamAgg 1.00 root funcs:count(Column#6)->Column#4 └─IndexReader 1.00 root index:StreamAgg └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#6 - └─IndexRangeScan 250.00 cop[tikv] table:tbl1, index:expression_index(md5(`s`)) range:["02e74f10e0327ad868d138f2b4fdd6f","02e74f10e0327ad868d138f2b4fdd6g"), keep order:false, stats:pseudo + └─Selection 250.00 cop[tikv] like(md5(cast(explain_generate_column_substitute.tbl1.s, var_string(20))), "02e74f10e0327ad868d138f2b4fdd6f%", 92) + └─IndexRangeScan 250.00 cop[tikv] table:tbl1, index:expression_index(md5(`s`)) range:["02e74f10e0327ad868d138f2b4fdd6f","02e74f10e0327ad868d138f2b4fdd6g"), keep order:false, stats:pseudo select count(*) from tbl1 use index() where md5(s) like '02e74f10e0327ad868d138f2b4fdd6f%'; count(*) 64 diff --git a/tests/integrationtest/r/expression/cast.result b/tests/integrationtest/r/expression/cast.result index e41cd0e192f69..c4d5a2d63d3f8 100644 --- a/tests/integrationtest/r/expression/cast.result +++ b/tests/integrationtest/r/expression/cast.result @@ -88,3 +88,12 @@ cast('61qw' as decimal) 61 Level Code Message Warning 1292 Truncated incorrect DECIMAL value: '61qw' +drop table if exists t; +create table t (y year); +insert into t values (cast('14:15' as time)); +select 1 from t where y = YEAR(CURDATE()); +1 +1 +select cast(cast('14:15' as time) as year) = YEAR(CURDATE()); +cast(cast('14:15' as time) as year) = YEAR(CURDATE()) +1 diff --git a/tests/integrationtest/r/expression/multi_valued_index.result b/tests/integrationtest/r/expression/multi_valued_index.result new file mode 100644 index 0000000000000..63409df1abe80 --- /dev/null +++ b/tests/integrationtest/r/expression/multi_valued_index.result @@ -0,0 +1,508 @@ +drop table if exists t; +create table t(a json); +select cast(a as signed array) from t; +Error 1235 (42000): This version of TiDB doesn't yet support 'Use of CAST( .. AS .. ARRAY) outside of functional index in CREATE(non-SELECT)/ALTER TABLE or in general expressions' +select json_extract(cast(a as signed array), '$[0]') from t; +Error 1235 (42000): This version of TiDB doesn't yet support 'Use of CAST( .. AS .. ARRAY) outside of functional index in CREATE(non-SELECT)/ALTER TABLE or in general expressions' +select * from t where cast(a as signed array); +Error 1235 (42000): This version of TiDB doesn't yet support 'Use of CAST( .. AS .. ARRAY) outside of functional index in CREATE(non-SELECT)/ALTER TABLE or in general expressions' +select cast('[1,2,3]' as unsigned array); +Error 1235 (42000): This version of TiDB doesn't yet support 'Use of CAST( .. AS .. ARRAY) outside of functional index in CREATE(non-SELECT)/ALTER TABLE or in general expressions' +drop table t; +CREATE TABLE t(x INT, KEY k ((1 AND CAST(JSON_ARRAY(x) AS UNSIGNED ARRAY)))); +Error 1235 (42000): This version of TiDB doesn't yet support 'Use of CAST( .. AS .. ARRAY) outside of functional index in CREATE(non-SELECT)/ALTER TABLE or in general expressions' +CREATE TABLE t1 (f1 json, key mvi((cast(cast(f1 as unsigned array) as unsigned array)))); +Error 1235 (42000): This version of TiDB doesn't yet support 'Use of CAST( .. AS .. ARRAY) outside of functional index in CREATE(non-SELECT)/ALTER TABLE or in general expressions' +CREATE TABLE t1 (f1 json, primary key mvi((cast(cast(f1 as unsigned array) as unsigned array)))); +Error 1235 (42000): This version of TiDB doesn't yet support 'Use of CAST( .. AS .. ARRAY) outside of functional index in CREATE(non-SELECT)/ALTER TABLE or in general expressions' +CREATE TABLE t1 (f1 json, key mvi((cast(f1->>'$[*]' as unsigned array)))); +Error 3146 (HY000): Invalid data type for JSON data in argument 1 to function cast_as_array; a JSON string or JSON type is required. +CREATE TABLE t1 (f1 json, key mvi((cast(f1->'$[*]' as year array)))); +Error 1235 (42000): This version of TiDB doesn't yet support 'CAST-ing data to array of year(-1) BINARY' +CREATE TABLE t1 (f1 json, key mvi((cast(f1->'$[*]' as json array)))); +Error 1235 (42000): This version of TiDB doesn't yet support 'CAST-ing data to array of json BINARY' +CREATE TABLE t1 (f1 json, key mvi((cast(f1->'$[*]' as char(10) charset gbk array)))); +Error 1235 (42000): This version of TiDB doesn't yet support 'specifying charset for multi-valued index' +create table t(j json, gc json as ((concat(cast(j->'$[*]' as unsigned array),"x")))); +Error 1235 (42000): This version of TiDB doesn't yet support 'Use of CAST( .. AS .. ARRAY) outside of functional index in CREATE(non-SELECT)/ALTER TABLE or in general expressions' +create table t(j json, gc json as (cast(j->'$[*]' as unsigned array))); +Error 1235 (42000): This version of TiDB doesn't yet support 'Use of CAST( .. AS .. ARRAY) outside of functional index in CREATE(non-SELECT)/ALTER TABLE or in general expressions' +create table t1(j json, key i1((cast(j->"$" as char array)))); +Error 1235 (42000): This version of TiDB doesn't yet support 'CAST-ing data to array of char/binary BLOBs' +create table t1(j json, key i1((cast(j->"$" as binary array)))); +Error 1235 (42000): This version of TiDB doesn't yet support 'CAST-ing data to array of char/binary BLOBs' +create table t1(j json, key i1((cast(j->"$" as float array)))); +Error 1235 (42000): This version of TiDB doesn't yet support 'CAST-ing data to array of float BINARY' +create table t1(j json, key i1((cast(j->"$" as decimal(4,2) array)))); +Error 1235 (42000): This version of TiDB doesn't yet support 'CAST-ing data to array of decimal(4,2) BINARY' +create view v as select cast('[1,2,3]' as unsigned array); +Error 1235 (42000): This version of TiDB doesn't yet support 'Use of CAST( .. AS .. ARRAY) outside of functional index in CREATE(non-SELECT)/ALTER TABLE or in general expressions' +create table t(a json, index idx((cast(a as signed array)))); +drop table t; +create table t(a json, index idx(((cast(a as signed array))))); +drop table t; +create table t(j json, key i1((cast(j->"$" as double array)))); +drop table t; +create table t(a json, b int, index idx(b, (cast(a as signed array)), (cast(a as signed array)))); +Error 1235 (42000): This version of TiDB doesn't yet support 'more than one multi-valued key part per index' +create table t(a json, b int); +create index idx on t (b, (cast(a as signed array)), (cast(a as signed array))); +Error 1235 (42000): This version of TiDB doesn't yet support 'more than one multi-valued key part per index' +alter table t add index idx(b, (cast(a as signed array)), (cast(a as signed array))); +Error 1235 (42000): This version of TiDB doesn't yet support 'more than one multi-valued key part per index' +create index idx1 on t (b, (cast(a as signed array))); +alter table t add index idx2(b, (cast(a as signed array))); +drop table t; +create table t(a json, b int, index idx3(b, (cast(a as signed array)))); +drop table t; +set names gbk; +create table t(a json, b int, index idx3(b, (cast(a as char(10) array)))); +CREATE TABLE users (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, doc JSON); +CREATE TABLE t (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, doc JSON, FOREIGN KEY fk_user_id ((cast(doc->'$[*]' as signed array))) REFERENCES users(id)); +Error 1072 (42000): Key column '_V$_fk_user_id_0' doesn't exist in table +set names default; +set @@sql_mode=''; +drop table if exists t; +create table t(a json, index idx((cast(a as unsigned array)))); +insert into t values ('[1,2,3]'); +insert into t values ('[-1]'); +Error 3752 (HY000): Value is out of range for expression index 'idx' at row 1 +insert into t values ('["1"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["a"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["汉字"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[1.2]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[1.0]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("11:00:00" as time))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02" as date))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast('{"a":1}' as json))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +drop table if exists t; +create table t(a json, index idx((cast(a as signed array)))); +insert into t values ('[1,2,3]'); +insert into t values ('[-1]'); +insert into t values ('["1"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["a"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["汉字"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[1.2]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[1.0]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("11:00:00" as time))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02" as date))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast('{"a":1}' as json))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +drop table if exists t; +create table t(a json, index idx((cast(a as char(1) array)))); +insert into t values ('[1,2,3]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[-1]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["1"]'); +insert into t values ('["a"]'); +insert into t values ('["汉字"]'); +Error 3907 (HY000): Data too long for expression index 'idx' +insert into t values ('[1.2]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[1.0]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("11:00:00" as time))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02" as date))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast('{"a":1}' as json))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +drop table if exists t; +create table t(a json, index idx((cast(a as char(2) array)))); +insert into t values ('[1,2,3]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[-1]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["1"]'); +insert into t values ('["a"]'); +insert into t values ('["汉字"]'); +insert into t values ('[1.2]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[1.0]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("11:00:00" as time))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02" as date))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast('{"a":1}' as json))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +drop table if exists t; +create table t(a json, index idx((cast(a as binary(1) array)))); +insert into t values ('[1,2,3]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[-1]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["1"]'); +insert into t values ('["a"]'); +insert into t values ('["汉字"]'); +Error 3907 (HY000): Data too long for expression index 'idx' +insert into t values ('[1.2]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[1.0]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("11:00:00" as time))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02" as date))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast('{"a":1}' as json))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +drop table if exists t; +create table t(a json, index idx((cast(a as binary(2) array)))); +insert into t values ('[1,2,3]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[-1]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["1"]'); +insert into t values ('["a"]'); +insert into t values ('["汉字"]'); +Error 3907 (HY000): Data too long for expression index 'idx' +insert into t values ('[1.2]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[1.0]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("11:00:00" as time))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02" as date))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast('{"a":1}' as json))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +drop table if exists t; +create table t(a json, index idx((cast(a as date array)))); +insert into t values ('[1,2,3]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[-1]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["1"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["a"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["汉字"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[1.2]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[1.0]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("11:00:00" as time))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02" as date))); +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast('{"a":1}' as json))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +drop table if exists t; +create table t(a json, index idx((cast(a as time array)))); +insert into t values ('[1,2,3]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[-1]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["1"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["a"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["汉字"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[1.2]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[1.0]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("11:00:00" as time))); +insert into t values (json_array(cast("2022-02-02" as date))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast('{"a":1}' as json))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +drop table if exists t; +create table t(a json, index idx((cast(a as datetime array)))); +insert into t values ('[1,2,3]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[-1]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["1"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["a"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["汉字"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[1.2]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[1.0]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("11:00:00" as time))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02" as date))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +insert into t values (json_array(cast('{"a":1}' as json))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +drop table if exists t; +create table t(a json, index idx((cast(a as double array)))); +insert into t values ('[1,2,3]'); +insert into t values ('[-1]'); +insert into t values ('["1"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["a"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["汉字"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[1.2]'); +insert into t values ('[1.0]'); +insert into t values (json_array(cast("11:00:00" as time))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02" as date))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast('{"a":1}' as json))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +set @@sql_mode=default; +drop table if exists t; +create table t(a json, index idx((cast(a as unsigned array)))); +insert into t values ('[1,2,3]'); +insert into t values ('[-1]'); +Error 3752 (HY000): Value is out of range for expression index 'idx' at row 1 +insert into t values ('["1"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["a"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["汉字"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[1.2]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[1.0]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("11:00:00" as time))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02" as date))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast('{"a":1}' as json))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +drop table if exists t; +create table t(a json, index idx((cast(a as signed array)))); +insert into t values ('[1,2,3]'); +insert into t values ('[-1]'); +insert into t values ('["1"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["a"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["汉字"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[1.2]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[1.0]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("11:00:00" as time))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02" as date))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast('{"a":1}' as json))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +drop table if exists t; +create table t(a json, index idx((cast(a as char(1) array)))); +insert into t values ('[1,2,3]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[-1]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["1"]'); +insert into t values ('["a"]'); +insert into t values ('["汉字"]'); +Error 3907 (HY000): Data too long for expression index 'idx' +insert into t values ('[1.2]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[1.0]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("11:00:00" as time))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02" as date))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast('{"a":1}' as json))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +drop table if exists t; +create table t(a json, index idx((cast(a as char(2) array)))); +insert into t values ('[1,2,3]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[-1]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["1"]'); +insert into t values ('["a"]'); +insert into t values ('["汉字"]'); +insert into t values ('[1.2]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[1.0]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("11:00:00" as time))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02" as date))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast('{"a":1}' as json))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +drop table if exists t; +create table t(a json, index idx((cast(a as binary(1) array)))); +insert into t values ('[1,2,3]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[-1]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["1"]'); +insert into t values ('["a"]'); +insert into t values ('["汉字"]'); +Error 3907 (HY000): Data too long for expression index 'idx' +insert into t values ('[1.2]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[1.0]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("11:00:00" as time))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02" as date))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast('{"a":1}' as json))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +drop table if exists t; +create table t(a json, index idx((cast(a as binary(2) array)))); +insert into t values ('[1,2,3]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[-1]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["1"]'); +insert into t values ('["a"]'); +insert into t values ('["汉字"]'); +Error 3907 (HY000): Data too long for expression index 'idx' +insert into t values ('[1.2]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[1.0]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("11:00:00" as time))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02" as date))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast('{"a":1}' as json))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +drop table if exists t; +create table t(a json, index idx((cast(a as date array)))); +insert into t values ('[1,2,3]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[-1]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["1"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["a"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["汉字"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[1.2]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[1.0]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("11:00:00" as time))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02" as date))); +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast('{"a":1}' as json))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +drop table if exists t; +create table t(a json, index idx((cast(a as time array)))); +insert into t values ('[1,2,3]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[-1]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["1"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["a"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["汉字"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[1.2]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[1.0]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("11:00:00" as time))); +insert into t values (json_array(cast("2022-02-02" as date))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast('{"a":1}' as json))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +drop table if exists t; +create table t(a json, index idx((cast(a as datetime array)))); +insert into t values ('[1,2,3]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[-1]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["1"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["a"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["汉字"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[1.2]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[1.0]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("11:00:00" as time))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02" as date))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +insert into t values (json_array(cast('{"a":1}' as json))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +drop table if exists t; +create table t(a json, index idx((cast(a as double array)))); +insert into t values ('[1,2,3]'); +insert into t values ('[-1]'); +insert into t values ('["1"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["a"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('["汉字"]'); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values ('[1.2]'); +insert into t values ('[1.0]'); +insert into t values (json_array(cast("11:00:00" as time))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02" as date))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +insert into t values (json_array(cast('{"a":1}' as json))); +Error 3903 (HY000): Invalid JSON value for CAST for expression index 'idx' +set sql_mode=default; diff --git a/tests/integrationtest/r/infoschema/tables.result b/tests/integrationtest/r/infoschema/tables.result index c0ded8deaabd8..83f3be1c312eb 100644 --- a/tests/integrationtest/r/infoschema/tables.result +++ b/tests/integrationtest/r/infoschema/tables.result @@ -271,3 +271,20 @@ DROP TABLE t2; SELECT * FROM information_schema.CHECK_CONSTRAINTS where CONSTRAINT_NAME = 't2_chk_1'; CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME CHECK_CLAUSE SET GLOBAL tidb_enable_check_constraint = default; +drop table if exists t1, t2; +SET GLOBAL tidb_enable_check_constraint = ON; +CREATE TABLE t1 (id INT PRIMARY KEY, CHECK (id<10)); +SELECT CONSTRAINT_SCHEMA, CONSTRAINT_NAME, CHECK_CLAUSE, TABLE_NAME FROM information_schema.TIDB_CHECK_CONSTRAINTS where CONSTRAINT_NAME = 't1_chk_1'; +CONSTRAINT_SCHEMA CONSTRAINT_NAME CHECK_CLAUSE TABLE_NAME +infoschema__tables t1_chk_1 (`id` < 10) t1 +ALTER TABLE t1 DROP CONSTRAINT t1_chk_1; +SELECT CONSTRAINT_SCHEMA, CONSTRAINT_NAME, CHECK_CLAUSE, TABLE_NAME FROM information_schema.TIDB_CHECK_CONSTRAINTS where CONSTRAINT_NAME = 't1_chk_1'; +CONSTRAINT_SCHEMA CONSTRAINT_NAME CHECK_CLAUSE TABLE_NAME +CREATE TABLE t2 (id INT PRIMARY KEY, CHECK (id<20)); +SELECT CONSTRAINT_SCHEMA, CONSTRAINT_NAME, CHECK_CLAUSE, TABLE_NAME FROM information_schema.TIDB_CHECK_CONSTRAINTS where CONSTRAINT_NAME = 't2_chk_1'; +CONSTRAINT_SCHEMA CONSTRAINT_NAME CHECK_CLAUSE TABLE_NAME +infoschema__tables t2_chk_1 (`id` < 20) t2 +DROP TABLE t2; +SELECT CONSTRAINT_SCHEMA, CONSTRAINT_NAME, CHECK_CLAUSE, TABLE_NAME FROM information_schema.TIDB_CHECK_CONSTRAINTS where CONSTRAINT_NAME = 't2_chk_1'; +CONSTRAINT_SCHEMA CONSTRAINT_NAME CHECK_CLAUSE TABLE_NAME +SET GLOBAL tidb_enable_check_constraint = default; diff --git a/tests/integrationtest/r/partition.result b/tests/integrationtest/r/partition.result new file mode 100644 index 0000000000000..8aea25f8498bf --- /dev/null +++ b/tests/integrationtest/r/partition.result @@ -0,0 +1,3 @@ +create placement policy pp1 followers=1; +create table t (a int); +alter table t partition by range (a) (partition p0 values less than (1000000), partition pMax values less than (maxvalue) placement policy pp1); diff --git a/tests/integrationtest/r/planner/core/binary_plan.result b/tests/integrationtest/r/planner/core/binary_plan.result new file mode 100644 index 0000000000000..776df6e6ec382 --- /dev/null +++ b/tests/integrationtest/r/planner/core/binary_plan.result @@ -0,0 +1,18 @@ +select tidb_decode_binary_plan('some random bytes'); +tidb_decode_binary_plan('some random bytes') + +show warnings; +Level Code Message +Warning 1105 illegal base64 data at input byte 4 +select tidb_decode_binary_plan('c29tZSByYW5kb20gYnl0ZXM='); +tidb_decode_binary_plan('c29tZSByYW5kb20gYnl0ZXM=') + +show warnings; +Level Code Message +Warning 1105 snappy: corrupt input +select tidb_decode_binary_plan('EUBzb21lIHJhbmRvbSBieXRlcw=='); +tidb_decode_binary_plan('EUBzb21lIHJhbmRvbSBieXRlcw==') + +show warnings; +Level Code Message +Warning 1105 proto: illegal wireType 7 diff --git a/tests/integrationtest/r/planner/core/casetest/index/index.result b/tests/integrationtest/r/planner/core/casetest/index/index.result new file mode 100644 index 0000000000000..189f0f94fa719 --- /dev/null +++ b/tests/integrationtest/r/planner/core/casetest/index/index.result @@ -0,0 +1,799 @@ +set tidb_cost_model_version=2; +drop table if exists t1, t2; +set tidb_enable_clustered_index=int_only; +create table t1(a int not null, c int not null); +create table t2(a int not null, b int not null, c int not null, primary key(a,b)); +insert into t1 values(1,1); +insert into t2 values(1,1,1),(1,2,1); +analyze table t1,t2; +explain format = 'brief' select /*+ TIDB_INLJ(t2) */ * from t1 join t2 on t1.a = t2.a and t1.c = t2.c; +id estRows task access object operator info +IndexJoin 2.00 root inner join, inner:IndexLookUp, outer key:planner__core__casetest__index__index.t1.a, inner key:planner__core__casetest__index__index.t2.a, equal cond:eq(planner__core__casetest__index__index.t1.a, planner__core__casetest__index__index.t2.a), eq(planner__core__casetest__index__index.t1.c, planner__core__casetest__index__index.t2.c) +├─TableReader(Build) 1.00 root data:TableFullScan +│ └─TableFullScan 1.00 cop[tikv] table:t1 keep order:false +└─IndexLookUp(Probe) 2.00 root + ├─IndexRangeScan(Build) 2.00 cop[tikv] table:t2, index:PRIMARY(a, b) range: decided by [eq(planner__core__casetest__index__index.t2.a, planner__core__casetest__index__index.t1.a)], keep order:false + └─TableRowIDScan(Probe) 2.00 cop[tikv] table:t2 keep order:false +explain format = 'brief' select /*+ TIDB_INLJ(t2) */ * from t1 join t2 on t1.a = t2.a and t1.c <= t2.b; +id estRows task access object operator info +IndexJoin 2.00 root inner join, inner:IndexLookUp, outer key:planner__core__casetest__index__index.t1.a, inner key:planner__core__casetest__index__index.t2.a, equal cond:eq(planner__core__casetest__index__index.t1.a, planner__core__casetest__index__index.t2.a), other cond:le(planner__core__casetest__index__index.t1.c, planner__core__casetest__index__index.t2.b) +├─TableReader(Build) 1.00 root data:TableFullScan +│ └─TableFullScan 1.00 cop[tikv] table:t1 keep order:false +└─IndexLookUp(Probe) 2.00 root + ├─IndexRangeScan(Build) 2.00 cop[tikv] table:t2, index:PRIMARY(a, b) range: decided by [eq(planner__core__casetest__index__index.t2.a, planner__core__casetest__index__index.t1.a) le(planner__core__casetest__index__index.t1.c, planner__core__casetest__index__index.t2.b)], keep order:false + └─TableRowIDScan(Probe) 2.00 cop[tikv] table:t2 keep order:false +explain format = 'brief' select /*+ TIDB_INLJ(t2) */ * from t1 join t2 on t1.a = t2.a and t2.b = 1; +id estRows task access object operator info +IndexJoin 1.00 root inner join, inner:IndexLookUp, outer key:planner__core__casetest__index__index.t1.a, inner key:planner__core__casetest__index__index.t2.a, equal cond:eq(planner__core__casetest__index__index.t1.a, planner__core__casetest__index__index.t2.a) +├─TableReader(Build) 1.00 root data:TableFullScan +│ └─TableFullScan 1.00 cop[tikv] table:t1 keep order:false +└─IndexLookUp(Probe) 1.00 root + ├─IndexRangeScan(Build) 1.00 cop[tikv] table:t2, index:PRIMARY(a, b) range: decided by [eq(planner__core__casetest__index__index.t2.a, planner__core__casetest__index__index.t1.a) eq(planner__core__casetest__index__index.t2.b, 1)], keep order:false + └─TableRowIDScan(Probe) 1.00 cop[tikv] table:t2 keep order:false +set tidb_enable_clustered_index=default; +drop table if exists t2; +create table t2(pk int primary key, a json, b json, c int, d int, e int, index idx(c, (cast(a as signed array))), index idx2((cast(b as signed array)), c), index idx3(c, d), index idx4(d)); +explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where (1 member of (a) and c=1) or (2 member of (b) and c=1); -- 1: OR index merge from multi complicated mv index (memberof); +id estRows task access object operator info +IndexMerge_8 0.10 root type: union +├─IndexRangeScan_5(Build) 0.10 cop[tikv] table:t2, index:idx(c, cast(`a` as signed array)) range:[1 1,1 1], keep order:false, stats:pseudo +├─IndexRangeScan_6(Build) 0.10 cop[tikv] table:t2, index:idx2(cast(`b` as signed array), c) range:[2 1,2 1], keep order:false, stats:pseudo +└─TableRowIDScan_7(Probe) 0.10 cop[tikv] table:t2 keep order:false, stats:pseudo +explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where (1 member of (a) and c=1) or (2 member of (b) and c=1); -- 2: OR index merge from multi complicated mv index (memberof); +id estRows task access object operator info +IndexMerge_8 0.10 root type: union +├─IndexRangeScan_5(Build) 0.10 cop[tikv] table:t2, index:idx(c, cast(`a` as signed array)) range:[1 1,1 1], keep order:false, stats:pseudo +├─IndexRangeScan_6(Build) 0.10 cop[tikv] table:t2, index:idx2(cast(`b` as signed array), c) range:[2 1,2 1], keep order:false, stats:pseudo +└─TableRowIDScan_7(Probe) 0.10 cop[tikv] table:t2 keep order:false, stats:pseudo +explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where (1 member of (a) and c=1 and d=2) or (2 member of (b) and c=3 and d=2); -- 3: OR index merge from multi complicated mv index (memberof),while each DNF item contains redundant condition, which should be remained as table filters; +id estRows task access object operator info +IndexMerge_9 0.10 root type: union +├─IndexRangeScan_5(Build) 0.10 cop[tikv] table:t2, index:idx(c, cast(`a` as signed array)) range:[1 1,1 1], keep order:false, stats:pseudo +├─IndexRangeScan_6(Build) 0.10 cop[tikv] table:t2, index:idx2(cast(`b` as signed array), c) range:[2 3,2 3], keep order:false, stats:pseudo +└─Selection_8(Probe) 0.10 cop[tikv] or(and(json_memberof(cast(1, json BINARY), planner__core__casetest__index__index.t2.a), and(eq(planner__core__casetest__index__index.t2.c, 1), eq(planner__core__casetest__index__index.t2.d, 2))), and(json_memberof(cast(2, json BINARY), planner__core__casetest__index__index.t2.b), and(eq(planner__core__casetest__index__index.t2.c, 3), eq(planner__core__casetest__index__index.t2.d, 2)))) + └─TableRowIDScan_7 0.10 cop[tikv] table:t2 keep order:false, stats:pseudo +explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where ( json_contains(a, '[1, 2, 3]') and c=1 and d=2) or (2 member of (b) and c=3 and d=2); -- 4: OR index merge from multi complicated mv index (memberof),make full use of DNF item's condition even if the predicate is intersection case (json_contains); +id estRows task access object operator info +IndexMerge_9 0.01 root type: union +├─IndexRangeScan_5(Build) 10.00 cop[tikv] table:t2, index:idx(c, cast(`a` as signed array)) range:[1,1], keep order:false, stats:pseudo +├─IndexRangeScan_6(Build) 0.10 cop[tikv] table:t2, index:idx2(cast(`b` as signed array), c) range:[2 3,2 3], keep order:false, stats:pseudo +└─Selection_8(Probe) 0.01 cop[tikv] or(and(json_contains(planner__core__casetest__index__index.t2.a, cast("[1, 2, 3]", json BINARY)), and(eq(planner__core__casetest__index__index.t2.c, 1), eq(planner__core__casetest__index__index.t2.d, 2))), and(json_memberof(cast(2, json BINARY), planner__core__casetest__index__index.t2.b), and(eq(planner__core__casetest__index__index.t2.c, 3), eq(planner__core__casetest__index__index.t2.d, 2)))) + └─TableRowIDScan_7 10.00 cop[tikv] table:t2 keep order:false, stats:pseudo +explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where ( json_overlaps(a, '[1, 2, 3]') and c=1 and d=2) or (2 member of (b) and c=3 and d=2); -- 5: OR index merge from multi complicated mv index (memberof),make full use of DNF item's condition even if the predicate is intersection case (json_contains); +id estRows task access object operator info +Selection_5 0.08 root or(and(json_overlaps(planner__core__casetest__index__index.t2.a, cast("[1, 2, 3]", json BINARY)), and(eq(planner__core__casetest__index__index.t2.c, 1), eq(planner__core__casetest__index__index.t2.d, 2))), and(json_memberof(cast(2, json BINARY), planner__core__casetest__index__index.t2.b), and(eq(planner__core__casetest__index__index.t2.c, 3), eq(planner__core__casetest__index__index.t2.d, 2)))) +└─IndexMerge_11 0.10 root type: union + ├─IndexRangeScan_6(Build) 0.10 cop[tikv] table:t2, index:idx(c, cast(`a` as signed array)) range:[1 1,1 1], keep order:false, stats:pseudo + ├─IndexRangeScan_7(Build) 0.10 cop[tikv] table:t2, index:idx(c, cast(`a` as signed array)) range:[1 2,1 2], keep order:false, stats:pseudo + ├─IndexRangeScan_8(Build) 0.10 cop[tikv] table:t2, index:idx(c, cast(`a` as signed array)) range:[1 3,1 3], keep order:false, stats:pseudo + ├─IndexRangeScan_9(Build) 0.10 cop[tikv] table:t2, index:idx2(cast(`b` as signed array), c) range:[2 3,2 3], keep order:false, stats:pseudo + └─TableRowIDScan_10(Probe) 0.10 cop[tikv] table:t2 keep order:false, stats:pseudo +explain select /*+ use_index_merge(t2, idx2, idx, idx4) */ * from t2 where ( json_contains(a, '[1, 2, 3]') and d=2) or (2 member of (b) and c=3 and d=2); -- 6: OR index merge from multi complicated mv index (memberof),make full use of other DNF items even if one of the DNF items fails; +id estRows task access object operator info +IndexMerge_9 0.01 root type: union +├─IndexRangeScan_5(Build) 10.00 cop[tikv] table:t2, index:idx4(d) range:[2,2], keep order:false, stats:pseudo +├─IndexRangeScan_6(Build) 0.10 cop[tikv] table:t2, index:idx2(cast(`b` as signed array), c) range:[2 3,2 3], keep order:false, stats:pseudo +└─Selection_8(Probe) 0.01 cop[tikv] or(and(json_contains(planner__core__casetest__index__index.t2.a, cast("[1, 2, 3]", json BINARY)), eq(planner__core__casetest__index__index.t2.d, 2)), and(json_memberof(cast(2, json BINARY), planner__core__casetest__index__index.t2.b), and(eq(planner__core__casetest__index__index.t2.c, 3), eq(planner__core__casetest__index__index.t2.d, 2)))) + └─TableRowIDScan_7 10.00 cop[tikv] table:t2 keep order:false, stats:pseudo +explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where (1 member of (a) and 1 member of (b) and c=3) or (3 member of (b) and c=4); -- 7: OR index merge from multi complicated mv index (memberof),each DNF item can be more complicated like a another embedded CNF member-of composition.; +id estRows task access object operator info +IndexMerge_9 0.10 root type: union +├─IndexRangeScan_5(Build) 0.10 cop[tikv] table:t2, index:idx(c, cast(`a` as signed array)) range:[3 1,3 1], keep order:false, stats:pseudo +├─IndexRangeScan_6(Build) 0.10 cop[tikv] table:t2, index:idx2(cast(`b` as signed array), c) range:[3 4,3 4], keep order:false, stats:pseudo +└─Selection_8(Probe) 0.10 cop[tikv] or(and(json_memberof(cast(1, json BINARY), planner__core__casetest__index__index.t2.a), and(json_memberof(cast(1, json BINARY), planner__core__casetest__index__index.t2.b), eq(planner__core__casetest__index__index.t2.c, 3))), and(json_memberof(cast(3, json BINARY), planner__core__casetest__index__index.t2.b), eq(planner__core__casetest__index__index.t2.c, 4))) + └─TableRowIDScan_7 0.10 cop[tikv] table:t2 keep order:false, stats:pseudo +explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where (1 member of (a) and 1 member of (b) and c=3) or (3 member of (b) and c=4) or e=1; -- 8: OR index merge from multi complicated mv index (memberof), each DNF item should be strict or lax used as index partial path.; +id estRows task access object operator info +TableReader_7 25.98 root data:Selection_6 +└─Selection_6 25.98 cop[tikv] or(and(json_memberof(cast(1, json BINARY), planner__core__casetest__index__index.t2.a), and(json_memberof(cast(1, json BINARY), planner__core__casetest__index__index.t2.b), eq(planner__core__casetest__index__index.t2.c, 3))), or(and(json_memberof(cast(3, json BINARY), planner__core__casetest__index__index.t2.b), eq(planner__core__casetest__index__index.t2.c, 4)), eq(planner__core__casetest__index__index.t2.e, 1))) + └─TableFullScan_5 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +explain select /*+ use_index_merge(t2, idx2, idx, idx4) */ * from t2 where (1 member of (a) and 1 member of (b) and c=3) or (3 member of (b) and c=4) or d=1; -- 9: OR index merge from multi complicated mv index (memberof), each DNF item should be strict or lax used as index partial path, specify the index in index merge hint; +id estRows task access object operator info +IndexMerge_10 0.03 root type: union +├─IndexRangeScan_5(Build) 10.00 cop[tikv] table:t2, index:idx4(d) range:[1,1], keep order:false, stats:pseudo +├─IndexRangeScan_6(Build) 0.10 cop[tikv] table:t2, index:idx(c, cast(`a` as signed array)) range:[3 1,3 1], keep order:false, stats:pseudo +├─IndexRangeScan_7(Build) 0.10 cop[tikv] table:t2, index:idx2(cast(`b` as signed array), c) range:[3 4,3 4], keep order:false, stats:pseudo +└─Selection_9(Probe) 0.03 cop[tikv] or(and(json_memberof(cast(1, json BINARY), planner__core__casetest__index__index.t2.a), and(json_memberof(cast(1, json BINARY), planner__core__casetest__index__index.t2.b), eq(planner__core__casetest__index__index.t2.c, 3))), or(and(json_memberof(cast(3, json BINARY), planner__core__casetest__index__index.t2.b), eq(planner__core__casetest__index__index.t2.c, 4)), eq(planner__core__casetest__index__index.t2.d, 1))) + └─TableRowIDScan_8 10.00 cop[tikv] table:t2 keep order:false, stats:pseudo +drop table if exists t1, t2; +create table t1(pk int primary key, a json, b json, c int, d int, index idx((cast(a as signed array))), index idx2((cast(b as signed array)))); +create table t2(pk int primary key, a json, b json, c int, d int, index idx(c, (cast(a as signed array))), index idx2((cast(b as signed array)), c), index idx3(c, d), index idx4(d)); +explain select /*+ use_index_merge(t1, idx2, idx) */ * from t1 where 1 member of (a) and 2 member of (b); -- 1: AND index merge from multi member mv index predicate, since member of is single partial path, it can be merged with outer index merge.; +id estRows task access object operator info +IndexMerge_8 10.00 root type: intersection +├─IndexRangeScan_5(Build) 10.00 cop[tikv] table:t1, index:idx(cast(`a` as signed array)) range:[1,1], keep order:false, stats:pseudo +├─IndexRangeScan_6(Build) 10.00 cop[tikv] table:t1, index:idx2(cast(`b` as signed array)) range:[2,2], keep order:false, stats:pseudo +└─TableRowIDScan_7(Probe) 10.00 cop[tikv] table:t1 keep order:false, stats:pseudo +explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where 1 member of (a) and c=1 and 2 member of (b); -- 2: AND index merge from multi complicated mv index; +id estRows task access object operator info +IndexMerge_8 0.10 root type: intersection +├─IndexRangeScan_5(Build) 0.10 cop[tikv] table:t2, index:idx(c, cast(`a` as signed array)) range:[1 1,1 1], keep order:false, stats:pseudo +├─IndexRangeScan_6(Build) 0.10 cop[tikv] table:t2, index:idx2(cast(`b` as signed array), c) range:[2 1,2 1], keep order:false, stats:pseudo +└─TableRowIDScan_7(Probe) 0.10 cop[tikv] table:t2 keep order:false, stats:pseudo +explain select /*+ use_index_merge(t2, idx2, idx, idx4) */ * from t2 where 1 member of (a) and c=1 and 2 member of (b) and d=3; -- 3: AND index merge from multi complicated mv indexes and normal indexes; +id estRows task access object operator info +IndexMerge_9 0.10 root type: intersection +├─IndexRangeScan_5(Build) 10.00 cop[tikv] table:t2, index:idx4(d) range:[3,3], keep order:false, stats:pseudo +├─IndexRangeScan_6(Build) 0.10 cop[tikv] table:t2, index:idx(c, cast(`a` as signed array)) range:[1 1,1 1], keep order:false, stats:pseudo +├─IndexRangeScan_7(Build) 0.10 cop[tikv] table:t2, index:idx2(cast(`b` as signed array), c) range:[2 1,2 1], keep order:false, stats:pseudo +└─TableRowIDScan_8(Probe) 0.10 cop[tikv] table:t2 keep order:false, stats:pseudo +explain select /*+ use_index_merge(t2, idx2, idx, idx3) */ * from t2 where json_contains(a, '[1, 2, 3]') and c=1 and 2 member of (b) and d=3; -- 4: AND index merge from multi complicated mv indexes (json_contains (intersection))and normal indexes; +id estRows task access object operator info +IndexMerge_11 0.10 root type: intersection +├─IndexRangeScan_5(Build) 0.10 cop[tikv] table:t2, index:idx3(c, d) range:[1 3,1 3], keep order:false, stats:pseudo +├─IndexRangeScan_6(Build) 0.10 cop[tikv] table:t2, index:idx(c, cast(`a` as signed array)) range:[1 1,1 1], keep order:false, stats:pseudo +├─IndexRangeScan_7(Build) 0.10 cop[tikv] table:t2, index:idx(c, cast(`a` as signed array)) range:[1 2,1 2], keep order:false, stats:pseudo +├─IndexRangeScan_8(Build) 0.10 cop[tikv] table:t2, index:idx(c, cast(`a` as signed array)) range:[1 3,1 3], keep order:false, stats:pseudo +├─IndexRangeScan_9(Build) 0.10 cop[tikv] table:t2, index:idx2(cast(`b` as signed array), c) range:[2 1,2 1], keep order:false, stats:pseudo +└─TableRowIDScan_10(Probe) 0.10 cop[tikv] table:t2 keep order:false, stats:pseudo +explain select /*+ use_index_merge(t2, idx2, idx, idx3) */ * from t2 where json_overlaps(a, '[1, 2, 3]') and c=1 and 2 member of (b) and d=3; -- 5: AND index merge from multi complicated mv indexes (json_overlap (intersection))and normal indexes; +id estRows task access object operator info +Selection_5 0.06 root json_overlaps(planner__core__casetest__index__index.t2.a, cast("[1, 2, 3]", json BINARY)) +└─IndexMerge_9 0.10 root type: intersection + ├─IndexRangeScan_6(Build) 0.10 cop[tikv] table:t2, index:idx3(c, d) range:[1 3,1 3], keep order:false, stats:pseudo + ├─IndexRangeScan_7(Build) 0.10 cop[tikv] table:t2, index:idx2(cast(`b` as signed array), c) range:[2 1,2 1], keep order:false, stats:pseudo + └─TableRowIDScan_8(Probe) 0.10 cop[tikv] table:t2 keep order:false, stats:pseudo +explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where 1 member of (a) and c=1 and c=2; -- 6: AND index merge from multi complicated mv indexes (empty range); +id estRows task access object operator info +TableDual_5 0.00 root rows:0 +drop table if exists t; +create table t(a int, b int, c int, unique index(a), unique index(b), primary key(c)); +explain format = 'brief' select /*+ USE_INDEX_MERGE(t, a, b) */ * from t where a = 1 or b = 2; +id estRows task access object operator info +IndexMerge 2.00 root type: union +├─IndexRangeScan(Build) 1.00 cop[tikv] table:t, index:a(a) range:[1,1], keep order:false, stats:pseudo +├─IndexRangeScan(Build) 1.00 cop[tikv] table:t, index:b(b) range:[2,2], keep order:false, stats:pseudo +└─TableRowIDScan(Probe) 2.00 cop[tikv] table:t keep order:false, stats:pseudo +explain format = 'brief' select /*+ USE_INDEX_MERGE(t, A, B) */ * from t where a = 1 or b = 2; +id estRows task access object operator info +IndexMerge 2.00 root type: union +├─IndexRangeScan(Build) 1.00 cop[tikv] table:t, index:a(a) range:[1,1], keep order:false, stats:pseudo +├─IndexRangeScan(Build) 1.00 cop[tikv] table:t, index:b(b) range:[2,2], keep order:false, stats:pseudo +└─TableRowIDScan(Probe) 2.00 cop[tikv] table:t keep order:false, stats:pseudo +explain format = 'brief' select /*+ USE_INDEX_MERGE(t, primary) */ * from t where 1 or t.c; +id estRows task access object operator info +TableReader 10000.00 root data:TableFullScan +└─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +explain format = 'brief' select /*+ USE_INDEX_MERGE(t, a, b, c) */ * from t where 1 or t.a = 1 or t.b = 2; +id estRows task access object operator info +TableReader 10000.00 root data:Selection +└─Selection 10000.00 cop[tikv] or(1, or(eq(planner__core__casetest__index__index.t.a, 1), eq(planner__core__casetest__index__index.t.b, 2))) + └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +drop table if exists t1, t2, t3, t4; +create table t1(a int, b int, primary key (a), key idx_t1_b (b)); +create table t2(a int, b int, primary key (a), key idx_t1_b (b)); +create table t3(a int, b int, c int); +create table t4(a int, b int, c int, primary key (a, b) clustered); +desc format = 'brief' select /*+ TIDB_INLJ(t2)*/ * from t1, t2 where t1.a = t2.a and t1.b = t2.b; +id estRows task access object operator info +IndexJoin 12487.50 root inner join, inner:TableReader, outer key:planner__core__casetest__index__index.t1.a, inner key:planner__core__casetest__index__index.t2.a, equal cond:eq(planner__core__casetest__index__index.t1.a, planner__core__casetest__index__index.t2.a), eq(planner__core__casetest__index__index.t1.b, planner__core__casetest__index__index.t2.b) +├─IndexReader(Build) 9990.00 root index:IndexFullScan +│ └─IndexFullScan 9990.00 cop[tikv] table:t1, index:idx_t1_b(b) keep order:false, stats:pseudo +└─TableReader(Probe) 9980.01 root data:Selection + └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__index__index.t2.b)) + └─TableRangeScan 9990.00 cop[tikv] table:t2 range: decided by [planner__core__casetest__index__index.t1.a], keep order:false, stats:pseudo +desc format = 'brief' select /*+ TIDB_INLJ(t2)*/ * from t1, t2 where t1.a = t2.a and t1.b = t2.a and t1.b = t2.b; +id estRows task access object operator info +IndexJoin 12487.50 root inner join, inner:TableReader, outer key:planner__core__casetest__index__index.t1.a, planner__core__casetest__index__index.t1.b, inner key:planner__core__casetest__index__index.t2.a, planner__core__casetest__index__index.t2.a, equal cond:eq(planner__core__casetest__index__index.t1.a, planner__core__casetest__index__index.t2.a), eq(planner__core__casetest__index__index.t1.b, planner__core__casetest__index__index.t2.a), eq(planner__core__casetest__index__index.t1.b, planner__core__casetest__index__index.t2.b) +├─IndexReader(Build) 9990.00 root index:IndexFullScan +│ └─IndexFullScan 9990.00 cop[tikv] table:t1, index:idx_t1_b(b) keep order:false, stats:pseudo +└─TableReader(Probe) 9980.01 root data:Selection + └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__index__index.t2.b)) + └─TableRangeScan 9990.00 cop[tikv] table:t2 range: decided by [planner__core__casetest__index__index.t1.a planner__core__casetest__index__index.t1.b], keep order:false, stats:pseudo +desc format = 'brief' select /*+ INL_JOIN(t4) */ * from t3 join t4 on t3.a = t4.a where t4.b = 1; +id estRows task access object operator info +Projection 12.50 root planner__core__casetest__index__index.t3.a, planner__core__casetest__index__index.t3.b, planner__core__casetest__index__index.t3.c, planner__core__casetest__index__index.t4.a, planner__core__casetest__index__index.t4.b, planner__core__casetest__index__index.t4.c +└─IndexJoin 12.50 root inner join, inner:TableReader, outer key:planner__core__casetest__index__index.t3.a, inner key:planner__core__casetest__index__index.t4.a, equal cond:eq(planner__core__casetest__index__index.t3.a, planner__core__casetest__index__index.t4.a) + ├─TableReader(Build) 9990.00 root data:Selection + │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__index__index.t3.a)) + │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo + └─TableReader(Probe) 9.99 root data:Selection + └─Selection 9.99 cop[tikv] eq(planner__core__casetest__index__index.t4.b, 1) + └─TableRangeScan 9990.00 cop[tikv] table:t4 range: decided by [eq(planner__core__casetest__index__index.t4.a, planner__core__casetest__index__index.t3.a) eq(planner__core__casetest__index__index.t4.b, 1)], keep order:false, stats:pseudo +desc format = 'brief' select /*+ INL_JOIN(t4) */ * from t3 join t4 on t3.b = t4.b where t4.a = 1; +id estRows task access object operator info +Projection 12.50 root planner__core__casetest__index__index.t3.a, planner__core__casetest__index__index.t3.b, planner__core__casetest__index__index.t3.c, planner__core__casetest__index__index.t4.a, planner__core__casetest__index__index.t4.b, planner__core__casetest__index__index.t4.c +└─IndexJoin 12.50 root inner join, inner:TableReader, outer key:planner__core__casetest__index__index.t3.b, inner key:planner__core__casetest__index__index.t4.b, equal cond:eq(planner__core__casetest__index__index.t3.b, planner__core__casetest__index__index.t4.b) + ├─TableReader(Build) 9990.00 root data:Selection + │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__index__index.t3.b)) + │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo + └─TableReader(Probe) 9.99 root data:Selection + └─Selection 9.99 cop[tikv] eq(planner__core__casetest__index__index.t4.a, 1) + └─TableRangeScan 9990.00 cop[tikv] table:t4 range: decided by [eq(planner__core__casetest__index__index.t4.b, planner__core__casetest__index__index.t3.b) eq(planner__core__casetest__index__index.t4.a, 1)], keep order:false, stats:pseudo +set tidb_cost_model_version=2; +drop table if exists t1, t2; +create table t1(a int not null, b int not null, c int not null); +create table t2(a int not null, b int not null, c int not null, index idx1(a,b), index idx2(c)); +insert into t1 values(1,1,1),(1,1,1),(1,1,1); +insert into t2 values(1,1,1),(1,1,2),(1,1,3); +analyze table t1, t2; +explain format = 'brief' select /*+ inl_join(t2) */ * from t1, t2 where t1.a = t2.a and t1.b = t2.b and t1.c = t2.c; +id estRows task access object operator info +IndexJoin 3.00 root inner join, inner:IndexLookUp, outer key:planner__core__casetest__index__index.t1.c, inner key:planner__core__casetest__index__index.t2.c, equal cond:eq(planner__core__casetest__index__index.t1.a, planner__core__casetest__index__index.t2.a), eq(planner__core__casetest__index__index.t1.b, planner__core__casetest__index__index.t2.b), eq(planner__core__casetest__index__index.t1.c, planner__core__casetest__index__index.t2.c) +├─TableReader(Build) 3.00 root data:TableFullScan +│ └─TableFullScan 3.00 cop[tikv] table:t1 keep order:false +└─IndexLookUp(Probe) 3.00 root + ├─IndexRangeScan(Build) 3.00 cop[tikv] table:t2, index:idx2(c) range: decided by [eq(planner__core__casetest__index__index.t2.c, planner__core__casetest__index__index.t1.c)], keep order:false + └─TableRowIDScan(Probe) 3.00 cop[tikv] table:t2 keep order:false +set tidb_cost_model_version=default; +drop table if exists t; +create table t (a int, b int, unique key(a), unique key(b)); +insert into t value (1, 5), (2, 4), (3, 3), (4, 2), (5, 1); +insert into t value (6, 0), (7, -1), (8, -2), (9, -3), (10, -4); +analyze table t; +desc format='brief' select /*+ use_index_merge(t) */ * from t where a =1 or (b=1 and b+2>1); +id estRows task access object operator info +IndexMerge 8.00 root type: union +├─IndexRangeScan(Build) 1.00 cop[tikv] table:t, index:a(a) range:[1,1], keep order:false +├─Selection(Build) 1.00 cop[tikv] 1 +│ └─IndexRangeScan 1.00 cop[tikv] table:t, index:b(b) range:[1,1], keep order:false +└─TableRowIDScan(Probe) 8.00 cop[tikv] table:t keep order:false +show warnings; +Level Code Message +desc format='brief' select /*+ use_index_merge(t) */ * from t where a =1 or (b=1 and length(b)=1); +id estRows task access object operator info +IndexMerge 8.00 root type: union +├─IndexRangeScan(Build) 1.00 cop[tikv] table:t, index:a(a) range:[1,1], keep order:false +├─Selection(Build) 1.00 cop[tikv] 1 +│ └─IndexRangeScan 1.00 cop[tikv] table:t, index:b(b) range:[1,1], keep order:false +└─TableRowIDScan(Probe) 8.00 cop[tikv] table:t keep order:false +show warnings; +Level Code Message +desc format='brief' select /*+ use_index_merge(t) */ * from t where (a=1 and length(a)=1) or (b=1 and length(b)=1); +id estRows task access object operator info +IndexMerge 8.00 root type: union +├─Selection(Build) 1.00 cop[tikv] 1 +│ └─IndexRangeScan 1.00 cop[tikv] table:t, index:a(a) range:[1,1], keep order:false +├─Selection(Build) 1.00 cop[tikv] 1 +│ └─IndexRangeScan 1.00 cop[tikv] table:t, index:b(b) range:[1,1], keep order:false +└─TableRowIDScan(Probe) 8.00 cop[tikv] table:t keep order:false +show warnings; +Level Code Message +desc format='brief' select /*+ use_index_merge(t) */ * from t where (a=1 and length(b)=1) or (b=1 and length(a)=1); +id estRows task access object operator info +IndexMerge 0.29 root type: union +├─IndexRangeScan(Build) 1.00 cop[tikv] table:t, index:a(a) range:[1,1], keep order:false +├─IndexRangeScan(Build) 1.00 cop[tikv] table:t, index:b(b) range:[1,1], keep order:false +└─Selection(Probe) 0.29 cop[tikv] or(and(eq(planner__core__casetest__index__index.t.a, 1), eq(length(cast(planner__core__casetest__index__index.t.b, var_string(20))), 1)), and(eq(planner__core__casetest__index__index.t.b, 1), eq(length(cast(planner__core__casetest__index__index.t.a, var_string(20))), 1))) + └─TableRowIDScan 1.90 cop[tikv] table:t keep order:false +show warnings; +Level Code Message +set tidb_cost_model_version=2; +set tidb_enable_clustered_index=on; +drop table if exists t; +create table t (a int, b varchar(20), c decimal(40,10), d int, primary key(a,b), key(c)); +insert into t values (1,"111",1.1,11), (2,"222",2.2,12), (3,"333",3.3,13); +analyze table t; +explain format = 'brief'select /*+ inl_join(t1, t2) */ * from t t1 join t t2 on t1.a = t2.a; +id estRows task access object operator info +IndexJoin 3.00 root inner join, inner:TableReader, outer key:planner__core__casetest__index__index.t.a, inner key:planner__core__casetest__index__index.t.a, equal cond:eq(planner__core__casetest__index__index.t.a, planner__core__casetest__index__index.t.a) +├─TableReader(Build) 3.00 root data:TableFullScan +│ └─TableFullScan 3.00 cop[tikv] table:t1 keep order:false +└─TableReader(Probe) 3.00 root data:TableRangeScan + └─TableRangeScan 3.00 cop[tikv] table:t2 range: decided by [eq(planner__core__casetest__index__index.t.a, planner__core__casetest__index__index.t.a)], keep order:false +select /*+ inl_join(t1, t2) */ * from t t1 join t t2 on t1.a = t2.a; +a b c d a b c d +1 111 1.1000000000 11 1 111 1.1000000000 11 +2 222 2.2000000000 12 2 222 2.2000000000 12 +3 333 3.3000000000 13 3 333 3.3000000000 13 +explain format = 'brief'select /*+ inl_merge_join(t1, t2) */ * from t t1 join t t2 on t1.a = t2.a; +id estRows task access object operator info +IndexMergeJoin 3.00 root inner join, inner:TableReader, outer key:planner__core__casetest__index__index.t.a, inner key:planner__core__casetest__index__index.t.a +├─TableReader(Build) 3.00 root data:TableFullScan +│ └─TableFullScan 3.00 cop[tikv] table:t1 keep order:false +└─TableReader(Probe) 3.00 root data:TableRangeScan + └─TableRangeScan 3.00 cop[tikv] table:t2 range: decided by [eq(planner__core__casetest__index__index.t.a, planner__core__casetest__index__index.t.a)], keep order:true +select /*+ inl_merge_join(t1, t2) */ * from t t1 join t t2 on t1.a = t2.a; +a b c d a b c d +1 111 1.1000000000 11 1 111 1.1000000000 11 +2 222 2.2000000000 12 2 222 2.2000000000 12 +3 333 3.3000000000 13 3 333 3.3000000000 13 +explain format = 'brief'select /*+ inl_hash_join(t1, t2) */ * from t t1 join t t2 on t1.a = t2.a; +id estRows task access object operator info +IndexHashJoin 3.00 root inner join, inner:TableReader, outer key:planner__core__casetest__index__index.t.a, inner key:planner__core__casetest__index__index.t.a, equal cond:eq(planner__core__casetest__index__index.t.a, planner__core__casetest__index__index.t.a) +├─TableReader(Build) 3.00 root data:TableFullScan +│ └─TableFullScan 3.00 cop[tikv] table:t1 keep order:false +└─TableReader(Probe) 3.00 root data:TableRangeScan + └─TableRangeScan 3.00 cop[tikv] table:t2 range: decided by [eq(planner__core__casetest__index__index.t.a, planner__core__casetest__index__index.t.a)], keep order:false +select /*+ inl_hash_join(t1, t2) */ * from t t1 join t t2 on t1.a = t2.a; +a b c d a b c d +1 111 1.1000000000 11 1 111 1.1000000000 11 +2 222 2.2000000000 12 2 222 2.2000000000 12 +3 333 3.3000000000 13 3 333 3.3000000000 13 +explain format = 'brief'select /*+ inl_join(t1, t2) */ * from t t1 join t t2 on t1.a = t2.a and t1.b = t2.b; +id estRows task access object operator info +IndexJoin 3.00 root inner join, inner:TableReader, outer key:planner__core__casetest__index__index.t.a, planner__core__casetest__index__index.t.b, inner key:planner__core__casetest__index__index.t.a, planner__core__casetest__index__index.t.b, equal cond:eq(planner__core__casetest__index__index.t.a, planner__core__casetest__index__index.t.a), eq(planner__core__casetest__index__index.t.b, planner__core__casetest__index__index.t.b) +├─TableReader(Build) 3.00 root data:TableFullScan +│ └─TableFullScan 3.00 cop[tikv] table:t1 keep order:false +└─TableReader(Probe) 3.00 root data:TableRangeScan + └─TableRangeScan 3.00 cop[tikv] table:t2 range: decided by [eq(planner__core__casetest__index__index.t.a, planner__core__casetest__index__index.t.a) eq(planner__core__casetest__index__index.t.b, planner__core__casetest__index__index.t.b)], keep order:false +select /*+ inl_join(t1, t2) */ * from t t1 join t t2 on t1.a = t2.a and t1.b = t2.b; +a b c d a b c d +1 111 1.1000000000 11 1 111 1.1000000000 11 +2 222 2.2000000000 12 2 222 2.2000000000 12 +3 333 3.3000000000 13 3 333 3.3000000000 13 +explain format = 'brief'select /*+ inl_join(t1, t2) */ * from t t1 join t t2 on t1.c = t2.c; +id estRows task access object operator info +IndexJoin 3.00 root inner join, inner:IndexLookUp, outer key:planner__core__casetest__index__index.t.c, inner key:planner__core__casetest__index__index.t.c, equal cond:eq(planner__core__casetest__index__index.t.c, planner__core__casetest__index__index.t.c) +├─TableReader(Build) 3.00 root data:Selection +│ └─Selection 3.00 cop[tikv] not(isnull(planner__core__casetest__index__index.t.c)) +│ └─TableFullScan 3.00 cop[tikv] table:t1 keep order:false +└─IndexLookUp(Probe) 3.00 root + ├─Selection(Build) 3.00 cop[tikv] not(isnull(planner__core__casetest__index__index.t.c)) + │ └─IndexRangeScan 3.00 cop[tikv] table:t2, index:c(c) range: decided by [eq(planner__core__casetest__index__index.t.c, planner__core__casetest__index__index.t.c)], keep order:false + └─TableRowIDScan(Probe) 3.00 cop[tikv] table:t2 keep order:false +select /*+ inl_join(t1, t2) */ * from t t1 join t t2 on t1.c = t2.c; +a b c d a b c d +1 111 1.1000000000 11 1 111 1.1000000000 11 +2 222 2.2000000000 12 2 222 2.2000000000 12 +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 +IndexMergeJoin 3.00 root left outer join, inner:Projection, outer key:Column#9, inner key: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 +└─Projection(Probe) 3.00 root planner__core__casetest__index__index.t.a, planner__core__casetest__index__index.t.c, planner__core__casetest__index__index.t.d + └─IndexLookUp 3.00 root + ├─IndexRangeScan(Build) 3.00 cop[tikv] table:t2, index:c(c) range: decided by [eq(planner__core__casetest__index__index.t.c, Column#9)], keep order:true + └─TableRowIDScan(Probe) 3.00 cop[tikv] table:t2 keep order:false +select /*+ inl_merge_join(t1,t2) */ t2.a, t2.c, t2.d from t t1 left join t t2 on t1.a = t2.c; +a c d +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +set tidb_enable_clustered_index=default; +set tidb_cost_model_version=default; +set tidb_cost_model_version=2; +drop table if exists t1, t2; +create table t1(c1 int, c2 int, c3 int, primary key(c1), key(c2)); +insert into t1 values(1, 1, 1); +insert into t1 values(2, 2, 2); +create table t2(c1 int, c2 int, c3 int); +insert into t2 values(1, 1, 1); +insert into t2 values(2, 2, 2); +drop table if exists tt1, tt2; +create table tt1 (c_int int, c_str varchar(40), c_datetime datetime, c_decimal decimal(12, 6), primary key(c_int), key(c_int), key(c_str), unique key(c_decimal), key(c_datetime)); +create table tt2 like tt1 ; +insert into tt1 (c_int, c_str, c_datetime, c_decimal) values (6, 'sharp payne', '2020-06-07 10:40:39', 6.117000) , +(7, 'objective kare', '2020-02-05 18:47:26', 1.053000) , +(8, 'thirsty pasteur', '2020-01-02 13:06:56', 2.506000) , +(9, 'blissful wilbur', '2020-06-04 11:34:04', 9.144000) , +(10, 'reverent mclean', '2020-02-12 07:36:26', 7.751000) ; +insert into tt2 (c_int, c_str, c_datetime, c_decimal) values (6, 'beautiful joliot', '2020-01-16 01:44:37', 5.627000) , +(7, 'hopeful blackburn', '2020-05-23 21:44:20', 7.890000) , +(8, 'ecstatic davinci', '2020-02-01 12:27:17', 5.648000) , +(9, 'hopeful lewin', '2020-05-05 05:58:25', 7.288000) , +(10, 'sharp jennings', '2020-01-28 04:35:03', 9.758000) ; +explain format=brief select * from t2 where c1 < all(select /*+ use_index_merge(t1) */ c1 from t1 where (c1 = 10 and c1 = t2.c3 or c2 = 1 and c2 = t2.c3) and substring(c3, 10)) order by c1; +id estRows task access object operator info +Sort 10000.00 root planner__core__casetest__index__index.t2.c1 +└─Projection 10000.00 root planner__core__casetest__index__index.t2.c1, planner__core__casetest__index__index.t2.c2, planner__core__casetest__index__index.t2.c3 + └─Apply 10000.00 root CARTESIAN inner join, other cond:or(and(lt(planner__core__casetest__index__index.t2.c1, Column#8), if(ne(Column#9, 0), NULL, 1)), or(eq(Column#10, 0), if(isnull(planner__core__casetest__index__index.t2.c1), NULL, 0))) + ├─TableReader(Build) 10000.00 root data:TableFullScan + │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo + └─StreamAgg(Probe) 10000.00 root funcs:min(planner__core__casetest__index__index.t1.c1)->Column#8, funcs:sum(0)->Column#9, funcs:count(1)->Column#10 + └─IndexMerge 63.35 root type: union + ├─Selection(Build) 10000.00 cop[tikv] eq(10, planner__core__casetest__index__index.t2.c3) + │ └─TableRangeScan 10000.00 cop[tikv] table:t1 range:[10,10], keep order:false, stats:pseudo + ├─Selection(Build) 80000.00 cop[tikv] eq(1, planner__core__casetest__index__index.t2.c3) + │ └─IndexRangeScan 100000.00 cop[tikv] table:t1, index:c2(c2) range:[1,1], keep order:false, stats:pseudo + └─Selection(Probe) 63.35 cop[tikv] or(and(eq(planner__core__casetest__index__index.t1.c1, 10), eq(10, planner__core__casetest__index__index.t2.c3)), and(eq(planner__core__casetest__index__index.t1.c2, 1), eq(1, planner__core__casetest__index__index.t2.c3))), substring(cast(planner__core__casetest__index__index.t1.c3, var_string(20)), 10) + └─TableRowIDScan 89992.00 cop[tikv] table:t1 keep order:false, stats:pseudo +select * from t2 where c1 < all(select /*+ use_index_merge(t1) */ c1 from t1 where (c1 = 10 and c1 = t2.c3 or c2 = 1 and c2 = t2.c3) and substring(c3, 10)) order by c1; +c1 c2 c3 +1 1 1 +2 2 2 +explain format=brief select * from t2 where c1 < all(select /*+ use_index_merge(t1) */ c1 from t1 where (c1 = 10 and c1 = t2.c3 or c2 = 1 and c2 = t2.c3) and reverse(c3)) order by c1; +id estRows task access object operator info +Sort 10000.00 root planner__core__casetest__index__index.t2.c1 +└─Projection 10000.00 root planner__core__casetest__index__index.t2.c1, planner__core__casetest__index__index.t2.c2, planner__core__casetest__index__index.t2.c3 + └─Apply 10000.00 root CARTESIAN inner join, other cond:or(and(lt(planner__core__casetest__index__index.t2.c1, Column#8), if(ne(Column#9, 0), NULL, 1)), or(eq(Column#10, 0), if(isnull(planner__core__casetest__index__index.t2.c1), NULL, 0))) + ├─TableReader(Build) 10000.00 root data:TableFullScan + │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo + └─StreamAgg(Probe) 10000.00 root funcs:min(planner__core__casetest__index__index.t1.c1)->Column#8, funcs:sum(0)->Column#9, funcs:count(1)->Column#10 + └─IndexMerge 63.35 root type: union + ├─Selection(Build) 10000.00 cop[tikv] eq(10, planner__core__casetest__index__index.t2.c3) + │ └─TableRangeScan 10000.00 cop[tikv] table:t1 range:[10,10], keep order:false, stats:pseudo + ├─Selection(Build) 80000.00 cop[tikv] eq(1, planner__core__casetest__index__index.t2.c3) + │ └─IndexRangeScan 100000.00 cop[tikv] table:t1, index:c2(c2) range:[1,1], keep order:false, stats:pseudo + └─Selection(Probe) 63.35 cop[tikv] or(and(eq(planner__core__casetest__index__index.t1.c1, 10), eq(10, planner__core__casetest__index__index.t2.c3)), and(eq(planner__core__casetest__index__index.t1.c2, 1), eq(1, planner__core__casetest__index__index.t2.c3))), reverse(cast(planner__core__casetest__index__index.t1.c3, var_string(20))) + └─TableRowIDScan 89992.00 cop[tikv] table:t1 keep order:false, stats:pseudo +select * from t2 where c1 < all(select /*+ use_index_merge(t1) */ c1 from t1 where (c1 = 10 and c1 = t2.c3 or c2 = 1 and c2 = t2.c3) and reverse(c3)) order by c1; +c1 c2 c3 +2 2 2 +explain format=brief select * from t2 where c1 < all(select /*+ use_index_merge(t1) */ c1 from t1 where (c1 >= 10 and c1 = t2.c3 or c2 = 1 and c2 = t2.c3) and substring(c3, 10)) order by c1; +id estRows task access object operator info +Sort 10000.00 root planner__core__casetest__index__index.t2.c1 +└─Projection 10000.00 root planner__core__casetest__index__index.t2.c1, planner__core__casetest__index__index.t2.c2, planner__core__casetest__index__index.t2.c3 + └─Apply 10000.00 root CARTESIAN inner join, other cond:or(and(lt(planner__core__casetest__index__index.t2.c1, Column#8), if(ne(Column#9, 0), NULL, 1)), or(eq(Column#10, 0), if(isnull(planner__core__casetest__index__index.t2.c1), NULL, 0))) + ├─TableReader(Build) 10000.00 root data:TableFullScan + │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo + └─StreamAgg(Probe) 10000.00 root funcs:min(planner__core__casetest__index__index.t1.c1)->Column#8, funcs:sum(0)->Column#9, funcs:count(1)->Column#10 + └─IndexMerge 30263.46 root type: union + ├─Selection(Build) 33333.33 cop[tikv] eq(planner__core__casetest__index__index.t1.c1, planner__core__casetest__index__index.t2.c3) + │ └─TableRangeScan 33333333.33 cop[tikv] table:t1 range:[10,+inf], keep order:false, stats:pseudo + ├─Selection(Build) 80000.00 cop[tikv] eq(1, planner__core__casetest__index__index.t2.c3) + │ └─IndexRangeScan 100000.00 cop[tikv] table:t1, index:c2(c2) range:[1,1], keep order:false, stats:pseudo + └─Selection(Probe) 30263.46 cop[tikv] or(and(ge(planner__core__casetest__index__index.t1.c1, 10), eq(planner__core__casetest__index__index.t1.c1, planner__core__casetest__index__index.t2.c3)), and(eq(planner__core__casetest__index__index.t1.c2, 1), eq(1, planner__core__casetest__index__index.t2.c3))), substring(cast(planner__core__casetest__index__index.t1.c3, var_string(20)), 10) + └─TableRowIDScan 33386666.67 cop[tikv] table:t1 keep order:false, stats:pseudo +select * from t2 where c1 < all(select /*+ use_index_merge(t1) */ c1 from t1 where (c1 >= 10 and c1 = t2.c3 or c2 = 1 and c2 = t2.c3) and substring(c3, 10)) order by c1; +c1 c2 c3 +1 1 1 +2 2 2 +explain format=brief select c_int from tt1 where c_decimal < all (select /*+ use_index_merge(tt2) */ c_decimal from tt2 where tt1.c_int = tt2.c_int and tt1.c_datetime > tt2.c_datetime and tt2.c_decimal = 9.060 or tt2.c_str <= 'interesting shtern' and tt1.c_int = tt2.c_int) order by 1; +id estRows task access object operator info +Projection 10000.00 root planner__core__casetest__index__index.tt1.c_int +└─Apply 10000.00 root CARTESIAN inner join, other cond:or(and(lt(planner__core__casetest__index__index.tt1.c_decimal, Column#9), if(ne(Column#10, 0), NULL, 1)), or(eq(Column#11, 0), if(isnull(planner__core__casetest__index__index.tt1.c_decimal), NULL, 0))) + ├─TableReader(Build) 10000.00 root data:TableFullScan + │ └─TableFullScan 10000.00 cop[tikv] table:tt1 keep order:true, stats:pseudo + └─StreamAgg(Probe) 10000.00 root funcs:min(Column#14)->Column#9, funcs:sum(Column#15)->Column#10, funcs:count(1)->Column#11 + └─Projection 11.05 root planner__core__casetest__index__index.tt2.c_decimal->Column#14, cast(isnull(planner__core__casetest__index__index.tt2.c_decimal), decimal(20,0) BINARY)->Column#15 + └─IndexMerge 11.05 root type: union + ├─Selection(Build) 10.00 cop[tikv] eq(planner__core__casetest__index__index.tt1.c_int, planner__core__casetest__index__index.tt2.c_int) + │ └─IndexRangeScan 10000.00 cop[tikv] table:tt2, index:c_decimal(c_decimal) range:[9.060000,9.060000], keep order:false, stats:pseudo + ├─Selection(Build) 33233.33 cop[tikv] eq(planner__core__casetest__index__index.tt1.c_int, planner__core__casetest__index__index.tt2.c_int) + │ └─IndexRangeScan 33233333.33 cop[tikv] table:tt2, index:c_str(c_str) range:[-inf,"interesting shtern"], keep order:false, stats:pseudo + └─Selection(Probe) 11.05 cop[tikv] or(and(eq(planner__core__casetest__index__index.tt1.c_int, planner__core__casetest__index__index.tt2.c_int), and(gt(planner__core__casetest__index__index.tt1.c_datetime, planner__core__casetest__index__index.tt2.c_datetime), eq(planner__core__casetest__index__index.tt2.c_decimal, 9.060))), and(le(planner__core__casetest__index__index.tt2.c_str, "interesting shtern"), eq(planner__core__casetest__index__index.tt1.c_int, planner__core__casetest__index__index.tt2.c_int))) + └─TableRowIDScan 33243.33 cop[tikv] table:tt2 keep order:false, stats:pseudo +select c_int from tt1 where c_decimal < all (select /*+ use_index_merge(tt2) */ c_decimal from tt2 where tt1.c_int = tt2.c_int and tt1.c_datetime > tt2.c_datetime and tt2.c_decimal = 9.060 or tt2.c_str <= 'interesting shtern' and tt1.c_int = tt2.c_int) order by 1; +c_int +7 +8 +10 +explain format=brief select c_int from tt1 where c_decimal > all (select /*+ use_index_merge(tt2) */ c_decimal from tt2 where tt2.c_int = 7 and tt2.c_int < tt1.c_decimal or tt2.c_str >= 'zzzzzzzzzzzzzzzzzzz' and tt1.c_int = tt2.c_int) order by 1; +id estRows task access object operator info +Projection 10000.00 root planner__core__casetest__index__index.tt1.c_int +└─Apply 10000.00 root CARTESIAN inner join, other cond:or(and(gt(planner__core__casetest__index__index.tt1.c_decimal, Column#9), if(ne(Column#10, 0), NULL, 1)), or(eq(Column#11, 0), if(isnull(planner__core__casetest__index__index.tt1.c_decimal), NULL, 0))) + ├─TableReader(Build) 10000.00 root data:TableFullScan + │ └─TableFullScan 10000.00 cop[tikv] table:tt1 keep order:true, stats:pseudo + └─StreamAgg(Probe) 10000.00 root funcs:max(Column#14)->Column#9, funcs:sum(Column#15)->Column#10, funcs:count(1)->Column#11 + └─Projection 17.91 root planner__core__casetest__index__index.tt2.c_decimal->Column#14, cast(isnull(planner__core__casetest__index__index.tt2.c_decimal), decimal(20,0) BINARY)->Column#15 + └─IndexMerge 17.91 root type: union + ├─Selection(Build) 10000.00 cop[tikv] lt(7, planner__core__casetest__index__index.tt1.c_decimal) + │ └─TableRangeScan 10000.00 cop[tikv] table:tt2 range:[7,7], keep order:false, stats:pseudo + ├─Selection(Build) 33333.33 cop[tikv] eq(planner__core__casetest__index__index.tt1.c_int, planner__core__casetest__index__index.tt2.c_int) + │ └─IndexRangeScan 33333333.33 cop[tikv] table:tt2, index:c_str(c_str) range:["zzzzzzzzzzzzzzzzzzz",+inf], keep order:false, stats:pseudo + └─Selection(Probe) 17.91 cop[tikv] or(and(eq(planner__core__casetest__index__index.tt2.c_int, 7), lt(7, planner__core__casetest__index__index.tt1.c_decimal)), and(ge(planner__core__casetest__index__index.tt2.c_str, "zzzzzzzzzzzzzzzzzzz"), eq(planner__core__casetest__index__index.tt1.c_int, planner__core__casetest__index__index.tt2.c_int))) + └─TableRowIDScan 43330.00 cop[tikv] table:tt2 keep order:false, stats:pseudo +select c_int from tt1 where c_decimal > all (select /*+ use_index_merge(tt2) */ c_decimal from tt2 where tt2.c_int = 7 and tt2.c_int < tt1.c_decimal or tt2.c_str >= 'zzzzzzzzzzzzzzzzzzz' and tt1.c_int = tt2.c_int) order by 1; +c_int +6 +7 +8 +9 +set tidb_cost_model_version=default; +drop table if exists t1, t2; +create table t1(a int, b int, c varchar(10), d varchar(10), index idx_a_b_c_d(a, b, c(2), d(2))); +create table t2(e int, f int, g varchar(10), h varchar(10)); +set @@tidb_opt_range_max_size = 0; +explain format='brief' select /*+ inl_join(t1) */ * from t1 join t2 on t1.b = t2.e and t1.d = t2.g where t1.a in (1, 3) and t1.c in ('aaa', 'bbb'); +id estRows task access object operator info +IndexJoin 0.50 root inner join, inner:IndexLookUp, outer key:planner__core__casetest__index__index.t2.e, planner__core__casetest__index__index.t2.g, inner key:planner__core__casetest__index__index.t1.b, planner__core__casetest__index__index.t1.d, equal cond:eq(planner__core__casetest__index__index.t2.e, planner__core__casetest__index__index.t1.b), eq(planner__core__casetest__index__index.t2.g, planner__core__casetest__index__index.t1.d) +├─TableReader(Build) 9980.01 root data:Selection +│ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__index__index.t2.e)), not(isnull(planner__core__casetest__index__index.t2.g)) +│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +└─IndexLookUp(Probe) 0.50 root + ├─Selection(Build) 249.50 cop[tikv] not(isnull(planner__core__casetest__index__index.t1.b)), not(isnull(planner__core__casetest__index__index.t1.d)) + │ └─IndexRangeScan 250.00 cop[tikv] table:t1, index:idx_a_b_c_d(a, b, c, d) range: decided by [eq(planner__core__casetest__index__index.t1.b, planner__core__casetest__index__index.t2.e) eq(planner__core__casetest__index__index.t1.d, planner__core__casetest__index__index.t2.g) in(planner__core__casetest__index__index.t1.a, 1, 3) in(planner__core__casetest__index__index.t1.c, aaa, bbb)], keep order:false, stats:pseudo + └─Selection(Probe) 0.50 cop[tikv] in(planner__core__casetest__index__index.t1.c, "aaa", "bbb") + └─TableRowIDScan 249.50 cop[tikv] table:t1 keep order:false, stats:pseudo +show warnings; +Level Code Message +set @@tidb_opt_range_max_size = 2900; +explain format='brief' select /*+ inl_join(t1) */ * from t1 join t2 on t1.b = t2.e and t1.d = t2.g where t1.a in (1, 3) and t1.c in ('aaa', 'bbb'); +id estRows task access object operator info +IndexJoin 0.50 root inner join, inner:IndexLookUp, outer key:planner__core__casetest__index__index.t2.e, inner key:planner__core__casetest__index__index.t1.b, equal cond:eq(planner__core__casetest__index__index.t2.e, planner__core__casetest__index__index.t1.b), eq(planner__core__casetest__index__index.t2.g, planner__core__casetest__index__index.t1.d) +├─TableReader(Build) 9980.01 root data:Selection +│ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__index__index.t2.e)), not(isnull(planner__core__casetest__index__index.t2.g)) +│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +└─IndexLookUp(Probe) 0.50 root + ├─Selection(Build) 249.50 cop[tikv] not(isnull(planner__core__casetest__index__index.t1.b)), not(isnull(planner__core__casetest__index__index.t1.d)) + │ └─IndexRangeScan 250.00 cop[tikv] table:t1, index:idx_a_b_c_d(a, b, c, d) range: decided by [eq(planner__core__casetest__index__index.t1.b, planner__core__casetest__index__index.t2.e) in(planner__core__casetest__index__index.t1.a, 1, 3) in(planner__core__casetest__index__index.t1.c, aaa, bbb)], keep order:false, stats:pseudo + └─Selection(Probe) 0.50 cop[tikv] in(planner__core__casetest__index__index.t1.c, "aaa", "bbb") + └─TableRowIDScan 249.50 cop[tikv] table:t1 keep order:false, stats:pseudo +show warnings; +Level Code Message +Warning 1105 Memory capacity of 2900 bytes for 'tidb_opt_range_max_size' exceeded when building ranges. Less accurate ranges such as full range are chosen +set @@tidb_opt_range_max_size = 2300; +explain format='brief' select /*+ inl_join(t1) */ * from t1 join t2 on t1.b = t2.e and t1.d = t2.g where t1.a in (1, 3) and t1.c in ('aaa', 'bbb'); +id estRows task access object operator info +IndexJoin 0.50 root inner join, inner:IndexLookUp, outer key:planner__core__casetest__index__index.t2.e, inner key:planner__core__casetest__index__index.t1.b, equal cond:eq(planner__core__casetest__index__index.t2.e, planner__core__casetest__index__index.t1.b), eq(planner__core__casetest__index__index.t2.g, planner__core__casetest__index__index.t1.d) +├─TableReader(Build) 9980.01 root data:Selection +│ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__index__index.t2.e)), not(isnull(planner__core__casetest__index__index.t2.g)) +│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +└─IndexLookUp(Probe) 0.50 root + ├─Selection(Build) 249.50 cop[tikv] not(isnull(planner__core__casetest__index__index.t1.b)), not(isnull(planner__core__casetest__index__index.t1.d)) + │ └─IndexRangeScan 250.00 cop[tikv] table:t1, index:idx_a_b_c_d(a, b, c, d) range: decided by [eq(planner__core__casetest__index__index.t1.b, planner__core__casetest__index__index.t2.e) in(planner__core__casetest__index__index.t1.a, 1, 3)], keep order:false, stats:pseudo + └─Selection(Probe) 0.50 cop[tikv] in(planner__core__casetest__index__index.t1.c, "aaa", "bbb") + └─TableRowIDScan 249.50 cop[tikv] table:t1 keep order:false, stats:pseudo +show warnings; +Level Code Message +Warning 1105 Memory capacity of 2300 bytes for 'tidb_opt_range_max_size' exceeded when building ranges. Less accurate ranges such as full range are chosen +set @@tidb_opt_range_max_size = 700; +explain format='brief' select /*+ inl_join(t1) */ * from t1 join t2 on t1.b = t2.e and t1.d = t2.g where t1.a in (1, 3) and t1.c in ('aaa', 'bbb'); +id estRows task access object operator info +HashJoin 0.05 root inner join, equal:[eq(planner__core__casetest__index__index.t1.b, planner__core__casetest__index__index.t2.e) eq(planner__core__casetest__index__index.t1.d, planner__core__casetest__index__index.t2.g)] +├─IndexLookUp(Build) 0.04 root +│ ├─Selection(Build) 19.96 cop[tikv] not(isnull(planner__core__casetest__index__index.t1.b)), not(isnull(planner__core__casetest__index__index.t1.d)) +│ │ └─IndexRangeScan 20.00 cop[tikv] table:t1, index:idx_a_b_c_d(a, b, c, d) range:[1,1], [3,3], keep order:false, stats:pseudo +│ └─Selection(Probe) 0.04 cop[tikv] in(planner__core__casetest__index__index.t1.c, "aaa", "bbb") +│ └─TableRowIDScan 19.96 cop[tikv] table:t1 keep order:false, stats:pseudo +└─TableReader(Probe) 9980.01 root data:Selection + └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__index__index.t2.e)), not(isnull(planner__core__casetest__index__index.t2.g)) + └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +show warnings; +Level Code Message +Warning 1105 Memory capacity of 700 bytes for 'tidb_opt_range_max_size' exceeded when building ranges. Less accurate ranges such as full range are chosen +Warning 1815 Optimizer Hint /*+ INL_JOIN(t1) */ or /*+ TIDB_INLJ(t1) */ is inapplicable +set @@tidb_opt_range_max_size = 0; +explain format='brief' select /*+ inl_join(t1) */ * from t1 join t2 on t1.a = t2.e where t1.b > 1 and t1.b < 10; +id estRows task access object operator info +IndexJoin 312.19 root inner join, inner:IndexLookUp, outer key:planner__core__casetest__index__index.t2.e, inner key:planner__core__casetest__index__index.t1.a, equal cond:eq(planner__core__casetest__index__index.t2.e, planner__core__casetest__index__index.t1.a) +├─TableReader(Build) 9990.00 root data:Selection +│ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__index__index.t2.e)) +│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +└─IndexLookUp(Probe) 312.19 root + ├─Selection(Build) 312.19 cop[tikv] not(isnull(planner__core__casetest__index__index.t1.a)) + │ └─IndexRangeScan 312.50 cop[tikv] table:t1, index:idx_a_b_c_d(a, b, c, d) range: decided by [eq(planner__core__casetest__index__index.t1.a, planner__core__casetest__index__index.t2.e) gt(planner__core__casetest__index__index.t1.b, 1) lt(planner__core__casetest__index__index.t1.b, 10)], keep order:false, stats:pseudo + └─TableRowIDScan(Probe) 312.19 cop[tikv] table:t1 keep order:false, stats:pseudo +show warnings; +Level Code Message +set @@tidb_opt_range_max_size = 300; +explain format='brief' select /*+ inl_join(t1) */ * from t1 join t2 on t1.a = t2.e where t1.b > 1 and t1.b < 10; +id estRows task access object operator info +IndexJoin 312.19 root inner join, inner:IndexLookUp, outer key:planner__core__casetest__index__index.t2.e, inner key:planner__core__casetest__index__index.t1.a, equal cond:eq(planner__core__casetest__index__index.t2.e, planner__core__casetest__index__index.t1.a) +├─TableReader(Build) 9990.00 root data:Selection +│ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__index__index.t2.e)) +│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +└─IndexLookUp(Probe) 312.19 root + ├─Selection(Build) 312.19 cop[tikv] gt(planner__core__casetest__index__index.t1.b, 1), lt(planner__core__casetest__index__index.t1.b, 10), not(isnull(planner__core__casetest__index__index.t1.a)) + │ └─IndexRangeScan 12500.00 cop[tikv] table:t1, index:idx_a_b_c_d(a, b, c, d) range: decided by [eq(planner__core__casetest__index__index.t1.a, planner__core__casetest__index__index.t2.e)], keep order:false, stats:pseudo + └─TableRowIDScan(Probe) 312.19 cop[tikv] table:t1 keep order:false, stats:pseudo +show warnings; +Level Code Message +Warning 1105 Memory capacity of 300 bytes for 'tidb_opt_range_max_size' exceeded when building ranges. Less accurate ranges such as full range are chosen +set @@tidb_opt_range_max_size = 0; +explain format='brief' select /*+ inl_join(t1) */ * from t1 join t2 on t1.a = t2.e where t1.b > t2.f and t1.b < t2.f + 10; +id estRows task access object operator info +IndexJoin 12475.01 root inner join, inner:IndexLookUp, outer key:planner__core__casetest__index__index.t2.e, inner key:planner__core__casetest__index__index.t1.a, equal cond:eq(planner__core__casetest__index__index.t2.e, planner__core__casetest__index__index.t1.a), other cond:gt(planner__core__casetest__index__index.t1.b, planner__core__casetest__index__index.t2.f), lt(planner__core__casetest__index__index.t1.b, plus(planner__core__casetest__index__index.t2.f, 10)) +├─TableReader(Build) 9980.01 root data:Selection +│ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__index__index.t2.e)), not(isnull(planner__core__casetest__index__index.t2.f)) +│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +└─IndexLookUp(Probe) 12475.01 root + ├─Selection(Build) 12475.01 cop[tikv] not(isnull(planner__core__casetest__index__index.t1.a)), not(isnull(planner__core__casetest__index__index.t1.b)) + │ └─IndexRangeScan 12500.00 cop[tikv] table:t1, index:idx_a_b_c_d(a, b, c, d) range: decided by [eq(planner__core__casetest__index__index.t1.a, planner__core__casetest__index__index.t2.e) lt(planner__core__casetest__index__index.t1.b, plus(planner__core__casetest__index__index.t2.f, 10)) gt(planner__core__casetest__index__index.t1.b, planner__core__casetest__index__index.t2.f)], keep order:false, stats:pseudo + └─TableRowIDScan(Probe) 12475.01 cop[tikv] table:t1 keep order:false, stats:pseudo +show warnings; +Level Code Message +set @@tidb_opt_range_max_size = 300; +explain format='brief' select /*+ inl_join(t1) */ * from t1 join t2 on t1.a = t2.e where t1.b > t2.f and t1.b < t2.f + 10; +id estRows task access object operator info +IndexJoin 12475.01 root inner join, inner:IndexLookUp, outer key:planner__core__casetest__index__index.t2.e, inner key:planner__core__casetest__index__index.t1.a, equal cond:eq(planner__core__casetest__index__index.t2.e, planner__core__casetest__index__index.t1.a), other cond:gt(planner__core__casetest__index__index.t1.b, planner__core__casetest__index__index.t2.f), lt(planner__core__casetest__index__index.t1.b, plus(planner__core__casetest__index__index.t2.f, 10)) +├─TableReader(Build) 9980.01 root data:Selection +│ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__index__index.t2.e)), not(isnull(planner__core__casetest__index__index.t2.f)) +│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +└─IndexLookUp(Probe) 12475.01 root + ├─Selection(Build) 12475.01 cop[tikv] not(isnull(planner__core__casetest__index__index.t1.a)), not(isnull(planner__core__casetest__index__index.t1.b)) + │ └─IndexRangeScan 12500.00 cop[tikv] table:t1, index:idx_a_b_c_d(a, b, c, d) range: decided by [eq(planner__core__casetest__index__index.t1.a, planner__core__casetest__index__index.t2.e)], keep order:false, stats:pseudo + └─TableRowIDScan(Probe) 12475.01 cop[tikv] table:t1 keep order:false, stats:pseudo +show warnings; +Level Code Message +Warning 1105 Memory capacity of 300 bytes for 'tidb_opt_range_max_size' exceeded when building ranges. Less accurate ranges such as full range are chosen +set @@tidb_opt_range_max_size = default; +set tidb_cost_model_version=2; +drop table if exists t1, t2, t3, t4; +create table t1(a int, b int, c int, d int, e int, f int, g int, primary key (a), unique key c_d_e (c, d, e), unique key f (f), unique key f_g (f, g), key g (g)); +create table t2(a int, b int, c int, d int, unique index idx_a (a), unique index idx_b_c (b, c), unique index idx_b_c_a_d (b, c, a, d)); +create table t3(a bigint, b varchar(255), c bigint, primary key(a, b) clustered); +create table t4(a bigint, b varchar(255), c bigint, primary key(a, b) nonclustered); +set @@tidb_enable_chunk_rpc = on; +explain format = 'verbose' select * from t1 where a = 3 or a = 5; +id estRows estCost task access object operator info +Batch_Point_Get_5 2.00 887.04 root table:t1 handle:[3 5], keep order:false, desc:false +show warnings; +Level Code Message +Note 1105 handle of t1 is selected since the path only has point ranges +explain format = 'verbose' select f, g from t1 where f = 2 and g in (3, 4, 5); +id estRows estCost task access object operator info +Batch_Point_Get_5 3.00 380.16 root table:t1, index:f_g(f, g) keep order:false, desc:false +show warnings; +Level Code Message +Note 1105 unique index f_g of t1 is selected since the path only has point ranges with single scan +explain format = 'verbose' select * from t1 where c = 1 and (d = 2 or d = 3) and e in (4, 5); +id estRows estCost task access object operator info +Batch_Point_Get_5 4.00 1774.08 root table:t1, index:c_d_e(c, d, e) keep order:false, desc:false +show warnings; +Level Code Message +Note 1105 unique index c_d_e of t1 is selected since the path only has point ranges with double scan +explain format = 'verbose' select f, g from t1 where f = 2 and g > 3; +id estRows estCost task access object operator info +IndexReader_6 33.33 733.82 root index:IndexRangeScan_5 +└─IndexRangeScan_5 33.33 6783.33 cop[tikv] table:t1, index:f_g(f, g) range:(2 3,2 +inf], keep order:false, stats:pseudo +show warnings; +Level Code Message +Note 1105 unique index f_g of t1 is selected since the path only fetches limited number of rows with single scan +explain format = 'verbose' select a, b, c from t2 where a = 1 and b = 2 and c in (1, 2, 3, 4, 5); +id estRows estCost task access object operator info +Selection_6 0.01 289.88 root eq(planner__core__casetest__index__index.t2.b, 2), in(planner__core__casetest__index__index.t2.c, 1, 2, 3, 4, 5) +└─Point_Get_5 1.00 190.08 root table:t2, index:idx_a(a) +show warnings; +Level Code Message +Note 1105 unique index idx_a of t2 is selected since the path only has point ranges with double scan +explain format = 'verbose' select * from t3 where (a = 1 or a = 3) and b = 'xx'; +id estRows estCost task access object operator info +Batch_Point_Get_5 2.00 1449.36 root table:t3, clustered index:PRIMARY(a, b) keep order:false, desc:false +show warnings; +Level Code Message +Note 1105 handle of t3 is selected since the path only has point ranges +explain format = 'verbose' select * from t4 where (a = 1 or a = 3) and b = 'xx'; +id estRows estCost task access object operator info +Batch_Point_Get_5 2.00 1449.36 root table:t4, index:PRIMARY(a, b) keep order:false, desc:false +show warnings; +Level Code Message +Note 1105 unique index PRIMARY of t4 is selected since the path only has point ranges with double scan +explain format = 'verbose' select a, b from t3 where (a = 1 or a = 3) and b = 'xx'; +id estRows estCost task access object operator info +Batch_Point_Get_5 2.00 1322.64 root table:t3, clustered index:PRIMARY(a, b) keep order:false, desc:false +show warnings; +Level Code Message +Note 1105 handle of t3 is selected since the path only has point ranges +explain format = 'verbose' select a, b from t4 where (a = 1 or a = 3) and b = 'xx'; +id estRows estCost task access object operator info +Batch_Point_Get_5 2.00 1322.64 root table:t4, index:PRIMARY(a, b) keep order:false, desc:false +show warnings; +Level Code Message +Note 1105 unique index PRIMARY of t4 is selected since the path only has point ranges with single scan +explain format = 'verbose' update t1 set b = 2 where a = 4 or a = 6; +id estRows estCost task access object operator info +Update_4 N/A N/A root N/A +└─Batch_Point_Get_6 2.00 887.04 root table:t1 handle:[4 6], keep order:false, desc:false +show warnings; +Level Code Message +Note 1105 handle of t1 is selected since the path only has point ranges +explain format = 'verbose' delete from t1 where f = 2 and g in (3, 4); +id estRows estCost task access object operator info +Delete_4 N/A N/A root N/A +└─Selection_7 2.00 493.42 root in(planner__core__casetest__index__index.t1.g, 3, 4) + └─Point_Get_6 1.00 443.52 root table:t1, index:f(f) +show warnings; +Level Code Message +Note 1105 unique index f of t1 is selected since the path only has point ranges with double scan +explain format = 'verbose' insert into t3 select a, b, c from t1 where f = 2; +id estRows estCost task access object operator info +Insert_1 N/A N/A root N/A +└─Projection_6 1.00 253.74 root planner__core__casetest__index__index.t1.a, planner__core__casetest__index__index.t1.b, planner__core__casetest__index__index.t1.c + └─Point_Get_7 1.00 253.44 root table:t1, index:f(f) +show warnings; +Level Code Message +Note 1105 unique index f of t1 is selected since the path only has point ranges with double scan +explain format = 'verbose' replace into t3 select a, b, c from t1 where a = 3; +id estRows estCost task access object operator info +Insert_1 N/A N/A root N/A +└─Point_Get_7 1.00 190.08 root table:t1 handle:3 +show warnings; +Level Code Message +Note 1105 handle of t1 is selected since the path only has point ranges +set @@tidb_enable_chunk_rpc = default; +set tidb_cost_model_version=default; +set tidb_cost_model_version=2; +drop table if exists t; +create table t(a int, b int, c int, d int, index idx(a,b,c)); +desc format = 'brief' select * from t where a = 1 and b > 2 and b < 10 and d = 10 order by b,c limit 10; +id estRows task access object operator info +Limit 0.00 root offset:0, count:10 +└─Projection 0.00 root planner__core__casetest__index__index.t.a, planner__core__casetest__index__index.t.b, planner__core__casetest__index__index.t.c, planner__core__casetest__index__index.t.d + └─IndexLookUp 0.00 root + ├─IndexRangeScan(Build) 2.50 cop[tikv] table:t, index:idx(a, b, c) range:(1 2,1 10), keep order:true, stats:pseudo + └─Selection(Probe) 0.00 cop[tikv] eq(planner__core__casetest__index__index.t.d, 10) + └─TableRowIDScan 2.50 cop[tikv] table:t keep order:false, stats:pseudo +desc format = 'brief' select * from t where a = 1 and b > 2 and b < 10 and d = 10 order by b desc, c desc limit 10; +id estRows task access object operator info +Limit 0.00 root offset:0, count:10 +└─Projection 0.00 root planner__core__casetest__index__index.t.a, planner__core__casetest__index__index.t.b, planner__core__casetest__index__index.t.c, planner__core__casetest__index__index.t.d + └─IndexLookUp 0.00 root + ├─IndexRangeScan(Build) 2.50 cop[tikv] table:t, index:idx(a, b, c) range:(1 2,1 10), keep order:true, desc, stats:pseudo + └─Selection(Probe) 0.00 cop[tikv] eq(planner__core__casetest__index__index.t.d, 10) + └─TableRowIDScan 2.50 cop[tikv] table:t keep order:false, stats:pseudo +set tidb_cost_model_version=default; +set tidb_enable_clustered_index=on; +drop table if exists t1; +create table t1 (a int, b varchar(20), c decimal(40,10), d int, primary key(a,b), key(c)); +insert into t1 values (1,"111",1.1,11), (2,"222",2.2,12), (3,"333",3.3,13); +analyze table t1; +explain format='brief' select * from t1; +id estRows task access object operator info +TableReader 3.00 root data:TableFullScan +└─TableFullScan 3.00 cop[tikv] table:t1 keep order:false +select * from t1; +a b c d +1 111 1.1000000000 11 +2 222 2.2000000000 12 +3 333 3.3000000000 13 +explain format='brief' select * from t1 where t1.a >= 1 and t1.a < 4; +id estRows task access object operator info +TableReader 3.00 root data:TableRangeScan +└─TableRangeScan 3.00 cop[tikv] table:t1 range:[1,4), keep order:false +select * from t1 where t1.a >= 1 and t1.a < 4; +a b c d +1 111 1.1000000000 11 +2 222 2.2000000000 12 +3 333 3.3000000000 13 +explain format='brief' select * from t1 where t1.a = 1 and t1.b < "333"; +id estRows task access object operator info +TableReader 0.82 root data:TableRangeScan +└─TableRangeScan 0.82 cop[tikv] table:t1 range:[1 -inf,1 "333"), keep order:false +select * from t1 where t1.a = 1 and t1.b < "333"; +a b c d +1 111 1.1000000000 11 +explain format='brief' select t1.a, t1.b, t1.c from t1 where t1.c = 3.3; +id estRows task access object operator info +IndexReader 1.00 root index:IndexRangeScan +└─IndexRangeScan 1.00 cop[tikv] table:t1, index:c(c) range:[3.3000000000,3.3000000000], keep order:false +select t1.a, t1.b, t1.c from t1 where t1.c = 3.3; +a b c +3 333 3.3000000000 +explain format='brief' select t1.b, t1.c from t1 where t1.c = 2.2; +id estRows task access object operator info +IndexReader 1.00 root index:IndexRangeScan +└─IndexRangeScan 1.00 cop[tikv] table:t1, index:c(c) range:[2.2000000000,2.2000000000], keep order:false +select t1.b, t1.c from t1 where t1.c = 2.2; +b c +222 2.2000000000 +explain format='brief' select /*+ use_index(t1, c) */ * from t1; +id estRows task access object operator info +IndexLookUp 3.00 root +├─IndexFullScan(Build) 3.00 cop[tikv] table:t1, index:c(c) keep order:false +└─TableRowIDScan(Probe) 3.00 cop[tikv] table:t1 keep order:false +select /*+ use_index(t1, c) */ * from t1; +a b c d +1 111 1.1000000000 11 +2 222 2.2000000000 12 +3 333 3.3000000000 13 +explain format='brief' select * from t1 use index(c) where t1.c in (2.2, 3.3); +id estRows task access object operator info +IndexLookUp 2.00 root +├─IndexRangeScan(Build) 2.00 cop[tikv] table:t1, index:c(c) range:[2.2000000000,2.2000000000], [3.3000000000,3.3000000000], keep order:false +└─TableRowIDScan(Probe) 2.00 cop[tikv] table:t1 keep order:false +select * from t1 use index(c) where t1.c in (2.2, 3.3); +a b c d +2 222 2.2000000000 12 +3 333 3.3000000000 13 +explain format='brief' select * from t1 where t1.a = 1 order by b; +id estRows task access object operator info +TableReader 1.00 root data:TableRangeScan +└─TableRangeScan 1.00 cop[tikv] table:t1 range:[1,1], keep order:true +select * from t1 where t1.a = 1 order by b; +a b c d +1 111 1.1000000000 11 +explain format='brief' select * from t1 order by a, b limit 1; +id estRows task access object operator info +Limit 1.00 root offset:0, count:1 +└─TableReader 1.00 root data:Limit + └─Limit 1.00 cop[tikv] offset:0, count:1 + └─TableFullScan 1.00 cop[tikv] table:t1 keep order:true +select * from t1 order by a, b limit 1; +a b c d +1 111 1.1000000000 11 +explain format='brief' select /*+ use_index_merge(t1 primary, c) */ * from t1 where t1.a >= 1 or t1.c = 2.2; +id estRows task access object operator info +IndexMerge 3.00 root type: union +├─TableRangeScan(Build) 3.00 cop[tikv] table:t1 range:[1,+inf], keep order:false +├─IndexRangeScan(Build) 1.00 cop[tikv] table:t1, index:c(c) range:[2.2000000000,2.2000000000], keep order:false +└─TableRowIDScan(Probe) 3.00 cop[tikv] table:t1 keep order:false +select /*+ use_index_merge(t1 primary, c) */ * from t1 where t1.a >= 1 or t1.c = 2.2; +a b c d +1 111 1.1000000000 11 +2 222 2.2000000000 12 +3 333 3.3000000000 13 +explain format='brief' select /*+ use_index_merge(t1 primary, c) */ * from t1 where t1.a = 1 and t1.b = '111' or t1.c = 3.3; +id estRows task access object operator info +IndexMerge 1.67 root type: union +├─TableRangeScan(Build) 1.00 cop[tikv] table:t1 range:[1 "111",1 "111"], keep order:false +├─IndexRangeScan(Build) 1.00 cop[tikv] table:t1, index:c(c) range:[3.3000000000,3.3000000000], keep order:false +└─TableRowIDScan(Probe) 1.67 cop[tikv] table:t1 keep order:false +select /*+ use_index_merge(t1 primary, c) */ * from t1 where t1.a = 1 and t1.b = '111' or t1.c = 3.3; +a b c d +1 111 1.1000000000 11 +3 333 3.3000000000 13 +set tidb_enable_clustered_index=default; diff --git a/tests/integrationtest/r/planner/core/casetest/integration.result b/tests/integrationtest/r/planner/core/casetest/integration.result index 7f6d88be5f824..dac5cb5414831 100644 --- a/tests/integrationtest/r/planner/core/casetest/integration.result +++ b/tests/integrationtest/r/planner/core/casetest/integration.result @@ -1420,23 +1420,27 @@ create table t1 (a int, b int); create table t2_part (a int, b int, key(a)) partition by hash(a) partitions 4; 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_15 2658.67 root anti semi join, equal:[eq(planner__core__casetest__integration.t1.a, planner__core__casetest__integration.t2_part.a)] -├─PartitionUnion_19(Build) 13293.33 root -│ ├─TableReader_22 3323.33 root data:Selection_21 -│ │ └─Selection_21 3323.33 cop[tikv] lt(planner__core__casetest__integration.t2_part.b, 20) -│ │ └─TableFullScan_20 10000.00 cop[tikv] table:t2_part, partition:p0 keep order:false, stats:pseudo -│ ├─TableReader_25 3323.33 root data:Selection_24 -│ │ └─Selection_24 3323.33 cop[tikv] lt(planner__core__casetest__integration.t2_part.b, 20) -│ │ └─TableFullScan_23 10000.00 cop[tikv] table:t2_part, partition:p1 keep order:false, stats:pseudo -│ ├─TableReader_28 3323.33 root data:Selection_27 -│ │ └─Selection_27 3323.33 cop[tikv] lt(planner__core__casetest__integration.t2_part.b, 20) -│ │ └─TableFullScan_26 10000.00 cop[tikv] table:t2_part, partition:p2 keep order:false, stats:pseudo -│ └─TableReader_31 3323.33 root data:Selection_30 -│ └─Selection_30 3323.33 cop[tikv] lt(planner__core__casetest__integration.t2_part.b, 20) -│ └─TableFullScan_29 10000.00 cop[tikv] table:t2_part, partition:p3 keep order:false, stats:pseudo -└─TableReader_18(Probe) 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 +HashJoin_19 2658.67 root anti semi join, equal:[eq(planner__core__casetest__integration.t1.a, planner__core__casetest__integration.t2_part.a)] +├─PartitionUnion_23(Build) 13293.33 root +│ ├─Projection_24 3323.33 root planner__core__casetest__integration.t2_part.a +│ │ └─TableReader_27 3323.33 root data:Selection_26 +│ │ └─Selection_26 3323.33 cop[tikv] lt(planner__core__casetest__integration.t2_part.b, 20) +│ │ └─TableFullScan_25 10000.00 cop[tikv] table:t2_part, partition:p0 keep order:false, stats:pseudo +│ ├─Projection_28 3323.33 root planner__core__casetest__integration.t2_part.a +│ │ └─TableReader_31 3323.33 root data:Selection_30 +│ │ └─Selection_30 3323.33 cop[tikv] lt(planner__core__casetest__integration.t2_part.b, 20) +│ │ └─TableFullScan_29 10000.00 cop[tikv] table:t2_part, partition:p1 keep order:false, stats:pseudo +│ ├─Projection_32 3323.33 root planner__core__casetest__integration.t2_part.a +│ │ └─TableReader_35 3323.33 root data:Selection_34 +│ │ └─Selection_34 3323.33 cop[tikv] lt(planner__core__casetest__integration.t2_part.b, 20) +│ │ └─TableFullScan_33 10000.00 cop[tikv] table:t2_part, partition:p2 keep order:false, stats:pseudo +│ └─Projection_36 3323.33 root planner__core__casetest__integration.t2_part.a +│ └─TableReader_39 3323.33 root data:Selection_38 +│ └─Selection_38 3323.33 cop[tikv] lt(planner__core__casetest__integration.t2_part.b, 20) +│ └─TableFullScan_37 10000.00 cop[tikv] table:t2_part, partition:p3 keep order:false, stats:pseudo +└─TableReader_22(Probe) 3323.33 root data:Selection_21 + └─Selection_21 3323.33 cop[tikv] lt(planner__core__casetest__integration.t1.b, 10) + └─TableFullScan_20 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo Level Code Message Warning 1105 disable dynamic pruning due to t2_part has no global stats Warning 1815 Optimizer Hint /*+ INL_JOIN(t2_part) */ or /*+ TIDB_INLJ(t2_part) */ is inapplicable @@ -1451,3 +1455,232 @@ IndexJoin_13 2658.67 root anti semi join, inner:IndexLookUp_12, outer key:plann ├─IndexRangeScan_9(Build) 12500.00 cop[tikv] table:t2_part, index:a(a) range: decided by [eq(planner__core__casetest__integration.t2_part.a, planner__core__casetest__integration.t1.a)], keep order:false, stats:pseudo └─Selection_11(Probe) 4154.17 cop[tikv] lt(planner__core__casetest__integration.t2_part.b, 20) └─TableRowIDScan_10 12500.00 cop[tikv] table:t2_part keep order:false, stats:pseudo +drop table if exists t; +create table t(a int(11) not null, b int) partition by range (a) (partition p0 values less than (4), partition p1 values less than(10), partition p2 values less than maxvalue); +insert into t values (1, 1),(10, 10),(11, 11); +set tidb_opt_fix_control='44262:ON'; +explain format = 'brief' select * from t where a in (1, 2,'11'); +id estRows task access object operator info +TableReader 30.00 root partition:p0,p2 data:Selection +└─Selection 30.00 cop[tikv] in(planner__core__casetest__integration.t.a, 1, 2, 11) + └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +explain format = 'brief' select * from t where a in (17, null); +id estRows task access object operator info +TableReader 10.00 root partition:p0,p2 data:Selection +└─Selection 10.00 cop[tikv] in(planner__core__casetest__integration.t.a, 17, NULL) + └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +explain format = 'brief' select * from t where a in (16, 'abc'); +id estRows task access object operator info +TableReader 20.00 root partition:p0,p2 data:Selection +└─Selection 20.00 cop[tikv] in(planner__core__casetest__integration.t.a, 16, 0) + └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +explain format = 'brief' select * from t where a in (15, 0.12, 3.47); +id estRows task access object operator info +TableReader 10.00 root partition:p2 data:Selection +└─Selection 10.00 cop[tikv] or(eq(planner__core__casetest__integration.t.a, 15), 0) + └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +explain format = 'brief' select * from t where a in (0.12, 3.47); +id estRows task access object operator info +TableDual 0.00 root rows:0 +explain format = 'brief' select * from t where a in (14, floor(3.47)); +id estRows task access object operator info +TableReader 20.00 root partition:p0,p2 data:Selection +└─Selection 20.00 cop[tikv] in(planner__core__casetest__integration.t.a, 14, 3) + └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +explain format = 'brief' select * from t where b in (3, 4); +id estRows task access object operator info +TableReader 20.00 root partition:all data:Selection +└─Selection 20.00 cop[tikv] in(planner__core__casetest__integration.t.b, 3, 4) + └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +set tidb_opt_fix_control=default; +drop table if exists pt; +create table pt (id int, c int, key i_id(id), key i_c(c)) partition by range (c) ( +partition p0 values less than (4), +partition p1 values less than (7), +partition p2 values less than (10)); +set @@tidb_enable_index_merge = 1; +set tidb_opt_fix_control='44262:ON'; +## Table reader +explain format='brief' select * from pt where c > 10; +id estRows task access object operator info +TableReader 3333.33 root partition:dual data:Selection +└─Selection 3333.33 cop[tikv] gt(planner__core__casetest__integration.pt.c, 10) + └─TableFullScan 10000.00 cop[tikv] table:pt keep order:false, stats:pseudo +explain format='brief' select * from pt where c > 8; +id estRows task access object operator info +TableReader 3333.33 root partition:p2 data:Selection +└─Selection 3333.33 cop[tikv] gt(planner__core__casetest__integration.pt.c, 8) + └─TableFullScan 10000.00 cop[tikv] table:pt keep order:false, stats:pseudo +explain format='brief' select * from pt where c < 2 or c >= 9; +id estRows task access object operator info +TableReader 6656.67 root partition:p0,p2 data:Selection +└─Selection 6656.67 cop[tikv] or(lt(planner__core__casetest__integration.pt.c, 2), ge(planner__core__casetest__integration.pt.c, 9)) + └─TableFullScan 10000.00 cop[tikv] table:pt keep order:false, stats:pseudo +## Index reader +explain format='brief' select c from pt; +id estRows task access object operator info +IndexReader 10000.00 root partition:all index:IndexFullScan +└─IndexFullScan 10000.00 cop[tikv] table:pt, index:i_c(c) keep order:false, stats:pseudo +explain format='brief' select c from pt where c > 10; +id estRows task access object operator info +IndexReader 3333.33 root partition:dual index:IndexRangeScan +└─IndexRangeScan 3333.33 cop[tikv] table:pt, index:i_c(c) range:(10,+inf], keep order:false, stats:pseudo +explain format='brief' select c from pt where c > 8; +id estRows task access object operator info +IndexReader 3333.33 root partition:p2 index:IndexRangeScan +└─IndexRangeScan 3333.33 cop[tikv] table:pt, index:i_c(c) range:(8,+inf], keep order:false, stats:pseudo +explain format='brief' select c from pt where c < 2 or c >= 9; +id estRows task access object operator info +IndexReader 6656.67 root partition:p0,p2 index:IndexRangeScan +└─IndexRangeScan 6656.67 cop[tikv] table:pt, index:i_c(c) range:[-inf,2), [9,+inf], keep order:false, stats:pseudo +## Index Lookup +explain format='brief' select /*+ use_index(pt, i_id) */ * from pt; +id estRows task access object operator info +IndexLookUp 10000.00 root partition:all +├─IndexFullScan(Build) 10000.00 cop[tikv] table:pt, index:i_id(id) keep order:false, stats:pseudo +└─TableRowIDScan(Probe) 10000.00 cop[tikv] table:pt keep order:false, stats:pseudo +explain format='brief' select /*+ use_index(pt, i_id) */ * from pt where id < 4 and c > 10; +id estRows task access object operator info +IndexLookUp 1107.78 root partition:dual +├─IndexRangeScan(Build) 3323.33 cop[tikv] table:pt, index:i_id(id) range:[-inf,4), keep order:false, stats:pseudo +└─Selection(Probe) 1107.78 cop[tikv] gt(planner__core__casetest__integration.pt.c, 10) + └─TableRowIDScan 3323.33 cop[tikv] table:pt keep order:false, stats:pseudo +explain format='brief' select /*+ use_index(pt, i_id) */ * from pt where id < 10 and c > 8; +id estRows task access object operator info +IndexLookUp 1107.78 root partition:p2 +├─IndexRangeScan(Build) 3323.33 cop[tikv] table:pt, index:i_id(id) range:[-inf,10), keep order:false, stats:pseudo +└─Selection(Probe) 1107.78 cop[tikv] gt(planner__core__casetest__integration.pt.c, 8) + └─TableRowIDScan 3323.33 cop[tikv] table:pt keep order:false, stats:pseudo +explain format='brief' select /*+ use_index(pt, i_id) */ * from pt where id < 10 and c < 2 or c >= 9; +id estRows task access object operator info +IndexLookUp 5325.33 root partition:p0,p2 +├─IndexFullScan(Build) 10000.00 cop[tikv] table:pt, index:i_id(id) keep order:false, stats:pseudo +└─Selection(Probe) 5325.33 cop[tikv] or(and(lt(planner__core__casetest__integration.pt.id, 10), lt(planner__core__casetest__integration.pt.c, 2)), ge(planner__core__casetest__integration.pt.c, 9)) + └─TableRowIDScan 10000.00 cop[tikv] table:pt keep order:false, stats:pseudo +## Partition selection +explain format='brief' select * from pt partition (p0) where c > 8; +id estRows task access object operator info +TableReader 3333.33 root partition:dual data:Selection +└─Selection 3333.33 cop[tikv] gt(planner__core__casetest__integration.pt.c, 8) + └─TableFullScan 10000.00 cop[tikv] table:pt keep order:false, stats:pseudo +explain format='brief' select c from pt partition (p0, p2) where c > 8; +id estRows task access object operator info +IndexReader 3333.33 root partition:p2 index:IndexRangeScan +└─IndexRangeScan 3333.33 cop[tikv] table:pt, index:i_c(c) range:(8,+inf], keep order:false, stats:pseudo +explain format='brief' select /*+ use_index(pt, i_id) */ * from pt partition (p1, p2) where c < 3 and id = 5; +id estRows task access object operator info +IndexLookUp 3.32 root partition:dual +├─IndexRangeScan(Build) 10.00 cop[tikv] table:pt, index:i_id(id) range:[5,5], keep order:false, stats:pseudo +└─Selection(Probe) 3.32 cop[tikv] lt(planner__core__casetest__integration.pt.c, 3) + └─TableRowIDScan 10.00 cop[tikv] table:pt keep order:false, stats:pseudo +## Index Merge +explain format='brief' select * from pt where id = 4 or c < 7; +id estRows task access object operator info +IndexMerge 3330.01 root partition:all type: union +├─IndexRangeScan(Build) 10.00 cop[tikv] table:pt, index:i_id(id) range:[4,4], keep order:false, stats:pseudo +├─IndexRangeScan(Build) 3323.33 cop[tikv] table:pt, index:i_c(c) range:[-inf,7), keep order:false, stats:pseudo +└─TableRowIDScan(Probe) 3330.01 cop[tikv] table:pt keep order:false, stats:pseudo +explain format='brief' select * from pt where id > 4 or c = 7; +id estRows task access object operator info +IndexMerge 3340.00 root partition:all type: union +├─IndexRangeScan(Build) 3333.33 cop[tikv] table:pt, index:i_id(id) range:(4,+inf], keep order:false, stats:pseudo +├─IndexRangeScan(Build) 10.00 cop[tikv] table:pt, index:i_c(c) range:[7,7], keep order:false, stats:pseudo +└─TableRowIDScan(Probe) 3340.00 cop[tikv] table:pt keep order:false, stats:pseudo +set tidb_opt_fix_control=default; +set @@tidb_enable_index_merge = default; +drop table if exists github_events; +CREATE TABLE `github_events` ( +`id` bigint(20) NOT NULL DEFAULT '0', +`type` varchar(29) NOT NULL DEFAULT 'Event', +`created_at` datetime NOT NULL DEFAULT '1970-01-01 00:00:00', +`repo_id` bigint(20) NOT NULL DEFAULT '0', +`repo_name` varchar(140) NOT NULL DEFAULT '', +`actor_id` bigint(20) NOT NULL DEFAULT '0', +`actor_login` varchar(40) NOT NULL DEFAULT '', +`language` varchar(26) NOT NULL DEFAULT '', +`additions` bigint(20) NOT NULL DEFAULT '0', +`deletions` bigint(20) NOT NULL DEFAULT '0', +`action` varchar(11) NOT NULL DEFAULT '', +`number` int(11) NOT NULL DEFAULT '0', +`commit_id` varchar(40) NOT NULL DEFAULT '', +`comment_id` bigint(20) NOT NULL DEFAULT '0', +`org_login` varchar(40) NOT NULL DEFAULT '', +`org_id` bigint(20) NOT NULL DEFAULT '0', +`state` varchar(6) NOT NULL DEFAULT '', +`closed_at` datetime NOT NULL DEFAULT '1970-01-01 00:00:00', +`comments` int(11) NOT NULL DEFAULT '0', +`pr_merged_at` datetime NOT NULL DEFAULT '1970-01-01 00:00:00', +`pr_merged` tinyint(1) NOT NULL DEFAULT '0', +`pr_changed_files` int(11) NOT NULL DEFAULT '0', +`pr_review_comments` int(11) NOT NULL DEFAULT '0', +`pr_or_issue_id` bigint(20) NOT NULL DEFAULT '0', +`event_day` date NOT NULL, +`event_month` date NOT NULL, +`event_year` int(11) NOT NULL, +`push_size` int(11) NOT NULL DEFAULT '0', +`push_distinct_size` int(11) NOT NULL DEFAULT '0', +`creator_user_login` varchar(40) NOT NULL DEFAULT '', +`creator_user_id` bigint(20) NOT NULL DEFAULT '0', +`pr_or_issue_created_at` datetime NOT NULL DEFAULT '1970-01-01 00:00:00', +KEY `index_github_events_on_id` (`id`), +KEY `index_github_events_on_created_at` (`created_at`), +KEY `index_github_events_on_repo_id_type_action_month_actor_login` (`repo_id`,`type`,`action`,`event_month`,`actor_login`), +KEY `index_ge_on_repo_id_type_action_pr_merged_created_at_add_del` (`repo_id`,`type`,`action`,`pr_merged`,`created_at`,`additions`,`deletions`), +KEY `index_ge_on_creator_id_type_action_merged_created_at_add_del` (`creator_user_id`,`type`,`action`,`pr_merged`,`created_at`,`additions`,`deletions`), +KEY `index_ge_on_actor_id_type_action_created_at_repo_id_commits` (`actor_id`,`type`,`action`,`created_at`,`repo_id`,`push_distinct_size`), +KEY `index_ge_on_repo_id_type_action_created_at_number_pdsize_psize` (`repo_id`,`type`,`action`,`created_at`,`number`,`push_distinct_size`,`push_size`), +KEY `index_ge_on_repo_id_type_action_created_at_actor_login` (`repo_id`,`type`,`action`,`created_at`,`actor_login`), +KEY `index_ge_on_repo_name_type` (`repo_name`,`type`), +KEY `index_ge_on_actor_login_type` (`actor_login`,`type`), +KEY `index_ge_on_org_login_type` (`org_login`,`type`), +KEY `index_ge_on_language` (`language`), +KEY `index_ge_on_org_id_type` (`org_id`,`type`), +KEY `index_ge_on_actor_login_lower` ((lower(`actor_login`))), +KEY `index_ge_on_repo_name_lower` ((lower(`repo_name`))), +KEY `index_ge_on_language_lower` ((lower(`language`))), +KEY `index_ge_on_type_action` (`type`,`action`) /*!80000 INVISIBLE */, +KEY `index_ge_on_repo_id_type_created_at` (`repo_id`,`type`,`created_at`), +KEY `index_ge_on_repo_id_created_at` (`repo_id`,`created_at`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin +PARTITION BY LIST COLUMNS(`type`) +(PARTITION `push_event` VALUES IN ('PushEvent'), +PARTITION `create_event` VALUES IN ('CreateEvent'), +PARTITION `pull_request_event` VALUES IN ('PullRequestEvent'), +PARTITION `watch_event` VALUES IN ('WatchEvent'), +PARTITION `issue_comment_event` VALUES IN ('IssueCommentEvent'), +PARTITION `issues_event` VALUES IN ('IssuesEvent'), +PARTITION `delete_event` VALUES IN ('DeleteEvent'), +PARTITION `fork_event` VALUES IN ('ForkEvent'), +PARTITION `pull_request_review_comment_event` VALUES IN ('PullRequestReviewCommentEvent'), +PARTITION `pull_request_review_event` VALUES IN ('PullRequestReviewEvent'), +PARTITION `gollum_event` VALUES IN ('GollumEvent'), +PARTITION `release_event` VALUES IN ('ReleaseEvent'), +PARTITION `member_event` VALUES IN ('MemberEvent'), +PARTITION `commit_comment_event` VALUES IN ('CommitCommentEvent'), +PARTITION `public_event` VALUES IN ('PublicEvent'), +PARTITION `gist_event` VALUES IN ('GistEvent'), +PARTITION `follow_event` VALUES IN ('FollowEvent'), +PARTITION `event` VALUES IN ('Event'), +PARTITION `download_event` VALUES IN ('DownloadEvent'), +PARTITION `team_add_event` VALUES IN ('TeamAddEvent'), +PARTITION `fork_apply_event` VALUES IN ('ForkApplyEvent')); +SELECT +repo_id, GROUP_CONCAT( +DISTINCT actor_login +ORDER BY cnt DESC +SEPARATOR ',' +) AS actor_logins +FROM ( +SELECT +ge.repo_id AS repo_id, +ge.actor_login AS actor_login, +COUNT(*) AS cnt +FROM github_events ge +WHERE +type = 'PullRequestEvent' AND action = 'opened' +AND (ge.created_at >= DATE_SUB(NOW(), INTERVAL 1 DAY) AND ge.created_at <= NOW()) +GROUP BY ge.repo_id, ge.actor_login +ORDER BY cnt DESC +) sub +GROUP BY repo_id; +repo_id actor_logins diff --git a/tests/integrationtest/r/planner/core/casetest/partition/integration_partition.result b/tests/integrationtest/r/planner/core/casetest/partition/integration_partition.result index 51c9c68b2d67c..dd34b8ef6e571 100644 --- a/tests/integrationtest/r/planner/core/casetest/partition/integration_partition.result +++ b/tests/integrationtest/r/planner/core/casetest/partition/integration_partition.result @@ -539,21 +539,23 @@ Projection 3.33 root list_partition_pruning.t.a └─TableRowIDScan 3333.33 cop[tikv] table:t keep order:false, stats:pseudo explain format='brief' select a from trange use index (ia) where a > 10 and c = 10 order by a limit 10; id estRows task access object operator info -Projection 10.00 root list_partition_pruning.trange.a -└─TopN 10.00 root list_partition_pruning.trange.a, offset:0, count:10 - └─PartitionUnion 10.00 root - ├─Limit 3.33 root offset:0, count:10 - │ └─Projection 3.33 root list_partition_pruning.trange.a, list_partition_pruning.trange.c - │ └─IndexLookUp 3.33 root - │ ├─IndexRangeScan(Build) 3333.33 cop[tikv] table:trange, partition:p1, index:ia(a) range:(10,+inf], keep order:true, stats:pseudo - │ └─Selection(Probe) 3.33 cop[tikv] eq(list_partition_pruning.trange.c, 10) - │ └─TableRowIDScan 3333.33 cop[tikv] table:trange, partition:p1 keep order:false, stats:pseudo - ├─Limit 3.33 root offset:0, count:10 - │ └─Projection 3.33 root list_partition_pruning.trange.a, list_partition_pruning.trange.c - │ └─IndexLookUp 3.33 root - │ ├─IndexRangeScan(Build) 3333.33 cop[tikv] table:trange, partition:p2, index:ia(a) range:(10,+inf], keep order:true, stats:pseudo - │ └─Selection(Probe) 3.33 cop[tikv] eq(list_partition_pruning.trange.c, 10) - │ └─TableRowIDScan 3333.33 cop[tikv] table:trange, partition:p2 keep order:false, stats:pseudo +TopN 10.00 root list_partition_pruning.trange.a, offset:0, count:10 +└─PartitionUnion 10.00 root + ├─Projection 3.33 root list_partition_pruning.trange.a + │ └─Limit 3.33 root offset:0, count:10 + │ └─Projection 3.33 root list_partition_pruning.trange.a, list_partition_pruning.trange.c + │ └─IndexLookUp 3.33 root + │ ├─IndexRangeScan(Build) 3333.33 cop[tikv] table:trange, partition:p1, index:ia(a) range:(10,+inf], keep order:true, stats:pseudo + │ └─Selection(Probe) 3.33 cop[tikv] eq(list_partition_pruning.trange.c, 10) + │ └─TableRowIDScan 3333.33 cop[tikv] table:trange, partition:p1 keep order:false, stats:pseudo + ├─Projection 3.33 root list_partition_pruning.trange.a + │ └─Limit 3.33 root offset:0, count:10 + │ └─Projection 3.33 root list_partition_pruning.trange.a, list_partition_pruning.trange.c + │ └─IndexLookUp 3.33 root + │ ├─IndexRangeScan(Build) 3333.33 cop[tikv] table:trange, partition:p2, index:ia(a) range:(10,+inf], keep order:true, stats:pseudo + │ └─Selection(Probe) 3.33 cop[tikv] eq(list_partition_pruning.trange.c, 10) + │ └─TableRowIDScan 3333.33 cop[tikv] table:trange, partition:p2 keep order:false, stats:pseudo + └─Projection 3.33 root list_partition_pruning.trange.a └─Limit 3.33 root offset:0, count:10 └─Projection 3.33 root list_partition_pruning.trange.a, list_partition_pruning.trange.c └─IndexLookUp 3.33 root @@ -562,15 +564,16 @@ Projection 10.00 root list_partition_pruning.trange.a └─TableRowIDScan 3333.33 cop[tikv] table:trange, partition:p3 keep order:false, stats:pseudo explain format='brief' select a from tlist use index (ia) where a > 10 and c = 10 order by a limit 10; id estRows task access object operator info -Projection 6.67 root list_partition_pruning.tlist.a -└─TopN 6.67 root list_partition_pruning.tlist.a, offset:0, count:10 - └─PartitionUnion 6.67 root - ├─Limit 3.33 root offset:0, count:10 - │ └─Projection 3.33 root list_partition_pruning.tlist.a, list_partition_pruning.tlist.c - │ └─IndexLookUp 3.33 root - │ ├─IndexRangeScan(Build) 3333.33 cop[tikv] table:tlist, partition:p0, index:ia(a) range:(10,+inf], keep order:true, stats:pseudo - │ └─Selection(Probe) 3.33 cop[tikv] eq(list_partition_pruning.tlist.c, 10) - │ └─TableRowIDScan 3333.33 cop[tikv] table:tlist, partition:p0 keep order:false, stats:pseudo +TopN 6.67 root list_partition_pruning.tlist.a, offset:0, count:10 +└─PartitionUnion 6.67 root + ├─Projection 3.33 root list_partition_pruning.tlist.a + │ └─Limit 3.33 root offset:0, count:10 + │ └─Projection 3.33 root list_partition_pruning.tlist.a, list_partition_pruning.tlist.c + │ └─IndexLookUp 3.33 root + │ ├─IndexRangeScan(Build) 3333.33 cop[tikv] table:tlist, partition:p0, index:ia(a) range:(10,+inf], keep order:true, stats:pseudo + │ └─Selection(Probe) 3.33 cop[tikv] eq(list_partition_pruning.tlist.c, 10) + │ └─TableRowIDScan 3333.33 cop[tikv] table:tlist, partition:p0 keep order:false, stats:pseudo + └─Projection 3.33 root list_partition_pruning.tlist.a └─Limit 3.33 root offset:0, count:10 └─Projection 3.33 root list_partition_pruning.tlist.a, list_partition_pruning.tlist.c └─IndexLookUp 3.33 root @@ -579,27 +582,30 @@ Projection 6.67 root list_partition_pruning.tlist.a └─TableRowIDScan 3333.33 cop[tikv] table:tlist, partition:p1 keep order:false, stats:pseudo explain format='brief' select a from thash use index (ia) where a > 10 and c = 10 order by a limit 10; id estRows task access object operator info -Projection 10.00 root list_partition_pruning.thash.a -└─TopN 10.00 root list_partition_pruning.thash.a, offset:0, count:10 - └─PartitionUnion 13.33 root - ├─Limit 3.33 root offset:0, count:10 - │ └─Projection 3.33 root list_partition_pruning.thash.a, list_partition_pruning.thash.c - │ └─IndexLookUp 3.33 root - │ ├─IndexRangeScan(Build) 3333.33 cop[tikv] table:thash, partition:p0, index:ia(a) range:(10,+inf], keep order:true, stats:pseudo - │ └─Selection(Probe) 3.33 cop[tikv] eq(list_partition_pruning.thash.c, 10) - │ └─TableRowIDScan 3333.33 cop[tikv] table:thash, partition:p0 keep order:false, stats:pseudo - ├─Limit 3.33 root offset:0, count:10 - │ └─Projection 3.33 root list_partition_pruning.thash.a, list_partition_pruning.thash.c - │ └─IndexLookUp 3.33 root - │ ├─IndexRangeScan(Build) 3333.33 cop[tikv] table:thash, partition:p1, index:ia(a) range:(10,+inf], keep order:true, stats:pseudo - │ └─Selection(Probe) 3.33 cop[tikv] eq(list_partition_pruning.thash.c, 10) - │ └─TableRowIDScan 3333.33 cop[tikv] table:thash, partition:p1 keep order:false, stats:pseudo - ├─Limit 3.33 root offset:0, count:10 - │ └─Projection 3.33 root list_partition_pruning.thash.a, list_partition_pruning.thash.c - │ └─IndexLookUp 3.33 root - │ ├─IndexRangeScan(Build) 3333.33 cop[tikv] table:thash, partition:p2, index:ia(a) range:(10,+inf], keep order:true, stats:pseudo - │ └─Selection(Probe) 3.33 cop[tikv] eq(list_partition_pruning.thash.c, 10) - │ └─TableRowIDScan 3333.33 cop[tikv] table:thash, partition:p2 keep order:false, stats:pseudo +TopN 10.00 root list_partition_pruning.thash.a, offset:0, count:10 +└─PartitionUnion 13.33 root + ├─Projection 3.33 root list_partition_pruning.thash.a + │ └─Limit 3.33 root offset:0, count:10 + │ └─Projection 3.33 root list_partition_pruning.thash.a, list_partition_pruning.thash.c + │ └─IndexLookUp 3.33 root + │ ├─IndexRangeScan(Build) 3333.33 cop[tikv] table:thash, partition:p0, index:ia(a) range:(10,+inf], keep order:true, stats:pseudo + │ └─Selection(Probe) 3.33 cop[tikv] eq(list_partition_pruning.thash.c, 10) + │ └─TableRowIDScan 3333.33 cop[tikv] table:thash, partition:p0 keep order:false, stats:pseudo + ├─Projection 3.33 root list_partition_pruning.thash.a + │ └─Limit 3.33 root offset:0, count:10 + │ └─Projection 3.33 root list_partition_pruning.thash.a, list_partition_pruning.thash.c + │ └─IndexLookUp 3.33 root + │ ├─IndexRangeScan(Build) 3333.33 cop[tikv] table:thash, partition:p1, index:ia(a) range:(10,+inf], keep order:true, stats:pseudo + │ └─Selection(Probe) 3.33 cop[tikv] eq(list_partition_pruning.thash.c, 10) + │ └─TableRowIDScan 3333.33 cop[tikv] table:thash, partition:p1 keep order:false, stats:pseudo + ├─Projection 3.33 root list_partition_pruning.thash.a + │ └─Limit 3.33 root offset:0, count:10 + │ └─Projection 3.33 root list_partition_pruning.thash.a, list_partition_pruning.thash.c + │ └─IndexLookUp 3.33 root + │ ├─IndexRangeScan(Build) 3333.33 cop[tikv] table:thash, partition:p2, index:ia(a) range:(10,+inf], keep order:true, stats:pseudo + │ └─Selection(Probe) 3.33 cop[tikv] eq(list_partition_pruning.thash.c, 10) + │ └─TableRowIDScan 3333.33 cop[tikv] table:thash, partition:p2 keep order:false, stats:pseudo + └─Projection 3.33 root list_partition_pruning.thash.a └─Limit 3.33 root offset:0, count:10 └─Projection 3.33 root list_partition_pruning.thash.a, list_partition_pruning.thash.c └─IndexLookUp 3.33 root diff --git a/tests/integrationtest/r/planner/core/casetest/physicalplantest/physical_plan.result b/tests/integrationtest/r/planner/core/casetest/physicalplantest/physical_plan.result new file mode 100644 index 0000000000000..541e196db8f36 --- /dev/null +++ b/tests/integrationtest/r/planner/core/casetest/physicalplantest/physical_plan.result @@ -0,0 +1,3755 @@ +drop table if exists t1, t2; +create table t1(a int primary key, b int not null); +create table t2(a int primary key, b int not null); +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 +IndexMergeJoin 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, other cond: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 + └─TableRangeScan 10000.00 cop[tikv] table:t2 range: decided by [planner__core__casetest__physicalplantest__physical_plan.t1.a], keep order:true, stats:pseudo +select /*+ inl_merge_join(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +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) +├─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 + └─TableRangeScan 10000.00 cop[tikv] table:t2 range: decided by [planner__core__casetest__physicalplantest__physical_plan.t1.a], keep order:false, stats:pseudo +select /*+ inl_hash_join(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +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) +├─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 + └─TableRangeScan 10000.00 cop[tikv] table:t2 range: decided by [planner__core__casetest__physicalplantest__physical_plan.t1.a], keep order:false, stats:pseudo +select /*+ inl_join(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +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)] +├─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 +select /*+ hash_join(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +2 NULL +drop table if exists t1, t2, t3; +create table t1(a int(11) DEFAULT NULL, b int(11) DEFAULT NULL, UNIQUE KEY idx_a (a)); +create table t2(a int(11) DEFAULT NULL, b int(11) DEFAULT NULL); +create table t3(a int(11) DEFAULT NULL, b int(11) DEFAULT NULL, c int(11) DEFAULT NULL, UNIQUE KEY idx_abc (a, b, c)); +explain format = 'brief' select a from t2 where t2.a < (select t1.a from t1 where t1.a = t2.a); +id estRows task access object operator info +HashJoin 9990.00 root inner join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t2.a, planner__core__casetest__physicalplantest__physical_plan.t1.a)], other cond:lt(planner__core__casetest__physicalplantest__physical_plan.t2.a, planner__core__casetest__physicalplantest__physical_plan.t1.a) +├─IndexReader(Build) 7992.00 root index:Selection +│ └─Selection 7992.00 cop[tikv] lt(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t1.a) +│ └─IndexFullScan 9990.00 cop[tikv] table:t1, index:idx_a(a) keep order:false, stats:pseudo +└─TableReader(Probe) 7992.00 root data:Selection + └─Selection 7992.00 cop[tikv] lt(planner__core__casetest__physicalplantest__physical_plan.t2.a, planner__core__casetest__physicalplantest__physical_plan.t2.a), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.a)) + └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +select a from t2 where t2.a < (select t1.a from t1 where t1.a = t2.a); +a +explain format = 'brief' select a from t2 where t2.a < (select t1.a from t1 where t1.b = t2.b and t1.a is null); +id estRows task access object operator info +Projection 9990.00 root planner__core__casetest__physicalplantest__physical_plan.t2.a +└─Apply 9990.00 root CARTESIAN inner join, other cond:lt(planner__core__casetest__physicalplantest__physical_plan.t2.a, planner__core__casetest__physicalplantest__physical_plan.t1.a) + ├─TableReader(Build) 9990.00 root data:Selection + │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.a)) + │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo + └─Selection(Probe) 7992.00 root not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.a)) + └─MaxOneRow 9990.00 root + └─IndexLookUp 9.99 root + ├─IndexRangeScan(Build) 9990.00 cop[tikv] table:t1, index:idx_a(a) range:[NULL,NULL], keep order:false, stats:pseudo + └─Selection(Probe) 9.99 cop[tikv] eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.b) + └─TableRowIDScan 9990.00 cop[tikv] table:t1 keep order:false, stats:pseudo +select a from t2 where t2.a < (select t1.a from t1 where t1.b = t2.b and t1.a is null); +a +explain format = 'brief' select a from t2 where t2.a < (select t3.a from t3 where t3.a = t2.a); +id estRows task access object operator info +Projection 9990.00 root planner__core__casetest__physicalplantest__physical_plan.t2.a +└─Apply 9990.00 root CARTESIAN inner join, other cond:lt(planner__core__casetest__physicalplantest__physical_plan.t2.a, planner__core__casetest__physicalplantest__physical_plan.t3.a) + ├─TableReader(Build) 9990.00 root data:Selection + │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.a)) + │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo + └─Selection(Probe) 7992.00 root not(isnull(planner__core__casetest__physicalplantest__physical_plan.t3.a)) + └─MaxOneRow 9990.00 root + └─IndexReader 19980.00 root index:IndexRangeScan + └─IndexRangeScan 19980.00 cop[tikv] table:t3, index:idx_abc(a, b, c) range: decided by [eq(planner__core__casetest__physicalplantest__physical_plan.t3.a, planner__core__casetest__physicalplantest__physical_plan.t2.a)], keep order:false, stats:pseudo +select a from t2 where t2.a < (select t3.a from t3 where t3.a = t2.a); +a +set tidb_cost_model_version=2; +drop table if exists t, tt; +create table t (a int primary key, b int, index idx(a)); +create table tt (a int primary key) partition by range (a) (partition p0 values less than (100), partition p1 values less than (200)); +set @@tidb_partition_prune_mode='static'; +begin; +insert into t values(1, 1); +explain format = 'brief' select /*+ TIDB_INLJ(t2) */ * from t t1, t t2 where t1.a = t2.a; +id estRows task access object operator info +IndexJoin 12500.00 root inner join, inner:UnionScan, outer key:planner__core__casetest__physicalplantest__physical_plan.t.a, inner key:planner__core__casetest__physicalplantest__physical_plan.t.a, equal cond:eq(planner__core__casetest__physicalplantest__physical_plan.t.a, planner__core__casetest__physicalplantest__physical_plan.t.a) +├─UnionScan(Build) 10000.00 root +│ └─TableReader 10000.00 root data:TableFullScan +│ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo +└─UnionScan(Probe) 10000.00 root + └─TableReader 10000.00 root data:TableRangeScan + └─TableRangeScan 10000.00 cop[tikv] table:t2 range: decided by [planner__core__casetest__physicalplantest__physical_plan.t.a], keep order:false, stats:pseudo +rollback; +begin; +insert into t values(1, 1); +explain format = 'brief' select /*+ TIDB_INLJ(t2) */ * from t t1, t t2 where t1.a = t2.b; +id estRows task access object operator info +Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a, planner__core__casetest__physicalplantest__physical_plan.t.b, planner__core__casetest__physicalplantest__physical_plan.t.a, planner__core__casetest__physicalplantest__physical_plan.t.b +└─HashJoin 12487.50 root inner join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t.b, planner__core__casetest__physicalplantest__physical_plan.t.a)] + ├─UnionScan(Build) 9990.00 root not(isnull(planner__core__casetest__physicalplantest__physical_plan.t.b)) + │ └─TableReader 9990.00 root data:Selection + │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t.b)) + │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo + └─UnionScan(Probe) 10000.00 root + └─TableReader 10000.00 root data:TableFullScan + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo +rollback; +begin; +insert into t values(1, 1); +explain format = 'brief' select /*+ TIDB_INLJ(t2) */ t1.a , t2.b from t t1, t t2 where t1.a = t2.b; +id estRows task access object operator info +Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a, planner__core__casetest__physicalplantest__physical_plan.t.b +└─HashJoin 12487.50 root inner join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t.b, planner__core__casetest__physicalplantest__physical_plan.t.a)] + ├─UnionScan(Build) 10000.00 root + │ └─TableReader 10000.00 root data:TableFullScan + │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo + └─UnionScan(Probe) 9990.00 root not(isnull(planner__core__casetest__physicalplantest__physical_plan.t.b)) + └─TableReader 9990.00 root data:Selection + └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t.b)) + └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +rollback; +begin; +insert into tt values(1); +explain format = 'brief' select /*+ TIDB_INLJ(t2) */ * from tt t1, tt t2 where t1.a = t2.a; +id estRows task access object operator info +HashJoin 25000.00 root inner join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.tt.a, planner__core__casetest__physicalplantest__physical_plan.tt.a)] +├─PartitionUnion(Build) 20000.00 root +│ ├─UnionScan 10000.00 root +│ │ └─TableReader 10000.00 root data:TableFullScan +│ │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo +│ └─UnionScan 10000.00 root +│ └─TableReader 10000.00 root data:TableFullScan +│ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p1 keep order:false, stats:pseudo +└─PartitionUnion(Probe) 20000.00 root + ├─UnionScan 10000.00 root + │ └─TableReader 10000.00 root data:TableFullScan + │ └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p0 keep order:false, stats:pseudo + └─UnionScan 10000.00 root + └─TableReader 10000.00 root data:TableFullScan + └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p1 keep order:false, stats:pseudo +rollback; +set tidb_cost_model_version=DEFAULT; +set @@tidb_partition_prune_mode=DEFAULT; +drop table if exists t1, t2; +create table t1 (c_int int, c_str varchar(40), primary key (c_int)); +create table t2 (c_int int, c_str varchar(40), primary key (c_int)); +insert into t1 (`c_int`, `c_str`) values (11, 'keen williamson'), (10, 'gracious hermann'); +insert into t2 (`c_int`, `c_str`) values (10, 'gracious hermann'); +begin; +insert into t2 values (11, 'amazing merkle'); +insert into t2 values (12, 'amazing merkle'); +explain format = 'brief' select /*+ MERGE_JOIN(t1,t2) */ * from t1, t2 where t1.c_int = t2.c_int and t1.c_int = t2.c_int order by t1.c_int, t2.c_str; +id estRows task access object operator info +Sort 12500.00 root planner__core__casetest__physicalplantest__physical_plan.t1.c_int, planner__core__casetest__physicalplantest__physical_plan.t2.c_str +└─MergeJoin 12500.00 root inner join, left key:planner__core__casetest__physicalplantest__physical_plan.t1.c_int, right key:planner__core__casetest__physicalplantest__physical_plan.t2.c_int + ├─UnionScan(Build) 10000.00 root + │ └─TableReader 10000.00 root data:TableFullScan + │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:true, stats:pseudo + └─TableReader(Probe) 10000.00 root data:TableFullScan + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo +rollback; +set tidb_cost_model_version=2; +drop table if exists tn; +create table tn(a int, b int, c int, d int, key (a, b, c, d)); +set tidb_opt_limit_push_down_threshold=0; +explain format = 'brief' select /*+ LIMIT_TO_COP() */ * from tn where a = 1 and b > 10 and b < 20 and c > 50 order by d limit 1; +id estRows task access object operator info +TopN 0.83 root planner__core__casetest__physicalplantest__physical_plan.tn.d, offset:0, count:1 +└─IndexReader 0.83 root index:TopN + └─TopN 0.83 cop[tikv] planner__core__casetest__physicalplantest__physical_plan.tn.d, offset:0, count:1 + └─Selection 0.83 cop[tikv] gt(planner__core__casetest__physicalplantest__physical_plan.tn.c, 50) + └─IndexRangeScan 2.50 cop[tikv] table:tn, index:a(a, b, c, d) range:(1 10,1 20), keep order:false, stats:pseudo +show warnings; +Level Code Message +explain format = 'brief' select * from tn where a = 1 and b > 10 and b < 20 and c > 50 order by d limit 1; +id estRows task access object operator info +TopN 0.83 root planner__core__casetest__physicalplantest__physical_plan.tn.d, offset:0, count:1 +└─IndexReader 0.83 root index:TopN + └─TopN 0.83 cop[tikv] planner__core__casetest__physicalplantest__physical_plan.tn.d, offset:0, count:1 + └─Selection 0.83 cop[tikv] gt(planner__core__casetest__physicalplantest__physical_plan.tn.c, 50) + └─IndexRangeScan 2.50 cop[tikv] table:tn, index:a(a, b, c, d) range:(1 10,1 20), keep order:false, stats:pseudo +show warnings; +Level Code Message +explain format = 'brief' select /*+ LIMIT_TO_COP() */ a from tn where a div 2 order by a limit 1; +id estRows task access object operator info +Limit 1.00 root offset:0, count:1 +└─Selection 1.00 root intdiv(planner__core__casetest__physicalplantest__physical_plan.tn.a, 2) + └─IndexReader 1.00 root index:IndexFullScan + └─IndexFullScan 1.00 cop[tikv] table:tn, index:a(a, b, c, d) keep order:true, stats:pseudo +show warnings; +Level Code Message +Warning 1105 Scalar function 'intdiv'(signature: IntDivideInt, return type: bigint(20)) is not supported to push down to storage layer now. +Warning 1815 Optimizer Hint LIMIT_TO_COP is inapplicable +explain format = 'brief' select /*+ LIMIT_TO_COP() */ a from tn where a > 10 limit 1; +id estRows task access object operator info +Limit 1.00 root offset:0, count:1 +└─IndexReader 1.00 root index:Limit + └─Limit 1.00 cop[tikv] offset:0, count:1 + └─IndexRangeScan 1.00 cop[tikv] table:tn, index:a(a, b, c, d) range:(10,+inf], keep order:false, stats:pseudo +show warnings; +Level Code Message +set tidb_cost_model_version=DEFAULT; +set tidb_opt_limit_push_down_threshold=DEFAULT; +drop table if exists tc, te, t1, t2, t3, t4; +drop view if exists v; +create table tc(a int); +create table te(c int); +create table t1(a int); +create table t2(b int); +create table t3(c int); +create table t4(d int); +insert into tc values (1), (5), (10), (15), (20), (30), (50); +insert into te values (1), (5), (10), (25), (40), (60), (100); +insert into t1 values (1), (5), (10), (25), (40), (60), (100); +insert into t2 values (1), (5), (10), (25), (40), (60), (100); +insert into t3 values (1), (5), (10), (25), (40), (60), (100); +insert into t4 values (1), (5), (10), (25), (40), (60), (100); +analyze table tc; +analyze table te; +analyze table t1; +analyze table t2; +analyze table t3; +analyze table t4; +create definer='root'@'localhost' view v as select * from tc; +explain format = 'brief' with cte as (select /*+ MERGE() */ * from tc where tc.a < 60) select * from cte where cte.a <18; +id estRows task access object operator info +TableReader 4.00 root data:Selection +└─Selection 4.00 cop[tikv] lt(planner__core__casetest__physicalplantest__physical_plan.tc.a, 18), lt(planner__core__casetest__physicalplantest__physical_plan.tc.a, 60) + └─TableFullScan 7.00 cop[tikv] table:tc keep order:false +show warnings; +Level Code Message +explain format = 'brief' with cte as (select * from tc where tc.a < 60) select * from cte c1, cte c2 where c1.a <18; +id estRows task access object operator info +Projection 39.20 root planner__core__casetest__physicalplantest__physical_plan.tc.a, planner__core__casetest__physicalplantest__physical_plan.tc.a +└─HashJoin 39.20 root CARTESIAN inner join + ├─Selection(Build) 5.60 root lt(planner__core__casetest__physicalplantest__physical_plan.tc.a, 18) + │ └─CTEFullScan 7.00 root CTE:cte AS c1 data:CTE_0 + └─CTEFullScan(Probe) 7.00 root CTE:cte AS c2 data:CTE_0 +CTE_0 7.00 root Non-Recursive CTE +└─TableReader(Seed Part) 7.00 root data:Selection + └─Selection 7.00 cop[tikv] lt(planner__core__casetest__physicalplantest__physical_plan.tc.a, 60), or(lt(planner__core__casetest__physicalplantest__physical_plan.tc.a, 18), 1) + └─TableFullScan 7.00 cop[tikv] table:tc keep order:false +show warnings; +Level Code Message +explain format = 'brief' with cte as (select /*+ MERGE() */ * from v) select * from cte; +id estRows task access object operator info +TableReader 7.00 root data:TableFullScan +└─TableFullScan 7.00 cop[tikv] table:tc keep order:false +show warnings; +Level Code Message +explain format = 'brief' WITH cte1 AS (SELECT /*+ MERGE() */ a FROM tc), cte2 AS (SELECT /*+ MERGE()*/ c FROM te) SELECT * FROM cte1 JOIN cte2 WHERE cte1.a = cte2.c; +id estRows task access object operator info +HashJoin 7.00 root inner join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.tc.a, planner__core__casetest__physicalplantest__physical_plan.te.c)] +├─TableReader(Build) 7.00 root data:Selection +│ └─Selection 7.00 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.te.c)) +│ └─TableFullScan 7.00 cop[tikv] table:te keep order:false +└─TableReader(Probe) 7.00 root data:Selection + └─Selection 7.00 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.tc.a)) + └─TableFullScan 7.00 cop[tikv] table:tc keep order:false +show warnings; +Level Code Message +explain format = 'brief' WITH cte1 AS (SELECT a FROM tc), cte2 AS (SELECT /*+ MERGE() */ c FROM te) SELECT * FROM cte1 JOIN cte2 WHERE cte1.a = cte2.c; +id estRows task access object operator info +HashJoin 7.00 root inner join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.tc.a, planner__core__casetest__physicalplantest__physical_plan.te.c)] +├─TableReader(Build) 7.00 root data:Selection +│ └─Selection 7.00 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.te.c)) +│ └─TableFullScan 7.00 cop[tikv] table:te keep order:false +└─TableReader(Probe) 7.00 root data:Selection + └─Selection 7.00 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.tc.a)) + └─TableFullScan 7.00 cop[tikv] table:tc keep order:false +show warnings; +Level Code Message +explain format = 'brief' with recursive cte1(c1) as (select 1 union select /*+ MERGE() */ c1 + 1 c1 from cte1 where c1 < 100) select * from cte1; +id estRows task access object operator info +CTEFullScan 2.00 root CTE:cte1 data:CTE_0 +CTE_0 2.00 root Recursive CTE +├─Projection(Seed Part) 1.00 root 1->Column#2 +│ └─TableDual 1.00 root rows:1 +└─Projection(Recursive Part) 0.80 root cast(plus(Column#3, 1), bigint(1) BINARY)->Column#5 + └─Selection 0.80 root lt(Column#3, 100) + └─CTETable 1.00 root Scan on CTE_0 +show warnings; +Level Code Message +Warning 1815 Recursive CTE cte1 can not be inlined by merge() or tidb_opt_force_inline_cte. +explain format = 'brief' WITH cte1 AS (SELECT * FROM t1) SELECT /*+ MERGE() */ * FROM cte1 join t2 on cte1.a = t2.b; +id estRows task access object operator info +HashJoin 7.00 root inner join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.b)] +├─TableReader(Build) 7.00 root data:Selection +│ └─Selection 7.00 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b)) +│ └─TableFullScan 7.00 cop[tikv] table:t2 keep order:false +└─TableReader(Probe) 7.00 root data:Selection + └─Selection 7.00 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.a)) + └─TableFullScan 7.00 cop[tikv] table:t1 keep order:false +show warnings; +Level Code Message +Warning 1815 Hint merge() is inapplicable. Please check whether the hint is used in the right place, you should use this hint inside the CTE. +explain format = 'brief' with cte1 as (with cte3 as (select /*+ MERGE() */ * from t1),cte4 as (select /*+ MERGE() */ * from t2) select /*+ MERGE() */ * from cte3,cte4) ,cte2 as (select /*+ MERGE() */ * from t3) select * from cte1,cte2; +id estRows task access object operator info +HashJoin 343.00 root CARTESIAN inner join +├─TableReader(Build) 7.00 root data:TableFullScan +│ └─TableFullScan 7.00 cop[tikv] table:t3 keep order:false +└─HashJoin(Probe) 49.00 root CARTESIAN inner join + ├─TableReader(Build) 7.00 root data:TableFullScan + │ └─TableFullScan 7.00 cop[tikv] table:t2 keep order:false + └─TableReader(Probe) 7.00 root data:TableFullScan + └─TableFullScan 7.00 cop[tikv] table:t1 keep order:false +show warnings; +Level Code Message +explain format = 'brief' with cte1 as (select * from tc), cte2 as (with cte3 as (select /*+ MERGE() */ * from te) ,cte4 as (select * from tc) select * from cte3,cte4) select * from cte2; +id estRows task access object operator info +HashJoin 49.00 root CARTESIAN inner join +├─TableReader(Build) 7.00 root data:TableFullScan +│ └─TableFullScan 7.00 cop[tikv] table:tc keep order:false +└─TableReader(Probe) 7.00 root data:TableFullScan + └─TableFullScan 7.00 cop[tikv] table:te keep order:false +show warnings; +Level Code Message +explain format = 'brief' with cte1 as (with cte2 as (select /*+ MERGE() */ * from te) ,cte3 as (select /*+ MERGE() */ * from tc) select /*+ MERGE() */ * from cte2,cte3) select * from cte1; +id estRows task access object operator info +HashJoin 49.00 root CARTESIAN inner join +├─TableReader(Build) 7.00 root data:TableFullScan +│ └─TableFullScan 7.00 cop[tikv] table:tc keep order:false +└─TableReader(Probe) 7.00 root data:TableFullScan + └─TableFullScan 7.00 cop[tikv] table:te keep order:false +show warnings; +Level Code Message +explain format = 'brief' with cte1 as (select * from t1), cte2 as (with cte3 as (with cte5 as (select * from t2),cte6 as (select * from t3) select * from cte5,cte6) ,cte4 as (select * from t4) select * from cte3,cte4) select * from cte1,cte2; +id estRows task access object operator info +HashJoin 2401.00 root CARTESIAN inner join +├─HashJoin(Build) 49.00 root CARTESIAN inner join +│ ├─TableReader(Build) 7.00 root data:TableFullScan +│ │ └─TableFullScan 7.00 cop[tikv] table:t4 keep order:false +│ └─TableReader(Probe) 7.00 root data:TableFullScan +│ └─TableFullScan 7.00 cop[tikv] table:t3 keep order:false +└─HashJoin(Probe) 49.00 root CARTESIAN inner join + ├─TableReader(Build) 7.00 root data:TableFullScan + │ └─TableFullScan 7.00 cop[tikv] table:t2 keep order:false + └─TableReader(Probe) 7.00 root data:TableFullScan + └─TableFullScan 7.00 cop[tikv] table:t1 keep order:false +show warnings; +Level Code Message +explain format = 'brief' with cte1 as (select /*+ MERGE() */ * from t1), cte2 as (with cte3 as (with cte5 as (select * from t2),cte6 as (select * from t3) select * from cte5,cte6) ,cte4 as (select * from t4) select * from cte3,cte4) select * from cte1,cte2; +id estRows task access object operator info +HashJoin 2401.00 root CARTESIAN inner join +├─HashJoin(Build) 49.00 root CARTESIAN inner join +│ ├─TableReader(Build) 7.00 root data:TableFullScan +│ │ └─TableFullScan 7.00 cop[tikv] table:t4 keep order:false +│ └─TableReader(Probe) 7.00 root data:TableFullScan +│ └─TableFullScan 7.00 cop[tikv] table:t3 keep order:false +└─HashJoin(Probe) 49.00 root CARTESIAN inner join + ├─TableReader(Build) 7.00 root data:TableFullScan + │ └─TableFullScan 7.00 cop[tikv] table:t2 keep order:false + └─TableReader(Probe) 7.00 root data:TableFullScan + └─TableFullScan 7.00 cop[tikv] table:t1 keep order:false +show warnings; +Level Code Message +explain format = 'brief' with cte1 as (select * from t1), cte2 as (with cte3 as (with cte5 as (select * from t2),cte6 as (select * from t3) select * from cte5,cte6) ,cte4 as (select /*+ MERGE() */ * from t4) select * from cte3,cte4) select * from cte1,cte2; +id estRows task access object operator info +HashJoin 2401.00 root CARTESIAN inner join +├─HashJoin(Build) 49.00 root CARTESIAN inner join +│ ├─TableReader(Build) 7.00 root data:TableFullScan +│ │ └─TableFullScan 7.00 cop[tikv] table:t4 keep order:false +│ └─TableReader(Probe) 7.00 root data:TableFullScan +│ └─TableFullScan 7.00 cop[tikv] table:t3 keep order:false +└─HashJoin(Probe) 49.00 root CARTESIAN inner join + ├─TableReader(Build) 7.00 root data:TableFullScan + │ └─TableFullScan 7.00 cop[tikv] table:t2 keep order:false + └─TableReader(Probe) 7.00 root data:TableFullScan + └─TableFullScan 7.00 cop[tikv] table:t1 keep order:false +show warnings; +Level Code Message +explain format = 'brief' with cte1 as (select * from t1), cte2 as (with cte3 as (with cte5 as (select * from t2),cte6 as (select /*+ MERGE() */ * from t3) select * from cte5,cte6) ,cte4 as (select * from t4) select * from cte3,cte4) select * from cte1,cte2; +id estRows task access object operator info +HashJoin 2401.00 root CARTESIAN inner join +├─HashJoin(Build) 49.00 root CARTESIAN inner join +│ ├─TableReader(Build) 7.00 root data:TableFullScan +│ │ └─TableFullScan 7.00 cop[tikv] table:t4 keep order:false +│ └─TableReader(Probe) 7.00 root data:TableFullScan +│ └─TableFullScan 7.00 cop[tikv] table:t3 keep order:false +└─HashJoin(Probe) 49.00 root CARTESIAN inner join + ├─TableReader(Build) 7.00 root data:TableFullScan + │ └─TableFullScan 7.00 cop[tikv] table:t2 keep order:false + └─TableReader(Probe) 7.00 root data:TableFullScan + └─TableFullScan 7.00 cop[tikv] table:t1 keep order:false +show warnings; +Level Code Message +explain format = 'brief' with cte2 as (with cte4 as (select * from tc) select * from te, cte4) select * from cte2; +id estRows task access object operator info +HashJoin 49.00 root CARTESIAN inner join +├─TableReader(Build) 7.00 root data:TableFullScan +│ └─TableFullScan 7.00 cop[tikv] table:tc keep order:false +└─TableReader(Probe) 7.00 root data:TableFullScan + └─TableFullScan 7.00 cop[tikv] table:te keep order:false +show warnings; +Level Code Message +explain format = 'brief' with cte2 as (with cte4 as (select /*+ merge() */ * from tc) select * from te, cte4) select * from cte2; +id estRows task access object operator info +HashJoin 49.00 root CARTESIAN inner join +├─TableReader(Build) 7.00 root data:TableFullScan +│ └─TableFullScan 7.00 cop[tikv] table:tc keep order:false +└─TableReader(Probe) 7.00 root data:TableFullScan + └─TableFullScan 7.00 cop[tikv] table:te keep order:false +show warnings; +Level Code Message +explain format = 'brief' with cte1 as (with cte2 as (with cte3 as (select /*+ MERGE() */ * from t2) select /*+ MERGE() */ * from cte3) select * from cte2,(select /*+ MERGE() */ * from t1) ttt) select * from cte1; +id estRows task access object operator info +HashJoin 49.00 root CARTESIAN inner join +├─TableReader(Build) 7.00 root data:TableFullScan +│ └─TableFullScan 7.00 cop[tikv] table:t1 keep order:false +└─TableReader(Probe) 7.00 root data:TableFullScan + └─TableFullScan 7.00 cop[tikv] table:t2 keep order:false +show warnings; +Level Code Message +Warning 1815 Hint merge() is inapplicable. Please check whether the hint is used in the right place, you should use this hint inside the CTE. +Warning 1815 Hint merge() is inapplicable. Please check whether the hint is used in the right place, you should use this hint inside the CTE. +explain format = 'brief' with cte1 as (with cte2 as (with cte3 as (select /*+ MERGE() */ * from t2) select /*+ MERGE() */ * from cte3) select * from cte2,(select * from t1) ttt) select * from cte1,(select /*+ MERGE() */ * from t3) ttw; +id estRows task access object operator info +HashJoin 343.00 root CARTESIAN inner join +├─TableReader(Build) 7.00 root data:TableFullScan +│ └─TableFullScan 7.00 cop[tikv] table:t3 keep order:false +└─HashJoin(Probe) 49.00 root CARTESIAN inner join + ├─TableReader(Build) 7.00 root data:TableFullScan + │ └─TableFullScan 7.00 cop[tikv] table:t1 keep order:false + └─TableReader(Probe) 7.00 root data:TableFullScan + └─TableFullScan 7.00 cop[tikv] table:t2 keep order:false +show warnings; +Level Code Message +Warning 1815 Hint merge() is inapplicable. Please check whether the hint is used in the right place, you should use this hint inside the CTE. +explain format = 'brief' with cte1 as (with cte2 as (with cte3 as (select /*+ MERGE() */ * from t2) select /*+ MERGE() */ * from cte3) select * from cte2,(select * from t1) ttt) select * from cte1,(select * from t3) ttw; +id estRows task access object operator info +HashJoin 343.00 root CARTESIAN inner join +├─TableReader(Build) 7.00 root data:TableFullScan +│ └─TableFullScan 7.00 cop[tikv] table:t3 keep order:false +└─HashJoin(Probe) 49.00 root CARTESIAN inner join + ├─TableReader(Build) 7.00 root data:TableFullScan + │ └─TableFullScan 7.00 cop[tikv] table:t1 keep order:false + └─TableReader(Probe) 7.00 root data:TableFullScan + └─TableFullScan 7.00 cop[tikv] table:t2 keep order:false +show warnings; +Level Code Message +set tidb_cost_model_version=2; +drop table if exists t; +CREATE TABLE `t` (`a` int(11)); +insert into t values (1), (5), (10), (15), (20), (30), (50); +set tidb_opt_force_inline_cte=1; -- enable force inline CTE; +explain format='brief' with cte as (select * from t) select * from cte; -- inline; +id estRows task access object operator info +TableReader 10000.00 root data:TableFullScan +└─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +show warnings; +Level Code Message +explain format='brief' with cte as (select /*+ MERGE() */ * from t) select * from cte; -- inline; +id estRows task access object operator info +TableReader 10000.00 root data:TableFullScan +└─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +show warnings; +Level Code Message +explain format='brief' with cte as (select * from t) select * from cte cte1, cte cte2; -- inline CTEs is used by multi consumers; +id estRows task access object operator info +HashJoin 100000000.00 root CARTESIAN inner join +├─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 + └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +show warnings; +Level Code Message +explain format='brief' with cte1 as (select * from t), cte2 as (select a from cte1 group by a) select * from cte1, cte2; -- multi inline CTEs; +id estRows task access object operator info +HashJoin 80000000.00 root CARTESIAN inner join +├─HashAgg(Build) 8000.00 root group by:planner__core__casetest__physicalplantest__physical_plan.t.a, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t.a)->planner__core__casetest__physicalplantest__physical_plan.t.a +│ └─TableReader 8000.00 root data:HashAgg +│ └─HashAgg 8000.00 cop[tikv] group by:planner__core__casetest__physicalplantest__physical_plan.t.a, +│ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +└─TableReader(Probe) 10000.00 root data:TableFullScan + └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +show warnings; +Level Code Message +explain format='brief' with recursive cte1(c1) as (select 1 union select c1 + 1 c1 from cte1 where c1 < 100) select * from cte1; -- Recursive CTE can not be inlined; +id estRows task access object operator info +CTEFullScan 2.00 root CTE:cte1 data:CTE_0 +CTE_0 2.00 root Recursive CTE +├─Projection(Seed Part) 1.00 root 1->Column#2 +│ └─TableDual 1.00 root rows:1 +└─Projection(Recursive Part) 0.80 root cast(plus(Column#3, 1), bigint(1) BINARY)->Column#5 + └─Selection 0.80 root lt(Column#3, 100) + └─CTETable 1.00 root Scan on CTE_0 +show warnings; +Level Code Message +Warning 1815 Recursive CTE cte1 can not be inlined by merge() or tidb_opt_force_inline_cte. +explain format='brief' with cte1 as (with cte2 as (select * from t) select * from cte2) select * from cte1; -- non-recursive 'cte2' definition inside another non-recursive 'cte1'; +id estRows task access object operator info +TableReader 10000.00 root data:TableFullScan +└─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +show warnings; +Level Code Message +explain format='brief' with recursive cte2(c1) as (with cte1 as (select * from t) select a c1 from cte1 union select c1+1 c1 from cte2 where c1 < 100) select * from cte2; -- non-recursive 'cte1' inside recursive 'cte2'; +id estRows task access object operator info +CTEFullScan 8001.00 root CTE:cte2 data:CTE_0 +CTE_0 8001.00 root Recursive CTE +├─TableReader(Seed Part) 10000.00 root data:TableFullScan +│ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +└─Projection(Recursive Part) 8000.00 root cast(plus(planner__core__casetest__physicalplantest__physical_plan.t.a, 1), int(11))->planner__core__casetest__physicalplantest__physical_plan.t.a + └─Selection 8000.00 root lt(planner__core__casetest__physicalplantest__physical_plan.t.a, 100) + └─CTETable 10000.00 root Scan on CTE_0 +show warnings; +Level Code Message +Warning 1815 Recursive CTE cte2 can not be inlined by merge() or tidb_opt_force_inline_cte. +explain format='brief' with cte1 as (with recursive cte2(c1) as (select 1 union select c1 + 1 c1 from cte2 where c1 < 100) select * from cte2) select * from cte1; -- recursive 'cte2' inside non-recursive 'cte1'; +id estRows task access object operator info +CTEFullScan 2.00 root CTE:cte2 data:CTE_2 +CTE_2 2.00 root Recursive CTE +├─Projection(Seed Part) 1.00 root 1->Column#9 +│ └─TableDual 1.00 root rows:1 +└─Projection(Recursive Part) 0.80 root cast(plus(Column#10, 1), bigint(1) BINARY)->Column#12 + └─Selection 0.80 root lt(Column#10, 100) + └─CTETable 1.00 root Scan on CTE_2 +show warnings; +Level Code Message +Warning 1815 Recursive CTE cte2 can not be inlined by merge() or tidb_opt_force_inline_cte. +Warning 1815 Recursive CTE cte2 can not be inlined by merge() or tidb_opt_force_inline_cte. +set tidb_opt_force_inline_cte=0; -- disable force inline CTE; +explain format='brief' with cte as (select * from t) select * from cte; -- inlined by single consumer; +id estRows task access object operator info +TableReader 10000.00 root data:TableFullScan +└─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +show warnings; +Level Code Message +explain format='brief' with cte as (select /*+ MERGE() */ * from t) select * from cte; -- inline, merge hint override session variable; +id estRows task access object operator info +TableReader 10000.00 root data:TableFullScan +└─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +show warnings; +Level Code Message +explain format='brief' with recursive cte1(c1) as (select 1 union select /*+ MERGE() */ c1 + 1 c1 from cte1 where c1 < 100) select * from cte1; -- Recursive CTE can not be inlined; +id estRows task access object operator info +CTEFullScan 2.00 root CTE:cte1 data:CTE_0 +CTE_0 2.00 root Recursive CTE +├─Projection(Seed Part) 1.00 root 1->Column#2 +│ └─TableDual 1.00 root rows:1 +└─Projection(Recursive Part) 0.80 root cast(plus(Column#3, 1), bigint(1) BINARY)->Column#5 + └─Selection 0.80 root lt(Column#3, 100) + └─CTETable 1.00 root Scan on CTE_0 +show warnings; +Level Code Message +Warning 1815 Recursive CTE cte1 can not be inlined by merge() or tidb_opt_force_inline_cte. +explain format='brief' with cte1 as (with cte2 as (select * from t) select * from cte2) select * from cte1; -- non-recursive 'cte2' definition inside another non-recursive 'cte1'; +id estRows task access object operator info +TableReader 10000.00 root data:TableFullScan +└─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +show warnings; +Level Code Message +explain format='brief' with recursive cte2(c1) as (with cte1 as (select * from t) select a c1 from cte1 union select c1+1 c1 from cte2 where c1 < 100) select * from cte2; -- non-recursive 'cte1' inside recursive 'cte2'; +id estRows task access object operator info +CTEFullScan 8001.00 root CTE:cte2 data:CTE_0 +CTE_0 8001.00 root Recursive CTE +├─TableReader(Seed Part) 10000.00 root data:TableFullScan +│ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +└─Projection(Recursive Part) 8000.00 root cast(plus(planner__core__casetest__physicalplantest__physical_plan.t.a, 1), int(11))->planner__core__casetest__physicalplantest__physical_plan.t.a + └─Selection 8000.00 root lt(planner__core__casetest__physicalplantest__physical_plan.t.a, 100) + └─CTETable 10000.00 root Scan on CTE_0 +show warnings; +Level Code Message +explain format='brief' with cte1 as (with recursive cte2(c1) as (select 1 union select c1 + 1 c1 from cte2 where c1 < 100) select * from cte2) select * from cte1; -- recursive 'cte2' inside non-recursive 'cte1'; +id estRows task access object operator info +CTEFullScan 2.00 root CTE:cte2 data:CTE_2 +CTE_2 2.00 root Recursive CTE +├─Projection(Seed Part) 1.00 root 1->Column#9 +│ └─TableDual 1.00 root rows:1 +└─Projection(Recursive Part) 0.80 root cast(plus(Column#10, 1), bigint(1) BINARY)->Column#12 + └─Selection 0.80 root lt(Column#10, 100) + └─CTETable 1.00 root Scan on CTE_2 +show warnings; +Level Code Message +set tidb_cost_model_version=DEFAULT; +set tidb_opt_force_inline_cte=DEFAULT; +drop table if exists t, t1, t2; +CREATE TABLE `t` (`a` int(11)); +create table t1 (c1 int primary key, c2 int, index c2 (c2)); +create table t2 (c1 int unique, c2 int); +insert into t values (1), (5), (10), (15), (20), (30), (50); +explain format='brief' with recursive cte1(c1) as (select c1 from t1 union select c1 from t2 limit 1) select * from cte1; -- non-recursive limit, inline cte1; +id estRows task access object operator info +Limit 1.00 root offset:0, count:1 +└─HashAgg 1.00 root group by:Column#18, funcs:firstrow(Column#18)->Column#18 + └─Union 20000.00 root + ├─TableReader 10000.00 root data:TableFullScan + │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo + └─IndexReader 10000.00 root index:IndexFullScan + └─IndexFullScan 10000.00 cop[tikv] table:t2, index:c1(c1) keep order:false, stats:pseudo +explain format='brief' with recursive cte1(c1) as (select c1 from t1 union select c1 from t2 limit 100 offset 100) select * from cte1; -- non-recursive limit, inline cte1; +id estRows task access object operator info +Limit 100.00 root offset:100, count:100 +└─HashAgg 200.00 root group by:Column#18, funcs:firstrow(Column#18)->Column#18 + └─Union 20000.00 root + ├─TableReader 10000.00 root data:TableFullScan + │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo + └─IndexReader 10000.00 root index:IndexFullScan + └─IndexFullScan 10000.00 cop[tikv] table:t2, index:c1(c1) keep order:false, stats:pseudo +explain format='brief' with recursive cte1(c1) as (select c1 from t1 union select c1 from t2 limit 0 offset 0) select * from cte1; -- non-recursive limit, inline cte1; +id estRows task access object operator info +TableDual 0.00 root rows:0 +explain format='brief' with cte1 as (select 1), cte2 as (select 2) select * from cte1 union (with cte2 as (select 3) select * from cte2 union all select * from cte2) -- inline cte1, not inline cte2; +id estRows task access object operator info +HashAgg 3.00 root group by:Column#9, funcs:firstrow(Column#9)->Column#9 +└─Union 3.00 root + ├─Projection 1.00 root 1->Column#9 + │ └─TableDual 1.00 root rows:1 + └─Union 2.00 root + ├─CTEFullScan 1.00 root CTE:cte2 data:CTE_2 + └─CTEFullScan 1.00 root CTE:cte2 data:CTE_2 +CTE_2 1.00 root Non-Recursive CTE +└─Projection(Seed Part) 1.00 root 3->Column#5 + └─TableDual 1.00 root rows:1 +explain format='brief' with base1 as (WITH RECURSIVE cte(a) AS (with tmp as (select 1 as a) SELECT a from tmp UNION SELECT a+1 FROM cte) SELECT * FROM cte) select * from base1; -- issue #43318; +id estRows task access object operator info +CTEFullScan 2.00 root CTE:cte data:CTE_3 +CTE_3 2.00 root Recursive CTE +├─Projection(Seed Part) 1.00 root 1->Column#15 +│ └─TableDual 1.00 root rows:1 +└─Projection(Recursive Part) 1.00 root cast(plus(Column#16, 1), bigint(1) BINARY)->Column#18 + └─CTETable 1.00 root Scan on CTE_3 +explain format='brief' with cte as (select 1) select * from cte; -- inline cte; +id estRows task access object operator info +Projection 1.00 root 1->Column#3 +└─TableDual 1.00 root rows:1 +explain format='brief' with cte1 as (select 1), cte2 as (select 2) select * from cte1 union select * from cte2; -- inline cte1, cte2; +id estRows task access object operator info +HashAgg 2.00 root group by:Column#7, funcs:firstrow(Column#7)->Column#7 +└─Union 2.00 root + ├─Projection 1.00 root 1->Column#7 + │ └─TableDual 1.00 root rows:1 + └─Projection 1.00 root 2->Column#7 + └─TableDual 1.00 root rows:1 +explain format='brief' with cte as (select 1) select * from cte union select * from cte; -- cannot be inlined; +id estRows task access object operator info +HashAgg 2.00 root group by:Column#4, funcs:firstrow(Column#4)->Column#4 +└─Union 2.00 root + ├─CTEFullScan 1.00 root CTE:cte data:CTE_0 + └─CTEFullScan 1.00 root CTE:cte data:CTE_0 +CTE_0 1.00 root Non-Recursive CTE +└─Projection(Seed Part) 1.00 root 1->Column#1 + └─TableDual 1.00 root rows:1 +explain format='brief' with cte as (with cte as (select 1) select * from cte) select * from cte; -- inline nested cte; +id estRows task access object operator info +Projection 1.00 root 1->Column#7 +└─TableDual 1.00 root rows:1 +explain format='brief' with cte as (with cte as (select 1) select * from cte) select * from cte a, cte b; -- inline inner cte, cannot be inlined outer cte; +id estRows task access object operator info +HashJoin 1.00 root CARTESIAN inner join +├─CTEFullScan(Build) 1.00 root CTE:cte AS b data:CTE_0 +└─CTEFullScan(Probe) 1.00 root CTE:cte AS a data:CTE_0 +CTE_0 1.00 root Non-Recursive CTE +└─Projection(Seed Part) 1.00 root 1->Column#3 + └─TableDual 1.00 root rows:1 +explain format='brief' with cte1 as (select 1), cte2 as (with cte3 as (select * from cte1) select * from cte3) select * from cte1, cte2; -- inline cte2, cte3, cannot be inlined cte1; +id estRows task access object operator info +HashJoin 1.00 root CARTESIAN inner join +├─CTEFullScan(Build) 1.00 root CTE:cte1 data:CTE_0 +└─CTEFullScan(Probe) 1.00 root CTE:cte1 data:CTE_0 +CTE_0 1.00 root Non-Recursive CTE +└─Projection(Seed Part) 1.00 root 1->Column#1 + └─TableDual 1.00 root rows:1 +explain format='brief' with cte1 as (select 1), cte2 as (with cte3 as (select * from cte1) select * from cte3) select * from cte2; -- inline cte1, cte2, cte3; +id estRows task access object operator info +Projection 1.00 root 1->Column#12 +└─TableDual 1.00 root rows:1 +explain format='brief' with cte1 as (select 1), cte2 as (select * from cte1) select * from cte2 a, cte2 b; -- inline cte1, cannot be inlined cte2; +id estRows task access object operator info +HashJoin 1.00 root CARTESIAN inner join +├─CTEFullScan(Build) 1.00 root CTE:cte2 AS b data:CTE_1 +└─CTEFullScan(Probe) 1.00 root CTE:cte2 AS a data:CTE_1 +CTE_1 1.00 root Non-Recursive CTE +└─Projection(Seed Part) 1.00 root 1->Column#3 + └─TableDual 1.00 root rows:1 +explain format='brief' with recursive cte(a) as (select 1 union select a from cte) select * from cte; -- recursive cte cannot be inlined; +id estRows task access object operator info +CTEFullScan 2.00 root CTE:cte data:CTE_0 +CTE_0 2.00 root Recursive CTE +├─Projection(Seed Part) 1.00 root 1->Column#2 +│ └─TableDual 1.00 root rows:1 +└─CTETable(Recursive Part) 1.00 root Scan on CTE_0 +explain format='brief' with x as (select * from (select a from t for update) s) select * from x where a = 1; +id estRows task access object operator info +Projection 10.00 root planner__core__casetest__physicalplantest__physical_plan.t.a +└─SelectLock 10.00 root for update 0 + └─TableReader 10.00 root data:Selection + └─Selection 10.00 cop[tikv] eq(planner__core__casetest__physicalplantest__physical_plan.t.a, 1) + └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +set tidb_opt_force_inline_cte=1; -- enable force inline CTE; +explain format='brief' with cte as (select 1) select * from cte union select * from cte; -- force inline cte while multi-consumer; +id estRows task access object operator info +HashAgg 2.00 root group by:Column#6, funcs:firstrow(Column#6)->Column#6 +└─Union 2.00 root + ├─Projection 1.00 root 1->Column#6 + │ └─TableDual 1.00 root rows:1 + └─Projection 1.00 root 1->Column#6 + └─TableDual 1.00 root rows:1 +set tidb_opt_force_inline_cte=0; -- disable force inline CTE; +explain format='brief' with cte as (select 1) select /*+ MERGE() */ * from cte union select * from cte; -- firstly inline cte, secondly cannot be inlined; +id estRows task access object operator info +HashAgg 2.00 root group by:Column#4, funcs:firstrow(Column#4)->Column#4 +└─Union 2.00 root + ├─CTEFullScan 1.00 root CTE:cte data:CTE_0 + └─CTEFullScan 1.00 root CTE:cte data:CTE_0 +CTE_0 1.00 root Non-Recursive CTE +└─Projection(Seed Part) 1.00 root 1->Column#1 + └─TableDual 1.00 root rows:1 +explain format='brief' with a as (select 8 as id from dual),maxa as (select max(id) as max_id from a),b as (with recursive temp as (select 1 as lvl from dual union all select lvl+1 from temp, maxa where lvl < max_id)select * from temp) select * from b; -- issue #47711, maxa cannot be inlined because it contains agg and in the recursive part of cte temp; +id estRows task access object operator info +CTEFullScan 1.64 root CTE:temp data:CTE_4 +CTE_4 1.64 root Recursive CTE +├─Projection(Seed Part) 1.00 root 1->Column#14 +│ └─TableDual 1.00 root rows:1 +└─Projection(Recursive Part) 0.64 root cast(plus(Column#15, 1), bigint(1) BINARY)->Column#18 + └─HashJoin 0.64 root CARTESIAN inner join, other cond:lt(Column#15, Column#16) + ├─Selection(Build) 0.80 root not(isnull(Column#16)) + │ └─CTEFullScan 1.00 root CTE:maxa data:CTE_1 + └─Selection(Probe) 0.80 root not(isnull(Column#15)) + └─CTETable 1.00 root Scan on CTE_4 +CTE_1 1.00 root Non-Recursive CTE +└─StreamAgg(Seed Part) 1.00 root funcs:max(Column#3)->Column#4 + └─Projection 1.00 root 8->Column#3 + └─TableDual 1.00 root rows:1 +explain format='brief' with a as (select count(*) from t1), b as (select 2 as bb from a), c as (with recursive tmp as (select 1 as res from t1 union all select res+1 from tmp,b where res+1 < bb) select * from tmp) select * from c; -- inline a, cannot be inline b because b indirectly contains agg and in the recursive part of cte tmp; +id estRows task access object operator info +CTEFullScan 20000.00 root CTE:tmp data:CTE_4 +CTE_4 20000.00 root Recursive CTE +├─Projection(Seed Part) 10000.00 root 1->Column#26 +│ └─TableReader 10000.00 root data:TableFullScan +│ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo +└─Projection(Recursive Part) 10000.00 root cast(plus(Column#27, 1), bigint(1) BINARY)->Column#30 + └─HashJoin 10000.00 root CARTESIAN inner join, other cond:lt(plus(Column#27, 1), Column#28) + ├─CTEFullScan(Build) 1.00 root CTE:b data:CTE_1 + └─CTETable(Probe) 10000.00 root Scan on CTE_4 +CTE_1 1.00 root Non-Recursive CTE +└─Projection(Seed Part) 1.00 root 2->Column#8 + └─HashAgg 1.00 root funcs:count(Column#37)->Column#35 + └─TableReader 1.00 root data:HashAgg + └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#37 + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo +explain format='brief' with a as (select count(*) from t1), b as (select 2 as bb from a), c as (with recursive tmp as (select bb as res from b union all select res+1 from tmp where res +1 < 10) select * from tmp) select * from c; -- inline a, b, cannot be inline tmp, c; +id estRows task access object operator info +CTEFullScan 1.80 root CTE:tmp data:CTE_4 +CTE_4 1.80 root Recursive CTE +├─Projection(Seed Part) 1.00 root 2->Column#37 +│ └─HashAgg 1.00 root funcs:count(Column#46)->Column#44 +│ └─TableReader 1.00 root data:HashAgg +│ └─HashAgg 1.00 cop[tikv] funcs:count(1)->Column#46 +│ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo +└─Projection(Recursive Part) 0.80 root cast(plus(Column#38, 1), bigint(1) BINARY)->Column#40 + └─Selection 0.80 root lt(plus(Column#38, 1), 10) + └─CTETable 1.00 root Scan on CTE_4 +drop table if exists t; +create table t(a int, b int, c int, index(c)); +insert into t values (1, 1, 1), (1, 1, 3), (1, 2, 3), (2, 1, 3), (1, 2, NULL); +drop table if exists pt; +CREATE TABLE pt (a int, b int) PARTITION BY RANGE (a) ( +PARTITION p0 VALUES LESS THAN (2), +PARTITION p1 VALUES LESS THAN (100) +); +drop table if exists tc; +CREATE TABLE `tc`(`timestamp` timestamp NULL DEFAULT NULL, KEY `idx_timestamp` (`timestamp`)) PARTITION BY RANGE ( UNIX_TIMESTAMP(`timestamp`) ) (PARTITION `p2020072312` VALUES LESS THAN (1595480400),PARTITION `p2020072313` VALUES LESS THAN (1595484000)); +drop table if exists ta; +create table ta(a int); +insert into ta values(1), (1); +drop table if exists tb; +create table tb(a int); +insert into tb values(1), (1); +set session sql_mode=''; +set session tidb_hashagg_partial_concurrency=1; +set session tidb_hashagg_final_concurrency=1; +set @@tidb_partition_prune_mode='static'; +set @@session.tidb_opt_distinct_agg_push_down = 1; +set session tidb_opt_agg_push_down = 0; +set tidb_cost_model_version=2; +explain format = 'brief' select /*+ HASH_AGG(), AGG_TO_COP() */ sum(distinct b) from pt; +id estRows task access object operator info +HashAgg 1.00 root funcs:sum(distinct Column#9)->Column#4 +└─Projection 16000.00 root cast(planner__core__casetest__physicalplantest__physical_plan.pt.b, decimal(10,0) BINARY)->Column#9 + └─PartitionUnion 16000.00 root + ├─HashAgg 8000.00 root group by:planner__core__casetest__physicalplantest__physical_plan.pt.b, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.pt.b)->planner__core__casetest__physicalplantest__physical_plan.pt.b, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.pt.b)->planner__core__casetest__physicalplantest__physical_plan.pt.b + │ └─TableReader 8000.00 root data:HashAgg + │ └─HashAgg 8000.00 cop[tikv] group by:planner__core__casetest__physicalplantest__physical_plan.pt.b, + │ └─TableFullScan 10000.00 cop[tikv] table:pt, partition:p0 keep order:false, stats:pseudo + └─HashAgg 8000.00 root group by:planner__core__casetest__physicalplantest__physical_plan.pt.b, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.pt.b)->planner__core__casetest__physicalplantest__physical_plan.pt.b, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.pt.b)->planner__core__casetest__physicalplantest__physical_plan.pt.b + └─TableReader 8000.00 root data:HashAgg + └─HashAgg 8000.00 cop[tikv] group by:planner__core__casetest__physicalplantest__physical_plan.pt.b, + └─TableFullScan 10000.00 cop[tikv] table:pt, partition:p1 keep order:false, stats:pseudo +select /*+ HASH_AGG(), AGG_TO_COP() */ sum(distinct b) from pt; +sum(distinct b) +NULL +explain format = 'brief' select /*+ HASH_AGG(), AGG_TO_COP() */ count(distinct a) from (select * from ta union all select * from tb) t; +id estRows task access object operator info +HashAgg 1.00 root funcs:count(distinct Column#5)->Column#6 +└─Union 20000.00 root + ├─TableReader 10000.00 root data:TableFullScan + │ └─TableFullScan 10000.00 cop[tikv] table:ta keep order:false, stats:pseudo + └─TableReader 10000.00 root data:TableFullScan + └─TableFullScan 10000.00 cop[tikv] table:tb keep order:false, stats:pseudo +select /*+ HASH_AGG(), AGG_TO_COP() */ count(distinct a) from (select * from ta union all select * from tb) t; +count(distinct a) +1 +explain format = 'brief' select distinct DATE_FORMAT(timestamp, '%Y-%m-%d %H') as tt from tc ; +id estRows task access object operator info +HashAgg 16000.00 root group by:Column#5, funcs:firstrow(Column#6)->Column#3 +└─PartitionUnion 16000.00 root + ├─HashAgg 8000.00 root group by:Column#7, funcs:firstrow(Column#7)->Column#6, funcs:firstrow(Column#7)->Column#5 + │ └─IndexReader 8000.00 root index:HashAgg + │ └─HashAgg 8000.00 cop[tikv] group by:date_format(planner__core__casetest__physicalplantest__physical_plan.tc.timestamp, "%Y-%m-%d %H"), + │ └─IndexFullScan 10000.00 cop[tikv] table:tc, partition:p2020072312, index:idx_timestamp(timestamp) keep order:false, stats:pseudo + └─HashAgg 8000.00 root group by:Column#10, funcs:firstrow(Column#10)->Column#6, funcs:firstrow(Column#10)->Column#5 + └─IndexReader 8000.00 root index:HashAgg + └─HashAgg 8000.00 cop[tikv] group by:date_format(planner__core__casetest__physicalplantest__physical_plan.tc.timestamp, "%Y-%m-%d %H"), + └─IndexFullScan 10000.00 cop[tikv] table:tc, partition:p2020072313, index:idx_timestamp(timestamp) keep order:false, stats:pseudo +select distinct DATE_FORMAT(timestamp, '%Y-%m-%d %H') as tt from tc ; +tt +set session sql_mode=DEFAULT; +set session tidb_hashagg_partial_concurrency=DEFAULT; +set session tidb_hashagg_final_concurrency=DEFAULT; +set @@tidb_partition_prune_mode=DEFAULT; +set @@session.tidb_opt_distinct_agg_push_down = DEFAULT; +set session tidb_opt_agg_push_down = DEFAULT; +drop table if exists t; +create table t (a int, b int, index idx_a(a), index idx_b(b)); +insert into t values(1, 1); +insert into t values(1, 2); +insert into t values(2, 4); +insert into t values(3, 5); +explain format = 'brief' select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by t1.a; +id estRows task access object operator info +MergeJoin 12487.50 root inner join, left key:planner__core__casetest__physicalplantest__physical_plan.t.a, right key:planner__core__casetest__physicalplantest__physical_plan.t.b +├─IndexReader(Build) 9990.00 root index:IndexFullScan +│ └─IndexFullScan 9990.00 cop[tikv] table:t2, index:idx_b(b) keep order:true, stats:pseudo +└─IndexReader(Probe) 9990.00 root index:IndexFullScan + └─IndexFullScan 9990.00 cop[tikv] table:t1, index:idx_a(a) keep order:true, stats:pseudo +select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by t1.a; +a +1 +1 +2 +explain format = 'brief' select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by t1.a+1; +id estRows task access object operator info +Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a +└─Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a, plus(planner__core__casetest__physicalplantest__physical_plan.t.a, 1)->Column#7 + └─MergeJoin 12487.50 root inner join, left key:planner__core__casetest__physicalplantest__physical_plan.t.a, right key:planner__core__casetest__physicalplantest__physical_plan.t.b + ├─IndexReader(Build) 9990.00 root index:IndexFullScan + │ └─IndexFullScan 9990.00 cop[tikv] table:t2, index:idx_b(b) keep order:true, stats:pseudo + └─IndexReader(Probe) 9990.00 root index:IndexFullScan + └─IndexFullScan 9990.00 cop[tikv] table:t1, index:idx_a(a) keep order:true, stats:pseudo +select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by t1.a+1; +a +1 +1 +2 +explain format = 'brief' select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by t1.a-1; +id estRows task access object operator info +Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a +└─Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a, minus(planner__core__casetest__physicalplantest__physical_plan.t.a, 1)->Column#7 + └─MergeJoin 12487.50 root inner join, left key:planner__core__casetest__physicalplantest__physical_plan.t.a, right key:planner__core__casetest__physicalplantest__physical_plan.t.b + ├─IndexReader(Build) 9990.00 root index:IndexFullScan + │ └─IndexFullScan 9990.00 cop[tikv] table:t2, index:idx_b(b) keep order:true, stats:pseudo + └─IndexReader(Probe) 9990.00 root index:IndexFullScan + └─IndexFullScan 9990.00 cop[tikv] table:t1, index:idx_a(a) keep order:true, stats:pseudo +select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by t1.a-1; +a +1 +1 +2 +explain format = 'brief' select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by -t1.a; +id estRows task access object operator info +Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a +└─Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a, unaryminus(planner__core__casetest__physicalplantest__physical_plan.t.a)->Column#7 + └─MergeJoin 12487.50 root inner join, left key:planner__core__casetest__physicalplantest__physical_plan.t.a, right key:planner__core__casetest__physicalplantest__physical_plan.t.b + ├─IndexReader(Build) 9990.00 root index:IndexFullScan + │ └─IndexFullScan 9990.00 cop[tikv] table:t2, index:idx_b(b) keep order:true, desc, stats:pseudo + └─IndexReader(Probe) 9990.00 root index:IndexFullScan + └─IndexFullScan 9990.00 cop[tikv] table:t1, index:idx_a(a) keep order:true, desc, stats:pseudo +select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by -t1.a; +a +2 +1 +1 +explain format = 'brief' select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by -t1.a+3; +id estRows task access object operator info +Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a +└─Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a, plus(unaryminus(planner__core__casetest__physicalplantest__physical_plan.t.a), 3)->Column#7 + └─MergeJoin 12487.50 root inner join, left key:planner__core__casetest__physicalplantest__physical_plan.t.a, right key:planner__core__casetest__physicalplantest__physical_plan.t.b + ├─IndexReader(Build) 9990.00 root index:IndexFullScan + │ └─IndexFullScan 9990.00 cop[tikv] table:t2, index:idx_b(b) keep order:true, desc, stats:pseudo + └─IndexReader(Probe) 9990.00 root index:IndexFullScan + └─IndexFullScan 9990.00 cop[tikv] table:t1, index:idx_a(a) keep order:true, desc, stats:pseudo +select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by -t1.a+3; +a +2 +1 +1 +explain format = 'brief' select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 1+t1.a; +id estRows task access object operator info +Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a +└─Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a, plus(1, planner__core__casetest__physicalplantest__physical_plan.t.a)->Column#7 + └─MergeJoin 12487.50 root inner join, left key:planner__core__casetest__physicalplantest__physical_plan.t.a, right key:planner__core__casetest__physicalplantest__physical_plan.t.b + ├─IndexReader(Build) 9990.00 root index:IndexFullScan + │ └─IndexFullScan 9990.00 cop[tikv] table:t2, index:idx_b(b) keep order:true, stats:pseudo + └─IndexReader(Probe) 9990.00 root index:IndexFullScan + └─IndexFullScan 9990.00 cop[tikv] table:t1, index:idx_a(a) keep order:true, stats:pseudo +select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 1+t1.a; +a +1 +1 +2 +explain format = 'brief' select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 1-t1.a; +id estRows task access object operator info +Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a +└─Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a, minus(1, planner__core__casetest__physicalplantest__physical_plan.t.a)->Column#7 + └─MergeJoin 12487.50 root inner join, left key:planner__core__casetest__physicalplantest__physical_plan.t.a, right key:planner__core__casetest__physicalplantest__physical_plan.t.b + ├─IndexReader(Build) 9990.00 root index:IndexFullScan + │ └─IndexFullScan 9990.00 cop[tikv] table:t2, index:idx_b(b) keep order:true, desc, stats:pseudo + └─IndexReader(Probe) 9990.00 root index:IndexFullScan + └─IndexFullScan 9990.00 cop[tikv] table:t1, index:idx_a(a) keep order:true, desc, stats:pseudo +select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 1-t1.a; +a +2 +1 +1 +explain format = 'brief' select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 1-t1.a+3; +id estRows task access object operator info +Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a +└─Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a, plus(minus(1, planner__core__casetest__physicalplantest__physical_plan.t.a), 3)->Column#7 + └─MergeJoin 12487.50 root inner join, left key:planner__core__casetest__physicalplantest__physical_plan.t.a, right key:planner__core__casetest__physicalplantest__physical_plan.t.b + ├─IndexReader(Build) 9990.00 root index:IndexFullScan + │ └─IndexFullScan 9990.00 cop[tikv] table:t2, index:idx_b(b) keep order:true, desc, stats:pseudo + └─IndexReader(Probe) 9990.00 root index:IndexFullScan + └─IndexFullScan 9990.00 cop[tikv] table:t1, index:idx_a(a) keep order:true, desc, stats:pseudo +select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 1-t1.a+3; +a +2 +1 +1 +explain format = 'brief' select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 1+t1.a+3; +id estRows task access object operator info +Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a +└─Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a, plus(plus(1, planner__core__casetest__physicalplantest__physical_plan.t.a), 3)->Column#7 + └─MergeJoin 12487.50 root inner join, left key:planner__core__casetest__physicalplantest__physical_plan.t.a, right key:planner__core__casetest__physicalplantest__physical_plan.t.b + ├─IndexReader(Build) 9990.00 root index:IndexFullScan + │ └─IndexFullScan 9990.00 cop[tikv] table:t2, index:idx_b(b) keep order:true, stats:pseudo + └─IndexReader(Probe) 9990.00 root index:IndexFullScan + └─IndexFullScan 9990.00 cop[tikv] table:t1, index:idx_a(a) keep order:true, stats:pseudo +select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 1+t1.a+3; +a +1 +1 +2 +explain format = 'brief' select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 3*t1.a; +id estRows task access object operator info +Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a +└─Sort 12487.50 root Column#7 + └─Projection 12487.50 root planner__core__casetest__physicalplantest__physical_plan.t.a, mul(3, planner__core__casetest__physicalplantest__physical_plan.t.a)->Column#7 + └─MergeJoin 12487.50 root inner join, left key:planner__core__casetest__physicalplantest__physical_plan.t.a, right key:planner__core__casetest__physicalplantest__physical_plan.t.b + ├─IndexReader(Build) 9990.00 root index:IndexFullScan + │ └─IndexFullScan 9990.00 cop[tikv] table:t2, index:idx_b(b) keep order:true, stats:pseudo + └─IndexReader(Probe) 9990.00 root index:IndexFullScan + └─IndexFullScan 9990.00 cop[tikv] table:t1, index:idx_a(a) keep order:true, stats:pseudo +select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 3*t1.a; +a +1 +1 +2 +drop table if exists test.tt; +create table test.tt (a int,b int, index(a), index(b)); +insert into test.tt values (1, 1), (2, 2), (3, 4); +set @@tidb_partition_prune_mode='static'; +explain format = 'brief' select /*+nth_plan(1)*/ * from test.tt where a=1 and b=1; +id estRows task access object operator info +TableReader 0.01 root data:Selection +└─Selection 0.01 cop[tikv] eq(test.tt.a, 1), eq(test.tt.b, 1) + └─TableFullScan 10000.00 cop[tikv] table:tt keep order:false, stats:pseudo +explain format = 'brief' select /*+nth_plan(2)*/ * from test.tt where a=1 and b=1; +id estRows task access object operator info +IndexLookUp 0.01 root +├─IndexRangeScan(Build) 10.00 cop[tikv] table:tt, index:a(a) range:[1,1], keep order:false, stats:pseudo +└─Selection(Probe) 0.01 cop[tikv] eq(test.tt.b, 1) + └─TableRowIDScan 10.00 cop[tikv] table:tt keep order:false, stats:pseudo +explain format = 'brief' select /*+nth_plan(3)*/ * from test.tt where a=1 and b=1; +id estRows task access object operator info +IndexLookUp 0.01 root +├─IndexRangeScan(Build) 10.00 cop[tikv] table:tt, index:b(b) range:[1,1], keep order:false, stats:pseudo +└─Selection(Probe) 0.01 cop[tikv] eq(test.tt.a, 1) + └─TableRowIDScan 10.00 cop[tikv] table:tt keep order:false, stats:pseudo +explain format = 'brief' select /*+nth_plan(2)*/ * from test.tt where a=1 and b=1; +id estRows task access object operator info +IndexLookUp 0.01 root +├─IndexRangeScan(Build) 10.00 cop[tikv] table:tt, index:a(a) range:[1,1], keep order:false, stats:pseudo +└─Selection(Probe) 0.01 cop[tikv] eq(test.tt.b, 1) + └─TableRowIDScan 10.00 cop[tikv] table:tt keep order:false, stats:pseudo +explain format = 'brief' select * from test.tt where a=1 and b=1; +id estRows task access object operator info +IndexLookUp 0.01 root +├─IndexRangeScan(Build) 10.00 cop[tikv] table:tt, index:a(a) range:[1,1], keep order:false, stats:pseudo +└─Selection(Probe) 0.01 cop[tikv] eq(test.tt.b, 1) + └─TableRowIDScan 10.00 cop[tikv] table:tt keep order:false, stats:pseudo +set @@tidb_partition_prune_mode=DEFAULT; +drop table if exists t; +create table t(e enum('c','b','a',''), index idx(e)); +insert ignore into t values(0),(1),(2),(3),(4); +explain format='brief' select e from t where e = 'b'; +id estRows task access object operator info +IndexReader 10.00 root index:IndexRangeScan +└─IndexRangeScan 10.00 cop[tikv] table:t, index:idx(e) range:["b","b"], keep order:false, stats:pseudo +select e from t where e = 'b'; +e +b +explain format='brief' select e from t where e != 'b'; +id estRows task access object operator info +IndexReader 40.00 root index:IndexRangeScan +└─IndexRangeScan 40.00 cop[tikv] table:t, index:idx(e) range:["",""], ["c","c"], ["a","a"], ["",""], keep order:false, stats:pseudo +select e from t where e != 'b'; +e + + +a +c +explain format='brief' select e from t where e > 'b'; +id estRows task access object operator info +IndexReader 10.00 root index:IndexRangeScan +└─IndexRangeScan 10.00 cop[tikv] table:t, index:idx(e) range:["c","c"], keep order:false, stats:pseudo +select e from t where e > 'b'; +e +c +explain format='brief' select e from t where e >= 'b'; +id estRows task access object operator info +IndexReader 20.00 root index:IndexRangeScan +└─IndexRangeScan 20.00 cop[tikv] table:t, index:idx(e) range:["c","c"], ["b","b"], keep order:false, stats:pseudo +select e from t where e >= 'b'; +e +b +c +explain format='brief' select e from t where e < 'b'; +id estRows task access object operator info +IndexReader 30.00 root index:IndexRangeScan +└─IndexRangeScan 30.00 cop[tikv] table:t, index:idx(e) range:["",""], ["a","a"], ["",""], keep order:false, stats:pseudo +select e from t where e < 'b'; +e + + +a +explain format='brief' select e from t where e <= 'b'; +id estRows task access object operator info +IndexReader 40.00 root index:IndexRangeScan +└─IndexRangeScan 40.00 cop[tikv] table:t, index:idx(e) range:["",""], ["b","b"], ["a","a"], ["",""], keep order:false, stats:pseudo +select e from t where e <= 'b'; +e + + +a +b +explain format='brief' select e from t where e = 2; +id estRows task access object operator info +IndexReader 10.00 root index:IndexRangeScan +└─IndexRangeScan 10.00 cop[tikv] table:t, index:idx(e) range:["b","b"], keep order:false, stats:pseudo +select e from t where e = 2; +e +b +explain format='brief' select e from t where e != 2; +id estRows task access object operator info +IndexReader 6656.67 root index:IndexRangeScan +└─IndexRangeScan 6656.67 cop[tikv] table:t, index:idx(e) range:[-inf,"b"), ("b",+inf], keep order:false, stats:pseudo +select e from t where e != 2; +e + + +a +c +explain format='brief' select e from t where e > 2; +id estRows task access object operator info +IndexReader 3333.33 root index:IndexRangeScan +└─IndexRangeScan 3333.33 cop[tikv] table:t, index:idx(e) range:("b",+inf], keep order:false, stats:pseudo +select e from t where e > 2; +e + +a +explain format='brief' select e from t where e >= 2; +id estRows task access object operator info +IndexReader 3333.33 root index:IndexRangeScan +└─IndexRangeScan 3333.33 cop[tikv] table:t, index:idx(e) range:["b",+inf], keep order:false, stats:pseudo +select e from t where e >= 2; +e + +a +b +explain format='brief' select e from t where e < 2; +id estRows task access object operator info +IndexReader 3323.33 root index:IndexRangeScan +└─IndexRangeScan 3323.33 cop[tikv] table:t, index:idx(e) range:[-inf,"b"), keep order:false, stats:pseudo +select e from t where e < 2; +e + +c +explain format='brief' select e from t where e <= 2; +id estRows task access object operator info +IndexReader 3323.33 root index:IndexRangeScan +└─IndexRangeScan 3323.33 cop[tikv] table:t, index:idx(e) range:[-inf,"b"], keep order:false, stats:pseudo +select e from t where e <= 2; +e + +b +c +explain format='brief' select e from t where e > ''; +id estRows task access object operator info +IndexReader 30.00 root index:IndexRangeScan +└─IndexRangeScan 30.00 cop[tikv] table:t, index:idx(e) range:["c","c"], ["b","b"], ["a","a"], keep order:false, stats:pseudo +select e from t where e > ''; +e +a +b +c +explain format='brief' select e from t where e > 'd'; +id estRows task access object operator info +TableDual 0.00 root rows:0 +select e from t where e > 'd'; +e +explain format='brief' select e from t where e > -1; +id estRows task access object operator info +IndexReader 3333.33 root index:IndexRangeScan +└─IndexRangeScan 3333.33 cop[tikv] table:t, index:idx(e) range:["",+inf], keep order:false, stats:pseudo +select e from t where e > -1; +e + + +a +b +c +explain format='brief' select e from t where e > 5; +id estRows task access object operator info +IndexReader 3333.33 root index:IndexRangeScan +└─IndexRangeScan 3333.33 cop[tikv] table:t, index:idx(e) range:("",+inf], keep order:false, stats:pseudo +select e from t where e > 5; +e +explain format='brief' select e from t where e = ''; +id estRows task access object operator info +IndexReader 20.00 root index:IndexRangeScan +└─IndexRangeScan 20.00 cop[tikv] table:t, index:idx(e) range:["",""], ["",""], keep order:false, stats:pseudo +select e from t where e = ''; +e + + +explain format='brief' select e from t where e != ''; +id estRows task access object operator info +IndexReader 30.00 root index:IndexRangeScan +└─IndexRangeScan 30.00 cop[tikv] table:t, index:idx(e) range:["c","c"], ["b","b"], ["a","a"], keep order:false, stats:pseudo +select e from t where e != ''; +e +a +b +c +drop table if exists PK_S_MULTI_31; +CREATE TABLE `PK_S_MULTI_31` ( +`COL1` tinyint(45) NOT NULL, +`COL2` tinyint(45) NOT NULL, +PRIMARY KEY (`COL1`,`COL2`) /*T![clustered_index] NONCLUSTERED */ +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; +insert into PK_S_MULTI_31 values(122,100),(124,-22),(124,34),(127,103); +explain format='brief' SELECT col2 FROM PK_S_MULTI_31 AS T1 WHERE (SELECT count(DISTINCT COL1, COL2) FROM PK_S_MULTI_31 AS T2 WHERE T2.COL1>T1.COL1)>2 order by col2; +id estRows task access object operator info +Sort 0.80 root planner__core__casetest__physicalplantest__physical_plan.pk_s_multi_31.col2 +└─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) + ├─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 + └─IndexFullScan 10000.00 cop[tikv] table:T1, index:PRIMARY(COL1, COL2) keep order:false, stats:pseudo +SELECT col2 FROM PK_S_MULTI_31 AS T1 WHERE (SELECT count(DISTINCT COL1, COL2) FROM PK_S_MULTI_31 AS T2 WHERE T2.COL1>T1.COL1)>2 order by col2; +col2 +100 +drop table if exists t1, t2; +create table t1(a int, b int as (a+1) virtual); +create table t2(a int, b int as (a+1) virtual, c int, key idx_a(a)); +## Make sure row_count(tikv_selection) == row_count(table_reader) and row_count(table_reader) > row_count(tidb_selection) +explain format='brief' select * from t1 where a > 1 and b > 1; +id estRows task access object operator info +Selection 1111.11 root gt(planner__core__casetest__physicalplantest__physical_plan.t1.b, 1) +└─TableReader 3333.33 root data:Selection + └─Selection 3333.33 cop[tikv] gt(planner__core__casetest__physicalplantest__physical_plan.t1.a, 1) + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo +## Make sure row_count(tikv_selection) == row_count(index_lookup) and row_count(index_lookup) > row_count(tidb_selection) +explain format='brief' select * from t2 use index(idx_a) where a > 1 and b > 1 and c > 1; +id estRows task access object operator info +Selection 370.37 root gt(planner__core__casetest__physicalplantest__physical_plan.t2.b, 1) +└─IndexLookUp 1111.11 root + ├─IndexRangeScan(Build) 3333.33 cop[tikv] table:t2, index:idx_a(a) range:(1,+inf], keep order:false, stats:pseudo + └─Selection(Probe) 1111.11 cop[tikv] gt(planner__core__casetest__physicalplantest__physical_plan.t2.c, 1) + └─TableRowIDScan 3333.33 cop[tikv] table:t2 keep order:false, stats:pseudo +drop table if exists t; +create table t(a int); +explain format='brief' select * from t where t.a < 3 and t.a < 3; +id estRows task access object operator info +TableReader 3323.33 root data:Selection +└─Selection 3323.33 cop[tikv] lt(planner__core__casetest__physicalplantest__physical_plan.t.a, 3) + └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +set tidb_cost_model_version=2; +drop table if exists t; +CREATE TABLE `t` (`a` int(11), `b` int(11), `c` int(11), `d` date); +insert into t (a,b,c,d) value(1,4,5,'2019-06-01'); +insert into t (a,b,c,d) value(2,null,1,'2019-07-01'); +insert into t (a,b,c,d) value(3,4,5,'2019-08-01'); +insert into t (a,b,c,d) value(3,6,2,'2019-09-01'); +insert into t (a,b,c,d) value(10,4,null,'2020-06-01'); +insert into t (a,b,c,d) value(20,null,1,'2020-07-01'); +insert into t (a,b,c,d) value(30,4,5,'2020-08-01'); +insert into t (a,b,c,d) value(30,6,5,'2020-09-01'); +select date_format(d,'%Y') as df, sum(a), count(b), count(distinct c) from t group by date_format(d,'%Y') order by df; +df sum(a) count(b) count(distinct c) +2019 9 3 3 +2020 90 3 2 +set @@tidb_opt_skew_distinct_agg=1; +select date_format(d,'%Y') as df, sum(a), count(b), count(distinct c) from t group by date_format(d,'%Y') order by df; +df sum(a) count(b) count(distinct c) +2019 9 3 3 +2020 90 3 2 +select count(distinct b), sum(c) from t group by a order by 1,2; +count(distinct b) sum(c) +0 1 +0 1 +1 NULL +1 5 +2 7 +2 10 +select count(distinct b) from t group by date_format(d,'%Y') order by 1; +count(distinct b) +2 +2 +select count(a), count(distinct b), max(b) from t group by date_format(d,'%Y') order by 1,2,3; +count(a) count(distinct b) max(b) +4 2 6 +4 2 6 +select count(a), count(distinct b), max(b) from t group by date_format(d,'%Y'),c order by 1,2,3; +count(a) count(distinct b) max(b) +1 0 NULL +1 0 NULL +1 1 4 +1 1 6 +2 1 4 +2 2 6 +select avg(distinct b), count(a), sum(b) from t group by date_format(d,'%Y'),c order by 1,2,3; +avg(distinct b) count(a) sum(b) +NULL 1 NULL +NULL 1 NULL +4.0000 1 4 +4.0000 2 8 +5.0000 2 10 +6.0000 1 6 +explain format='brief' select date_format(d,'%Y') as df, sum(a), count(b), count(distinct c) from t group by date_format(d,'%Y'); +id estRows task access object operator info +Projection 8000.00 root date_format(planner__core__casetest__physicalplantest__physical_plan.t.d, %Y)->Column#9, Column#6, cast(Column#13, bigint(21) BINARY)->Column#7, Column#8 +└─HashAgg 8000.00 root group by:Column#23, funcs:sum(Column#19)->Column#6, funcs:sum(Column#20)->Column#13, funcs:count(Column#21)->Column#8, funcs:firstrow(Column#22)->planner__core__casetest__physicalplantest__physical_plan.t.d + └─Projection 8000.00 root Column#11->Column#19, cast(Column#12, decimal(20,0) BINARY)->Column#20, planner__core__casetest__physicalplantest__physical_plan.t.c->Column#21, planner__core__casetest__physicalplantest__physical_plan.t.d->Column#22, date_format(planner__core__casetest__physicalplantest__physical_plan.t.d, %Y)->Column#23 + └─HashAgg 8000.00 root group by:Column#14, planner__core__casetest__physicalplantest__physical_plan.t.c, funcs:sum(Column#15)->Column#11, funcs:count(Column#16)->Column#12, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t.c)->planner__core__casetest__physicalplantest__physical_plan.t.c, funcs:firstrow(Column#18)->planner__core__casetest__physicalplantest__physical_plan.t.d + └─TableReader 8000.00 root data:HashAgg + └─HashAgg 8000.00 cop[tikv] group by:date_format(planner__core__casetest__physicalplantest__physical_plan.t.d, "%Y"), planner__core__casetest__physicalplantest__physical_plan.t.c, funcs:sum(planner__core__casetest__physicalplantest__physical_plan.t.a)->Column#15, funcs:count(planner__core__casetest__physicalplantest__physical_plan.t.b)->Column#16, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t.d)->Column#18 + └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +explain format='brief' select d, a, count(*), count(b), count(distinct c) from t group by d, a; +id estRows task access object operator info +Projection 8000.00 root planner__core__casetest__physicalplantest__physical_plan.t.d, planner__core__casetest__physicalplantest__physical_plan.t.a, cast(Column#10, bigint(21) BINARY)->Column#6, cast(Column#12, bigint(21) BINARY)->Column#7, Column#8 +└─HashAgg 8000.00 root group by:Column#23, Column#24, funcs:sum(Column#18)->Column#10, funcs:sum(Column#19)->Column#12, funcs:count(Column#20)->Column#8, funcs:firstrow(Column#21)->planner__core__casetest__physicalplantest__physical_plan.t.a, funcs:firstrow(Column#22)->planner__core__casetest__physicalplantest__physical_plan.t.d + └─Projection 8000.00 root cast(Column#9, decimal(20,0) BINARY)->Column#18, cast(Column#11, decimal(20,0) BINARY)->Column#19, planner__core__casetest__physicalplantest__physical_plan.t.c->Column#20, planner__core__casetest__physicalplantest__physical_plan.t.a->Column#21, planner__core__casetest__physicalplantest__physical_plan.t.d->Column#22, planner__core__casetest__physicalplantest__physical_plan.t.d->Column#23, planner__core__casetest__physicalplantest__physical_plan.t.a->Column#24 + └─HashAgg 8000.00 root group by:planner__core__casetest__physicalplantest__physical_plan.t.a, planner__core__casetest__physicalplantest__physical_plan.t.c, planner__core__casetest__physicalplantest__physical_plan.t.d, funcs:count(Column#13)->Column#9, funcs:count(Column#14)->Column#11, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t.c)->planner__core__casetest__physicalplantest__physical_plan.t.c, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t.a)->planner__core__casetest__physicalplantest__physical_plan.t.a, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t.d)->planner__core__casetest__physicalplantest__physical_plan.t.d + └─TableReader 8000.00 root data:HashAgg + └─HashAgg 8000.00 cop[tikv] group by:planner__core__casetest__physicalplantest__physical_plan.t.a, planner__core__casetest__physicalplantest__physical_plan.t.c, planner__core__casetest__physicalplantest__physical_plan.t.d, funcs:count(1)->Column#13, funcs:count(planner__core__casetest__physicalplantest__physical_plan.t.b)->Column#14 + └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +explain format='brief' select d, sum(a), count(b), avg(distinct c) from t group by d; +id estRows task access object operator info +Projection 8000.00 root planner__core__casetest__physicalplantest__physical_plan.t.d, Column#6, cast(Column#11, bigint(21) BINARY)->Column#7, Column#8 +└─HashAgg 8000.00 root group by:Column#20, funcs:sum(Column#16)->Column#6, funcs:sum(Column#17)->Column#11, funcs:avg(Column#18)->Column#8, funcs:firstrow(Column#19)->planner__core__casetest__physicalplantest__physical_plan.t.d + └─Projection 8000.00 root Column#9->Column#16, cast(Column#10, decimal(20,0) BINARY)->Column#17, cast(planner__core__casetest__physicalplantest__physical_plan.t.c, decimal(10,0) BINARY)->Column#18, planner__core__casetest__physicalplantest__physical_plan.t.d->Column#19, planner__core__casetest__physicalplantest__physical_plan.t.d->Column#20 + └─HashAgg 8000.00 root group by:planner__core__casetest__physicalplantest__physical_plan.t.c, planner__core__casetest__physicalplantest__physical_plan.t.d, funcs:sum(Column#12)->Column#9, funcs:count(Column#13)->Column#10, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t.c)->planner__core__casetest__physicalplantest__physical_plan.t.c, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t.d)->planner__core__casetest__physicalplantest__physical_plan.t.d + └─TableReader 8000.00 root data:HashAgg + └─HashAgg 8000.00 cop[tikv] group by:planner__core__casetest__physicalplantest__physical_plan.t.c, planner__core__casetest__physicalplantest__physical_plan.t.d, funcs:sum(planner__core__casetest__physicalplantest__physical_plan.t.a)->Column#12, funcs:count(planner__core__casetest__physicalplantest__physical_plan.t.b)->Column#13 + └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +set tidb_cost_model_version=DEFAULT; +set @@tidb_opt_skew_distinct_agg=DEFAULT; +set tidb_cost_model_version=2; +drop table if exists t1, t2, t3; +create table t1(a int primary key, b int not null); +create table t2(a int primary key, b int not null); +create table t3(a int primary key, b int not null); +insert into t1 values(1,1),(2,2); +insert into t2 values(1,1),(2,1); +insert into t3 values(1,1),(2,1); +explain format = 'brief' select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 +select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +explain format = 'brief' select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 + └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +explain format = 'brief' select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 + └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +explain format = 'brief' select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 +select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +explain format = 'brief' select /*+ hash_join_build(t2), hash_join_probe(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 +select /*+ hash_join_build(t2), hash_join_probe(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +explain format = 'brief' select /*+ hash_join_probe(t2), hash_join_build(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 + └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +select /*+ hash_join_probe(t2), hash_join_build(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +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)] +├─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 +select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +2 NULL +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)] +├─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 + └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +2 NULL +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)] +├─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 + └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +2 NULL +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)] +├─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 +select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +2 NULL +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)] +├─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 +select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 right join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +NULL 2 +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)] +├─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 + └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 right join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +NULL 2 +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)] +├─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 + └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 right join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +NULL 2 +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)] +├─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 +select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 right join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +NULL 2 +show warnings; +Level Code Message +explain format = 'brief' select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 straight_join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 +select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 straight_join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +explain format = 'brief' select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 straight_join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 + └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 straight_join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +explain format = 'brief' select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 straight_join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 + └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 straight_join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +explain format = 'brief' select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 straight_join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 +select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 straight_join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +explain format = 'brief' select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 cross join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 +select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 cross join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +explain format = 'brief' select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 cross join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 + └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 cross join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +explain format = 'brief' select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 cross join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 + └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 cross join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +explain format = 'brief' select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 cross join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 +select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 cross join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +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)] +├─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 +select /*+ hash_join_build(t1) */ * from t1 where t1.a in (select t2.a from t2 where t1.b = t2.b); +a b +1 1 +show warnings; +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)] +├─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 +select /*+ hash_join_probe(t1) */ * from t1 where t1.a in (select t2.a from t2 where t1.b = t2.b); +a b +1 1 +show warnings; +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)] +├─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 +select /*+ hash_join_build(t2@sel_2) */ * from t1 where t1.a in (select t2.a from t2 where t1.b = t2.b); +a b +1 1 +show warnings; +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)] +├─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 +select /*+ hash_join_probe(t2@sel_2) */ * from t1 where t1.a in (select t2.a from t2 where t1.b = t2.b); +a b +1 1 +show warnings; +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)] +├─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 +select /*+ hash_join_build(t1) */ * from t1 where t1.a not in (select t2.a from t2 where t1.b = t2.b); +a b +2 2 +show warnings; +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)] +├─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 +select /*+ hash_join_probe(t1) */ * from t1 where t1.a not in (select t2.a from t2 where t1.b = t2.b); +a b +2 2 +show warnings; +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)] +├─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 +select /*+ hash_join_build(t2@sel_2) */ * from t1 where t1.a not in (select t2.a from t2 where t1.b = t2.b); +a b +2 2 +show warnings; +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)] +├─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 +select /*+ hash_join_probe(t2@sel_2) */ * from t1 where t1.a not in (select t2.a from t2 where t1.b = t2.b); +a b +2 2 +show warnings; +Level Code Message +Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for anti semi join, please check the hint +explain format = 'brief' select /*+ hash_join_build(t1) */ sum(t1.a in (select a from t2)) from t1; +id estRows task access object operator info +HashAgg 1.00 root funcs:sum(Column#9)->Column#8 +└─Projection 10000.00 root cast(Column#7, decimal(3,0) BINARY)->Column#9 + └─MergeJoin 10000.00 root left outer semi join, left key:planner__core__casetest__physicalplantest__physical_plan.t1.a, right key:planner__core__casetest__physicalplantest__physical_plan.t2.a + ├─TableReader(Build) 10000.00 root data:TableFullScan + │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:true, stats:pseudo + └─TableReader(Probe) 10000.00 root data:TableFullScan + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo +select /*+ hash_join_build(t1) */ sum(t1.a in (select a from t2)) from t1; +sum(t1.a in (select a from t2)) +2 +show warnings; +Level Code Message +Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for left outer semi join, please check the hint +Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for left outer semi join, please check the hint +explain format = 'brief' select /*+ hash_join_probe(t1) */ sum(t1.a in (select a from t2)) from t1; +id estRows task access object operator info +HashAgg 1.00 root funcs:sum(Column#9)->Column#8 +└─Projection 10000.00 root cast(Column#7, decimal(3,0) BINARY)->Column#9 + └─MergeJoin 10000.00 root left outer semi join, left key:planner__core__casetest__physicalplantest__physical_plan.t1.a, right key:planner__core__casetest__physicalplantest__physical_plan.t2.a + ├─TableReader(Build) 10000.00 root data:TableFullScan + │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:true, stats:pseudo + └─TableReader(Probe) 10000.00 root data:TableFullScan + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo +select /*+ hash_join_probe(t1) */ sum(t1.a in (select a from t2)) from t1; +sum(t1.a in (select a from t2)) +2 +show warnings; +Level Code Message +Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for left outer semi join, please check the hint +Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for left outer semi join, please check the hint +explain format = 'brief' select /*+ hash_join_build(t2@sel_2) */ sum(t1.a in (select a from t2)) from t1; +id estRows task access object operator info +HashAgg 1.00 root funcs:sum(Column#9)->Column#8 +└─Projection 10000.00 root cast(Column#7, decimal(3,0) BINARY)->Column#9 + └─MergeJoin 10000.00 root left outer semi join, left key:planner__core__casetest__physicalplantest__physical_plan.t1.a, right key:planner__core__casetest__physicalplantest__physical_plan.t2.a + ├─TableReader(Build) 10000.00 root data:TableFullScan + │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:true, stats:pseudo + └─TableReader(Probe) 10000.00 root data:TableFullScan + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo +select /*+ hash_join_build(t2@sel_2) */ sum(t1.a in (select a from t2)) from t1; +sum(t1.a in (select a from t2)) +2 +show warnings; +Level Code Message +Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for left outer semi join, please check the hint +Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for left outer semi join, please check the hint +explain format = 'brief' select /*+ hash_join_probe(t2@sel_2) */ sum(t1.a in (select a from t2)) from t1; +id estRows task access object operator info +HashAgg 1.00 root funcs:sum(Column#9)->Column#8 +└─Projection 10000.00 root cast(Column#7, decimal(3,0) BINARY)->Column#9 + └─MergeJoin 10000.00 root left outer semi join, left key:planner__core__casetest__physicalplantest__physical_plan.t1.a, right key:planner__core__casetest__physicalplantest__physical_plan.t2.a + ├─TableReader(Build) 10000.00 root data:TableFullScan + │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:true, stats:pseudo + └─TableReader(Probe) 10000.00 root data:TableFullScan + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo +select /*+ hash_join_probe(t2@sel_2) */ sum(t1.a in (select a from t2)) from t1; +sum(t1.a in (select a from t2)) +2 +show warnings; +Level Code Message +Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for left outer semi join, please check the hint +Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for left outer semi join, please check the hint +explain format = 'brief' select /*+ hash_join_build(t1) */ sum(t1.a not in (select a from t2)) from t1; +id estRows task access object operator info +HashAgg 1.00 root funcs:sum(Column#9)->Column#8 +└─Projection 10000.00 root cast(Column#7, decimal(3,0) BINARY)->Column#9 + └─MergeJoin 10000.00 root anti left outer semi join, left key:planner__core__casetest__physicalplantest__physical_plan.t1.a, right key:planner__core__casetest__physicalplantest__physical_plan.t2.a + ├─TableReader(Build) 10000.00 root data:TableFullScan + │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:true, stats:pseudo + └─TableReader(Probe) 10000.00 root data:TableFullScan + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo +select /*+ hash_join_build(t1) */ sum(t1.a not in (select a from t2)) from t1; +sum(t1.a not in (select a from t2)) +0 +show warnings; +Level Code Message +Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for anti left outer semi join, please check the hint +Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for anti left outer semi join, please check the hint +explain format = 'brief' select /*+ hash_join_probe(t1) */ sum(t1.a not in (select a from t2)) from t1; +id estRows task access object operator info +HashAgg 1.00 root funcs:sum(Column#9)->Column#8 +└─Projection 10000.00 root cast(Column#7, decimal(3,0) BINARY)->Column#9 + └─MergeJoin 10000.00 root anti left outer semi join, left key:planner__core__casetest__physicalplantest__physical_plan.t1.a, right key:planner__core__casetest__physicalplantest__physical_plan.t2.a + ├─TableReader(Build) 10000.00 root data:TableFullScan + │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:true, stats:pseudo + └─TableReader(Probe) 10000.00 root data:TableFullScan + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo +select /*+ hash_join_probe(t1) */ sum(t1.a not in (select a from t2)) from t1; +sum(t1.a not in (select a from t2)) +0 +show warnings; +Level Code Message +Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for anti left outer semi join, please check the hint +Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for anti left outer semi join, please check the hint +explain format = 'brief' select /*+ hash_join_build(t2@sel_2) */ sum(t1.a not in (select a from t2)) from t1; +id estRows task access object operator info +HashAgg 1.00 root funcs:sum(Column#9)->Column#8 +└─Projection 10000.00 root cast(Column#7, decimal(3,0) BINARY)->Column#9 + └─MergeJoin 10000.00 root anti left outer semi join, left key:planner__core__casetest__physicalplantest__physical_plan.t1.a, right key:planner__core__casetest__physicalplantest__physical_plan.t2.a + ├─TableReader(Build) 10000.00 root data:TableFullScan + │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:true, stats:pseudo + └─TableReader(Probe) 10000.00 root data:TableFullScan + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo +select /*+ hash_join_build(t2@sel_2) */ sum(t1.a not in (select a from t2)) from t1; +sum(t1.a not in (select a from t2)) +0 +show warnings; +Level Code Message +Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for anti left outer semi join, please check the hint +Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for anti left outer semi join, please check the hint +explain format = 'brief' select /*+ hash_join_probe(t2@sel_2) */ sum(t1.a not in (select a from t2)) from t1; +id estRows task access object operator info +HashAgg 1.00 root funcs:sum(Column#9)->Column#8 +└─Projection 10000.00 root cast(Column#7, decimal(3,0) BINARY)->Column#9 + └─MergeJoin 10000.00 root anti left outer semi join, left key:planner__core__casetest__physicalplantest__physical_plan.t1.a, right key:planner__core__casetest__physicalplantest__physical_plan.t2.a + ├─TableReader(Build) 10000.00 root data:TableFullScan + │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:true, stats:pseudo + └─TableReader(Probe) 10000.00 root data:TableFullScan + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo +select /*+ hash_join_probe(t2@sel_2) */ sum(t1.a not in (select a from t2)) from t1; +sum(t1.a not in (select a from t2)) +0 +show warnings; +Level Code Message +Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for anti left outer semi join, please check the hint +Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for anti left outer semi join, please check the hint +explain format = 'brief' select /*+ hash_join_probe(t2, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 + └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +select /*+ hash_join_probe(t2, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +Warning 1815 There are no matching table names for (t2) in optimizer hint /*+ HASH_JOIN_PROBE(t2, t2) */. Maybe you can use the table alias name +explain format = 'brief' select /*+ hash_join_build(t1, t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 + └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +select /*+ hash_join_build(t1, t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +Warning 1815 There are no matching table names for (t1) in optimizer hint /*+ HASH_JOIN_BUILD(t1, t1) */. Maybe you can use the table alias name +explain format = 'brief' select /*+ hash_join_probe(tt) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 +select /*+ hash_join_probe(tt) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +Warning 1815 There are no matching table names for (tt) in optimizer hint /*+ HASH_JOIN_PROBE(tt) */. Maybe you can use the table alias name +explain format = 'brief' select /*+ hash_join_build(tt) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 +select /*+ hash_join_build(tt) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +Warning 1815 There are no matching table names for (tt) in optimizer hint /*+ HASH_JOIN_BUILD(tt) */. Maybe you can use the table alias name +explain format = 'brief' select /*+ hash_join_probe(tt) */ tt.a, t2.a from t1 as tt join t2 on tt.a=t2.a and tt.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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:tt keep order:false, stats:pseudo +select /*+ hash_join_probe(tt) */ tt.a, t2.a from t1 as tt join t2 on tt.a=t2.a and tt.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +explain format = 'brief' select /*+ hash_join_build(tt) */ tt.a, t2.a from t1 as tt join t2 on tt.a=t2.a and tt.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─TableReader(Build) 10000.00 root data:TableFullScan +│ └─TableFullScan 10000.00 cop[tikv] table:tt keep order:false, stats:pseudo +└─TableReader(Probe) 10000.00 root data:TableFullScan + └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +select /*+ hash_join_build(tt) */ tt.a, t2.a from t1 as tt join t2 on tt.a=t2.a and tt.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +explain format = 'brief' select /*+ hash_join_probe(t2, t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 +select /*+ hash_join_probe(t2, t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +Warning 1815 Join hints conflict after join reorder phase, you can only specify one type of join +explain format = 'brief' select /*+ hash_join_build(t1, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 +select /*+ hash_join_build(t1, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +Warning 1815 Join hints conflict after join reorder phase, you can only specify one type of join +explain format = 'brief' select /*+ hash_join_build(t1) hash_join_probe(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 +select /*+ hash_join_build(t1) hash_join_probe(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +Warning 1815 Join hints are conflict, you can only specify one type of join +explain format = 'brief' select /*+ hash_join_build(t2) hash_join_probe(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 +select /*+ hash_join_build(t2) hash_join_probe(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +Warning 1815 Join hints are conflict, you can only specify one type of join +explain format = 'brief' select /*+ hash_join_build(t1) leading(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a; +id estRows task access object operator info +HashJoin 15625.00 root inner join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t2.a, 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 +└─HashJoin(Probe) 12500.00 root inner 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)] + ├─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 + └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +select /*+ hash_join_build(t1) leading(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a; +a a +1 1 +show warnings; +Level Code Message +explain format = 'brief' select /*+ hash_join_build(t1) leading(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a; +id estRows task access object operator info +Projection 15625.00 root planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a +└─HashJoin 15625.00 root inner join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t2.a, 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 + └─HashJoin(Probe) 12500.00 root inner join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t2.a, planner__core__casetest__physicalplantest__physical_plan.t1.a) eq(planner__core__casetest__physicalplantest__physical_plan.t2.b, planner__core__casetest__physicalplantest__physical_plan.t1.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 + └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +select /*+ hash_join_build(t1) leading(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a; +a a +1 1 +show warnings; +Level Code Message +explain format = 'brief' select /*+ hash_join_probe(t1) leading(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a; +id estRows task access object operator info +HashJoin 15625.00 root inner join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t2.a, 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 +└─HashJoin(Probe) 12500.00 root inner 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)] + ├─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 +select /*+ hash_join_probe(t1) leading(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a; +a a +1 1 +show warnings; +Level Code Message +explain format = 'brief' select /*+ hash_join_probe(t1) leading(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a; +id estRows task access object operator info +Projection 15625.00 root planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a +└─HashJoin 15625.00 root inner join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t2.a, 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 + └─HashJoin(Probe) 12500.00 root inner join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t2.a, planner__core__casetest__physicalplantest__physical_plan.t1.a) eq(planner__core__casetest__physicalplantest__physical_plan.t2.b, planner__core__casetest__physicalplantest__physical_plan.t1.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 + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo +select /*+ hash_join_probe(t1) leading(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a; +a a +1 1 +show warnings; +Level Code Message +explain format = 'brief' select /*+ hash_join_build(t1) straight_join() */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a; +id estRows task access object operator info +HashJoin 15625.00 root inner join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t2.a, 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 +└─HashJoin(Probe) 12500.00 root inner 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)] + ├─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 + └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +select /*+ hash_join_build(t1) straight_join() */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a; +a a +1 1 +show warnings; +Level Code Message +explain format = 'brief' select /*+ hash_join_build(t1) straight_join() */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a; +id estRows task access object operator info +HashJoin 15625.00 root inner join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t2.a, 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 +└─HashJoin(Probe) 12500.00 root inner 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)] + ├─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 + └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +select /*+ hash_join_build(t1) straight_join() */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a; +a a +1 1 +show warnings; +Level Code Message +explain format = 'brief' select /*+ hash_join_probe(t1) straight_join() */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a; +id estRows task access object operator info +HashJoin 15625.00 root inner join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t2.a, 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 +└─HashJoin(Probe) 12500.00 root inner 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)] + ├─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 +select /*+ hash_join_probe(t1) straight_join() */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a; +a a +1 1 +show warnings; +Level Code Message +explain format = 'brief' select /*+ hash_join_probe(t1) straight_join() */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a; +id estRows task access object operator info +HashJoin 15625.00 root inner join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t2.a, 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 +└─HashJoin(Probe) 12500.00 root inner 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)] + ├─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 +select /*+ hash_join_probe(t1) straight_join() */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a; +a a +1 1 +show warnings; +Level Code Message +explain format = 'brief' select /*+ hash_join_build(t2) hash_join(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 +select /*+ hash_join_build(t2) hash_join(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +Warning 1815 Join hints are conflict, you can only specify one type of join +explain format = 'brief' select /*+ hash_join_probe(t2) hash_join(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 +select /*+ hash_join_probe(t2) hash_join(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +Warning 1815 Join hints are conflict, you can only specify one type of join +explain format = 'brief' select /*+ hash_join_build(t2) hash_join(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 +select /*+ hash_join_build(t2) hash_join(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +Warning 1815 Join hints conflict after join reorder phase, you can only specify one type of join +explain format = 'brief' select /*+ hash_join_probe(t2) hash_join(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 +select /*+ hash_join_probe(t2) hash_join(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +Warning 1815 Join hints conflict after join reorder phase, you can only specify one type of join +explain format = 'brief' select /*+ hash_join_build(t2) hash_join(t2, t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 +select /*+ hash_join_build(t2) hash_join(t2, t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +Warning 1815 Join hints are conflict, you can only specify one type of join +explain format = 'brief' select /*+ hash_join_probe(t2) hash_join(t2, t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 +select /*+ hash_join_probe(t2) hash_join(t2, t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +Warning 1815 Join hints are conflict, you can only specify one type of join +explain format = 'brief' select /*+ hash_join_build(t2) INL_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 +select /*+ hash_join_build(t2) INL_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +Warning 1815 Join hints conflict after join reorder phase, you can only specify one type of join +explain format = 'brief' select /*+ hash_join_probe(t2) INL_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 +select /*+ hash_join_probe(t2) INL_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +Warning 1815 Join hints conflict after join reorder phase, you can only specify one type of join +explain format = 'brief' select /*+ hash_join_build(t1) INL_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 +select /*+ hash_join_build(t1) INL_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +Warning 1815 Join hints are conflict, you can only specify one type of join +explain format = 'brief' select /*+ hash_join_probe(t1) INL_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 +select /*+ hash_join_probe(t1) INL_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +Warning 1815 Join hints are conflict, you can only specify one type of join +explain format = 'brief' select /*+ hash_join_build(t2) INL_HASH_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 +select /*+ hash_join_build(t2) INL_HASH_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +Warning 1815 Join hints conflict after join reorder phase, you can only specify one type of join +explain format = 'brief' select /*+ hash_join_probe(t2) INL_HASH_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 +select /*+ hash_join_probe(t2) INL_HASH_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +Warning 1815 Join hints conflict after join reorder phase, you can only specify one type of join +explain format = 'brief' select /*+ hash_join_build(t1) INL_HASH_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 +select /*+ hash_join_build(t1) INL_HASH_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +Warning 1815 Join hints are conflict, you can only specify one type of join +explain format = 'brief' select /*+ hash_join_probe(t1) INL_HASH_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 +select /*+ hash_join_probe(t1) INL_HASH_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +Warning 1815 Join hints are conflict, you can only specify one type of join +explain format = 'brief' select /*+ hash_join_build(t2) merge_join(t1, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 +select /*+ hash_join_build(t2) merge_join(t1, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +Warning 1815 Join hints are conflict, you can only specify one type of join +explain format = 'brief' select /*+ hash_join_probe(t2) merge_join(t1, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 +select /*+ hash_join_probe(t2) merge_join(t1, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +Warning 1815 Join hints are conflict, you can only specify one type of join +explain format = 'brief' select /*+ hash_join_build(t1) merge_join(t1, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 +select /*+ hash_join_build(t1) merge_join(t1, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +Level Code Message +Warning 1815 Join hints are conflict, you can only specify one type of join +explain format = 'brief' select /*+ hash_join_probe(t1) merge_join(t1, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 12500.00 root inner 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)] +├─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 +select /*+ hash_join_probe(t1) merge_join(t1, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +show warnings; +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 +├─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 + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo +SELECT * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.a = t1.a); +a b +1 1 +2 2 +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 +├─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 + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo +SELECT /*+ hash_join_probe(t1) */ * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.a = t1.a); +a b +1 1 +2 2 +show warnings; +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 +├─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 + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo +SELECT /*+ hash_join_probe(t2@sel_2) */ * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.a = t1.a); +a b +1 1 +2 2 +show warnings; +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 EXISTS (SELECT /*+ SEMI_JOIN_REWRITE() */ 1 FROM t2 WHERE t2.a = t1.a); +id estRows task access object operator info +HashJoin 10000.00 root inner join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a)] +├─StreamAgg(Build) 8000.00 root group by:planner__core__casetest__physicalplantest__physical_plan.t2.a, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t2.a)->planner__core__casetest__physicalplantest__physical_plan.t2.a +│ └─TableReader 8000.00 root data:StreamAgg +│ └─StreamAgg 8000.00 cop[tikv] group by:planner__core__casetest__physicalplantest__physical_plan.t2.a, +│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:true, stats:pseudo +└─TableReader(Probe) 10000.00 root data:TableFullScan + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo +SELECT /*+ hash_join_probe(t1) */ * FROM t1 WHERE EXISTS (SELECT /*+ SEMI_JOIN_REWRITE() */ 1 FROM t2 WHERE t2.a = t1.a); +a b +1 1 +2 2 +show warnings; +Level Code Message +explain format = 'brief' SELECT /*+ hash_join_probe(t2@sel_2) */ * FROM t1 WHERE EXISTS (SELECT /*+ SEMI_JOIN_REWRITE() */ 1 FROM t2 WHERE t2.a = t1.a); +id estRows task access object operator info +HashJoin 10000.00 root inner join, equal:[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:t1 keep order:false, stats:pseudo +└─StreamAgg(Probe) 8000.00 root group by:planner__core__casetest__physicalplantest__physical_plan.t2.a, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t2.a)->planner__core__casetest__physicalplantest__physical_plan.t2.a + └─TableReader 8000.00 root data:StreamAgg + └─StreamAgg 8000.00 cop[tikv] group by:planner__core__casetest__physicalplantest__physical_plan.t2.a, + └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:true, stats:pseudo +SELECT /*+ hash_join_probe(t2@sel_2) */ * FROM t1 WHERE EXISTS (SELECT /*+ SEMI_JOIN_REWRITE() */ 1 FROM t2 WHERE t2.a = t1.a); +a b +1 1 +2 2 +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 +├─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 + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo +SELECT /*+ hash_join_build(t1) */ * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.a = t1.a); +a b +1 1 +2 2 +show warnings; +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 +├─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 + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo +SELECT /*+ hash_join_build(t2@sel_2) */ * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.a = t1.a); +a b +1 1 +2 2 +show warnings; +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 EXISTS (SELECT /*+ SEMI_JOIN_REWRITE() */ 1 FROM t2 WHERE t2.a = t1.a); +id estRows task access object operator info +HashJoin 10000.00 root inner join, equal:[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:t1 keep order:false, stats:pseudo +└─StreamAgg(Probe) 8000.00 root group by:planner__core__casetest__physicalplantest__physical_plan.t2.a, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t2.a)->planner__core__casetest__physicalplantest__physical_plan.t2.a + └─TableReader 8000.00 root data:StreamAgg + └─StreamAgg 8000.00 cop[tikv] group by:planner__core__casetest__physicalplantest__physical_plan.t2.a, + └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:true, stats:pseudo +SELECT /*+ hash_join_build(t1) */ * FROM t1 WHERE EXISTS (SELECT /*+ SEMI_JOIN_REWRITE() */ 1 FROM t2 WHERE t2.a = t1.a); +a b +1 1 +2 2 +show warnings; +Level Code Message +explain format = 'brief' SELECT /*+ hash_join_build(t2@sel_2) */ * FROM t1 WHERE EXISTS (SELECT /*+ SEMI_JOIN_REWRITE() */ 1 FROM t2 WHERE t2.a = t1.a); +id estRows task access object operator info +HashJoin 10000.00 root inner join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a)] +├─StreamAgg(Build) 8000.00 root group by:planner__core__casetest__physicalplantest__physical_plan.t2.a, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t2.a)->planner__core__casetest__physicalplantest__physical_plan.t2.a +│ └─TableReader 8000.00 root data:StreamAgg +│ └─StreamAgg 8000.00 cop[tikv] group by:planner__core__casetest__physicalplantest__physical_plan.t2.a, +│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:true, stats:pseudo +└─TableReader(Probe) 10000.00 root data:TableFullScan + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo +SELECT /*+ hash_join_build(t2@sel_2) */ * FROM t1 WHERE EXISTS (SELECT /*+ SEMI_JOIN_REWRITE() */ 1 FROM t2 WHERE t2.a = t1.a); +a b +1 1 +2 2 +show warnings; +Level Code Message +explain format = 'brief' SELECT t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +id estRows task access object operator info +MergeJoin 12500.00 root inner join, left key:planner__core__casetest__physicalplantest__physical_plan.t1.a, right key:planner__core__casetest__physicalplantest__physical_plan.t2.a +├─TableReader(Build) 10000.00 root data:TableFullScan +│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:true, stats:pseudo +└─TableReader(Probe) 10000.00 root data:TableFullScan + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo +SELECT t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +a b +1 1 +2 2 +show warnings; +Level Code Message +explain format = 'brief' SELECT /*+ 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 +HashJoin 12500.00 root inner join, equal:[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:t1 keep order:false, stats:pseudo +└─TableReader(Probe) 10000.00 root data:TableFullScan + └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +SELECT /*+ hash_join_build(t1) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +a b +1 1 +2 2 +show warnings; +Level Code Message +explain format = 'brief' SELECT /*+ 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 +HashJoin 12500.00 root inner join, equal:[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 + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo +SELECT /*+ hash_join_probe(t1) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +a b +1 1 +2 2 +show warnings; +Level Code Message +explain format = 'brief' SELECT /*+ 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 +HashJoin 12500.00 root inner join, equal:[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 + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo +SELECT /*+ hash_join_build(t2@sel_2) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +a b +1 1 +2 2 +show warnings; +Level Code Message +explain format = 'brief' SELECT /*+ 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 +HashJoin 12500.00 root inner join, equal:[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:t1 keep order:false, stats:pseudo +└─TableReader(Probe) 10000.00 root data:TableFullScan + └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +SELECT /*+ hash_join_probe(t2@sel_2) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +a b +1 1 +2 2 +show warnings; +Level Code Message +explain format = 'brief' SELECT /*+ USE_TOJA(TRUE) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +id estRows task access object operator info +MergeJoin 12500.00 root inner join, left key:planner__core__casetest__physicalplantest__physical_plan.t1.a, right key:planner__core__casetest__physicalplantest__physical_plan.t2.a +├─TableReader(Build) 10000.00 root data:TableFullScan +│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:true, stats:pseudo +└─TableReader(Probe) 10000.00 root data:TableFullScan + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo +SELECT /*+ USE_TOJA(TRUE) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +a b +1 1 +2 2 +show warnings; +Level Code Message +explain format = 'brief' SELECT /*+ USE_TOJA(TRUE) 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 +HashJoin 12500.00 root inner join, equal:[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:t1 keep order:false, stats:pseudo +└─TableReader(Probe) 10000.00 root data:TableFullScan + └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +SELECT /*+ USE_TOJA(TRUE) hash_join_build(t1) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +a b +1 1 +2 2 +show warnings; +Level Code Message +explain format = 'brief' SELECT /*+ USE_TOJA(TRUE) 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 +HashJoin 12500.00 root inner join, equal:[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 + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo +SELECT /*+ USE_TOJA(TRUE) hash_join_probe(t1) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +a b +1 1 +2 2 +show warnings; +Level Code Message +explain format = 'brief' SELECT /*+ USE_TOJA(TRUE) 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 +HashJoin 12500.00 root inner join, equal:[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 + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo +SELECT /*+ USE_TOJA(TRUE) hash_join_build(t2@sel_2) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +a b +1 1 +2 2 +show warnings; +Level Code Message +explain format = 'brief' SELECT /*+ USE_TOJA(TRUE) 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 +HashJoin 12500.00 root inner join, equal:[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:t1 keep order:false, stats:pseudo +└─TableReader(Probe) 10000.00 root data:TableFullScan + └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +SELECT /*+ USE_TOJA(TRUE) hash_join_probe(t2@sel_2) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +a b +1 1 +2 2 +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 +├─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 + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo +SELECT /*+ USE_TOJA(false) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +a b +1 1 +2 2 +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 +├─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 + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo +SELECT /*+ USE_TOJA(false) hash_join_build(t1) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +a b +1 1 +2 2 +show warnings; +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 +├─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 + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo +SELECT /*+ USE_TOJA(false) hash_join_probe(t1) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +a b +1 1 +2 2 +show warnings; +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 +├─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 + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo +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); +a b +1 1 +2 2 +show warnings; +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 +├─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 + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo +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); +a b +1 1 +2 2 +show warnings; +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 +set tidb_cost_model_version=DEFAULT; +set tidb_cost_model_version=2; +drop table if exists t1, t2, t3; +create table t1(a int, b int) partition by hash(a) partitions 4; +create table t2(a int, b int) partition by hash(a) partitions 5; +create table t3(a int, b int) partition by hash(b) partitions 3; +insert into t1 values(1,1),(2,2); +insert into t2 values(1,1),(2,1); +insert into t3 values(1,1),(2,1); +set @@tidb_partition_prune_mode="static"; +explain format = 'brief' select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 49900.05 root inner 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)] +├─PartitionUnion(Build) 49900.05 root +│ ├─TableReader 9980.01 root data:Selection +│ │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b)) +│ │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo +│ ├─TableReader 9980.01 root data:Selection +│ │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b)) +│ │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p1 keep order:false, stats:pseudo +│ ├─TableReader 9980.01 root data:Selection +│ │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b)) +│ │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p2 keep order:false, stats:pseudo +│ ├─TableReader 9980.01 root data:Selection +│ │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b)) +│ │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p3 keep order:false, stats:pseudo +│ └─TableReader 9980.01 root data:Selection +│ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b)) +│ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo +└─PartitionUnion(Probe) 39920.04 root + ├─TableReader 9980.01 root data:Selection + │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.b)) + │ └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p0 keep order:false, stats:pseudo + ├─TableReader 9980.01 root data:Selection + │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.b)) + │ └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p1 keep order:false, stats:pseudo + ├─TableReader 9980.01 root data:Selection + │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.b)) + │ └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p2 keep order:false, stats:pseudo + └─TableReader 9980.01 root data:Selection + └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.b)) + └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p3 keep order:false, stats:pseudo +select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +explain format = 'brief' select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 49900.05 root inner 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)] +├─PartitionUnion(Build) 39920.04 root +│ ├─TableReader 9980.01 root data:Selection +│ │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.b)) +│ │ └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p0 keep order:false, stats:pseudo +│ ├─TableReader 9980.01 root data:Selection +│ │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.b)) +│ │ └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p1 keep order:false, stats:pseudo +│ ├─TableReader 9980.01 root data:Selection +│ │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.b)) +│ │ └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p2 keep order:false, stats:pseudo +│ └─TableReader 9980.01 root data:Selection +│ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.b)) +│ └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p3 keep order:false, stats:pseudo +└─PartitionUnion(Probe) 49900.05 root + ├─TableReader 9980.01 root data:Selection + │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b)) + │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo + ├─TableReader 9980.01 root data:Selection + │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b)) + │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p1 keep order:false, stats:pseudo + ├─TableReader 9980.01 root data:Selection + │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b)) + │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p2 keep order:false, stats:pseudo + ├─TableReader 9980.01 root data:Selection + │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b)) + │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p3 keep order:false, stats:pseudo + └─TableReader 9980.01 root data:Selection + └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b)) + └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo +select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +explain format = 'brief' select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 49900.05 root inner 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)] +├─PartitionUnion(Build) 39920.04 root +│ ├─TableReader 9980.01 root data:Selection +│ │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.b)) +│ │ └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p0 keep order:false, stats:pseudo +│ ├─TableReader 9980.01 root data:Selection +│ │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.b)) +│ │ └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p1 keep order:false, stats:pseudo +│ ├─TableReader 9980.01 root data:Selection +│ │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.b)) +│ │ └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p2 keep order:false, stats:pseudo +│ └─TableReader 9980.01 root data:Selection +│ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.b)) +│ └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p3 keep order:false, stats:pseudo +└─PartitionUnion(Probe) 49900.05 root + ├─TableReader 9980.01 root data:Selection + │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b)) + │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo + ├─TableReader 9980.01 root data:Selection + │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b)) + │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p1 keep order:false, stats:pseudo + ├─TableReader 9980.01 root data:Selection + │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b)) + │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p2 keep order:false, stats:pseudo + ├─TableReader 9980.01 root data:Selection + │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b)) + │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p3 keep order:false, stats:pseudo + └─TableReader 9980.01 root data:Selection + └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b)) + └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo +select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +explain format = 'brief' select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +id estRows task access object operator info +HashJoin 49900.05 root inner 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)] +├─PartitionUnion(Build) 49900.05 root +│ ├─TableReader 9980.01 root data:Selection +│ │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b)) +│ │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo +│ ├─TableReader 9980.01 root data:Selection +│ │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b)) +│ │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p1 keep order:false, stats:pseudo +│ ├─TableReader 9980.01 root data:Selection +│ │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b)) +│ │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p2 keep order:false, stats:pseudo +│ ├─TableReader 9980.01 root data:Selection +│ │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b)) +│ │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p3 keep order:false, stats:pseudo +│ └─TableReader 9980.01 root data:Selection +│ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b)) +│ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo +└─PartitionUnion(Probe) 39920.04 root + ├─TableReader 9980.01 root data:Selection + │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.b)) + │ └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p0 keep order:false, stats:pseudo + ├─TableReader 9980.01 root data:Selection + │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.b)) + │ └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p1 keep order:false, stats:pseudo + ├─TableReader 9980.01 root data:Selection + │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.b)) + │ └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p2 keep order:false, stats:pseudo + └─TableReader 9980.01 root data:Selection + └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.b)) + └─TableFullScan 10000.00 cop[tikv] table:t1, partition:p3 keep order:false, stats:pseudo +select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +a a +1 1 +set tidb_cost_model_version=DEFAULT; +set @@tidb_partition_prune_mode=DEFAULT; +set tidb_cost_model_version=2; +drop table if exists t1, t2, t3, ta, tb, tc, td; +create table t1(a int, b int); +create table t2(a int primary key, b int); +create table t3(a int, b int); +insert into t1 values(1,1),(2,2); +insert into t2 values(1,1),(2,1); +insert into t3 values(1,1),(2,1); +create table ta(id int, code int, name varchar(20), index idx_ta_id(id),index idx_ta_name(name), index idx_ta_code(code)); +create table tb(id int, code int, name varchar(20), index idx_tb_id(id),index idx_tb_name(name)); +create table tc(id int, code int, name varchar(20), index idx_tc_id(id),index idx_tc_name(name)); +create table td(id int, code int, name varchar(20), index idx_tc_id(id),index idx_tc_name(name)); +explain format = 'brief' select /*+ no_decorrelate() */ * from t1; +id estRows task access object operator info +TableReader 10000.00 root data:TableFullScan +└─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo +select /*+ no_decorrelate() */ * from t1; +a b +1 1 +2 2 +show warnings; +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 * from t1, (select /*+ no_decorrelate() */ * from t2) n; +id estRows task access object operator info +HashJoin 100000000.00 root CARTESIAN inner join +├─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 +select * from t1, (select /*+ no_decorrelate() */ * from t2) n; +a b a b +1 1 1 1 +1 1 2 1 +2 2 1 1 +2 2 2 1 +show warnings; +Level Code Message +Warning 1815 NO_DECORRELATE() is inapplicable because it's not in an IN subquery, an EXISTS subquery, an ANY/ALL/SOME subquery or a scalar subquery. +explain format = 'brief' select a+1, b-1 from (select /*+ no_decorrelate() */ * from t1) n; +id estRows task access object operator info +Projection 10000.00 root plus(planner__core__casetest__physicalplantest__physical_plan.t1.a, 1)->Column#4, minus(planner__core__casetest__physicalplantest__physical_plan.t1.b, 1)->Column#5 +└─TableReader 10000.00 root data:TableFullScan + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo +select a+1, b-1 from (select /*+ no_decorrelate() */ * from t1) n; +a+1 b-1 +2 0 +3 1 +show warnings; +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)] +├─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 + └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo +select exists (select /*+ semi_join_rewrite(), no_decorrelate() */ * from t1 where t1.a=t3.a) from t3; +exists (select /*+ semi_join_rewrite(), no_decorrelate() * from t1 where t1.a=t3.a) +1 +1 +show warnings; +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)] +├─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 +└─TableReader(Probe) 9980.01 root data:Selection + └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.a)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.b)) + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo +select t1.a from t1 where t1.a in (select t2.b from t2 where t2.a = t1.b); +a +1 +show warnings; +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)] + ├─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 + └─TableReader(Probe) 99800.10 root data:Selection + └─Selection 99800.10 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b)) + └─TableRangeScan 9990.00 cop[tikv] table:t2 range: decided by [eq(planner__core__casetest__physicalplantest__physical_plan.t2.a, planner__core__casetest__physicalplantest__physical_plan.t1.b)], keep order:false, stats:pseudo +select t1.a from t1 where t1.a in (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b); +a +1 +show warnings; +Level Code Message +explain format = 'brief' select t1.a from t1 where t1.a = any (select t2.b from t2 where t2.a = t1.b); +id estRows task access object operator info +Projection 8000.00 root planner__core__casetest__physicalplantest__physical_plan.t1.a +└─Selection 8000.00 root Column#6 + └─HashJoin 10000.00 root left outer semi join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.a)], other cond:eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.b) + ├─TableReader(Build) 10000.00 root data:TableFullScan + │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo + └─TableReader(Probe) 10000.00 root data:TableFullScan + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo +select t1.a from t1 where t1.a = any (select t2.b from t2 where t2.a = t1.b); +a +1 +show warnings; +Level Code Message +explain format = 'brief' select t1.a from t1 where t1.a = any (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b); +id estRows task access object operator info +Projection 8000.00 root planner__core__casetest__physicalplantest__physical_plan.t1.a +└─Selection 8000.00 root Column#6 + └─Apply 10000.00 root CARTESIAN left outer semi join, other cond:eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.b) + ├─TableReader(Build) 10000.00 root data:TableFullScan + │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo + └─TableReader(Probe) 10000.00 root data:TableRangeScan + └─TableRangeScan 10000.00 cop[tikv] table:t2 range: decided by [eq(planner__core__casetest__physicalplantest__physical_plan.t2.a, planner__core__casetest__physicalplantest__physical_plan.t1.b)], keep order:false, stats:pseudo +select t1.a from t1 where t1.a = any (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b); +a +1 +show warnings; +Level Code Message +explain format = 'brief' select t1.a, t1.a != any (select t2.b from t2 where t2.a = t1.b) from t1; +id estRows task access object operator info +Projection 10000.00 root planner__core__casetest__physicalplantest__physical_plan.t1.a, and(or(or(gt(Column#9, 1), ne(planner__core__casetest__physicalplantest__physical_plan.t1.a, Column#8)), if(ne(Column#10, 0), , 0)), and(ne(Column#11, 0), if(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.a), , 1)))->Column#12 +└─Apply 10000.00 root CARTESIAN inner join + ├─TableReader(Build) 10000.00 root data:TableFullScan + │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo + └─StreamAgg(Probe) 10000.00 root funcs:max(Column#14)->Column#8, funcs:count(distinct Column#15)->Column#9, funcs:sum(Column#16)->Column#10, funcs:count(1)->Column#11 + └─Projection 10000.00 root planner__core__casetest__physicalplantest__physical_plan.t2.b->Column#14, planner__core__casetest__physicalplantest__physical_plan.t2.b->Column#15, cast(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b), decimal(20,0) BINARY)->Column#16 + └─TableReader 10000.00 root data:TableRangeScan + └─TableRangeScan 10000.00 cop[tikv] table:t2 range: decided by [eq(planner__core__casetest__physicalplantest__physical_plan.t2.a, planner__core__casetest__physicalplantest__physical_plan.t1.b)], keep order:false, stats:pseudo +select t1.a, t1.a != any (select t2.b from t2 where t2.a = t1.b) from t1; +a t1.a != any (select t2.b from t2 where t2.a = t1.b) +1 0 +2 1 +show warnings; +Level Code Message +explain format = 'brief' select t1.a, t1.a != any (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b) from t1; +id estRows task access object operator info +Projection 10000.00 root planner__core__casetest__physicalplantest__physical_plan.t1.a, and(or(or(gt(Column#9, 1), ne(planner__core__casetest__physicalplantest__physical_plan.t1.a, Column#8)), if(ne(Column#10, 0), , 0)), and(ne(Column#11, 0), if(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.a), , 1)))->Column#12 +└─Apply 10000.00 root CARTESIAN inner join + ├─TableReader(Build) 10000.00 root data:TableFullScan + │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo + └─StreamAgg(Probe) 10000.00 root funcs:max(Column#14)->Column#8, funcs:count(distinct Column#15)->Column#9, funcs:sum(Column#16)->Column#10, funcs:count(1)->Column#11 + └─Projection 10000.00 root planner__core__casetest__physicalplantest__physical_plan.t2.b->Column#14, planner__core__casetest__physicalplantest__physical_plan.t2.b->Column#15, cast(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b), decimal(20,0) BINARY)->Column#16 + └─TableReader 10000.00 root data:TableRangeScan + └─TableRangeScan 10000.00 cop[tikv] table:t2 range: decided by [eq(planner__core__casetest__physicalplantest__physical_plan.t2.a, planner__core__casetest__physicalplantest__physical_plan.t1.b)], keep order:false, stats:pseudo +select t1.a, t1.a != any (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b) from t1; +a t1.a != any (select /*+ no_decorrelate() t2.b from t2 where t2.a = t1.b) +1 0 +2 1 +show warnings; +Level Code Message +explain format = 'brief' select t1.a, t1.a > all (select t2.b from t2 where t2.a = t1.b) from t1; +id estRows task access object operator info +Projection 10000.00 root planner__core__casetest__physicalplantest__physical_plan.t1.a, or(and(gt(planner__core__casetest__physicalplantest__physical_plan.t1.a, Column#8), if(ne(Column#9, 0), , 1)), or(eq(Column#10, 0), if(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.a), , 0)))->Column#11 +└─Apply 10000.00 root CARTESIAN inner join + ├─TableReader(Build) 10000.00 root data:TableFullScan + │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo + └─StreamAgg(Probe) 10000.00 root funcs:max(Column#19)->Column#8, funcs:sum(Column#20)->Column#9, funcs:count(1)->Column#10 + └─Projection 10000.00 root planner__core__casetest__physicalplantest__physical_plan.t2.b->Column#19, cast(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b), decimal(20,0) BINARY)->Column#20 + └─TableReader 10000.00 root data:TableRangeScan + └─TableRangeScan 10000.00 cop[tikv] table:t2 range: decided by [eq(planner__core__casetest__physicalplantest__physical_plan.t2.a, planner__core__casetest__physicalplantest__physical_plan.t1.b)], keep order:false, stats:pseudo +select t1.a, t1.a > all (select t2.b from t2 where t2.a = t1.b) from t1; +a t1.a > all (select t2.b from t2 where t2.a = t1.b) +1 0 +2 1 +show warnings; +Level Code Message +explain format = 'brief' select t1.a, t1.a > all (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b) from t1; +id estRows task access object operator info +Projection 10000.00 root planner__core__casetest__physicalplantest__physical_plan.t1.a, or(and(gt(planner__core__casetest__physicalplantest__physical_plan.t1.a, Column#8), if(ne(Column#9, 0), , 1)), or(eq(Column#10, 0), if(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.a), , 0)))->Column#11 +└─Apply 10000.00 root CARTESIAN inner join + ├─TableReader(Build) 10000.00 root data:TableFullScan + │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo + └─StreamAgg(Probe) 10000.00 root funcs:max(Column#19)->Column#8, funcs:sum(Column#20)->Column#9, funcs:count(1)->Column#10 + └─Projection 10000.00 root planner__core__casetest__physicalplantest__physical_plan.t2.b->Column#19, cast(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b), decimal(20,0) BINARY)->Column#20 + └─TableReader 10000.00 root data:TableRangeScan + └─TableRangeScan 10000.00 cop[tikv] table:t2 range: decided by [eq(planner__core__casetest__physicalplantest__physical_plan.t2.a, planner__core__casetest__physicalplantest__physical_plan.t1.b)], keep order:false, stats:pseudo +select t1.a, t1.a > all (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b) from t1; +a t1.a > all (select /*+ no_decorrelate() t2.b from t2 where t2.a = t1.b) +1 0 +2 1 +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)] +├─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 +select t1.a, (select t2.b from t2 where t2.a = t1.b) from t1; +a (select t2.b from t2 where t2.a = t1.b) +1 1 +2 1 +show warnings; +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 + ├─TableReader(Build) 10000.00 root data:TableFullScan + │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo + └─MaxOneRow(Probe) 10000.00 root + └─TableReader 2000.00 root data:TableRangeScan + └─TableRangeScan 2000.00 cop[tikv] table:t2 range: decided by [eq(planner__core__casetest__physicalplantest__physical_plan.t2.a, planner__core__casetest__physicalplantest__physical_plan.t1.b)], keep order:false, stats:pseudo +select t1.a, (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b) from t1; +a (select /*+ no_decorrelate() t2.b from t2 where t2.a = t1.b) +1 1 +2 1 +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)] +├─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 + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo +select t1.a, t1.b not in (select t3.b from t3) from t1; +a t1.b not in (select t3.b from t3) +1 0 +2 1 +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)] +├─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 + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo +select t1.a, t1.b not in (select /*+ no_decorrelate() */ t3.b from t3) from t1; +a t1.b not in (select /*+ no_decorrelate() t3.b from t3) +1 0 +2 1 +show warnings; +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)] +├─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 + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo +select exists (select t3.b from t3 where t3.a = t1.b limit 2) from t1; +exists (select t3.b from t3 where t3.a = t1.b limit 2) +1 +1 +show warnings; +Level Code Message +explain format = 'brief' select exists (select /*+ no_decorrelate() */ t3.b from t3 where t3.a = t1.b limit 2) from t1; +id estRows task access object operator info +Projection 10000.00 root Column#10 +└─Apply 10000.00 root CARTESIAN left outer semi join + ├─TableReader(Build) 10000.00 root data:TableFullScan + │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo + └─Limit(Probe) 20000.00 root offset:0, count:2 + └─TableReader 20000.00 root data:Limit + └─Limit 20000.00 cop[tikv] offset:0, count:2 + └─Selection 20000.00 cop[tikv] eq(planner__core__casetest__physicalplantest__physical_plan.t3.a, planner__core__casetest__physicalplantest__physical_plan.t1.b) + └─TableFullScan 20000000.00 cop[tikv] table:t3 keep order:false, stats:pseudo +select exists (select /*+ no_decorrelate() */ t3.b from t3 where t3.a = t1.b limit 2) from t1; +exists (select /*+ no_decorrelate() t3.b from t3 where t3.a = t1.b limit 2) +1 +1 +show warnings; +Level Code Message +explain format = 'brief' select t1.a, (select sum(t1.a) from t2 where t2.a = 10) from t1; +id estRows task access object operator info +Projection 1.00 root planner__core__casetest__physicalplantest__physical_plan.t1.a, Column#6->Column#11 +└─HashJoin 1.00 root CARTESIAN left outer join + ├─Point_Get(Build) 1.00 root table:t2 handle:10 + └─HashAgg(Probe) 1.00 root funcs:sum(Column#13)->Column#6, funcs:firstrow(Column#14)->planner__core__casetest__physicalplantest__physical_plan.t1.a + └─TableReader 1.00 root data:HashAgg + └─HashAgg 1.00 cop[tikv] funcs:sum(planner__core__casetest__physicalplantest__physical_plan.t1.a)->Column#13, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t1.a)->Column#14 + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo +select t1.a, (select sum(t1.a) from t2 where t2.a = 10) from t1; +a (select sum(t1.a) from t2 where t2.a = 10) +1 3 +show warnings; +Level Code Message +explain format = 'brief' select t1.a, (select /*+ no_decorrelate() */ sum(t1.a) from t2 where t2.a = 10) from t1; +id estRows task access object operator info +Projection 1.00 root planner__core__casetest__physicalplantest__physical_plan.t1.a, Column#9->Column#11 +└─Apply 1.00 root CARTESIAN left outer join + ├─HashAgg(Build) 1.00 root funcs:sum(Column#14)->Column#6, funcs:firstrow(Column#15)->planner__core__casetest__physicalplantest__physical_plan.t1.a + │ └─Projection 10000.00 root cast(planner__core__casetest__physicalplantest__physical_plan.t1.a, decimal(10,0) BINARY)->Column#14, planner__core__casetest__physicalplantest__physical_plan.t1.a->Column#15 + │ └─TableReader 10000.00 root data:TableFullScan + │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo + └─MaxOneRow(Probe) 1.00 root + └─Projection 1.00 root Column#6->Column#9 + └─Point_Get 1.00 root table:t2 handle:10 +select t1.a, (select /*+ no_decorrelate() */ sum(t1.a) from t2 where t2.a = 10) from t1; +a (select /*+ no_decorrelate() sum(t1.a) from t2 where t2.a = 10) +1 NULL +show warnings; +Level Code Message +explain format = 'brief' select (select count(t3.a) from t3 where t3.b = t1.b) from t1; +id estRows task access object operator info +Projection 10000.00 root ifnull(Column#10, 0)->Column#10 +└─HashJoin 10000.00 root left outer join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t3.b)] + ├─HashAgg(Build) 7992.00 root group by:planner__core__casetest__physicalplantest__physical_plan.t3.b, funcs:count(Column#11)->Column#10, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t3.b)->planner__core__casetest__physicalplantest__physical_plan.t3.b + │ └─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 + │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t3.b)) + │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo + └─TableReader(Probe) 10000.00 root data:TableFullScan + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo +select (select count(t3.a) from t3 where t3.b = t1.b) from t1; +(select count(t3.a) from t3 where t3.b = t1.b) +0 +2 +show warnings; +Level Code Message +explain format = 'brief' select (select /*+ no_decorrelate() */ count(t3.a) from t3 where t3.b = t1.b) from t1; +id estRows task access object operator info +Projection 10000.00 root Column#10 +└─Apply 10000.00 root CARTESIAN left outer join + ├─TableReader(Build) 10000.00 root data:TableFullScan + │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo + └─MaxOneRow(Probe) 10000.00 root + └─StreamAgg 10000.00 root funcs:count(Column#12)->Column#10 + └─TableReader 10000.00 root data:StreamAgg + └─StreamAgg 10000.00 cop[tikv] funcs:count(planner__core__casetest__physicalplantest__physical_plan.t3.a)->Column#12 + └─Selection 100000.00 cop[tikv] eq(planner__core__casetest__physicalplantest__physical_plan.t3.b, planner__core__casetest__physicalplantest__physical_plan.t1.b) + └─TableFullScan 100000000.00 cop[tikv] table:t3 keep order:false, stats:pseudo +select (select /*+ no_decorrelate() */ count(t3.a) from t3 where t3.b = t1.b) from t1; +(select /*+ no_decorrelate() count(t3.a) from t3 where t3.b = t1.b) +0 +2 +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)] +├─TableReader(Build) 250.00 root data:Selection +│ └─Selection 250.00 cop[tikv] like(planner__core__casetest__physicalplantest__physical_plan.ta.name, "chad999%", 92) +│ └─TableFullScan 10000.00 cop[tikv] table:ta keep order:false, stats:pseudo +└─HashAgg(Probe) 7992.00 root group by:planner__core__casetest__physicalplantest__physical_plan.tb.id, funcs:sum(Column#19)->Column#13, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.tb.id)->planner__core__casetest__physicalplantest__physical_plan.tb.id + └─TableReader 7992.00 root data:HashAgg + └─HashAgg 7992.00 cop[tikv] group by:planner__core__casetest__physicalplantest__physical_plan.tb.id, funcs:sum(planner__core__casetest__physicalplantest__physical_plan.tb.code)->Column#19 + └─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 +SELECT ta.NAME,(SELECT sum(tb.CODE) FROM tb WHERE ta.id = tb.id) tb_sum_code FROM ta WHERE ta.NAME LIKE 'chad999%'; +NAME tb_sum_code +show warnings; +Level Code Message +explain format = 'brief' SELECT ta.NAME,(SELECT /*+ no_decorrelate() */ sum(tb.CODE) FROM tb WHERE ta.id = tb.id) tb_sum_code FROM ta WHERE ta.NAME LIKE 'chad999%'; +id estRows task access object operator info +Projection 250.00 root planner__core__casetest__physicalplantest__physical_plan.ta.name, Column#13 +└─Apply 250.00 root CARTESIAN left outer join + ├─TableReader(Build) 250.00 root data:Selection + │ └─Selection 250.00 cop[tikv] like(planner__core__casetest__physicalplantest__physical_plan.ta.name, "chad999%", 92) + │ └─TableFullScan 10000.00 cop[tikv] table:ta keep order:false, stats:pseudo + └─MaxOneRow(Probe) 250.00 root + └─StreamAgg 250.00 root funcs:sum(Column#21)->Column#13 + └─Projection 2500.00 root cast(planner__core__casetest__physicalplantest__physical_plan.tb.code, decimal(10,0) BINARY)->Column#21 + └─IndexLookUp 2500.00 root + ├─IndexRangeScan(Build) 2500.00 cop[tikv] table:tb, index:idx_tb_id(id) range: decided by [eq(planner__core__casetest__physicalplantest__physical_plan.ta.id, planner__core__casetest__physicalplantest__physical_plan.tb.id)], keep order:false, stats:pseudo + └─TableRowIDScan(Probe) 2500.00 cop[tikv] table:tb keep order:false, stats:pseudo +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%'; +NAME tb_sum_code +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)] +├─TableReader(Build) 250.00 root data:Selection +│ └─Selection 250.00 cop[tikv] like(planner__core__casetest__physicalplantest__physical_plan.ta.name, "chad999%", 92) +│ └─TableFullScan 10000.00 cop[tikv] table:ta keep order:false, stats:pseudo +└─HashAgg(Probe) 6387.21 root group by:Column#39, 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, planner__core__casetest__physicalplantest__physical_plan.tb.id->Column#39 + └─HashJoin 7984.01 root semi join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.tb.name, planner__core__casetest__physicalplantest__physical_plan.tc.name)] + ├─TableReader(Build) 7992.00 root data:Selection + │ └─Selection 7992.00 cop[tikv] like(cast(planner__core__casetest__physicalplantest__physical_plan.tc.code, var_string(20)), "999%", 92), not(isnull(planner__core__casetest__physicalplantest__physical_plan.tc.name)) + │ └─TableFullScan 10000.00 cop[tikv] table:tc keep order:false, stats:pseudo + └─TableReader(Probe) 9980.01 root data:Selection + └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.tb.id)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.tb.name)) + └─TableFullScan 10000.00 cop[tikv] table:tb keep order:false, stats:pseudo +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%'; +NAME tb_sum_code +show warnings; +Level Code Message +explain format = 'brief' SELECT ta.NAME,(SELECT /*+ no_decorrelate() */ sum(tb.CODE) FROM tb WHERE ta.id = tb.id and exists (select 1 from tc where tb.name=tc.name and tc.`code` like '999%')) tb_sum_code FROM ta WHERE ta.NAME LIKE 'chad999%'; +id estRows task access object operator info +Projection 250.00 root planner__core__casetest__physicalplantest__physical_plan.ta.name, Column#18 +└─Apply 250.00 root CARTESIAN left outer join + ├─TableReader(Build) 250.00 root data:Selection + │ └─Selection 250.00 cop[tikv] like(planner__core__casetest__physicalplantest__physical_plan.ta.name, "chad999%", 92) + │ └─TableFullScan 10000.00 cop[tikv] table:ta keep order:false, stats:pseudo + └─MaxOneRow(Probe) 250.00 root + └─StreamAgg 250.00 root funcs:sum(Column#33)->Column#18 + └─Projection 1998.00 root cast(planner__core__casetest__physicalplantest__physical_plan.tb.code, decimal(10,0) BINARY)->Column#33 + └─IndexHashJoin 1998.00 root semi join, inner:IndexLookUp, outer key:planner__core__casetest__physicalplantest__physical_plan.tb.name, inner key:planner__core__casetest__physicalplantest__physical_plan.tc.name, equal cond:eq(planner__core__casetest__physicalplantest__physical_plan.tb.name, planner__core__casetest__physicalplantest__physical_plan.tc.name) + ├─IndexLookUp(Build) 2497.50 root + │ ├─IndexRangeScan(Build) 2500.00 cop[tikv] table:tb, index:idx_tb_id(id) range: decided by [eq(planner__core__casetest__physicalplantest__physical_plan.ta.id, planner__core__casetest__physicalplantest__physical_plan.tb.id)], keep order:false, stats:pseudo + │ └─Selection(Probe) 2497.50 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.tb.name)) + │ └─TableRowIDScan 2500.00 cop[tikv] table:tb keep order:false, stats:pseudo + └─IndexLookUp(Probe) 3121.87 root + ├─Selection(Build) 3902.34 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.tc.name)) + │ └─IndexRangeScan 3906.25 cop[tikv] table:tc, index:idx_tc_name(name) range: decided by [eq(planner__core__casetest__physicalplantest__physical_plan.tc.name, planner__core__casetest__physicalplantest__physical_plan.tb.name)], keep order:false, stats:pseudo + └─Selection(Probe) 3121.87 cop[tikv] like(cast(planner__core__casetest__physicalplantest__physical_plan.tc.code, var_string(20)), "999%", 92) + └─TableRowIDScan 3902.34 cop[tikv] table:tc keep order:false, stats:pseudo +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%'; +NAME tb_sum_code +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)] +├─TableReader(Build) 250.00 root data:Selection +│ └─Selection 250.00 cop[tikv] like(planner__core__casetest__physicalplantest__physical_plan.ta.name, "chad999%", 92) +│ └─TableFullScan 10000.00 cop[tikv] table:ta keep order:false, stats:pseudo +└─HashAgg(Probe) 7992.00 root group by:Column#28, 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, planner__core__casetest__physicalplantest__physical_plan.tb.id->Column#28 + └─Apply 9990.00 root CARTESIAN semi join + ├─TableReader(Build) 9990.00 root data:Selection + │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.tb.id)) + │ └─TableFullScan 10000.00 cop[tikv] table:tb keep order:false, stats:pseudo + └─IndexLookUp(Probe) 79920.00 root + ├─IndexRangeScan(Build) 99900.00 cop[tikv] table:tc, index:idx_tc_name(name) range: decided by [eq(planner__core__casetest__physicalplantest__physical_plan.tb.name, planner__core__casetest__physicalplantest__physical_plan.tc.name)], keep order:false, stats:pseudo + └─Selection(Probe) 79920.00 cop[tikv] like(cast(planner__core__casetest__physicalplantest__physical_plan.tc.code, var_string(20)), "999%", 92) + └─TableRowIDScan 99900.00 cop[tikv] table:tc keep order:false, stats:pseudo +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%'; +NAME tb_sum_code +show warnings; +Level Code Message +explain format = 'brief' SELECT ta.NAME,(SELECT /*+ no_decorrelate() */ sum(tb.CODE) FROM tb WHERE ta.id = tb.id and exists (select /*+ no_decorrelate() */ 1 from tc where tb.name=tc.name and tc.`code` like '999%')) tb_sum_code FROM ta WHERE ta.NAME LIKE 'chad999%'; +id estRows task access object operator info +Projection 250.00 root planner__core__casetest__physicalplantest__physical_plan.ta.name, Column#18 +└─Apply 250.00 root CARTESIAN left outer join + ├─TableReader(Build) 250.00 root data:Selection + │ └─Selection 250.00 cop[tikv] like(planner__core__casetest__physicalplantest__physical_plan.ta.name, "chad999%", 92) + │ └─TableFullScan 10000.00 cop[tikv] table:ta keep order:false, stats:pseudo + └─MaxOneRow(Probe) 250.00 root + └─StreamAgg 250.00 root funcs:sum(Column#22)->Column#18 + └─Projection 2500.00 root cast(planner__core__casetest__physicalplantest__physical_plan.tb.code, decimal(10,0) BINARY)->Column#22 + └─Apply 2500.00 root CARTESIAN semi join + ├─IndexLookUp(Build) 2500.00 root + │ ├─IndexRangeScan(Build) 2500.00 cop[tikv] table:tb, index:idx_tb_id(id) range: decided by [eq(planner__core__casetest__physicalplantest__physical_plan.ta.id, planner__core__casetest__physicalplantest__physical_plan.tb.id)], keep order:false, stats:pseudo + │ └─TableRowIDScan(Probe) 2500.00 cop[tikv] table:tb keep order:false, stats:pseudo + └─IndexLookUp(Probe) 20000.00 root + ├─IndexRangeScan(Build) 25000.00 cop[tikv] table:tc, index:idx_tc_name(name) range: decided by [eq(planner__core__casetest__physicalplantest__physical_plan.tb.name, planner__core__casetest__physicalplantest__physical_plan.tc.name)], keep order:false, stats:pseudo + └─Selection(Probe) 20000.00 cop[tikv] like(cast(planner__core__casetest__physicalplantest__physical_plan.tc.code, var_string(20)), "999%", 92) + └─TableRowIDScan 25000.00 cop[tikv] table:tc keep order:false, stats:pseudo +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%'; +NAME tb_sum_code +show warnings; +Level Code Message +explain format = 'brief' SELECT ta.id, 'split' as flag FROM ta WHERE ta.NAME ='chad999' and (select max(tb.code) from tb where ta.id=tb.id ) > 900; +id estRows task access object operator info +Projection 9.99 root planner__core__casetest__physicalplantest__physical_plan.ta.id, split->Column#10 +└─HashJoin 9.99 root inner join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.ta.id, planner__core__casetest__physicalplantest__physical_plan.tb.id)] + ├─IndexLookUp(Build) 9.99 root + │ ├─IndexRangeScan(Build) 10.00 cop[tikv] table:ta, index:idx_ta_name(name) range:["chad999","chad999"], keep order:false, stats:pseudo + │ └─Selection(Probe) 9.99 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.ta.id)) + │ └─TableRowIDScan 10.00 cop[tikv] table:ta keep order:false, stats:pseudo + └─Selection(Probe) 6393.60 root gt(Column#9, 900) + └─HashAgg 7992.00 root group by:planner__core__casetest__physicalplantest__physical_plan.tb.id, funcs:max(Column#19)->Column#9, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.tb.id)->planner__core__casetest__physicalplantest__physical_plan.tb.id + └─TableReader 7992.00 root data:HashAgg + └─HashAgg 7992.00 cop[tikv] group by:planner__core__casetest__physicalplantest__physical_plan.tb.id, funcs:max(planner__core__casetest__physicalplantest__physical_plan.tb.code)->Column#19 + └─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 +SELECT ta.id, 'split' as flag FROM ta WHERE ta.NAME ='chad999' and (select max(tb.code) from tb where ta.id=tb.id ) > 900; +id flag +show warnings; +Level Code Message +explain format = 'brief' SELECT ta.id, 'split' as flag FROM ta WHERE ta.NAME ='chad999' and (select /*+ no_decorrelate() */ max(tb.code) from tb where ta.id=tb.id ) > 900; +id estRows task access object operator info +Projection 10.00 root planner__core__casetest__physicalplantest__physical_plan.ta.id, split->Column#10 +└─Apply 10.00 root CARTESIAN inner join + ├─IndexLookUp(Build) 10.00 root + │ ├─IndexRangeScan(Build) 10.00 cop[tikv] table:ta, index:idx_ta_name(name) range:["chad999","chad999"], keep order:false, stats:pseudo + │ └─TableRowIDScan(Probe) 10.00 cop[tikv] table:ta keep order:false, stats:pseudo + └─Selection(Probe) 8.00 root gt(Column#9, 900) + └─MaxOneRow 10.00 root + └─StreamAgg 10.00 root funcs:max(planner__core__casetest__physicalplantest__physical_plan.tb.code)->Column#9 + └─TopN 10.00 root planner__core__casetest__physicalplantest__physical_plan.tb.code:desc, offset:0, count:1 + └─IndexLookUp 10.00 root + ├─IndexRangeScan(Build) 100.00 cop[tikv] table:tb, index:idx_tb_id(id) range: decided by [eq(planner__core__casetest__physicalplantest__physical_plan.ta.id, planner__core__casetest__physicalplantest__physical_plan.tb.id)], keep order:false, stats:pseudo + └─TopN(Probe) 10.00 cop[tikv] planner__core__casetest__physicalplantest__physical_plan.tb.code:desc, offset:0, count:1 + └─Selection 99.90 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.tb.code)) + └─TableRowIDScan 100.00 cop[tikv] table:tb keep order:false, stats:pseudo +SELECT ta.id, 'split' as flag FROM ta WHERE ta.NAME ='chad999' and (select /*+ no_decorrelate() */ max(tb.code) from tb where ta.id=tb.id ) > 900; +id flag +show warnings; +Level Code Message +explain format = 'brief' SELECT ta.NAME FROM ta WHERE EXISTS (select 1 from tb where ta.code = tb.code and tb.NAME LIKE 'chad9%') AND (select max(id) from tc where ta.name=tc.name and tc.name like 'chad99%') > 100 and (select max(id) from td where ta.id=td.id and td.name like 'chad999%') > 100; +id estRows task access object operator info +HashJoin 159.84 root inner join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.ta.id, planner__core__casetest__physicalplantest__physical_plan.td.id)] +├─Selection(Build) 159.84 root gt(Column#19, 100) +│ └─HashAgg 199.80 root group by:planner__core__casetest__physicalplantest__physical_plan.td.id, funcs:max(Column#32)->Column#19, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.td.id)->planner__core__casetest__physicalplantest__physical_plan.td.id +│ └─TableReader 199.80 root data:HashAgg +│ └─HashAgg 199.80 cop[tikv] group by:planner__core__casetest__physicalplantest__physical_plan.td.id, funcs:max(planner__core__casetest__physicalplantest__physical_plan.td.id)->Column#32 +│ └─Selection 249.75 cop[tikv] like(planner__core__casetest__physicalplantest__physical_plan.td.name, "chad999%", 92), not(isnull(planner__core__casetest__physicalplantest__physical_plan.td.id)) +│ └─TableFullScan 10000.00 cop[tikv] table:td keep order:false, stats:pseudo +└─HashJoin(Probe) 200.00 root inner join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.ta.name, planner__core__casetest__physicalplantest__physical_plan.tc.name)] + ├─Selection(Build) 160.00 root gt(Column#14, 100) + │ └─HashAgg 200.00 root group by:planner__core__casetest__physicalplantest__physical_plan.tc.name, funcs:max(Column#24)->Column#14, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.tc.name)->planner__core__casetest__physicalplantest__physical_plan.tc.name + │ └─TableReader 200.00 root data:HashAgg + │ └─HashAgg 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#24 + │ └─Selection 250.00 cop[tikv] like(planner__core__casetest__physicalplantest__physical_plan.tc.name, "chad99%", 92), not(isnull(planner__core__casetest__physicalplantest__physical_plan.tc.name)) + │ └─TableFullScan 10000.00 cop[tikv] table:tc keep order:false, stats:pseudo + └─HashJoin(Probe) 7976.02 root semi join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.ta.code, planner__core__casetest__physicalplantest__physical_plan.tb.code)] + ├─TableReader(Build) 249.75 root data:Selection + │ └─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 + └─TableReader(Probe) 9970.03 root data:Selection + └─Selection 9970.03 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.ta.code)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.ta.id)), not(isnull(planner__core__casetest__physicalplantest__physical_plan.ta.name)) + └─TableFullScan 10000.00 cop[tikv] table:ta keep order:false, stats:pseudo +SELECT ta.NAME FROM ta WHERE EXISTS (select 1 from tb where ta.code = tb.code and tb.NAME LIKE 'chad9%') AND (select max(id) from tc where ta.name=tc.name and tc.name like 'chad99%') > 100 and (select max(id) from td where ta.id=td.id and td.name like 'chad999%') > 100; +NAME +show warnings; +Level Code Message +explain format = 'brief' SELECT ta.NAME FROM ta WHERE EXISTS (select /*+ semi_join_rewrite() */ 1 from tb where ta.code = tb.code and tb.NAME LIKE 'chad9%') AND (select /*+ no_decorrelate() */ max(id) from tc where ta.name=tc.name and tc.name like 'chad99%') > 100 and (select /*+ no_decorrelate() */ max(id) from td where ta.id=td.id and td.name like 'chad999%') > 100; +id estRows task access object operator info +Projection 249.75 root planner__core__casetest__physicalplantest__physical_plan.ta.name +└─Apply 249.75 root CARTESIAN inner join + ├─Apply(Build) 249.75 root CARTESIAN inner join + │ ├─IndexHashJoin(Build) 249.75 root inner join, inner:IndexLookUp, outer key:planner__core__casetest__physicalplantest__physical_plan.tb.code, inner key:planner__core__casetest__physicalplantest__physical_plan.ta.code, equal cond:eq(planner__core__casetest__physicalplantest__physical_plan.tb.code, planner__core__casetest__physicalplantest__physical_plan.ta.code) + │ │ ├─HashAgg(Build) 199.80 root group by:planner__core__casetest__physicalplantest__physical_plan.tb.code, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.tb.code)->planner__core__casetest__physicalplantest__physical_plan.tb.code + │ │ │ └─TableReader 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 + │ │ └─IndexLookUp(Probe) 249.75 root + │ │ ├─Selection(Build) 249.75 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.ta.code)) + │ │ │ └─IndexRangeScan 250.00 cop[tikv] table:ta, index:idx_ta_code(code) range: decided by [eq(planner__core__casetest__physicalplantest__physical_plan.ta.code, planner__core__casetest__physicalplantest__physical_plan.tb.code)], keep order:false, stats:pseudo + │ │ └─TableRowIDScan(Probe) 249.75 cop[tikv] table:ta keep order:false, stats:pseudo + │ └─Selection(Probe) 199.80 root gt(Column#14, 100) + │ └─MaxOneRow 249.75 root + │ └─StreamAgg 249.75 root funcs:max(planner__core__casetest__physicalplantest__physical_plan.tc.id)->Column#14 + │ └─TopN 62.38 root planner__core__casetest__physicalplantest__physical_plan.tc.id:desc, offset:0, count:1 + │ └─IndexLookUp 62.38 root + │ ├─Selection(Build) 62.38 cop[tikv] eq(planner__core__casetest__physicalplantest__physical_plan.ta.name, planner__core__casetest__physicalplantest__physical_plan.tc.name), like(planner__core__casetest__physicalplantest__physical_plan.tc.name, "chad99%", 92) + │ │ └─IndexRangeScan 62437.50 cop[tikv] table:tc, index:idx_tc_name(name) range:["chad99","chad9:"), keep order:false, stats:pseudo + │ └─TopN(Probe) 62.38 cop[tikv] planner__core__casetest__physicalplantest__physical_plan.tc.id:desc, offset:0, count:1 + │ └─Selection 62.38 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.tc.id)) + │ └─TableRowIDScan 62.38 cop[tikv] table:tc keep order:false, stats:pseudo + └─Selection(Probe) 199.80 root gt(Column#19, 100) + └─MaxOneRow 249.75 root + └─StreamAgg 249.75 root funcs:max(planner__core__casetest__physicalplantest__physical_plan.td.id)->Column#19 + └─TopN 62.38 root planner__core__casetest__physicalplantest__physical_plan.td.id:desc, offset:0, count:1 + └─IndexLookUp 62.38 root + ├─Selection(Build) 1560.94 cop[tikv] like(planner__core__casetest__physicalplantest__physical_plan.td.name, "chad999%", 92) + │ └─IndexRangeScan 62437.50 cop[tikv] table:td, index:idx_tc_name(name) range:["chad999","chad99:"), keep order:false, stats:pseudo + └─TopN(Probe) 62.38 cop[tikv] planner__core__casetest__physicalplantest__physical_plan.td.id:desc, offset:0, count:1 + └─Selection 62.38 cop[tikv] eq(planner__core__casetest__physicalplantest__physical_plan.ta.id, planner__core__casetest__physicalplantest__physical_plan.td.id), not(isnull(planner__core__casetest__physicalplantest__physical_plan.td.id)) + └─TableRowIDScan 1560.94 cop[tikv] table:td keep order:false, stats:pseudo +SELECT ta.NAME FROM ta WHERE EXISTS (select /*+ semi_join_rewrite() */ 1 from tb where ta.code = tb.code and tb.NAME LIKE 'chad9%') AND (select /*+ no_decorrelate() */ max(id) from tc where ta.name=tc.name and tc.name like 'chad99%') > 100 and (select /*+ no_decorrelate() */ max(id) from td where ta.id=td.id and td.name like 'chad999%') > 100; +NAME +show warnings; +Level Code Message +explain format = 'brief' SELECT ta.NAME FROM ta WHERE EXISTS (select /*+ no_decorrelate() */ 1 from tb where ta.code = tb.code and tb.NAME LIKE 'chad9%') AND (select /*+ no_decorrelate() */ max(id) from tc where ta.name=tc.name and tc.name like 'chad99%') > 100 and (select /*+ no_decorrelate() */ max(id) from td where ta.id=td.id and td.name like 'chad999%') > 100; +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 + │ │ ├─TableReader(Build) 10000.00 root data:TableFullScan + │ │ │ └─TableFullScan 10000.00 cop[tikv] table:ta keep order:false, stats:pseudo + │ │ └─IndexLookUp(Probe) 2500.00 root + │ │ ├─Selection(Build) 62500.00 cop[tikv] like(planner__core__casetest__physicalplantest__physical_plan.tb.name, "chad9%", 92) + │ │ │ └─IndexRangeScan 2500000.00 cop[tikv] table:tb, index:idx_tb_name(name) range:["chad9","chad:"), keep order:false, stats:pseudo + │ │ └─Selection(Probe) 2500.00 cop[tikv] eq(planner__core__casetest__physicalplantest__physical_plan.ta.code, planner__core__casetest__physicalplantest__physical_plan.tb.code) + │ │ └─TableRowIDScan 62500.00 cop[tikv] table:tb keep order:false, stats:pseudo + │ └─Selection(Probe) 8000.00 root gt(Column#14, 100) + │ └─MaxOneRow 10000.00 root + │ └─StreamAgg 10000.00 root funcs:max(planner__core__casetest__physicalplantest__physical_plan.tc.id)->Column#14 + │ └─TopN 2497.50 root planner__core__casetest__physicalplantest__physical_plan.tc.id:desc, offset:0, count:1 + │ └─IndexLookUp 2497.50 root + │ ├─Selection(Build) 2497.50 cop[tikv] eq(planner__core__casetest__physicalplantest__physical_plan.ta.name, planner__core__casetest__physicalplantest__physical_plan.tc.name), like(planner__core__casetest__physicalplantest__physical_plan.tc.name, "chad99%", 92) + │ │ └─IndexRangeScan 2500000.00 cop[tikv] table:tc, index:idx_tc_name(name) range:["chad99","chad9:"), keep order:false, stats:pseudo + │ └─TopN(Probe) 2497.50 cop[tikv] planner__core__casetest__physicalplantest__physical_plan.tc.id:desc, offset:0, count:1 + │ └─Selection 2497.50 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.tc.id)) + │ └─TableRowIDScan 2497.50 cop[tikv] table:tc keep order:false, stats:pseudo + └─Selection(Probe) 8000.00 root gt(Column#19, 100) + └─MaxOneRow 10000.00 root + └─StreamAgg 10000.00 root funcs:max(planner__core__casetest__physicalplantest__physical_plan.td.id)->Column#19 + └─TopN 2497.50 root planner__core__casetest__physicalplantest__physical_plan.td.id:desc, offset:0, count:1 + └─IndexLookUp 2497.50 root + ├─Selection(Build) 62500.00 cop[tikv] like(planner__core__casetest__physicalplantest__physical_plan.td.name, "chad999%", 92) + │ └─IndexRangeScan 2500000.00 cop[tikv] table:td, index:idx_tc_name(name) range:["chad999","chad99:"), keep order:false, stats:pseudo + └─TopN(Probe) 2497.50 cop[tikv] planner__core__casetest__physicalplantest__physical_plan.td.id:desc, offset:0, count:1 + └─Selection 2497.50 cop[tikv] eq(planner__core__casetest__physicalplantest__physical_plan.ta.id, planner__core__casetest__physicalplantest__physical_plan.td.id), not(isnull(planner__core__casetest__physicalplantest__physical_plan.td.id)) + └─TableRowIDScan 62500.00 cop[tikv] table:td keep order:false, stats:pseudo +SELECT ta.NAME FROM ta WHERE EXISTS (select /*+ no_decorrelate() */ 1 from tb where ta.code = tb.code and tb.NAME LIKE 'chad9%') AND (select /*+ no_decorrelate() */ max(id) from tc where ta.name=tc.name and tc.name like 'chad99%') > 100 and (select /*+ no_decorrelate() */ max(id) from td where ta.id=td.id and td.name like 'chad999%') > 100; +NAME +show warnings; +Level Code Message +set tidb_cost_model_version=DEFAULT; +drop table if exists t, t_pick_row_id; +set tidb_cost_model_version=1; +create table t (a int(11) not null, b varchar(10) not null, c date not null, d char(1) not null, e bigint not null, f datetime not null, g bool not null, h bool ); +create table t_pick_row_id (a char(20) not null); +explain format = 'brief' select count(*) from t; +id estRows task access object operator info +StreamAgg 1.00 root funcs:count(Column#12)->Column#10 +└─TableReader 1.00 root data:StreamAgg + └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#12 + └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +explain format = 'brief' select count(1), count(3.1415), count(0), count(null) from t -- shouldn't be rewritten; +id estRows task access object operator info +StreamAgg 1.00 root funcs:count(Column#18)->Column#10, funcs:count(Column#19)->Column#11, funcs:count(Column#20)->Column#12, funcs:count(Column#21)->Column#13 +└─TableReader 1.00 root data:StreamAgg + └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#18, funcs:count(3.1415)->Column#19, funcs:count(0)->Column#20, funcs:count(NULL)->Column#21 + └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +explain format = 'brief' select count(*) from t where a=1; +id estRows task access object operator info +StreamAgg 1.00 root funcs:count(Column#12)->Column#10 +└─TableReader 1.00 root data:StreamAgg + └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#12 + └─Selection 10.00 cop[tikv] eq(planner__core__casetest__physicalplantest__physical_plan.t.a, 1) + └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +explain format = 'brief' select count(*) from t_pick_row_id; +id estRows task access object operator info +StreamAgg 1.00 root funcs:count(Column#5)->Column#3 +└─TableReader 1.00 root data:StreamAgg + └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#5 + └─TableFullScan 10000.00 cop[tikv] table:t_pick_row_id keep order:false, stats:pseudo +explain format = 'brief' select t.b, t.c from (select count(*) as c from t) a, t where a.c=t.a -- shouldn't be rewritten; +id estRows task access object operator info +HashJoin 1.25 root inner join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t.a, Column#10)] +├─StreamAgg(Build) 1.00 root funcs:count(Column#21)->Column#10 +│ └─TableReader 1.00 root data:StreamAgg +│ └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#21 +│ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +└─TableReader(Probe) 10000.00 root data:TableFullScan + └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +explain format = 'brief' select * from t outTable where outTable.a > (select count(*) from t inn where inn.a = outTable.b) -- shouldn't be rewritten; +id estRows task access object operator info +Projection 10000.00 root planner__core__casetest__physicalplantest__physical_plan.t.a, planner__core__casetest__physicalplantest__physical_plan.t.b, planner__core__casetest__physicalplantest__physical_plan.t.c, planner__core__casetest__physicalplantest__physical_plan.t.d, planner__core__casetest__physicalplantest__physical_plan.t.e, planner__core__casetest__physicalplantest__physical_plan.t.f, planner__core__casetest__physicalplantest__physical_plan.t.g, planner__core__casetest__physicalplantest__physical_plan.t.h +└─Apply 10000.00 root CARTESIAN inner join, other cond:gt(planner__core__casetest__physicalplantest__physical_plan.t.a, Column#19) + ├─TableReader(Build) 10000.00 root data:TableFullScan + │ └─TableFullScan 10000.00 cop[tikv] table:outTable keep order:false, stats:pseudo + └─StreamAgg(Probe) 10000.00 root funcs:count(Column#21)->Column#19 + └─TableReader 10000.00 root data:StreamAgg + └─StreamAgg 10000.00 cop[tikv] funcs:count(1)->Column#21 + └─Selection 80000000.00 cop[tikv] eq(cast(planner__core__casetest__physicalplantest__physical_plan.t.a, double BINARY), cast(planner__core__casetest__physicalplantest__physical_plan.t.b, double BINARY)) + └─TableFullScan 100000000.00 cop[tikv] table:inn keep order:false, stats:pseudo +explain format = 'brief' select count(*) from t t1, t t2 where t1.a=t2.e -- shouldn't be rewritten; +id estRows task access object operator info +HashAgg 1.00 root funcs:count(1)->Column#19 +└─HashJoin 12500.00 root inner join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t.a, planner__core__casetest__physicalplantest__physical_plan.t.e)] + ├─TableReader(Build) 10000.00 root data:TableFullScan + │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo + └─TableReader(Probe) 10000.00 root data:TableFullScan + └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo +explain format = 'brief' select count(distinct 1) from t -- shouldn't be rewritten; +id estRows task access object operator info +StreamAgg 1.00 root funcs:count(distinct 1)->Column#10 +└─TableReader 10000.00 root data:TableFullScan + └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +explain format = 'brief' select count(1), count(a), count(b) from t -- shouldn't be rewritten; +id estRows task access object operator info +StreamAgg 1.00 root funcs:count(Column#16)->Column#10, funcs:count(Column#17)->Column#11, funcs:count(Column#18)->Column#12 +└─TableReader 1.00 root data:StreamAgg + └─StreamAgg 1.00 cop[tikv] funcs:count(1)->Column#16, funcs:count(planner__core__casetest__physicalplantest__physical_plan.t.a)->Column#17, funcs:count(planner__core__casetest__physicalplantest__physical_plan.t.b)->Column#18 + └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +explain format = 'brief' select a, count(*) from t group by a -- shouldn't be rewritten; +id estRows task access object operator info +Projection 8000.00 root planner__core__casetest__physicalplantest__physical_plan.t.a, Column#10 +└─HashAgg 8000.00 root group by:planner__core__casetest__physicalplantest__physical_plan.t.a, funcs:count(1)->Column#10, funcs:firstrow(planner__core__casetest__physicalplantest__physical_plan.t.a)->planner__core__casetest__physicalplantest__physical_plan.t.a + └─TableReader 10000.00 root data:TableFullScan + └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +explain format = 'brief' select sum(a) from t -- sum shouldn't be rewritten; +id estRows task access object operator info +StreamAgg 1.00 root funcs:sum(Column#12)->Column#10 +└─TableReader 1.00 root data:StreamAgg + └─StreamAgg 1.00 cop[tikv] funcs:sum(planner__core__casetest__physicalplantest__physical_plan.t.a)->Column#12 + └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +set tidb_cost_model_version=DEFAULT; +drop table if exists t, tcommon, thash; +set tidb_cost_model_version=1; +create table t (a int, b int, c int, index idx(a, c), index idx2(b, c)); +create table tcommon (a int, b int, c int, primary key(a, c), index idx2(b, c)); +create table thash(a int, b int, c int, index idx_ac(a, c), index idx_bc(b, c)) PARTITION BY HASH (`a`) PARTITIONS 4; +explain format = 'brief' select * from t where a = 1 or b = 1 order by c limit 2; +id estRows task access object operator info +Projection 2.00 root planner__core__casetest__physicalplantest__physical_plan.t.a, planner__core__casetest__physicalplantest__physical_plan.t.b, planner__core__casetest__physicalplantest__physical_plan.t.c +└─IndexMerge 2.00 root type: union, limit embedded(offset:0, count:2) + ├─Limit(Build) 1.00 cop[tikv] offset:0, count:2 + │ └─IndexRangeScan 1.00 cop[tikv] table:t, index:idx(a, c) range:[1,1], keep order:true, stats:pseudo + ├─Limit(Build) 1.00 cop[tikv] offset:0, count:2 + │ └─IndexRangeScan 1.00 cop[tikv] table:t, index:idx2(b, c) range:[1,1], keep order:true, stats:pseudo + └─TableRowIDScan(Probe) 2.00 cop[tikv] table:t keep order:false, stats:pseudo +show warnings; +Level Code Message +explain format = 'brief' select * from t where a = 1 or b in (1, 2, 3) order by c limit 2; +id estRows task access object operator info +TopN 2.00 root planner__core__casetest__physicalplantest__physical_plan.t.c, offset:0, count:2 +└─IndexMerge 2.00 root type: union + ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t, index:idx(a, c) range:[1,1], keep order:false, stats:pseudo + ├─IndexRangeScan(Build) 30.00 cop[tikv] table:t, index:idx2(b, c) range:[1,1], [2,2], [3,3], keep order:false, stats:pseudo + └─TopN(Probe) 2.00 cop[tikv] planner__core__casetest__physicalplantest__physical_plan.t.c, offset:0, count:2 + └─TableRowIDScan 39.97 cop[tikv] table:t keep order:false, stats:pseudo +show warnings; +Level Code Message +explain format = 'brief' select * from t where a in (1, 2, 3) or b = 1 order by c limit 2; +id estRows task access object operator info +TopN 2.00 root planner__core__casetest__physicalplantest__physical_plan.t.c, offset:0, count:2 +└─IndexMerge 2.00 root type: union + ├─IndexRangeScan(Build) 30.00 cop[tikv] table:t, index:idx(a, c) range:[1,1], [2,2], [3,3], keep order:false, stats:pseudo + ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t, index:idx2(b, c) range:[1,1], keep order:false, stats:pseudo + └─TopN(Probe) 2.00 cop[tikv] planner__core__casetest__physicalplantest__physical_plan.t.c, offset:0, count:2 + └─TableRowIDScan 39.97 cop[tikv] table:t keep order:false, stats:pseudo +show warnings; +Level Code Message +explain format = 'brief' select * from t where a in (1, 2, 3) or b in (1, 2, 3) order by c limit 2; +id estRows task access object operator info +TopN 2.00 root planner__core__casetest__physicalplantest__physical_plan.t.c, offset:0, count:2 +└─IndexMerge 2.00 root type: union + ├─IndexRangeScan(Build) 30.00 cop[tikv] table:t, index:idx(a, c) range:[1,1], [2,2], [3,3], keep order:false, stats:pseudo + ├─IndexRangeScan(Build) 30.00 cop[tikv] table:t, index:idx2(b, c) range:[1,1], [2,2], [3,3], keep order:false, stats:pseudo + └─TopN(Probe) 2.00 cop[tikv] planner__core__casetest__physicalplantest__physical_plan.t.c, offset:0, count:2 + └─TableRowIDScan 59.91 cop[tikv] table:t keep order:false, stats:pseudo +show warnings; +Level Code Message +explain format = 'brief' select * from t where (a = 1 and c = 2) or (b = 1) order by c limit 2; +id estRows task access object operator info +Projection 2.00 root planner__core__casetest__physicalplantest__physical_plan.t.a, planner__core__casetest__physicalplantest__physical_plan.t.b, planner__core__casetest__physicalplantest__physical_plan.t.c +└─IndexMerge 2.00 root type: union, limit embedded(offset:0, count:2) + ├─Limit(Build) 0.02 cop[tikv] offset:0, count:2 + │ └─IndexRangeScan 0.02 cop[tikv] table:t, index:idx(a, c) range:[1 2,1 2], keep order:true, stats:pseudo + ├─Limit(Build) 1.98 cop[tikv] offset:0, count:2 + │ └─IndexRangeScan 1.98 cop[tikv] table:t, index:idx2(b, c) range:[1,1], keep order:true, stats:pseudo + └─TableRowIDScan(Probe) 2.00 cop[tikv] table:t keep order:false, stats:pseudo +show warnings; +Level Code Message +explain format = 'brief' select * from t where (a = 1 and c = 2) or b in (1, 2, 3) order by c limit 2; +id estRows task access object operator info +TopN 2.00 root planner__core__casetest__physicalplantest__physical_plan.t.c, offset:0, count:2 +└─IndexMerge 2.00 root type: union + ├─IndexRangeScan(Build) 0.10 cop[tikv] table:t, index:idx(a, c) range:[1 2,1 2], keep order:false, stats:pseudo + ├─IndexRangeScan(Build) 30.00 cop[tikv] table:t, index:idx2(b, c) range:[1,1], [2,2], [3,3], keep order:false, stats:pseudo + └─TopN(Probe) 2.00 cop[tikv] planner__core__casetest__physicalplantest__physical_plan.t.c, offset:0, count:2 + └─TableRowIDScan 30.10 cop[tikv] table:t keep order:false, stats:pseudo +show warnings; +Level Code Message +explain format = 'brief' select * from t where (a = 1 and c = 2) or (b in (1, 2, 3) and c = 3) order by c limit 2; +id estRows task access object operator info +TopN 0.40 root planner__core__casetest__physicalplantest__physical_plan.t.c, offset:0, count:2 +└─IndexMerge 0.40 root type: union + ├─IndexRangeScan(Build) 0.10 cop[tikv] table:t, index:idx(a, c) range:[1 2,1 2], keep order:false, stats:pseudo + ├─IndexRangeScan(Build) 0.30 cop[tikv] table:t, index:idx2(b, c) range:[1 3,1 3], [2 3,2 3], [3 3,3 3], keep order:false, stats:pseudo + └─TopN(Probe) 0.40 cop[tikv] planner__core__casetest__physicalplantest__physical_plan.t.c, offset:0, count:2 + └─TableRowIDScan 0.40 cop[tikv] table:t keep order:false, stats:pseudo +show warnings; +Level Code Message +explain format = 'brief' select * from t where (a = 1 or b = 2) and c = 3 order by c limit 2; +id estRows task access object operator info +TopN 0.02 root planner__core__casetest__physicalplantest__physical_plan.t.c, offset:0, count:2 +└─IndexMerge 0.02 root type: union + ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t, index:idx(a, c) range:[1,1], keep order:false, stats:pseudo + ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t, index:idx2(b, c) range:[2,2], keep order:false, stats:pseudo + └─TopN(Probe) 0.02 cop[tikv] planner__core__casetest__physicalplantest__physical_plan.t.c, offset:0, count:2 + └─Selection 0.02 cop[tikv] eq(planner__core__casetest__physicalplantest__physical_plan.t.c, 3) + └─TableRowIDScan 19.99 cop[tikv] table:t keep order:false, stats:pseudo +show warnings; +Level Code Message +explain format = 'brief' select * from t where (a = 1 or b = 2) and c in (1, 2, 3) order by c limit 2; +id estRows task access object operator info +TopN 0.06 root planner__core__casetest__physicalplantest__physical_plan.t.c, offset:0, count:2 +└─IndexMerge 0.06 root type: union + ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t, index:idx(a, c) range:[1,1], keep order:false, stats:pseudo + ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t, index:idx2(b, c) range:[2,2], keep order:false, stats:pseudo + └─TopN(Probe) 0.06 cop[tikv] planner__core__casetest__physicalplantest__physical_plan.t.c, offset:0, count:2 + └─Selection 0.06 cop[tikv] in(planner__core__casetest__physicalplantest__physical_plan.t.c, 1, 2, 3) + └─TableRowIDScan 19.99 cop[tikv] table:t keep order:false, stats:pseudo +show warnings; +Level Code Message +explain format = 'brief' select * from t where (a = 1 or b = 2) and c in (1, 2, 3) order by b limit 2; +id estRows task access object operator info +TopN 0.06 root planner__core__casetest__physicalplantest__physical_plan.t.b, offset:0, count:2 +└─IndexMerge 0.06 root type: union + ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t, index:idx(a, c) range:[1,1], keep order:false, stats:pseudo + ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t, index:idx2(b, c) range:[2,2], keep order:false, stats:pseudo + └─TopN(Probe) 0.06 cop[tikv] planner__core__casetest__physicalplantest__physical_plan.t.b, offset:0, count:2 + └─Selection 0.06 cop[tikv] in(planner__core__casetest__physicalplantest__physical_plan.t.c, 1, 2, 3) + └─TableRowIDScan 19.99 cop[tikv] table:t keep order:false, stats:pseudo +show warnings; +Level Code Message +explain format = 'brief' select * from tcommon where a = 1 or b = 1 order by c limit 2; +id estRows task access object operator info +Projection 2.00 root planner__core__casetest__physicalplantest__physical_plan.tcommon.a, planner__core__casetest__physicalplantest__physical_plan.tcommon.b, planner__core__casetest__physicalplantest__physical_plan.tcommon.c +└─IndexMerge 2.00 root type: union, limit embedded(offset:0, count:2) + ├─Limit(Build) 1.00 cop[tikv] offset:0, count:2 + │ └─IndexRangeScan 1.00 cop[tikv] table:tcommon, index:PRIMARY(a, c) range:[1,1], keep order:true, stats:pseudo + ├─Limit(Build) 1.00 cop[tikv] offset:0, count:2 + │ └─IndexRangeScan 1.00 cop[tikv] table:tcommon, index:idx2(b, c) range:[1,1], keep order:true, stats:pseudo + └─TableRowIDScan(Probe) 2.00 cop[tikv] table:tcommon keep order:false, stats:pseudo +show warnings; +Level Code Message +explain format = 'brief' select * from tcommon where (a = 1 and c = 2) or (b = 1) order by c limit 2; +id estRows task access object operator info +Projection 2.00 root planner__core__casetest__physicalplantest__physical_plan.tcommon.a, planner__core__casetest__physicalplantest__physical_plan.tcommon.b, planner__core__casetest__physicalplantest__physical_plan.tcommon.c +└─IndexMerge 2.00 root type: union, limit embedded(offset:0, count:2) + ├─Limit(Build) 0.18 cop[tikv] offset:0, count:2 + │ └─IndexRangeScan 0.18 cop[tikv] table:tcommon, index:PRIMARY(a, c) range:[1 2,1 2], keep order:true, stats:pseudo + ├─Limit(Build) 1.82 cop[tikv] offset:0, count:2 + │ └─IndexRangeScan 1.82 cop[tikv] table:tcommon, index:idx2(b, c) range:[1,1], keep order:true, stats:pseudo + └─TableRowIDScan(Probe) 2.00 cop[tikv] table:tcommon keep order:false, stats:pseudo +show warnings; +Level Code Message +explain format = 'brief' select * from thash use index(idx_ac, idx_bc) where a = 1 or b = 1 order by c limit 2; +id estRows task access object operator info +TopN 2.00 root planner__core__casetest__physicalplantest__physical_plan.thash.c, offset:0, count:2 +└─PartitionUnion 8.00 root + ├─Projection 2.00 root planner__core__casetest__physicalplantest__physical_plan.thash.a, planner__core__casetest__physicalplantest__physical_plan.thash.b, planner__core__casetest__physicalplantest__physical_plan.thash.c + │ └─IndexMerge 2.00 root type: union, limit embedded(offset:0, count:2) + │ ├─Limit(Build) 1.00 cop[tikv] offset:0, count:2 + │ │ └─IndexRangeScan 1.00 cop[tikv] table:thash, partition:p0, index:idx_ac(a, c) range:[1,1], keep order:true, stats:pseudo + │ ├─Limit(Build) 1.00 cop[tikv] offset:0, count:2 + │ │ └─IndexRangeScan 1.00 cop[tikv] table:thash, partition:p0, index:idx_bc(b, c) range:[1,1], keep order:true, stats:pseudo + │ └─TableRowIDScan(Probe) 2.00 cop[tikv] table:thash, partition:p0 keep order:false, stats:pseudo + ├─Projection 2.00 root planner__core__casetest__physicalplantest__physical_plan.thash.a, planner__core__casetest__physicalplantest__physical_plan.thash.b, planner__core__casetest__physicalplantest__physical_plan.thash.c + │ └─IndexMerge 2.00 root type: union, limit embedded(offset:0, count:2) + │ ├─Limit(Build) 1.00 cop[tikv] offset:0, count:2 + │ │ └─IndexRangeScan 1.00 cop[tikv] table:thash, partition:p1, index:idx_ac(a, c) range:[1,1], keep order:true, stats:pseudo + │ ├─Limit(Build) 1.00 cop[tikv] offset:0, count:2 + │ │ └─IndexRangeScan 1.00 cop[tikv] table:thash, partition:p1, index:idx_bc(b, c) range:[1,1], keep order:true, stats:pseudo + │ └─TableRowIDScan(Probe) 2.00 cop[tikv] table:thash, partition:p1 keep order:false, stats:pseudo + ├─Projection 2.00 root planner__core__casetest__physicalplantest__physical_plan.thash.a, planner__core__casetest__physicalplantest__physical_plan.thash.b, planner__core__casetest__physicalplantest__physical_plan.thash.c + │ └─IndexMerge 2.00 root type: union, limit embedded(offset:0, count:2) + │ ├─Limit(Build) 1.00 cop[tikv] offset:0, count:2 + │ │ └─IndexRangeScan 1.00 cop[tikv] table:thash, partition:p2, index:idx_ac(a, c) range:[1,1], keep order:true, stats:pseudo + │ ├─Limit(Build) 1.00 cop[tikv] offset:0, count:2 + │ │ └─IndexRangeScan 1.00 cop[tikv] table:thash, partition:p2, index:idx_bc(b, c) range:[1,1], keep order:true, stats:pseudo + │ └─TableRowIDScan(Probe) 2.00 cop[tikv] table:thash, partition:p2 keep order:false, stats:pseudo + └─Projection 2.00 root planner__core__casetest__physicalplantest__physical_plan.thash.a, planner__core__casetest__physicalplantest__physical_plan.thash.b, planner__core__casetest__physicalplantest__physical_plan.thash.c + └─IndexMerge 2.00 root type: union, limit embedded(offset:0, count:2) + ├─Limit(Build) 1.00 cop[tikv] offset:0, count:2 + │ └─IndexRangeScan 1.00 cop[tikv] table:thash, partition:p3, index:idx_ac(a, c) range:[1,1], keep order:true, stats:pseudo + ├─Limit(Build) 1.00 cop[tikv] offset:0, count:2 + │ └─IndexRangeScan 1.00 cop[tikv] table:thash, partition:p3, index:idx_bc(b, c) range:[1,1], keep order:true, stats:pseudo + └─TableRowIDScan(Probe) 2.00 cop[tikv] table:thash, partition:p3 keep order:false, stats:pseudo +show warnings; +Level Code Message +Warning 1105 disable dynamic pruning due to thash has no global stats +set tidb_cost_model_version=DEFAULT; +drop table if exists t, t2, t3; +set tidb_cost_model_version=1; +CREATE TABLE `t2` ( `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL, `c` int(11) DEFAULT NULL, KEY `a` (`a`), KEY `b` (`b`)) ; +insert into t2 values(1,2,1),(2,1,1),(3,3,1); +create table t(a int, j json, index kj((cast(j as signed array)))); +insert into t values(1, '[1,2,3]'); +CREATE TABLE `t3` ( +`id` int(11) NOT NULL, +`aid` bigint(20) DEFAULT NULL, +`c1` varchar(255) DEFAULT NULL, +`c2` varchar(255) DEFAULT NULL, +`d` int(11) DEFAULT NULL, +PRIMARY KEY (`id`) /*T![clustered_index] CLUSTERED */, +KEY `aid_c1` (`aid`,`c1`), +KEY `aid_c2` (`aid`,`c2`) +); +explain format = 'brief' select /*+ use_index_merge(t2, a, b) */ * from t2 where a=1 or b=1 and c=1 limit 2; +id estRows task access object operator info +Limit 2.00 root offset:0, count:2 +└─IndexMerge 0.00 root type: union + ├─IndexRangeScan(Build) 2.00 cop[tikv] table:t2, index:a(a) range:[1,1], keep order:false, stats:pseudo + ├─IndexRangeScan(Build) 2.00 cop[tikv] table:t2, index:b(b) range:[1,1], keep order:false, stats:pseudo + └─Limit(Probe) 0.00 cop[tikv] offset:0, count:2 + └─Selection 0.00 cop[tikv] or(eq(planner__core__casetest__physicalplantest__physical_plan.t2.a, 1), and(eq(planner__core__casetest__physicalplantest__physical_plan.t2.b, 1), eq(planner__core__casetest__physicalplantest__physical_plan.t2.c, 1))) + └─TableRowIDScan 3.99 cop[tikv] table:t2 keep order:false, stats:pseudo +show warnings; +Level Code Message +explain format = 'brief' select /*+ use_index_merge(t2, a, b) */ * from t2 where a=1 and b=1 and c=1 limit 2; +id estRows task access object operator info +Limit 0.00 root offset:0, count:2 +└─IndexMerge 0.01 root type: intersection + ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t2, index:a(a) range:[1,1], keep order:false, stats:pseudo + ├─IndexRangeScan(Build) 10.00 cop[tikv] table:t2, index:b(b) range:[1,1], keep order:false, stats:pseudo + └─Limit(Probe) 0.01 cop[tikv] offset:0, count:2 + └─Selection 0.01 cop[tikv] eq(planner__core__casetest__physicalplantest__physical_plan.t2.c, 1) + └─TableRowIDScan 0.01 cop[tikv] table:t2 keep order:false, stats:pseudo +show warnings; +Level Code Message +select /*+ use_index_merge(t2, a, b) */ * from t2 where a=1 and b=1 and c=1 limit 2; +a b c +show warnings; +Level Code Message +explain format = 'brief' select /*+ use_index_merge(t2, a, b) */ * from t2 where a=1 or b=1 limit 2; +id estRows task access object operator info +IndexMerge 2.00 root type: union, limit embedded(offset:0, count:2) +├─Limit(Build) 1.00 cop[tikv] offset:0, count:2 +│ └─IndexRangeScan 1.00 cop[tikv] table:t2, index:a(a) range:[1,1], keep order:false, stats:pseudo +├─Limit(Build) 1.00 cop[tikv] offset:0, count:2 +│ └─IndexRangeScan 1.00 cop[tikv] table:t2, index:b(b) range:[1,1], keep order:false, stats:pseudo +└─TableRowIDScan(Probe) 2.00 cop[tikv] table:t2 keep order:false, stats:pseudo +show warnings; +Level Code Message +explain format = 'brief' select /*+ use_index_merge(t2, a, b) */ * from t2 where a=1 and b=1 limit 2; +id estRows task access object operator info +IndexMerge 0.01 root type: intersection, limit embedded(offset:0, count:2) +├─IndexRangeScan(Build) 10.00 cop[tikv] table:t2, index:a(a) range:[1,1], keep order:false, stats:pseudo +├─IndexRangeScan(Build) 10.00 cop[tikv] table:t2, index:b(b) range:[1,1], keep order:false, stats:pseudo +└─TableRowIDScan(Probe) 0.01 cop[tikv] table:t2 keep order:false, stats:pseudo +show warnings; +Level Code Message +select /*+ use_index_merge(t2, a, b) */ * from t2 where a=1 and b=1 limit 2; +a b c +show warnings; +Level Code Message +explain format = 'brief' select /*+ use_index(t, kj) */ * from t where (1 member of (j)) limit 1; +id estRows task access object operator info +IndexMerge 0.00 root type: union, limit embedded(offset:0, count:1) +├─Limit(Build) 0.00 cop[tikv] offset:0, count:1 +│ └─IndexRangeScan 0.00 cop[tikv] table:t, index:kj(cast(`j` as signed array)) range:[1,1], keep order:false, stats:pseudo +└─TableRowIDScan(Probe) 0.00 cop[tikv] table:t keep order:false, stats:pseudo +show warnings; +Level Code Message +explain format = 'brief' select /*+ use_index(t, kj) */ * from t where json_contains(j, '[1, 2, 3]') limit 1; +id estRows task access object operator info +IndexMerge 0.00 root type: intersection, limit embedded(offset:0, count:1) +├─IndexRangeScan(Build) 0.00 cop[tikv] table:t, index:kj(cast(`j` as signed array)) range:[1,1], keep order:false, stats:pseudo +├─IndexRangeScan(Build) 0.00 cop[tikv] table:t, index:kj(cast(`j` as signed array)) range:[2,2], keep order:false, stats:pseudo +├─IndexRangeScan(Build) 0.00 cop[tikv] table:t, index:kj(cast(`j` as signed array)) range:[3,3], keep order:false, stats:pseudo +└─TableRowIDScan(Probe) 0.00 cop[tikv] table:t keep order:false, stats:pseudo +show warnings; +Level Code Message +explain format = 'brief' select /*+ use_index(t, kj) */ * from t where json_overlaps(j, '[1, 2, 3]') limit 1; +id estRows task access object operator info +Limit 1.00 root offset:0, count:1 +└─Selection 1.00 root json_overlaps(planner__core__casetest__physicalplantest__physical_plan.t.j, cast("[1, 2, 3]", json BINARY)) + └─IndexMerge 0.00 root type: union + ├─IndexRangeScan(Build) 0.00 cop[tikv] table:t, index:kj(cast(`j` as signed array)) range:[1,1], keep order:false, stats:pseudo + ├─IndexRangeScan(Build) 0.00 cop[tikv] table:t, index:kj(cast(`j` as signed array)) range:[2,2], keep order:false, stats:pseudo + ├─IndexRangeScan(Build) 0.00 cop[tikv] table:t, index:kj(cast(`j` as signed array)) range:[3,3], keep order:false, stats:pseudo + └─TableRowIDScan(Probe) 0.00 cop[tikv] table:t keep order:false, stats:pseudo +show warnings; +Level Code Message +Warning 1105 Scalar function 'json_overlaps'(signature: Unspecified, return type: bigint(20)) is not supported to push down to storage layer now. +explain format = 'brief' select /*+ use_index(t, kj) */ * from t where (1 member of (j) and a=1 ) limit 1; +id estRows task access object operator info +Limit 1.00 root offset:0, count:1 +└─IndexMerge 0.00 root type: union + ├─IndexRangeScan(Build) 1.25 cop[tikv] table:t, index:kj(cast(`j` as signed array)) range:[1,1], keep order:false, stats:pseudo + └─Limit(Probe) 0.00 cop[tikv] offset:0, count:1 + └─Selection 0.00 cop[tikv] eq(planner__core__casetest__physicalplantest__physical_plan.t.a, 1) + └─TableRowIDScan 1.25 cop[tikv] table:t keep order:false, stats:pseudo +show warnings; +Level Code Message +explain format = 'brief' select /*+ use_index(t, kj) */ * from t where json_contains(j, '[1, 2, 3]') and a=1 limit 1; +id estRows task access object operator info +Limit 1.00 root offset:0, count:1 +└─IndexMerge 0.00 root type: intersection + ├─IndexRangeScan(Build) 1.25 cop[tikv] table:t, index:kj(cast(`j` as signed array)) range:[1,1], keep order:false, stats:pseudo + ├─IndexRangeScan(Build) 1.25 cop[tikv] table:t, index:kj(cast(`j` as signed array)) range:[2,2], keep order:false, stats:pseudo + ├─IndexRangeScan(Build) 1.25 cop[tikv] table:t, index:kj(cast(`j` as signed array)) range:[3,3], keep order:false, stats:pseudo + └─Limit(Probe) 0.00 cop[tikv] offset:0, count:1 + └─Selection 0.00 cop[tikv] eq(planner__core__casetest__physicalplantest__physical_plan.t.a, 1) + └─TableRowIDScan 1.25 cop[tikv] table:t keep order:false, stats:pseudo +show warnings; +Level Code Message +explain format = 'brief' select /*+ use_index(t, kj) */ * from t where json_overlaps(j, '[1, 2, 3]') and a=1 limit 1; +id estRows task access object operator info +Limit 1.00 root offset:0, count:1 +└─Selection 1.00 root json_overlaps(planner__core__casetest__physicalplantest__physical_plan.t.j, cast("[1, 2, 3]", json BINARY)) + └─IndexMerge 1.00 root type: union + ├─IndexRangeScan(Build) 1.00 cop[tikv] table:t, index:kj(cast(`j` as signed array)) range:[1,1], keep order:false, stats:pseudo + ├─IndexRangeScan(Build) 1.00 cop[tikv] table:t, index:kj(cast(`j` as signed array)) range:[2,2], keep order:false, stats:pseudo + ├─IndexRangeScan(Build) 1.00 cop[tikv] table:t, index:kj(cast(`j` as signed array)) range:[3,3], keep order:false, stats:pseudo + └─Selection(Probe) 1.00 cop[tikv] eq(planner__core__casetest__physicalplantest__physical_plan.t.a, 1) + └─TableRowIDScan 1.00 cop[tikv] table:t keep order:false, stats:pseudo +show warnings; +Level Code Message +Warning 1105 Scalar function 'json_overlaps'(signature: Unspecified, return type: bigint(20)) is not supported to push down to storage layer now. +set tidb_cost_model_version=DEFAULT; +explain select /*+ USE_INDEX_MERGE(t3, aid_c1, aid_c2) */ * from t3 where (aid = 1 and c1='aaa') or (aid = 1 and c2='bbb') limit 1; +id estRows task access object operator info +IndexMerge_20 1.00 root type: union, limit embedded(offset:0, count:1) +├─Limit_18(Build) 0.01 cop[tikv] offset:0, count:1 +│ └─IndexRangeScan_11 0.01 cop[tikv] table:t3, index:aid_c1(aid, c1) range:[1 "aaa",1 "aaa"], keep order:false, stats:pseudo +├─Limit_19(Build) 0.01 cop[tikv] offset:0, count:1 +│ └─IndexRangeScan_12 0.01 cop[tikv] table:t3, index:aid_c2(aid, c2) range:[1 "bbb",1 "bbb"], keep order:false, stats:pseudo +└─TableRowIDScan_13(Probe) 1.00 cop[tikv] table:t3 keep order:false, stats:pseudo +show warnings; +Level Code Message diff --git a/tests/integrationtest/r/planner/core/cbo.result b/tests/integrationtest/r/planner/core/cbo.result index 645686c28e8de..230e53fe949ca 100644 --- a/tests/integrationtest/r/planner/core/cbo.result +++ b/tests/integrationtest/r/planner/core/cbo.result @@ -21,3 +21,62 @@ analyze table t25219; select * from t25219 WHERE (col3 IS NULL OR col1 IS NOT NULL AND col3 <= 6659) AND col3 = 1; a col3 col1 1 1 1 +drop table if exists t1, t2; +create table t1 ( +id bigint primary key, +a bigint not null, +b varchar(100) not null, +c varchar(10) not null, +d bigint as (a % 30) not null, +key (d, b, c) +); +create table t2 ( +id varchar(50) primary key, +a varchar(100) unique, +b datetime, +c varchar(45), +d int not null unique auto_increment +); +explain analyze select /*+ TIDB_INLJ(t2) */ t1.id, t2.a from t1 join t2 on t1.a = t2.d where t1.b = 't2' and t1.d = 4; +drop table if exists t; +create table t (a int); +insert into t values (1); +set tidb_cost_model_version=2; +explain format='cost_trace' select * from t; +id estRows estCost costFormula task access object operator info +TableReader_5 10000.00 177906.67 ((scan(10000*logrowsize(32)*tikv_scan_factor(40.7))) + (net(10000*rowsize(16)*tidb_kv_net_factor(3.96))))/15.00 root data:TableFullScan_4 +└─TableFullScan_4 10000.00 2035000.00 scan(10000*logrowsize(32)*tikv_scan_factor(40.7)) cop[tikv] table:t keep order:false, stats:pseudo +explain analyze format='cost_trace' select * from t; +id estRows estCost costFormula actRows task access object execution info operator info memory disk +TableReader_5 10000.00 177906.67 ((scan(10000*logrowsize(32)*tikv_scan_factor(40.7))) + (net(10000*rowsize(16)*tidb_kv_net_factor(3.96))))/15.00 1 root +└─TableFullScan_4 10000.00 2035000.00 scan(10000*logrowsize(32)*tikv_scan_factor(40.7)) 1 cop[tikv] table:t +set tidb_cost_model_version=1; +explain format='cost_trace' select * from t; +id estRows estCost costFormula task access object operator info +TableReader_5 10000.00 34418.00 N/A root data:TableFullScan_4 +└─TableFullScan_4 10000.00 435000.00 N/A cop[tikv] table:t keep order:false, stats:pseudo +explain analyze format='cost_trace' select * from t; +id estRows estCost costFormula actRows task access object execution info operator info memory disk +TableReader_5 10000.00 34418.00 N/A 1 root +└─TableFullScan_4 10000.00 435000.00 N/A 1 cop[tikv] table:t +set tidb_cost_model_version=default; +drop table if exists t1, t2; +set sql_mode='STRICT_TRANS_TABLES'; +create table t1(a int, b int, c int, key idx(a, b)); +create table t2(a int, b int); +insert into t1 values (1, 1, 1), (2, 2, 2), (3, 3, 3), (4, 4, 4), (5, 5, 5); +insert into t2 values (2, 22), (3, 33), (5, 55), (233, 2), (333, 3), (3434, 5); +analyze table t1, t2; +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:} 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: {num:, max:, proc_keys:, rpc_num:, rpc_time:, copr_cache_hit_ratio:, build_task_duration:, max_distsql_concurrency:} 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 + └─TableReader_33(Probe) 4.00 4 root NULL time:, loops:, cop_task: {num:, max:, proc_keys:, rpc_num:, rpc_time:, copr_cache_hit_ratio:, build_task_duration:, max_distsql_concurrency:} data:Selection_32 N/A + └─Selection_32 4.00 4 cop[tikv] NULL tikv_task:{time:, loops:} gt(planner__core__cbo.t1.a, 1), not(isnull(planner__core__cbo.t1.a)) N/A N/A + └─TableFullScan_31 5.00 5 cop[tikv] table:t1 tikv_task:{time:, loops:} keep order:false N/A N/A +set sql_mode=default; diff --git a/tests/integrationtest/r/planner/core/expression_rewriter.result b/tests/integrationtest/r/planner/core/expression_rewriter.result index da510642fea64..21a80fa6eaf7e 100644 --- a/tests/integrationtest/r/planner/core/expression_rewriter.result +++ b/tests/integrationtest/r/planner/core/expression_rewriter.result @@ -340,3 +340,96 @@ create table t2(a int); create table t(a int); select * from t where exists ( select a from ( select a from t1 union all select a from t2) u where t.a=u.a); a +drop table if exists t, t1; +create table t(a int not null, b int not null); +select ifnull(a,b) from t; +ifnull(a,b) +drop table if exists t; +create table t(e int not null, b int); +insert into t values(1, 1); +create table t1(e int not null, b int); +insert into t1 values(1, 1); +select b from t where ifnull(e, b); +b +1 +select b from t1 where ifnull(e, b); +b +1 +drop table if exists t1, t2; +create table t1 (c_int int, c_str varchar(40), c_datetime datetime, primary key(c_int)); +create table t2 (c_int int, c_str varchar(40), c_datetime datetime, primary key (c_datetime)) partition by range (to_days(c_datetime)) ( partition p0 values less than (to_days('2020-02-01')), partition p1 values less than (to_days('2020-04-01')), partition p2 values less than (to_days('2020-06-01')), partition p3 values less than maxvalue); +insert into t1 (c_int, c_str, c_datetime) values (1, 'xenodochial bassi', '2020-04-29 03:22:51'), (2, 'epic wiles', '2020-01-02 23:29:51'), (3, 'silly burnell', '2020-02-25 07:43:07'); +insert into t2 (c_int, c_str, c_datetime) values (1, 'trusting matsumoto', '2020-01-07 00:57:18'), (2, 'pedantic boyd', '2020-06-08 23:12:16'), (null, 'strange hypatia', '2020-05-23 17:45:27'); +select * from t1 where c_int != any (select c_int from t2 where t1.c_str <= t2.c_str); +c_int c_str c_datetime +2 epic wiles 2020-01-02 23:29:51 +3 silly burnell 2020-02-25 07:43:07 +select * from t1 where c_int != any (select c_int from t2 where t1.c_str <= t2.c_str); +c_int c_str c_datetime +2 epic wiles 2020-01-02 23:29:51 +3 silly burnell 2020-02-25 07:43:07 +select * from t1 where c_int != any (select c_int from t2 where t1.c_str <= t2.c_str); +c_int c_str c_datetime +2 epic wiles 2020-01-02 23:29:51 +3 silly burnell 2020-02-25 07:43:07 +select * from t1 where c_int != any (select c_int from t2 where t1.c_str <= t2.c_str); +c_int c_str c_datetime +2 epic wiles 2020-01-02 23:29:51 +3 silly burnell 2020-02-25 07:43:07 +select * from t1 where c_int != any (select c_int from t2 where t1.c_str <= t2.c_str); +c_int c_str c_datetime +2 epic wiles 2020-01-02 23:29:51 +3 silly burnell 2020-02-25 07:43:07 +select * from t1 where c_int != any (select c_int from t2 where t1.c_str <= t2.c_str); +c_int c_str c_datetime +2 epic wiles 2020-01-02 23:29:51 +3 silly burnell 2020-02-25 07:43:07 +select * from t1 where c_int != any (select c_int from t2 where t1.c_str <= t2.c_str); +c_int c_str c_datetime +2 epic wiles 2020-01-02 23:29:51 +3 silly burnell 2020-02-25 07:43:07 +select * from t1 where c_int != any (select c_int from t2 where t1.c_str <= t2.c_str); +c_int c_str c_datetime +2 epic wiles 2020-01-02 23:29:51 +3 silly burnell 2020-02-25 07:43:07 +select * from t1 where c_int != any (select c_int from t2 where t1.c_str <= t2.c_str); +c_int c_str c_datetime +2 epic wiles 2020-01-02 23:29:51 +3 silly burnell 2020-02-25 07:43:07 +select * from t1 where c_int != any (select c_int from t2 where t1.c_str <= t2.c_str); +c_int c_str c_datetime +2 epic wiles 2020-01-02 23:29:51 +3 silly burnell 2020-02-25 07:43:07 +set @a = 'xx'; +select * from information_schema.COLLATIONS where IS_DEFAULT='Yes' and CHARACTER_SET_NAME='utf8mb4'; +COLLATION_NAME CHARACTER_SET_NAME ID IS_DEFAULT IS_COMPILED SORTLEN +utf8mb4_bin utf8mb4 46 Yes Yes 1 +select collation(_utf8mb4'12345'); +collation(_utf8mb4'12345') +utf8mb4_bin +select collation(_utf8mb4'xxx' collate utf8mb4_general_ci); +collation(_utf8mb4'xxx' collate utf8mb4_general_ci) +utf8mb4_general_ci +select collation(_utf8mb4'@a'); +collation(_utf8mb4'@a') +utf8mb4_bin +select collation(_utf8mb4'@a' collate utf8mb4_general_ci); +collation(_utf8mb4'@a' collate utf8mb4_general_ci) +utf8mb4_general_ci +set @@session.default_collation_for_utf8mb4='utf8mb4_0900_ai_ci'; +select * from information_schema.COLLATIONS where IS_DEFAULT='Yes' and CHARACTER_SET_NAME='utf8mb4'; +COLLATION_NAME CHARACTER_SET_NAME ID IS_DEFAULT IS_COMPILED SORTLEN +utf8mb4_bin utf8mb4 46 Yes Yes 1 +select collation(_utf8mb4'12345'); +collation(_utf8mb4'12345') +utf8mb4_0900_ai_ci +select collation(_utf8mb4'12345' collate utf8mb4_general_ci); +collation(_utf8mb4'12345' collate utf8mb4_general_ci) +utf8mb4_general_ci +select collation(_utf8mb4'@a'); +collation(_utf8mb4'@a') +utf8mb4_0900_ai_ci +select collation(_utf8mb4'@a' collate utf8mb4_general_ci); +collation(_utf8mb4'@a' collate utf8mb4_general_ci) +utf8mb4_general_ci +set @@session.default_collation_for_utf8mb4=default; diff --git a/tests/integrationtest/r/planner/core/integration.result b/tests/integrationtest/r/planner/core/integration.result index 7007fde9650f9..02471cf158c07 100644 --- a/tests/integrationtest/r/planner/core/integration.result +++ b/tests/integrationtest/r/planner/core/integration.result @@ -3948,3 +3948,407 @@ p o v a 3 5 5 3 3 9 9 9 set @@tidb_enable_pipelined_window_function=DEFAULT; +drop table if exists t; +create table t(a datetime) partition by range columns (a) (partition p1 values less than ('20000101'), partition p2 values less than ('2000-10-01')); +insert into t values ('20000201'), ('19000101'); +analyze table t; +desc format='brief' select * from t where a < '2000-01-01'; +id estRows task access object operator info +TableReader 1.00 root partition:p1 data:Selection +└─Selection 1.00 cop[tikv] lt(planner__core__integration.t.a, 2000-01-01 00:00:00.000000) + └─TableFullScan 2.00 cop[tikv] table:t keep order:false +drop user if exists test; +create user test; +grant select on test1111 to test@'%'; +Error 1046 (3D000): No database selected +grant select on * to test@'%'; +Error 1046 (3D000): No database selected +revoke select on * from test@'%'; +Error 1046 (3D000): No database selected +use planner__core__integration; +create table test1111 (id int); +grant select on test1111 to test@'%'; +drop table if exists t; +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 +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 +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 +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 +drop table if exists t; +create table t (a int, b int); +insert into t values (1, 2); +select count(*) from t where b = 1 and b in (3); +count(*) +0 +drop table t; +create table t (a int, b int as (a + 1), c int as (b + 1)); +begin; +insert into t (a) values (1); +select count(*) from t where b = 1 and b in (3); +count(*) +0 +select count(*) from t where c = 1 and c in (3); +count(*) +0 +drop table if exists t; +drop view if exists v0; +create table t(a int, b int); +set session tidb_isolation_read_engines='tiflash,tidb'; +create view v0 (a, avg_b) as select a, avg(b) from t group by a; +select * from v0; +Error 1815 (HY000): Internal : No access path for table 't' is found with 'tidb_isolation_read_engines' = 'tiflash,tidb', valid values can be 'tikv'. +set session tidb_isolation_read_engines='tikv,tiflash,tidb'; +select * from v0; +a avg_b +set session tidb_isolation_read_engines=default; +drop table if exists t1, t2; +drop view if exists v1, v2, v3, v4, v5; +create table t1 (a int, b int); +create table t2 (c int, d int); +create view v1 as select * from t1 order by a limit 5; +create view v2 as select * from ((select * from t1) union (select * from t2)) as tt order by a, b limit 5; +create view v3 as select * from v1 order by a limit 5; +create view v4 as select * from t1, t2 where t1.a = t2.c order by a, b limit 5; +create view v5 as select * from (select * from t1) as t1 order by a limit 5; +insert into t1 values (1, 2), (3, 4); +insert into t2 values (3, 5), (6, 7); +create temporary table t1 (a int, b int); +create temporary table t2 (c int, d int); +select * from t1; +a b +select * from t2; +c d +select * from v1; +a b +1 2 +3 4 +select * from v2; +a b +1 2 +3 4 +3 5 +6 7 +select * from v3; +a b +1 2 +3 4 +select * from v4; +a b c d +3 4 3 5 +select * from v5; +a b +1 2 +3 4 +drop table t1, t2; +drop table if exists t27949; +create table t27949 (a int, b int, key(b)); +explain format = 'brief' select * from t27949 where b=1; +id estRows task access object operator info +IndexLookUp 10.00 root +├─IndexRangeScan(Build) 10.00 cop[tikv] table:t27949, index:b(b) range:[1,1], keep order:false, stats:pseudo +└─TableRowIDScan(Probe) 10.00 cop[tikv] table:t27949 keep order:false, stats:pseudo +create global binding for select * from t27949 where b=1 using select * from t27949 ignore index(b) where b=1; +explain format = 'brief' select * from t27949 where b=1; +id estRows task access object operator info +TableReader 10.00 root data:Selection +└─Selection 10.00 cop[tikv] eq(planner__core__integration.t27949.b, 1) + └─TableFullScan 10000.00 cop[tikv] table:t27949 keep order:false, stats:pseudo +set @@sql_select_limit=100; +explain format = 'brief' select * from t27949 where b=1; +id estRows task access object operator info +Limit 10.00 root offset:0, count:100 +└─TableReader 10.00 root data:Limit + └─Limit 10.00 cop[tikv] offset:0, count:100 + └─Selection 10.00 cop[tikv] eq(planner__core__integration.t27949.b, 1) + └─TableFullScan 10000.00 cop[tikv] table:t27949 keep order:false, stats:pseudo +drop table if exists t; +create table t(a int, index idx_a(a)); +create binding for select * from t using select * from t use index(idx_a); +select * from t; +a +select @@last_plan_from_binding; +@@last_plan_from_binding +1 +prepare stmt from 'select * from t'; +execute stmt; +a +select @@last_plan_from_binding; +@@last_plan_from_binding +1 +drop global binding for select * from t27949 where b=1; +set @@sql_select_limit=default; +drop table if exists t1, t2; +create table t1(a int, b int); +create table t2(a int, b int); +select avg(0) over w from t1 window w as (order by (select 1)); +avg(0) over w +select avg(0) over w from t1 where b > (select sum(t2.a) over w from t2) window w as (partition by t1.b); +Error 3579 (HY000): Window name 'w' is not defined. +select avg(0) over w1 from t1 where b > (select sum(t2.a) over w2 from t2 window w2 as (partition by t2.b)) window w1 as (partition by t1.b); +avg(0) over w1 +drop table if exists t1; +create table t1(a int, b int); +insert into t1 values (1,1),(2,2); +update t1 as a natural join t1 b SET a.a = 2, b.b = 3; +select * from t1; +a b +2 3 +2 3 +drop table t1; +create table t1 (a int primary key, b int); +insert into t1 values (1,1),(2,2); +update t1 as a natural join t1 b SET a.a = 2, b.b = 3; +Error 1706 (HY000): Primary key/partition key update is not allowed since the table is updated both as 'a' and 'b'. +drop table t1; +create table t1 (a int, b int) partition by hash (a) partitions 3; +insert into t1 values (1,1),(2,2); +update t1 as a natural join t1 b SET a.a = 2, b.b = 3; +Error 1706 (HY000): Primary key/partition key update is not allowed since the table is updated both as 'a' and 'b'. +drop table t1; +create table t1 (A int, b int) partition by hash (b) partitions 3; +insert into t1 values (1,1),(2,2); +update t1 as a natural join t1 B SET a.A = 2, b.b = 3; +Error 1706 (HY000): Primary key/partition key update is not allowed since the table is updated both as 'a' and 'B'. +update t1 as a natural join t1 B SET a.A = 2, b.b = 3; +Error 1706 (HY000): Primary key/partition key update is not allowed since the table is updated both as 'a' and 'B'. +drop table t1; +create table t1 (A int, b int) partition by RANGE COLUMNS (b) (partition `pNeg` values less than (0),partition `pPos` values less than MAXVALUE); +insert into t1 values (1,1),(2,2); +update t1 as a natural join t1 B SET a.A = 2, b.b = 3; +Error 1706 (HY000): Primary key/partition key update is not allowed since the table is updated both as 'a' and 'B'. +drop table t1; +drop table if exists t1, t2, t3, t4, t5; +create table t1(a int, b int, c int, d int, index ia(a), index ib(b), index ic(c), index id(d)); +create table t2(a int, b int, c int, d int, index ia(a), index ib(b), index ic(c), index id(d)); +create table t3(a int, b int, c int, d int, index ia(a), index ib(b), index ic(c), index id(d)); +create table t4(a int, b int, c int, d int, index ia(a), index ib(b), index ic(c), index id(d)); +create table t5(a int, b int, c int, d int, index ia(a), index ib(b), index ic(c), index id(d)); +select * from t3 straight_join t4 on t3.a = t4.b straight_join t2 on t3.d = t2.c straight_join t1 on t1.a = t2.b straight_join t5 on t4.c = t5.d where t2.b < 100 and t4.a = 10; +a b c d a b c d a b c d a b c d a b c d +select * from information_schema.statements_summary; +drop table if exists t0; +drop view if exists v0; +CREATE TABLE t0(c0 BLOB(298) , c1 BLOB(182) , c2 NUMERIC); +CREATE VIEW v0(c0) AS SELECT t0.c1 FROM t0; +INSERT INTO t0 VALUES (-1, 'a', '2046549365'); +CREATE INDEX i0 ON t0(c2); +SELECT t0.c1, t0.c2 FROM t0 GROUP BY MOD(t0.c0, DEFAULT(t0.c2)); +Error 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'planner__core__integration.t0.c1' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by +UPDATE t0 SET c2=1413; +drop table if exists t; +CREATE TABLE t ( +a set('nwbk','r5','1ad3u','van','ir1z','y','9m','f1','z','e6yd','wfev') NOT NULL DEFAULT 'ir1z,f1,e6yd', +b enum('soo2','4s4j','qi9om','8ue','i71o','qon','3','3feh','6o1i','5yebx','d') NOT NULL DEFAULT '8ue', +c varchar(66) DEFAULT '13mdezixgcn', +PRIMARY KEY (a,b) /*T![clustered_index] CLUSTERED */, +UNIQUE KEY ib(b), +KEY ia(a) +)ENGINE=InnoDB DEFAULT CHARSET=ascii COLLATE=ascii_bin; +INSERT INTO t VALUES('ir1z,f1,e6yd','i71o','13mdezixgcn'),('ir1z,f1,e6yd','d','13mdezixgcn'),('nwbk','8ue','13mdezixgcn'); +select * from t where a between 'e6yd' and 'z' or b <> '8ue'; +a b c +ir1z,f1,e6yd d 13mdezixgcn +ir1z,f1,e6yd i71o 13mdezixgcn +nwbk 8ue 13mdezixgcn +select /*+ use_index_merge(t) */ * from t where a between 'e6yd' and 'z' or b <> '8ue'; +a b c +ir1z,f1,e6yd d 13mdezixgcn +ir1z,f1,e6yd i71o 13mdezixgcn +nwbk 8ue 13mdezixgcn +## For now tidb doesn't support push set type to TiKV, and column a is a set type, so we shouldn't generate a IndexMerge path. +explain format='brief' select /*+ use_index_merge(t) */ * from t where a between 'e6yd' and 'z' or b <> '8ue'; +id estRows task access object operator info +Selection 8000.00 root or(and(ge(planner__core__integration.t.a, "e6yd"), le(planner__core__integration.t.a, "z")), ne(planner__core__integration.t.b, "8ue")) +└─TableReader 10000.00 root data:TableFullScan + └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +drop table if exists planner__core__integration.first_range; +create table planner__core__integration.first_range(p int not null, o tinyint not null, v int not null); +insert into planner__core__integration.first_range (p, o, v) values (0, 0, 0), (1, 1, 1), (1, 2, 2), (1, 4, 4), (1, 8, 8), (2, 0, 0), (2, 3, 3), (2, 10, 10), (2, 13, 13), (2, 15, 15), (3, 1, 1), (3, 3, 3), (3, 5, 5), (3, 9, 9), (3, 15, 15), (3, 20, 20), (3, 31, 31); +select *, first_value(v) over (partition by p order by o range between 3.1 preceding and 2.9 following) as a from planner__core__integration.first_range; +p o v a +0 0 0 0 +1 1 1 1 +1 2 2 1 +1 4 4 1 +1 8 8 8 +2 0 0 0 +2 10 10 10 +2 13 13 10 +2 15 15 13 +2 3 3 0 +3 1 1 1 +3 15 15 15 +3 20 20 20 +3 3 3 1 +3 31 31 31 +3 5 5 3 +3 9 9 9 +set @@tidb_enable_pipelined_window_function=0; +select *, first_value(v) over (partition by p order by o range between 3.1 preceding and 2.9 following) as a from planner__core__integration.first_range; +p o v a +0 0 0 0 +1 1 1 1 +1 2 2 1 +1 4 4 1 +1 8 8 8 +2 0 0 0 +2 10 10 10 +2 13 13 10 +2 15 15 13 +2 3 3 0 +3 1 1 1 +3 15 15 15 +3 20 20 20 +3 3 3 1 +3 31 31 31 +3 5 5 3 +3 9 9 9 +set @@tidb_enable_pipelined_window_function=DEFAULT; +drop table if exists t1; +set tidb_enable_ordered_result_mode = on; +create table t1(c1 int); +select * from t1 group by t1.c1 having count(1) > 1 order by count(1) limit 10; +c1 +set tidb_enable_ordered_result_mode = DEFAULT; +set tidb_cost_model_version=2; +drop view if exists v, v1, v2; +drop table if exists t, t1, t2, t3; +create table t(a int, b int); +create table t1(a int, b int); +create table t2(a int, b int); +create table t3(a int, b int); +create definer='root'@'localhost' view v as select t.a, t.b from t join (select count(*) as a from t1 join t2 join t3 where t1.b=t2.b and t2.a = t3.a group by t2.a) tt on t.a = tt.a; +create definer='root'@'localhost' view v1 as select t.a, t.b from t join (select count(*) as a from t1 join v on t1.b=v.b group by v.a) tt on t.a = tt.a; +create definer='root'@'localhost' view v2 as select t.a, t.b from t join (select count(*) as a from t1 join v1 on t1.b=v1.b group by v1.a) tt on t.a = tt.a; +select * from v2; +a b +select @@last_plan_from_binding; +@@last_plan_from_binding +0 +create global binding for select * from v2 using select /*+ qb_name(qb_v_2, v2.v1@sel_2 .v@sel_2 .@sel_2), merge_join(t1@qb_v_2), stream_agg(@qb_v_2), qb_name(qb_v_1, v2. v1@sel_2 .v@sel_2 .@sel_1), merge_join(t@qb_v_1) */ * from v2; +select * from v2; +a b +select @@last_plan_from_binding; +@@last_plan_from_binding +1 +show global bindings where original_sql like '%planner__core__integration%'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest +select * from `planner__core__integration` . `v2` SELECT /*+ qb_name(`qb_v_2` , `v2`. `v1`@`sel_2`. `v`@`sel_2`. ``@`sel_2`) merge_join(`t1`@`qb_v_2`) stream_agg(@`qb_v_2`) qb_name(`qb_v_1` , `v2`. `v1`@`sel_2`. `v`@`sel_2`. ``@`sel_1`) merge_join(`t`@`qb_v_1`)*/ * FROM `planner__core__integration`.`v2` planner__core__integration enabled utf8mb4 utf8mb4_general_ci manual d1c36cc45519f8c3ec7ffd42ebcc49b1fe160d7a93e23d1568843517ac4009e6 +drop global binding for select * from v2; +select * from v2; +a b +select @@last_plan_from_binding; +@@last_plan_from_binding +0 +show global bindings where original_sql like '%planner__core__integration%'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest +set tidb_cost_model_version=default; +set tidb_cost_model_version=2; +drop table if exists t1; +create table t1(a int, b int, index idx_a(a)); + +## create binding for order_index hint +select * from t1 where a<10 order by a limit 1; +a b +select @@last_plan_from_binding; +@@last_plan_from_binding +0 +create global binding for select * from t1 where a<10 order by a limit 1 using select /*+ order_index(t1, idx_a) */ * from t1 where a<10 order by a limit 1; +select * from t1 where a<10 order by a limit 1; +a b +select @@last_plan_from_binding; +@@last_plan_from_binding +1 +show global bindings where original_sql like '%planner__core__integration%'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest +select * from `planner__core__integration` . `t1` where `a` < ? order by `a` limit ? SELECT /*+ order_index(`t1` `idx_a`)*/ * FROM `planner__core__integration`.`t1` WHERE `a` < 10 ORDER BY `a` LIMIT 1 planner__core__integration enabled utf8mb4 utf8mb4_general_ci manual d91fc2fee71140e271779ae603bf13e793040345ad88a8e6ab1d8a5cf313e3fb + +drop global binding for select * from t1 where a<10 order by a limit 1; +select * from t1 where a<10 order by a limit 1; +a b +select @@last_plan_from_binding; +@@last_plan_from_binding +0 +show global bindings where original_sql like '%planner__core__integration%'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest + +## create binding for no_order_index hint +create global binding for select * from t1 where a<10 order by a limit 1 using select /*+ no_order_index(t1, idx_a) */ * from t1 where a<10 order by a limit 1; +select * from t1 where a<10 order by a limit 1; +a b +select @@last_plan_from_binding; +@@last_plan_from_binding +1 +show global bindings where original_sql like '%planner__core__integration%'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest +select * from `planner__core__integration` . `t1` where `a` < ? order by `a` limit ? SELECT /*+ no_order_index(`t1` `idx_a`)*/ * FROM `planner__core__integration`.`t1` WHERE `a` < 10 ORDER BY `a` LIMIT 1 planner__core__integration enabled utf8mb4 utf8mb4_general_ci manual d91fc2fee71140e271779ae603bf13e793040345ad88a8e6ab1d8a5cf313e3fb + +drop global binding for select * from t1 where a<10 order by a limit 1; +select * from t1 where a<10 order by a limit 1; +a b +select @@last_plan_from_binding; +@@last_plan_from_binding +0 +show global bindings where original_sql like '%planner__core__integration%'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest +set tidb_cost_model_version=default; +drop table if exists t; +set tidb_opt_fix_control='44262:ON'; +create table t (id int, c int) partition by range (id) (partition p0 values less than (4), partition p1 values less than (7)); +insert into t values(3, 3), (5, 5); +explain format = 'brief' select * from t where c = 1 and id = c; +id estRows task access object operator info +TableReader 0.01 root partition:p0 data:Selection +└─Selection 0.01 cop[tikv] eq(planner__core__integration.t.c, 1), eq(planner__core__integration.t.id, 1) + └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +drop table if exists sbtest; +CREATE TABLE sbtest ( +id int(10) unsigned NOT NULL AUTO_INCREMENT, +k int(10) unsigned NOT NULL DEFAULT '0', +c char(120) NOT NULL DEFAULT '', +pad char(60) NOT NULL DEFAULT '', +PRIMARY KEY (id) /*T![clustered_index] CLUSTERED */, +KEY k (k) +); +set @@tidb_opt_fix_control = '46177:off'; +explain format='brief' select row_number() over(order by a.k) from (select * from sbtest where id<10) a; +id estRows task access object operator info +Projection 10.00 root Column#6->Column#7 +└─Window 10.00 root row_number()->Column#6 over(order by planner__core__integration.sbtest.k rows between current row and current row) + └─IndexReader 10.00 root index:Selection + └─Selection 10.00 cop[tikv] lt(planner__core__integration.sbtest.id, 10) + └─IndexFullScan 10000.00 cop[tikv] table:sbtest, index:k(k) keep order:true, stats:pseudo +explain format='brief' select /*+ stream_agg() */ count(1) from sbtest where id<1 group by k; +id estRows task access object operator info +StreamAgg 1.00 root group by:planner__core__integration.sbtest.k, funcs:count(Column#6)->Column#5 +└─IndexReader 1.00 root index:StreamAgg + └─StreamAgg 1.00 cop[tikv] group by:planner__core__integration.sbtest.k, funcs:count(1)->Column#6 + └─Selection 1.00 cop[tikv] lt(planner__core__integration.sbtest.id, 1) + └─IndexFullScan 10000.00 cop[tikv] table:sbtest, index:k(k) keep order:true, stats:pseudo +set @@tidb_opt_fix_control = '46177:on'; +explain format='brief' select row_number() over(order by a.k) from (select * from sbtest where id<10) a; +id estRows task access object operator info +Projection 10.00 root Column#6->Column#7 +└─Window 10.00 root row_number()->Column#6 over(order by planner__core__integration.sbtest.k rows between current row and current row) + └─Sort 10.00 root planner__core__integration.sbtest.k + └─TableReader 10.00 root data:TableRangeScan + └─TableRangeScan 10.00 cop[tikv] table:sbtest range:[0,10), keep order:false, stats:pseudo +explain format='brief' select /*+ stream_agg() */ count(1) from sbtest where id<1 group by k; +id estRows task access object operator info +StreamAgg 1.00 root group by:planner__core__integration.sbtest.k, funcs:count(1)->Column#5 +└─Sort 1.00 root planner__core__integration.sbtest.k + └─TableReader 1.00 root data:TableRangeScan + └─TableRangeScan 1.00 cop[tikv] table:sbtest range:[0,1), keep order:false, stats:pseudo +set @@tidb_opt_fix_control = default; diff --git a/tests/integrationtest/r/planner/core/integration_partition.result b/tests/integrationtest/r/planner/core/integration_partition.result index cde260e489166..a01bb11e95a97 100644 --- a/tests/integrationtest/r/planner/core/integration_partition.result +++ b/tests/integrationtest/r/planner/core/integration_partition.result @@ -1361,3 +1361,22 @@ select * from t where col1 = floor(202303); col1 202303 drop database issue42323; +drop database if exists list_partition_pri; +create database list_partition_pri; +use list_partition_pri; +set tidb_enable_list_partition = 1; +create table tlist (a int) partition by list (a) (partition p0 values in (0), partition p1 values in (1)); +drop user if exists 'priv_test'@'%'; +create user 'priv_test'@'%'; +grant select on list_partition_pri.tlist to 'priv_test'; +use list_partition_pri; +alter table tlist truncate partition p0; +Error 1142 (42000): ALTER command denied to user 'priv_test'@'%' for table 'tlist' +alter table tlist drop partition p0; +Error 1142 (42000): ALTER command denied to user 'priv_test'@'%' for table 'tlist' +alter table tlist add partition (partition p2 values in (2)); +Error 1142 (42000): ALTER command denied to user 'priv_test'@'%' for table 'tlist' +insert into tlist values (1); +Error 1142 (42000): INSERT command denied to user 'priv_test'@'%' for table 'tlist' +use planner__core__integration_partition; +set tidb_enable_list_partition = DEFAULT; diff --git a/tests/integrationtest/r/planner/core/issuetest/planner_issue.result b/tests/integrationtest/r/planner/core/issuetest/planner_issue.result index 5d95672abacb7..920b962398a76 100644 --- a/tests/integrationtest/r/planner/core/issuetest/planner_issue.result +++ b/tests/integrationtest/r/planner/core/issuetest/planner_issue.result @@ -180,3 +180,126 @@ LEFT JOIN tmp3 c3 ON c3.id = '1'; id id 1 1 1 1 +drop table if exists t; +create table t(a int, b int); +set @@tidb_max_chunk_size = 32; +insert into t values(1, 1); +insert into t select a+1, a+1 from t; +insert into t select a+2, a+2 from t; +insert into t select a+4, a+4 from t; +insert into t select a+8, a+8 from t; +insert into t select a+16, a+16 from t; +insert into t select a+32, a+32 from t; +select a from (select 100 as a, 100 as b union all select * from t) t where b != 0; +a +100 +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 +set @@tidb_max_chunk_size = default; +drop table if exists t1, t2; +create table t1(a varchar(20) collate utf8mb4_bin, index ia(a)); +insert into t1 value('测试'),('测试 '); +explain format = brief select *,length(a) from t1 where a like '测试 %'; +id estRows task access object operator info +Projection 250.00 root planner__core__issuetest__planner_issue.t1.a, length(planner__core__issuetest__planner_issue.t1.a)->Column#3 +└─UnionScan 250.00 root like(planner__core__issuetest__planner_issue.t1.a, "测试 %", 92) + └─IndexReader 250.00 root index:Selection + └─Selection 250.00 cop[tikv] like(planner__core__issuetest__planner_issue.t1.a, "测试 %", 92) + └─IndexRangeScan 250.00 cop[tikv] table:t1, index:ia(a) range:["测试 ","测试!"), keep order:false, stats:pseudo +explain format = brief select *,length(a) from t1 where a like '测试'; +id estRows task access object operator info +Projection 10.00 root planner__core__issuetest__planner_issue.t1.a, length(planner__core__issuetest__planner_issue.t1.a)->Column#3 +└─UnionScan 10.00 root like(planner__core__issuetest__planner_issue.t1.a, "测试", 92) + └─IndexReader 10.00 root index:Selection + └─Selection 10.00 cop[tikv] like(planner__core__issuetest__planner_issue.t1.a, "测试", 92) + └─IndexRangeScan 10.00 cop[tikv] table:t1, index:ia(a) range:["测试","测试"], keep order:false, stats:pseudo +select *,length(a) from t1 where a like '测试 %'; +a length(a) +测试 8 +select *,length(a) from t1 where a like '测试'; +a length(a) +测试 6 +create table t2(a varchar(20) collate gbk_chinese_ci, index ia(a)); +insert into t2 value('测试'),('测试 '); +explain format = brief select *,length(a) from t2 where a like '测试 %'; +id estRows task access object operator info +Projection 8000.00 root planner__core__issuetest__planner_issue.t2.a, length(to_binary(planner__core__issuetest__planner_issue.t2.a))->Column#3 +└─UnionScan 8000.00 root like(planner__core__issuetest__planner_issue.t2.a, "测试 %", 92) + └─TableReader 8000.00 root data:Selection + └─Selection 8000.00 cop[tikv] like(planner__core__issuetest__planner_issue.t2.a, "测试 %", 92) + └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +explain format = brief select *,length(a) from t2 where a like '测试'; +id estRows task access object operator info +Projection 8000.00 root planner__core__issuetest__planner_issue.t2.a, length(to_binary(planner__core__issuetest__planner_issue.t2.a))->Column#3 +└─UnionScan 8000.00 root like(planner__core__issuetest__planner_issue.t2.a, "测试", 92) + └─TableReader 8000.00 root data:Selection + └─Selection 8000.00 cop[tikv] like(planner__core__issuetest__planner_issue.t2.a, "测试", 92) + └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo +select *,length(a) from t2 where a like '测试 %'; +a length(a) +测试 6 +select *,length(a) from t2 where a like '测试'; +a length(a) +测试 4 diff --git a/tests/integrationtest/r/planner/core/memtable_predicate_extractor.result b/tests/integrationtest/r/planner/core/memtable_predicate_extractor.result new file mode 100644 index 0000000000000..07edaaf17ef23 --- /dev/null +++ b/tests/integrationtest/r/planner/core/memtable_predicate_extractor.result @@ -0,0 +1,121 @@ +drop table if exists t, abclmn; +create table t(id int, abctime int,DATETIME_PRECISION int); +create table abclmn(a int); +select TABLE_NAME from information_schema.columns where table_schema = 'planner__core__memtable_predicate_extractor' and column_name like 'i%'; +TABLE_NAME +t +select TABLE_NAME from information_schema.columns where table_schema = 'PLANNER__CORE__MEMTABLE_PREDICATE_EXTRACTOR' and column_name like 'I%'; +TABLE_NAME +t +select TABLE_NAME from information_schema.columns where table_schema = 'PLANNER__CORE__MEMTABLE_PREDICATE_EXTRACTOR' and column_name like 'ID'; +TABLE_NAME +t +select TABLE_NAME from information_schema.columns where table_schema = 'PLANNER__CORE__MEMTABLE_PREDICATE_EXTRACTOR' and column_name like 'id'; +TABLE_NAME +t +select column_name from information_schema.columns where table_schema = 'PLANNER__CORE__MEMTABLE_PREDICATE_EXTRACTOR' and (column_name like 'i%' or column_name like '%d'); +column_name +id +select column_name from information_schema.columns where table_schema = 'PLANNER__CORE__MEMTABLE_PREDICATE_EXTRACTOR' and (column_name like 'abc%' and column_name like '%time'); +column_name +abctime +select TABLE_NAME, column_name from information_schema.columns where table_schema = 'PLANNER__CORE__MEMTABLE_PREDICATE_EXTRACTOR' and column_name like '%time'; +TABLE_NAME column_name +t abctime +describe t; +Field Type Null Key Default Extra +id int(11) YES NULL +abctime int(11) YES NULL +DATETIME_PRECISION int(11) YES NULL +describe t id; +Field Type Null Key Default Extra +id int(11) YES NULL +describe t ID; +Field Type Null Key Default Extra +id int(11) YES NULL +describe t 'I%'; +Error 1064 (42000): 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 15 near "'I%';" +describe t I%; +Error 1064 (42000): 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 13 near "%;" +show columns from t like 'abctime'; +Field Type Null Key Default Extra +abctime int(11) YES NULL +show columns from t like 'ABCTIME'; +Field Type Null Key Default Extra +abctime int(11) YES NULL +show columns from t like 'abc%'; +Field Type Null Key Default Extra +abctime int(11) YES NULL +show columns from t like 'ABC%'; +Field Type Null Key Default Extra +abctime int(11) YES NULL +show columns from t like '%ime'; +Field Type Null Key Default Extra +abctime int(11) YES NULL +show columns from t like '%IME'; +Field Type Null Key Default Extra +abctime int(11) YES NULL +show columns in t like '%ime'; +Field Type Null Key Default Extra +abctime int(11) YES NULL +show columns in t like '%IME'; +Field Type Null Key Default Extra +abctime int(11) YES NULL +show fields in t like '%ime'; +Field Type Null Key Default Extra +abctime int(11) YES NULL +show fields in t like '%IME'; +Field Type Null Key Default Extra +abctime int(11) YES NULL +show columns from t where field like '%time'; +Field Type Null Key Default Extra +abctime int(11) YES NULL +show columns from t where field = 'abctime'; +Field Type Null Key Default Extra +abctime int(11) YES NULL +show columns in t where field = 'abctime'; +Field Type Null Key Default Extra +abctime int(11) YES NULL +show fields from t where field = 'abctime'; +Field Type Null Key Default Extra +abctime int(11) YES NULL +show fields in t where field = 'abctime'; +Field Type Null Key Default Extra +abctime int(11) YES NULL +explain t; +Field Type Null Key Default Extra +id int(11) YES NULL +abctime int(11) YES NULL +DATETIME_PRECISION int(11) YES NULL +show columns from t like id; +Error 1054 (42S22): Unknown column 'id' in 'where clause' +show columns from t like `id`; +Error 1054 (42S22): Unknown column 'id' in 'where clause' +show tables like 't'; +Tables_in_planner__core__memtable_predicate_extractor (t) +t +show tables like 'T'; +Tables_in_planner__core__memtable_predicate_extractor (T) +t +show tables like 'ABCLMN'; +Tables_in_planner__core__memtable_predicate_extractor (ABCLMN) +abclmn +show tables like 'ABC%'; +Tables_in_planner__core__memtable_predicate_extractor (ABC%) +abclmn +show tables like '%lmn'; +Tables_in_planner__core__memtable_predicate_extractor (%lmn) +abclmn +show full tables like '%lmn'; +Tables_in_planner__core__memtable_predicate_extractor (%lmn) Table_type +abclmn BASE TABLE +show tables like T; +Error 1054 (42S22): Unknown column 't' in 'where clause' +show tables like `T`; +Error 1054 (42S22): Unknown column 't' in 'where clause' +drop table if exists _bar, bar; +create table _bar (id int); +create table bar (id int); +show tables like '\_%'; +Tables_in_planner__core__memtable_predicate_extractor (\_%) +_bar diff --git a/tests/integrationtest/r/planner/core/physical_plan.result b/tests/integrationtest/r/planner/core/physical_plan.result index 20f47876d58ec..5e7476f38c566 100644 --- a/tests/integrationtest/r/planner/core/physical_plan.result +++ b/tests/integrationtest/r/planner/core/physical_plan.result @@ -39,3 +39,41 @@ explain format = 'brief' select * from (select * from t1 order by a) tmp; id estRows task access object operator info TableReader 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo +set tidb_cost_model_version=2; +drop table if exists t, t1, t2, t3; +create table t(a int, b int, key(a)); +create table t1(a int, b int, key(a)); +create table t2(a int, b int, key(a)); +create table t3(a int, b int, key(a)); +select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b; +a b a b a b +select @@last_plan_from_binding; +@@last_plan_from_binding +0 +create global binding for select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b using select /*+ hash_join_build(t1) */ * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b; +select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b; +a b a b a b +select @@last_plan_from_binding; +@@last_plan_from_binding +1 +show global bindings where original_sql like '%planner__core__physical_plan%'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest +select * from ( `planner__core__physical_plan` . `t1` join `planner__core__physical_plan` . `t2` on `t1` . `a` = `t2` . `a` ) join `planner__core__physical_plan` . `t3` on `t2` . `b` = `t3` . `b` SELECT /*+ hash_join_build(`t1`)*/ * FROM (`planner__core__physical_plan`.`t1` JOIN `planner__core__physical_plan`.`t2` ON `t1`.`a` = `t2`.`a`) JOIN `planner__core__physical_plan`.`t3` ON `t2`.`b` = `t3`.`b` planner__core__physical_plan enabled utf8mb4 utf8mb4_general_ci manual ac0814c7f1fc1102b1622bb8b8d084931aa2352d5c0deb30034c63b6f4e2b28e +create global binding for select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b using select /*+ hash_join_probe(t1) */ * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b; +select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b; +a b a b a b +select @@last_plan_from_binding; +@@last_plan_from_binding +1 +show global bindings where original_sql like '%planner__core__physical_plan%'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest +select * from ( `planner__core__physical_plan` . `t1` join `planner__core__physical_plan` . `t2` on `t1` . `a` = `t2` . `a` ) join `planner__core__physical_plan` . `t3` on `t2` . `b` = `t3` . `b` SELECT /*+ hash_join_probe(`t1`)*/ * FROM (`planner__core__physical_plan`.`t1` JOIN `planner__core__physical_plan`.`t2` ON `t1`.`a` = `t2`.`a`) JOIN `planner__core__physical_plan`.`t3` ON `t2`.`b` = `t3`.`b` planner__core__physical_plan enabled utf8mb4 utf8mb4_general_ci manual ac0814c7f1fc1102b1622bb8b8d084931aa2352d5c0deb30034c63b6f4e2b28e +drop global binding for select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b; +select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b; +a b a b a b +select @@last_plan_from_binding; +@@last_plan_from_binding +0 +show global bindings where original_sql like '%planner__core__physical_plan%'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest +set tidb_cost_model_version=DEFAULT; diff --git a/tests/integrationtest/r/planner/core/plan.result b/tests/integrationtest/r/planner/core/plan.result index 7a49cd0486ea4..9d06bcb39cde9 100644 --- a/tests/integrationtest/r/planner/core/plan.result +++ b/tests/integrationtest/r/planner/core/plan.result @@ -137,8 +137,9 @@ CREATE TABLE `t1` ( `a` varchar(10) DEFAULT NULL, `b` varchar(10) DEFAULT NULL explain format='brief' select * from t1 where concat(a, b) like "aadwa" and a = "a"; id estRows task access object operator info Projection 0.10 root planner__core__plan.t1.a, planner__core__plan.t1.b -└─IndexReader 0.10 root index:IndexRangeScan - └─IndexRangeScan 0.10 cop[tikv] table:t1, index:idx2(a, concat(`a`, `b`), b) range:["a" "aadwa","a" "aadwa"], keep order:false, stats:pseudo +└─IndexReader 0.10 root index:Selection + └─Selection 0.10 cop[tikv] like(concat(planner__core__plan.t1.a, planner__core__plan.t1.b), "aadwa", 92) + └─IndexRangeScan 0.10 cop[tikv] table:t1, index:idx2(a, concat(`a`, `b`), b) range:["a" "aadwa","a" "aadwa"], keep order:false, stats:pseudo explain format='brief' select b from t1 where concat(a, b) >= "aa" and a = "b"; id estRows task access object operator info Projection 33.33 root planner__core__plan.t1.b @@ -147,8 +148,9 @@ Projection 33.33 root planner__core__plan.t1.b explain format='brief' select * from t1 where concat(a, b) like "aadwa" and a = "a"; id estRows task access object operator info Projection 0.10 root planner__core__plan.t1.a, planner__core__plan.t1.b -└─IndexReader 0.10 root index:IndexRangeScan - └─IndexRangeScan 0.10 cop[tikv] table:t1, index:idx2(a, concat(`a`, `b`), b) range:["a" "aadwa","a" "aadwa"], keep order:false, stats:pseudo +└─IndexReader 0.10 root index:Selection + └─Selection 0.10 cop[tikv] like(concat(planner__core__plan.t1.a, planner__core__plan.t1.b), "aadwa", 92) + └─IndexRangeScan 0.10 cop[tikv] table:t1, index:idx2(a, concat(`a`, `b`), b) range:["a" "aadwa","a" "aadwa"], keep order:false, stats:pseudo explain format='brief' select b from t1 where concat(a, b) >= "aa" and a = "b"; id estRows task access object operator info Projection 33.33 root planner__core__plan.t1.b @@ -157,8 +159,9 @@ Projection 33.33 root planner__core__plan.t1.b explain format='brief' select * from t1 where concat(a, b) like "aadwa" and a = "a"; id estRows task access object operator info Projection 0.10 root planner__core__plan.t1.a, planner__core__plan.t1.b -└─IndexReader 0.10 root index:IndexRangeScan - └─IndexRangeScan 0.10 cop[tikv] table:t1, index:idx2(a, concat(`a`, `b`), b) range:["a" "aadwa","a" "aadwa"], keep order:false, stats:pseudo +└─IndexReader 0.10 root index:Selection + └─Selection 0.10 cop[tikv] like(concat(planner__core__plan.t1.a, planner__core__plan.t1.b), "aadwa", 92) + └─IndexRangeScan 0.10 cop[tikv] table:t1, index:idx2(a, concat(`a`, `b`), b) range:["a" "aadwa","a" "aadwa"], keep order:false, stats:pseudo explain format='brief' select b from t1 where concat(a, b) >= "aa" and a = "b"; id estRows task access object operator info Projection 33.33 root planner__core__plan.t1.b @@ -167,8 +170,9 @@ Projection 33.33 root planner__core__plan.t1.b explain format='brief' select * from t1 where concat(a, b) like "aadwa" and a = "a"; id estRows task access object operator info Projection 0.10 root planner__core__plan.t1.a, planner__core__plan.t1.b -└─IndexReader 0.10 root index:IndexRangeScan - └─IndexRangeScan 0.10 cop[tikv] table:t1, index:idx2(a, concat(`a`, `b`), b) range:["a" "aadwa","a" "aadwa"], keep order:false, stats:pseudo +└─IndexReader 0.10 root index:Selection + └─Selection 0.10 cop[tikv] like(concat(planner__core__plan.t1.a, planner__core__plan.t1.b), "aadwa", 92) + └─IndexRangeScan 0.10 cop[tikv] table:t1, index:idx2(a, concat(`a`, `b`), b) range:["a" "aadwa","a" "aadwa"], keep order:false, stats:pseudo explain format='brief' select b from t1 where concat(a, b) >= "aa" and a = "b"; id estRows task access object operator info Projection 33.33 root planner__core__plan.t1.b @@ -177,8 +181,9 @@ Projection 33.33 root planner__core__plan.t1.b explain format='brief' select * from t1 where concat(a, b) like "aadwa" and a = "a"; id estRows task access object operator info Projection 0.10 root planner__core__plan.t1.a, planner__core__plan.t1.b -└─IndexReader 0.10 root index:IndexRangeScan - └─IndexRangeScan 0.10 cop[tikv] table:t1, index:idx2(a, concat(`a`, `b`), b) range:["a" "aadwa","a" "aadwa"], keep order:false, stats:pseudo +└─IndexReader 0.10 root index:Selection + └─Selection 0.10 cop[tikv] like(concat(planner__core__plan.t1.a, planner__core__plan.t1.b), "aadwa", 92) + └─IndexRangeScan 0.10 cop[tikv] table:t1, index:idx2(a, concat(`a`, `b`), b) range:["a" "aadwa","a" "aadwa"], keep order:false, stats:pseudo explain format='brief' select b from t1 where concat(a, b) >= "aa" and a = "b"; id estRows task access object operator info Projection 33.33 root planner__core__plan.t1.b @@ -187,8 +192,9 @@ Projection 33.33 root planner__core__plan.t1.b explain format='brief' select * from t1 where concat(a, b) like "aadwa" and a = "a"; id estRows task access object operator info Projection 0.10 root planner__core__plan.t1.a, planner__core__plan.t1.b -└─IndexReader 0.10 root index:IndexRangeScan - └─IndexRangeScan 0.10 cop[tikv] table:t1, index:idx2(a, concat(`a`, `b`), b) range:["a" "aadwa","a" "aadwa"], keep order:false, stats:pseudo +└─IndexReader 0.10 root index:Selection + └─Selection 0.10 cop[tikv] like(concat(planner__core__plan.t1.a, planner__core__plan.t1.b), "aadwa", 92) + └─IndexRangeScan 0.10 cop[tikv] table:t1, index:idx2(a, concat(`a`, `b`), b) range:["a" "aadwa","a" "aadwa"], keep order:false, stats:pseudo explain format='brief' select b from t1 where concat(a, b) >= "aa" and a = "b"; id estRows task access object operator info Projection 33.33 root planner__core__plan.t1.b @@ -197,8 +203,9 @@ Projection 33.33 root planner__core__plan.t1.b explain format='brief' select * from t1 where concat(a, b) like "aadwa" and a = "a"; id estRows task access object operator info Projection 0.10 root planner__core__plan.t1.a, planner__core__plan.t1.b -└─IndexReader 0.10 root index:IndexRangeScan - └─IndexRangeScan 0.10 cop[tikv] table:t1, index:idx2(a, concat(`a`, `b`), b) range:["a" "aadwa","a" "aadwa"], keep order:false, stats:pseudo +└─IndexReader 0.10 root index:Selection + └─Selection 0.10 cop[tikv] like(concat(planner__core__plan.t1.a, planner__core__plan.t1.b), "aadwa", 92) + └─IndexRangeScan 0.10 cop[tikv] table:t1, index:idx2(a, concat(`a`, `b`), b) range:["a" "aadwa","a" "aadwa"], keep order:false, stats:pseudo explain format='brief' select b from t1 where concat(a, b) >= "aa" and a = "b"; id estRows task access object operator info Projection 33.33 root planner__core__plan.t1.b @@ -207,8 +214,9 @@ Projection 33.33 root planner__core__plan.t1.b explain format='brief' select * from t1 where concat(a, b) like "aadwa" and a = "a"; id estRows task access object operator info Projection 0.10 root planner__core__plan.t1.a, planner__core__plan.t1.b -└─IndexReader 0.10 root index:IndexRangeScan - └─IndexRangeScan 0.10 cop[tikv] table:t1, index:idx2(a, concat(`a`, `b`), b) range:["a" "aadwa","a" "aadwa"], keep order:false, stats:pseudo +└─IndexReader 0.10 root index:Selection + └─Selection 0.10 cop[tikv] like(concat(planner__core__plan.t1.a, planner__core__plan.t1.b), "aadwa", 92) + └─IndexRangeScan 0.10 cop[tikv] table:t1, index:idx2(a, concat(`a`, `b`), b) range:["a" "aadwa","a" "aadwa"], keep order:false, stats:pseudo explain format='brief' select b from t1 where concat(a, b) >= "aa" and a = "b"; id estRows task access object operator info Projection 33.33 root planner__core__plan.t1.b @@ -217,8 +225,9 @@ Projection 33.33 root planner__core__plan.t1.b explain format='brief' select * from t1 where concat(a, b) like "aadwa" and a = "a"; id estRows task access object operator info Projection 0.10 root planner__core__plan.t1.a, planner__core__plan.t1.b -└─IndexReader 0.10 root index:IndexRangeScan - └─IndexRangeScan 0.10 cop[tikv] table:t1, index:idx2(a, concat(`a`, `b`), b) range:["a" "aadwa","a" "aadwa"], keep order:false, stats:pseudo +└─IndexReader 0.10 root index:Selection + └─Selection 0.10 cop[tikv] like(concat(planner__core__plan.t1.a, planner__core__plan.t1.b), "aadwa", 92) + └─IndexRangeScan 0.10 cop[tikv] table:t1, index:idx2(a, concat(`a`, `b`), b) range:["a" "aadwa","a" "aadwa"], keep order:false, stats:pseudo explain format='brief' select b from t1 where concat(a, b) >= "aa" and a = "b"; id estRows task access object operator info Projection 33.33 root planner__core__plan.t1.b @@ -227,8 +236,9 @@ Projection 33.33 root planner__core__plan.t1.b explain format='brief' select * from t1 where concat(a, b) like "aadwa" and a = "a"; id estRows task access object operator info Projection 0.10 root planner__core__plan.t1.a, planner__core__plan.t1.b -└─IndexReader 0.10 root index:IndexRangeScan - └─IndexRangeScan 0.10 cop[tikv] table:t1, index:idx2(a, concat(`a`, `b`), b) range:["a" "aadwa","a" "aadwa"], keep order:false, stats:pseudo +└─IndexReader 0.10 root index:Selection + └─Selection 0.10 cop[tikv] like(concat(planner__core__plan.t1.a, planner__core__plan.t1.b), "aadwa", 92) + └─IndexRangeScan 0.10 cop[tikv] table:t1, index:idx2(a, concat(`a`, `b`), b) range:["a" "aadwa","a" "aadwa"], keep order:false, stats:pseudo explain format='brief' select b from t1 where concat(a, b) >= "aa" and a = "b"; id estRows task access object operator info Projection 33.33 root planner__core__plan.t1.b @@ -392,3 +402,54 @@ explain select a from t; id estRows task access object operator info IndexReader_7 10000.00 root index:IndexFullScan_6 └─IndexFullScan_6 10000.00 cop[tikv] table:t, index:hypo_a(a) keep order:false, stats:pseudo +drop table if exists t; +CREATE TABLE t (c1 mediumint(9) DEFAULT '-4747160',c2 year(4) NOT NULL DEFAULT '2075',c3 double DEFAULT '1.1559030660251948',c4 enum('wbv4','eli','d8ym','m3gsx','lz7td','o','d1k7l','y1x','xcxq','bj','n7') DEFAULT 'xcxq',c5 int(11) DEFAULT '255080866',c6 tinyint(1) DEFAULT '1',PRIMARY KEY (c2),KEY `c4d86d54-091c-4307-957b-b164c9652b7f` (c6,c4) ); +insert into t values (-4747160, 2075, 722.5719203870632, 'xcxq', 1576824797, 1); +select /*+ stream_agg() */ bit_or(t.c5) as r0 from t where t.c3 in (select c6 from t where not(t.c6 <> 1) and not(t.c3 in(9263.749352636818))) group by t.c1; +r0 +affected rows: 0 +info: +drop table if exists t1; +drop table if exists t2; +CREATE TABLE `t1`(`c1` bigint(20) NOT NULL DEFAULT '-2312745469307452950', `c2` datetime DEFAULT '5316-02-03 06:54:49', `c3` tinyblob DEFAULT NULL, PRIMARY KEY (`c1`) /*T![clustered_index] CLUSTERED */) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; +CREATE TABLE `t2`(`c1` set('kn8pu','7et','vekx6','v3','liwrh','q14','1met','nnd5i','5o0','8cz','l') DEFAULT '7et,vekx6,liwrh,q14,1met', `c2` float DEFAULT '1.683167', KEY `k1` (`c2`,`c1`), KEY `k2` (`c2`)) ENGINE=InnoDB DEFAULT CHARSET=gbk COLLATE=gbk_chinese_ci; +(select /*+ agg_to_cop()*/ locate(t1.c3, t1.c3) as r0, t1.c3 as r1 from t1 where not( IsNull(t1.c1)) order by r0,r1) union all (select concat_ws(',', t2.c2, t2.c1) as r0, t2.c1 as r1 from t2 order by r0, r1) order by 1 limit 273; +r0 r1 +affected rows: 0 +info: +drop table if exists golang1, golang2; +CREATE TABLE golang1 ( `fcbpdt` CHAR (8) COLLATE utf8_general_ci NOT NULL, `fcbpsq` VARCHAR (20) COLLATE utf8_general_ci NOT NULL, `procst` char (4) COLLATE utf8_general_ci DEFAULT NULL,`cipstx` VARCHAR (105) COLLATE utf8_general_ci DEFAULT NULL, `cipsst` CHAR (4) COLLATE utf8_general_ci DEFAULT NULL, `dyngtg` VARCHAR(4) COLLATE utf8_general_ci DEFAULT NULL, `blncdt` VARCHAR (8) COLLATE utf8_general_ci DEFAULT NULL, PRIMARY KEY ( fcbpdt, fcbpsq )); +insert into golang1 values('20230925','12023092502158016','abc','','','',''); +create table golang2 (`sysgrp` varchar(20) NOT NULL,`procst` varchar(8) NOT NULL,`levlid` int(11) NOT NULL,PRIMARY key (procst));; +insert into golang2 VALUES('COMMON','ACSC',90); +insert into golang2 VALUES('COMMON','abc',8); +insert into golang2 VALUES('COMMON','CH02',6); +UPDATE golang1 a SET procst =(CASE WHEN ( SELECT levlid FROM golang2 b WHERE b.sysgrp = 'COMMON' AND b.procst = 'ACSC' ) > ( SELECT levlid FROM golang2 c WHERE c.sysgrp = 'COMMON' AND c.procst = a.procst ) THEN 'ACSC' ELSE a.procst END ), cipstx = 'CI010000', cipsst = 'ACSC', dyngtg = 'EAYT', blncdt= '20230925' WHERE fcbpdt = '20230925' AND fcbpsq = '12023092502158016'; +select * from golang1; +fcbpdt fcbpsq procst cipstx cipsst dyngtg blncdt +20230925 12023092502158016 ACSC CI010000 ACSC EAYT 20230925 +UPDATE golang1 a SET procst= (SELECT 1 FROM golang2 c WHERE c.procst = a.procst) WHERE fcbpdt = '20230925' AND fcbpsq = '12023092502158016'; +select * from golang1; +fcbpdt fcbpsq procst cipstx cipsst dyngtg blncdt +20230925 12023092502158016 1 CI010000 ACSC EAYT 20230925 +EXPLAIN FORMAT = TRADITIONAL ((VALUES ROW ()) ORDER BY 1); +Error 1051 (42S02): Unknown table '' +drop table if exists p, t; +create table p (id int, c int, key i_id(id), key i_c(c)); +create table t (id int); +insert into p values (3,3), (4,4), (6,6), (9,9); +insert into t values (4), (9); +select /*+ INL_JOIN(p) */ * from p, t where p.id = t.id; +id c id +4 4 4 +9 9 9 +explain analyze format='brief' select /*+ INL_JOIN(p) */ * from p, t where p.id = t.id; +id estRows actRows task access object execution info operator info memory disk +IndexJoin 12487.50 2 root +├─TableReader(Build) 9990.00 2 root +│ └─Selection 9990.00 2 cop[tikv] +│ └─TableFullScan 10000.00 2 cop[tikv] +└─IndexLookUp(Probe) 12487.50 2 root + ├─Selection(Build) 12487.50 2 cop[tikv] + │ └─IndexRangeScan 12500.00 2 cop[tikv] + └─TableRowIDScan(Probe) 12487.50 2 cop[tikv] diff --git a/tests/integrationtest/r/planner/core/plan_cache.result b/tests/integrationtest/r/planner/core/plan_cache.result index 69db6972f45d8..cfcc58922905a 100644 --- a/tests/integrationtest/r/planner/core/plan_cache.result +++ b/tests/integrationtest/r/planner/core/plan_cache.result @@ -2249,3 +2249,350 @@ select @@last_plan_from_cache; @@last_plan_from_cache 0 set tidb_enable_non_prepared_plan_cache=DEFAULT; +select @@tidb_prepared_plan_cache_size; +@@tidb_prepared_plan_cache_size +100 +select @@tidb_session_plan_cache_size; +@@tidb_session_plan_cache_size +100 +set @@tidb_prepared_plan_cache_size = 200; +select @@tidb_prepared_plan_cache_size; +@@tidb_prepared_plan_cache_size +200 +select @@tidb_session_plan_cache_size; +@@tidb_session_plan_cache_size +200 +set @@tidb_session_plan_cache_size = 300; +select @@tidb_prepared_plan_cache_size; +@@tidb_prepared_plan_cache_size +300 +select @@tidb_session_plan_cache_size; +@@tidb_session_plan_cache_size +300 +set global tidb_prepared_plan_cache_size = 400; +select @@tidb_prepared_plan_cache_size; +@@tidb_prepared_plan_cache_size +400 +select @@tidb_session_plan_cache_size; +@@tidb_session_plan_cache_size +400 +set global tidb_session_plan_cache_size = 500; +select @@tidb_prepared_plan_cache_size; +@@tidb_prepared_plan_cache_size +500 +select @@tidb_session_plan_cache_size; +@@tidb_session_plan_cache_size +500 +set global tidb_prepared_plan_cache_size = default; +set global tidb_session_plan_cache_size = default; +set @@tidb_session_plan_cache_size = default; +set @@tidb_prepared_plan_cache_size = default; +drop table if exists t; +create table t(a int); +set tidb_enable_non_prepared_plan_cache=1; +select * from t where a=1; +a +explain select * from t where a=2; +id estRows task access object operator info +TableReader_7 10.00 root data:Selection_6 +└─Selection_6 10.00 cop[tikv] eq(planner__core__plan_cache.t.a, 2) + └─TableFullScan_5 10000.00 cop[tikv] table:t keep order:false, stats:pseudo +select @@last_plan_from_cache; +@@last_plan_from_cache +0 +explain format=verbose select * from t where a=2; +id estRows estCost task access object operator info +TableReader_7 10.00 168975.57 root data:Selection_6 +└─Selection_6 10.00 2534000.00 cop[tikv] eq(planner__core__plan_cache.t.a, 2) + └─TableFullScan_5 10000.00 2035000.00 cop[tikv] table:t keep order:false, stats:pseudo +select @@last_plan_from_cache; +@@last_plan_from_cache +0 +explain analyze select * from t where a=2; +id estRows actRows task access object execution info operator info memory disk +TableReader_7 10.00 0 root +└─Selection_6 10.00 0 cop[tikv] + └─TableFullScan_5 10000.00 0 cop[tikv] +select @@last_plan_from_cache; +@@last_plan_from_cache +0 +set tidb_enable_non_prepared_plan_cache=default; +drop table if exists t1, t2, t3, t4; +set @@tidb_opt_fix_control = "45798:on"; +create table t1 (a int, info json, city varchar(64) as (JSON_UNQUOTE(JSON_EXTRACT(info, '$.city')))); +create table t2 (a int, info json, city varchar(64) as (JSON_UNQUOTE(JSON_EXTRACT(info, '$.city'))) virtual); +create table t3 (a int, info json, city varchar(64) as (JSON_UNQUOTE(JSON_EXTRACT(info, '$.city'))) stored); +create table t4 (a int, info json, index zips( (CAST(info->'$.zipcode' AS UNSIGNED ARRAY)))); +set @a=1; +set @b=2; +prepare s1 from 'select * from t1 where a=?'; +show warnings; +Level Code Message +execute s1 using @a; +a info city +execute s1 using @b; +a info city +select @@last_plan_from_cache; +@@last_plan_from_cache +1 +prepare s1 from 'select * from t2 where a=?'; +show warnings; +Level Code Message +execute s1 using @a; +a info city +execute s1 using @b; +a info city +select @@last_plan_from_cache; +@@last_plan_from_cache +1 +prepare s1 from 'select * from t3 where a=?'; +show warnings; +Level Code Message +execute s1 using @a; +a info city +execute s1 using @b; +a info city +select @@last_plan_from_cache; +@@last_plan_from_cache +1 +prepare s1 from 'select * from t4 where a=?'; +show warnings; +Level Code Message +execute s1 using @a; +a info +execute s1 using @b; +a info +select @@last_plan_from_cache; +@@last_plan_from_cache +1 +set @@tidb_opt_fix_control = default; +drop table if exists t1, t2; +set @@tidb_opt_fix_control = "45798:on"; +CREATE TABLE t1 ( +ipk varbinary(255) NOT NULL, +i_id varchar(45) DEFAULT NULL, +i_set_id varchar(45) DEFAULT NULL, +p_id varchar(45) DEFAULT NULL, +p_set_id varchar(45) DEFAULT NULL, +m_id bigint(20) DEFAULT NULL, +m_i_id varchar(127) DEFAULT NULL, +m_i_set_id varchar(127) DEFAULT NULL, +d json DEFAULT NULL, +p_sources json DEFAULT NULL, +nslc json DEFAULT NULL, +cl json DEFAULT NULL, +fii json DEFAULT NULL, +fpi json DEFAULT NULL, +PRIMARY KEY (ipk) /*T![clustered_index] CLUSTERED */, +UNIQUE KEY i_id (i_id), +KEY d ((cast(d as char(253) array))), +KEY m_i_id (m_i_id), +KEY m_i_set_id (m_i_set_id), +KEY fpi ((cast(fpi as unsigned array))), +KEY nslc ((cast(nslc as char(1000) array))), +KEY cl ((cast(cl as char(3000) array))), +KEY fii ((cast(fii as unsigned array))), +KEY m_id (m_id), +KEY i_set_id (i_set_id), +KEY m_i_and_m_id (m_i_id,m_id)); +CREATE TABLE t2 ( +ipk varbinary(255) NOT NULL, +created_time bigint(20) DEFAULT NULL, +arrival_time bigint(20) DEFAULT NULL, +updated_time bigint(20) DEFAULT NULL, +timestamp_data json DEFAULT NULL, +PRIMARY KEY (ipk) /*T![clustered_index] CLUSTERED */); +prepare stmt from 'select * +from ( t1 left outer join t2 on ( t1 . ipk = t2 . ipk ) ) +where ( t1 . i_id = ? )'; +show warnings; +Level Code Message +set @a='a', @b='b'; +execute stmt using @a; +ipk i_id i_set_id p_id p_set_id m_id m_i_id m_i_set_id d p_sources nslc cl fii fpi ipk created_time arrival_time updated_time timestamp_data +execute stmt using @b; +ipk i_id i_set_id p_id p_set_id m_id m_i_id m_i_set_id d p_sources nslc cl fii fpi ipk created_time arrival_time updated_time timestamp_data +select @@last_plan_from_cache; +@@last_plan_from_cache +1 +set @@tidb_opt_fix_control = default; +drop table if exists t; +create table t (a int); +prepare st from 'select * from t where mod(a, 2)=1'; +execute st; +a +execute st; +a +select @@last_plan_from_cache; +@@last_plan_from_cache +1 +insert into mysql.expr_pushdown_blacklist(name) values('mod'); +admin reload expr_pushdown_blacklist; +execute st; +a +select @@last_plan_from_cache; +@@last_plan_from_cache +0 +execute st; +a +select @@last_plan_from_cache; +@@last_plan_from_cache +1 +delete from mysql.expr_pushdown_blacklist; +admin reload expr_pushdown_blacklist; +drop table if exists t, tt; +create table t(a int, index(a)); +create table tt(a varchar(10)); +set tidb_enable_non_prepared_plan_cache=1; +select a+1 from t where a<10; +a+1 +select @@last_plan_from_cache; +@@last_plan_from_cache +0 +select a+1 from t where a<20; +a+1 +select @@last_plan_from_cache; +@@last_plan_from_cache +1 +select a+2 from t where a<30; +a+2 +select @@last_plan_from_cache; +@@last_plan_from_cache +0 +select a+2 from t where a<40; +a+2 +select @@last_plan_from_cache; +@@last_plan_from_cache +1 +select a,a+1 from t where a<30; +a a+1 +select @@last_plan_from_cache; +@@last_plan_from_cache +0 +select a,a+1 from t where a<40; +a a+1 +select @@last_plan_from_cache; +@@last_plan_from_cache +1 +select a+'123' from tt where a='1'; +a+'123' +select @@last_plan_from_cache; +@@last_plan_from_cache +0 +select a+'123' from tt where a='2'; +a+'123' +select @@last_plan_from_cache; +@@last_plan_from_cache +1 +select 1 from t where a<10; +1 +select @@last_plan_from_cache; +@@last_plan_from_cache +0 +select 1 from t where a<20; +1 +select @@last_plan_from_cache; +@@last_plan_from_cache +1 +select 2 from t where a<10; +2 +select @@last_plan_from_cache; +@@last_plan_from_cache +0 +select 2 from t where a<20; +2 +select @@last_plan_from_cache; +@@last_plan_from_cache +1 +select 1,2 from t where a<10; +1 2 +select @@last_plan_from_cache; +@@last_plan_from_cache +0 +select 1,2 from t where a<20; +1 2 +select @@last_plan_from_cache; +@@last_plan_from_cache +1 +set tidb_enable_non_prepared_plan_cache=default; +drop table if exists t; +create table t(a int); +insert into t values(1); +prepare s from "select * from t where tidb_parse_tso(a) > unix_timestamp()"; +execute s; +a +1 +drop table if exists t; +set tidb_enable_non_prepared_plan_cache=1; +create table t (a int, b varchar(32), c datetime, key(a)); +select * from t where mod(a, 5) < 2; +a b c +select * from t where mod(a, 5) < 2; +a b c +select @@last_plan_from_cache; +@@last_plan_from_cache +1 +select * from t where c < now(); +a b c +select * from t where c < now(); +a b c +select @@last_plan_from_cache; +@@last_plan_from_cache +1 +select date_format(c, '%Y-%m-%d') from t where a < 10; +date_format(c, '%Y-%m-%d') +select date_format(c, '%Y-%m-%d') from t where a < 10; +date_format(c, '%Y-%m-%d') +select @@last_plan_from_cache; +@@last_plan_from_cache +1 +select str_to_date(b, '%Y-%m-%d') from t where a < 10; +str_to_date(b, '%Y-%m-%d') +select str_to_date(b, '%Y-%m-%d') from t where a < 10; +str_to_date(b, '%Y-%m-%d') +select @@last_plan_from_cache; +@@last_plan_from_cache +1 +select * from t where a-2 < 20; +a b c +select * from t where a-2 < 20; +a b c +select @@last_plan_from_cache; +@@last_plan_from_cache +1 +select * from t where a+b > 100; +a b c +select * from t where a+b > 100; +a b c +select @@last_plan_from_cache; +@@last_plan_from_cache +1 +select * from t where -a > 10; +a b c +select * from t where -a > 10; +a b c +select @@last_plan_from_cache; +@@last_plan_from_cache +0 +select * from t where a < 1 and b like '%abc%'; +a b c +select * from t where a < 1 and b like '%abc%'; +a b c +select @@last_plan_from_cache; +@@last_plan_from_cache +0 +select database() from t; +database() +select database() from t; +database() +select @@last_plan_from_cache; +@@last_plan_from_cache +0 +set tidb_enable_non_prepared_plan_cache=default; +drop table if exists t; +CREATE TABLE t (a int(11) DEFAULT NULL, b date DEFAULT NULL); +INSERT INTO t VALUES (1, current_date()); +PREPARE stmt FROM 'SELECT a FROM t WHERE b=current_date()'; +EXECUTE stmt; +a +1 diff --git a/tests/integrationtest/r/planner/core/plan_cost_ver2.result b/tests/integrationtest/r/planner/core/plan_cost_ver2.result index 13e276f5444f1..5b692f8cbfded 100644 --- a/tests/integrationtest/r/planner/core/plan_cost_ver2.result +++ b/tests/integrationtest/r/planner/core/plan_cost_ver2.result @@ -247,3 +247,14 @@ Limit_9 0.17 root offset:0, count:100000 └─Limit_21(Probe) 0.17 cop[tikv] offset:0, count:100000 └─Selection_16 0.17 cop[tikv] eq(planner__core__plan_cost_ver2.t.c, 20), ne(planner__core__plan_cost_ver2.t.b, 200) └─TableRowIDScan_15 250.00 cop[tikv] table:t keep order:false, stats:pseudo +drop table if exists t; +create table t (a int); +set @@tidb_cost_model_version=2; +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 0.00 (((cpu(0*filters(1)*tikv_cpu_factor(49.9))) + (scan(0*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 0.00 (cpu(0*filters(1)*tikv_cpu_factor(49.9))) + (scan(0*logrowsize(32)*tikv_scan_factor(40.7))) 0 cop[tikv] + └─TableFullScan_5 10000.00 0.00 scan(0*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/point_get_plan.result b/tests/integrationtest/r/planner/core/point_get_plan.result index 13d2d97ba1985..9bd32ff939cb5 100644 --- a/tests/integrationtest/r/planner/core/point_get_plan.result +++ b/tests/integrationtest/r/planner/core/point_get_plan.result @@ -586,3 +586,29 @@ select * from t2 where col1 = 0x000039; COL1 9 drop table t1, t2; +drop table if exists fu; +create table fu (id int primary key, val int); +insert into fu values (6, 6); +explain format = 'brief' select * from fu where id = 6 for update; +id estRows task access object operator info +Point_Get 1.00 root table:fu handle:6 +select * from fu where id = 6 for update; +id val +6 6 +begin; +explain format = 'brief' select * from fu where id = 6 for update; +id estRows task access object operator info +Point_Get 1.00 root table:fu handle:6, lock +select * from fu where id = 6 for update; +id val +6 6 +rollback; +set @@session.autocommit = 0; +explain format = 'brief' select * from fu where id = 6 for update; +id estRows task access object operator info +Point_Get 1.00 root table:fu handle:6, lock +select * from fu where id = 6 for update; +id val +6 6 +rollback; +set @@session.autocommit = default; diff --git a/tests/integrationtest/r/planner/core/rule_join_reorder.result b/tests/integrationtest/r/planner/core/rule_join_reorder.result index f44de88a60d6d..105766d88e2cf 100644 --- a/tests/integrationtest/r/planner/core/rule_join_reorder.result +++ b/tests/integrationtest/r/planner/core/rule_join_reorder.result @@ -126,3 +126,57 @@ Projection 155781.72 root planner__core__rule_join_reorder.t3.market_id, planne │ └─TableFullScan 10000.00 cop[tikv] table:p keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo +drop table if exists t, t1, t2, t3; +create table t(a int, b int, key(a)); +create table t1(a int, b int, key(a)); +create table t2(a int, b int, key(a)); +create table t3(a int, b int, key(a)); +select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b; +a b a b a b +select @@last_plan_from_binding; +@@last_plan_from_binding +0 +create global binding for select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b using select /*+ straight_join() */ * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b; +select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b; +a b a b a b +select @@last_plan_from_binding; +@@last_plan_from_binding +1 +show global bindings where original_sql like '%planner__core__rule_join_reorder%'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest +select * from ( `planner__core__rule_join_reorder` . `t1` join `planner__core__rule_join_reorder` . `t2` on `t1` . `a` = `t2` . `a` ) join `planner__core__rule_join_reorder` . `t3` on `t2` . `b` = `t3` . `b` SELECT /*+ straight_join()*/ * FROM (`planner__core__rule_join_reorder`.`t1` JOIN `planner__core__rule_join_reorder`.`t2` ON `t1`.`a` = `t2`.`a`) JOIN `planner__core__rule_join_reorder`.`t3` ON `t2`.`b` = `t3`.`b` planner__core__rule_join_reorder enabled utf8mb4 utf8mb4_general_ci manual 07450843a30e0679fcc588369b6a6c5247d1a004fbad485c759177227f45c21f +drop global binding for select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b; +select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b; +a b a b a b +select @@last_plan_from_binding; +@@last_plan_from_binding +0 +show global bindings where original_sql like '%planner__core__rule_join_reorder%'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest +create global binding for select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b using select /*+ leading(t3) */ * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b; +select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b; +a b a b a b +select @@last_plan_from_binding; +@@last_plan_from_binding +1 +show global bindings where original_sql like '%planner__core__rule_join_reorder%'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest +select * from ( `planner__core__rule_join_reorder` . `t1` join `planner__core__rule_join_reorder` . `t2` on `t1` . `a` = `t2` . `a` ) join `planner__core__rule_join_reorder` . `t3` on `t2` . `b` = `t3` . `b` SELECT /*+ leading(`t3`)*/ * FROM (`planner__core__rule_join_reorder`.`t1` JOIN `planner__core__rule_join_reorder`.`t2` ON `t1`.`a` = `t2`.`a`) JOIN `planner__core__rule_join_reorder`.`t3` ON `t2`.`b` = `t3`.`b` planner__core__rule_join_reorder enabled utf8mb4 utf8mb4_general_ci manual 07450843a30e0679fcc588369b6a6c5247d1a004fbad485c759177227f45c21f +drop global binding for select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b; +select * from t1 join t2 on t1.a=t2.a left join t3 on t2.b=t3.b; +a b a b a b +select @@last_plan_from_binding; +@@last_plan_from_binding +0 +show global bindings where original_sql like '%planner__core__rule_join_reorder%'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest +create global binding for select * from t1 join t2 on t1.a=t2.a left join t3 on t2.b=t3.b using select /*+ leading(t2) */ * from t1 join t2 on t1.a=t2.a left join t3 on t2.b=t3.b; +select * from t1 join t2 on t1.a=t2.a left join t3 on t2.b=t3.b; +a b a b a b +select @@last_plan_from_binding; +@@last_plan_from_binding +1 +show global bindings where original_sql like '%planner__core__rule_join_reorder%'; +Original_sql Bind_sql Default_db Status Create_time Update_time Charset Collation Source Sql_digest Plan_digest +select * from ( `planner__core__rule_join_reorder` . `t1` join `planner__core__rule_join_reorder` . `t2` on `t1` . `a` = `t2` . `a` ) left join `planner__core__rule_join_reorder` . `t3` on `t2` . `b` = `t3` . `b` SELECT /*+ leading(`t2`)*/ * FROM (`planner__core__rule_join_reorder`.`t1` JOIN `planner__core__rule_join_reorder`.`t2` ON `t1`.`a` = `t2`.`a`) LEFT JOIN `planner__core__rule_join_reorder`.`t3` ON `t2`.`b` = `t3`.`b` planner__core__rule_join_reorder enabled utf8mb4 utf8mb4_general_ci manual 18f83ecaecd781fb67bd8b3e4a82b3c1cdb21813134712c735a56708b87f1709 +drop global binding for select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b; diff --git a/tests/integrationtest/r/planner/core/tests/prepare/issue.result b/tests/integrationtest/r/planner/core/tests/prepare/issue.result index 0a02ea28b054f..ee850afa574b9 100644 --- a/tests/integrationtest/r/planner/core/tests/prepare/issue.result +++ b/tests/integrationtest/r/planner/core/tests/prepare/issue.result @@ -134,6 +134,7 @@ a b select @@last_plan_from_cache; @@last_plan_from_cache 0 +set tidb_enable_prepared_plan_cache=DEFAULT; CREATE TABLE UK_MU16407 (COL3 timestamp NULL DEFAULT NULL, UNIQUE KEY U3(COL3)); insert into UK_MU16407 values("1985-08-31 18:03:27"); PREPARE st FROM 'SELECT COL3 FROM UK_MU16407 WHERE COL3>?'; @@ -164,6 +165,7 @@ execute stmt using @a,@b,@c,@d; COL2 126 126 +set tidb_enable_prepared_plan_cache=DEFAULT; set tidb_enable_prepared_plan_cache=1; drop table if exists t1, t2; CREATE TABLE t1 (c_int int, c_str varchar(40), PRIMARY KEY (c_int, c_str)); @@ -199,6 +201,7 @@ a b c a b select @@last_plan_from_cache; @@last_plan_from_cache 1 +set tidb_enable_prepared_plan_cache=DEFAULT; set tidb_enable_prepared_plan_cache=1; drop table if exists PK_SIGNED_10094; CREATE TABLE PK_SIGNED_10094 (COL1 decimal(55,0) NOT NULL, PRIMARY KEY (COL1)); @@ -220,6 +223,7 @@ COL1 select @@last_plan_from_cache; @@last_plan_from_cache 1 +set tidb_enable_prepared_plan_cache=DEFAULT; set tidb_enable_prepared_plan_cache=1; drop table if exists PK_S_MULTI_37; CREATE TABLE PK_S_MULTI_37 (COL1 decimal(55,0) NOT NULL, COL2 decimal(55,0) NOT NULL,PRIMARY KEY (COL1, COL2) /*T![clustered_index] NONCLUSTERED */) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; @@ -229,6 +233,7 @@ set @a=1; execute stmt using @a; SUM(COL1+?) col2 -9999999999999999999999999999999999999999999998 1 +set tidb_enable_prepared_plan_cache=DEFAULT; set tidb_enable_prepared_plan_cache=1; set @@tidb_enable_collect_execution_info=0; drop table if exists t; @@ -312,6 +317,8 @@ count(distinct col1) select/*+ hash_agg() */ count(distinct col1) from PK_TCOLLATION10197 where col1 > '龺'; count(distinct col1) 0 +set tidb_enable_prepared_plan_cache=DEFAULT; +set tidb_enable_clustered_index=DEFAULT; set tidb_enable_prepared_plan_cache=1; set tidb_enable_clustered_index=on; drop table if exists t; @@ -397,6 +404,8 @@ select @@last_plan_from_cache; 0 execute stmt using @z; col1 +set tidb_enable_prepared_plan_cache=DEFAULT; +set tidb_enable_clustered_index=DEFAULT; set tidb_enable_prepared_plan_cache=1; drop table if exists t; create table t(col1 enum('aa', 'bb'), col2 int, index(col1, col2)); @@ -418,6 +427,7 @@ col1 col2 col1 col2 select @@last_plan_from_cache; @@last_plan_from_cache 1 +set tidb_enable_prepared_plan_cache=DEFAULT; drop table if exists t4; create table t4 (a date); prepare st1 from "insert into t4(a) select dt from (select ? as dt from dual union all select sysdate() ) a"; @@ -426,3 +436,128 @@ execute st1 using @t; select count(*) from t4; count(*) 2 +set tidb_enable_prepared_plan_cache=1; +drop table if exists t; +create table t(a int); +prepare stmt from 'select * from t'; +execute stmt; +a +select EXEC_COUNT,plan_cache_hits, plan_in_cache from information_schema.statements_summary where digest_text='select * from `t`' and TABLE_NAMES = 'planner__core__tests__prepare__issue.t'; +EXEC_COUNT plan_cache_hits plan_in_cache +1 0 0 +execute stmt; +a +select EXEC_COUNT,plan_cache_hits, plan_in_cache from information_schema.statements_summary where digest_text='select * from `t`' and TABLE_NAMES = 'planner__core__tests__prepare__issue.t'; +EXEC_COUNT plan_cache_hits plan_in_cache +2 1 1 +prepare stmt from 'select * from t'; +execute stmt; +a +select @@last_plan_from_cache; +@@last_plan_from_cache +1 +select EXEC_COUNT, plan_cache_hits, plan_in_cache from information_schema.statements_summary where digest_text='select * from `t`' and TABLE_NAMES = 'planner__core__tests__prepare__issue.t'; +EXEC_COUNT plan_cache_hits plan_in_cache +3 2 1 +drop table if exists t; +create table t(a int primary key, b int, c int); +prepare stmt from 'select * from t where a = 2 or a = ?'; +set @p = 3; +execute stmt using @p; +a b c +select @@last_plan_from_cache; +@@last_plan_from_cache +0 +execute stmt using @p; +a b c +select @@last_plan_from_cache; +@@last_plan_from_cache +0 +drop table if exists t; +CREATE TABLE `t` (`COL1` bigint(20) DEFAULT NULL COMMENT 'WITH DEFAULT', UNIQUE KEY `UK_COL1` (`COL1`)); +insert into t values(-3865356285544170443),(9223372036854775807); +prepare stmt from 'select/*+ hash_agg() */ max(col1) from t where col1 = ? and col1 > ?;'; +set @a=-3865356285544170443, @b=-4055949188488870713; +execute stmt using @a,@b; +max(col1) +-3865356285544170443 +drop table if exists t; +create table t (a int, b int, index ab(a, b)); +insert into t values (1, 1), (2, 2); +prepare s1 from 'select * from t use index(ab) where a>=? and b>=? and b<=?'; +set @a=1, @b=1, @c=1; +execute s1 using @a, @b, @c; +a b +1 1 +set @a=1, @b=1, @c=10; +execute s1 using @a, @b, @c; +a b +1 1 +2 2 +select @@last_plan_from_cache; +@@last_plan_from_cache +0 +drop table if exists UK_GCOL_VIRTUAL_18928; +CREATE TABLE UK_GCOL_VIRTUAL_18928 ( +COL102 bigint(20) DEFAULT NULL, +COL103 bigint(20) DEFAULT NULL, +COL1 bigint(20) GENERATED ALWAYS AS (COL102 & 10) VIRTUAL, +COL2 varchar(20) DEFAULT NULL, +COL4 datetime DEFAULT NULL, +COL3 bigint(20) DEFAULT NULL, +COL5 float DEFAULT NULL, +UNIQUE KEY UK_COL1 (COL1)); +insert into UK_GCOL_VIRTUAL_18928(col102,col2) values("-5175976006730879891", "屘厒镇览錻碛斵大擔觏譨頙硺箄魨搝珄鋧扭趖"); +prepare stmt from 'SELECT * FROM UK_GCOL_VIRTUAL_18928 WHERE col1 < ? AND col2 != ?'; +set @a=10, @b="aa"; +execute stmt using @a, @b; +COL102 COL103 COL1 COL2 COL4 COL3 COL5 +-5175976006730879891 NULL 8 屘厒镇览錻碛斵大擔觏譨頙硺箄魨搝珄鋧扭趖 NULL NULL NULL +drop table if exists UK_MU14722; +CREATE TABLE UK_MU14722 ( +COL1 tinytext DEFAULT NULL, +COL2 tinyint(16) DEFAULT NULL, +COL3 datetime DEFAULT NULL, +COL4 int(11) DEFAULT NULL, +UNIQUE KEY U_M_COL (COL1(10)), +UNIQUE KEY U_M_COL2 (COL2), +UNIQUE KEY U_M_COL3 (COL3)); +insert into UK_MU14722 values("輮睅麤敜溺她晁瀪襄頮鹛涓誗钷廔筪惌嶙鎢塴", -121, "3383-02-19 07:58:28" , -639457963), +("偧孇鱓鼂瘠钻篝醗時鷷聽箌磇砀玸眞扦鸇祈灇", 127, "7902-03-05 08:54:04", -1094128660), +("浀玡慃淛漉围甧鴎史嬙砊齄w章炢忲噑硓哈樘", -127, "5813-04-16 03:07:20", -333397107), +("鑝粼啎鸼贖桖弦簼赭蠅鏪鐥蕿捐榥疗耹岜鬓槊", -117, "7753-11-24 10:14:24", 654872077); +prepare stmt from 'SELECT * FROM UK_MU14722 WHERE col2 > ? OR col2 BETWEEN ? AND ? ORDER BY COL2 + ? LIMIT 3'; +set @a=30410, @b=3937, @c=22045, @d=-4374; +execute stmt using @a,@b,@c,@d; +COL1 COL2 COL3 COL4 +set @a=127, @b=127, @c=127, @d=127; +execute stmt using @a,@b,@c,@d; +COL1 COL2 COL3 COL4 +偧孇鱓鼂瘠钻篝醗時鷷聽箌磇砀玸眞扦鸇祈灇 127 7902-03-05 08:54:04 -1094128660 +drop table if exists PK_AUTO_RANDOM9111; +CREATE TABLE `PK_AUTO_RANDOM9111` ( `COL1` bigint(45) NOT NULL , `COL2` varchar(20) DEFAULT NULL, `COL4` datetime DEFAULT NULL, `COL3` bigint(20) DEFAULT NULL, `COL5` float DEFAULT NULL, PRIMARY KEY (`COL1`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; +insert into PK_AUTO_RANDOM9111(col1) values (-9223372036854775808), (9223372036854775807); +set @a=9223372036854775807, @b=1; +prepare stmt from 'select min(col1) from PK_AUTO_RANDOM9111 where col1 > ?;'; +execute stmt using @a; +min(col1) +NULL +execute stmt using @a; +min(col1) +NULL +select @@last_plan_from_cache; +@@last_plan_from_cache +0 +execute stmt using @b; +min(col1) +9223372036854775807 +select @@last_plan_from_cache; +@@last_plan_from_cache +0 +execute stmt using @a; +min(col1) +NULL +select @@last_plan_from_cache; +@@last_plan_from_cache +1 +set tidb_enable_prepared_plan_cache=DEFAULT; diff --git a/tests/integrationtest/r/session/privileges.result b/tests/integrationtest/r/session/privileges.result new file mode 100644 index 0000000000000..1379b5a416b38 --- /dev/null +++ b/tests/integrationtest/r/session/privileges.result @@ -0,0 +1,103 @@ +drop user if exists 'abcddfjakldfjaldddds'@'%'; +create table if not exists t (a int); +## Test username length can be longer than 16. +CREATE USER 'abcddfjakldfjaldddds'@'%' identified by ''; +grant all privileges on test.* to 'abcddfjakldfjaldddds'@'%'; +grant all privileges on test.t to 'abcddfjakldfjaldddds'@'%'; +drop view if exists v_version29; +drop user if exists 'u_version29'@'%'; +create table if not exists t (a int); +create view v_version29 as select * from t; +create user 'u_version29'@'%'; +grant select on t to u_version29@'%'; +select current_user(); +current_user() +u_version29@% +select * from test.v_version29; +Error 1142 (42000): SELECT command denied to user 'u_version29'@'%' for table 'v_version29' +select current_user(); +current_user() +u_version29@% +create view v_version29_c as select * from t; +Error 1142 (42000): CREATE VIEW command denied to user 'u_version29'@'%' for table 'v_version29_c' +grant show view, select on v_version29 to 'u_version29'@'%'; +select table_priv from mysql.tables_priv where host='%' and db='session__privileges' and user='u_version29' and table_name='v_version29'; +table_priv +Select,Show View +select current_user(); +current_user() +u_version29@% +show create view v_version29; +View Create View character_set_client collation_connection +v_version29 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`%` SQL SECURITY DEFINER VIEW `v_version29` (`a`) AS SELECT `session__privileges`.`t`.`a` AS `a` FROM `session__privileges`.`t` utf8mb4 utf8mb4_general_ci +create view v_version29_c as select * from v_version29; +Error 1142 (42000): CREATE VIEW command denied to user 'u_version29'@'%' for table 'v_version29_c' +create view v_version29_c as select * from v_version29; +grant create view on v_version29_c to 'u_version29'@'%'; +select table_priv from mysql.tables_priv where host='%' and db='session__privileges' and user='u_version29' and table_name='v_version29_c'; +table_priv +Create View +drop view v_version29_c; +grant select on v_version29 to 'u_version29'@'%'; +select current_user(); +current_user() +u_version29@% +create view v_version29_c as select * from v_version29; +drop table if exists t1, t2; +drop user if exists xxx; +create table t1 (id int); +create table t2 (id int); +insert into t1 values (1); +insert into t2 values (2); +create user xxx; +grant all on session__privileges.t1 to xxx; +grant select on session__privileges.t2 to xxx; +update t2 set id = 666 where id = 1; +Error 8121 (HY000): privilege check for 'Update' fail +## Cover a bug that t1 and t2 both require update privilege. +## In fact, the privlege check for t1 should be update, and for t2 should be select. +update t1,t2 set t1.id = t2.id; +## Fix issue 8911 +drop database if exists weperk; +drop user if exists weperk; +create database weperk; +use weperk; +create table tb_wehub_server (id int, active_count int, used_count int); +create user 'weperk'; +grant all privileges on weperk.* to 'weperk'@'%'; +update tb_wehub_server a set a.active_count=a.active_count+1,a.used_count=a.used_count+1 where id=1; +drop database if exists service; +drop database if exists report; +create database service; +create database report; +CREATE TABLE service.t1 ( +id int(11) DEFAULT NULL, +a bigint(20) NOT NULL, +b text DEFAULT NULL, +PRIMARY KEY (a) +); +CREATE TABLE report.t2 ( +a bigint(20) DEFAULT NULL, +c bigint(20) NOT NULL +); +grant all privileges on service.* to weperk; +grant all privileges on report.* to weperk; +update service.t1 s, +report.t2 t +set s.a = t.a +WHERE +s.a = t.a +and t.c >= 1 and t.c <= 10000 +and s.b !='xx'; +## Fix issue 10028 +drop database if exists ap; +drop database if exists tp; +create database ap; +create database tp; +grant all privileges on ap.* to xxx; +grant select on tp.* to xxx; +create table tp.record( id int,name varchar(128),age int); +insert into tp.record (id,name,age) values (1,'john',18),(2,'lary',19),(3,'lily',18); +create table ap.record( id int,name varchar(128),age int); +insert into ap.record(id) values(1); +update ap.record t inner join tp.record tt on t.id=tt.id set t.name=tt.name; diff --git a/tests/integrationtest/r/session/txn.result b/tests/integrationtest/r/session/txn.result new file mode 100644 index 0000000000000..956ef4b4a3f0a --- /dev/null +++ b/tests/integrationtest/r/session/txn.result @@ -0,0 +1,32 @@ +set session tidb_txn_mode=""; +drop table if exists no_retry; +create table no_retry (id int); +insert into no_retry values (1); +set @@tidb_retry_limit = 0; +begin; +update no_retry set id = 2; +set session tidb_txn_mode=""; +begin; +update no_retry set id = 3; +commit; +## No auto retry because retry limit is set to 0. +commit; +Error 9007 (HY000): Write conflict,
reason=Optimistic [try again later] +set session tidb_txn_mode=pessimistic; +set @@tidb_retry_limit = default; +drop table if exists history; +set session tidb_txn_mode=''; +create table history (a int); +insert history values (1); +## Firstly, enable retry. +set tidb_disable_txn_auto_retry = 0; +begin; +update history set a = 2; +## Disable retry. +set tidb_disable_txn_auto_retry = 1; +update history set a = 3; +commit; +select * from history; +a +2 +set tidb_disable_txn_auto_retry = default; diff --git a/tests/integrationtest/r/statistics/handle.result b/tests/integrationtest/r/statistics/handle.result index f04a1f7bbd1b0..31834f28f9437 100644 --- a/tests/integrationtest/r/statistics/handle.result +++ b/tests/integrationtest/r/statistics/handle.result @@ -72,3 +72,10 @@ alter table t drop stats_extended s1; Error 1105 (HY000): Extended statistics feature is not generally available now, and tidb_enable_extended_stats is OFF admin reload stats_extended; Error 1105 (HY000): Extended statistics feature is not generally available now, and tidb_enable_extended_stats is OFF +set session tidb_enable_extended_stats = on; +drop table if exists t; +create table t(a int, b int); +insert into t values(1,1),(2,2),(3,3); +alter table t add stats_extended s1 correlation(a,b); +analyze table t; +set session tidb_enable_extended_stats = default; diff --git a/tests/integrationtest/r/util/admin.result b/tests/integrationtest/r/util/admin.result index 144578d8d295c..6903d3c1eb77e 100644 --- a/tests/integrationtest/r/util/admin.result +++ b/tests/integrationtest/r/util/admin.result @@ -9,7 +9,7 @@ ALTER TABLE t1 ADD COLUMN cc1 CHAR(36) NULL DEFAULT ''; ALTER TABLE t1 ADD COLUMN cc2 VARCHAR(36) NULL DEFAULT ''; ALTER TABLE t1 ADD INDEX idx1 (cc1); ALTER TABLE t1 ADD INDEX idx2 (cc2); -ALTER TABLE t1 engine=innodb; +ALTER TABLE t1 engine=innodb, ROW_FORMAT=DYNAMIC; admin check table t1; drop table if exists t1; create table t1 ( diff --git a/tests/integrationtest/run-tests.sh b/tests/integrationtest/run-tests.sh index 5ddbe9112d5b6..e0142e77d0692 100755 --- a/tests/integrationtest/run-tests.sh +++ b/tests/integrationtest/run-tests.sh @@ -88,7 +88,7 @@ function build_mysql_tester() { echo "building mysql-tester binary: $mysql_tester" rm -rf $mysql_tester - GOBIN=$PWD go install github.com/pingcap/mysql-tester/src@fe93e790fd4a92083b62ca8b43185df12591f0cd + GOBIN=$PWD go install github.com/pingcap/mysql-tester/src@77628a8d2fae0c2f4cbc059d45785ae9615c817a mv src mysql_tester } diff --git a/tests/integrationtest/t/bindinfo/bind.test b/tests/integrationtest/t/bindinfo/bind.test index e3a534d31a41e..290292626642d 100644 --- a/tests/integrationtest/t/bindinfo/bind.test +++ b/tests/integrationtest/t/bindinfo/bind.test @@ -31,6 +31,11 @@ select * from t where a in (1,2,3) and b in (1,2) and c in (1); select @@last_plan_from_binding; commit; +drop binding for select a from t where a in (1); +drop binding for select b from t where b in (1,2,3); +drop binding for select * from t where a in (1) and b in (1,2) and c in (1,2,3); + + # TestExplain set tidb_cost_model_version=2; drop table if exists t1; @@ -141,3 +146,190 @@ create table t(id int, value decimal(5,2)); table t; explain table t; desc table t; + +# TestBindingInListOperation +drop table if exists t; +create table t (a int, b int, c int, d int); + +## only 1 binding will be left +create binding for select * from t where a in(1) using select * from t where a in(1); +create binding for select * from t where a in(1,2) using select * from t where a in(1); +create binding for select * from t where a in(1) using select * from t where a in(1,2); +create binding for select * from t where a in(1,2) using select * from t where a in(1,2); +create binding for select * from t where a in(1,2,3) using select * from t where a in(1,2,3); +--replace_column 5 6 +show bindings where default_db='bindinfo__bind'; +drop binding for select * from t where a in(1); +--replace_column 5 6 +show bindings where default_db='bindinfo__bind'; + +## create and drop +create binding for select * from t where a in(1,2,3) using select * from t where a in(1); +--replace_column 5 6 +show bindings where default_db='bindinfo__bind'; +drop binding for select * from t where a in(1); +--replace_column 5 6 +show bindings where default_db='bindinfo__bind'; +create binding for select * from t where a in(1) using select * from t where a in(1); +--replace_column 5 6 +show bindings where default_db='bindinfo__bind'; +drop binding for select * from t where a in(1,2,3); +--replace_column 5 6 +show bindings where default_db='bindinfo__bind'; +create binding for select * from t where a in(1) using select * from t where a in(1); +--replace_column 5 6 +show bindings where default_db='bindinfo__bind'; +drop binding for select * from t where a in(1,2,3,4,5,6,7,8,9,0,11,12); +--replace_column 5 6 +show bindings where default_db='bindinfo__bind'; + +## create and set status +create global binding for select * from t where a in(1,2,3) using select * from t where a in(1); +--replace_column 5 6 +show global bindings where original_sql like '%bindinfo__bind%'; +set binding disabled for select * from t where a in(1); +--replace_column 5 6 +show global bindings where original_sql like '%bindinfo__bind%'; +set binding enabled for select * from t where a in(1,2,3,4,5); +--replace_column 5 6 +show global bindings where original_sql like '%bindinfo__bind%'; + +drop global binding for select * from t where a in(1,2,3); + +# TestBindingWithoutCharset +drop table if exists t; +create table t (a varchar(10) CHARACTER SET utf8); +create global binding for select * from t where a = 'aa' using select * from t where a = 'aa'; +--replace_column 5 6 +show global bindings where original_sql like '%bindinfo__bind%'; + +drop global binding for select * from t where a = 'aa'; + +# TestBindingWithMultiParenthesis +drop table if exists t; +create table t (a int); +create global binding for select * from (select * from t where a = 1) tt using select * from (select * from t where a = 1) tt; +create global binding for select * from ((select * from t where a = 1)) tt using select * from (select * from t where a = 1) tt; +--replace_column 5 6 +show global bindings where original_sql like '%bindinfo__bind%'; + +drop global binding for select * from ((select * from t where a = 1)) tt; + +# TestPrivileges +drop table if exists t; +drop user if exists test@'%'; +create table t(a int, b int, index idx(a)); +create global binding for select * from t using select * from t use index(idx); +--replace_column 5 6 +show global bindings where original_sql like '%bindinfo__bind%'; + +create user test@'%'; +connect (conn1, localhost, test,,); +--replace_column 5 6 +show global bindings where original_sql like '%bindinfo__bind%'; +disconnect conn1; + +drop global binding for select * from t; + +# TestSPMWithoutUseDatabase +drop table if exists t; +create table t(a int, b int, key(a)); +create global binding for select * from t using select * from t force index(a); + +connect (conn1, localhost, root,); +--error 1046 +select * from t; +select @@last_plan_from_binding; +explain format ='brief' select * from bindinfo__bind.t; +select * from bindinfo__bind.t; +select @@last_plan_from_binding; +set binding disabled for select * from bindinfo__bind.t; +select * from bindinfo__bind.t; +select @@last_plan_from_binding; +disconnect conn1; + +drop global binding for select * from t; + +# TestDMLIndexHintBind +drop table if exists t; +create table t(a int, b int, c int, key idx_b(b), key idx_c(c)); +explain format='brief' delete from t where b = 1 and c > 1; +create global binding for delete from t where b = 1 and c > 1 using delete from t use index(idx_c) where b = 1 and c > 1; +explain format='brief' delete from t where b = 1 and c > 1; + +drop global binding for delete from t where b = 1 and c > 1; + +# TestCaptureBaselinesScope +show session variables like "tidb_capture_plan_baselines"; +show global variables like "tidb_capture_plan_baselines"; +select @@global.tidb_capture_plan_baselines; +SET GLOBAL tidb_capture_plan_baselines = on; +show variables like "tidb_capture_plan_baselines"; +show global variables like "tidb_capture_plan_baselines"; + +connect (conn1, localhost, root,, bindinfo__bind); +show global variables like "tidb_capture_plan_baselines"; +select @@global.tidb_capture_plan_baselines; +disconnect conn1; + +set GLOBAL tidb_capture_plan_baselines = default; + +# TestReCreateBind +drop database if exists bindinfo__bind_test; +create database bindinfo__bind_test; +use bindinfo__bind_test; +create table t(a int, b int, index idx(a)); +select original_sql, status from mysql.bind_info where original_sql like '%bindinfo__bind_test%'; +--replace_column 5 6 +show global bindings where original_sql like '%bindinfo__bind_test%'; +create global binding for select * from t using select * from t; +select original_sql, status from mysql.bind_info where original_sql like '%bindinfo__bind_test%'; +--replace_column 5 6 +show global bindings where original_sql like '%bindinfo__bind_test%'; +create global binding for select * from t using select * from t; +select original_sql, status from mysql.bind_info where original_sql like '%bindinfo__bind_test%'; +--replace_column 5 6 +show global bindings where original_sql like '%bindinfo__bind_test%'; + +drop global binding for select * from t; +use bindinfo__bind; +drop database bindinfo__bind_test; + +# TestDMLSQLBind +drop table if exists t1, t2; +create table t1(a int, b int, c int, key idx_b(b), key idx_c(c)); +create table t2(a int, b int, c int, key idx_b(b), key idx_c(c)); +explain format='brief' delete from t1 where b = 1 and c > 1; +create global binding for delete from t1 where b = 1 and c > 1 using delete /*+ use_index(t1,idx_c) */ from t1 where b = 1 and c > 1; +explain format='brief' delete from t1 where b = 1 and c > 1; + +explain format='brief' delete t1, t2 from t1 inner join t2 on t1.b = t2.b; +create global binding for delete t1, t2 from t1 inner join t2 on t1.b = t2.b using delete /*+ inl_join(t1) */ t1, t2 from t1 inner join t2 on t1.b = t2.b; +explain format='brief' delete t1, t2 from t1 inner join t2 on t1.b = t2.b; + +explain format='brief' update t1 set a = 1 where b = 1 and c > 1; +create global binding for update t1 set a = 1 where b = 1 and c > 1 using update /*+ use_index(t1,idx_c) */ t1 set a = 1 where b = 1 and c > 1; +explain format='brief' update t1 set a = 1 where b = 1 and c > 1; + +explain format='brief' update t1, t2 set t1.a = 1 where t1.b = t2.b; +create global binding for update t1, t2 set t1.a = 1 where t1.b = t2.b using update /*+ inl_join(t1) */ t1, t2 set t1.a = 1 where t1.b = t2.b; +explain format='brief' update t1, t2 set t1.a = 1 where t1.b = t2.b; + +explain format='brief' insert into t1 select * from t2 where t2.b = 2 and t2.c > 2; +create global binding for insert into t1 select * from t2 where t2.b = 1 and t2.c > 1 using insert /*+ use_index(t2,idx_c) */ into t1 select * from t2 where t2.b = 1 and t2.c > 1; +explain format='brief' insert into t1 select * from t2 where t2.b = 2 and t2.c > 2; +drop global binding for insert into t1 select * from t2 where t2.b = 1 and t2.c > 1; +create global binding for insert into t1 select * from t2 where t2.b = 1 and t2.c > 1 using insert into t1 select /*+ use_index(t2,idx_c) */ * from t2 where t2.b = 1 and t2.c > 1; +explain format='brief' insert into t1 select * from t2 where t2.b = 2 and t2.c > 2; + +explain format='brief' replace into t1 select * from t2 where t2.b = 2 and t2.c > 2; +create global binding for replace into t1 select * from t2 where t2.b = 1 and t2.c > 1 using replace into t1 select /*+ use_index(t2,idx_c) */ * from t2 where t2.b = 1 and t2.c > 1; +explain format='brief' replace into t1 select * from t2 where t2.b = 2 and t2.c > 2; + +drop global binding for delete from t1 where b = 1 and c > 1; +drop global binding for delete t1, t2 from t1 inner join t2 on t1.b = t2.b; +drop global binding for update t1 set a = 1 where b = 1 and c > 1; +drop global binding for update t1, t2 set t1.a = 1 where t1.b = t2.b; +drop global binding for insert into t1 select * from t2 where t2.b = 1 and t2.c > 1; +drop global binding for replace into t1 select * from t2 where t2.b = 1 and t2.c > 1; + diff --git a/tests/integrationtest/t/bindinfo/temptable.test b/tests/integrationtest/t/bindinfo/temptable.test new file mode 100644 index 0000000000000..d958023dfc740 --- /dev/null +++ b/tests/integrationtest/t/bindinfo/temptable.test @@ -0,0 +1,74 @@ +# TestSelectBindingOnGlobalTempTableProhibited +# covers https://github.com/pingcap/tidb/issues/26377 +drop table if exists t1,tmp1; +create table t1(a int(11)); +create global temporary table tmp1(a int(11), key idx_a(a)) on commit delete rows; +create temporary table tmp2(a int(11), key idx_a(a)); +-- error 8006 +create global binding for with cte1 as (select a from tmp1) select * from cte1 using with cte1 as (select a from tmp1) select * from cte1; +-- error 8006 +create global binding for select * from t1 inner join tmp1 on t1.a=tmp1.a using select * from t1 inner join tmp1 on t1.a=tmp1.a; +-- error 8006 +create global binding for select * from t1 where t1.a in (select a from tmp1) using select * from t1 where t1.a in (select a from tmp1 use index (idx_a)); +-- error 8006 +create global binding for select a from t1 union select a from tmp1 using select a from t1 union select a from tmp1 use index (idx_a); +-- error 8006 +create global binding for select t1.a, (select a from tmp1 where tmp1.a=1) as t2 from t1 using select t1.a, (select a from tmp1 where tmp1.a=1) as t2 from t1; +-- error 8006 +create global binding for select * from (select * from tmp1) using select * from (select * from tmp1); +-- error 8006 +create global binding for select * from t1 where t1.a = (select a from tmp1) using select * from t1 where t1.a = (select a from tmp1); +-- error 8006 +create global binding for with cte1 as (select a from tmp2) select * from cte1 using with cte1 as (select a from tmp2) select * from cte1; +-- error 8006 +create global binding for select * from t1 inner join tmp2 on t1.a=tmp2.a using select * from t1 inner join tmp2 on t1.a=tmp2.a; +-- error 8006 +create global binding for select * from t1 where t1.a in (select a from tmp2) using select * from t1 where t1.a in (select a from tmp2 use index (idx_a)); +-- error 8006 +create global binding for select a from t1 union select a from tmp2 using select a from t1 union select a from tmp2 use index (idx_a); +-- error 8006 +create global binding for select t1.a, (select a from tmp2 where tmp2.a=1) as t2 from t1 using select t1.a, (select a from tmp2 where tmp2.a=1) as t2 from t1; +-- error 8006 +create global binding for select * from (select * from tmp2) using select * from (select * from tmp2); +-- error 8006 +create global binding for select * from t1 where t1.a = (select a from tmp2) using select * from t1 where t1.a = (select a from tmp2); + +# TestDMLBindingOnGlobalTempTableProhibited +# covers https://github.com/pingcap/tidb/issues/27422 +drop table if exists t1,tmp1,tmp2; +create table t1(a int(11)); +create global temporary table tmp1(a int(11), key idx_a(a)) on commit delete rows; +create temporary table tmp2(a int(11), key idx_a(a)); +-- error 8006 +create global binding for insert into t1 (select * from tmp1) using insert into t1 (select * from tmp1); +-- error 8006 +create global binding for update t1 inner join tmp1 on t1.a=tmp1.a set t1.a=1 using update t1 inner join tmp1 on t1.a=tmp1.a set t1.a=1; +-- error 8006 +create global binding for update t1 set t1.a=(select a from tmp1) using update t1 set t1.a=(select a from tmp1); +-- error 8006 +create global binding for update t1 set t1.a=1 where t1.a = (select a from tmp1) using update t1 set t1.a=1 where t1.a = (select a from tmp1); +-- error 8006 +create global binding for with cte1 as (select a from tmp1) update t1 set t1.a=1 where t1.a in (select a from cte1) using with cte1 as (select a from tmp1) update t1 set t1.a=1 where t1.a in (select a from cte1); +-- error 8006 +create global binding for delete from t1 where t1.a in (select a from tmp1) using delete from t1 where t1.a in (select a from tmp1); +-- error 8006 +create global binding for delete from t1 where t1.a = (select a from tmp1) using delete from t1 where t1.a = (select a from tmp1); +-- error 8006 +create global binding for delete t1 from t1,tmp1 using delete t1 from t1,tmp1; +-- error 8006 +create global binding for insert into t1 (select * from tmp2) using insert into t1 (select * from tmp2); +-- error 8006 +create global binding for update t1 inner join tmp2 on t1.a=tmp2.a set t1.a=1 using update t1 inner join tmp2 on t1.a=tmp2.a set t1.a=1; +-- error 8006 +create global binding for update t1 set t1.a=(select a from tmp2) using update t1 set t1.a=(select a from tmp2); +-- error 8006 +create global binding for update t1 set t1.a=1 where t1.a = (select a from tmp2) using update t1 set t1.a=1 where t1.a = (select a from tmp2); +-- error 8006 +create global binding for with cte1 as (select a from tmp2) update t1 set t1.a=1 where t1.a in (select a from cte1) using with cte1 as (select a from tmp2) update t1 set t1.a=1 where t1.a in (select a from cte1); +-- error 8006 +create global binding for delete from t1 where t1.a in (select a from tmp2) using delete from t1 where t1.a in (select a from tmp2); +-- error 8006 +create global binding for delete from t1 where t1.a = (select a from tmp2) using delete from t1 where t1.a = (select a from tmp2); +-- error 8006 +create global binding for delete t1 from t1,tmp2 using delete t1 from t1,tmp2; + diff --git a/tests/integrationtest/t/ddl/db.test b/tests/integrationtest/t/ddl/db.test index a94955ba7ebbf..0cf68701c4c22 100644 --- a/tests/integrationtest/t/ddl/db.test +++ b/tests/integrationtest/t/ddl/db.test @@ -365,3 +365,13 @@ select @@last_insert_id; select id from local_temp_auto_id; show create table local_temp_auto_id; +# TestIssue23473 +drop table if exists t_23473; +create table t_23473 (k int primary key, v int); +alter table t_23473 change column k k bigint; +show columns from t_23473; + +# TestAutoConvertBlobTypeByLength +drop table if exists t0; +create table t0(c0 Blob(254), c1 Blob(65534), c2 Blob(16777214), c3 Blob(4294967294)); +show columns from t0; diff --git a/tests/integrationtest/t/ddl/foreign_key.test b/tests/integrationtest/t/ddl/foreign_key.test new file mode 100644 index 0000000000000..12118b7a8a449 --- /dev/null +++ b/tests/integrationtest/t/ddl/foreign_key.test @@ -0,0 +1,204 @@ +# TestCreateTableWithForeignKeyDML +set @@global.tidb_enable_foreign_key=1; +create table t1 (id int key, a int); +begin; +insert into t1 values (1, 1); +update t1 set a = 2 where id = 1; + +connect (conn1, localhost, root,, ddl__foreign_key); +create table t2 (id int key, b int, foreign key fk_b(b) references ddl__foreign_key.t1(id)); +disconnect conn1; + +commit; + +set @@global.tidb_enable_foreign_key=default; + +# TestModifyColumnWithForeignKey +set @@global.tidb_enable_foreign_key=1; +set @@foreign_key_checks=1; +drop table if exists t1, t2; +create table t1 (id int key, b varchar(10), index(b)); +create table t2 (a varchar(10), constraint fk foreign key (a) references t1(b)); +insert into t1 values (1, '123456789'); +insert into t2 values ('123456789'); +-- error 1833 +alter table t1 modify column b varchar(5); +-- error 3780 +alter table t1 modify column b bigint; +alter table t1 modify column b varchar(20); +-- error 1833 +alter table t1 modify column b varchar(10); +alter table t2 modify column a varchar(20); +alter table t2 modify column a varchar(21); +-- error 1832 +alter table t2 modify column a varchar(5); +-- error 3780 +alter table t2 modify column a bigint; +drop table t1, t2; +create table t1 (id int key, b decimal(10, 5), index(b)); +create table t2 (a decimal(10, 5), constraint fk foreign key (a) references t1(b)); +insert into t1 values (1, 12345.67891); +insert into t2 values (12345.67891); +-- error 1833 +alter table t1 modify column b decimal(10, 6); +-- error 1833 +alter table t1 modify column b decimal(10, 3); +-- error 1833 +alter table t1 modify column b decimal(5, 2); +-- error 1833 +alter table t1 modify column b decimal(20, 10); +-- error 1832 +alter table t2 modify column a decimal(30, 15); +-- error 1832 +alter table t2 modify column a decimal(5, 2); + +set @@global.tidb_enable_foreign_key=default; +set @@foreign_key_checks=default; + +# TestDropTableWithForeignKeyReferred +set @@global.tidb_enable_foreign_key=1; +set @@foreign_key_checks=1; +drop table if exists t1,t2,t3; +create table t1 (id int key, b int, index(b)); +create table t2 (id int key, b int, foreign key fk_b(b) references t1(id)); +create table t3 (id int key, b int, foreign key fk_b(b) references t2(id)); +-- error 3730 +drop table if exists t1,t2; +show tables; + +drop table if exists t1,t2,t3; +set @@global.tidb_enable_foreign_key=default; +set @@foreign_key_checks=default; + +# TestDropColumnWithForeignKey +set @@global.tidb_enable_foreign_key=1; +set @@foreign_key_checks=1; +drop table if exists t1, t2; +create table t1 (id int key, a int, b int, index(b), CONSTRAINT fk foreign key (a) references t1(b)); +-- error 1828 +alter table t1 drop column a; +-- error 1829 +alter table t1 drop column b; +drop table t1; +create table t1 (id int key, b int, index(b)); +create table t2 (a int, b int, constraint fk foreign key (a) references t1(b)); +-- error 1829 +alter table t1 drop column b; +-- error 1828 +alter table t2 drop column a; + +set @@global.tidb_enable_foreign_key=default; +set @@foreign_key_checks=default; + +# TestDropDatabaseWithForeignKeyReferred +set @@global.tidb_enable_foreign_key=1; +set @@foreign_key_checks=1; +drop table if exists t1, t2; +create table t1 (id int key, b int, index(b)); +create table t2 (id int key, b int, foreign key fk_b(b) references t1(id)); +create database ddl__foreign_key_test; +create table ddl__foreign_key_test.t3 (id int key, b int, foreign key fk_b(b) references ddl__foreign_key.t2(id)); +-- error 3730 +drop database ddl__foreign_key; +set @@foreign_key_checks=0; +drop database ddl__foreign_key; +set @@foreign_key_checks=1; +create database ddl__foreign_key; +use ddl__foreign_key; +create table t1 (id int key, b int, index(b)); +create table t2 (id int key, b int, foreign key fk_b(b) references t1(id)); +-- error 3730 +drop database ddl__foreign_key; +drop table ddl__foreign_key_test.t3; +drop database ddl__foreign_key; + +create database ddl__foreign_key; +use ddl__foreign_key; +set @@global.tidb_enable_foreign_key=default; +set @@foreign_key_checks=default; + +# TestMultiSchemaAddForeignKey +set @@foreign_key_checks=1; +drop table if exists t1, t2; +create table t1 (id int key); +create table t2 (a int, b int); +alter table t2 add foreign key (a) references t1(id), add foreign key (b) references t1(id); +alter table t2 add column c int, add column d int; +alter table t2 add foreign key (c) references t1(id), add foreign key (d) references t1(id), add index(c), add index(d); +drop table t2; +create table t2 (a int, b int, index idx1(a), index idx2(b)); +-- error 1553 +alter table t2 drop index idx1, drop index idx2, add foreign key (a) references t1(id), add foreign key (b) references t1(id); +alter table t2 drop index idx1, drop index idx2; +alter table t2 add foreign key (a) references t1(id), add foreign key (b) references t1(id); +show create table t2; +drop table t2; +create table t2 (a int, b int, index idx0(a,b), index idx1(a), index idx2(b)); +alter table t2 drop index idx1, add foreign key (a) references t1(id), add foreign key (b) references t1(id); +set @@foreign_key_checks=default; + +# TestForeignKeyWithCacheTable +set @@foreign_key_checks=1; +drop table if exists t1, t2; + +## Test foreign key refer cache table. +create table t1 (id int key); +insert into t1 values (1),(2),(3),(4); +alter table t1 cache; +create table t2 (b int); +alter table t2 add constraint fk foreign key (b) references t1(id) on delete cascade on update cascade; +insert into t2 values (1),(2),(3),(4); +-- error 1452 +insert into t2 values (5); +update t1 set id = id+10 where id=1; +delete from t1 where id<10; +select * from t1; +select * from t2; +alter table t1 nocache; +drop table t1,t2; + +## Test add foreign key on cache table. +create table t1 (id int key); +create table t2 (b int); +alter table t2 add constraint fk foreign key (b) references t1(id) on delete cascade on update cascade; +alter table t2 cache; +insert into t1 values (1),(2),(3),(4); +insert into t2 values (1),(2),(3),(4); +-- error 1452 +insert into t2 values (5); +update t1 set id = id+10 where id=1; +delete from t1 where id<10; +select * from t1; +select * from t2; +alter table t2 nocache; +drop table t1,t2; + +set @@foreign_key_checks=default; + +# TestForeignKeyAndRenameIndex +set @@foreign_key_checks=1; +drop table if exists t1, t2; +create table t1 (id int key, b int, index idx1(b)); +create table t2 (id int key, b int, constraint fk foreign key (b) references t1(b)); +insert into t1 values (1,1),(2,2); +insert into t2 values (1,1),(2,2); +-- error 1452 +insert into t2 values (3,3); +-- error 1451 +delete from t1 where id=1; +alter table t1 rename index idx1 to idx2; +alter table t2 rename index fk to idx; +-- error 1452 +insert into t2 values (3,3); +-- error 1451 +delete from t1 where id=1; +alter table t2 drop foreign key fk; +alter table t2 add foreign key fk (b) references t1(b) on delete cascade on update cascade; +alter table t1 rename index idx2 to idx3; +alter table t2 rename index idx to idx0; +delete from t1 where id=1; +select * from t1; +select * from t2; +admin check table t1,t2; + +set @@foreign_key_checks=default; diff --git a/tests/integrationtest/t/executor/cte.test b/tests/integrationtest/t/executor/cte.test index 25bdab72cdee4..1176a509c1456 100644 --- a/tests/integrationtest/t/executor/cte.test +++ b/tests/integrationtest/t/executor/cte.test @@ -1,3 +1,6 @@ +## Delete it when https://github.com/pingcap/tidb/issues/48808 merged +set tidb_max_chunk_size=default; + # TestBasicCTE with recursive cte1 as (select 1 c1 union all select c1 + 1 c1 from cte1 where c1 < 5) select * from cte1; with recursive cte1 as (select 1 c1 union all select 2 c1 union all select c1 + 1 c1 from cte1 where c1 < 10) select * from cte1 order by c1; diff --git a/tests/integrationtest/t/executor/delete.test b/tests/integrationtest/t/executor/delete.test index ed853f680a438..45b5f3ec4df8e 100644 --- a/tests/integrationtest/t/executor/delete.test +++ b/tests/integrationtest/t/executor/delete.test @@ -13,3 +13,88 @@ set @a=1; execute stmt using @a; select * from t; +# TestDelete +drop table if exists delete_test; +drop view if exists v; +drop sequence if exists seq; +create table delete_test(id int not null default 1, name varchar(255), PRIMARY KEY(id)); +insert INTO delete_test VALUES (1, "hello"); +insert into delete_test values (2, "hello"); +--enable_info +update delete_test set name = "abc" where id = 2; +delete from delete_test where id = 2 limit 1; +delete from delete_test where 0; +--disable_info +insert into delete_test values (2, 'abc'); +--enable_info +delete from delete_test where delete_test.id = 2 limit 1; +--disable_info +begin; +SELECT * from delete_test limit 2; +commit; +insert into delete_test values (2, 'abc'); +## TODO: https://github.com/pingcap/tidb/issues/48120 +--replace_regex /INTEGER/DOUBLE/ +-- error 1292 +delete from delete_test where id = (select '2a'); +--enable_info +delete ignore from delete_test where id = (select '2a'); +--disable_info +SHOW WARNINGS; +--enable_info +delete from delete_test; +--disable_info +create view v as select * from delete_test; +-- error 1356 +delete from v where name = 'aaa'; +drop view v; +create sequence seq; +-- error 1105 +delete from seq; +drop sequence seq; + +# TestQualifiedDelete +drop table if exists t1, t2; +create table t1 (c1 int, c2 int, index (c1)); +create table t2 (c1 int, c2 int); +insert into t1 values (1, 1), (2, 2); +--enable_info +delete from t1 where t1.c1 = 1; +delete from t1 where t1.c2 = 2; +--disable_info +select * from t1; +insert into t1 values (1, 3); +--enable_info +delete from t1 as a where a.c1 = 1; +--disable_info +insert into t1 values (1, 1), (2, 2); +insert into t2 values (2, 1), (3,1); +--enable_info +delete t1, t2 from t1 join t2 where t1.c1 = t2.c2; +--disable_info +insert into t2 values (2, 1), (3,1); +--enable_info +delete a, b from t1 as a join t2 as b where a.c2 = b.c1; +--disable_info +-- error 1109 +delete t1, t2 from t1 as a join t2 as b where a.c2 = b.c1; + +# TestMultiTableDelete +drop table if exists t1, t2, t3; +create table t1 (id int, data int); +--enable_info +insert into t1 values (11, 121), (12, 122), (13, 123); +--disable_info +create table t2 (id int, data int); +--enable_info +insert into t2 values (11, 221), (22, 222), (23, 223); +--disable_info +create table t3 (id int, data int); +--enable_info +insert into t3 values (11, 321), (22, 322), (23, 323); +delete t1, t2 from t1 inner join t2 inner join t3 where t1.id=t2.id and t2.id=t3.id; +--disable_info +--sorted_result +select * from t3; + + diff --git a/tests/integrationtest/t/executor/executor.test b/tests/integrationtest/t/executor/executor.test index 9175b30e271a8..bf5ac6da7dda2 100644 --- a/tests/integrationtest/t/executor/executor.test +++ b/tests/integrationtest/t/executor/executor.test @@ -2537,3 +2537,314 @@ from ssci right join csci on (ssci.customer_sk=csci.customer_sk limit 100; --enable_result_log +# TestBDRRole +admin show bdr role; +admin set bdr role primary; +admin show bdr role; +admin set bdr role secondary; +admin show bdr role; +admin set bdr role local_only; +admin show bdr role; +--error 1064 +admin set bdr role test_err; +admin show bdr role; + +# TestCompileOutOfMemoryQuota +# Test for issue: https://github.com/pingcap/tidb/issues/38322 +set global tidb_mem_oom_action='CANCEL'; +drop table if exists t, t1; +create table t(a int, b int, index idx(a)); +create table t1(a int, c int, index idx(a)); +set tidb_mem_quota_query=10; +-- replace_regex /conn=[0-9]+/conn=/ +-- error 8175 +select t.a, t1.a from t use index(idx), t1 use index(idx) where t.a = t1.a; +set global tidb_mem_oom_action=default; +set tidb_mem_quota_query=default; + +# TestOOMPanicAction +drop table if exists t, t1; +create table t (a int primary key, b double); +insert into t values (1,1); +SET GLOBAL tidb_mem_oom_action='CANCEL'; +set @@tidb_mem_quota_query=1; +-- replace_regex /conn=[0-9]+/conn=/ +-- error 8175 +select sum(b) from t group by a; + +## Test insert from select oom panic. +drop table if exists t,t1; +create table t (a bigint); +create table t1 (a bigint); +set @@tidb_mem_quota_query=200; +-- replace_regex /conn=[0-9]+/conn=/ +-- error 8175 +insert into t1 values (1),(2),(3),(4),(5); +-- replace_regex /conn=[0-9]+/conn=/ +-- error 8175 +replace into t1 values (1),(2),(3),(4),(5); +set @@tidb_mem_quota_query=10000; +insert into t1 values (1),(2),(3),(4),(5); +set @@tidb_mem_quota_query=10; +-- replace_regex /conn=[0-9]+/conn=/ +-- error 8175 +insert into t select a from t1 order by a desc; +-- replace_regex /conn=[0-9]+/conn=/ +-- error 8175 +replace into t select a from t1 order by a desc; +set @@tidb_mem_quota_query=10000; +insert into t values (1),(2),(3),(4),(5); +## Set the memory quota to 244 to make this SQL panic during the DeleteExec +## instead of the TableReaderExec. +set @@tidb_mem_quota_query=244; +-- replace_regex /conn=[0-9]+/conn=/ +-- error 8175 +delete from t; +set @@tidb_mem_quota_query=10000; +delete from t1; +insert into t1 values(1); +insert into t values (1),(2),(3),(4),(5); +set @@tidb_mem_quota_query=244; +-- replace_regex /conn=[0-9]+/conn=/ +-- error 8175 +delete t, t1 from t join t1 on t.a = t1.a; +set @@tidb_mem_quota_query=100000; +truncate table t; +insert into t values(1),(2),(3); +## set the memory to quota to make the SQL panic during UpdateExec instead +## of TableReader. +set @@tidb_mem_quota_query=244; +-- replace_regex /conn=[0-9]+/conn=/ +-- error 8175 +update t set a = 4; + +SET GLOBAL tidb_mem_oom_action = DEFAULT; +set @@tidb_mem_quota_query=DEFAULT; + +# TestTrackAggMemoryUsage +drop table if exists t; +create table t(a int); +insert into t values(1); +set tidb_track_aggregate_memory_usage = off; + +--replace_column 5 6 +--replace_regex /[0-9]+ Bytes/ Bytes/ /[.0-9]+ KB/ KB/ +explain analyze select /*+ HASH_AGG() */ sum(a) from t; + +--replace_column 5 6 +--replace_regex /[0-9]+ Bytes/ Bytes/ /[.0-9]+ KB/ KB/ +explain analyze select /*+ STREAM_AGG() */ sum(a) from t; + +set tidb_track_aggregate_memory_usage = on; + +--replace_column 5 6 +--replace_regex /[0-9]+ Bytes/ Bytes/ /[.0-9]+ KB/ KB/ +explain analyze select /*+ HASH_AGG() */ sum(a) from t; + +--replace_column 5 6 +--replace_regex /[0-9]+ Bytes/ Bytes/ /[.0-9]+ KB/ KB/ +explain analyze select /*+ STREAM_AGG() */ sum(a) from t; + +set tidb_track_aggregate_memory_usage = default; + +# TestBind +drop table if exists testbind; +create table testbind(i int, s varchar(20)); +create index index_t on testbind(i,s); +create global binding for select * from testbind using select * from testbind use index for join(index_t); +--replace_column 5 6 +show global bindings where default_db='executor__executor'; +create session binding for select * from testbind using select * from testbind use index for join(index_t); +--replace_column 5 6 +show session bindings where default_db='executor__executor'; + +drop session binding for select * from testbind using select * from testbind use index for join(index_t); +drop global binding for select * from testbind using select * from testbind use index for join(index_t); + +# TestIndexMergeRuntimeStats +drop table if EXISTS t1; +create table t1(id int primary key, a int, b int, c int, d int, index t1a(a), index t1b(b)); +insert into t1 values(1,1,1,1,1),(2,2,2,2,2),(3,3,3,3,3),(4,4,4,4,4),(5,5,5,5,5); +--replace_regex /.*time:.*loops:.*cop_task:.*/.*time:.*loops:.*cop_task:.*/ /.*time:.*loops:.*index_task:{fetch_handle:.*, merge:.*}.*table_task:{num.*concurrency.*fetch_row.*wait_time.*}.*/.*time:.*loops:.*index_task:{fetch_handle:.*, merge:.*}.*table_task:{num.*concurrency.*fetch_row.*wait_time.*}.*/ /[0-9]+ Bytes/ Bytes/ /[.0-9]+ KB/ KB/ +explain analyze select /*+ use_index_merge(t1, primary, t1a) */ * from t1 where id < 2 or a > 4; +set @@tidb_enable_collect_execution_info=0; +select /*+ use_index_merge(t1, primary, t1a) */ * from t1 where id < 2 or a > 4 order by a; +set @@tidb_enable_collect_execution_info=default; + +# TestIndexLookupRuntimeStats +drop table if exists t1; +create table t1 (a int, b int, index(a)); +insert into t1 values (1,2),(2,3),(3,4); +--replace_regex /.*time:.*loops:.*index_task:.*table_task: {total_time.*num.*concurrency.*}.*/.*time:.*loops:.*index_task:.*table_task: {total_time.*num.*concurrency.*}.*/ /.*time:.*loops:.*cop_task:.*/.*time:.*loops:.*cop_task:.*/ /[.0-9]+ KB/ KB/ /[0-9]+ Bytes/ Bytes/ +explain analyze select * from t1 use index(a) where a > 1; + +# TestHashAggRuntimeStats +drop table if exists t1; +create table t1 (a int, b int); +insert into t1 values (1,2),(2,3),(3,4); +--replace_regex /.*time:.*loops:.*partial_worker:{wall_time:.*concurrency:.*task_num:.*tot_wait:.*tot_exec:.*tot_time:.*max:.*p95:.*}.*final_worker:{wall_time:.*concurrency:.*task_num:.*tot_wait:.*tot_exec:.*tot_time:.*max:.*p95:.*}.*/.*time:.*loops:.*partial_worker:{wall_time:.*concurrency:.*task_num:.*tot_wait:.*tot_exec:.*tot_time:.*max:.*p95:.*}.*final_worker:{wall_time:.*concurrency:.*task_num:.*tot_wait:.*tot_exec:.*tot_time:.*max:.*p95:.*}.*/ /time:.*loops:.*cop_task.*/time.*loops.*cop_task.*/ /tikv_task:.*/tikv_task:.*/ /[.0-9]+ KB/ KB/ /[.0-9]+ Bytes/ Bytes/ +explain analyze SELECT /*+ HASH_AGG() */ count(*) FROM t1 WHERE a < 10; + +# TestSelectForUpdate +set global tidb_txn_mode=''; +drop table if exists t, t1; +create table t (c1 int, c2 int, c3 int); +insert t values (11, 2, 3); +insert t values (12, 2, 3); +insert t values (13, 2, 3); +create table t1 (c1 int); +insert t1 values (11); + +connect (conn1, localhost, root,, executor__executor); +begin; +select * from t where c1=11 for update; + +connect (conn2, localhost, root,, executor__executor); +begin; +update t set c2=211 where c1=11; +commit; + +connection conn1; +--replace_regex /txnStartTS.*reason/ reason/ +--error 9007 +commit; + +begin; +select * from t where exists(select null from t1 where t1.c1=t.c1) for update; + +connection conn2; +begin; +update t set c2=211 where c1=12; +commit; + +connection conn1; +commit; + +begin; +select * from t where c1=11 for update; + +connection conn2; +begin; +update t set c2=22 where c1=12; +commit; + +connection conn1; +commit; + +set @@autocommit=1; +select * from t where c1=11 for update; + +connection conn2; +begin; +update t set c2=211 where c1=11; +commit; + +connection conn1; +commit; + +begin; +--sorted_result +select * from (select * from t for update) t join t1 for update; + +connection conn2; +begin; +update t1 set c1 = 13; +commit; + +connection conn1; +--replace_regex /txnStartTS.*reason/ reason/ +--error 9007 +commit; + +disconnect conn1; +disconnect conn2; +set global tidb_txn_mode=pessimistic; + +# TestSelectForUpdateOf +drop table if exists t, t1; +create table t (i int); +create table t1 (i int); +insert t values (1); +insert t1 values (1); +begin pessimistic; +select * from t, t1 where t.i = t1.i for update of t; + +connect (conn1, localhost, root,, executor__executor); +begin pessimistic; +select * from t1 for update; +--error 3572 +select * from t for update nowait; + +connection default; +rollback; + +connection conn1; +select * from t for update nowait; +rollback; +disconnect conn1; + +# TestForSelectScopeInUnion +set session tidb_txn_mode=''; +# A union B for update, the "for update" option belongs to union statement, so +# it should works on both A and B. +drop table if exists t; +create table t(a int); +insert into t values (1); +begin; +select 1 as a union select a from t for update; + +connect (conn1, localhost, root,, executor__executor); +set session tidb_txn_mode=''; +update t set a = a + 1; + +connection default; +## As tk1 use select 'for update', it should detect conflict and fail. +--replace_regex /txnStartTS.*reason/ reason/ +--error 9007 +commit; + +begin; +--sorted_result +select 1 as a union select a from t limit 5 for update; +select 1 as a union select a from t order by a for update; + +connection conn1; +update t set a = a + 1; + +connection default; +--replace_regex /txnStartTS.*reason/ reason/ +--error 9007 +commit; + +disconnect conn1; +set session tidb_txn_mode=pessimistic; + +# TestAdminShowDDLJobsRowCount +# https://github.com/pingcap/tidb/issues/25968 +drop table if exists t; +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 +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 +admin show ddl jobs 1; + +# TestSummaryFailedUpdate +drop table if exists t; +create table t(a int, b int as(-a)); +insert into t(a) values(1), (3), (7); +SET GLOBAL tidb_mem_oom_action='CANCEL'; +set @@tidb_mem_quota_query=1; +--replace_regex /conn=[0-9]+/conn=/ +--error 8175 +update t set t.a = t.a - 1 where t.a in (select a from t where a < 4); +set @@tidb_mem_quota_query=1000000000; +select stmt_type from information_schema.statements_summary where digest_text = 'update `t` set `t` . `a` = `t` . `a` - ? where `t` . `a` in ( select `a` from `t` where `a` < ? )'; + +set @@tidb_mem_quota_query=default; +set global tidb_mem_oom_action=default; diff --git a/tests/integrationtest/t/executor/foreign_key.test b/tests/integrationtest/t/executor/foreign_key.test index 704de1620b5a8..46b274f662f30 100644 --- a/tests/integrationtest/t/executor/foreign_key.test +++ b/tests/integrationtest/t/executor/foreign_key.test @@ -301,6 +301,7 @@ select * from t1; select * from t2; set @@time_zone=default; set @@foreign_key_checks=default; +drop table t1, t2; # TestForeignKeyIssue44848 set @@foreign_key_checks=1; @@ -312,3 +313,37 @@ insert a(id,b_id) values(1,1); update b set id=1,f=2 where id=1; set @@foreign_key_checks=default; drop table if exists a, b; + +# TestForeignKeyAndMemoryTracker +drop table if exists t1; +set @@foreign_key_checks=1; +create table t1 (id int auto_increment key, pid int, name varchar(200), index(pid)); +insert into t1 (name) values ('abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz'); +insert into t1 (name) select name from t1; +insert into t1 (name) select name from t1; +insert into t1 (name) select name from t1; +insert into t1 (name) select name from t1; +insert into t1 (name) select name from t1; +insert into t1 (name) select name from t1; +insert into t1 (name) select name from t1; +insert into t1 (name) select name from t1; +select count(*) from t1; +update t1 set pid=1 where id>1; +alter table t1 add foreign key (pid) references t1 (id) on update cascade; +select sum(id) from t1; +SET GLOBAL tidb_mem_oom_action='CANCEL'; +set @@tidb_mem_quota_query=40960; +-- replace_regex /conn=[0-9]+/conn=/ +-- error 8175 +update t1 set id=id+100000 where id=1; +select id,pid from t1 where id = 1; +set @@foreign_key_checks=0; +## After disable foreign_key_checks, following DML will execute successful. +update t1 set id=id+100000 where id=1; +select id,pid from t1 where id<3 or pid is null order by id; + +SET GLOBAL tidb_mem_oom_action = DEFAULT; +set @@tidb_mem_quota_query=DEFAULT; +set @@foreign_key_checks=DEFAULT; + + diff --git a/tests/integrationtest/t/executor/index_merge_reader.test b/tests/integrationtest/t/executor/index_merge_reader.test index ed95c7f216e73..922fff1e7d08a 100644 --- a/tests/integrationtest/t/executor/index_merge_reader.test +++ b/tests/integrationtest/t/executor/index_merge_reader.test @@ -274,3 +274,16 @@ explain select /*+ USE_INDEX_MERGE(t, idx1, idx2) */ * from t where a = 1 or b = select /*+ USE_INDEX_MERGE(t, idx1, idx2) */ * from t where a = 1 or b = 1 order by c desc limit 2; rollback; +# TestIntersectionMemQuota +drop table if exists t1; +create table t1(pk varchar(100) primary key, c1 int, c2 int, index idx1(c1), index idx2(c2)); +insert into t1 values('TXwuGSfZfrgVbTksgvQBilqiUXlNEXzyXNqWRTCidzXFbrkpGFJalRMdVGQOAOojditwludthMcitNqNtvirGAudSNBtdIkpJIHQ', 1, 1), ('LSiKhgTNnuyjdBtuKKuRgzrcxbHrIlfxSkEuooaPYwfOBVQfNYAyatHiWvmUWRUvBLvXmpqAJUWRXXHFCLCjuJqFbVxQdUxqRuqW', 1, 1), ('qCOSFbvtmansHENQaAQbnyYOwCTPctlejpbpueHbtzskmPOazrMWdcMLaYjyfxYQUgDDjCnAnnExepNqwYIzHVjNVndlOzFaAOcf', 1, 1), ('qBqdtPyXIqLKynGNHnRlrufuUCZPqhxUYEqIrYERnQdqXRjVWcoYclxYXoqdpQboKydzhOHOWBwtmcXzGwCWQVdbpozvIaXxiBQj', 1, 1), ('TXZlGHnXOiSWGyRafAqworFmxuadHRTHcYyzLqZMzIMGUUBQmgiIJKQOqbHhoPEKbYBgfPDZJwwqgnCbMxZKaZfvGyVRRUOgRhoq', 1, 1), ('SwFEtKDfPDQpsyxTdTruPyNDLvEOLRdQtSttxJmgBuZiVKsflHCDZaGvkLHMqhHqLayfbZFrxUHzWHgfoPFCWCdCHScabWRNCHCL', 1, 1), ('BuZhnsTMGNtMJtrjjdMMrguutSpiLnZNCdgiNkWDPymzIymcujjBtsnKCAVRSErvbzPaOwLTTPWkGmbXltqOJXmkXnSWWlWaaBqe', 1, 1), ('LuJCpJrLUwDJutwBDtGEsGduteBWPHeGLVhmVJYVrmjunKNuplEeWDCMIAxHPoiRmdPnXneQEQWRvJkPBoXOPaGZhhFLFgGraLmH', 1, 1), ('JKJwMlPmymduJWOmKLFBmZyCFrcUvKcGQkzJmzGjuFoZweyCBptswEPHTkaIhWEEBMWzNBawtfYKKAugBNlxcwmpJSfuIAUSIxeG', 1, 1), ('IqQbehKwleoSUnwxrVLKSbzRqlEFfkwQtRtIfaVpEGfESyGjDJeAOWQPRYVQYvlPNPROQEraCqwQTzanPSrsnUvEXHSxcYjUJvzk', 1, 1), ('zNHmiBGCLUUEDgMAeIGuTgNJFPBtePpxcQrQlgnRlvosJfeYbhRfJdfMwXIRlXxVoOowhEvPhMQPlplzkUfjjmzdJKwGATvfDAiT', 1, 1), ('OjQvpfdsHSdZUAmGfmtQaYKYONAFHGNLeLKRYECqshxygiOzfKkqRwSYGgClqqnpHqPMZpqsjIYSalziqSfMbbtmmzxkOVgglVOh', 1, 1), ('dXXZaWDwdfhjIysLTNMSfwvoEBJhWOVpJnfXFofWSWMfMbUlRgAkobxoCxXPXNUWzAQczbQclQpvIvvATHHcQgdXUvwSTHqLXZny', 1, 1), ('haPqYVwFNUkedfIKPOPyUxIvbSkaUbsEWNvnDtXZsQQqafIhDXlajYpuXOSYiOwGJYAMVLUvXfwOIuyHKElzJHpOUdCiQiXRHubI', 1, 1), ('nQzOwSsVBjCpehVVmLeyYwyVEwYGAfkhCtkkaKyiXzYCRPRVZpNVnOXGbuWrQEgTuPEPFPApUaYLdCtyBEQulFEwyHlORrMfIJxr', 1, 1), ('ksGDopwNPvpjeCtAMaTrznDSgCLpRDQoCdsahWSjwumVEJITbNBPAAtkoxHuwmNQsryoILqCPBPiUSxAWjnFEdtxDIgEtqDiFvpO', 1, 1), ('AdWEZYzxCMhfcZseNVmNQpyqJrVKcKaZpKKcwZXfDPeIBMzkLzpJpOenidMBtBPBIbaiqfpSxBnGtRHAksBOgpigQTVomZzJhCFb', 1, 1), ('bVMNkLOAuRHqnCtGvVPLvmVSKihYFotmHTjObiAIARHawZTruAabGpFxeYxYTTFRxteFYyBfkBfiSEIFvOPquDnlVRNUUubssEMz', 1, 1), ('kXmcjqMYzGxvHBRRCovSTWavDnVajKLlxguJgniJeNkWQUxjHjYjBsveLfojybWkbqHBVzrOoqgXFrDnnRJPcybmnuAEUTPUoIjO', 1, 1), ('rVXzZDKudOpWCBuRCoQCpukHxenZnsaptDeJCCFzxMVvNucFwLKIiSceLsqUHHQuEfAIygjQCCkIbfInGthSnoLdNGWbsLDsxnrY', 1, 1); +explain format='brief' select /*+ use_index_merge(t1, primary, idx1, idx2) */ c1 from t1 where c1 < 1024 and c2 < 1024; +set global tidb_mem_oom_action='CANCEL'; +set @@tidb_mem_quota_query = 4000; +-- replace_regex /conn=[0-9]+/conn=/ +-- error 8175 +select /*+ use_index_merge(t1, primary, idx1, idx2) */ c1 from t1 where c1 < 1024 and c2 < 1024; +set global tidb_mem_oom_action = DEFAULT; +set @@tidb_mem_quota_query = default; + diff --git a/tests/integrationtest/t/executor/insert.test b/tests/integrationtest/t/executor/insert.test index 15bae116746ab..8d241c2a5d7e6 100644 --- a/tests/integrationtest/t/executor/insert.test +++ b/tests/integrationtest/t/executor/insert.test @@ -967,3 +967,651 @@ commit; disconnect conn1; set global tidb_disable_txn_auto_retry=default; + +# TestIssue38950 +drop table if exists t; +create table t (id smallint auto_increment primary key); +alter table t add column c1 int default 1; +--enable_info +insert ignore into t(id) values (194626268); +--disable_info +select * from t; +--enable_info +insert ignore into t(id) values ('*') on duplicate key update c1 = 2; +--disable_info +select * from t; + +# TestInsertIgnoreOnDup +drop table if exists t; +create table t (i int not null primary key, j int unique key); +--enable_info +insert into t values (1, 1), (2, 2); +insert ignore into t values(1, 1) on duplicate key update i = 2; +--disable_info +select * from t; +--enable_info +insert ignore into t values(1, 1) on duplicate key update j = 2; +--disable_info +select * from t; + +drop table if exists t2; +create table t2(`col_25` set('Alice','Bob','Charlie','David') NOT NULL,`col_26` date NOT NULL DEFAULT '2016-04-15', PRIMARY KEY (`col_26`) clustered, UNIQUE KEY `idx_9` (`col_25`,`col_26`),UNIQUE KEY `idx_10` (`col_25`)); +insert into t2(col_25, col_26) values('Bob', '1989-03-23'),('Alice', '2023-11-24'), ('Charlie', '2023-12-05'); +insert ignore into t2 (col_25,col_26) values ( 'Bob','1977-11-23' ) on duplicate key update col_25 = 'Alice', col_26 = '2036-12-13'; +show warnings; +select * from t2; + +drop table if exists t4; +create table t4(id int primary key clustered, k int, v int, unique key uk1(k)); +insert into t4 values (1, 10, 100), (3, 30, 300); +insert ignore into t4 (id, k, v) values(1, 0, 0) on duplicate key update id = 2, k = 30; +show warnings; +select * from t4; + +drop table if exists t5; +create table t5(k1 varchar(100), k2 varchar(100), uk1 int, v int, primary key(k1, k2) clustered, unique key ukk1(uk1), unique key ukk2(v)); +insert into t5(k1, k2, uk1, v) values('1', '1', 1, '100'), ('1', '3', 2, '200'); +update ignore t5 set k2 = '2', uk1 = 2 where k1 = '1' and k2 = '1'; +show warnings; +select * from t5; + +drop table if exists t6; +create table t6 (a int, b int, c int, primary key(a, b) clustered, unique key idx_14(b), unique key idx_15(b), unique key idx_16(a, b)); +insert into t6 select 10, 10, 20; +insert ignore into t6 set a = 20, b = 10 on duplicate key update a = 100; +select * from t6; +insert ignore into t6 set a = 200, b= 10 on duplicate key update c = 1000; +select * from t6; + +# TestInsertAutoInc +drop table if exists insert_autoinc_test; +create table insert_autoinc_test (id int primary key auto_increment, c1 int); +insert into insert_autoinc_test(c1) values (1), (2); +begin; +select * from insert_autoinc_test; +commit; +begin; +insert into insert_autoinc_test(id, c1) values (5,5); +insert into insert_autoinc_test(c1) values (6); +commit; +begin; +select * from insert_autoinc_test; +commit; +begin; +insert into insert_autoinc_test(id, c1) values (3,3); +commit; +begin; +select * from insert_autoinc_test; +commit; +begin; +insert into insert_autoinc_test(c1) values (7); +commit; +begin; +select * from insert_autoinc_test; +commit; +drop table if exists insert_autoinc_test; + +## issue-962 +create table insert_autoinc_test (id int primary key auto_increment, c1 int); +insert into insert_autoinc_test(id, c1) values (0.3, 1); +select * from insert_autoinc_test; +insert into insert_autoinc_test(id, c1) values (-0.3, 2); +select * from insert_autoinc_test; +insert into insert_autoinc_test(id, c1) values (-3.3, 3); +select * from insert_autoinc_test; +insert into insert_autoinc_test(id, c1) values (4.3, 4); +select * from insert_autoinc_test; +insert into insert_autoinc_test(c1) values (5); +select * from insert_autoinc_test; +insert into insert_autoinc_test(id, c1) values (null, 6); +select * from insert_autoinc_test; +drop table if exists insert_autoinc_test; + +## SQL_MODE=NO_AUTO_VALUE_ON_ZERO +create table insert_autoinc_test (id int primary key auto_increment, c1 int); +insert into insert_autoinc_test(id, c1) values (5, 1); +select * from insert_autoinc_test; +insert into insert_autoinc_test(id, c1) values (0, 2); +select * from insert_autoinc_test; +insert into insert_autoinc_test(id, c1) values (0, 3); +select * from insert_autoinc_test; +set SQL_MODE=NO_AUTO_VALUE_ON_ZERO; +insert into insert_autoinc_test(id, c1) values (0, 4); +select * from insert_autoinc_test; +-- error 1062 +insert into insert_autoinc_test(id, c1) values (0, 5); +insert into insert_autoinc_test(c1) values (6); +select * from insert_autoinc_test; +insert into insert_autoinc_test(id, c1) values (null, 7); +select * from insert_autoinc_test; +set SQL_MODE=''; +insert into insert_autoinc_test(id, c1) values (0, 8); +select * from insert_autoinc_test; +insert into insert_autoinc_test(id, c1) values (null, 9); +select * from insert_autoinc_test; +set sql_mode = default; + +# TestInsert +drop table if exists insert_test; +create table insert_test (id int PRIMARY KEY AUTO_INCREMENT, c1 int, c2 int, c3 int default 1); +--enable_info +insert insert_test (c1) values (1),(2),(NULL); +--disable_info +begin; +-- error 1136 +insert insert_test (c1) values (); +rollback; +begin; +-- error 1136 +insert insert_test (c1, c2) values (1,2),(1); +rollback; +begin; +-- error 1054 +insert insert_test (xxx) values (3); +rollback; +begin; +-- error 1146 +insert insert_test_xxx (c1) values (); +rollback; +--enable_info +insert insert_test set c1 = 3; +--disable_info +begin; +-- error 1110 +insert insert_test set c1 = 4, c1 = 5; +rollback; +begin; +-- error 1054 +insert insert_test set xxx = 6; +rollback; + +drop table if exists insert_test_1, insert_test_2; +create table insert_test_1 (id int, c1 int); +--enable_info +insert insert_test_1 select id, c1 from insert_test; +--disable_info +create table insert_test_2 (id int, c1 int); +--enable_info +insert insert_test_1 select id, c1 from insert_test union select id * 10, c1 * 10 from insert_test; +--disable_info +begin; +-- error 1136 +insert insert_test_1 select c1 from insert_test; +rollback; +begin; +-- error 1136 +insert insert_test_1 values(default, default, default, default, default); +rollback; +select * from insert_test where id = 1; +--enable_info +insert into insert_test (id, c3) values (1, 2) on duplicate key update id=values(id), c2=10; +--disable_info +select * from insert_test where id = 1; +--enable_info +insert into insert_test (id, c2) values (1, 1) on duplicate key update insert_test.c2=10; +--disable_info +-- error 1054 +insert into insert_test (id, c2) values(1, 1) on duplicate key update t.c2 = 10; +--enable_info +INSERT INTO insert_test (id, c3) VALUES (1, 2) ON DUPLICATE KEY UPDATE c3=values(c3)+c3+3; +--disable_info +select * from insert_test where id = 1; +--enable_info +INSERT IGNORE INTO insert_test (id, c3) VALUES (1, 2) ON DUPLICATE KEY UPDATE c3=values(c3)+c3+3; +--disable_info +select * from insert_test where id = 1; + +drop table if exists insert_err; +create table insert_err (id int, c1 varchar(8)); +-- error 1406 +insert insert_err values (1, 'abcdabcdabcd'); +insert insert_err values (1, '你好,世界'); +create table TEST1 (ID INT NOT NULL, VALUE INT DEFAULT NULL, PRIMARY KEY (ID)); +--enable_info +INSERT INTO TEST1(id,value) VALUE(3,3) on DUPLICATE KEY UPDATE VALUE=4; +--disable_info + +drop table if exists t; +create table t (id int); +insert into t values(1); +update t t1 set id = (select count(*) + 1 from t t2 where t1.id = t2.id); +select * from t; + +## issue 3235 +drop table if exists t; +create table t(c decimal(5, 5)); +insert into t value(0); +-- error 1264 +insert into t value(1); + +drop table if exists t; +create table t(c binary(255)); +insert into t value(1); +select length(c) from t; + +drop table if exists t; +create table t(c varbinary(255)); +insert into t value(1); +select length(c) from t; + +## issue 3509 +drop table if exists t; +create table t(c int); +set @@time_zone = '+08:00'; +insert into t value(Unix_timestamp('2002-10-27 01:00')); +select * from t; +set @@time_zone = default; + +## issue 3832 +drop table if exists t1; +create table t1 (b char(0)); +insert into t1 values (""); + +## issue 3895 +DROP TABLE IF EXISTS t; +CREATE TABLE t(a DECIMAL(4,2)); +INSERT INTO t VALUES (1.000001); +SHOW WARNINGS; +INSERT INTO t VALUES (1.000000); +SHOW WARNINGS; + +## issue 4653 +DROP TABLE IF EXISTS t; +CREATE TABLE t(a datetime); +-- error 1292 +INSERT INTO t VALUES('2017-00-00'); +set sql_mode = ''; +INSERT INTO t VALUES('2017-00-00'); +SELECT * FROM t; +set sql_mode = 'strict_all_tables'; +SELECT * FROM t; +set sql_mode = default; + +drop table if exists test; +CREATE TABLE test(id int(10) UNSIGNED NOT NULL AUTO_INCREMENT, p int(10) UNSIGNED NOT NULL, PRIMARY KEY(p), KEY(id)); +insert into test(p) value(1); +select * from test; +select * from test use index (id) where id = 1; +insert into test values(NULL, 2); +select * from test use index (id) where id = 2; +insert into test values(2, 3); +select * from test use index (id) where id = 2; + +## issue 6360 +drop table if exists t; +create table t(a bigint unsigned); +set @@sql_mode = 'strict_all_tables'; +-- error 1264 +insert into t value (-1); +set @@sql_mode = ''; +insert into t value (-1); +show warnings; +insert into t select -1; +show warnings; +insert into t select cast(-1 as unsigned); +insert into t value (-1.111); +show warnings; +insert into t value ('-1.111'); +show warnings; +update t set a = -1 limit 1; +show warnings; +select * from t; +set @@sql_mode = default; + +# issue 6424 & issue 20207 +drop table if exists t; +create table t(a time(6)); +insert into t value('20070219173709.055870'), ('20070219173709.055'), ('20070219173709.055870123'); +select * from t; +truncate table t; +insert into t value(20070219173709.055870), (20070219173709.055), (20070219173709.055870123); +select * from t; +-- error 1292 +insert into t value(-20070219173709.055870); + +drop table if exists t; +set @@sql_mode=''; +create table t(a float unsigned, b double unsigned); +insert into t value(-1.1, -1.1), (-2.1, -2.1), (0, 0), (1.1, 1.1); +show warnings; +select * from t; +set @@sql_mode=default; + +## issue 7061 +drop table if exists t; +create table t(a int default 1, b int default 2); +insert into t values(default, default); +select * from t; +truncate table t; +insert into t values(default(b), default(a)); +select * from t; +truncate table t; +insert into t (b) values(default); +select * from t; +truncate table t; +insert into t (b) values(default(a)); +select * from t; + +drop view if exists v; +create view v as select * from t; +-- error 1105 +insert into v values(1,2); +-- error 1105 +replace into v values(1,2); +drop view v; + +drop sequence if exists seq; +create sequence seq; +-- error 1105 +insert into seq values(); +-- error 1105 +replace into seq values(); +drop sequence seq; + +## issue 22851 +drop table if exists t; +create table t(name varchar(255), b int, c int, primary key(name(2))); +insert into t(name, b) values("cha", 3); +-- error 1062 +insert into t(name, b) values("chb", 3); +insert into t(name, b) values("测试", 3); +-- error 1062 +insert into t(name, b) values("测试", 3); + +# TestInsertOnDup +drop table if exists t; +create table t (i int unique key); +--enable_info +insert into t values (1),(2); +--disable_info +select * from t; +--enable_info +insert into t values (1), (2) on duplicate key update i = values(i); +--disable_info +select * from t; +--enable_info +insert into t values (2), (3) on duplicate key update i = 3; +--disable_info +select * from t; + +drop table if exists t; +create table t (i int primary key, j int unique key); +--enable_info +insert into t values (-1, 1); +--disable_info +select * from t; +--enable_info +insert into t values (1, 1) on duplicate key update j = values(j); +--disable_info +select * from t; + +drop table if exists test; +create table test (i int primary key, j int unique); +begin; +insert into test values (1,1); +insert into test values (2,1) on duplicate key update i = -i, j = -j; +commit; +select * from test; +delete from test; +insert into test values (1, 1); +begin; +delete from test where i = 1; +insert into test values (2, 1) on duplicate key update i = -i, j = -j; +commit; +select * from test; +delete from test; +insert into test values (1, 1); +begin; +update test set i = 2, j = 2 where i = 1; +insert into test values (1, 3) on duplicate key update i = -i, j = -j; +insert into test values (2, 4) on duplicate key update i = -i, j = -j; +commit; +select * from test order by i; +delete from test; +begin; +insert into test values (1, 3), (1, 3) on duplicate key update i = values(i), j = values(j); +commit; +select * from test order by i; +create table tmp (id int auto_increment, code int, primary key(id, code)); +create table m (id int primary key auto_increment, code int unique); +insert tmp (code) values (1); +insert tmp (code) values (1); +set tidb_init_chunk_size=1; +insert m (code) select code from tmp on duplicate key update code = values(code); +select * from m; + +## The following two cases are used for guaranteeing the last_insert_id +## to be set as the value of on-duplicate-update assigned. +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 (f1 INT AUTO_INCREMENT PRIMARY KEY, +f2 VARCHAR(5) NOT NULL UNIQUE); +--enable_info +INSERT t1 (f2) VALUES ('test') ON DUPLICATE KEY UPDATE f1 = LAST_INSERT_ID(f1); +--disable_info +SELECT LAST_INSERT_ID(); +--enable_info +INSERT t1 (f2) VALUES ('test') ON DUPLICATE KEY UPDATE f1 = LAST_INSERT_ID(f1); +--disable_info +SELECT LAST_INSERT_ID(); + +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 (f1 INT AUTO_INCREMENT UNIQUE, +f2 VARCHAR(5) NOT NULL UNIQUE); +--enable_info +INSERT t1 (f2) VALUES ('test') ON DUPLICATE KEY UPDATE f1 = LAST_INSERT_ID(f1); +--disable_info +SELECT LAST_INSERT_ID(); +--enable_info +INSERT t1 (f2) VALUES ('test') ON DUPLICATE KEY UPDATE f1 = LAST_INSERT_ID(f1); +--disable_info +SELECT LAST_INSERT_ID(); +--enable_info +INSERT t1 (f2) VALUES ('test') ON DUPLICATE KEY UPDATE f1 = 2; +--disable_info +SELECT LAST_INSERT_ID(); + +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 (f1 INT); +--enable_info +INSERT t1 VALUES (1) ON DUPLICATE KEY UPDATE f1 = 1; +--disable_info +SELECT * FROM t1; + +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 (f1 INT PRIMARY KEY, f2 INT NOT NULL UNIQUE); +--enable_info +INSERT t1 VALUES (1, 1); +INSERT t1 VALUES (1, 1), (1, 1) ON DUPLICATE KEY UPDATE f1 = 2, f2 = 2; +--disable_info +SELECT * FROM t1 order by f1; +-- error 1048 +INSERT t1 VALUES (1, 1) ON DUPLICATE KEY UPDATE f2 = null; +--enable_info +INSERT IGNORE t1 VALUES (1, 1) ON DUPLICATE KEY UPDATE f2 = null; +--disable_info +show warnings; +SELECT * FROM t1 order by f1; + +SET sql_mode=''; +INSERT t1 VALUES (1, 1) ON DUPLICATE KEY UPDATE f2 = null; +show warnings; +SELECT * FROM t1 order by f1; +set sql_mode=default; + +set tidb_init_chunk_size=default; + + +# TestInsertOnDuplicateKey +drop table if exists t1, t2; +create table t1(a1 bigint primary key, b1 bigint); +create table t2(a2 bigint primary key, b2 bigint); +--enable_info +insert into t1 values(1, 100); +insert into t2 values(1, 200); +insert into t1 select a2, b2 from t2 on duplicate key update b1 = a2; +--disable_info +select * from t1; +--enable_info +insert into t1 select a2, b2 from t2 on duplicate key update b1 = b2; +--disable_info +select * from t1; +--enable_info +insert into t1 select a2, b2 from t2 on duplicate key update a1 = a2; +--disable_info +select * from t1; +--enable_info +insert into t1 select a2, b2 from t2 on duplicate key update b1 = 300; +--disable_info +select * from t1; +--enable_info +insert into t1 values(1, 1) on duplicate key update b1 = 400; +--disable_info +select * from t1; +--enable_info +insert into t1 select 1, 500 from t2 on duplicate key update b1 = 400; +--disable_info +select * from t1; + +drop table if exists t1, t2; +create table t1(a bigint primary key, b bigint); +create table t2(a bigint primary key, b bigint); +-- error 1054 +insert into t1 select * from t2 on duplicate key update c = t2.b; + +drop table if exists t1, t2; +create table t1(a bigint primary key, b bigint); +create table t2(a bigint primary key, b bigint); +-- error 1052 +insert into t1 select * from t2 on duplicate key update a = b; + +drop table if exists t1, t2; +create table t1(a bigint primary key, b bigint); +create table t2(a bigint primary key, b bigint); +-- error 1054 +insert into t1 select * from t2 on duplicate key update c = b; + +drop table if exists t1, t2; +create table t1(a1 bigint primary key, b1 bigint); +create table t2(a2 bigint primary key, b2 bigint); +-- error 1054 +insert into t1 select * from t2 on duplicate key update a1 = values(b2); + +drop table if exists t1, t2; +create table t1(a1 bigint primary key, b1 bigint); +create table t2(a2 bigint primary key, b2 bigint); +--enable_info +insert into t1 values(1, 100); +insert into t2 values(1, 200); +insert into t1 select * from t2 on duplicate key update b1 = values(b1) + b2; +--disable_info +select * from t1; +--enable_info +insert into t1 select * from t2 on duplicate key update b1 = values(b1) + b2; +--disable_info +select * from t1; + +drop table if exists t; +create table t(k1 bigint, k2 bigint, val bigint, primary key(k1, k2)); +--enable_info +insert into t (val, k1, k2) values (3, 1, 2); +--disable_info +select * from t; +--enable_info +insert into t (val, k1, k2) select c, a, b from (select 1 as a, 2 as b, 4 as c) tmp on duplicate key update val = tmp.c; +--disable_info +select * from t; + +drop table if exists t; +create table t(k1 double, k2 double, v double, primary key(k1, k2)); +--enable_info +insert into t (v, k1, k2) select c, a, b from (select "3" c, "1" a, "2" b) tmp on duplicate key update v=c; +--disable_info +select * from t; +--enable_info +insert into t (v, k1, k2) select c, a, b from (select "3" c, "1" a, "2" b) tmp on duplicate key update v=c; +--disable_info +select * from t; + +drop table if exists t1, t2; +create table t1(id int, a int, b int); +--enable_info +insert into t1 values (1, 1, 1); +insert into t1 values (2, 2, 1); +insert into t1 values (3, 3, 1); +--disable_info +create table t2(a int primary key, b int, unique(b)); +--enable_info +insert into t2 select a, b from t1 order by id on duplicate key update a=t1.a, b=t1.b; +--disable_info +select * from t2 order by a; + +drop table if exists t1, t2; +create table t1(id int, a int, b int); +--enable_info +insert into t1 values (1, 1, 1); +insert into t1 values (2, 1, 2); +insert into t1 values (3, 3, 1); +--disable_info +create table t2(a int primary key, b int, unique(b)); +--enable_info +insert into t2 select a, b from t1 order by id on duplicate key update a=t1.a, b=t1.b; +--disable_info +select * from t2 order by a; + +drop table if exists t1, t2; +create table t1(id int, a int, b int, c int); +--enable_info +insert into t1 values (1, 1, 1, 1); +insert into t1 values (2, 2, 1, 2); +insert into t1 values (3, 3, 2, 2); +insert into t1 values (4, 4, 2, 2); +--disable_info +create table t2(a int primary key, b int, c int, unique(b), unique(c)); +--enable_info +insert into t2 select a, b, c from t1 order by id on duplicate key update b=t2.b, c=t2.c; +--disable_info +select * from t2 order by a; + +drop table if exists t1; +create table t1(a int primary key, b int); +--enable_info +insert into t1 values(1,1),(2,2),(3,3),(4,4),(5,5); +insert into t1 values(4,14),(5,15),(6,16),(7,17),(8,18) on duplicate key update b=b+10; +--disable_info + +drop table if exists a, b; +create table a(x int primary key); +create table b(x int, y int); +--enable_info +insert into a values(1); +insert into b values(1, 2); +insert into a select x from b ON DUPLICATE KEY UPDATE a.x=b.y; +--disable_info +select * from a; + +--echo ## Test issue 28078. +--echo ## Use different types of columns so that there's likely to be error if the types mismatches. +drop table if exists a, b; +create table a(id int, a1 timestamp, a2 varchar(10), a3 float, unique(id)); +create table b(id int, b1 time, b2 varchar(10), b3 int); +--enable_info +insert into a values (1, '2022-01-04 07:02:04', 'a', 1.1), (2, '2022-01-04 07:02:05', 'b', 2.2); +insert into b values (2, '12:34:56', 'c', 10), (3, '01:23:45', 'd', 20); +insert into a (id) select id from b on duplicate key update a.a2 = b.b2, a.a3 = 3.3; +--disable_info +select * from a; +--enable_info +insert into a (id) select 4 from b where b3 = 20 on duplicate key update a.a3 = b.b3; +--disable_info +select * from a; +--enable_info +insert into a (a2, a3) select 'x', 1.2 from b on duplicate key update a.a2 = b.b3; +--disable_info +select * from a; + +--echo ## reproduce insert on duplicate key update bug under new row format. +drop table if exists t1; +create table t1(c1 decimal(6,4), primary key(c1)); +insert into t1 set c1 = 0.1; +insert into t1 set c1 = 0.1 on duplicate key update c1 = 1; +select * from t1 use index(primary); diff --git a/tests/integrationtest/t/executor/issues.test b/tests/integrationtest/t/executor/issues.test index 6b2d1b0d69677..c0b92997199ba 100644 --- a/tests/integrationtest/t/executor/issues.test +++ b/tests/integrationtest/t/executor/issues.test @@ -611,7 +611,6 @@ CREATE TABLE trade_history ( CONSTRAINT fk_trade_history_t FOREIGN KEY (th_t_id) REFERENCES trade (t_id), CONSTRAINT fk_trade_history_st FOREIGN KEY (th_st_id) REFERENCES status_type (st_id) ); -; CREATE TABLE status_type ( st_id char(4) NOT NULL, st_name char(10) NOT NULL, @@ -621,3 +620,16 @@ CREATE TABLE status_type ( trace plan SELECT T_ID, T_S_SYMB, T_QTY, ST_NAME, TH_DTS FROM ( SELECT T_ID AS ID FROM TRADE WHERE T_CA_ID = 43000014236 ORDER BY T_DTS DESC LIMIT 10 ) T, TRADE, TRADE_HISTORY, STATUS_TYPE WHERE TRADE.T_ID = ID AND TRADE_HISTORY.TH_T_ID = TRADE.T_ID AND STATUS_TYPE.ST_ID = TRADE_HISTORY.TH_ST_ID ORDER BY TH_DTS DESC LIMIT 30; --enable_result_log set @@foreign_key_checks=default; + +# TestIssue48007 +drop table if exists partsupp, supplier, nation; +SET GLOBAL tidb_mem_oom_action='CANCEL'; +CREATE TABLE `partsupp` ( `PS_PARTKEY` bigint(20) NOT NULL,`PS_SUPPKEY` bigint(20) NOT NULL,`PS_AVAILQTY` bigint(20) NOT NULL,`PS_SUPPLYCOST` decimal(15,2) NOT NULL,`PS_COMMENT` varchar(199) NOT NULL,PRIMARY KEY (`PS_PARTKEY`,`PS_SUPPKEY`) /*T![clustered_index] CLUSTERED */) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; +CREATE TABLE `supplier` (`S_SUPPKEY` bigint(20) NOT NULL,`S_NAME` char(25) NOT NULL,`S_ADDRESS` varchar(40) NOT NULL,`S_NATIONKEY` bigint(20) NOT NULL,`S_PHONE` char(15) NOT NULL,`S_ACCTBAL` decimal(15,2) NOT NULL,`S_COMMENT` varchar(101) NOT NULL,PRIMARY KEY (`S_SUPPKEY`) /*T![clustered_index] CLUSTERED */) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; +CREATE TABLE `nation` (`N_NATIONKEY` bigint(20) NOT NULL,`N_NAME` char(25) NOT NULL,`N_REGIONKEY` bigint(20) NOT NULL,`N_COMMENT` varchar(152) DEFAULT NULL,PRIMARY KEY (`N_NATIONKEY`) /*T![clustered_index] CLUSTERED */) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; +set @@tidb_mem_quota_query=128; +-- replace_regex /conn=[0-9]+/conn=/ +-- error 8175 +explain select ps_partkey, sum(ps_supplycost * ps_availqty) as value from partsupp, supplier, nation where ps_suppkey = s_suppkey and s_nationkey = n_nationkey and n_name = 'MOZAMBIQUE' group by ps_partkey having sum(ps_supplycost * ps_availqty) > ( select sum(ps_supplycost * ps_availqty) * 0.0001000000 from partsupp, supplier, nation where ps_suppkey = s_suppkey and s_nationkey = n_nationkey and n_name = 'MOZAMBIQUE' ) order by value desc; +SET GLOBAL tidb_mem_oom_action = DEFAULT; +set @@tidb_mem_quota_query=default; diff --git a/tests/integrationtest/t/executor/jointest/join.test b/tests/integrationtest/t/executor/jointest/join.test index 5baad7597a9c9..91cac6282d4da 100644 --- a/tests/integrationtest/t/executor/jointest/join.test +++ b/tests/integrationtest/t/executor/jointest/join.test @@ -1056,3 +1056,36 @@ set @@tidb_hash_join_concurrency=default; set @@tidb_hashagg_partial_concurrency=default; set @@tidb_hashagg_final_concurrency=default; +# TestCartesianJoinPanic +drop table if exists t; +create table t(a int); +insert into t values(1); +set tidb_mem_quota_query = 1 << 18; +set global tidb_mem_oom_action = 'CANCEL'; +set global tidb_enable_tmp_storage_on_oom = off; +insert into t select * from t; +insert into t select * from t; +insert into t select * from t; +insert into t select * from t; +insert into t select * from t; +insert into t select * from t; +insert into t select * from t; +insert into t select * from t; +-- replace_regex /conn=[0-9]+/conn=/ +-- error 8175 +desc analyze select * from t t1, t t2, t t3, t t4, t t5, t t6; + +set tidb_mem_quota_query = default; +set global tidb_mem_oom_action = default; +set global tidb_enable_tmp_storage_on_oom = default; + +# TestJoinInDisk +SET GLOBAL tidb_mem_oom_action='LOG'; +## TODO(fengliyuan): how to ensure that it is using disk really? +set @@tidb_mem_quota_query=1; +drop table if exists t, t1; +create table t(c1 int, c2 int); +create table t1(c1 int, c2 int); +insert into t values(1,1),(2,2); +insert into t1 values(2,3),(4,4); +select /*+ TIDB_HJ(t, t2) */ * from t, t1 where t.c1 = t1.c1; diff --git a/tests/integrationtest/t/executor/partition/write.test b/tests/integrationtest/t/executor/partition/write.test new file mode 100644 index 0000000000000..6eb3724786d05 --- /dev/null +++ b/tests/integrationtest/t/executor/partition/write.test @@ -0,0 +1,604 @@ +--echo # TestWriteListPartitionTable2 +--echo # test for write list partition when the partition expression is complicated and contain generated column. +set @@session.tidb_enable_list_partition = ON; +drop table if exists t; +create table t (id int, name varchar(10),b int generated always as (length(name)+1) virtual) + partition by list (id*2 + b*b + b*b - b*b*2 - abs(id)) ( + partition p0 values in (3,5,6,9,17), + partition p1 values in (1,2,10,11,19,20), + partition p2 values in (4,12,13,14,18), + partition p3 values in (7,8,15,16,null) +); + +analyze table t; + +--echo ## Test add unique index failed. +insert into t (id,name) values (1, 'a'),(1,'b'); +--error 1062 +alter table t add unique index idx (id,b); +--echo ## Test add unique index success. +delete from t where name='b'; +alter table t add unique index idx (id,b); + +--echo ## --------------------------Test insert--------------------------- +--echo ## Test insert 1 partition. +delete from t; +insert into t (id,name) values (1, 'a'),(2,'b'),(10,'c'); +select id,name from t partition(p1) order by id; +--echo ## Test insert multi-partitions. +delete from t; +insert into t (id,name) values (1, 'a'),(3,'c'),(4,'e'); +select id,name from t partition(p0) order by id; +select id,name from t partition(p1) order by id; +select id,name from t partition(p2) order by id; +select id,name from t partition(p3) order by id; +--echo ## Test insert on duplicate. +insert into t (id,name) values (1, 'd'), (3,'f'),(5,'g') on duplicate key update name='x'; +select id,name from t partition(p0) order by id; +select id,name from t partition(p1) order by id; +select id,name from t partition(p2) order by id; +select id,name from t partition(p3) order by id; +--echo ## Test insert on duplicate error +--error 1062 +insert into t (id,name) values (3, 'a'), (11,'x') on duplicate key update id=id+1; +select id,name from t order by id; +--echo ## Test insert ignore with duplicate +insert ignore into t (id,name) values (1, 'b'), (5,'a'),(null,'y'); +show warnings; +select id,name from t partition(p0) order by id; +select id,name from t partition(p1) order by id; +select id,name from t partition(p2) order by id; +select id,name from t partition(p3) order by id; +--echo ## Test insert ignore without duplicate +insert ignore into t (id,name) values (15, 'a'),(17,'a'); +select id,name from t partition(p0,p1,p2) order by id; +select id,name from t partition(p3) order by id; +--echo ## Test insert meet no partition error. +--error 1526 +insert into t (id,name) values (100, 'd'); + +--echo ## --------------------------Test update--------------------------- +--echo ## Test update 1 partition. +delete from t; +insert into t (id,name) values (1, 'a'),(2,'b'),(3,'c'); +update t set name='b' where id=2;; +select id,name from t partition(p1); +update t set name='x' where id in (1,2); +select id,name from t partition(p1); +update t set name='y' where id < 3; +select id,name from t order by id; +--echo ## Test update meet duplicate error. +--error 1062 +update t set id=2 where id = 1; +select id,name from t order by id; + +--echo ## Test update multi-partitions +update t set name='z' where id in (1,2,3);; +select id,name from t order by id; +update t set name='a' limit 3; +select id,name from t order by id; +update t set id=id*10 where id in (1,2); +select id,name from t order by id; +--echo ## Test update meet duplicate error. +--error 1062 +update t set id=id+17 where id in (3,10); +select id,name from t order by id; +--echo ## Test update meet no partition error. +--error 1526 +update t set id=id*2 where id in (3,20); +select id,name from t order by id; + +--echo ## --------------------------Test replace--------------------------- +--echo ## Test replace 1 partition. +delete from t; +replace into t (id,name) values (1, 'a'),(2,'b'); +select id,name from t order by id; +--echo ## Test replace multi-partitions. +replace into t (id,name) values (3, 'c'),(4,'d'),(7,'f'); +select id,name from t partition(p0) order by id; +select id,name from t partition(p1) order by id; +select id,name from t partition(p2) order by id; +select id,name from t partition(p3) order by id; +--echo ## Test replace on duplicate. +replace into t (id,name) values (1, 'x'),(7,'x'); +select id,name from t order by id; +--echo ## Test replace meet no partition error. +--error 1526 +replace into t (id,name) values (10,'x'),(50,'x'); +select id,name from t order by id; + +--echo ## --------------------------Test delete--------------------------- +--echo ## Test delete 1 partition. +delete from t where id = 3; +select id,name from t partition(p0) order by id; +delete from t where id in (1,2); +select id,name from t partition(p1) order by id; +--echo ## Test delete multi-partitions. +delete from t where id in (4,7,10,11); +select id,name from t; +insert into t (id,name) values (3, 'c'),(4,'d'),(7,'f'); +delete from t where id < 10; +select id,name from t; +insert into t (id,name) values (3, 'c'),(4,'d'),(7,'f'); +delete from t limit 3; +select id,name from t; +set @@session.tidb_enable_list_partition = default; + +--echo # TestWriteListColumnsPartitionTable1 +set @@session.tidb_enable_list_partition = ON; + +drop table if exists t; +create table t (id int, name varchar(10)) partition by list columns (id) ( + partition p0 values in (3,5,6,9,17), + partition p1 values in (1,2,10,11,19,20), + partition p2 values in (4,12,13,14,18), + partition p3 values in (7,8,15,16,null) +); + +analyze table t; + +--echo ## Test add unique index failed. +insert into t values (1, 'a'),(1,'b'); +--error 1062 +alter table t add unique index idx (id); +--echo ## Test add unique index success. +delete from t where name='b'; +alter table t add unique index idx (id); + +--echo ## --------------------------Test insert--------------------------- +--echo ## Test insert 1 partition. +delete from t; +insert into t values (1, 'a'),(2,'b'),(10,'c'); +select * from t partition(p1) order by id; +--echo ## Test insert multi-partitions. +delete from t; +insert into t values (1, 'a'),(3,'c'),(4,'e'); +select * from t partition(p0) order by id; +select * from t partition(p1) order by id; +select * from t partition(p2) order by id; +select * from t partition(p3) order by id; +--echo ## Test insert on duplicate. +insert into t values (1, 'd'), (3,'f'),(5,'g') on duplicate key update name='x'; +select * from t partition(p0) order by id; +select * from t partition(p1) order by id; +select * from t partition(p2) order by id; +select * from t partition(p3) order by id; +--echo ## Test insert on duplicate error +--error 1062 +insert into t values (3, 'a'), (11,'x') on duplicate key update id=id+1; +select * from t order by id; +--echo ## Test insert ignore with duplicate +insert ignore into t values (1, 'b'), (5,'a'),(null,'y'); +show warnings; +select * from t partition(p0) order by id; +select * from t partition(p1) order by id; +select * from t partition(p2) order by id; +select * from t partition(p3) order by id; +--echo ## Test insert ignore without duplicate +insert ignore into t values (15, 'a'),(17,'a'); +select * from t partition(p0,p1,p2) order by id; +select * from t partition(p3) order by id; +--echo ## Test insert meet no partition error. +--error 1526 +insert into t values (100, 'd'); + +--echo ## --------------------------Test update--------------------------- +--echo ## Test update 1 partition. +delete from t; +insert into t values (1, 'a'),(2,'b'),(3,'c'); +update t set name='b' where id=2;; +select * from t partition(p1); +update t set name='x' where id in (1,2); +select * from t partition(p1); +update t set name='y' where id < 3; +select * from t order by id; +--echo ## Test update meet duplicate error. +--error 1062 +update t set id=2 where id = 1; +select * from t order by id; + +--echo ## Test update multi-partitions +update t set name='z' where id in (1,2,3);; +select * from t order by id; +update t set name='a' limit 3; +select * from t order by id; +update t set id=id*10 where id in (1,2); +select * from t order by id; +--echo ## Test update meet duplicate error. +--error 1062 +update t set id=id+17 where id in (3,10); +select * from t order by id; +--echo ## Test update meet no partition error. +--error 1526 +update t set id=id*2 where id in (3,20); +select * from t order by id; + +--echo ## --------------------------Test replace--------------------------- +--echo ## Test replace 1 partition. +delete from t; +replace into t values (1, 'a'),(2,'b'); +select * from t order by id; +--echo ## Test replace multi-partitions. +replace into t values (3, 'c'),(4,'d'),(7,'f'); +select * from t partition(p0) order by id; +select * from t partition(p1) order by id; +select * from t partition(p2) order by id; +select * from t partition(p3) order by id; +--echo ## Test replace on duplicate. +replace into t values (1, 'x'),(7,'x'); +select * from t order by id; +--echo ## Test replace meet no partition error. +--error 1526 +replace into t values (10,'x'),(100,'x'); +select * from t order by id; + +--echo ## --------------------------Test delete--------------------------- +--echo ## Test delete 1 partition. +delete from t where id = 3; +select * from t partition(p0) order by id; +delete from t where id in (1,2); +select * from t partition(p1) order by id; +--echo ## Test delete multi-partitions. +delete from t where id in (4,7,10,11); +select * from t; +insert into t values (3, 'c'),(4,'d'),(7,'f'); +delete from t where id < 10; +select * from t; +insert into t values (3, 'c'),(4,'d'),(7,'f'); +delete from t limit 3; +select * from t; + +set @@session.tidb_enable_list_partition = default; + + +# TestPartitionedTableReplace +set tidb_opt_fix_control = "44262:ON"; +drop table if exists replace_test; +create table replace_test (id int PRIMARY KEY AUTO_INCREMENT, c1 int, c2 int, c3 int default 1) + partition by range (id) ( + PARTITION p0 VALUES LESS THAN (3), + PARTITION p1 VALUES LESS THAN (5), + PARTITION p2 VALUES LESS THAN (7), + PARTITION p3 VALUES LESS THAN (9)); +--enable_info +replace replace_test (c1) values (1),(2),(NULL); +--disable_info +begin; +-- error 1136 +replace replace_test (c1) values (); +rollback; +begin; +-- error 1136 +replace replace_test (c1, c2) values (1,2),(1); +rollback; +begin; +-- error 1054 +replace replace_test (xxx) values (3); +rollback; +begin; +-- error 1146 +replace replace_test_xxx (c1) values (); +rollback; +--enable_info +replace replace_test set c1 = 3; +--disable_info +begin; +-- error 1110 +replace replace_test set c1 = 4, c1 = 5; +rollback; +begin; +-- error 1054 +replace replace_test set xxx = 6; +rollback; + +drop table if exists replace_test_1; +create table replace_test_1 (id int, c1 int) partition by range (id) ( + PARTITION p0 VALUES LESS THAN (4), + PARTITION p1 VALUES LESS THAN (6), + PARTITION p2 VALUES LESS THAN (8), + PARTITION p3 VALUES LESS THAN (10), + PARTITION p4 VALUES LESS THAN (100)); +--enable_info +replace replace_test_1 select id, c1 from replace_test; +--disable_info + +drop table if exists replace_test_2; +create table replace_test_2 (id int, c1 int) partition by range (id) ( + PARTITION p0 VALUES LESS THAN (10), + PARTITION p1 VALUES LESS THAN (50), + PARTITION p2 VALUES LESS THAN (100), + PARTITION p3 VALUES LESS THAN (300)); +--enable_info +replace replace_test_2 select id, c1 from replace_test union select id * 10, c1 * 10 from replace_test; +--disable_info +begin; +-- error 1136 +replace replace_test_2 select c1 from replace_test; +rollback; + +drop table if exists replace_test_3; +create table replace_test_3 (c1 int, c2 int, UNIQUE INDEX (c2)) partition by range (c2) ( + PARTITION p0 VALUES LESS THAN (4), + PARTITION p1 VALUES LESS THAN (7), + PARTITION p2 VALUES LESS THAN (11)); +--enable_info +replace into replace_test_3 set c2=8; +replace into replace_test_3 set c2=8; +replace into replace_test_3 set c1=8, c2=8; +replace into replace_test_3 set c2=NULL; +replace into replace_test_3 set c2=NULL; +--disable_info + +drop table if exists replace_test_4; +create table replace_test_4 (c1 int, c2 int, c3 int, UNIQUE INDEX (c1, c2)) partition by range (c1) ( + PARTITION p0 VALUES LESS THAN (4), + PARTITION p1 VALUES LESS THAN (7), + PARTITION p2 VALUES LESS THAN (11)); +--enable_info +replace into replace_test_4 set c2=NULL; +replace into replace_test_4 set c2=NULL; +--disable_info + +drop table if exists replace_test_5; +create table replace_test_5 (c1 int, c2 int, c3 int, PRIMARY KEY (c1, c2)) partition by range (c2) ( + PARTITION p0 VALUES LESS THAN (4), + PARTITION p1 VALUES LESS THAN (7), + PARTITION p2 VALUES LESS THAN (11)); +--enable_info +replace into replace_test_5 set c1=1, c2=2; +replace into replace_test_5 set c1=1, c2=2; +--disable_info + +drop table if exists tIssue989; +CREATE TABLE tIssue989 (a int, b int, KEY(a), UNIQUE KEY(b)) partition by range (b) ( + PARTITION p1 VALUES LESS THAN (100), + PARTITION p2 VALUES LESS THAN (200)); +--enable_info +insert into tIssue989 (a, b) values (1, 2); +replace into tIssue989(a, b) values (111, 2); +--disable_info +select * from tIssue989; + +set tidb_opt_fix_control = default; + + +# TestPartitionedTableUpdate +set tidb_opt_fix_control = "44262:ON"; +drop table if exists t; +create table t (id int not null default 1, name varchar(255)) + PARTITION BY RANGE ( 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)); +insert INTO t VALUES (1, "hello"); +insert INTO t VALUES (7, "hello"); + +--echo ## update non partition column +--enable_info +UPDATE t SET name = "abc" where id > 0; +--disable_info +SELECT * from t order by id limit 2; + +--echo ## update partition column +--enable_info +update t set id = id + 1; +--disable_info +SELECT * from t order by id limit 2; + +--echo ## update partition column, old and new record locates on different partitions +--enable_info +update t set id = 20 where id = 8; +--disable_info +SELECT * from t order by id limit 2; + +--echo ## table option is auto-increment +drop table if exists t; +create table t (id int not null auto_increment, name varchar(255), primary key(id)) + PARTITION BY RANGE ( 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)); +insert into t(name) values ('aa'); +--enable_info +update t set id = 8 where name = 'aa'; +--disable_info +insert into t(name) values ('bb'); +select * from t; +-- error 1048 +update t set id = null where name = 'aa'; + +--echo ## Test that in a transaction, when a constraint failed in an update statement, the record is not inserted. +drop table if exists t; +create table t (id int, name int unique) + PARTITION BY RANGE ( name ) ( + PARTITION p0 VALUES LESS THAN (6), + PARTITION p1 VALUES LESS THAN (11), + PARTITION p2 VALUES LESS THAN (16), + PARTITION p3 VALUES LESS THAN (21)); +insert t values (1, 1), (2, 2); +-- error 1062 +update t set name = 1 where id = 2; +select * from t; + +--echo ## test update ignore for pimary key +drop table if exists t; +create table t(a bigint, primary key (a)) + PARTITION BY RANGE (a) ( + PARTITION p0 VALUES LESS THAN (6), + PARTITION p1 VALUES LESS THAN (11)); +insert into t values (5); +insert into t values (7); +update ignore t set a = 5 where a = 7; +SHOW WARNINGS; +select * from t order by a; + +--echo ## test update ignore for truncate as warning +update ignore t set a = 1 where a = (select '2a'); +SHOW WARNINGS; + +--echo ## test update ignore for unique key +drop table if exists t; +create table t(a bigint, unique key I_uniq (a)) + PARTITION BY RANGE (a) ( + PARTITION p0 VALUES LESS THAN (6), + PARTITION p1 VALUES LESS THAN (11)); +insert into t values (5); +insert into t values (7); +--enable_info +update ignore t set a = 5 where a = 7; +--disable_info +SHOW WARNINGS; +select * from t order by a; +set tidb_opt_fix_control = default; + + +# TestPartitionedTableDelete +drop table if exists t; +set tidb_opt_fix_control = "44262:ON"; +CREATE TABLE t (id int not null default 1, name varchar(255), index(id)) + PARTITION BY RANGE ( 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)); +insert into t values (1, "hello"),(2, "hello"),(3, "hello"),(4, "hello"),(5, "hello"),(6, "hello"),(7, "hello"),(8, "hello"),(9, "hello"),(10, "hello"),(11, "hello"),(12, "hello"),(13, "hello"),(14, "hello"),(15, "hello"),(16, "hello"),(17, "hello"),(18, "hello"),(19, "hello"),(20, "hello"); +--enable_info +delete from t where id = 2 limit 1; + +--echo ## Test delete with false condition +delete from t where 0; +--disable_info + +insert into t values (2, 'abc'); +--enable_info +delete from t where t.id = 2 limit 1; +--disable_info + +--echo ## Test delete ignore +insert into t values (2, 'abc'); +## TODO: https://github.com/pingcap/tidb/issues/48120 +--replace_regex /INTEGER/DOUBLE/ +-- error 1292 +delete from t where id = (select '2a'); +--enable_info +delete ignore from t where id = (select '2a'); +--disable_info +SHOW WARNINGS; + +--echo ## Test delete without using index, involve multiple partitions. +--enable_info +delete from t ignore index(id) where id >= 13 and id <= 17; +--disable_info + +admin check table t; +--enable_info +delete from t; +--disable_info + +--echo ## Fix that partitioned table should not use PointGetPlan. +drop table if exists t1; +create table t1 (c1 bigint, c2 bigint, c3 bigint, primary key(c1)) partition by range (c1) (partition p0 values less than (3440)); +insert into t1 values (379, 379, 379); +--enable_info +delete from t1 where c1 = 379; +--disable_info +drop table t1; + +set tidb_opt_fix_control=default; + + +# TestHashPartitionedTableReplace +set @@session.tidb_enable_table_partition = '1'; +drop table if exists replace_test; +create table replace_test (id int PRIMARY KEY AUTO_INCREMENT, c1 int, c2 int, c3 int default 1) + partition by hash(id) partitions 4; +replace replace_test (c1) values (1),(2),(NULL); +begin; +-- error 1136 +replace replace_test (c1) values (); +rollback; +begin; +-- error 1136 +replace replace_test (c1, c2) values (1,2),(1); +rollback; +begin; +-- error 1054 +replace replace_test (xxx) values (3); +rollback; +begin; +-- error 1146 +replace replace_test_xxx (c1) values (); +rollback; +begin; +-- error 1110 +replace replace_test set c1 = 4, c1 = 5; +rollback; +begin; +-- error 1054 +replace replace_test set xxx = 6; +rollback; +replace replace_test set c1 = 3; +replace replace_test set c1 = 4; +replace replace_test set c1 = 5; +replace replace_test set c1 = 6; +replace replace_test set c1 = 7; + +drop table if exists replace_test_1; +create table replace_test_1 (id int, c1 int) partition by hash(id) partitions 5; +replace replace_test_1 select id, c1 from replace_test; + +drop table if exists replace_test_2; +create table replace_test_2 (id int, c1 int) partition by hash(id) partitions 6; +replace replace_test_1 select id, c1 from replace_test union select id * 10, c1 * 10 from replace_test; +begin; +-- error 1136 +replace replace_test_1 select c1 from replace_test; +rollback; + +drop table if exists replace_test_3; +create table replace_test_3 (c1 int, c2 int, UNIQUE INDEX (c2)) partition by hash(c2) partitions 7; +replace into replace_test_3 set c2=8; +--enable_info +replace into replace_test_3 set c2=8; +replace into replace_test_3 set c1=8, c2=8; +--disable_info +replace into replace_test_3 set c2=NULL; +--enable_info +replace into replace_test_3 set c2=NULL; +--disable_info + +replace into replace_test_3 set c2=0; +replace into replace_test_3 set c2=1; +replace into replace_test_3 set c2=2; +replace into replace_test_3 set c2=3; +replace into replace_test_3 set c2=4; +replace into replace_test_3 set c2=5; +replace into replace_test_3 set c2=6; +replace into replace_test_3 set c2=7; +replace into replace_test_3 set c2=8; +replace into replace_test_3 set c2=9; +select count(*) from replace_test_3; + +drop table if exists replace_test_4; +create table replace_test_4 (c1 int, c2 int, c3 int, UNIQUE INDEX (c1, c2)) partition by hash(c1) partitions 8; +replace into replace_test_4 set c2=NULL; +--enable_info +replace into replace_test_4 set c2=NULL; +--disable_info + +drop table if exists replace_test_5; +create table replace_test_5 (c1 int, c2 int, c3 int, PRIMARY KEY (c1, c2)) partition by hash (c2) partitions 9; +replace into replace_test_5 set c1=1, c2=2; +--enable_info +replace into replace_test_5 set c1=1, c2=2; +--disable_info + +drop table if exists tIssue989; +CREATE TABLE tIssue989 (a int, b int, KEY(a), UNIQUE KEY(b)) partition by hash (b) partitions 10; +insert into tIssue989 (a, b) values (1, 2); +replace into tIssue989(a, b) values (111, 2); +select * from tIssue989; + +set @@session.tidb_enable_table_partition = default; diff --git a/tests/integrationtest/t/executor/point_get.test b/tests/integrationtest/t/executor/point_get.test index c9b97e7e0e58f..80cde93550a40 100644 --- a/tests/integrationtest/t/executor/point_get.test +++ b/tests/integrationtest/t/executor/point_get.test @@ -335,3 +335,25 @@ connection default; disconnect conn1; execute s; set @@tidb_enable_plan_replayer_capture=default; + +# TestForUpdateRetry +set session tidb_txn_mode=''; +drop table if exists t; +create table t(pk int primary key, c int); +insert into t values (1, 1), (2, 2); +set @@tidb_disable_txn_auto_retry = 0; +begin; +select * from t where pk = 1 for update; + +connect (conn1, localhost, root, , executor__point_get); +set session tidb_txn_mode=''; +update t set c = c + 1 where pk = 1; + +connection default; +update t set c = c + 1 where pk = 2; +--replace_regex /\[[0-9]+\]// +--error 8002 +commit; + +disconnect conn1; +set session tidb_txn_mode=pessimistic; diff --git a/tests/integrationtest/t/executor/simple.test b/tests/integrationtest/t/executor/simple.test index b1f99510e2b9b..5075371e0d362 100644 --- a/tests/integrationtest/t/executor/simple.test +++ b/tests/integrationtest/t/executor/simple.test @@ -453,3 +453,31 @@ select user_attributes from mysql.user where user = 'usr1'; set global tidb_enable_resource_control = default; disconnect conn1; + +# TestStmtAutoNewTxn +-- echo ## Some statements are like DDL, they commit the previous txn automically. +-- echo ## Fix issue https://github.com/pingcap/tidb/issues/10705 +begin; +create user 'xxx'@'%'; +grant all privileges on *.* to 'xxx'@'%'; +create table auto_new (id int); +begin; +insert into auto_new values (1); +revoke all privileges on *.* from 'xxx'@'%'; +-- echo ## insert statement has already committed +rollback; + +-- echo ## Test the behavior when autocommit is false. +select * from auto_new; +set autocommit = 0; +insert into auto_new values (2); +create user 'yyy'@'%'; +rollback; +select * from auto_new; + +drop user 'yyy'@'%'; +insert into auto_new values (3); +rollback; +select * from auto_new; + +set autocommit = default; diff --git a/tests/integrationtest/t/executor/stale_txn.test b/tests/integrationtest/t/executor/stale_txn.test index 0d11911ead762..77c0998c0aceb 100644 --- a/tests/integrationtest/t/executor/stale_txn.test +++ b/tests/integrationtest/t/executor/stale_txn.test @@ -32,3 +32,10 @@ set tidb_txn_mode = default; set tx_isolation = default; set autocommit = default; +# TestIssue33728 +drop table if exists t1; +create table t1 (id int primary key, v int); +--error 8135 +select * from t1 as of timestamp NULL; +--error 8135 +start transaction read only as of timestamp NULL; diff --git a/tests/integrationtest/t/executor/update.test b/tests/integrationtest/t/executor/update.test index 2eed96a2cd228..26989f69b92ce 100644 --- a/tests/integrationtest/t/executor/update.test +++ b/tests/integrationtest/t/executor/update.test @@ -266,3 +266,433 @@ update t1 set a='1000000000000000000' where id=2; select id, a from t1 order by id asc; set sql_mode=default; +# TestIssue21447 +drop table if exists t1; +create table t1(id int primary key, name varchar(40)); +insert into t1 values(1, 'abc'); + +begin pessimistic; + +connect (conn1, localhost, root,, executor__update); +begin pessimistic; +--enable_info +update t1 set name='xyz' where id=1; +--disable_info +select * from t1 where id = 1; +commit; +disconnect conn1; + +--enable_info +update t1 set name='xyz' where id=1; +--disable_info +select * from t1 where id = 1; +select * from t1 where id = 1 for update; +select * from t1 where id in (1, 2); +select * from t1 where id in (1, 2) for update; +commit; + +# TestUpdate +drop table if exists update_test; +create table update_test(id int not null default 1, name varchar(255), PRIMARY KEY(id)); +insert INTO update_test VALUES (1, "hello"); +insert into update_test values (2, "hello"); +--enable_info +UPDATE update_test SET name = "abc" where id > 0; +--disable_info + +## select data +begin; +SELECT * from update_test limit 2; +commit; + +--enable_info +UPDATE update_test SET name = "foo"; +--disable_info + +## table option is auto-increment +begin; +drop table if exists update_test; +commit; +begin; +create table update_test(id int not null auto_increment, name varchar(255), primary key(id)); +insert into update_test(name) values ('aa'); +--enable_info +update update_test set id = 8 where name = 'aa'; +--disable_info +insert into update_test(name) values ('bb'); +commit; +begin; +select * from update_test; +commit; +begin; +drop table if exists update_test; +commit; +begin; +create table update_test(id int not null auto_increment, name varchar(255), index(id)); +insert into update_test(name) values ('aa'); +-- error 1048 +update update_test set id = null where name = 'aa'; + +drop table update_test; +create table update_test(id int); +begin; +insert into update_test(id) values (1); +--enable_info +update update_test set id = 2 where id = 1 limit 1; +--disable_info +select * from update_test; +commit; + +## Test that in a transaction, when a constraint failed in an update statement, the record is not inserted. +drop table if exists update_unique; +create table update_unique (id int primary key, name int unique); +insert update_unique values (1, 1), (2, 2); +begin; +-- error 1062 +update update_unique set name = 1 where id = 2; +commit; +select * from update_unique; + +## test update ignore for pimary key +drop table if exists t; +create table t(a bigint, primary key (a)); +insert into t values (1); +insert into t values (2); +--enable_info +update ignore t set a = 1 where a = 2; +--disable_info +SHOW WARNINGS; +select * from t; + +## test update ignore for truncate as warning +update ignore t set a = 1 where a = (select '2a'); +SHOW WARNINGS; + +update ignore t set a = 42 where a = 2; +select * from t; + +## test update ignore for unique key +drop table if exists t; +create table t(a bigint, unique key I_uniq (a)); +insert into t values (1); +insert into t values (2); +--enable_info +update ignore t set a = 1 where a = 2; +--disable_info +SHOW WARNINGS; +select * from t; + +## test issue21965 +drop table if exists t; +set @@session.tidb_enable_list_partition = ON; +create table t (a int) partition by list (a) (partition p0 values in (0,1)); +analyze table t; +insert ignore into t values (1); +--enable_info +update ignore t set a=2 where a=1; +--disable_info +drop table if exists t; +create table t (a int key) partition by list (a) (partition p0 values in (0,1)); +insert ignore into t values (1); +--enable_info +update ignore t set a=2 where a=1; +--disable_info +set @@session.tidb_enable_list_partition = default; + +drop table if exists t; +create table t(id integer auto_increment, t1 datetime, t2 datetime, primary key (id)); +insert into t(t1, t2) values('2000-10-01 01:01:01', '2017-01-01 10:10:10'); +select * from t; +--enable_info +update t set t1 = '2017-10-01 10:10:11', t2 = date_add(t1, INTERVAL 10 MINUTE) where id = 1; +--disable_info +select * from t; + +## for issue #5132 +drop table if exists tt1; +CREATE TABLE `tt1` (`a` int(11) NOT NULL,`b` varchar(32) DEFAULT NULL,`c` varchar(32) DEFAULT NULL,PRIMARY KEY (`a`),UNIQUE KEY `b_idx` (`b`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; +insert into tt1 values(1, 'a', 'a'); +insert into tt1 values(2, 'd', 'b'); +select * from tt1; +--enable_info +update tt1 set a=5 where c='b'; +--disable_info +select * from tt1; + +## Automatic Updating for TIMESTAMP +drop table if exists tsup; +CREATE TABLE `tsup` (`a` int,`ts` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,KEY `idx` (`ts`)); +set @@sql_mode=''; +insert into tsup values(1, '0000-00-00 00:00:00'); +--enable_info +update tsup set a=5; +--disable_info +select t1.ts = t2.ts from (select ts from tsup use index (idx)) as t1, (select ts from tsup use index ()) as t2; +update tsup set ts='2019-01-01'; +select ts from tsup; +set @@sql_mode=default; + +## issue 5532 +drop table if exists decimals; +create table decimals (a decimal(20, 0) not null); +insert into decimals values (201); +## A warning rather than data truncated error. +--enable_info +update decimals set a = a + 1.23; +--disable_info +show warnings; +select * from decimals; + +drop table t; +CREATE TABLE `t` ( `c1` year DEFAULT NULL, `c2` year DEFAULT NULL, `c3` date DEFAULT NULL, `c4` datetime DEFAULT NULL, KEY `idx` (`c1`,`c2`)); +UPDATE t SET c2=16777215 WHERE c1>= -8388608 AND c1 < -9 ORDER BY c1 LIMIT 2; +-- error 1288 +update (select * from t) t set c1 = 1111111; + +## test update ignore for bad null error +drop table if exists t; +create table t (i int not null default 10); +insert into t values (1); +--enable_info +update ignore t set i = null; +--disable_info +SHOW WARNINGS; +select * from t; + +## issue 7237, update subquery table should be forbidden +drop table t; +create table t (k int, v int); +-- error 1288 +update t, (select * from t) as b set b.k = t.k; +update t, (select * from t) as b set t.k = b.k; + +## issue 8045 +drop table if exists t1; +CREATE TABLE t1 (c1 float); +INSERT INTO t1 SET c1 = 1; +--enable_info +UPDATE t1 SET c1 = 1.2 WHERE c1=1; +--disable_info + +## issue 8119 +drop table if exists t; +create table t (c1 float(1,1)); +insert into t values (0.0); +-- error 1264 +update t set c1 = 2.0; + +drop table if exists t; +create table t(a datetime not null, b datetime); +insert into t value('1999-12-12', '1999-12-13'); +set @@sql_mode=''; +select * from t; +update t set a = ''; +select * from t; +update t set b = ''; +select * from t; +set @@sql_mode=default; + +drop view if exists v; +create view v as select * from t; +-- error 1356 +update v set a = '2000-11-11'; +drop view v; + +drop sequence if exists seq; +create sequence seq; +-- error 1054 +update seq set minvalue=1; +drop sequence seq; + +drop table if exists t1, t2; +create table t1(a int, b int, c int, d int, e int, index idx(a)); +create table t2(a int, b int, c int); +update t1 join t2 on t1.a=t2.a set t1.a=1 where t2.b=1 and t2.c=2; + +## Assign `DEFAULT` in `UPDATE` statement +drop table if exists t1, t2; +create table t1 (a int default 1, b int default 2); +insert into t1 values (10, 10), (20, 20); +update t1 set a=default where b=10; +select * from t1; +update t1 set a=30, b=default where a=20; +select * from t1; +update t1 set a=default, b=default where a=30; +select * from t1; +insert into t1 values (40, 40); +update t1 set a=default, b=default; +select * from t1; +update t1 set a=default(b), b=default(a); +select * from t1; +## With generated columns +create table t2 (a int default 1, b int generated always as (-a) virtual, c int generated always as (-a) stored); +insert into t2 values (10, default, default), (20, default, default); +update t2 set b=default; +select * from t2; +update t2 set a=30, b=default where a=10; +select * from t2; +update t2 set c=default, a=40 where c=-20; +select * from t2; +update t2 set a=default, b=default, c=default where b=-30; +select * from t2; +update t2 set a=default(a), b=default, c=default; +select * from t2; +## Same as in MySQL 8.0.27, but still weird behavior: a=default(b) => NULL +update t2 set a=default(b), b=default, c=default; +select * from t2; +-- error 3105 +update t2 set b=default(a); +update t2 set a=default(a), c=default(c); +select * from t2; +## Same as in MySQL 8.0.27, but still weird behavior: a=default(b) => NULL +update t2 set a=default(b), b=default(b); +select * from t2; +update t2 set a=default(a), c=default(c); +select * from t2; +## Allowed in MySQL, but should probably not be allowed. +-- error 3105 +update t2 set a=default(a), c=default(a); +drop table t1, t2; + +# TestUpdateSelect +drop table if exists msg, detail; +create table msg (id varchar(8), b int, status int, primary key (id, b)); +insert msg values ('abc', 1, 1); +create table detail (id varchar(8), start varchar(8), status int, index idx_start(start)); +insert detail values ('abc', '123', 2); +--enable_info +UPDATE msg SET msg.status = (SELECT detail.status FROM detail WHERE msg.id = detail.id); +--disable_info +admin check table msg; + +# TestUpdateDelete +drop table if exists ttt; +CREATE TABLE ttt (id bigint(20) NOT NULL, host varchar(30) NOT NULL, PRIMARY KEY (id), UNIQUE KEY i_host (host)); +insert into ttt values (8,8),(9,9); +begin; +--enable_info +update ttt set id = 0, host='9' where id = 9 limit 1; +--disable_info +delete from ttt where id = 0 limit 1; +select * from ttt use index (i_host) order by host; +--enable_info +update ttt set id = 0, host='8' where id = 8 limit 1; +--disable_info +delete from ttt where id = 0 limit 1; +select * from ttt use index (i_host) order by host; +commit; +admin check table ttt; +drop table ttt; + +# TestUpdateAffectRowCnt +drop table if exists a; +create table a(id int auto_increment, a int default null, primary key(id)); +insert into a values (1, 1001), (2, 1001), (10001, 1), (3, 1); +--enable_info +update a set id = id*10 where a = 1001; +--disable_info +drop table a; +create table a ( a bigint, b bigint); +insert into a values (1, 1001), (2, 1001), (10001, 1), (3, 1); +--enable_info +update a set a = a*10 where b = 1001; +--disable_info + +# TestMultipleTableUpdate +drop table if exists items, month; +CREATE TABLE items (id int, price TEXT); +--enable_info +insert into items values (11, "items_price_11"), (12, "items_price_12"), (13, "items_price_13"); +--disable_info +CREATE TABLE month (mid int, mprice TEXT); +--enable_info +insert into month values (11, "month_price_11"), (22, "month_price_22"), (13, "month_price_13"); +UPDATE items, month SET items.price=month.mprice WHERE items.id=month.mid; +--disable_info +begin; +SELECT * FROM items; +commit; + +## Single-table syntax but with multiple tables +--enable_info +UPDATE items join month on items.id=month.mid SET items.price=month.mid; +--disable_info +begin; +SELECT * FROM items; +commit; + +## JoinTable with alias table name. +--enable_info +UPDATE items T0 join month T1 on T0.id=T1.mid SET T0.price=T1.mprice; +--disable_info +begin; +SELECT * FROM items; +commit; + +## fix https://github.com/pingcap/tidb/issues/369 +DROP TABLE IF EXISTS t1, t2; +create table t1 (c int); +create table t2 (c varchar(256)); +insert into t1 values (1), (2); +insert into t2 values ("a"), ("b"); +--enable_info +update t1, t2 set t1.c = 10, t2.c = "abc"; +--disable_info + +## fix https://github.com/pingcap/tidb/issues/376 +DROP TABLE IF EXISTS t1, t2; +create table t1 (c1 int); +create table t2 (c2 int); +insert into t1 values (1), (2); +insert into t2 values (1), (2); +--enable_info +update t1, t2 set t1.c1 = 10, t2.c2 = 2 where t2.c2 = 1; +--disable_info +select * from t1; + +## test https://github.com/pingcap/tidb/issues/3604 +drop table if exists t; +create table t (a int, b int); +--enable_info +insert into t values(1, 1), (2, 2), (3, 3); +update t m, t n set m.a = m.a + 1; +--disable_info +select * from t; +--enable_info +update t m, t n set n.a = n.a - 1, n.b = n.b + 1; +--disable_info +select * from t; + +# TestUpdateCastOnlyModifiedValues for issue #4514. +drop table if exists update_modified; +create table update_modified (col_1 int, col_2 enum('a', 'b')); +set SQL_MODE=''; +insert into update_modified values (0, 3); +SELECT * FROM update_modified; +set SQL_MODE=STRICT_ALL_TABLES; +--enable_info +update update_modified set col_1 = 1; +--disable_info +SELECT * FROM update_modified; +-- error 1265 +update update_modified set col_1 = 2, col_2 = 'c'; +SELECT * FROM update_modified; +--enable_info +update update_modified set col_1 = 3, col_2 = 'a'; +--disable_info +SELECT * FROM update_modified; + +## Test update a field with different column type. +drop table if exists update_with_diff_type; +CREATE TABLE update_with_diff_type (a int, b JSON); +INSERT INTO update_with_diff_type VALUES(3, '{"a": "测试"}'); +--enable_info +UPDATE update_with_diff_type SET a = '300'; +--disable_info +SELECT a FROM update_with_diff_type; +--enable_info +UPDATE update_with_diff_type SET b = '{"a": "\\u6d4b\\u8bd5"}'; +--disable_info +SELECT b FROM update_with_diff_type; +set SQL_MODE=default; + diff --git a/tests/integrationtest/t/executor/write.test b/tests/integrationtest/t/executor/write.test index 6ff53470eb9ff..a76250b25ab29 100644 --- a/tests/integrationtest/t/executor/write.test +++ b/tests/integrationtest/t/executor/write.test @@ -1216,3 +1216,137 @@ select b from t where a=1; set @@session.tidb_enable_list_partition = default; set @@allow_auto_random_explicit_insert = default; + + +# TestReplace +drop table if exists replace_test; +create table replace_test (id int PRIMARY KEY AUTO_INCREMENT, c1 int, c2 int, c3 int default 1); +--enable_info +replace replace_test (c1) values (1),(2),(NULL); +--disable_info +begin; +-- error 1136 +replace replace_test (c1) values (); +rollback; +begin; +-- error 1136 +replace replace_test (c1, c2) values (1,2),(1); +rollback; +begin; +-- error 1054 +replace replace_test (xxx) values (3); +rollback; +begin; +-- error 1146 +replace replace_test_xxx (c1) values (); +rollback; +--enable_info +replace replace_test set c1 = 3; +--disable_info +begin; +-- error 1110 +replace replace_test set c1 = 4, c1 = 5; +rollback; +begin; +-- error 1054 +replace replace_test set xxx = 6; +rollback; + +drop table if exists replace_test_1; +create table replace_test_1 (id int, c1 int); +--enable_info +replace replace_test_1 select id, c1 from replace_test; +--disable_info +begin; +-- error 1135 +replace replace_test_0 select c1 from replace_test; +rollback; + +create table replace_test_2 (id int, c1 int); +--enable_info +replace replace_test_1 select id, c1 from replace_test union select id * 10, c1 * 10 from replace_test; +--disable_info + +drop table if exists replace_test_3; +create table replace_test_3 (c1 int, c2 int, UNIQUE INDEX (c2)); +--enable_info +replace into replace_test_3 set c2=1; +replace into replace_test_3 set c2=1; +replace into replace_test_3 set c1=1, c2=1; +replace into replace_test_3 set c2=NULL; +replace into replace_test_3 set c2=NULL; +--disable_info + +drop table if exists replace_test_4; +create table replace_test_4 (c1 int, c2 int, c3 int, UNIQUE INDEX (c1, c2)); +--enable_info +replace into replace_test_4 set c2=NULL; +replace into replace_test_4 set c2=NULL; +--disable_info + +drop table if exists replace_test_5; +create table replace_test_5 (c1 int, c2 int, c3 int, PRIMARY KEY (c1, c2)); +--enable_info +replace into replace_test_5 set c1=1, c2=2; +replace into replace_test_5 set c1=1, c2=2; +--disable_info + +drop table if exists tIssue989; +CREATE TABLE tIssue989 (a int, b int, PRIMARY KEY(a), UNIQUE KEY(b)); +--enable_info +insert into tIssue989 (a, b) values (1, 2); +replace into tIssue989(a, b) values (111, 2); +--disable_info +select * from tIssue989; + +drop table if exists tIssue1012; +CREATE TABLE tIssue1012 (a int, b int, PRIMARY KEY(a), UNIQUE KEY(b)); +insert into tIssue1012 (a, b) values (1, 2); +insert into tIssue1012 (a, b) values (2, 1); +--enable_info +replace into tIssue1012(a, b) values (1, 1); +--disable_info +select * from tIssue1012; + +drop table if exists t1; +create table t1(a int primary key, b int); +insert into t1 values(1,1),(2,2),(3,3),(4,4),(5,5); +--enable_info +replace into t1 values(1,1); +replace into t1 values(1,1),(2,2); +replace into t1 values(4,14),(5,15),(6,16),(7,17),(8,18); +replace into t1 select * from (select 1, 2) as tmp; +--disable_info + +drop table if exists t1, t2; +create table t1 (a int primary key, b int default 20, c int default 30); +insert into t1 value (1, 2, 3); +replace t1 set a=1, b=default; +select * from t1; +replace t1 set a=2, b=default, c=default; +select * from t1; +replace t1 set a=2, b=default(c), c=default(b); +select * from t1; +replace t1 set a=default(b)+default(c); +select * from t1; +create table t2 (pk int primary key, a int default 1, b int generated always as (-a) virtual, c int generated always as (-a) stored); +replace t2 set pk=1, b=default; +select * from t2; +replace t2 set pk=2, a=10, b=default; +select * from t2; +replace t2 set pk=2, c=default, a=20; +select * from t2; +replace t2 set pk=2, a=default, b=default, c=default; +select * from t2; +replace t2 set pk=3, a=default(a), b=default, c=default; +select * from t2; +-- error 3105 +replace t2 set b=default(a); +-- error 3105 +replace t2 set a=default(b), b=default(b); +-- error 1364 +replace t2 set a=default(a), c=default(c); +-- error 3105 +replace t2 set c=default(a); +drop table t1, t2; + diff --git a/tests/integrationtest/t/expression/cast.test b/tests/integrationtest/t/expression/cast.test index 362f0032ef4dc..20929c52ddd52 100644 --- a/tests/integrationtest/t/expression/cast.test +++ b/tests/integrationtest/t/expression/cast.test @@ -55,3 +55,10 @@ update t1 set c1 = cast('61qw' as decimal); --enable_warnings select cast('61qw' as decimal); --disable_warnings + +# TestCastTimeAsYear +drop table if exists t; +create table t (y year); +insert into t values (cast('14:15' as time)); +select 1 from t where y = YEAR(CURDATE()); +select cast(cast('14:15' as time) as year) = YEAR(CURDATE()); diff --git a/tests/integrationtest/t/expression/multi_valued_index.test b/tests/integrationtest/t/expression/multi_valued_index.test new file mode 100644 index 0000000000000..a52bf2009ed0d --- /dev/null +++ b/tests/integrationtest/t/expression/multi_valued_index.test @@ -0,0 +1,513 @@ +# TestMultiValuedIndexDDL +drop table if exists t; +create table t(a json); +-- error 1235 +select cast(a as signed array) from t; +-- error 1235 +select json_extract(cast(a as signed array), '$[0]') from t; +-- error 1235 +select * from t where cast(a as signed array); +-- error 1235 +select cast('[1,2,3]' as unsigned array); +drop table t; +-- error 1235 +CREATE TABLE t(x INT, KEY k ((1 AND CAST(JSON_ARRAY(x) AS UNSIGNED ARRAY)))); +-- error 1235 +CREATE TABLE t1 (f1 json, key mvi((cast(cast(f1 as unsigned array) as unsigned array)))); +-- error 1235 +CREATE TABLE t1 (f1 json, primary key mvi((cast(cast(f1 as unsigned array) as unsigned array)))); +-- error 3146 +CREATE TABLE t1 (f1 json, key mvi((cast(f1->>'$[*]' as unsigned array)))); +-- error 1235 +CREATE TABLE t1 (f1 json, key mvi((cast(f1->'$[*]' as year array)))); +-- error 1235 +CREATE TABLE t1 (f1 json, key mvi((cast(f1->'$[*]' as json array)))); +-- error 1235 +CREATE TABLE t1 (f1 json, key mvi((cast(f1->'$[*]' as char(10) charset gbk array)))); +-- error 1235 +create table t(j json, gc json as ((concat(cast(j->'$[*]' as unsigned array),"x")))); +-- error 1235 +create table t(j json, gc json as (cast(j->'$[*]' as unsigned array))); +-- error 1235 +create table t1(j json, key i1((cast(j->"$" as char array)))); +-- error 1235 +create table t1(j json, key i1((cast(j->"$" as binary array)))); +-- error 1235 +create table t1(j json, key i1((cast(j->"$" as float array)))); +-- error 1235 +create table t1(j json, key i1((cast(j->"$" as decimal(4,2) array)))); +-- error 1235 +create view v as select cast('[1,2,3]' as unsigned array); +create table t(a json, index idx((cast(a as signed array)))); +drop table t; +create table t(a json, index idx(((cast(a as signed array))))); +drop table t; +create table t(j json, key i1((cast(j->"$" as double array)))); +drop table t; +-- error 1235 +create table t(a json, b int, index idx(b, (cast(a as signed array)), (cast(a as signed array)))); +create table t(a json, b int); +-- error 1235 +create index idx on t (b, (cast(a as signed array)), (cast(a as signed array))); +-- error 1235 +alter table t add index idx(b, (cast(a as signed array)), (cast(a as signed array))); +create index idx1 on t (b, (cast(a as signed array))); +alter table t add index idx2(b, (cast(a as signed array))); +drop table t; +create table t(a json, b int, index idx3(b, (cast(a as signed array)))); +drop table t; +set names gbk; +create table t(a json, b int, index idx3(b, (cast(a as char(10) array)))); +CREATE TABLE users (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, doc JSON); +-- error 1072 +CREATE TABLE t (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, doc JSON, FOREIGN KEY fk_user_id ((cast(doc->'$[*]' as signed array))) REFERENCES users(id)); + +set names default; + +# TestMultiValuedIndexDML +set @@sql_mode=''; +drop table if exists t; +create table t(a json, index idx((cast(a as unsigned array)))); +insert into t values ('[1,2,3]'); +-- error 3752 +insert into t values ('[-1]'); +-- error 3903 +insert into t values ('["1"]'); +-- error 3903 +insert into t values ('["a"]'); +-- error 3903 +insert into t values ('["汉字"]'); +-- error 3903 +insert into t values ('[1.2]'); +-- error 3903 +insert into t values ('[1.0]'); +-- error 3903 +insert into t values (json_array(cast("11:00:00" as time))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02" as date))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +-- error 3903 +insert into t values (json_array(cast('{"a":1}' as json))); +drop table if exists t; +create table t(a json, index idx((cast(a as signed array)))); +insert into t values ('[1,2,3]'); +insert into t values ('[-1]'); +-- error 3903 +insert into t values ('["1"]'); +-- error 3903 +insert into t values ('["a"]'); +-- error 3903 +insert into t values ('["汉字"]'); +-- error 3903 +insert into t values ('[1.2]'); +-- error 3903 +insert into t values ('[1.0]'); +-- error 3903 +insert into t values (json_array(cast("11:00:00" as time))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02" as date))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +-- error 3903 +insert into t values (json_array(cast('{"a":1}' as json))); +drop table if exists t; +create table t(a json, index idx((cast(a as char(1) array)))); +-- error 3903 +insert into t values ('[1,2,3]'); +-- error 3903 +insert into t values ('[-1]'); +insert into t values ('["1"]'); +insert into t values ('["a"]'); +-- error 3907 +insert into t values ('["汉字"]'); +-- error 3903 +insert into t values ('[1.2]'); +-- error 3903 +insert into t values ('[1.0]'); +-- error 3903 +insert into t values (json_array(cast("11:00:00" as time))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02" as date))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +-- error 3903 +insert into t values (json_array(cast('{"a":1}' as json))); +drop table if exists t; +create table t(a json, index idx((cast(a as char(2) array)))); +-- error 3903 +insert into t values ('[1,2,3]'); +-- error 3903 +insert into t values ('[-1]'); +insert into t values ('["1"]'); +insert into t values ('["a"]'); +insert into t values ('["汉字"]'); +-- error 3903 +insert into t values ('[1.2]'); +-- error 3903 +insert into t values ('[1.0]'); +-- error 3903 +insert into t values (json_array(cast("11:00:00" as time))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02" as date))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +-- error 3903 +insert into t values (json_array(cast('{"a":1}' as json))); +drop table if exists t; +create table t(a json, index idx((cast(a as binary(1) array)))); +-- error 3903 +insert into t values ('[1,2,3]'); +-- error 3903 +insert into t values ('[-1]'); +insert into t values ('["1"]'); +insert into t values ('["a"]'); +-- error 3907 +insert into t values ('["汉字"]'); +-- error 3903 +insert into t values ('[1.2]'); +-- error 3903 +insert into t values ('[1.0]'); +-- error 3903 +insert into t values (json_array(cast("11:00:00" as time))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02" as date))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +-- error 3903 +insert into t values (json_array(cast('{"a":1}' as json))); +drop table if exists t; +create table t(a json, index idx((cast(a as binary(2) array)))); +-- error 3903 +insert into t values ('[1,2,3]'); +-- error 3903 +insert into t values ('[-1]'); +insert into t values ('["1"]'); +insert into t values ('["a"]'); +-- error 3907 +insert into t values ('["汉字"]'); +-- error 3903 +insert into t values ('[1.2]'); +-- error 3903 +insert into t values ('[1.0]'); +-- error 3903 +insert into t values (json_array(cast("11:00:00" as time))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02" as date))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +-- error 3903 +insert into t values (json_array(cast('{"a":1}' as json))); +drop table if exists t; +create table t(a json, index idx((cast(a as date array)))); +-- error 3903 +insert into t values ('[1,2,3]'); +-- error 3903 +insert into t values ('[-1]'); +-- error 3903 +insert into t values ('["1"]'); +-- error 3903 +insert into t values ('["a"]'); +-- error 3903 +insert into t values ('["汉字"]'); +-- error 3903 +insert into t values ('[1.2]'); +-- error 3903 +insert into t values ('[1.0]'); +-- error 3903 +insert into t values (json_array(cast("11:00:00" as time))); +insert into t values (json_array(cast("2022-02-02" as date))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +-- error 3903 +insert into t values (json_array(cast('{"a":1}' as json))); +drop table if exists t; +create table t(a json, index idx((cast(a as time array)))); +-- error 3903 +insert into t values ('[1,2,3]'); +-- error 3903 +insert into t values ('[-1]'); +-- error 3903 +insert into t values ('["1"]'); +-- error 3903 +insert into t values ('["a"]'); +-- error 3903 +insert into t values ('["汉字"]'); +-- error 3903 +insert into t values ('[1.2]'); +-- error 3903 +insert into t values ('[1.0]'); +insert into t values (json_array(cast("11:00:00" as time))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02" as date))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +-- error 3903 +insert into t values (json_array(cast('{"a":1}' as json))); +drop table if exists t; +create table t(a json, index idx((cast(a as datetime array)))); +-- error 3903 +insert into t values ('[1,2,3]'); +-- error 3903 +insert into t values ('[-1]'); +-- error 3903 +insert into t values ('["1"]'); +-- error 3903 +insert into t values ('["a"]'); +-- error 3903 +insert into t values ('["汉字"]'); +-- error 3903 +insert into t values ('[1.2]'); +-- error 3903 +insert into t values ('[1.0]'); +-- error 3903 +insert into t values (json_array(cast("11:00:00" as time))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02" as date))); +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +-- error 3903 +insert into t values (json_array(cast('{"a":1}' as json))); +drop table if exists t; +create table t(a json, index idx((cast(a as double array)))); +insert into t values ('[1,2,3]'); +insert into t values ('[-1]'); +-- error 3903 +insert into t values ('["1"]'); +-- error 3903 +insert into t values ('["a"]'); +-- error 3903 +insert into t values ('["汉字"]'); +insert into t values ('[1.2]'); +insert into t values ('[1.0]'); +-- error 3903 +insert into t values (json_array(cast("11:00:00" as time))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02" as date))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +-- error 3903 +insert into t values (json_array(cast('{"a":1}' as json))); +set @@sql_mode=default; +drop table if exists t; +create table t(a json, index idx((cast(a as unsigned array)))); +insert into t values ('[1,2,3]'); +-- error 3752 +insert into t values ('[-1]'); +-- error 3903 +insert into t values ('["1"]'); +-- error 3903 +insert into t values ('["a"]'); +-- error 3903 +insert into t values ('["汉字"]'); +-- error 3903 +insert into t values ('[1.2]'); +-- error 3903 +insert into t values ('[1.0]'); +-- error 3903 +insert into t values (json_array(cast("11:00:00" as time))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02" as date))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +-- error 3903 +insert into t values (json_array(cast('{"a":1}' as json))); +drop table if exists t; +create table t(a json, index idx((cast(a as signed array)))); +insert into t values ('[1,2,3]'); +insert into t values ('[-1]'); +-- error 3903 +insert into t values ('["1"]'); +-- error 3903 +insert into t values ('["a"]'); +-- error 3903 +insert into t values ('["汉字"]'); +-- error 3903 +insert into t values ('[1.2]'); +-- error 3903 +insert into t values ('[1.0]'); +-- error 3903 +insert into t values (json_array(cast("11:00:00" as time))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02" as date))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +-- error 3903 +insert into t values (json_array(cast('{"a":1}' as json))); +drop table if exists t; +create table t(a json, index idx((cast(a as char(1) array)))); +-- error 3903 +insert into t values ('[1,2,3]'); +-- error 3903 +insert into t values ('[-1]'); +insert into t values ('["1"]'); +insert into t values ('["a"]'); +-- error 3907 +insert into t values ('["汉字"]'); +-- error 3903 +insert into t values ('[1.2]'); +-- error 3903 +insert into t values ('[1.0]'); +-- error 3903 +insert into t values (json_array(cast("11:00:00" as time))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02" as date))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +-- error 3903 +insert into t values (json_array(cast('{"a":1}' as json))); +drop table if exists t; +create table t(a json, index idx((cast(a as char(2) array)))); +-- error 3903 +insert into t values ('[1,2,3]'); +-- error 3903 +insert into t values ('[-1]'); +insert into t values ('["1"]'); +insert into t values ('["a"]'); +insert into t values ('["汉字"]'); +-- error 3903 +insert into t values ('[1.2]'); +-- error 3903 +insert into t values ('[1.0]'); +-- error 3903 +insert into t values (json_array(cast("11:00:00" as time))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02" as date))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +-- error 3903 +insert into t values (json_array(cast('{"a":1}' as json))); +drop table if exists t; +create table t(a json, index idx((cast(a as binary(1) array)))); +-- error 3903 +insert into t values ('[1,2,3]'); +-- error 3903 +insert into t values ('[-1]'); +insert into t values ('["1"]'); +insert into t values ('["a"]'); +-- error 3907 +insert into t values ('["汉字"]'); +-- error 3903 +insert into t values ('[1.2]'); +-- error 3903 +insert into t values ('[1.0]'); +-- error 3903 +insert into t values (json_array(cast("11:00:00" as time))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02" as date))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +-- error 3903 +insert into t values (json_array(cast('{"a":1}' as json))); +drop table if exists t; +create table t(a json, index idx((cast(a as binary(2) array)))); +-- error 3903 +insert into t values ('[1,2,3]'); +-- error 3903 +insert into t values ('[-1]'); +insert into t values ('["1"]'); +insert into t values ('["a"]'); +-- error 3907 +insert into t values ('["汉字"]'); +-- error 3903 +insert into t values ('[1.2]'); +-- error 3903 +insert into t values ('[1.0]'); +-- error 3903 +insert into t values (json_array(cast("11:00:00" as time))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02" as date))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +-- error 3903 +insert into t values (json_array(cast('{"a":1}' as json))); +drop table if exists t; +create table t(a json, index idx((cast(a as date array)))); +-- error 3903 +insert into t values ('[1,2,3]'); +-- error 3903 +insert into t values ('[-1]'); +-- error 3903 +insert into t values ('["1"]'); +-- error 3903 +insert into t values ('["a"]'); +-- error 3903 +insert into t values ('["汉字"]'); +-- error 3903 +insert into t values ('[1.2]'); +-- error 3903 +insert into t values ('[1.0]'); +-- error 3903 +insert into t values (json_array(cast("11:00:00" as time))); +insert into t values (json_array(cast("2022-02-02" as date))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +-- error 3903 +insert into t values (json_array(cast('{"a":1}' as json))); +drop table if exists t; +create table t(a json, index idx((cast(a as time array)))); +-- error 3903 +insert into t values ('[1,2,3]'); +-- error 3903 +insert into t values ('[-1]'); +-- error 3903 +insert into t values ('["1"]'); +-- error 3903 +insert into t values ('["a"]'); +-- error 3903 +insert into t values ('["汉字"]'); +-- error 3903 +insert into t values ('[1.2]'); +-- error 3903 +insert into t values ('[1.0]'); +insert into t values (json_array(cast("11:00:00" as time))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02" as date))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +-- error 3903 +insert into t values (json_array(cast('{"a":1}' as json))); +drop table if exists t; +create table t(a json, index idx((cast(a as datetime array)))); +-- error 3903 +insert into t values ('[1,2,3]'); +-- error 3903 +insert into t values ('[-1]'); +-- error 3903 +insert into t values ('["1"]'); +-- error 3903 +insert into t values ('["a"]'); +-- error 3903 +insert into t values ('["汉字"]'); +-- error 3903 +insert into t values ('[1.2]'); +-- error 3903 +insert into t values ('[1.0]'); +-- error 3903 +insert into t values (json_array(cast("11:00:00" as time))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02" as date))); +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +-- error 3903 +insert into t values (json_array(cast('{"a":1}' as json))); +drop table if exists t; +create table t(a json, index idx((cast(a as double array)))); +insert into t values ('[1,2,3]'); +insert into t values ('[-1]'); +-- error 3903 +insert into t values ('["1"]'); +-- error 3903 +insert into t values ('["a"]'); +-- error 3903 +insert into t values ('["汉字"]'); +insert into t values ('[1.2]'); +insert into t values ('[1.0]'); +-- error 3903 +insert into t values (json_array(cast("11:00:00" as time))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02" as date))); +-- error 3903 +insert into t values (json_array(cast("2022-02-02 11:00:00" as datetime))); +-- error 3903 +insert into t values (json_array(cast('{"a":1}' as json))); + +set sql_mode=default; diff --git a/tests/integrationtest/t/infoschema/tables.test b/tests/integrationtest/t/infoschema/tables.test index 10b42fb90fb2b..f5586033b27ff 100644 --- a/tests/integrationtest/t/infoschema/tables.test +++ b/tests/integrationtest/t/infoschema/tables.test @@ -203,3 +203,15 @@ DROP TABLE t2; SELECT * FROM information_schema.CHECK_CONSTRAINTS where CONSTRAINT_NAME = 't2_chk_1'; SET GLOBAL tidb_enable_check_constraint = default; +# TestTiDBCheckConstraints +drop table if exists t1, t2; +SET GLOBAL tidb_enable_check_constraint = ON; +CREATE TABLE t1 (id INT PRIMARY KEY, CHECK (id<10)); +SELECT CONSTRAINT_SCHEMA, CONSTRAINT_NAME, CHECK_CLAUSE, TABLE_NAME FROM information_schema.TIDB_CHECK_CONSTRAINTS where CONSTRAINT_NAME = 't1_chk_1'; +ALTER TABLE t1 DROP CONSTRAINT t1_chk_1; +SELECT CONSTRAINT_SCHEMA, CONSTRAINT_NAME, CHECK_CLAUSE, TABLE_NAME FROM information_schema.TIDB_CHECK_CONSTRAINTS where CONSTRAINT_NAME = 't1_chk_1'; +CREATE TABLE t2 (id INT PRIMARY KEY, CHECK (id<20)); +SELECT CONSTRAINT_SCHEMA, CONSTRAINT_NAME, CHECK_CLAUSE, TABLE_NAME FROM information_schema.TIDB_CHECK_CONSTRAINTS where CONSTRAINT_NAME = 't2_chk_1'; +DROP TABLE t2; +SELECT CONSTRAINT_SCHEMA, CONSTRAINT_NAME, CHECK_CLAUSE, TABLE_NAME FROM information_schema.TIDB_CHECK_CONSTRAINTS where CONSTRAINT_NAME = 't2_chk_1'; +SET GLOBAL tidb_enable_check_constraint = default; \ No newline at end of file diff --git a/tests/integrationtest/t/partition.test b/tests/integrationtest/t/partition.test new file mode 100644 index 0000000000000..8aea25f8498bf --- /dev/null +++ b/tests/integrationtest/t/partition.test @@ -0,0 +1,3 @@ +create placement policy pp1 followers=1; +create table t (a int); +alter table t partition by range (a) (partition p0 values less than (1000000), partition pMax values less than (maxvalue) placement policy pp1); diff --git a/tests/integrationtest/t/planner/core/binary_plan.test b/tests/integrationtest/t/planner/core/binary_plan.test new file mode 100644 index 0000000000000..5aae531269fd8 --- /dev/null +++ b/tests/integrationtest/t/planner/core/binary_plan.test @@ -0,0 +1,10 @@ +# TestInvalidDecodeBinaryPlan +select tidb_decode_binary_plan('some random bytes'); +show warnings; +## base64.StdEncoding.EncodeToString("some random bytes") +select tidb_decode_binary_plan('c29tZSByYW5kb20gYnl0ZXM='); +show warnings; +## base64.StdEncoding.EncodeToString(snappy.Encode(nil, "some random bytes")) +select tidb_decode_binary_plan('EUBzb21lIHJhbmRvbSBieXRlcw=='); +show warnings; + diff --git a/tests/integrationtest/t/planner/core/casetest/index/index.test b/tests/integrationtest/t/planner/core/casetest/index/index.test new file mode 100644 index 0000000000000..c37258c825da8 --- /dev/null +++ b/tests/integrationtest/t/planner/core/casetest/index/index.test @@ -0,0 +1,276 @@ +# TestIndexJoinUniqueCompositeIndex +set tidb_cost_model_version=2; +drop table if exists t1, t2; +set tidb_enable_clustered_index=int_only; +create table t1(a int not null, c int not null); +create table t2(a int not null, b int not null, c int not null, primary key(a,b)); +insert into t1 values(1,1); +insert into t2 values(1,1,1),(1,2,1); +analyze table t1,t2; +## Row count of IndexScan should be 2. +explain format = 'brief' select /*+ TIDB_INLJ(t2) */ * from t1 join t2 on t1.a = t2.a and t1.c = t2.c; +## Row count of IndexScan should be 2. +explain format = 'brief' select /*+ TIDB_INLJ(t2) */ * from t1 join t2 on t1.a = t2.a and t1.c <= t2.b; +## Row count of IndexScan should be 1. +explain format = 'brief' select /*+ TIDB_INLJ(t2) */ * from t1 join t2 on t1.a = t2.a and t2.b = 1; +set tidb_enable_clustered_index=default; + + +# TestIndexMergeFromComposedDNFCondition +drop table if exists t2; +create table t2(pk int primary key, a json, b json, c int, d int, e int, index idx(c, (cast(a as signed array))), index idx2((cast(b as signed array)), c), index idx3(c, d), index idx4(d)); +explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where (1 member of (a) and c=1) or (2 member of (b) and c=1); -- 1: OR index merge from multi complicated mv index (memberof); +explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where (1 member of (a) and c=1) or (2 member of (b) and c=1); -- 2: OR index merge from multi complicated mv index (memberof); +explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where (1 member of (a) and c=1 and d=2) or (2 member of (b) and c=3 and d=2); -- 3: OR index merge from multi complicated mv index (memberof),while each DNF item contains redundant condition, which should be remained as table filters; +explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where ( json_contains(a, '[1, 2, 3]') and c=1 and d=2) or (2 member of (b) and c=3 and d=2); -- 4: OR index merge from multi complicated mv index (memberof),make full use of DNF item's condition even if the predicate is intersection case (json_contains); +explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where ( json_overlaps(a, '[1, 2, 3]') and c=1 and d=2) or (2 member of (b) and c=3 and d=2); -- 5: OR index merge from multi complicated mv index (memberof),make full use of DNF item's condition even if the predicate is intersection case (json_contains); +explain select /*+ use_index_merge(t2, idx2, idx, idx4) */ * from t2 where ( json_contains(a, '[1, 2, 3]') and d=2) or (2 member of (b) and c=3 and d=2); -- 6: OR index merge from multi complicated mv index (memberof),make full use of other DNF items even if one of the DNF items fails; +explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where (1 member of (a) and 1 member of (b) and c=3) or (3 member of (b) and c=4); -- 7: OR index merge from multi complicated mv index (memberof),each DNF item can be more complicated like a another embedded CNF member-of composition.; +explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where (1 member of (a) and 1 member of (b) and c=3) or (3 member of (b) and c=4) or e=1; -- 8: OR index merge from multi complicated mv index (memberof), each DNF item should be strict or lax used as index partial path.; +explain select /*+ use_index_merge(t2, idx2, idx, idx4) */ * from t2 where (1 member of (a) and 1 member of (b) and c=3) or (3 member of (b) and c=4) or d=1; -- 9: OR index merge from multi complicated mv index (memberof), each DNF item should be strict or lax used as index partial path, specify the index in index merge hint; + + +# TestIndexMergeFromComposedCNFCondition +drop table if exists t1, t2; +create table t1(pk int primary key, a json, b json, c int, d int, index idx((cast(a as signed array))), index idx2((cast(b as signed array)))); +create table t2(pk int primary key, a json, b json, c int, d int, index idx(c, (cast(a as signed array))), index idx2((cast(b as signed array)), c), index idx3(c, d), index idx4(d)); +explain select /*+ use_index_merge(t1, idx2, idx) */ * from t1 where 1 member of (a) and 2 member of (b); -- 1: AND index merge from multi member mv index predicate, since member of is single partial path, it can be merged with outer index merge.; +explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where 1 member of (a) and c=1 and 2 member of (b); -- 2: AND index merge from multi complicated mv index; +explain select /*+ use_index_merge(t2, idx2, idx, idx4) */ * from t2 where 1 member of (a) and c=1 and 2 member of (b) and d=3; -- 3: AND index merge from multi complicated mv indexes and normal indexes; +explain select /*+ use_index_merge(t2, idx2, idx, idx3) */ * from t2 where json_contains(a, '[1, 2, 3]') and c=1 and 2 member of (b) and d=3; -- 4: AND index merge from multi complicated mv indexes (json_contains (intersection))and normal indexes; +explain select /*+ use_index_merge(t2, idx2, idx, idx3) */ * from t2 where json_overlaps(a, '[1, 2, 3]') and c=1 and 2 member of (b) and d=3; -- 5: AND index merge from multi complicated mv indexes (json_overlap (intersection))and normal indexes; +explain select /*+ use_index_merge(t2, idx2, idx) */ * from t2 where 1 member of (a) and c=1 and c=2; -- 6: AND index merge from multi complicated mv indexes (empty range); + + +# TestIndexMerge +drop table if exists t; +create table t(a int, b int, c int, unique index(a), unique index(b), primary key(c)); +explain format = 'brief' select /*+ USE_INDEX_MERGE(t, a, b) */ * from t where a = 1 or b = 2; +explain format = 'brief' select /*+ USE_INDEX_MERGE(t, A, B) */ * from t where a = 1 or b = 2; +explain format = 'brief' select /*+ USE_INDEX_MERGE(t, primary) */ * from t where 1 or t.c; +explain format = 'brief' select /*+ USE_INDEX_MERGE(t, a, b, c) */ * from t where 1 or t.a = 1 or t.b = 2; + + +# TestIndexJoinTableRange +## for issue #14822 and #38258 +drop table if exists t1, t2, t3, t4; +create table t1(a int, b int, primary key (a), key idx_t1_b (b)); +create table t2(a int, b int, primary key (a), key idx_t1_b (b)); +create table t3(a int, b int, c int); +create table t4(a int, b int, c int, primary key (a, b) clustered); +desc format = 'brief' select /*+ TIDB_INLJ(t2)*/ * from t1, t2 where t1.a = t2.a and t1.b = t2.b; +desc format = 'brief' select /*+ TIDB_INLJ(t2)*/ * from t1, t2 where t1.a = t2.a and t1.b = t2.a and t1.b = t2.b; +desc format = 'brief' select /*+ INL_JOIN(t4) */ * from t3 join t4 on t3.a = t4.a where t4.b = 1; +desc format = 'brief' select /*+ INL_JOIN(t4) */ * from t3 join t4 on t3.b = t4.b where t4.a = 1; + + +# TestIndexJoinInnerIndexNDV +set tidb_cost_model_version=2; +drop table if exists t1, t2; +create table t1(a int not null, b int not null, c int not null); +create table t2(a int not null, b int not null, c int not null, index idx1(a,b), index idx2(c)); +insert into t1 values(1,1,1),(1,1,1),(1,1,1); +insert into t2 values(1,1,1),(1,1,2),(1,1,3); +analyze table t1, t2; +## t2 should use idx2 instead of idx1, since idx2 has larger NDV. +explain format = 'brief' select /*+ inl_join(t2) */ * from t1, t2 where t1.a = t2.a and t1.b = t2.b and t1.c = t2.c; +set tidb_cost_model_version=default; + + +# TestIndexMergeSerial +drop table if exists t; +create table t (a int, b int, unique key(a), unique key(b)); +insert into t value (1, 5), (2, 4), (3, 3), (4, 2), (5, 1); +insert into t value (6, 0), (7, -1), (8, -2), (9, -3), (10, -4); +analyze table t; +desc format='brief' select /*+ use_index_merge(t) */ * from t where a =1 or (b=1 and b+2>1); +show warnings; +desc format='brief' select /*+ use_index_merge(t) */ * from t where a =1 or (b=1 and length(b)=1); +show warnings; +desc format='brief' select /*+ use_index_merge(t) */ * from t where (a=1 and length(a)=1) or (b=1 and length(b)=1); +show warnings; +desc format='brief' select /*+ use_index_merge(t) */ * from t where (a=1 and length(b)=1) or (b=1 and length(a)=1); +show warnings; + + +# TestIndexJoinOnClusteredIndex +set tidb_cost_model_version=2; +set tidb_enable_clustered_index=on; +drop table if exists t; +create table t (a int, b varchar(20), c decimal(40,10), d int, primary key(a,b), key(c)); +insert into t values (1,"111",1.1,11), (2,"222",2.2,12), (3,"333",3.3,13); +analyze table t; +explain format = 'brief'select /*+ inl_join(t1, t2) */ * from t t1 join t t2 on t1.a = t2.a; +select /*+ inl_join(t1, t2) */ * from t t1 join t t2 on t1.a = t2.a; +explain format = 'brief'select /*+ inl_merge_join(t1, t2) */ * from t t1 join t t2 on t1.a = t2.a; +select /*+ inl_merge_join(t1, t2) */ * from t t1 join t t2 on t1.a = t2.a; +explain format = 'brief'select /*+ inl_hash_join(t1, t2) */ * from t t1 join t t2 on t1.a = t2.a; +select /*+ inl_hash_join(t1, t2) */ * from t t1 join t t2 on t1.a = t2.a; +explain format = 'brief'select /*+ inl_join(t1, t2) */ * from t t1 join t t2 on t1.a = t2.a and t1.b = t2.b; +select /*+ inl_join(t1, t2) */ * from t t1 join t t2 on t1.a = t2.a and t1.b = t2.b; +explain format = 'brief'select /*+ inl_join(t1, t2) */ * from t t1 join t t2 on t1.c = t2.c; +select /*+ inl_join(t1, t2) */ * from t t1 join t t2 on t1.c = t2.c; +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; +select /*+ inl_merge_join(t1,t2) */ t2.a, t2.c, t2.d from t t1 left join t t2 on t1.a = t2.c; +set tidb_enable_clustered_index=default; +set tidb_cost_model_version=default; + + +# TestIndexMergeWithCorrelatedColumns +set tidb_cost_model_version=2; +drop table if exists t1, t2; +create table t1(c1 int, c2 int, c3 int, primary key(c1), key(c2)); +insert into t1 values(1, 1, 1); +insert into t1 values(2, 2, 2); +create table t2(c1 int, c2 int, c3 int); +insert into t2 values(1, 1, 1); +insert into t2 values(2, 2, 2); +drop table if exists tt1, tt2; +create table tt1 (c_int int, c_str varchar(40), c_datetime datetime, c_decimal decimal(12, 6), primary key(c_int), key(c_int), key(c_str), unique key(c_decimal), key(c_datetime)); +create table tt2 like tt1 ; +insert into tt1 (c_int, c_str, c_datetime, c_decimal) values (6, 'sharp payne', '2020-06-07 10:40:39', 6.117000) , + (7, 'objective kare', '2020-02-05 18:47:26', 1.053000) , + (8, 'thirsty pasteur', '2020-01-02 13:06:56', 2.506000) , + (9, 'blissful wilbur', '2020-06-04 11:34:04', 9.144000) , + (10, 'reverent mclean', '2020-02-12 07:36:26', 7.751000) ; +insert into tt2 (c_int, c_str, c_datetime, c_decimal) values (6, 'beautiful joliot', '2020-01-16 01:44:37', 5.627000) , + (7, 'hopeful blackburn', '2020-05-23 21:44:20', 7.890000) , + (8, 'ecstatic davinci', '2020-02-01 12:27:17', 5.648000) , + (9, 'hopeful lewin', '2020-05-05 05:58:25', 7.288000) , + (10, 'sharp jennings', '2020-01-28 04:35:03', 9.758000) ; +explain format=brief select * from t2 where c1 < all(select /*+ use_index_merge(t1) */ c1 from t1 where (c1 = 10 and c1 = t2.c3 or c2 = 1 and c2 = t2.c3) and substring(c3, 10)) order by c1; +select * from t2 where c1 < all(select /*+ use_index_merge(t1) */ c1 from t1 where (c1 = 10 and c1 = t2.c3 or c2 = 1 and c2 = t2.c3) and substring(c3, 10)) order by c1; +explain format=brief select * from t2 where c1 < all(select /*+ use_index_merge(t1) */ c1 from t1 where (c1 = 10 and c1 = t2.c3 or c2 = 1 and c2 = t2.c3) and reverse(c3)) order by c1; +select * from t2 where c1 < all(select /*+ use_index_merge(t1) */ c1 from t1 where (c1 = 10 and c1 = t2.c3 or c2 = 1 and c2 = t2.c3) and reverse(c3)) order by c1; +explain format=brief select * from t2 where c1 < all(select /*+ use_index_merge(t1) */ c1 from t1 where (c1 >= 10 and c1 = t2.c3 or c2 = 1 and c2 = t2.c3) and substring(c3, 10)) order by c1; +select * from t2 where c1 < all(select /*+ use_index_merge(t1) */ c1 from t1 where (c1 >= 10 and c1 = t2.c3 or c2 = 1 and c2 = t2.c3) and substring(c3, 10)) order by c1; + +## Test correlated column in IndexPath.TableFilters. +explain format=brief select c_int from tt1 where c_decimal < all (select /*+ use_index_merge(tt2) */ c_decimal from tt2 where tt1.c_int = tt2.c_int and tt1.c_datetime > tt2.c_datetime and tt2.c_decimal = 9.060 or tt2.c_str <= 'interesting shtern' and tt1.c_int = tt2.c_int) order by 1; +select c_int from tt1 where c_decimal < all (select /*+ use_index_merge(tt2) */ c_decimal from tt2 where tt1.c_int = tt2.c_int and tt1.c_datetime > tt2.c_datetime and tt2.c_decimal = 9.060 or tt2.c_str <= 'interesting shtern' and tt1.c_int = tt2.c_int) order by 1; + +## Test correlated column in TablePath.TableFilters. +explain format=brief select c_int from tt1 where c_decimal > all (select /*+ use_index_merge(tt2) */ c_decimal from tt2 where tt2.c_int = 7 and tt2.c_int < tt1.c_decimal or tt2.c_str >= 'zzzzzzzzzzzzzzzzzzz' and tt1.c_int = tt2.c_int) order by 1; +select c_int from tt1 where c_decimal > all (select /*+ use_index_merge(tt2) */ c_decimal from tt2 where tt2.c_int = 7 and tt2.c_int < tt1.c_decimal or tt2.c_str >= 'zzzzzzzzzzzzzzzzzzz' and tt1.c_int = tt2.c_int) order by 1; +set tidb_cost_model_version=default; + + +# TestIndexJoinRangeFallback +drop table if exists t1, t2; +create table t1(a int, b int, c varchar(10), d varchar(10), index idx_a_b_c_d(a, b, c(2), d(2))); +create table t2(e int, f int, g varchar(10), h varchar(10)); +set @@tidb_opt_range_max_size = 0; +explain format='brief' select /*+ inl_join(t1) */ * from t1 join t2 on t1.b = t2.e and t1.d = t2.g where t1.a in (1, 3) and t1.c in ('aaa', 'bbb'); +show warnings; +set @@tidb_opt_range_max_size = 2900; +explain format='brief' select /*+ inl_join(t1) */ * from t1 join t2 on t1.b = t2.e and t1.d = t2.g where t1.a in (1, 3) and t1.c in ('aaa', 'bbb'); +show warnings; +set @@tidb_opt_range_max_size = 2300; +explain format='brief' select /*+ inl_join(t1) */ * from t1 join t2 on t1.b = t2.e and t1.d = t2.g where t1.a in (1, 3) and t1.c in ('aaa', 'bbb'); +show warnings; +set @@tidb_opt_range_max_size = 700; +explain format='brief' select /*+ inl_join(t1) */ * from t1 join t2 on t1.b = t2.e and t1.d = t2.g where t1.a in (1, 3) and t1.c in ('aaa', 'bbb'); +show warnings; +set @@tidb_opt_range_max_size = 0; +explain format='brief' select /*+ inl_join(t1) */ * from t1 join t2 on t1.a = t2.e where t1.b > 1 and t1.b < 10; +show warnings; +set @@tidb_opt_range_max_size = 300; +explain format='brief' select /*+ inl_join(t1) */ * from t1 join t2 on t1.a = t2.e where t1.b > 1 and t1.b < 10; +show warnings; +set @@tidb_opt_range_max_size = 0; +explain format='brief' select /*+ inl_join(t1) */ * from t1 join t2 on t1.a = t2.e where t1.b > t2.f and t1.b < t2.f + 10; +show warnings; +set @@tidb_opt_range_max_size = 300; +explain format='brief' select /*+ inl_join(t1) */ * from t1 join t2 on t1.a = t2.e where t1.b > t2.f and t1.b < t2.f + 10; +show warnings; +set @@tidb_opt_range_max_size = default; + + +# TestHeuristicIndexSelection +set tidb_cost_model_version=2; +drop table if exists t1, t2, t3, t4; +create table t1(a int, b int, c int, d int, e int, f int, g int, primary key (a), unique key c_d_e (c, d, e), unique key f (f), unique key f_g (f, g), key g (g)); +create table t2(a int, b int, c int, d int, unique index idx_a (a), unique index idx_b_c (b, c), unique index idx_b_c_a_d (b, c, a, d)); +create table t3(a bigint, b varchar(255), c bigint, primary key(a, b) clustered); +create table t4(a bigint, b varchar(255), c bigint, primary key(a, b) nonclustered); +set @@tidb_enable_chunk_rpc = on; +explain format = 'verbose' select * from t1 where a = 3 or a = 5; +show warnings; +explain format = 'verbose' select f, g from t1 where f = 2 and g in (3, 4, 5); +show warnings; +explain format = 'verbose' select * from t1 where c = 1 and (d = 2 or d = 3) and e in (4, 5); +show warnings; +explain format = 'verbose' select f, g from t1 where f = 2 and g > 3; +show warnings; +explain format = 'verbose' select a, b, c from t2 where a = 1 and b = 2 and c in (1, 2, 3, 4, 5); +show warnings; +explain format = 'verbose' select * from t3 where (a = 1 or a = 3) and b = 'xx'; +show warnings; +explain format = 'verbose' select * from t4 where (a = 1 or a = 3) and b = 'xx'; +show warnings; +explain format = 'verbose' select a, b from t3 where (a = 1 or a = 3) and b = 'xx'; +show warnings; +explain format = 'verbose' select a, b from t4 where (a = 1 or a = 3) and b = 'xx'; +show warnings; +explain format = 'verbose' update t1 set b = 2 where a = 4 or a = 6; +show warnings; +explain format = 'verbose' delete from t1 where f = 2 and g in (3, 4); +show warnings; +explain format = 'verbose' insert into t3 select a, b, c from t1 where f = 2; +show warnings; +explain format = 'verbose' replace into t3 select a, b, c from t1 where a = 3; +show warnings; +set @@tidb_enable_chunk_rpc = default; +set tidb_cost_model_version=default; + + +# TestLimitIndexLookUpKeepOrder +set tidb_cost_model_version=2; +drop table if exists t; +create table t(a int, b int, c int, d int, index idx(a,b,c)); +desc format = 'brief' select * from t where a = 1 and b > 2 and b < 10 and d = 10 order by b,c limit 10; +desc format = 'brief' select * from t where a = 1 and b > 2 and b < 10 and d = 10 order by b desc, c desc limit 10; +set tidb_cost_model_version=default; + + +# TestAccessPathOnClusterIndex +set tidb_enable_clustered_index=on; +drop table if exists t1; +create table t1 (a int, b varchar(20), c decimal(40,10), d int, primary key(a,b), key(c)); +insert into t1 values (1,"111",1.1,11), (2,"222",2.2,12), (3,"333",3.3,13); +analyze table t1; +explain format='brief' select * from t1; +--sorted_result +select * from t1; +explain format='brief' select * from t1 where t1.a >= 1 and t1.a < 4; +--sorted_result +select * from t1 where t1.a >= 1 and t1.a < 4; +explain format='brief' select * from t1 where t1.a = 1 and t1.b < "333"; +--sorted_result +select * from t1 where t1.a = 1 and t1.b < "333"; +explain format='brief' select t1.a, t1.b, t1.c from t1 where t1.c = 3.3; +--sorted_result +select t1.a, t1.b, t1.c from t1 where t1.c = 3.3; +explain format='brief' select t1.b, t1.c from t1 where t1.c = 2.2; +--sorted_result +select t1.b, t1.c from t1 where t1.c = 2.2; +explain format='brief' select /*+ use_index(t1, c) */ * from t1; +--sorted_result +select /*+ use_index(t1, c) */ * from t1; +explain format='brief' select * from t1 use index(c) where t1.c in (2.2, 3.3); +--sorted_result +select * from t1 use index(c) where t1.c in (2.2, 3.3); +explain format='brief' select * from t1 where t1.a = 1 order by b; +--sorted_result +select * from t1 where t1.a = 1 order by b; +explain format='brief' select * from t1 order by a, b limit 1; +--sorted_result +select * from t1 order by a, b limit 1; +explain format='brief' select /*+ use_index_merge(t1 primary, c) */ * from t1 where t1.a >= 1 or t1.c = 2.2; +--sorted_result +select /*+ use_index_merge(t1 primary, c) */ * from t1 where t1.a >= 1 or t1.c = 2.2; +explain format='brief' select /*+ use_index_merge(t1 primary, c) */ * from t1 where t1.a = 1 and t1.b = '111' or t1.c = 3.3; +--sorted_result +select /*+ use_index_merge(t1 primary, c) */ * from t1 where t1.a = 1 and t1.b = '111' or t1.c = 3.3; +set tidb_enable_clustered_index=default; + diff --git a/tests/integrationtest/t/planner/core/casetest/integration.test b/tests/integrationtest/t/planner/core/casetest/integration.test index e2cae34d3003f..bbee41b57fc97 100644 --- a/tests/integrationtest/t/planner/core/casetest/integration.test +++ b/tests/integrationtest/t/planner/core/casetest/integration.test @@ -475,3 +475,148 @@ 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); --disable_warnings + +# TestPartitionPruningForInExpr +drop table if exists t; +create table t(a int(11) not null, b int) partition by range (a) (partition p0 values less than (4), partition p1 values less than(10), partition p2 values less than maxvalue); +insert into t values (1, 1),(10, 10),(11, 11); +set tidb_opt_fix_control='44262:ON'; +explain format = 'brief' select * from t where a in (1, 2,'11'); +explain format = 'brief' select * from t where a in (17, null); +explain format = 'brief' select * from t where a in (16, 'abc'); +explain format = 'brief' select * from t where a in (15, 0.12, 3.47); +explain format = 'brief' select * from t where a in (0.12, 3.47); +explain format = 'brief' select * from t where a in (14, floor(3.47)); +explain format = 'brief' select * from t where b in (3, 4); +set tidb_opt_fix_control=default; + + +# TestPartitionExplain +drop table if exists pt; +create table pt (id int, c int, key i_id(id), key i_c(c)) partition by range (c) ( +partition p0 values less than (4), +partition p1 values less than (7), +partition p2 values less than (10)); +set @@tidb_enable_index_merge = 1; +set tidb_opt_fix_control='44262:ON'; +--echo ## Table reader +explain format='brief' select * from pt where c > 10; +explain format='brief' select * from pt where c > 8; +explain format='brief' select * from pt where c < 2 or c >= 9; +--echo ## Index reader +explain format='brief' select c from pt; +explain format='brief' select c from pt where c > 10; +explain format='brief' select c from pt where c > 8; +explain format='brief' select c from pt where c < 2 or c >= 9; +--echo ## Index Lookup +explain format='brief' select /*+ use_index(pt, i_id) */ * from pt; +explain format='brief' select /*+ use_index(pt, i_id) */ * from pt where id < 4 and c > 10; +explain format='brief' select /*+ use_index(pt, i_id) */ * from pt where id < 10 and c > 8; +explain format='brief' select /*+ use_index(pt, i_id) */ * from pt where id < 10 and c < 2 or c >= 9; +--echo ## Partition selection +explain format='brief' select * from pt partition (p0) where c > 8; +explain format='brief' select c from pt partition (p0, p2) where c > 8; +explain format='brief' select /*+ use_index(pt, i_id) */ * from pt partition (p1, p2) where c < 3 and id = 5; +--echo ## Index Merge +explain format='brief' select * from pt where id = 4 or c < 7; +explain format='brief' select * from pt where id > 4 or c = 7; +set tidb_opt_fix_control=default; +set @@tidb_enable_index_merge = default; + + +# TestIssue41957 +drop table if exists github_events; +CREATE TABLE `github_events` ( + `id` bigint(20) NOT NULL DEFAULT '0', + `type` varchar(29) NOT NULL DEFAULT 'Event', + `created_at` datetime NOT NULL DEFAULT '1970-01-01 00:00:00', + `repo_id` bigint(20) NOT NULL DEFAULT '0', + `repo_name` varchar(140) NOT NULL DEFAULT '', + `actor_id` bigint(20) NOT NULL DEFAULT '0', + `actor_login` varchar(40) NOT NULL DEFAULT '', + `language` varchar(26) NOT NULL DEFAULT '', + `additions` bigint(20) NOT NULL DEFAULT '0', + `deletions` bigint(20) NOT NULL DEFAULT '0', + `action` varchar(11) NOT NULL DEFAULT '', + `number` int(11) NOT NULL DEFAULT '0', + `commit_id` varchar(40) NOT NULL DEFAULT '', + `comment_id` bigint(20) NOT NULL DEFAULT '0', + `org_login` varchar(40) NOT NULL DEFAULT '', + `org_id` bigint(20) NOT NULL DEFAULT '0', + `state` varchar(6) NOT NULL DEFAULT '', + `closed_at` datetime NOT NULL DEFAULT '1970-01-01 00:00:00', + `comments` int(11) NOT NULL DEFAULT '0', + `pr_merged_at` datetime NOT NULL DEFAULT '1970-01-01 00:00:00', + `pr_merged` tinyint(1) NOT NULL DEFAULT '0', + `pr_changed_files` int(11) NOT NULL DEFAULT '0', + `pr_review_comments` int(11) NOT NULL DEFAULT '0', + `pr_or_issue_id` bigint(20) NOT NULL DEFAULT '0', + `event_day` date NOT NULL, + `event_month` date NOT NULL, + `event_year` int(11) NOT NULL, + `push_size` int(11) NOT NULL DEFAULT '0', + `push_distinct_size` int(11) NOT NULL DEFAULT '0', + `creator_user_login` varchar(40) NOT NULL DEFAULT '', + `creator_user_id` bigint(20) NOT NULL DEFAULT '0', + `pr_or_issue_created_at` datetime NOT NULL DEFAULT '1970-01-01 00:00:00', + KEY `index_github_events_on_id` (`id`), + KEY `index_github_events_on_created_at` (`created_at`), + KEY `index_github_events_on_repo_id_type_action_month_actor_login` (`repo_id`,`type`,`action`,`event_month`,`actor_login`), + KEY `index_ge_on_repo_id_type_action_pr_merged_created_at_add_del` (`repo_id`,`type`,`action`,`pr_merged`,`created_at`,`additions`,`deletions`), + KEY `index_ge_on_creator_id_type_action_merged_created_at_add_del` (`creator_user_id`,`type`,`action`,`pr_merged`,`created_at`,`additions`,`deletions`), + KEY `index_ge_on_actor_id_type_action_created_at_repo_id_commits` (`actor_id`,`type`,`action`,`created_at`,`repo_id`,`push_distinct_size`), + KEY `index_ge_on_repo_id_type_action_created_at_number_pdsize_psize` (`repo_id`,`type`,`action`,`created_at`,`number`,`push_distinct_size`,`push_size`), + KEY `index_ge_on_repo_id_type_action_created_at_actor_login` (`repo_id`,`type`,`action`,`created_at`,`actor_login`), + KEY `index_ge_on_repo_name_type` (`repo_name`,`type`), + KEY `index_ge_on_actor_login_type` (`actor_login`,`type`), + KEY `index_ge_on_org_login_type` (`org_login`,`type`), + KEY `index_ge_on_language` (`language`), + KEY `index_ge_on_org_id_type` (`org_id`,`type`), + KEY `index_ge_on_actor_login_lower` ((lower(`actor_login`))), + KEY `index_ge_on_repo_name_lower` ((lower(`repo_name`))), + KEY `index_ge_on_language_lower` ((lower(`language`))), + KEY `index_ge_on_type_action` (`type`,`action`) /*!80000 INVISIBLE */, + KEY `index_ge_on_repo_id_type_created_at` (`repo_id`,`type`,`created_at`), + KEY `index_ge_on_repo_id_created_at` (`repo_id`,`created_at`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin +PARTITION BY LIST COLUMNS(`type`) +(PARTITION `push_event` VALUES IN ('PushEvent'), + PARTITION `create_event` VALUES IN ('CreateEvent'), + PARTITION `pull_request_event` VALUES IN ('PullRequestEvent'), + PARTITION `watch_event` VALUES IN ('WatchEvent'), + PARTITION `issue_comment_event` VALUES IN ('IssueCommentEvent'), + PARTITION `issues_event` VALUES IN ('IssuesEvent'), + PARTITION `delete_event` VALUES IN ('DeleteEvent'), + PARTITION `fork_event` VALUES IN ('ForkEvent'), + PARTITION `pull_request_review_comment_event` VALUES IN ('PullRequestReviewCommentEvent'), + PARTITION `pull_request_review_event` VALUES IN ('PullRequestReviewEvent'), + PARTITION `gollum_event` VALUES IN ('GollumEvent'), + PARTITION `release_event` VALUES IN ('ReleaseEvent'), + PARTITION `member_event` VALUES IN ('MemberEvent'), + PARTITION `commit_comment_event` VALUES IN ('CommitCommentEvent'), + PARTITION `public_event` VALUES IN ('PublicEvent'), + PARTITION `gist_event` VALUES IN ('GistEvent'), + PARTITION `follow_event` VALUES IN ('FollowEvent'), + PARTITION `event` VALUES IN ('Event'), + PARTITION `download_event` VALUES IN ('DownloadEvent'), + PARTITION `team_add_event` VALUES IN ('TeamAddEvent'), + PARTITION `fork_apply_event` VALUES IN ('ForkApplyEvent')); +SELECT + repo_id, GROUP_CONCAT( + DISTINCT actor_login + ORDER BY cnt DESC + SEPARATOR ',' + ) AS actor_logins +FROM ( + SELECT + ge.repo_id AS repo_id, + ge.actor_login AS actor_login, + COUNT(*) AS cnt + FROM github_events ge + WHERE + type = 'PullRequestEvent' AND action = 'opened' + AND (ge.created_at >= DATE_SUB(NOW(), INTERVAL 1 DAY) AND ge.created_at <= NOW()) + GROUP BY ge.repo_id, ge.actor_login + ORDER BY cnt DESC +) sub +GROUP BY repo_id; diff --git a/tests/integrationtest/t/planner/core/casetest/physicalplantest/physical_plan.test b/tests/integrationtest/t/planner/core/casetest/physicalplantest/physical_plan.test new file mode 100644 index 0000000000000..3e28f72db0e17 --- /dev/null +++ b/tests/integrationtest/t/planner/core/casetest/physicalplantest/physical_plan.test @@ -0,0 +1,994 @@ +# TestINMJHint +drop table if exists t1, t2; +create table t1(a int primary key, b int not null); +create table t2(a int primary key, b int not null); +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; +--sorted_result +select /*+ inl_merge_join(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b; +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; +--sorted_result +select /*+ inl_hash_join(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b; +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; +--sorted_result +select /*+ inl_join(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b; +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; +--sorted_result +select /*+ hash_join(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b; + +# TestEliminateMaxOneRow +drop table if exists t1, t2, t3; +create table t1(a int(11) DEFAULT NULL, b int(11) DEFAULT NULL, UNIQUE KEY idx_a (a)); +create table t2(a int(11) DEFAULT NULL, b int(11) DEFAULT NULL); +create table t3(a int(11) DEFAULT NULL, b int(11) DEFAULT NULL, c int(11) DEFAULT NULL, UNIQUE KEY idx_abc (a, b, c)); +explain format = 'brief' select a from t2 where t2.a < (select t1.a from t1 where t1.a = t2.a); +select a from t2 where t2.a < (select t1.a from t1 where t1.a = t2.a); +explain format = 'brief' select a from t2 where t2.a < (select t1.a from t1 where t1.b = t2.b and t1.a is null); +select a from t2 where t2.a < (select t1.a from t1 where t1.b = t2.b and t1.a is null); +explain format = 'brief' select a from t2 where t2.a < (select t3.a from t3 where t3.a = t2.a); +select a from t2 where t2.a < (select t3.a from t3 where t3.a = t2.a); + +# TestIndexJoinUnionScan +set tidb_cost_model_version=2; +drop table if exists t, tt; +create table t (a int primary key, b int, index idx(a)); +create table tt (a int primary key) partition by range (a) (partition p0 values less than (100), partition p1 values less than (200)); +set @@tidb_partition_prune_mode='static'; +begin; +insert into t values(1, 1); +explain format = 'brief' select /*+ TIDB_INLJ(t2) */ * from t t1, t t2 where t1.a = t2.a; +rollback; +begin; +insert into t values(1, 1); +explain format = 'brief' select /*+ TIDB_INLJ(t2) */ * from t t1, t t2 where t1.a = t2.b; +rollback; +begin; +insert into t values(1, 1); +explain format = 'brief' select /*+ TIDB_INLJ(t2) */ t1.a , t2.b from t t1, t t2 where t1.a = t2.b; +rollback; +begin; +insert into tt values(1); +explain format = 'brief' select /*+ TIDB_INLJ(t2) */ * from tt t1, tt t2 where t1.a = t2.a; +rollback; +set tidb_cost_model_version=DEFAULT; +set @@tidb_partition_prune_mode=DEFAULT; + +# TestMergeJoinUnionScan +drop table if exists t1, t2; +create table t1 (c_int int, c_str varchar(40), primary key (c_int)); +create table t2 (c_int int, c_str varchar(40), primary key (c_int)); +insert into t1 (`c_int`, `c_str`) values (11, 'keen williamson'), (10, 'gracious hermann'); +insert into t2 (`c_int`, `c_str`) values (10, 'gracious hermann'); +begin; +insert into t2 values (11, 'amazing merkle'); +insert into t2 values (12, 'amazing merkle'); +explain format = 'brief' select /*+ MERGE_JOIN(t1,t2) */ * from t1, t2 where t1.c_int = t2.c_int and t1.c_int = t2.c_int order by t1.c_int, t2.c_str; +rollback; + +# TestLimitToCopHint +set tidb_cost_model_version=2; +drop table if exists tn; +create table tn(a int, b int, c int, d int, key (a, b, c, d)); +set tidb_opt_limit_push_down_threshold=0; +explain format = 'brief' select /*+ LIMIT_TO_COP() */ * from tn where a = 1 and b > 10 and b < 20 and c > 50 order by d limit 1; +show warnings; +explain format = 'brief' select * from tn where a = 1 and b > 10 and b < 20 and c > 50 order by d limit 1; +show warnings; +explain format = 'brief' select /*+ LIMIT_TO_COP() */ a from tn where a div 2 order by a limit 1; +show warnings; +explain format = 'brief' select /*+ LIMIT_TO_COP() */ a from tn where a > 10 limit 1; +show warnings; +set tidb_cost_model_version=DEFAULT; +set tidb_opt_limit_push_down_threshold=DEFAULT; + +# TestCTEMergeHint +drop table if exists tc, te, t1, t2, t3, t4; +drop view if exists v; +create table tc(a int); +create table te(c int); +create table t1(a int); +create table t2(b int); +create table t3(c int); +create table t4(d int); +insert into tc values (1), (5), (10), (15), (20), (30), (50); +insert into te values (1), (5), (10), (25), (40), (60), (100); +insert into t1 values (1), (5), (10), (25), (40), (60), (100); +insert into t2 values (1), (5), (10), (25), (40), (60), (100); +insert into t3 values (1), (5), (10), (25), (40), (60), (100); +insert into t4 values (1), (5), (10), (25), (40), (60), (100); +analyze table tc; +analyze table te; +analyze table t1; +analyze table t2; +analyze table t3; +analyze table t4; +create definer='root'@'localhost' view v as select * from tc; +explain format = 'brief' with cte as (select /*+ MERGE() */ * from tc where tc.a < 60) select * from cte where cte.a <18; +show warnings; +explain format = 'brief' with cte as (select * from tc where tc.a < 60) select * from cte c1, cte c2 where c1.a <18; +show warnings; +explain format = 'brief' with cte as (select /*+ MERGE() */ * from v) select * from cte; +show warnings; +explain format = 'brief' WITH cte1 AS (SELECT /*+ MERGE() */ a FROM tc), cte2 AS (SELECT /*+ MERGE()*/ c FROM te) SELECT * FROM cte1 JOIN cte2 WHERE cte1.a = cte2.c; +show warnings; +explain format = 'brief' WITH cte1 AS (SELECT a FROM tc), cte2 AS (SELECT /*+ MERGE() */ c FROM te) SELECT * FROM cte1 JOIN cte2 WHERE cte1.a = cte2.c; +show warnings; +explain format = 'brief' with recursive cte1(c1) as (select 1 union select /*+ MERGE() */ c1 + 1 c1 from cte1 where c1 < 100) select * from cte1; +show warnings; +explain format = 'brief' WITH cte1 AS (SELECT * FROM t1) SELECT /*+ MERGE() */ * FROM cte1 join t2 on cte1.a = t2.b; +show warnings; +explain format = 'brief' with cte1 as (with cte3 as (select /*+ MERGE() */ * from t1),cte4 as (select /*+ MERGE() */ * from t2) select /*+ MERGE() */ * from cte3,cte4) ,cte2 as (select /*+ MERGE() */ * from t3) select * from cte1,cte2; +show warnings; +explain format = 'brief' with cte1 as (select * from tc), cte2 as (with cte3 as (select /*+ MERGE() */ * from te) ,cte4 as (select * from tc) select * from cte3,cte4) select * from cte2; +show warnings; +explain format = 'brief' with cte1 as (with cte2 as (select /*+ MERGE() */ * from te) ,cte3 as (select /*+ MERGE() */ * from tc) select /*+ MERGE() */ * from cte2,cte3) select * from cte1; +show warnings; +explain format = 'brief' with cte1 as (select * from t1), cte2 as (with cte3 as (with cte5 as (select * from t2),cte6 as (select * from t3) select * from cte5,cte6) ,cte4 as (select * from t4) select * from cte3,cte4) select * from cte1,cte2; +show warnings; +explain format = 'brief' with cte1 as (select /*+ MERGE() */ * from t1), cte2 as (with cte3 as (with cte5 as (select * from t2),cte6 as (select * from t3) select * from cte5,cte6) ,cte4 as (select * from t4) select * from cte3,cte4) select * from cte1,cte2; +show warnings; +explain format = 'brief' with cte1 as (select * from t1), cte2 as (with cte3 as (with cte5 as (select * from t2),cte6 as (select * from t3) select * from cte5,cte6) ,cte4 as (select /*+ MERGE() */ * from t4) select * from cte3,cte4) select * from cte1,cte2; +show warnings; +explain format = 'brief' with cte1 as (select * from t1), cte2 as (with cte3 as (with cte5 as (select * from t2),cte6 as (select /*+ MERGE() */ * from t3) select * from cte5,cte6) ,cte4 as (select * from t4) select * from cte3,cte4) select * from cte1,cte2; +show warnings; +explain format = 'brief' with cte2 as (with cte4 as (select * from tc) select * from te, cte4) select * from cte2; +show warnings; +explain format = 'brief' with cte2 as (with cte4 as (select /*+ merge() */ * from tc) select * from te, cte4) select * from cte2; +show warnings; +explain format = 'brief' with cte1 as (with cte2 as (with cte3 as (select /*+ MERGE() */ * from t2) select /*+ MERGE() */ * from cte3) select * from cte2,(select /*+ MERGE() */ * from t1) ttt) select * from cte1; +show warnings; +explain format = 'brief' with cte1 as (with cte2 as (with cte3 as (select /*+ MERGE() */ * from t2) select /*+ MERGE() */ * from cte3) select * from cte2,(select * from t1) ttt) select * from cte1,(select /*+ MERGE() */ * from t3) ttw; +show warnings; +explain format = 'brief' with cte1 as (with cte2 as (with cte3 as (select /*+ MERGE() */ * from t2) select /*+ MERGE() */ * from cte3) select * from cte2,(select * from t1) ttt) select * from cte1,(select * from t3) ttw; +show warnings; + +# TestForceInlineCTE +set tidb_cost_model_version=2; +drop table if exists t; +CREATE TABLE `t` (`a` int(11)); +insert into t values (1), (5), (10), (15), (20), (30), (50); +set tidb_opt_force_inline_cte=1; -- enable force inline CTE; +explain format='brief' with cte as (select * from t) select * from cte; -- inline; +show warnings; +explain format='brief' with cte as (select /*+ MERGE() */ * from t) select * from cte; -- inline; +show warnings; +explain format='brief' with cte as (select * from t) select * from cte cte1, cte cte2; -- inline CTEs is used by multi consumers; +show warnings; +explain format='brief' with cte1 as (select * from t), cte2 as (select a from cte1 group by a) select * from cte1, cte2; -- multi inline CTEs; +show warnings; +explain format='brief' with recursive cte1(c1) as (select 1 union select c1 + 1 c1 from cte1 where c1 < 100) select * from cte1; -- Recursive CTE can not be inlined; +show warnings; +explain format='brief' with cte1 as (with cte2 as (select * from t) select * from cte2) select * from cte1; -- non-recursive 'cte2' definition inside another non-recursive 'cte1'; +show warnings; +explain format='brief' with recursive cte2(c1) as (with cte1 as (select * from t) select a c1 from cte1 union select c1+1 c1 from cte2 where c1 < 100) select * from cte2; -- non-recursive 'cte1' inside recursive 'cte2'; +show warnings; +explain format='brief' with cte1 as (with recursive cte2(c1) as (select 1 union select c1 + 1 c1 from cte2 where c1 < 100) select * from cte2) select * from cte1; -- recursive 'cte2' inside non-recursive 'cte1'; +show warnings; +set tidb_opt_force_inline_cte=0; -- disable force inline CTE; +explain format='brief' with cte as (select * from t) select * from cte; -- inlined by single consumer; +show warnings; +explain format='brief' with cte as (select /*+ MERGE() */ * from t) select * from cte; -- inline, merge hint override session variable; +show warnings; +explain format='brief' with recursive cte1(c1) as (select 1 union select /*+ MERGE() */ c1 + 1 c1 from cte1 where c1 < 100) select * from cte1; -- Recursive CTE can not be inlined; +show warnings; +explain format='brief' with cte1 as (with cte2 as (select * from t) select * from cte2) select * from cte1; -- non-recursive 'cte2' definition inside another non-recursive 'cte1'; +show warnings; +explain format='brief' with recursive cte2(c1) as (with cte1 as (select * from t) select a c1 from cte1 union select c1+1 c1 from cte2 where c1 < 100) select * from cte2; -- non-recursive 'cte1' inside recursive 'cte2'; +show warnings; +explain format='brief' with cte1 as (with recursive cte2(c1) as (select 1 union select c1 + 1 c1 from cte2 where c1 < 100) select * from cte2) select * from cte1; -- recursive 'cte2' inside non-recursive 'cte1'; +show warnings; + +set tidb_cost_model_version=DEFAULT; +set tidb_opt_force_inline_cte=DEFAULT; + +# TestSingleConsumerCTE +drop table if exists t, t1, t2; +CREATE TABLE `t` (`a` int(11)); +create table t1 (c1 int primary key, c2 int, index c2 (c2)); +create table t2 (c1 int unique, c2 int); +insert into t values (1), (5), (10), (15), (20), (30), (50); +explain format='brief' with recursive cte1(c1) as (select c1 from t1 union select c1 from t2 limit 1) select * from cte1; -- non-recursive limit, inline cte1; +explain format='brief' with recursive cte1(c1) as (select c1 from t1 union select c1 from t2 limit 100 offset 100) select * from cte1; -- non-recursive limit, inline cte1; +explain format='brief' with recursive cte1(c1) as (select c1 from t1 union select c1 from t2 limit 0 offset 0) select * from cte1; -- non-recursive limit, inline cte1; +explain format='brief' with cte1 as (select 1), cte2 as (select 2) select * from cte1 union (with cte2 as (select 3) select * from cte2 union all select * from cte2) -- inline cte1, not inline cte2; +explain format='brief' with base1 as (WITH RECURSIVE cte(a) AS (with tmp as (select 1 as a) SELECT a from tmp UNION SELECT a+1 FROM cte) SELECT * FROM cte) select * from base1; -- issue #43318; +explain format='brief' with cte as (select 1) select * from cte; -- inline cte; +explain format='brief' with cte1 as (select 1), cte2 as (select 2) select * from cte1 union select * from cte2; -- inline cte1, cte2; +explain format='brief' with cte as (select 1) select * from cte union select * from cte; -- cannot be inlined; +explain format='brief' with cte as (with cte as (select 1) select * from cte) select * from cte; -- inline nested cte; +explain format='brief' with cte as (with cte as (select 1) select * from cte) select * from cte a, cte b; -- inline inner cte, cannot be inlined outer cte; +explain format='brief' with cte1 as (select 1), cte2 as (with cte3 as (select * from cte1) select * from cte3) select * from cte1, cte2; -- inline cte2, cte3, cannot be inlined cte1; +explain format='brief' with cte1 as (select 1), cte2 as (with cte3 as (select * from cte1) select * from cte3) select * from cte2; -- inline cte1, cte2, cte3; +explain format='brief' with cte1 as (select 1), cte2 as (select * from cte1) select * from cte2 a, cte2 b; -- inline cte1, cannot be inlined cte2; +explain format='brief' with recursive cte(a) as (select 1 union select a from cte) select * from cte; -- recursive cte cannot be inlined; +explain format='brief' with x as (select * from (select a from t for update) s) select * from x where a = 1; +set tidb_opt_force_inline_cte=1; -- enable force inline CTE; +explain format='brief' with cte as (select 1) select * from cte union select * from cte; -- force inline cte while multi-consumer; +set tidb_opt_force_inline_cte=0; -- disable force inline CTE; +explain format='brief' with cte as (select 1) select /*+ MERGE() */ * from cte union select * from cte; -- firstly inline cte, secondly cannot be inlined; +explain format='brief' with a as (select 8 as id from dual),maxa as (select max(id) as max_id from a),b as (with recursive temp as (select 1 as lvl from dual union all select lvl+1 from temp, maxa where lvl < max_id)select * from temp) select * from b; -- issue #47711, maxa cannot be inlined because it contains agg and in the recursive part of cte temp; +explain format='brief' with a as (select count(*) from t1), b as (select 2 as bb from a), c as (with recursive tmp as (select 1 as res from t1 union all select res+1 from tmp,b where res+1 < bb) select * from tmp) select * from c; -- inline a, cannot be inline b because b indirectly contains agg and in the recursive part of cte tmp; +explain format='brief' with a as (select count(*) from t1), b as (select 2 as bb from a), c as (with recursive tmp as (select bb as res from b union all select res+1 from tmp where res +1 < 10) select * from tmp) select * from c; -- inline a, b, cannot be inline tmp, c; + +# TestPushdownDistinctEnableAggPushDownDisable +drop table if exists t; +create table t(a int, b int, c int, index(c)); +insert into t values (1, 1, 1), (1, 1, 3), (1, 2, 3), (2, 1, 3), (1, 2, NULL); +drop table if exists pt; +CREATE TABLE pt (a int, b int) PARTITION BY RANGE (a) ( + PARTITION p0 VALUES LESS THAN (2), + PARTITION p1 VALUES LESS THAN (100) + ); +drop table if exists tc; +CREATE TABLE `tc`(`timestamp` timestamp NULL DEFAULT NULL, KEY `idx_timestamp` (`timestamp`)) PARTITION BY RANGE ( UNIX_TIMESTAMP(`timestamp`) ) (PARTITION `p2020072312` VALUES LESS THAN (1595480400),PARTITION `p2020072313` VALUES LESS THAN (1595484000)); +drop table if exists ta; +create table ta(a int); +insert into ta values(1), (1); +drop table if exists tb; +create table tb(a int); +insert into tb values(1), (1); +set session sql_mode=''; +set session tidb_hashagg_partial_concurrency=1; +set session tidb_hashagg_final_concurrency=1; +set @@tidb_partition_prune_mode='static'; +set @@session.tidb_opt_distinct_agg_push_down = 1; +set session tidb_opt_agg_push_down = 0; +set tidb_cost_model_version=2; +explain format = 'brief' select /*+ HASH_AGG(), AGG_TO_COP() */ sum(distinct b) from pt; +select /*+ HASH_AGG(), AGG_TO_COP() */ sum(distinct b) from pt; +explain format = 'brief' select /*+ HASH_AGG(), AGG_TO_COP() */ count(distinct a) from (select * from ta union all select * from tb) t; +select /*+ HASH_AGG(), AGG_TO_COP() */ count(distinct a) from (select * from ta union all select * from tb) t; +explain format = 'brief' select distinct DATE_FORMAT(timestamp, '%Y-%m-%d %H') as tt from tc ; +select distinct DATE_FORMAT(timestamp, '%Y-%m-%d %H') as tt from tc ; + +set session sql_mode=DEFAULT; +set session tidb_hashagg_partial_concurrency=DEFAULT; +set session tidb_hashagg_final_concurrency=DEFAULT; +set @@tidb_partition_prune_mode=DEFAULT; +set @@session.tidb_opt_distinct_agg_push_down = DEFAULT; +set session tidb_opt_agg_push_down = DEFAULT; + +# TestNominalSort +drop table if exists t; +create table t (a int, b int, index idx_a(a), index idx_b(b)); +insert into t values(1, 1); +insert into t values(1, 2); +insert into t values(2, 4); +insert into t values(3, 5); +explain format = 'brief' select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by t1.a; +select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by t1.a; +explain format = 'brief' select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by t1.a+1; +select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by t1.a+1; +explain format = 'brief' select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by t1.a-1; +select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by t1.a-1; +explain format = 'brief' select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by -t1.a; +select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by -t1.a; +explain format = 'brief' select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by -t1.a+3; +select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by -t1.a+3; +explain format = 'brief' select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 1+t1.a; +select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 1+t1.a; +explain format = 'brief' select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 1-t1.a; +select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 1-t1.a; +explain format = 'brief' select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 1-t1.a+3; +select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 1-t1.a+3; +explain format = 'brief' select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 1+t1.a+3; +select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 1+t1.a+3; +explain format = 'brief' select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 3*t1.a; +select /*+ TIDB_SMJ(t1, t2) */ t1.a from t t1, t t2 where t1.a = t2.b order by 3*t1.a; + +# TestNthPlanHintWithExplain +drop table if exists test.tt; +create table test.tt (a int,b int, index(a), index(b)); +insert into test.tt values (1, 1), (2, 2), (3, 4); +set @@tidb_partition_prune_mode='static'; +explain format = 'brief' select /*+nth_plan(1)*/ * from test.tt where a=1 and b=1; +explain format = 'brief' select /*+nth_plan(2)*/ * from test.tt where a=1 and b=1; +explain format = 'brief' select /*+nth_plan(3)*/ * from test.tt where a=1 and b=1; +explain format = 'brief' select /*+nth_plan(2)*/ * from test.tt where a=1 and b=1; + +## Currently, its output is the same as the second test case in the testdata, which is `/*+nth_plan(2)*/`. If this doesn't +## hold in the future, you may need to modify this. +explain format = 'brief' select * from test.tt where a=1 and b=1; + +set @@tidb_partition_prune_mode=DEFAULT; + +# TestEnumIndex +drop table if exists t; +create table t(e enum('c','b','a',''), index idx(e)); +insert ignore into t values(0),(1),(2),(3),(4); +explain format='brief' select e from t where e = 'b'; +--sorted_result +select e from t where e = 'b'; +explain format='brief' select e from t where e != 'b'; +--sorted_result +select e from t where e != 'b'; +explain format='brief' select e from t where e > 'b'; +--sorted_result +select e from t where e > 'b'; +explain format='brief' select e from t where e >= 'b'; +--sorted_result +select e from t where e >= 'b'; +explain format='brief' select e from t where e < 'b'; +--sorted_result +select e from t where e < 'b'; +explain format='brief' select e from t where e <= 'b'; +--sorted_result +select e from t where e <= 'b'; +explain format='brief' select e from t where e = 2; +--sorted_result +select e from t where e = 2; +explain format='brief' select e from t where e != 2; +--sorted_result +select e from t where e != 2; +explain format='brief' select e from t where e > 2; +--sorted_result +select e from t where e > 2; +explain format='brief' select e from t where e >= 2; +--sorted_result +select e from t where e >= 2; +explain format='brief' select e from t where e < 2; +--sorted_result +select e from t where e < 2; +explain format='brief' select e from t where e <= 2; +--sorted_result +select e from t where e <= 2; +explain format='brief' select e from t where e > ''; +--sorted_result +select e from t where e > ''; +explain format='brief' select e from t where e > 'd'; +--sorted_result +select e from t where e > 'd'; +explain format='brief' select e from t where e > -1; +--sorted_result +select e from t where e > -1; +explain format='brief' select e from t where e > 5; +--sorted_result +select e from t where e > 5; +explain format='brief' select e from t where e = ''; +--sorted_result +select e from t where e = ''; +explain format='brief' select e from t where e != ''; +--sorted_result +select e from t where e != ''; + +# TestIssue27233 +drop table if exists PK_S_MULTI_31; +CREATE TABLE `PK_S_MULTI_31` ( + `COL1` tinyint(45) NOT NULL, + `COL2` tinyint(45) NOT NULL, + PRIMARY KEY (`COL1`,`COL2`) /*T![clustered_index] NONCLUSTERED */ +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; +insert into PK_S_MULTI_31 values(122,100),(124,-22),(124,34),(127,103); +explain format='brief' SELECT col2 FROM PK_S_MULTI_31 AS T1 WHERE (SELECT count(DISTINCT COL1, COL2) FROM PK_S_MULTI_31 AS T2 WHERE T2.COL1>T1.COL1)>2 order by col2; +--sorted_result +SELECT col2 FROM PK_S_MULTI_31 AS T1 WHERE (SELECT count(DISTINCT COL1, COL2) FROM PK_S_MULTI_31 AS T2 WHERE T2.COL1>T1.COL1)>2 order by col2; + +# TestSelectionPartialPushDown +drop table if exists t1, t2; +create table t1(a int, b int as (a+1) virtual); +create table t2(a int, b int as (a+1) virtual, c int, key idx_a(a)); +-- echo ## Make sure row_count(tikv_selection) == row_count(table_reader) and row_count(table_reader) > row_count(tidb_selection) +explain format='brief' select * from t1 where a > 1 and b > 1; +-- echo ## Make sure row_count(tikv_selection) == row_count(index_lookup) and row_count(index_lookup) > row_count(tidb_selection) +explain format='brief' select * from t2 use index(idx_a) where a > 1 and b > 1 and c > 1; + +# TestIssue28316 +drop table if exists t; +create table t(a int); +explain format='brief' select * from t where t.a < 3 and t.a < 3; + +# TestSkewDistinctAgg +set tidb_cost_model_version=2; +drop table if exists t; +CREATE TABLE `t` (`a` int(11), `b` int(11), `c` int(11), `d` date); +insert into t (a,b,c,d) value(1,4,5,'2019-06-01'); +insert into t (a,b,c,d) value(2,null,1,'2019-07-01'); +insert into t (a,b,c,d) value(3,4,5,'2019-08-01'); +insert into t (a,b,c,d) value(3,6,2,'2019-09-01'); +insert into t (a,b,c,d) value(10,4,null,'2020-06-01'); +insert into t (a,b,c,d) value(20,null,1,'2020-07-01'); +insert into t (a,b,c,d) value(30,4,5,'2020-08-01'); +insert into t (a,b,c,d) value(30,6,5,'2020-09-01'); +select date_format(d,'%Y') as df, sum(a), count(b), count(distinct c) from t group by date_format(d,'%Y') order by df; +set @@tidb_opt_skew_distinct_agg=1; +select date_format(d,'%Y') as df, sum(a), count(b), count(distinct c) from t group by date_format(d,'%Y') order by df; +select count(distinct b), sum(c) from t group by a order by 1,2; +select count(distinct b) from t group by date_format(d,'%Y') order by 1; +select count(a), count(distinct b), max(b) from t group by date_format(d,'%Y') order by 1,2,3; +select count(a), count(distinct b), max(b) from t group by date_format(d,'%Y'),c order by 1,2,3; +select avg(distinct b), count(a), sum(b) from t group by date_format(d,'%Y'),c order by 1,2,3; +explain format='brief' select date_format(d,'%Y') as df, sum(a), count(b), count(distinct c) from t group by date_format(d,'%Y'); +explain format='brief' select d, a, count(*), count(b), count(distinct c) from t group by d, a; +explain format='brief' select d, sum(a), count(b), avg(distinct c) from t group by d; + +set tidb_cost_model_version=DEFAULT; +set @@tidb_opt_skew_distinct_agg=DEFAULT; + +# TestHJBuildAndProbeHint +set tidb_cost_model_version=2; +drop table if exists t1, t2, t3; +create table t1(a int primary key, b int not null); +create table t2(a int primary key, b int not null); +create table t3(a int primary key, b int not null); +insert into t1 values(1,1),(2,2); +insert into t2 values(1,1),(2,1); +insert into t3 values(1,1),(2,1); +explain format = 'brief' select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_build(t2), hash_join_probe(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_build(t2), hash_join_probe(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_probe(t2), hash_join_build(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_probe(t2), hash_join_build(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +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; +select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +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; +select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +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; +select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +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; +select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +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; +select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 right join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +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; +select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 right join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +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; +select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 right join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +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; +select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 right join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 straight_join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 straight_join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 straight_join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 straight_join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 straight_join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 straight_join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 straight_join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 straight_join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 cross join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 cross join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 cross join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 cross join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 cross join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 cross join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 cross join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 cross join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_build(t1) */ * from t1 where t1.a in (select t2.a from t2 where t1.b = t2.b); +select /*+ hash_join_build(t1) */ * from t1 where t1.a in (select t2.a from t2 where t1.b = t2.b); +show warnings; +explain format = 'brief' select /*+ hash_join_probe(t1) */ * from t1 where t1.a in (select t2.a from t2 where t1.b = t2.b); +select /*+ hash_join_probe(t1) */ * from t1 where t1.a in (select t2.a from t2 where t1.b = t2.b); +show warnings; +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); +select /*+ hash_join_build(t2@sel_2) */ * from t1 where t1.a in (select t2.a from t2 where t1.b = t2.b); +show warnings; +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); +select /*+ hash_join_probe(t2@sel_2) */ * from t1 where t1.a in (select t2.a from t2 where t1.b = t2.b); +show warnings; +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); +select /*+ hash_join_build(t1) */ * from t1 where t1.a not in (select t2.a from t2 where t1.b = t2.b); +show warnings; +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); +select /*+ hash_join_probe(t1) */ * from t1 where t1.a not in (select t2.a from t2 where t1.b = t2.b); +show warnings; +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); +select /*+ hash_join_build(t2@sel_2) */ * from t1 where t1.a not in (select t2.a from t2 where t1.b = t2.b); +show warnings; +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); +select /*+ hash_join_probe(t2@sel_2) */ * from t1 where t1.a not in (select t2.a from t2 where t1.b = t2.b); +show warnings; +explain format = 'brief' select /*+ hash_join_build(t1) */ sum(t1.a in (select a from t2)) from t1; +select /*+ hash_join_build(t1) */ sum(t1.a in (select a from t2)) from t1; +show warnings; +explain format = 'brief' select /*+ hash_join_probe(t1) */ sum(t1.a in (select a from t2)) from t1; +select /*+ hash_join_probe(t1) */ sum(t1.a in (select a from t2)) from t1; +show warnings; +explain format = 'brief' select /*+ hash_join_build(t2@sel_2) */ sum(t1.a in (select a from t2)) from t1; +select /*+ hash_join_build(t2@sel_2) */ sum(t1.a in (select a from t2)) from t1; +show warnings; +explain format = 'brief' select /*+ hash_join_probe(t2@sel_2) */ sum(t1.a in (select a from t2)) from t1; +select /*+ hash_join_probe(t2@sel_2) */ sum(t1.a in (select a from t2)) from t1; +show warnings; +explain format = 'brief' select /*+ hash_join_build(t1) */ sum(t1.a not in (select a from t2)) from t1; +select /*+ hash_join_build(t1) */ sum(t1.a not in (select a from t2)) from t1; +show warnings; +explain format = 'brief' select /*+ hash_join_probe(t1) */ sum(t1.a not in (select a from t2)) from t1; +select /*+ hash_join_probe(t1) */ sum(t1.a not in (select a from t2)) from t1; +show warnings; +explain format = 'brief' select /*+ hash_join_build(t2@sel_2) */ sum(t1.a not in (select a from t2)) from t1; +select /*+ hash_join_build(t2@sel_2) */ sum(t1.a not in (select a from t2)) from t1; +show warnings; +explain format = 'brief' select /*+ hash_join_probe(t2@sel_2) */ sum(t1.a not in (select a from t2)) from t1; +select /*+ hash_join_probe(t2@sel_2) */ sum(t1.a not in (select a from t2)) from t1; +show warnings; +explain format = 'brief' select /*+ hash_join_probe(t2, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_probe(t2, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_build(t1, t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_build(t1, t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_probe(tt) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_probe(tt) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_build(tt) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_build(tt) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_probe(tt) */ tt.a, t2.a from t1 as tt join t2 on tt.a=t2.a and tt.b=t2.b; +select /*+ hash_join_probe(tt) */ tt.a, t2.a from t1 as tt join t2 on tt.a=t2.a and tt.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_build(tt) */ tt.a, t2.a from t1 as tt join t2 on tt.a=t2.a and tt.b=t2.b; +select /*+ hash_join_build(tt) */ tt.a, t2.a from t1 as tt join t2 on tt.a=t2.a and tt.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_probe(t2, t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_probe(t2, t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_build(t1, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_build(t1, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_build(t1) hash_join_probe(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_build(t1) hash_join_probe(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_build(t2) hash_join_probe(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_build(t2) hash_join_probe(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_build(t1) leading(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a; +select /*+ hash_join_build(t1) leading(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a; +show warnings; +explain format = 'brief' select /*+ hash_join_build(t1) leading(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a; +select /*+ hash_join_build(t1) leading(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a; +show warnings; +explain format = 'brief' select /*+ hash_join_probe(t1) leading(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a; +select /*+ hash_join_probe(t1) leading(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a; +show warnings; +explain format = 'brief' select /*+ hash_join_probe(t1) leading(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a; +select /*+ hash_join_probe(t1) leading(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a; +show warnings; +explain format = 'brief' select /*+ hash_join_build(t1) straight_join() */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a; +select /*+ hash_join_build(t1) straight_join() */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a; +show warnings; +explain format = 'brief' select /*+ hash_join_build(t1) straight_join() */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a; +select /*+ hash_join_build(t1) straight_join() */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a; +show warnings; +explain format = 'brief' select /*+ hash_join_probe(t1) straight_join() */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a; +select /*+ hash_join_probe(t1) straight_join() */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a; +show warnings; +explain format = 'brief' select /*+ hash_join_probe(t1) straight_join() */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a; +select /*+ hash_join_probe(t1) straight_join() */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b join t3 on t2.a = t3.a; +show warnings; +explain format = 'brief' select /*+ hash_join_build(t2) hash_join(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_build(t2) hash_join(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_probe(t2) hash_join(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_probe(t2) hash_join(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_build(t2) hash_join(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_build(t2) hash_join(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_probe(t2) hash_join(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_probe(t2) hash_join(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_build(t2) hash_join(t2, t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_build(t2) hash_join(t2, t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_probe(t2) hash_join(t2, t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_probe(t2) hash_join(t2, t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_build(t2) INL_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_build(t2) INL_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_probe(t2) INL_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_probe(t2) INL_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_build(t1) INL_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_build(t1) INL_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_probe(t1) INL_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_probe(t1) INL_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_build(t2) INL_HASH_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_build(t2) INL_HASH_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_probe(t2) INL_HASH_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_probe(t2) INL_HASH_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_build(t1) INL_HASH_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_build(t1) INL_HASH_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_probe(t1) INL_HASH_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_probe(t1) INL_HASH_JOIN(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_build(t2) merge_join(t1, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_build(t2) merge_join(t1, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_probe(t2) merge_join(t1, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_probe(t2) merge_join(t1, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_build(t1) merge_join(t1, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_build(t1) merge_join(t1, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' select /*+ hash_join_probe(t1) merge_join(t1, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +select /*+ hash_join_probe(t1) merge_join(t1, t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +show warnings; +explain format = 'brief' SELECT * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.a = t1.a); +SELECT * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.a = t1.a); +show warnings; +explain format = 'brief' SELECT /*+ hash_join_probe(t1) */ * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.a = t1.a); +SELECT /*+ hash_join_probe(t1) */ * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.a = t1.a); +show warnings; +explain format = 'brief' SELECT /*+ hash_join_probe(t2@sel_2) */ * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.a = t1.a); +SELECT /*+ hash_join_probe(t2@sel_2) */ * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.a = t1.a); +show warnings; +explain format = 'brief' SELECT /*+ hash_join_probe(t1) */ * FROM t1 WHERE EXISTS (SELECT /*+ SEMI_JOIN_REWRITE() */ 1 FROM t2 WHERE t2.a = t1.a); +SELECT /*+ hash_join_probe(t1) */ * FROM t1 WHERE EXISTS (SELECT /*+ SEMI_JOIN_REWRITE() */ 1 FROM t2 WHERE t2.a = t1.a); +show warnings; +explain format = 'brief' SELECT /*+ hash_join_probe(t2@sel_2) */ * FROM t1 WHERE EXISTS (SELECT /*+ SEMI_JOIN_REWRITE() */ 1 FROM t2 WHERE t2.a = t1.a); +SELECT /*+ hash_join_probe(t2@sel_2) */ * FROM t1 WHERE EXISTS (SELECT /*+ SEMI_JOIN_REWRITE() */ 1 FROM t2 WHERE t2.a = t1.a); +show warnings; +explain format = 'brief' SELECT /*+ hash_join_build(t1) */ * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.a = t1.a); +SELECT /*+ hash_join_build(t1) */ * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.a = t1.a); +show warnings; +explain format = 'brief' SELECT /*+ hash_join_build(t2@sel_2) */ * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.a = t1.a); +SELECT /*+ hash_join_build(t2@sel_2) */ * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.a = t1.a); +show warnings; +explain format = 'brief' SELECT /*+ hash_join_build(t1) */ * FROM t1 WHERE EXISTS (SELECT /*+ SEMI_JOIN_REWRITE() */ 1 FROM t2 WHERE t2.a = t1.a); +SELECT /*+ hash_join_build(t1) */ * FROM t1 WHERE EXISTS (SELECT /*+ SEMI_JOIN_REWRITE() */ 1 FROM t2 WHERE t2.a = t1.a); +show warnings; +explain format = 'brief' SELECT /*+ hash_join_build(t2@sel_2) */ * FROM t1 WHERE EXISTS (SELECT /*+ SEMI_JOIN_REWRITE() */ 1 FROM t2 WHERE t2.a = t1.a); +SELECT /*+ hash_join_build(t2@sel_2) */ * FROM t1 WHERE EXISTS (SELECT /*+ SEMI_JOIN_REWRITE() */ 1 FROM t2 WHERE t2.a = t1.a); +show warnings; +explain format = 'brief' SELECT t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +SELECT t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +show warnings; +explain format = 'brief' SELECT /*+ hash_join_build(t1) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +SELECT /*+ hash_join_build(t1) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +show warnings; +explain format = 'brief' SELECT /*+ hash_join_probe(t1) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +SELECT /*+ hash_join_probe(t1) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +show warnings; +explain format = 'brief' SELECT /*+ hash_join_build(t2@sel_2) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +SELECT /*+ hash_join_build(t2@sel_2) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +show warnings; +explain format = 'brief' SELECT /*+ hash_join_probe(t2@sel_2) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +SELECT /*+ hash_join_probe(t2@sel_2) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +show warnings; +explain format = 'brief' SELECT /*+ USE_TOJA(TRUE) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +SELECT /*+ USE_TOJA(TRUE) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +show warnings; +explain format = 'brief' SELECT /*+ USE_TOJA(TRUE) hash_join_build(t1) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +SELECT /*+ USE_TOJA(TRUE) hash_join_build(t1) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +show warnings; +explain format = 'brief' SELECT /*+ USE_TOJA(TRUE) hash_join_probe(t1) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +SELECT /*+ USE_TOJA(TRUE) hash_join_probe(t1) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +show warnings; +explain format = 'brief' SELECT /*+ USE_TOJA(TRUE) hash_join_build(t2@sel_2) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +SELECT /*+ USE_TOJA(TRUE) hash_join_build(t2@sel_2) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +show warnings; +explain format = 'brief' SELECT /*+ USE_TOJA(TRUE) hash_join_probe(t2@sel_2) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +SELECT /*+ USE_TOJA(TRUE) hash_join_probe(t2@sel_2) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +show warnings; +explain format = 'brief' SELECT /*+ USE_TOJA(false) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +SELECT /*+ USE_TOJA(false) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +show warnings; +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); +SELECT /*+ USE_TOJA(false) hash_join_build(t1) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +show warnings; +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); +SELECT /*+ USE_TOJA(false) hash_join_probe(t1) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); +show warnings; +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); +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); +show warnings; +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); +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); +show warnings; + +set tidb_cost_model_version=DEFAULT; + +# TestHJBuildAndProbeHint4StaticPartitionTable +set tidb_cost_model_version=2; +drop table if exists t1, t2, t3; +create table t1(a int, b int) partition by hash(a) partitions 4; +create table t2(a int, b int) partition by hash(a) partitions 5; +create table t3(a int, b int) partition by hash(b) partitions 3; +insert into t1 values(1,1),(2,2); +insert into t2 values(1,1),(2,1); +insert into t3 values(1,1),(2,1); +set @@tidb_partition_prune_mode="static"; +explain format = 'brief' select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +--sorted_result +select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +explain format = 'brief' select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +--sorted_result +select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +explain format = 'brief' select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +--sorted_result +select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +explain format = 'brief' select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; +--sorted_result +select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 join t2 on t1.a=t2.a and t1.b=t2.b; + +set tidb_cost_model_version=DEFAULT; +set @@tidb_partition_prune_mode=DEFAULT; + +# TestNoDecorrelateHint +set tidb_cost_model_version=2; +drop table if exists t1, t2, t3, ta, tb, tc, td; +create table t1(a int, b int); +create table t2(a int primary key, b int); +create table t3(a int, b int); +insert into t1 values(1,1),(2,2); +insert into t2 values(1,1),(2,1); +insert into t3 values(1,1),(2,1); +create table ta(id int, code int, name varchar(20), index idx_ta_id(id),index idx_ta_name(name), index idx_ta_code(code)); +create table tb(id int, code int, name varchar(20), index idx_tb_id(id),index idx_tb_name(name)); +create table tc(id int, code int, name varchar(20), index idx_tc_id(id),index idx_tc_name(name)); +create table td(id int, code int, name varchar(20), index idx_tc_id(id),index idx_tc_name(name)); +explain format = 'brief' select /*+ no_decorrelate() */ * from t1; +--sorted_result +select /*+ no_decorrelate() */ * from t1; +show warnings; +explain format = 'brief' select * from t1, (select /*+ no_decorrelate() */ * from t2) n; +--sorted_result +select * from t1, (select /*+ no_decorrelate() */ * from t2) n; +show warnings; +explain format = 'brief' select a+1, b-1 from (select /*+ no_decorrelate() */ * from t1) n; +--sorted_result +select a+1, b-1 from (select /*+ no_decorrelate() */ * from t1) n; +show warnings; +explain format = 'brief' select exists (select /*+ semi_join_rewrite(), no_decorrelate() */ * from t1 where t1.a=t3.a) from t3; +--sorted_result +select exists (select /*+ semi_join_rewrite(), no_decorrelate() */ * from t1 where t1.a=t3.a) from t3; +show warnings; +explain format = 'brief' select t1.a from t1 where t1.a in (select t2.b from t2 where t2.a = t1.b); +--sorted_result +select t1.a from t1 where t1.a in (select t2.b from t2 where t2.a = t1.b); +show warnings; +explain format = 'brief' select t1.a from t1 where t1.a in (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b); +--sorted_result +select t1.a from t1 where t1.a in (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b); +show warnings; +explain format = 'brief' select t1.a from t1 where t1.a = any (select t2.b from t2 where t2.a = t1.b); +--sorted_result +select t1.a from t1 where t1.a = any (select t2.b from t2 where t2.a = t1.b); +show warnings; +explain format = 'brief' select t1.a from t1 where t1.a = any (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b); +--sorted_result +select t1.a from t1 where t1.a = any (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b); +show warnings; +explain format = 'brief' select t1.a, t1.a != any (select t2.b from t2 where t2.a = t1.b) from t1; +--sorted_result +select t1.a, t1.a != any (select t2.b from t2 where t2.a = t1.b) from t1; +show warnings; +explain format = 'brief' select t1.a, t1.a != any (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b) from t1; +--sorted_result +select t1.a, t1.a != any (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b) from t1; +show warnings; +explain format = 'brief' select t1.a, t1.a > all (select t2.b from t2 where t2.a = t1.b) from t1; +--sorted_result +select t1.a, t1.a > all (select t2.b from t2 where t2.a = t1.b) from t1; +show warnings; +explain format = 'brief' select t1.a, t1.a > all (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b) from t1; +--sorted_result +select t1.a, t1.a > all (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b) from t1; +show warnings; +explain format = 'brief' select t1.a, (select t2.b from t2 where t2.a = t1.b) from t1; +--sorted_result +select t1.a, (select t2.b from t2 where t2.a = t1.b) from t1; +show warnings; +explain format = 'brief' select t1.a, (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b) from t1; +--sorted_result +select t1.a, (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b) from t1; +show warnings; +explain format = 'brief' select t1.a, t1.b not in (select t3.b from t3) from t1; +--sorted_result +select t1.a, t1.b not in (select t3.b from t3) from t1; +show warnings; +explain format = 'brief' select t1.a, t1.b not in (select /*+ no_decorrelate() */ t3.b from t3) from t1; +--sorted_result +select t1.a, t1.b not in (select /*+ no_decorrelate() */ t3.b from t3) from t1; +show warnings; +explain format = 'brief' select exists (select t3.b from t3 where t3.a = t1.b limit 2) from t1; +--sorted_result +select exists (select t3.b from t3 where t3.a = t1.b limit 2) from t1; +show warnings; +explain format = 'brief' select exists (select /*+ no_decorrelate() */ t3.b from t3 where t3.a = t1.b limit 2) from t1; +--sorted_result +select exists (select /*+ no_decorrelate() */ t3.b from t3 where t3.a = t1.b limit 2) from t1; +show warnings; +explain format = 'brief' select t1.a, (select sum(t1.a) from t2 where t2.a = 10) from t1; +--sorted_result +select t1.a, (select sum(t1.a) from t2 where t2.a = 10) from t1; +show warnings; +explain format = 'brief' select t1.a, (select /*+ no_decorrelate() */ sum(t1.a) from t2 where t2.a = 10) from t1; +--sorted_result +select t1.a, (select /*+ no_decorrelate() */ sum(t1.a) from t2 where t2.a = 10) from t1; +show warnings; +explain format = 'brief' select (select count(t3.a) from t3 where t3.b = t1.b) from t1; +--sorted_result +select (select count(t3.a) from t3 where t3.b = t1.b) from t1; +show warnings; +explain format = 'brief' select (select /*+ no_decorrelate() */ count(t3.a) from t3 where t3.b = t1.b) from t1; +--sorted_result +select (select /*+ no_decorrelate() */ count(t3.a) from t3 where t3.b = t1.b) from t1; +show warnings; +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%'; +--sorted_result +SELECT ta.NAME,(SELECT sum(tb.CODE) FROM tb WHERE ta.id = tb.id) tb_sum_code FROM ta WHERE ta.NAME LIKE 'chad999%'; +show warnings; +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%'; +--sorted_result +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%'; +show warnings; +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%'; +--sorted_result +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%'; +show warnings; +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%'; +--sorted_result +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%'; +show warnings; +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%'; +--sorted_result +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%'; +show warnings; +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%'; +--sorted_result +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%'; +show warnings; +explain format = 'brief' SELECT ta.id, 'split' as flag FROM ta WHERE ta.NAME ='chad999' and (select max(tb.code) from tb where ta.id=tb.id ) > 900; +--sorted_result +SELECT ta.id, 'split' as flag FROM ta WHERE ta.NAME ='chad999' and (select max(tb.code) from tb where ta.id=tb.id ) > 900; +show warnings; +explain format = 'brief' SELECT ta.id, 'split' as flag FROM ta WHERE ta.NAME ='chad999' and (select /*+ no_decorrelate() */ max(tb.code) from tb where ta.id=tb.id ) > 900; +--sorted_result +SELECT ta.id, 'split' as flag FROM ta WHERE ta.NAME ='chad999' and (select /*+ no_decorrelate() */ max(tb.code) from tb where ta.id=tb.id ) > 900; +show warnings; +explain format = 'brief' SELECT ta.NAME FROM ta WHERE EXISTS (select 1 from tb where ta.code = tb.code and tb.NAME LIKE 'chad9%') AND (select max(id) from tc where ta.name=tc.name and tc.name like 'chad99%') > 100 and (select max(id) from td where ta.id=td.id and td.name like 'chad999%') > 100; +--sorted_result +SELECT ta.NAME FROM ta WHERE EXISTS (select 1 from tb where ta.code = tb.code and tb.NAME LIKE 'chad9%') AND (select max(id) from tc where ta.name=tc.name and tc.name like 'chad99%') > 100 and (select max(id) from td where ta.id=td.id and td.name like 'chad999%') > 100; +show warnings; +explain format = 'brief' SELECT ta.NAME FROM ta WHERE EXISTS (select /*+ semi_join_rewrite() */ 1 from tb where ta.code = tb.code and tb.NAME LIKE 'chad9%') AND (select /*+ no_decorrelate() */ max(id) from tc where ta.name=tc.name and tc.name like 'chad99%') > 100 and (select /*+ no_decorrelate() */ max(id) from td where ta.id=td.id and td.name like 'chad999%') > 100; +--sorted_result +SELECT ta.NAME FROM ta WHERE EXISTS (select /*+ semi_join_rewrite() */ 1 from tb where ta.code = tb.code and tb.NAME LIKE 'chad9%') AND (select /*+ no_decorrelate() */ max(id) from tc where ta.name=tc.name and tc.name like 'chad99%') > 100 and (select /*+ no_decorrelate() */ max(id) from td where ta.id=td.id and td.name like 'chad999%') > 100; +show warnings; +explain format = 'brief' SELECT ta.NAME FROM ta WHERE EXISTS (select /*+ no_decorrelate() */ 1 from tb where ta.code = tb.code and tb.NAME LIKE 'chad9%') AND (select /*+ no_decorrelate() */ max(id) from tc where ta.name=tc.name and tc.name like 'chad99%') > 100 and (select /*+ no_decorrelate() */ max(id) from td where ta.id=td.id and td.name like 'chad999%') > 100; +--sorted_result +SELECT ta.NAME FROM ta WHERE EXISTS (select /*+ no_decorrelate() */ 1 from tb where ta.code = tb.code and tb.NAME LIKE 'chad9%') AND (select /*+ no_decorrelate() */ max(id) from tc where ta.name=tc.name and tc.name like 'chad99%') > 100 and (select /*+ no_decorrelate() */ max(id) from td where ta.id=td.id and td.name like 'chad999%') > 100; +show warnings; +set tidb_cost_model_version=DEFAULT; + +# TestCountStarForTikv +drop table if exists t, t_pick_row_id; +set tidb_cost_model_version=1; +create table t (a int(11) not null, b varchar(10) not null, c date not null, d char(1) not null, e bigint not null, f datetime not null, g bool not null, h bool ); +create table t_pick_row_id (a char(20) not null); +explain format = 'brief' select count(*) from t; +explain format = 'brief' select count(1), count(3.1415), count(0), count(null) from t -- shouldn't be rewritten; +explain format = 'brief' select count(*) from t where a=1; +explain format = 'brief' select count(*) from t_pick_row_id; +explain format = 'brief' select t.b, t.c from (select count(*) as c from t) a, t where a.c=t.a -- shouldn't be rewritten; +explain format = 'brief' select * from t outTable where outTable.a > (select count(*) from t inn where inn.a = outTable.b) -- shouldn't be rewritten; +explain format = 'brief' select count(*) from t t1, t t2 where t1.a=t2.e -- shouldn't be rewritten; +explain format = 'brief' select count(distinct 1) from t -- shouldn't be rewritten; +explain format = 'brief' select count(1), count(a), count(b) from t -- shouldn't be rewritten; +explain format = 'brief' select a, count(*) from t group by a -- shouldn't be rewritten; +explain format = 'brief' select sum(a) from t -- sum shouldn't be rewritten; +set tidb_cost_model_version=DEFAULT; + +# TestIndexMergeOrderPushDown +drop table if exists t, tcommon, thash; +set tidb_cost_model_version=1; +create table t (a int, b int, c int, index idx(a, c), index idx2(b, c)); +create table tcommon (a int, b int, c int, primary key(a, c), index idx2(b, c)); +create table thash(a int, b int, c int, index idx_ac(a, c), index idx_bc(b, c)) PARTITION BY HASH (`a`) PARTITIONS 4; +explain format = 'brief' select * from t where a = 1 or b = 1 order by c limit 2; +show warnings; +explain format = 'brief' select * from t where a = 1 or b in (1, 2, 3) order by c limit 2; +show warnings; +explain format = 'brief' select * from t where a in (1, 2, 3) or b = 1 order by c limit 2; +show warnings; +explain format = 'brief' select * from t where a in (1, 2, 3) or b in (1, 2, 3) order by c limit 2; +show warnings; +explain format = 'brief' select * from t where (a = 1 and c = 2) or (b = 1) order by c limit 2; +show warnings; +explain format = 'brief' select * from t where (a = 1 and c = 2) or b in (1, 2, 3) order by c limit 2; +show warnings; +explain format = 'brief' select * from t where (a = 1 and c = 2) or (b in (1, 2, 3) and c = 3) order by c limit 2; +show warnings; +explain format = 'brief' select * from t where (a = 1 or b = 2) and c = 3 order by c limit 2; +show warnings; +explain format = 'brief' select * from t where (a = 1 or b = 2) and c in (1, 2, 3) order by c limit 2; +show warnings; +explain format = 'brief' select * from t where (a = 1 or b = 2) and c in (1, 2, 3) order by b limit 2; +show warnings; +explain format = 'brief' select * from tcommon where a = 1 or b = 1 order by c limit 2; +show warnings; +explain format = 'brief' select * from tcommon where (a = 1 and c = 2) or (b = 1) order by c limit 2; +show warnings; +explain format = 'brief' select * from thash use index(idx_ac, idx_bc) where a = 1 or b = 1 order by c limit 2; +show warnings; +set tidb_cost_model_version=DEFAULT; + +# TestIndexMergeSinkLimit +drop table if exists t, t2, t3; +set tidb_cost_model_version=1; +CREATE TABLE `t2` ( `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL, `c` int(11) DEFAULT NULL, KEY `a` (`a`), KEY `b` (`b`)) ; +insert into t2 values(1,2,1),(2,1,1),(3,3,1); +create table t(a int, j json, index kj((cast(j as signed array)))); +insert into t values(1, '[1,2,3]'); +CREATE TABLE `t3` ( + `id` int(11) NOT NULL, + `aid` bigint(20) DEFAULT NULL, + `c1` varchar(255) DEFAULT NULL, + `c2` varchar(255) DEFAULT NULL, + `d` int(11) DEFAULT NULL, + PRIMARY KEY (`id`) /*T![clustered_index] CLUSTERED */, + KEY `aid_c1` (`aid`,`c1`), + KEY `aid_c2` (`aid`,`c2`) +); +## test sink limit to table side of union index merge case, because of table side selection +explain format = 'brief' select /*+ use_index_merge(t2, a, b) */ * from t2 where a=1 or b=1 and c=1 limit 2; +show warnings; +## test sink limit to table side of intersection index merge case, because of table side selection +explain format = 'brief' select /*+ use_index_merge(t2, a, b) */ * from t2 where a=1 and b=1 and c=1 limit 2; +show warnings; +select /*+ use_index_merge(t2, a, b) */ * from t2 where a=1 and b=1 and c=1 limit 2; +show warnings; +## test sink limit to index side of union index merge case, because of table side is pure table scan +explain format = 'brief' select /*+ use_index_merge(t2, a, b) */ * from t2 where a=1 or b=1 limit 2; +show warnings; +## test sink limit to table side of intersection index merge case, because of intersection case special +explain format = 'brief' select /*+ use_index_merge(t2, a, b) */ * from t2 where a=1 and b=1 limit 2; +show warnings; +select /*+ use_index_merge(t2, a, b) */ * from t2 where a=1 and b=1 limit 2; +show warnings; +## index merge union case, sink limit into index side and embed another one inside index merge reader +explain format = 'brief' select /*+ use_index(t, kj) */ * from t where (1 member of (j)) limit 1; +show warnings; +## index merge intersection case, embedding limit into index merge reader +explain format = 'brief' select /*+ use_index(t, kj) */ * from t where json_contains(j, '[1, 2, 3]') limit 1; +show warnings; +## index merge union case, sink limit above selection above index merge reader, because json_overlaps can't be pushed down +explain format = 'brief' select /*+ use_index(t, kj) */ * from t where json_overlaps(j, '[1, 2, 3]') limit 1; +show warnings; +## index merge union case, sink limit to table side, because selection exists on table side +explain format = 'brief' select /*+ use_index(t, kj) */ * from t where (1 member of (j) and a=1 ) limit 1; +show warnings; +## index merge intersection case, sink limit to table side because selection exists on table side +explain format = 'brief' select /*+ use_index(t, kj) */ * from t where json_contains(j, '[1, 2, 3]') and a=1 limit 1; +show warnings; +## index merge union case, sink limit above selection above index merge reader, because json_overlaps can't be pushed down +explain format = 'brief' select /*+ use_index(t, kj) */ * from t where json_overlaps(j, '[1, 2, 3]') and a=1 limit 1; +show warnings; +set tidb_cost_model_version=DEFAULT; +## index merge union and intersection case from issue 48588 +explain select /*+ USE_INDEX_MERGE(t3, aid_c1, aid_c2) */ * from t3 where (aid = 1 and c1='aaa') or (aid = 1 and c2='bbb') limit 1; +show warnings; + diff --git a/tests/integrationtest/t/planner/core/cbo.test b/tests/integrationtest/t/planner/core/cbo.test index 0cafe16802c4e..7eab31bc66b5e 100644 --- a/tests/integrationtest/t/planner/core/cbo.test +++ b/tests/integrationtest/t/planner/core/cbo.test @@ -13,3 +13,52 @@ insert into t25219 values(1, 1, 1); analyze table t25219; select * from t25219 WHERE (col3 IS NULL OR col1 IS NOT NULL AND col3 <= 6659) AND col3 = 1; +# TestIssue9805 +drop table if exists t1, t2; +create table t1 ( + id bigint primary key, + a bigint not null, + b varchar(100) not null, + c varchar(10) not null, + d bigint as (a % 30) not null, + key (d, b, c) +); +create table t2 ( + id varchar(50) primary key, + a varchar(100) unique, + b datetime, + c varchar(45), + d int not null unique auto_increment +); +## Test when both tables are empty, EXPLAIN ANALYZE for IndexLookUp would not panic. +--disable_result_log +explain analyze select /*+ TIDB_INLJ(t2) */ t1.id, t2.a from t1 join t2 on t1.a = t2.d where t1.b = 't2' and t1.d = 4; +--enable_result_log + +# TestExplainCostTrace +drop table if exists t; +create table t (a int); +insert into t values (1); +set tidb_cost_model_version=2; +explain format='cost_trace' select * from t; +--replace_column 8 9 10 11 +explain analyze format='cost_trace' select * from t; +set tidb_cost_model_version=1; +## cost trace on model ver1 is not supported +explain format='cost_trace' select * from t; +--replace_column 8 9 10 11 +explain analyze format='cost_trace' select * from t; +set tidb_cost_model_version=default; + +# TestExplainAnalyze +drop table if exists t1, t2; +## disable only full group by +set sql_mode='STRICT_TRANS_TABLES'; +create table t1(a int, b int, c int, key idx(a, b)); +create table t2(a int, b int); +insert into t1 values (1, 1, 1), (2, 2, 2), (3, 3, 3), (4, 4, 4), (5, 5, 5); +insert into t2 values (2, 22), (3, 33), (5, 55), (233, 2), (333, 3), (3434, 5); +analyze table t1, t2; +--replace_regex /:[ ]?[.0-9]+[nµms]*/:/ /, scan_detail: {.*}// / tot_proc:.*?, tot_wait:.*?,// /[.0-9]+ ((KB)|(Bytes))// +explain analyze select t1.a, t1.b, sum(t1.c) from t1 join t2 on t1.a = t2.b where t1.a > 1; +set sql_mode=default; diff --git a/tests/integrationtest/t/planner/core/expression_rewriter.test b/tests/integrationtest/t/planner/core/expression_rewriter.test index ad77cc66999dc..4e400096c7f6d 100644 --- a/tests/integrationtest/t/planner/core/expression_rewriter.test +++ b/tests/integrationtest/t/planner/core/expression_rewriter.test @@ -227,3 +227,48 @@ create table t2(a int); create table t(a int); select * from t where exists ( select a from ( select a from t1 union all select a from t2) u where t.a=u.a); +# TestIfNullEliminateColName +drop table if exists t, t1; +create table t(a int not null, b int not null); +select ifnull(a,b) from t; +drop table if exists t; +create table t(e int not null, b int); +insert into t values(1, 1); +create table t1(e int not null, b int); +insert into t1 values(1, 1); +select b from t where ifnull(e, b); +select b from t1 where ifnull(e, b); + +# TestIssue20007 +drop table if exists t1, t2; +create table t1 (c_int int, c_str varchar(40), c_datetime datetime, primary key(c_int)); +create table t2 (c_int int, c_str varchar(40), c_datetime datetime, primary key (c_datetime)) partition by range (to_days(c_datetime)) ( partition p0 values less than (to_days('2020-02-01')), partition p1 values less than (to_days('2020-04-01')), partition p2 values less than (to_days('2020-06-01')), partition p3 values less than maxvalue); +insert into t1 (c_int, c_str, c_datetime) values (1, 'xenodochial bassi', '2020-04-29 03:22:51'), (2, 'epic wiles', '2020-01-02 23:29:51'), (3, 'silly burnell', '2020-02-25 07:43:07'); +insert into t2 (c_int, c_str, c_datetime) values (1, 'trusting matsumoto', '2020-01-07 00:57:18'), (2, 'pedantic boyd', '2020-06-08 23:12:16'), (null, 'strange hypatia', '2020-05-23 17:45:27'); +select * from t1 where c_int != any (select c_int from t2 where t1.c_str <= t2.c_str); +select * from t1 where c_int != any (select c_int from t2 where t1.c_str <= t2.c_str); +select * from t1 where c_int != any (select c_int from t2 where t1.c_str <= t2.c_str); +select * from t1 where c_int != any (select c_int from t2 where t1.c_str <= t2.c_str); +select * from t1 where c_int != any (select c_int from t2 where t1.c_str <= t2.c_str); +select * from t1 where c_int != any (select c_int from t2 where t1.c_str <= t2.c_str); +select * from t1 where c_int != any (select c_int from t2 where t1.c_str <= t2.c_str); +select * from t1 where c_int != any (select c_int from t2 where t1.c_str <= t2.c_str); +select * from t1 where c_int != any (select c_int from t2 where t1.c_str <= t2.c_str); +select * from t1 where c_int != any (select c_int from t2 where t1.c_str <= t2.c_str); + +# TestDefaultCollationForUTF8MB4 +set @a = 'xx'; +select * from information_schema.COLLATIONS where IS_DEFAULT='Yes' and CHARACTER_SET_NAME='utf8mb4'; +select collation(_utf8mb4'12345'); +select collation(_utf8mb4'xxx' collate utf8mb4_general_ci); +select collation(_utf8mb4'@a'); +select collation(_utf8mb4'@a' collate utf8mb4_general_ci); +set @@session.default_collation_for_utf8mb4='utf8mb4_0900_ai_ci'; +select * from information_schema.COLLATIONS where IS_DEFAULT='Yes' and CHARACTER_SET_NAME='utf8mb4'; +select collation(_utf8mb4'12345'); +select collation(_utf8mb4'12345' collate utf8mb4_general_ci); +select collation(_utf8mb4'@a'); +select collation(_utf8mb4'@a' collate utf8mb4_general_ci); + +set @@session.default_collation_for_utf8mb4=default; + diff --git a/tests/integrationtest/t/planner/core/integration.test b/tests/integrationtest/t/planner/core/integration.test index 296b1d6c8c356..3e7ef1f6c3efc 100644 --- a/tests/integrationtest/t/planner/core/integration.test +++ b/tests/integrationtest/t/planner/core/integration.test @@ -789,23 +789,23 @@ drop table if exists tc; drop view if exists v; CREATE TABLE `ta` ( `id` varchar(36) NOT NULL , - `status` varchar(1) NOT NULL + `status` varchar(1) NOT NULL ); CREATE TABLE `tb` ( `id` varchar(36) NOT NULL , - `status` varchar(1) NOT NULL + `status` varchar(1) NOT NULL ); CREATE TABLE `tc` ( `id` varchar(36) NOT NULL , - `status` varchar(1) NOT NULL + `status` varchar(1) NOT NULL ); insert into ta values('1','1'); insert into tb values('1','1'); insert into tc values('1','1'); create definer='root'@'localhost' view v as -select -concat(`ta`.`status`,`tb`.`status`) AS `status`, -`ta`.`id` AS `id` from (`ta` join `tb`) +select +concat(`ta`.`status`,`tb`.`status`) AS `status`, +`ta`.`id` AS `id` from (`ta` join `tb`) where (`ta`.`id` = `tb`.`id`); SELECT tc.status,v.id FROM tc, v WHERE tc.id = v.id AND v.status = '11'; @@ -2072,3 +2072,317 @@ select *, first_value(v) over (partition by p order by o range between 3.1 prece set @@tidb_enable_pipelined_window_function=DEFAULT; +# TestPartitionPruningWithDateType +drop table if exists t; +create table t(a datetime) partition by range columns (a) (partition p1 values less than ('20000101'), partition p2 values less than ('2000-10-01')); +insert into t values ('20000201'), ('19000101'); +analyze table t; +desc format='brief' select * from t where a < '2000-01-01'; + + +# TestErrNoDB +drop user if exists test; + +connect (conn1, localhost, root,,); +create user test; +--error 1046 +grant select on test1111 to test@'%'; +--error 1046 +grant select on * to test@'%'; +--error 1046 +revoke select on * from test@'%'; + +use planner__core__integration; +create table test1111 (id int); +grant select on test1111 to test@'%'; +disconnect conn1; + + +# TestExplainAnalyzePointGet +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]*/:/ /},.*}/}/ +explain analyze select * from t where a=1; +--replace_regex /:[ ]?[.0-9]+[µms]*/:/ /},.*}/}/ +explain analyze select * from t where a in (1,2,3); + + +# TestExplainAnalyzeDML +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]*/:/ /},.*}/}/ +explain analyze select * from t where a=1; +--replace_regex /:[ ]?[.0-9]+[µms]*/:/ /},.*}/}}}/ /[0-9]+ Bytes/ Bytes/ +explain analyze insert ignore into t values (1,1),(2,2),(3,3),(4,4); + + +# TestConditionColPruneInPhysicalUnionScan +# https://github.com/pingcap/tidb/issues/21607 +drop table if exists t; +create table t (a int, b int); +insert into t values (1, 2); +select count(*) from t where b = 1 and b in (3); +drop table t; +create table t (a int, b int as (a + 1), c int as (b + 1)); +begin; +insert into t (a) values (1); +select count(*) from t where b = 1 and b in (3); +select count(*) from t where c = 1 and c in (3); + + +# TestCreateViewIsolationRead +drop table if exists t; +drop view if exists v0; +create table t(a int, b int); +set session tidb_isolation_read_engines='tiflash,tidb'; +create view v0 (a, avg_b) as select a, avg(b) from t group by a; +--error 1815 +select * from v0; +set session tidb_isolation_read_engines='tikv,tiflash,tidb'; +select * from v0; +set session tidb_isolation_read_engines=default; + + +# TestSelectIgnoreTemporaryTableInView +drop table if exists t1, t2; +drop view if exists v1, v2, v3, v4, v5; +create table t1 (a int, b int); +create table t2 (c int, d int); +create view v1 as select * from t1 order by a limit 5; +create view v2 as select * from ((select * from t1) union (select * from t2)) as tt order by a, b limit 5; +create view v3 as select * from v1 order by a limit 5; +create view v4 as select * from t1, t2 where t1.a = t2.c order by a, b limit 5; +create view v5 as select * from (select * from t1) as t1 order by a limit 5; +insert into t1 values (1, 2), (3, 4); +insert into t2 values (3, 5), (6, 7); +create temporary table t1 (a int, b int); +create temporary table t2 (c int, d int); +select * from t1; +select * from t2; +select * from v1; +select * from v2; +select * from v3; +select * from v4; +select * from v5; +drop table t1, t2; + + +# TestIssue27949 +drop table if exists t27949; +create table t27949 (a int, b int, key(b)); +explain format = 'brief' select * from t27949 where b=1; +create global binding for select * from t27949 where b=1 using select * from t27949 ignore index(b) where b=1; +explain format = 'brief' select * from t27949 where b=1; +set @@sql_select_limit=100; +explain format = 'brief' select * from t27949 where b=1; +drop table if exists t; +create table t(a int, index idx_a(a)); +create binding for select * from t using select * from t use index(idx_a); +select * from t; +select @@last_plan_from_binding; +prepare stmt from 'select * from t'; +execute stmt; +select @@last_plan_from_binding; +drop global binding for select * from t27949 where b=1; + +set @@sql_select_limit=default; + +# TestIssue30804 +drop table if exists t1, t2; +create table t1(a int, b int); +create table t2(a int, b int); +select avg(0) over w from t1 window w as (order by (select 1)); +-- error 3579 +select avg(0) over w from t1 where b > (select sum(t2.a) over w from t2) window w as (partition by t1.b); +select avg(0) over w1 from t1 where b > (select sum(t2.a) over w2 from t2 window w2 as (partition by t2.b)) window w1 as (partition by t1.b); + + +# TestNaturalJoinUpdateSameTable +drop table if exists t1; +create table t1(a int, b int); +insert into t1 values (1,1),(2,2); +update t1 as a natural join t1 b SET a.a = 2, b.b = 3; +select * from t1; +drop table t1; +create table t1 (a int primary key, b int); +insert into t1 values (1,1),(2,2); +-- error 1706 +update t1 as a natural join t1 b SET a.a = 2, b.b = 3; +drop table t1; +create table t1 (a int, b int) partition by hash (a) partitions 3; +insert into t1 values (1,1),(2,2); +-- error 1706 +update t1 as a natural join t1 b SET a.a = 2, b.b = 3; +drop table t1; +create table t1 (A int, b int) partition by hash (b) partitions 3; +insert into t1 values (1,1),(2,2); +-- error 1706 +update t1 as a natural join t1 B SET a.A = 2, b.b = 3; +-- error 1706 +update t1 as a natural join t1 B SET a.A = 2, b.b = 3; +drop table t1; +create table t1 (A int, b int) partition by RANGE COLUMNS (b) (partition `pNeg` values less than (0),partition `pPos` values less than MAXVALUE); +insert into t1 values (1,1),(2,2); +-- error 1706 +update t1 as a natural join t1 B SET a.A = 2, b.b = 3; +drop table t1; + + +# TestIssue36609 +drop table if exists t1, t2, t3, t4, t5; +create table t1(a int, b int, c int, d int, index ia(a), index ib(b), index ic(c), index id(d)); +create table t2(a int, b int, c int, d int, index ia(a), index ib(b), index ic(c), index id(d)); +create table t3(a int, b int, c int, d int, index ia(a), index ib(b), index ic(c), index id(d)); +create table t4(a int, b int, c int, d int, index ia(a), index ib(b), index ic(c), index id(d)); +create table t5(a int, b int, c int, d int, index ia(a), index ib(b), index ic(c), index id(d)); +select * from t3 straight_join t4 on t3.a = t4.b straight_join t2 on t3.d = t2.c straight_join t1 on t1.a = t2.b straight_join t5 on t4.c = t5.d where t2.b < 100 and t4.a = 10; +--disable_result_log +select * from information_schema.statements_summary; +--enable_result_log + + +# TestIssue38295 +# https://github.com/pingcap/tidb/issues/38295. +drop table if exists t0; +drop view if exists v0; +CREATE TABLE t0(c0 BLOB(298) , c1 BLOB(182) , c2 NUMERIC); +CREATE VIEW v0(c0) AS SELECT t0.c1 FROM t0; +INSERT INTO t0 VALUES (-1, 'a', '2046549365'); +CREATE INDEX i0 ON t0(c2); +--replace_regex /#2/#1/ /c2/c1/ +-- error 1055 +SELECT t0.c1, t0.c2 FROM t0 GROUP BY MOD(t0.c0, DEFAULT(t0.c2)); +UPDATE t0 SET c2=1413; + + +# TestIssue41273 +drop table if exists t; +CREATE TABLE t ( + a set('nwbk','r5','1ad3u','van','ir1z','y','9m','f1','z','e6yd','wfev') NOT NULL DEFAULT 'ir1z,f1,e6yd', + b enum('soo2','4s4j','qi9om','8ue','i71o','qon','3','3feh','6o1i','5yebx','d') NOT NULL DEFAULT '8ue', + c varchar(66) DEFAULT '13mdezixgcn', + PRIMARY KEY (a,b) /*T![clustered_index] CLUSTERED */, + UNIQUE KEY ib(b), + KEY ia(a) +)ENGINE=InnoDB DEFAULT CHARSET=ascii COLLATE=ascii_bin; +INSERT INTO t VALUES('ir1z,f1,e6yd','i71o','13mdezixgcn'),('ir1z,f1,e6yd','d','13mdezixgcn'),('nwbk','8ue','13mdezixgcn'); +--sorted_result +select * from t where a between 'e6yd' and 'z' or b <> '8ue'; +--sorted_result +select /*+ use_index_merge(t) */ * from t where a between 'e6yd' and 'z' or b <> '8ue'; + +--echo ## For now tidb doesn't support push set type to TiKV, and column a is a set type, so we shouldn't generate a IndexMerge path. +explain format='brief' select /*+ use_index_merge(t) */ * from t where a between 'e6yd' and 'z' or b <> '8ue'; + + +# TestIssue46298 +drop table if exists planner__core__integration.first_range; +create table planner__core__integration.first_range(p int not null, o tinyint not null, v int not null); +insert into planner__core__integration.first_range (p, o, v) values (0, 0, 0), (1, 1, 1), (1, 2, 2), (1, 4, 4), (1, 8, 8), (2, 0, 0), (2, 3, 3), (2, 10, 10), (2, 13, 13), (2, 15, 15), (3, 1, 1), (3, 3, 3), (3, 5, 5), (3, 9, 9), (3, 15, 15), (3, 20, 20), (3, 31, 31); +--sorted_result +select *, first_value(v) over (partition by p order by o range between 3.1 preceding and 2.9 following) as a from planner__core__integration.first_range; +set @@tidb_enable_pipelined_window_function=0; +--sorted_result +select *, first_value(v) over (partition by p order by o range between 3.1 preceding and 2.9 following) as a from planner__core__integration.first_range; +set @@tidb_enable_pipelined_window_function=DEFAULT; + + +# TestIssue45044 +drop table if exists t1; +set tidb_enable_ordered_result_mode = on; +create table t1(c1 int); +select * from t1 group by t1.c1 having count(1) > 1 order by count(1) limit 10; +set tidb_enable_ordered_result_mode = DEFAULT; + + +# TestViewHintWithBinding +set tidb_cost_model_version=2; +drop view if exists v, v1, v2; +drop table if exists t, t1, t2, t3; +create table t(a int, b int); +create table t1(a int, b int); +create table t2(a int, b int); +create table t3(a int, b int); +create definer='root'@'localhost' view v as select t.a, t.b from t join (select count(*) as a from t1 join t2 join t3 where t1.b=t2.b and t2.a = t3.a group by t2.a) tt on t.a = tt.a; +create definer='root'@'localhost' view v1 as select t.a, t.b from t join (select count(*) as a from t1 join v on t1.b=v.b group by v.a) tt on t.a = tt.a; +create definer='root'@'localhost' view v2 as select t.a, t.b from t join (select count(*) as a from t1 join v1 on t1.b=v1.b group by v1.a) tt on t.a = tt.a; +select * from v2; +select @@last_plan_from_binding; +create global binding for select * from v2 using select /*+ qb_name(qb_v_2, v2.v1@sel_2 .v@sel_2 .@sel_2), merge_join(t1@qb_v_2), stream_agg(@qb_v_2), qb_name(qb_v_1, v2. v1@sel_2 .v@sel_2 .@sel_1), merge_join(t@qb_v_1) */ * from v2; +select * from v2; +select @@last_plan_from_binding; +--replace_column 5 6 +show global bindings where original_sql like '%planner__core__integration%'; +drop global binding for select * from v2; +select * from v2; +select @@last_plan_from_binding; +--replace_column 5 6 +show global bindings where original_sql like '%planner__core__integration%'; + +set tidb_cost_model_version=default; + + +# TestKeepOrderHintWithBinding +set tidb_cost_model_version=2; +drop table if exists t1; +create table t1(a int, b int, index idx_a(a)); +--echo +--echo ## create binding for order_index hint +select * from t1 where a<10 order by a limit 1; +select @@last_plan_from_binding; +create global binding for select * from t1 where a<10 order by a limit 1 using select /*+ order_index(t1, idx_a) */ * from t1 where a<10 order by a limit 1; +select * from t1 where a<10 order by a limit 1; +select @@last_plan_from_binding; +--replace_column 5 6 +show global bindings where original_sql like '%planner__core__integration%'; +--echo +drop global binding for select * from t1 where a<10 order by a limit 1; +select * from t1 where a<10 order by a limit 1; +select @@last_plan_from_binding; +--replace_column 5 6 +show global bindings where original_sql like '%planner__core__integration%'; +--echo +--echo ## create binding for no_order_index hint +create global binding for select * from t1 where a<10 order by a limit 1 using select /*+ no_order_index(t1, idx_a) */ * from t1 where a<10 order by a limit 1; +select * from t1 where a<10 order by a limit 1; +select @@last_plan_from_binding; +--replace_column 5 6 +show global bindings where original_sql like '%planner__core__integration%'; +--echo +drop global binding for select * from t1 where a<10 order by a limit 1; +select * from t1 where a<10 order by a limit 1; +select @@last_plan_from_binding; +--replace_column 5 6 +show global bindings where original_sql like '%planner__core__integration%'; + +set tidb_cost_model_version=default; + + +# TestIssue20139 +drop table if exists t; +set tidb_opt_fix_control='44262:ON'; +create table t (id int, c int) partition by range (id) (partition p0 values less than (4), partition p1 values less than (7)); +insert into t values(3, 3), (5, 5); +explain format = 'brief' select * from t where c = 1 and id = c; + + +# TestIssue46177 +drop table if exists sbtest; +CREATE TABLE sbtest ( + id int(10) unsigned NOT NULL AUTO_INCREMENT, + k int(10) unsigned NOT NULL DEFAULT '0', + c char(120) NOT NULL DEFAULT '', + pad char(60) NOT NULL DEFAULT '', + PRIMARY KEY (id) /*T![clustered_index] CLUSTERED */, + KEY k (k) +); +## cannot choose the best plan with RangeScan. +set @@tidb_opt_fix_control = '46177:off'; +explain format='brief' select row_number() over(order by a.k) from (select * from sbtest where id<10) a; +explain format='brief' select /*+ stream_agg() */ count(1) from sbtest where id<1 group by k; +set @@tidb_opt_fix_control = '46177:on'; +explain format='brief' select row_number() over(order by a.k) from (select * from sbtest where id<10) a; +explain format='brief' select /*+ stream_agg() */ count(1) from sbtest where id<1 group by k; +set @@tidb_opt_fix_control = default; diff --git a/tests/integrationtest/t/planner/core/integration_partition.test b/tests/integrationtest/t/planner/core/integration_partition.test index f4a5bc71f3d8c..a9dd02162f43a 100644 --- a/tests/integrationtest/t/planner/core/integration_partition.test +++ b/tests/integrationtest/t/planner/core/integration_partition.test @@ -817,6 +817,7 @@ explain format=brief select * from t1 where a = 'a' AND c = 'd'; select * from t1 where a = 'a' AND c = 'd'; drop table t1; + # TestPartitionProcessorWithUninitializedTable drop table if exists q1, q2; create table q1(a int, b int, key (a)) partition by range (a) (partition p0 values less than (10), partition p1 values less than (20)); @@ -827,6 +828,7 @@ explain format=brief select * from q1,q2; analyze table q2; explain format=brief select * from q1,q2; + # TestIssue42323 create database issue42323; use issue42323; @@ -842,3 +844,28 @@ select * from t where col1 = floor(202303); drop database issue42323; +# TestListPartitionPrivilege +drop database if exists list_partition_pri; +create database list_partition_pri; +use list_partition_pri; +set tidb_enable_list_partition = 1; +create table tlist (a int) partition by list (a) (partition p0 values in (0), partition p1 values in (1)); +drop user if exists 'priv_test'@'%'; +create user 'priv_test'@'%'; +grant select on list_partition_pri.tlist to 'priv_test'; + +connect (conn1, localhost, priv_test,,); +use list_partition_pri; +--error 1142 +alter table tlist truncate partition p0; +--error 1142 +alter table tlist drop partition p0; +--error 1142 +alter table tlist add partition (partition p2 values in (2)); +--error 1142 +insert into tlist values (1); +disconnect conn1; + +use planner__core__integration_partition; +set tidb_enable_list_partition = DEFAULT; + diff --git a/tests/integrationtest/t/planner/core/issuetest/planner_issue.test b/tests/integrationtest/t/planner/core/issuetest/planner_issue.test index 1b58c7c5046c7..45d79ba30b5fa 100644 --- a/tests/integrationtest/t/planner/core/issuetest/planner_issue.test +++ b/tests/integrationtest/t/planner/core/issuetest/planner_issue.test @@ -136,3 +136,33 @@ FROM t2 db LEFT JOIN tmp3 c2 ON c2.id = '1' LEFT JOIN tmp3 c3 ON c3.id = '1'; + +# https://github.com/pingcap/tidb/issues/48755 +drop table if exists t; +create table t(a int, b int); +set @@tidb_max_chunk_size = 32; +# insert into more than 32 rows to the table. +insert into t values(1, 1); +insert into t select a+1, a+1 from t; +insert into t select a+2, a+2 from t; +insert into t select a+4, a+4 from t; +insert into t select a+8, a+8 from t; +insert into t select a+16, a+16 from t; +insert into t select a+32, a+32 from t; +select a from (select 100 as a, 100 as b union all select * from t) t where b != 0; +set @@tidb_max_chunk_size = default; + +# https://github.com/pingcap/tidb/issues/48821 +drop table if exists t1, t2; +create table t1(a varchar(20) collate utf8mb4_bin, index ia(a)); +insert into t1 value('测试'),('测试 '); +explain format = brief select *,length(a) from t1 where a like '测试 %'; +explain format = brief select *,length(a) from t1 where a like '测试'; +select *,length(a) from t1 where a like '测试 %'; +select *,length(a) from t1 where a like '测试'; +create table t2(a varchar(20) collate gbk_chinese_ci, index ia(a)); +insert into t2 value('测试'),('测试 '); +explain format = brief select *,length(a) from t2 where a like '测试 %'; +explain format = brief select *,length(a) from t2 where a like '测试'; +select *,length(a) from t2 where a like '测试 %'; +select *,length(a) from t2 where a like '测试'; diff --git a/tests/integrationtest/t/planner/core/memtable_predicate_extractor.test b/tests/integrationtest/t/planner/core/memtable_predicate_extractor.test new file mode 100644 index 0000000000000..33c50b68a9c7b --- /dev/null +++ b/tests/integrationtest/t/planner/core/memtable_predicate_extractor.test @@ -0,0 +1,55 @@ +# TestPredicateQuery +drop table if exists t, abclmn; +create table t(id int, abctime int,DATETIME_PRECISION int); +create table abclmn(a int); +select TABLE_NAME from information_schema.columns where table_schema = 'planner__core__memtable_predicate_extractor' and column_name like 'i%'; +select TABLE_NAME from information_schema.columns where table_schema = 'PLANNER__CORE__MEMTABLE_PREDICATE_EXTRACTOR' and column_name like 'I%'; +select TABLE_NAME from information_schema.columns where table_schema = 'PLANNER__CORE__MEMTABLE_PREDICATE_EXTRACTOR' and column_name like 'ID'; +select TABLE_NAME from information_schema.columns where table_schema = 'PLANNER__CORE__MEMTABLE_PREDICATE_EXTRACTOR' and column_name like 'id'; +select column_name from information_schema.columns where table_schema = 'PLANNER__CORE__MEMTABLE_PREDICATE_EXTRACTOR' and (column_name like 'i%' or column_name like '%d'); +select column_name from information_schema.columns where table_schema = 'PLANNER__CORE__MEMTABLE_PREDICATE_EXTRACTOR' and (column_name like 'abc%' and column_name like '%time'); +select TABLE_NAME, column_name from information_schema.columns where table_schema = 'PLANNER__CORE__MEMTABLE_PREDICATE_EXTRACTOR' and column_name like '%time'; +describe t; +describe t id; +describe t ID; +-- error 1064 +describe t 'I%'; +-- error 1064 +describe t I%; +show columns from t like 'abctime'; +show columns from t like 'ABCTIME'; +show columns from t like 'abc%'; +show columns from t like 'ABC%'; +show columns from t like '%ime'; +show columns from t like '%IME'; +show columns in t like '%ime'; +show columns in t like '%IME'; +show fields in t like '%ime'; +show fields in t like '%IME'; +show columns from t where field like '%time'; +show columns from t where field = 'abctime'; +show columns in t where field = 'abctime'; +show fields from t where field = 'abctime'; +show fields in t where field = 'abctime'; +explain t; +-- error 1054 +show columns from t like id; +-- error 1054 +show columns from t like `id`; +show tables like 't'; +show tables like 'T'; +show tables like 'ABCLMN'; +show tables like 'ABC%'; +show tables like '%lmn'; +show full tables like '%lmn'; +-- error 1054 +show tables like T; +-- error 1054 +show tables like `T`; + +## For issue46618 +drop table if exists _bar, bar; +create table _bar (id int); +create table bar (id int); +show tables like '\_%'; + diff --git a/tests/integrationtest/t/planner/core/physical_plan.test b/tests/integrationtest/t/planner/core/physical_plan.test index ebe0feba8a706..5fc57fb9ce2a6 100644 --- a/tests/integrationtest/t/planner/core/physical_plan.test +++ b/tests/integrationtest/t/planner/core/physical_plan.test @@ -35,3 +35,32 @@ insert into t1 (a,b,c) value(3,4,5); explain format = 'brief' select * from (select * from t1 order by a) tmp; +# TestHJBuildAndProbeHintWithBinding +set tidb_cost_model_version=2; +drop table if exists t, t1, t2, t3; +create table t(a int, b int, key(a)); +create table t1(a int, b int, key(a)); +create table t2(a int, b int, key(a)); +create table t3(a int, b int, key(a)); + +select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b; +select @@last_plan_from_binding; +create global binding for select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b using select /*+ hash_join_build(t1) */ * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b; +select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b; +select @@last_plan_from_binding; +--replace_column 5 6 +show global bindings where original_sql like '%planner__core__physical_plan%'; + +create global binding for select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b using select /*+ hash_join_probe(t1) */ * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b; +select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b; +select @@last_plan_from_binding; +--replace_column 5 6 +show global bindings where original_sql like '%planner__core__physical_plan%'; + +drop global binding for select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b; +select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b; +select @@last_plan_from_binding; +--replace_column 5 6 +show global bindings where original_sql like '%planner__core__physical_plan%'; + +set tidb_cost_model_version=DEFAULT; diff --git a/tests/integrationtest/t/planner/core/plan.test b/tests/integrationtest/t/planner/core/plan.test index fcdd997eef335..4b18143dcc46b 100644 --- a/tests/integrationtest/t/planner/core/plan.test +++ b/tests/integrationtest/t/planner/core/plan.test @@ -162,3 +162,50 @@ alter table t set hypo tiflash replica 0; explain select a from t; +# TestIssue40857 +drop table if exists t; +CREATE TABLE t (c1 mediumint(9) DEFAULT '-4747160',c2 year(4) NOT NULL DEFAULT '2075',c3 double DEFAULT '1.1559030660251948',c4 enum('wbv4','eli','d8ym','m3gsx','lz7td','o','d1k7l','y1x','xcxq','bj','n7') DEFAULT 'xcxq',c5 int(11) DEFAULT '255080866',c6 tinyint(1) DEFAULT '1',PRIMARY KEY (c2),KEY `c4d86d54-091c-4307-957b-b164c9652b7f` (c6,c4) ); +insert into t values (-4747160, 2075, 722.5719203870632, 'xcxq', 1576824797, 1); +--enable_info +select /*+ stream_agg() */ bit_or(t.c5) as r0 from t where t.c3 in (select c6 from t where not(t.c6 <> 1) and not(t.c3 in(9263.749352636818))) group by t.c1; +--disable_info + + +# TestIssue40535 +drop table if exists t1; +drop table if exists t2; +CREATE TABLE `t1`(`c1` bigint(20) NOT NULL DEFAULT '-2312745469307452950', `c2` datetime DEFAULT '5316-02-03 06:54:49', `c3` tinyblob DEFAULT NULL, PRIMARY KEY (`c1`) /*T![clustered_index] CLUSTERED */) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; +CREATE TABLE `t2`(`c1` set('kn8pu','7et','vekx6','v3','liwrh','q14','1met','nnd5i','5o0','8cz','l') DEFAULT '7et,vekx6,liwrh,q14,1met', `c2` float DEFAULT '1.683167', KEY `k1` (`c2`,`c1`), KEY `k2` (`c2`)) ENGINE=InnoDB DEFAULT CHARSET=gbk COLLATE=gbk_chinese_ci; +--enable_info +(select /*+ agg_to_cop()*/ locate(t1.c3, t1.c3) as r0, t1.c3 as r1 from t1 where not( IsNull(t1.c1)) order by r0,r1) union all (select concat_ws(',', t2.c2, t2.c1) as r0, t2.c1 as r1 from t2 order by r0, r1) order by 1 limit 273; +--disable_info + + +# TestIssue47445 +drop table if exists golang1, golang2; +CREATE TABLE golang1 ( `fcbpdt` CHAR (8) COLLATE utf8_general_ci NOT NULL, `fcbpsq` VARCHAR (20) COLLATE utf8_general_ci NOT NULL, `procst` char (4) COLLATE utf8_general_ci DEFAULT NULL,`cipstx` VARCHAR (105) COLLATE utf8_general_ci DEFAULT NULL, `cipsst` CHAR (4) COLLATE utf8_general_ci DEFAULT NULL, `dyngtg` VARCHAR(4) COLLATE utf8_general_ci DEFAULT NULL, `blncdt` VARCHAR (8) COLLATE utf8_general_ci DEFAULT NULL, PRIMARY KEY ( fcbpdt, fcbpsq )); +insert into golang1 values('20230925','12023092502158016','abc','','','',''); +create table golang2 (`sysgrp` varchar(20) NOT NULL,`procst` varchar(8) NOT NULL,`levlid` int(11) NOT NULL,PRIMARY key (procst));; +insert into golang2 VALUES('COMMON','ACSC',90); +insert into golang2 VALUES('COMMON','abc',8); +insert into golang2 VALUES('COMMON','CH02',6); +UPDATE golang1 a SET procst =(CASE WHEN ( SELECT levlid FROM golang2 b WHERE b.sysgrp = 'COMMON' AND b.procst = 'ACSC' ) > ( SELECT levlid FROM golang2 c WHERE c.sysgrp = 'COMMON' AND c.procst = a.procst ) THEN 'ACSC' ELSE a.procst END ), cipstx = 'CI010000', cipsst = 'ACSC', dyngtg = 'EAYT', blncdt= '20230925' WHERE fcbpdt = '20230925' AND fcbpsq = '12023092502158016'; +select * from golang1; +UPDATE golang1 a SET procst= (SELECT 1 FROM golang2 c WHERE c.procst = a.procst) WHERE fcbpdt = '20230925' AND fcbpsq = '12023092502158016'; +select * from golang1; + + +# TestExplainValuesStatement +--error 1051 +EXPLAIN FORMAT = TRADITIONAL ((VALUES ROW ()) ORDER BY 1); + + +# TestIssue35090 +drop table if exists p, t; +create table p (id int, c int, key i_id(id), key i_c(c)); +create table t (id int); +insert into p values (3,3), (4,4), (6,6), (9,9); +insert into t values (4), (9); +select /*+ INL_JOIN(p) */ * from p, t where p.id = t.id; +--replace_column 5 6 7 8 9 +explain analyze format='brief' select /*+ INL_JOIN(p) */ * from p, t where p.id = t.id; diff --git a/tests/integrationtest/t/planner/core/plan_cache.test b/tests/integrationtest/t/planner/core/plan_cache.test index 1be4a42c71b6a..23d20b496bb1d 100644 --- a/tests/integrationtest/t/planner/core/plan_cache.test +++ b/tests/integrationtest/t/planner/core/plan_cache.test @@ -1431,3 +1431,227 @@ select database() from t; select @@last_plan_from_cache; set tidb_enable_non_prepared_plan_cache=DEFAULT; +# TestPlanCacheSizeSwitch +select @@tidb_prepared_plan_cache_size; +select @@tidb_session_plan_cache_size; +set @@tidb_prepared_plan_cache_size = 200; +select @@tidb_prepared_plan_cache_size; +select @@tidb_session_plan_cache_size; +set @@tidb_session_plan_cache_size = 300; +select @@tidb_prepared_plan_cache_size; +select @@tidb_session_plan_cache_size; + +set global tidb_prepared_plan_cache_size = 400; +connect (conn1, localhost, root,,); +select @@tidb_prepared_plan_cache_size; +select @@tidb_session_plan_cache_size; +disconnect conn1; + +set global tidb_session_plan_cache_size = 500; +connect (conn1, localhost, root,,); +select @@tidb_prepared_plan_cache_size; +select @@tidb_session_plan_cache_size; +disconnect conn1; + +set global tidb_prepared_plan_cache_size = default; +set global tidb_session_plan_cache_size = default; +set @@tidb_session_plan_cache_size = default; +set @@tidb_prepared_plan_cache_size = default; + +# TestNonPreparedPlanCacheWithExplain +drop table if exists t; +create table t(a int); +set tidb_enable_non_prepared_plan_cache=1; +select * from t where a=1; +explain select * from t where a=2; +select @@last_plan_from_cache; +explain format=verbose select * from t where a=2; +select @@last_plan_from_cache; +--replace_column 5 6 7 8 9 +explain analyze select * from t where a=2; +select @@last_plan_from_cache; +set tidb_enable_non_prepared_plan_cache=default; + +# TestPlanCacheGeneratedCols +drop table if exists t1, t2, t3, t4; +set @@tidb_opt_fix_control = "45798:on"; +create table t1 (a int, info json, city varchar(64) as (JSON_UNQUOTE(JSON_EXTRACT(info, '$.city')))); +create table t2 (a int, info json, city varchar(64) as (JSON_UNQUOTE(JSON_EXTRACT(info, '$.city'))) virtual); +create table t3 (a int, info json, city varchar(64) as (JSON_UNQUOTE(JSON_EXTRACT(info, '$.city'))) stored); +create table t4 (a int, info json, index zips( (CAST(info->'$.zipcode' AS UNSIGNED ARRAY)))); +set @a=1; +set @b=2; +prepare s1 from 'select * from t1 where a=?'; +show warnings; +execute s1 using @a; +execute s1 using @b; +select @@last_plan_from_cache; +prepare s1 from 'select * from t2 where a=?'; +show warnings; +execute s1 using @a; +execute s1 using @b; +select @@last_plan_from_cache; +prepare s1 from 'select * from t3 where a=?'; +show warnings; +execute s1 using @a; +execute s1 using @b; +select @@last_plan_from_cache; +prepare s1 from 'select * from t4 where a=?'; +show warnings; +execute s1 using @a; +execute s1 using @b; +select @@last_plan_from_cache; + +set @@tidb_opt_fix_control = default; + +# TestPlanCacheGeneratedCols2 +drop table if exists t1, t2; +set @@tidb_opt_fix_control = "45798:on"; +CREATE TABLE t1 ( + ipk varbinary(255) NOT NULL, + i_id varchar(45) DEFAULT NULL, + i_set_id varchar(45) DEFAULT NULL, + p_id varchar(45) DEFAULT NULL, + p_set_id varchar(45) DEFAULT NULL, + m_id bigint(20) DEFAULT NULL, + m_i_id varchar(127) DEFAULT NULL, + m_i_set_id varchar(127) DEFAULT NULL, + d json DEFAULT NULL, + p_sources json DEFAULT NULL, + nslc json DEFAULT NULL, + cl json DEFAULT NULL, + fii json DEFAULT NULL, + fpi json DEFAULT NULL, + PRIMARY KEY (ipk) /*T![clustered_index] CLUSTERED */, + UNIQUE KEY i_id (i_id), + KEY d ((cast(d as char(253) array))), + KEY m_i_id (m_i_id), + KEY m_i_set_id (m_i_set_id), + KEY fpi ((cast(fpi as unsigned array))), + KEY nslc ((cast(nslc as char(1000) array))), + KEY cl ((cast(cl as char(3000) array))), + KEY fii ((cast(fii as unsigned array))), + KEY m_id (m_id), + KEY i_set_id (i_set_id), + KEY m_i_and_m_id (m_i_id,m_id)); +CREATE TABLE t2 ( + ipk varbinary(255) NOT NULL, + created_time bigint(20) DEFAULT NULL, + arrival_time bigint(20) DEFAULT NULL, + updated_time bigint(20) DEFAULT NULL, + timestamp_data json DEFAULT NULL, + PRIMARY KEY (ipk) /*T![clustered_index] CLUSTERED */); +prepare stmt from 'select * + from ( t1 left outer join t2 on ( t1 . ipk = t2 . ipk ) ) + where ( t1 . i_id = ? )'; +show warnings; +set @a='a', @b='b'; +execute stmt using @a; +execute stmt using @b; +select @@last_plan_from_cache; + +set @@tidb_opt_fix_control = default; + +# TestPlanCacheExprBlacklistCompatibility +drop table if exists t; +create table t (a int); +prepare st from 'select * from t where mod(a, 2)=1'; +execute st; +execute st; +select @@last_plan_from_cache; +insert into mysql.expr_pushdown_blacklist(name) values('mod'); +admin reload expr_pushdown_blacklist; +execute st; +select @@last_plan_from_cache; +execute st; +select @@last_plan_from_cache; + +delete from mysql.expr_pushdown_blacklist; +admin reload expr_pushdown_blacklist; + +# TestNonPreparedPlanCacheFieldNames +drop table if exists t, tt; +create table t(a int, index(a)); +create table tt(a varchar(10)); +set tidb_enable_non_prepared_plan_cache=1; +select a+1 from t where a<10; +select @@last_plan_from_cache; +select a+1 from t where a<20; +select @@last_plan_from_cache; +select a+2 from t where a<30; +select @@last_plan_from_cache; +select a+2 from t where a<40; +select @@last_plan_from_cache; +select a,a+1 from t where a<30; +select @@last_plan_from_cache; +select a,a+1 from t where a<40; +select @@last_plan_from_cache; +select a+'123' from tt where a='1'; +select @@last_plan_from_cache; +select a+'123' from tt where a='2'; +select @@last_plan_from_cache; +select 1 from t where a<10; +select @@last_plan_from_cache; +select 1 from t where a<20; +select @@last_plan_from_cache; +select 2 from t where a<10; +select @@last_plan_from_cache; +select 2 from t where a<20; +select @@last_plan_from_cache; +select 1,2 from t where a<10; +select @@last_plan_from_cache; +select 1,2 from t where a<20; +select @@last_plan_from_cache; +set tidb_enable_non_prepared_plan_cache=default; + +# TestIssue48165 +drop table if exists t; +create table t(a int); +insert into t values(1); +prepare s from "select * from t where tidb_parse_tso(a) > unix_timestamp()"; +execute s; + +# TestNonPreparedPlanCacheBuiltinFuncs +drop table if exists t; +set tidb_enable_non_prepared_plan_cache=1; +create table t (a int, b varchar(32), c datetime, key(a)); + +## normal builtin functions can be supported +select * from t where mod(a, 5) < 2; +select * from t where mod(a, 5) < 2; +select @@last_plan_from_cache; +select * from t where c < now(); +select * from t where c < now(); +select @@last_plan_from_cache; +select date_format(c, '%Y-%m-%d') from t where a < 10; +select date_format(c, '%Y-%m-%d') from t where a < 10; +select @@last_plan_from_cache; +select str_to_date(b, '%Y-%m-%d') from t where a < 10; +select str_to_date(b, '%Y-%m-%d') from t where a < 10; +select @@last_plan_from_cache; +select * from t where a-2 < 20; +select * from t where a-2 < 20; +select @@last_plan_from_cache; +select * from t where a+b > 100; +select * from t where a+b > 100; +select @@last_plan_from_cache; + +## '-' cannot support +select * from t where -a > 10; +select * from t where -a > 10; +select @@last_plan_from_cache; +## LIKE +select * from t where a < 1 and b like '%abc%'; +select * from t where a < 1 and b like '%abc%'; +select @@last_plan_from_cache; +select database() from t; +select database() from t; +select @@last_plan_from_cache; +set tidb_enable_non_prepared_plan_cache=default; + +# TestIssue45086 +drop table if exists t; +CREATE TABLE t (a int(11) DEFAULT NULL, b date DEFAULT NULL); +INSERT INTO t VALUES (1, current_date()); +PREPARE stmt FROM 'SELECT a FROM t WHERE b=current_date()'; +EXECUTE stmt; diff --git a/tests/integrationtest/t/planner/core/plan_cost_ver2.test b/tests/integrationtest/t/planner/core/plan_cost_ver2.test index 56039848c5e23..81246b7353de1 100644 --- a/tests/integrationtest/t/planner/core/plan_cost_ver2.test +++ b/tests/integrationtest/t/planner/core/plan_cost_ver2.test @@ -74,3 +74,14 @@ set @@tidb_cost_model_version=1; explain select * from t where a between 1 and 5 and b != 200 and c = 20 limit 100000; +# TestCostModelShowFormula +drop table if exists t; +create table t (a int); +set @@tidb_cost_model_version=2; +## 'true_card_cost' must work with 'explain analyze' +--error 1105 +explain format='true_card_cost' select * from t; +--replace_column 8 9 10 11 +explain analyze format='true_card_cost' select * from t where a<3; + +set @@tidb_cost_model_version=DEFAULT; diff --git a/tests/integrationtest/t/planner/core/point_get_plan.test b/tests/integrationtest/t/planner/core/point_get_plan.test index 65ddaf8d0e4b7..8f103cea2d2b0 100644 --- a/tests/integrationtest/t/planner/core/point_get_plan.test +++ b/tests/integrationtest/t/planner/core/point_get_plan.test @@ -336,3 +336,23 @@ select * from t2 where col1 = 0x000039; drop table t1, t2; +# TestPointGetForUpdate +drop table if exists fu; +create table fu (id int primary key, val int); +insert into fu values (6, 6); + +## In autocommit mode, outside a transaction, "for update" doesn't take effect. +explain format = 'brief' select * from fu where id = 6 for update; +select * from fu where id = 6 for update; + +begin; +explain format = 'brief' select * from fu where id = 6 for update; +select * from fu where id = 6 for update; +rollback; + +set @@session.autocommit = 0; +explain format = 'brief' select * from fu where id = 6 for update; +select * from fu where id = 6 for update; +rollback; + +set @@session.autocommit = default; diff --git a/tests/integrationtest/t/planner/core/rule_join_reorder.test b/tests/integrationtest/t/planner/core/rule_join_reorder.test index 0b194d572bf6c..4545d15269a08 100644 --- a/tests/integrationtest/t/planner/core/rule_join_reorder.test +++ b/tests/integrationtest/t/planner/core/rule_join_reorder.test @@ -79,3 +79,44 @@ FROM t3 tt AND tt.te_partition = o.partition_no; + +# TestJoinOrderHintWithBinding +drop table if exists t, t1, t2, t3; +create table t(a int, b int, key(a)); +create table t1(a int, b int, key(a)); +create table t2(a int, b int, key(a)); +create table t3(a int, b int, key(a)); + +select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b; +select @@last_plan_from_binding; +create global binding for select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b using select /*+ straight_join() */ * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b; +select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b; +select @@last_plan_from_binding; +--replace_column 5 6 +show global bindings where original_sql like '%planner__core__rule_join_reorder%'; + +drop global binding for select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b; +select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b; +select @@last_plan_from_binding; +--replace_column 5 6 +show global bindings where original_sql like '%planner__core__rule_join_reorder%'; + +create global binding for select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b using select /*+ leading(t3) */ * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b; +select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b; +select @@last_plan_from_binding; +--replace_column 5 6 +show global bindings where original_sql like '%planner__core__rule_join_reorder%'; +drop global binding for select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b; + +select * from t1 join t2 on t1.a=t2.a left join t3 on t2.b=t3.b; +select @@last_plan_from_binding; +--replace_column 5 6 +show global bindings where original_sql like '%planner__core__rule_join_reorder%'; + +create global binding for select * from t1 join t2 on t1.a=t2.a left join t3 on t2.b=t3.b using select /*+ leading(t2) */ * from t1 join t2 on t1.a=t2.a left join t3 on t2.b=t3.b; +select * from t1 join t2 on t1.a=t2.a left join t3 on t2.b=t3.b; +select @@last_plan_from_binding; +--replace_column 5 6 +show global bindings where original_sql like '%planner__core__rule_join_reorder%'; +drop global binding for select * from t1 join t2 on t1.a=t2.a join t3 on t2.b=t3.b; + diff --git a/tests/integrationtest/t/planner/core/tests/prepare/issue.test b/tests/integrationtest/t/planner/core/tests/prepare/issue.test index 0056cfb8b2144..5a2f9ba2a5766 100644 --- a/tests/integrationtest/t/planner/core/tests/prepare/issue.test +++ b/tests/integrationtest/t/planner/core/tests/prepare/issue.test @@ -95,6 +95,7 @@ prepare stmt from "select * from t where a=10"; execute stmt; execute stmt; select @@last_plan_from_cache; +set tidb_enable_prepared_plan_cache=DEFAULT; # TestIssue42439 CREATE TABLE UK_MU16407 (COL3 timestamp NULL DEFAULT NULL, UNIQUE KEY U3(COL3)); @@ -122,6 +123,8 @@ set @a=-29408, @b=-9254, @c=-1849, @d=-2346; execute stmt using @a,@b,@c,@d; set @a=126, @b=126, @c=-125, @d=707; execute stmt using @a,@b,@c,@d; +set tidb_enable_prepared_plan_cache=DEFAULT; + # TestIssue28867 set tidb_enable_prepared_plan_cache=1; @@ -148,6 +151,8 @@ set @a=1; execute stmt using @a; execute stmt using @a; select @@last_plan_from_cache; +set tidb_enable_prepared_plan_cache=DEFAULT; + # TestIssue29565 set tidb_enable_prepared_plan_cache=1; @@ -163,6 +168,8 @@ select @@last_plan_from_cache; set @a=7309027171262036496, @b=-9798213896406520625; execute stmt using @a,@b; select @@last_plan_from_cache; +set tidb_enable_prepared_plan_cache=DEFAULT; + # TestIssue31730 set tidb_enable_prepared_plan_cache=1; @@ -172,6 +179,8 @@ insert into PK_S_MULTI_37 values(-9999999999999999999999999999999999999999999999 prepare stmt from 'SELECT SUM(COL1+?), col2 FROM PK_S_MULTI_37 GROUP BY col2'; set @a=1; execute stmt using @a; +set tidb_enable_prepared_plan_cache=DEFAULT; + # TestIssue28828 set tidb_enable_prepared_plan_cache=1; @@ -216,6 +225,9 @@ select @@last_plan_from_cache; prepare stmt from 'select/*+ hash_agg() */ count(distinct col1) from PK_TCOLLATION10197 where col1 > ?;'; execute stmt using @b; select/*+ hash_agg() */ count(distinct col1) from PK_TCOLLATION10197 where col1 > '龺'; +set tidb_enable_prepared_plan_cache=DEFAULT; +set tidb_enable_clustered_index=DEFAULT; + # TestIssue29993 set tidb_enable_prepared_plan_cache=1; @@ -265,6 +277,9 @@ select @@last_plan_from_cache; execute stmt using @z; select @@last_plan_from_cache; execute stmt using @z; +set tidb_enable_prepared_plan_cache=DEFAULT; +set tidb_enable_clustered_index=DEFAULT; + # TestIssue30100 set tidb_enable_prepared_plan_cache=1; @@ -280,6 +295,8 @@ set @a=0; execute stmt using @a; execute stmt using @a; select @@last_plan_from_cache; +set tidb_enable_prepared_plan_cache=DEFAULT; + # TestIssue37901 drop table if exists t4; @@ -289,3 +306,102 @@ set @t='2022-01-01 00:00:00.000000'; execute st1 using @t; select count(*) from t4; + +# TestIssueEnablePreparedPlanCache2 +set tidb_enable_prepared_plan_cache=1; + +## Issue18066 +drop table if exists t; +create table t(a int); +prepare stmt from 'select * from t'; +execute stmt; +select EXEC_COUNT,plan_cache_hits, plan_in_cache from information_schema.statements_summary where digest_text='select * from `t`' and TABLE_NAMES = 'planner__core__tests__prepare__issue.t'; +execute stmt; +select EXEC_COUNT,plan_cache_hits, plan_in_cache from information_schema.statements_summary where digest_text='select * from `t`' and TABLE_NAMES = 'planner__core__tests__prepare__issue.t'; +prepare stmt from 'select * from t'; +execute stmt; +select @@last_plan_from_cache; +select EXEC_COUNT, plan_cache_hits, plan_in_cache from information_schema.statements_summary where digest_text='select * from `t`' and TABLE_NAMES = 'planner__core__tests__prepare__issue.t'; + +## TestIssue26873 +drop table if exists t; +create table t(a int primary key, b int, c int); +prepare stmt from 'select * from t where a = 2 or a = ?'; +set @p = 3; +execute stmt using @p; +select @@last_plan_from_cache; +execute stmt using @p; +select @@last_plan_from_cache; + +## TestIssue29511 +drop table if exists t; +CREATE TABLE `t` (`COL1` bigint(20) DEFAULT NULL COMMENT 'WITH DEFAULT', UNIQUE KEY `UK_COL1` (`COL1`)); +insert into t values(-3865356285544170443),(9223372036854775807); +prepare stmt from 'select/*+ hash_agg() */ max(col1) from t where col1 = ? and col1 > ?;'; +set @a=-3865356285544170443, @b=-4055949188488870713; +execute stmt using @a,@b; + +## TestIssue23671 +drop table if exists t; +create table t (a int, b int, index ab(a, b)); +insert into t values (1, 1), (2, 2); +prepare s1 from 'select * from t use index(ab) where a>=? and b>=? and b<=?'; +set @a=1, @b=1, @c=1; +execute s1 using @a, @b, @c; +set @a=1, @b=1, @c=10; +execute s1 using @a, @b, @c; +select @@last_plan_from_cache; + +## TestIssue28920 +drop table if exists UK_GCOL_VIRTUAL_18928; +CREATE TABLE UK_GCOL_VIRTUAL_18928 ( + COL102 bigint(20) DEFAULT NULL, + COL103 bigint(20) DEFAULT NULL, + COL1 bigint(20) GENERATED ALWAYS AS (COL102 & 10) VIRTUAL, + COL2 varchar(20) DEFAULT NULL, + COL4 datetime DEFAULT NULL, + COL3 bigint(20) DEFAULT NULL, + COL5 float DEFAULT NULL, + UNIQUE KEY UK_COL1 (COL1)); +insert into UK_GCOL_VIRTUAL_18928(col102,col2) values("-5175976006730879891", "屘厒镇览錻碛斵大擔觏譨頙硺箄魨搝珄鋧扭趖"); +prepare stmt from 'SELECT * FROM UK_GCOL_VIRTUAL_18928 WHERE col1 < ? AND col2 != ?'; +set @a=10, @b="aa"; +execute stmt using @a, @b; + +## Issue29296 +drop table if exists UK_MU14722; +CREATE TABLE UK_MU14722 ( + COL1 tinytext DEFAULT NULL, + COL2 tinyint(16) DEFAULT NULL, + COL3 datetime DEFAULT NULL, + COL4 int(11) DEFAULT NULL, + UNIQUE KEY U_M_COL (COL1(10)), + UNIQUE KEY U_M_COL2 (COL2), + UNIQUE KEY U_M_COL3 (COL3)); +insert into UK_MU14722 values("輮睅麤敜溺她晁瀪襄頮鹛涓誗钷廔筪惌嶙鎢塴", -121, "3383-02-19 07:58:28" , -639457963), + ("偧孇鱓鼂瘠钻篝醗時鷷聽箌磇砀玸眞扦鸇祈灇", 127, "7902-03-05 08:54:04", -1094128660), + ("浀玡慃淛漉围甧鴎史嬙砊齄w章炢忲噑硓哈樘", -127, "5813-04-16 03:07:20", -333397107), + ("鑝粼啎鸼贖桖弦簼赭蠅鏪鐥蕿捐榥疗耹岜鬓槊", -117, "7753-11-24 10:14:24", 654872077); +prepare stmt from 'SELECT * FROM UK_MU14722 WHERE col2 > ? OR col2 BETWEEN ? AND ? ORDER BY COL2 + ? LIMIT 3'; +set @a=30410, @b=3937, @c=22045, @d=-4374; +execute stmt using @a,@b,@c,@d; +set @a=127, @b=127, @c=127, @d=127; +execute stmt using @a,@b,@c,@d; + +## TestIssue28246 +drop table if exists PK_AUTO_RANDOM9111; +CREATE TABLE `PK_AUTO_RANDOM9111` ( `COL1` bigint(45) NOT NULL , `COL2` varchar(20) DEFAULT NULL, `COL4` datetime DEFAULT NULL, `COL3` bigint(20) DEFAULT NULL, `COL5` float DEFAULT NULL, PRIMARY KEY (`COL1`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; +insert into PK_AUTO_RANDOM9111(col1) values (-9223372036854775808), (9223372036854775807); +set @a=9223372036854775807, @b=1; +prepare stmt from 'select min(col1) from PK_AUTO_RANDOM9111 where col1 > ?;'; +## The plan contains the tableDual, so it will not be cached. +execute stmt using @a; +execute stmt using @a; +select @@last_plan_from_cache; +execute stmt using @b; +select @@last_plan_from_cache; +execute stmt using @a; +select @@last_plan_from_cache; + +set tidb_enable_prepared_plan_cache=DEFAULT; + diff --git a/tests/integrationtest/t/session/privileges.test b/tests/integrationtest/t/session/privileges.test new file mode 100644 index 0000000000000..82801c47045a2 --- /dev/null +++ b/tests/integrationtest/t/session/privileges.test @@ -0,0 +1,121 @@ +# TestDBUserNameLength +drop user if exists 'abcddfjakldfjaldddds'@'%'; +create table if not exists t (a int); +-- echo ## Test username length can be longer than 16. +CREATE USER 'abcddfjakldfjaldddds'@'%' identified by ''; +grant all privileges on test.* to 'abcddfjakldfjaldddds'@'%'; +grant all privileges on test.t to 'abcddfjakldfjaldddds'@'%'; + +# TestGrantViewRelated +drop view if exists v_version29; +drop user if exists 'u_version29'@'%'; +create table if not exists t (a int); +create view v_version29 as select * from t; +create user 'u_version29'@'%'; +grant select on t to u_version29@'%'; + +connect (conn1, localhost, u_version29,, session__privileges); +select current_user(); +-- error 1142 +select * from test.v_version29; +select current_user(); +-- error 1142 +create view v_version29_c as select * from t; + +connection default; +grant show view, select on v_version29 to 'u_version29'@'%'; +select table_priv from mysql.tables_priv where host='%' and db='session__privileges' and user='u_version29' and table_name='v_version29'; + +connection conn1; +select current_user(); +show create view v_version29; +-- error 1142 +create view v_version29_c as select * from v_version29; + +connection default; +create view v_version29_c as select * from v_version29; +grant create view on v_version29_c to 'u_version29'@'%'; +select table_priv from mysql.tables_priv where host='%' and db='session__privileges' and user='u_version29' and table_name='v_version29_c'; +drop view v_version29_c; +grant select on v_version29 to 'u_version29'@'%'; + +connection conn1; +select current_user(); +create view v_version29_c as select * from v_version29; + +disconnect conn1; + +# TestUpdatePrivilege +drop table if exists t1, t2; +drop user if exists xxx; +create table t1 (id int); +create table t2 (id int); +insert into t1 values (1); +insert into t2 values (2); +create user xxx; +grant all on session__privileges.t1 to xxx; +grant select on session__privileges.t2 to xxx; + +connect (conn1, localhost, xxx,,session__privileges); +-- error 8121 +update t2 set id = 666 where id = 1; +-- echo ## Cover a bug that t1 and t2 both require update privilege. +-- echo ## In fact, the privlege check for t1 should be update, and for t2 should be select. +update t1,t2 set t1.id = t2.id; +disconnect conn1; + +-- echo ## Fix issue 8911 +drop database if exists weperk; +drop user if exists weperk; +create database weperk; +use weperk; +create table tb_wehub_server (id int, active_count int, used_count int); +create user 'weperk'; +grant all privileges on weperk.* to 'weperk'@'%'; + +connect (conn1, localhost, weperk,,weperk); +update tb_wehub_server a set a.active_count=a.active_count+1,a.used_count=a.used_count+1 where id=1; +disconnect conn1; + +drop database if exists service; +drop database if exists report; +create database service; +create database report; +CREATE TABLE service.t1 ( + id int(11) DEFAULT NULL, + a bigint(20) NOT NULL, + b text DEFAULT NULL, + PRIMARY KEY (a) +); +CREATE TABLE report.t2 ( + a bigint(20) DEFAULT NULL, + c bigint(20) NOT NULL +); +grant all privileges on service.* to weperk; +grant all privileges on report.* to weperk; + +connect (conn1, localhost, weperk,,); +update service.t1 s, + report.t2 t + set s.a = t.a +WHERE + s.a = t.a +and t.c >= 1 and t.c <= 10000 +and s.b !='xx'; +disconnect conn1; + +--echo ## Fix issue 10028 +drop database if exists ap; +drop database if exists tp; +create database ap; +create database tp; +grant all privileges on ap.* to xxx; +grant select on tp.* to xxx; +create table tp.record( id int,name varchar(128),age int); +insert into tp.record (id,name,age) values (1,'john',18),(2,'lary',19),(3,'lily',18); +create table ap.record( id int,name varchar(128),age int); +insert into ap.record(id) values(1); + +connect (conn1, localhost, xxx,,); +update ap.record t inner join tp.record tt on t.id=tt.id set t.name=tt.name; +disconnect conn1; diff --git a/tests/integrationtest/t/session/txn.test b/tests/integrationtest/t/session/txn.test new file mode 100644 index 0000000000000..449ef9ccbd089 --- /dev/null +++ b/tests/integrationtest/t/session/txn.test @@ -0,0 +1,45 @@ +# TestCommitRetryCount +set session tidb_txn_mode=""; +drop table if exists no_retry; +create table no_retry (id int); +insert into no_retry values (1); +set @@tidb_retry_limit = 0; +begin; +update no_retry set id = 2; + +connect (conn1, localhost, root,, session__txn); +set session tidb_txn_mode=""; +begin; +update no_retry set id = 3; +commit; +disconnect conn1; + +-- echo ## No auto retry because retry limit is set to 0. +-- replace_regex /Write conflict,.*reason=Optimistic \[try again later\]/Write conflict,
reason=Optimistic [try again later]/ +-- error 9007 +commit; +set session tidb_txn_mode=pessimistic; +set @@tidb_retry_limit = default; + + +# TestRetryForCurrentTxn +drop table if exists history; +set session tidb_txn_mode=''; +create table history (a int); +insert history values (1); + +-- echo ## Firstly, enable retry. +set tidb_disable_txn_auto_retry = 0; +begin; +update history set a = 2; +-- echo ## Disable retry. +set tidb_disable_txn_auto_retry = 1; + +connect (conn1, localhost, root,, session__txn); +update history set a = 3; +connection default; + +commit; +select * from history; +disconnect conn1; +set tidb_disable_txn_auto_retry = default; diff --git a/tests/integrationtest/t/session/variable.test b/tests/integrationtest/t/session/variable.test index 200a0b3269e02..18e5923a8af32 100644 --- a/tests/integrationtest/t/session/variable.test +++ b/tests/integrationtest/t/session/variable.test @@ -178,4 +178,3 @@ set @@group_concat_max_len = 18446744073709551616; set @@group_concat_max_len='hello'; set global group_concat_max_len = default; set @@session.group_concat_max_len = default; - diff --git a/tests/integrationtest/t/statistics/handle.test b/tests/integrationtest/t/statistics/handle.test index d003c06355b2c..715ffd69a26ab 100644 --- a/tests/integrationtest/t/statistics/handle.test +++ b/tests/integrationtest/t/statistics/handle.test @@ -73,3 +73,12 @@ alter table t drop stats_extended s1; -- error 1105 admin reload stats_extended; +# TestReloadExtStatsLockRelease +set session tidb_enable_extended_stats = on; +drop table if exists t; +create table t(a int, b int); +insert into t values(1,1),(2,2),(3,3); +alter table t add stats_extended s1 correlation(a,b); +## no error +analyze table t; +set session tidb_enable_extended_stats = default; diff --git a/tests/integrationtest/t/util/admin.test b/tests/integrationtest/t/util/admin.test index 19afa81ef5131..984e65a8abb5c 100644 --- a/tests/integrationtest/t/util/admin.test +++ b/tests/integrationtest/t/util/admin.test @@ -10,7 +10,7 @@ ALTER TABLE t1 ADD COLUMN cc1 CHAR(36) NULL DEFAULT ''; ALTER TABLE t1 ADD COLUMN cc2 VARCHAR(36) NULL DEFAULT ''; ALTER TABLE t1 ADD INDEX idx1 (cc1); ALTER TABLE t1 ADD INDEX idx2 (cc2); -ALTER TABLE t1 engine=innodb; +ALTER TABLE t1 engine=innodb, ROW_FORMAT=DYNAMIC; admin check table t1; drop table if exists t1; create table t1 ( diff --git a/tests/realtikvtest/addindextest1/BUILD.bazel b/tests/realtikvtest/addindextest1/BUILD.bazel index cf4b7e113d7ce..9126f15f9bca9 100644 --- a/tests/realtikvtest/addindextest1/BUILD.bazel +++ b/tests/realtikvtest/addindextest1/BUILD.bazel @@ -14,8 +14,13 @@ go_test( "//pkg/ddl/util/callback", "//pkg/disttask/framework/dispatcher", "//pkg/disttask/framework/proto", + "//pkg/errno", + "//pkg/kv", "//pkg/parser/model", + "//pkg/store/helper", + "//pkg/tablecodec", "//pkg/testkit", + "//pkg/types", "//tests/realtikvtest", "@com_github_pingcap_failpoint//:failpoint", "@com_github_stretchr_testify//require", diff --git a/tests/realtikvtest/addindextest1/disttask_test.go b/tests/realtikvtest/addindextest1/disttask_test.go index c8e7c603cc2dd..54a3ee5d32e6c 100644 --- a/tests/realtikvtest/addindextest1/disttask_test.go +++ b/tests/realtikvtest/addindextest1/disttask_test.go @@ -23,8 +23,13 @@ import ( "github.com/pingcap/tidb/pkg/ddl/util/callback" "github.com/pingcap/tidb/pkg/disttask/framework/dispatcher" "github.com/pingcap/tidb/pkg/disttask/framework/proto" + "github.com/pingcap/tidb/pkg/errno" + "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/parser/model" + "github.com/pingcap/tidb/pkg/store/helper" + "github.com/pingcap/tidb/pkg/tablecodec" "github.com/pingcap/tidb/pkg/testkit" + "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/tests/realtikvtest" "github.com/stretchr/testify/require" ) @@ -192,3 +197,89 @@ func TestAddIndexDistPauseAndResume(t *testing.T) { tk.MustExec(`set global tidb_enable_dist_task=0;`) } + +func TestAddIndexInvalidDistTaskVariableSetting(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;") + t.Cleanup(func() { + tk.MustExec(`set global tidb_ddl_enable_fast_reorg=on;`) + tk.MustExec("set global tidb_enable_dist_task = off;") + }) + tk.MustExec(`set global tidb_ddl_enable_fast_reorg=off;`) + tk.MustExec("set global tidb_enable_dist_task = on;") + tk.MustExec("create table t (a int);") + tk.MustGetErrCode("alter table t add index idx(a);", errno.ErrUnsupportedDDLOperation) + tk.MustGetErrCode("alter table t add column b int, add index idx(a);", errno.ErrUnsupportedDDLOperation) + tk.MustExec("alter table t add column b int, add column c int;") +} + +func TestAddIndexForCurrentTimestampColumn(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;") + t.Cleanup(func() { + tk.MustExec("set global tidb_enable_dist_task = off;") + }) + tk.MustExec(`set global tidb_ddl_enable_fast_reorg=on;`) + tk.MustExec("set global tidb_enable_dist_task = on;") + + tk.MustExec("create table t (a timestamp default current_timestamp);") + tk.MustExec("insert into t values ();") + tk.MustExec("alter table t add index idx(a);") + tk.MustExec("admin check table t;") +} + +func TestAddIndexTSErrorWhenResetImportEngine(t *testing.T) { + store, dom := realtikvtest.CreateMockStoreAndDomainAndSetup(t) + var tblInfo *model.TableInfo + var idxInfo *model.IndexInfo + cb := &callback.TestDDLCallback{} + interceptFn := func(job *model.Job) { + if idxInfo == nil { + tbl, _ := dom.InfoSchema().TableByID(job.TableID) + tblInfo = tbl.Meta() + if len(tblInfo.Indices) == 0 { + return + } + idxInfo = tblInfo.Indices[0] + } + } + cb.OnJobUpdatedExported.Store(&interceptFn) + tk := testkit.NewTestKit(t, store) + tk.MustExec("drop database if exists addindexlit;") + tk.MustExec("create database addindexlit;") + tk.MustExec("use addindexlit;") + t.Cleanup(func() { + tk.MustExec("set global tidb_enable_dist_task = off;") + }) + tk.MustExec(`set global tidb_ddl_enable_fast_reorg=on;`) + tk.MustExec("set global tidb_enable_dist_task = on;") + + err := failpoint.Enable("github.com/pingcap/tidb/br/pkg/lightning/backend/local/mockAllocateTSErr", `1*return`) + require.NoError(t, err) + tk.MustExec("create table t (a int);") + tk.MustExec("insert into t values (1), (2), (3);") + dom.DDL().SetHook(cb) + tk.MustExec("alter table t add index idx(a);") + err = failpoint.Disable("github.com/pingcap/tidb/br/pkg/lightning/backend/local/mockAllocateTSErr") + require.NoError(t, err) + + dts := []types.Datum{types.NewIntDatum(1)} + sctx := tk.Session().GetSessionVars().StmtCtx + idxKey, _, err := tablecodec.GenIndexKey(sctx.TimeZone(), tblInfo, idxInfo, tblInfo.ID, dts, kv.IntHandle(1), nil) + require.NoError(t, err) + + tikvStore := dom.Store().(helper.Storage) + newHelper := helper.NewHelper(tikvStore) + mvccResp, err := newHelper.GetMvccByEncodedKeyWithTS(idxKey, 0) + require.NoError(t, err) + require.NotNil(t, mvccResp) + require.NotNil(t, mvccResp.Info) + require.Greater(t, len(mvccResp.Info.Writes), 0) + require.Greater(t, mvccResp.Info.Writes[0].CommitTs, uint64(0)) +} diff --git a/tests/realtikvtest/addindextest3/operator_test.go b/tests/realtikvtest/addindextest3/operator_test.go index 8da0a6a886106..cbb26852b039c 100644 --- a/tests/realtikvtest/addindextest3/operator_test.go +++ b/tests/realtikvtest/addindextest3/operator_test.go @@ -139,8 +139,9 @@ func TestBackfillOperators(t *testing.T) { mockEngine.SetHook(onWrite) src := newTestSource(chunkResults...) + reorgMeta := ddl.NewDDLReorgMeta(tk.Session()) ingestOp := ddl.NewIndexIngestOperator( - opCtx, copCtx, sessPool, pTbl, []table.Index{index}, []ingest.Engine{mockEngine}, srcChkPool, 3) + opCtx, copCtx, sessPool, pTbl, []table.Index{index}, []ingest.Engine{mockEngine}, srcChkPool, 3, reorgMeta) sink := newTestSink[ddl.IndexWriteResult]() operator.Compose[ddl.IndexRecordChunk](src, ingestOp) @@ -193,6 +194,7 @@ func TestBackfillOperatorPipeline(t *testing.T) { endKey, totalRowCount, nil, + ddl.NewDDLReorgMeta(tk.Session()), ) require.NoError(t, err) err = pipeline.Execute() @@ -266,6 +268,7 @@ func TestBackfillOperatorPipelineException(t *testing.T) { endKey, &atomic.Int64{}, nil, + ddl.NewDDLReorgMeta(tk.Session()), ) require.NoError(t, err) err = pipeline.Execute() diff --git a/tests/realtikvtest/addindextest4/ingest_test.go b/tests/realtikvtest/addindextest4/ingest_test.go index 8352ba38c2f84..8d2ab0c8b075b 100644 --- a/tests/realtikvtest/addindextest4/ingest_test.go +++ b/tests/realtikvtest/addindextest4/ingest_test.go @@ -15,7 +15,6 @@ package addindextest_test import ( - "context" "fmt" "strings" "sync" @@ -90,9 +89,6 @@ func TestAddIndexIngestLimitOneBackend(t *testing.T) { tk2.MustExec("create table t2 (a int, b int);") tk2.MustExec("insert into t2 values (1, 1), (2, 2), (3, 3);") - // Mock there is a running ingest job. - _, err := ingest.LitBackCtxMgr.Register(context.Background(), false, 65535, nil, "") - require.NoError(t, err) wg := &sync.WaitGroup{} wg.Add(2) go func() { @@ -106,18 +102,10 @@ func TestAddIndexIngestLimitOneBackend(t *testing.T) { wg.Wait() rows := tk.MustQuery("admin show ddl jobs 2;").Rows() require.Len(t, rows, 2) - require.False(t, strings.Contains(rows[0][3].(string) /* job_type */, "ingest")) - require.False(t, strings.Contains(rows[1][3].(string) /* job_type */, "ingest")) - require.Equal(t, rows[0][7].(string) /* row_count */, "3") - require.Equal(t, rows[1][7].(string) /* row_count */, "3") - - // Remove the running ingest job. - ingest.LitBackCtxMgr.Unregister(65535) - tk.MustExec("alter table t add index idx_a(a);") - rows = tk.MustQuery("admin show ddl jobs 1;").Rows() - require.Len(t, rows, 1) 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.Equal(t, rows[0][7].(string) /* row_count */, "3") + require.Equal(t, rows[1][7].(string) /* row_count */, "3") } func TestAddIndexIngestWriterCountOnPartitionTable(t *testing.T) { @@ -411,6 +399,7 @@ func TestAddIndexRemoteDuplicateCheck(t *testing.T) { tk.MustExec("use addindexlit;") tk.MustExec(`set global tidb_ddl_enable_fast_reorg=on;`) tk.MustExec("set global tidb_ddl_reorg_worker_cnt=1;") + tk.MustExec("set global tidb_enable_dist_task = 0;") 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")) @@ -523,3 +512,19 @@ func TestAddIndexImportFailed(t *testing.T) { require.NoError(t, err) tk.MustExec("admin check table t;") } + +func TestAddEmptyMultiValueIndex(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(`set global tidb_enable_dist_task=off;`) + + tk.MustExec("create table t(j json);") + tk.MustExec(`insert into t(j) values ('{"string":[]}');`) + tk.MustExec("alter table t add index ((cast(j->'$.string' as char(10) array)));") + tk.MustExec("admin check table t;") +} diff --git a/tests/realtikvtest/importintotest/BUILD.bazel b/tests/realtikvtest/importintotest/BUILD.bazel index 5b25bb7e2d739..a9ad8e82643d0 100644 --- a/tests/realtikvtest/importintotest/BUILD.bazel +++ b/tests/realtikvtest/importintotest/BUILD.bazel @@ -50,6 +50,7 @@ go_test( "@com_github_pingcap_log//:log", "@com_github_stretchr_testify//require", "@com_github_stretchr_testify//suite", + "@com_github_tikv_client_go_v2//util", "@com_github_tikv_pd_client//:client", "@io_etcd_go_etcd_client_v3//:client", "@org_uber_go_atomic//:atomic", diff --git a/tests/realtikvtest/importintotest/import_into_test.go b/tests/realtikvtest/importintotest/import_into_test.go index 95519e0f81378..9e3b39724f1d1 100644 --- a/tests/realtikvtest/importintotest/import_into_test.go +++ b/tests/realtikvtest/importintotest/import_into_test.go @@ -47,6 +47,7 @@ import ( "github.com/pingcap/tidb/pkg/util/dbterror/exeerrors" "github.com/pingcap/tidb/pkg/util/sem" "github.com/stretchr/testify/require" + "github.com/tikv/client-go/v2/util" pd "github.com/tikv/pd/client" clientv3 "go.etcd.io/etcd/client/v3" "go.uber.org/atomic" @@ -764,8 +765,10 @@ func (s *mockGCSSuite) TestColumnsAndUserVars() { return s.tk.Session(), nil }, 1, 1, time.Second) defer pool.Close() - taskManager := storage.NewTaskManager(context.Background(), pool) - subtasks, err := taskManager.GetSucceedSubtasksByStep(storage.TestLastTaskID.Load(), importinto.StepImport) + taskManager := storage.NewTaskManager(pool) + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "taskManager") + subtasks, err := taskManager.GetSucceedSubtasksByStep(ctx, storage.TestLastTaskID.Load(), importinto.StepImport) s.NoError(err) s.Len(subtasks, 1) serverInfo, err := infosync.GetServerInfo() @@ -780,7 +783,9 @@ func (s *mockGCSSuite) checkTaskMetaRedacted(jobID int64) { s.NoError(err) taskKey := importinto.TaskKey(jobID) s.NoError(err) - globalTask, err2 := globalTaskManager.GetGlobalTaskByKeyWithHistory(taskKey) + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "taskManager") + globalTask, err2 := globalTaskManager.GetGlobalTaskByKeyWithHistory(ctx, taskKey) s.NoError(err2) s.Regexp(`[?&]access-key=xxxxxx`, string(globalTask.Meta)) s.Contains(string(globalTask.Meta), "secret-access-key=xxxxxx") diff --git a/tests/realtikvtest/importintotest/job_test.go b/tests/realtikvtest/importintotest/job_test.go index cc9e6e796f09e..493454b97d3be 100644 --- a/tests/realtikvtest/importintotest/job_test.go +++ b/tests/realtikvtest/importintotest/job_test.go @@ -39,6 +39,7 @@ import ( "github.com/pingcap/tidb/pkg/session" "github.com/pingcap/tidb/pkg/testkit" "github.com/pingcap/tidb/pkg/util/dbterror/exeerrors" + "github.com/tikv/client-go/v2/util" ) func (s *mockGCSSuite) compareJobInfoWithoutTime(jobInfo *importer.JobInfo, row []interface{}) { @@ -375,6 +376,8 @@ func (s *mockGCSSuite) TestCancelJob() { s.prepareAndUseDB("test_cancel_job") s.tk.MustExec("CREATE TABLE t1 (i INT PRIMARY KEY);") s.tk.MustExec("CREATE TABLE t2 (i INT PRIMARY KEY);") + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "taskManager") s.server.CreateObject(fakestorage.Object{ ObjectAttrs: fakestorage.ObjectAttrs{BucketName: "test_cancel_job", Name: "t.csv"}, Content: []byte("1\n2"), @@ -401,7 +404,7 @@ func (s *mockGCSSuite) TestCancelJob() { globalTaskManager, err := storage.GetTaskManager() s.NoError(err) taskKey := importinto.TaskKey(jobID) - globalTask, err := globalTaskManager.GetGlobalTaskByKeyWithHistory(taskKey) + globalTask, err := globalTaskManager.GetGlobalTaskByKeyWithHistory(ctx, taskKey) s.NoError(err) return globalTask } @@ -493,9 +496,9 @@ func (s *mockGCSSuite) TestCancelJob() { taskKey := importinto.TaskKey(int64(jobID2)) s.NoError(err) s.Require().Eventually(func() bool { - globalTask, err2 := globalTaskManager.GetGlobalTaskByKeyWithHistory(taskKey) + globalTask, err2 := globalTaskManager.GetGlobalTaskByKeyWithHistory(ctx, taskKey) s.NoError(err2) - subtasks, err2 := globalTaskManager.GetSubtasksForImportInto(globalTask.ID, importinto.StepPostProcess) + subtasks, err2 := globalTaskManager.GetSubtasksForImportInto(ctx, globalTask.ID, importinto.StepPostProcess) s.NoError(err2) s.Len(subtasks, 2) // framework will generate a subtask when canceling var cancelled bool @@ -587,6 +590,8 @@ func (s *mockGCSSuite) TestJobFailWhenDispatchSubtask() { func (s *mockGCSSuite) TestKillBeforeFinish() { s.cleanupSysTables() + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "taskManager") s.tk.MustExec("DROP DATABASE IF EXISTS kill_job;") s.tk.MustExec("CREATE DATABASE kill_job;") s.tk.MustExec(`CREATE TABLE kill_job.t (a INT, b INT, c int);`) @@ -622,7 +627,7 @@ func (s *mockGCSSuite) TestKillBeforeFinish() { taskKey := importinto.TaskKey(jobID) s.NoError(err) s.Require().Eventually(func() bool { - globalTask, err2 := globalTaskManager.GetGlobalTaskByKeyWithHistory(taskKey) + globalTask, err2 := globalTaskManager.GetGlobalTaskByKeyWithHistory(ctx, taskKey) s.NoError(err2) return globalTask.State == proto.TaskStateReverted }, maxWaitTime, 1*time.Second) diff --git a/tests/realtikvtest/importintotest4/BUILD.bazel b/tests/realtikvtest/importintotest4/BUILD.bazel index af8a76ef8a202..ffd62326a2093 100644 --- a/tests/realtikvtest/importintotest4/BUILD.bazel +++ b/tests/realtikvtest/importintotest4/BUILD.bazel @@ -24,5 +24,6 @@ go_test( "@com_github_pingcap_failpoint//:failpoint", "@com_github_stretchr_testify//require", "@com_github_stretchr_testify//suite", + "@com_github_tikv_client_go_v2//util", ], ) diff --git a/tests/realtikvtest/importintotest4/global_sort_test.go b/tests/realtikvtest/importintotest4/global_sort_test.go index 4796ccb3edc09..b84b3f9929bf9 100644 --- a/tests/realtikvtest/importintotest4/global_sort_test.go +++ b/tests/realtikvtest/importintotest4/global_sort_test.go @@ -31,6 +31,7 @@ import ( "github.com/pingcap/tidb/pkg/executor/importer" "github.com/pingcap/tidb/pkg/testkit" "github.com/stretchr/testify/require" + "github.com/tikv/client-go/v2/util" ) func urlEqual(t *testing.T, expected, actual string) { @@ -45,6 +46,8 @@ func urlEqual(t *testing.T, expected, actual string) { } func (s *mockGCSSuite) TestGlobalSortBasic() { + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "taskManager") s.server.CreateObject(fakestorage.Object{ ObjectAttrs: fakestorage.ObjectAttrs{BucketName: "gs-basic", Name: "t.1.csv"}, Content: []byte("1,foo1,bar1,123\n2,foo2,bar2,456\n3,foo3,bar3,789\n"), @@ -87,7 +90,7 @@ func (s *mockGCSSuite) TestGlobalSortBasic() { globalTaskManager, err := storage.GetTaskManager() s.NoError(err) taskKey := importinto.TaskKey(int64(jobID)) - globalTask, err2 := globalTaskManager.GetGlobalTaskByKeyWithHistory(taskKey) + globalTask, err2 := globalTaskManager.GetGlobalTaskByKeyWithHistory(ctx, taskKey) s.NoError(err2) taskMeta := importinto.TaskMeta{} s.NoError(json.Unmarshal(globalTask.Meta, &taskMeta)) @@ -112,7 +115,7 @@ func (s *mockGCSSuite) TestGlobalSortBasic() { jobID, err = strconv.Atoi(result[0][0].(string)) s.NoError(err) s.Eventually(func() bool { - globalTask, err2 = globalTaskManager.GetGlobalTaskByKeyWithHistory(importinto.TaskKey(int64(jobID))) + globalTask, err2 = globalTaskManager.GetGlobalTaskByKeyWithHistory(ctx, importinto.TaskKey(int64(jobID))) s.NoError(err2) return globalTask.State == "failed" }, 30*time.Second, 300*time.Millisecond) diff --git a/tests/realtikvtest/importintotest4/split_file_test.go b/tests/realtikvtest/importintotest4/split_file_test.go index 13a0613fb9b48..6d8a5bf7e4665 100644 --- a/tests/realtikvtest/importintotest4/split_file_test.go +++ b/tests/realtikvtest/importintotest4/split_file_test.go @@ -15,6 +15,7 @@ package importintotest import ( + "context" "fmt" "math" "slices" @@ -25,9 +26,12 @@ import ( "github.com/pingcap/tidb/pkg/disttask/framework/storage" "github.com/pingcap/tidb/pkg/disttask/importinto" "github.com/pingcap/tidb/pkg/testkit" + "github.com/tikv/client-go/v2/util" ) func (s *mockGCSSuite) TestSplitFile() { + ctx := context.Background() + ctx = util.WithInternalSourceType(ctx, "taskManager") var allData []string var content []byte for j := 0; j < 500; j++ { @@ -58,10 +62,10 @@ func (s *mockGCSSuite) TestSplitFile() { s.NoError(err) taskKey := importinto.TaskKey(int64(jobID)) s.NoError(err) - globalTask, err2 := globalTaskManager.GetGlobalTaskByKeyWithHistory(taskKey) + globalTask, err2 := globalTaskManager.GetGlobalTaskByKeyWithHistory(ctx, taskKey) s.NoError(err2) - subtasks, err2 := globalTaskManager.GetSubtasksForImportInto(globalTask.ID, importinto.StepImport) + subtasks, err2 := globalTaskManager.GetSubtasksForImportInto(ctx, globalTask.ID, importinto.StepImport) s.NoError(err2) s.Len(subtasks, 3) s.tk.MustQuery("select * from t").Sort().Check(testkit.Rows(allData...)) diff --git a/tests/realtikvtest/pessimistictest/pessimistic_test.go b/tests/realtikvtest/pessimistictest/pessimistic_test.go index 886669e5dd3b3..9a42086bb087f 100644 --- a/tests/realtikvtest/pessimistictest/pessimistic_test.go +++ b/tests/realtikvtest/pessimistictest/pessimistic_test.go @@ -2835,7 +2835,7 @@ func TestRCPointWriteLockIfExists(t *testing.T) { tk.MustQuery("show variables like 'transaction_isolation'").Check(testkit.Rows("transaction_isolation READ-COMMITTED")) tableID := external.GetTableByName(t, tk, "test", "t1").Meta().ID - idxVal, err := codec.EncodeKey(tk.Session().GetSessionVars().StmtCtx, nil, types.NewIntDatum(1)) + idxVal, err := codec.EncodeKey(tk.Session().GetSessionVars().StmtCtx.TimeZone(), nil, types.NewIntDatum(1)) require.NoError(t, err) secIdxKey1 := tablecodec.EncodeIndexSeekKey(tableID, 1, idxVal) key1 := tablecodec.EncodeRowKeyWithHandle(tableID, kv.IntHandle(1)) diff --git a/tests/realtikvtest/testkit.go b/tests/realtikvtest/testkit.go index e624172c24e67..1b8fc505ca11c 100644 --- a/tests/realtikvtest/testkit.go +++ b/tests/realtikvtest/testkit.go @@ -48,6 +48,9 @@ var ( // TiKVPath is the path of the TiKV Storage. TiKVPath = flag.String("tikv-path", "tikv://127.0.0.1:2379?disableGC=true", "TiKV addr") + // PDAddr is the address of PD. + PDAddr = "127.0.0.1:2379" + // KeyspaceName is an option to specify the name of keyspace that the tests run on, // this option is only valid while the flag WithRealTiKV is set. KeyspaceName = flag.String("keyspace-name", "", "the name of keyspace that the tests run on") diff --git a/tools/check/ut.go b/tools/check/ut.go index f6bc45ab17014..6fb662bed1edb 100644 --- a/tools/check/ut.go +++ b/tools/check/ut.go @@ -448,7 +448,6 @@ func main() { // Get the correct count of CPU if it's in docker. p = runtime.GOMAXPROCS(0) - rand.Seed(time.Now().Unix()) var err error workDir, err = os.Getwd() if err != nil { @@ -953,7 +952,6 @@ func filter(input []string, f func(string) bool) []string { } func shuffle(tasks []task) { - rand.Seed(time.Now().UnixNano()) for i := 0; i < len(tasks); i++ { pos := rand.Intn(len(tasks)) tasks[i], tasks[pos] = tasks[pos], tasks[i]